SiStrip Digitizer and simulation

Introduction to the SiStrip contact job and code

Structure Diagrams

where are used the variables from stripDigitizer_cfi

Values in SimGeneral/MixingModule/python/stripDigitizer_cfi.py:

Parameter Default value Comment
DeltaProductionCut 0.120425 Geant4 parameter used for the Landau fluctuation. Should be identical to the G4 Simulation part
APVpeakmode False APV mode. It is set to True in SiStripDigi_APVModePeak_cff.py
LandauFluctuations True Activates the Landau fluctuation of the sub-deposits in the silicon
chargeDivisionsPerStrip 10 Controls the number of sub-deposits generated
CosmicDelayShift 0.0 Delay to be added to the simHit time for synchronization. 0.0 for collisions, it has to be adapted for Cosmic MC
DepletionVoltage 170 Depletion voltage of silicon sensors. 170 is a typical value from integration. It controls the diffusion
AppliedVoltage 300 Applied voltage for operations. It controls the diffusion
ChargeMobility 310 Charge mobility in silicon (for holes). It controls the diffusion
Temperature 273 Silicon temperature. It controls the diffusion
GevPerElectron 3.61e-09 Conversion factor for ionization
ChargeDistributionRMS 6.5e-10 Diffusion factor
noDiffusion False flag to activate/deactivate diffusion
DigiModeList --- Outputs
ROUList --- Inputs
GeometryType 'idealForDigi' Geometry
TrackerConfigurationFromDB False Use ConfDb
ZeroSuppression True Switch ZS on/off
CMS.LorentzAngle '' Db tag for Lorentz angle
Gain '' Db tag for Gain
NoiseSigmaThreshold 2.0 Cut on the tail for noise simulation in ZS mode. Noise below N*sigma will not be added.
electronPerAdcPeak 262.0 Conversion factor (gain) for the electronics, when Peak mode
electronPerAdcDec 247.0 Conversion factor (gain) for the electronics, when Deconvolution mode
FedAlgorithm 4 Zero Suppression algorithm. That corresponds to what is set in the firmware.
Noise True Enable/Disable noise simulation. NOTE : turning Noise ON/OFF will make a big change
TOFCutForDeconvolution 50.0 Time-of-Flight cut in deconvolution mode. Deposits timed more than N ns away will not be converted to digis
TOFCutForPeak 100.0 Time-of-Flight cut in peak mode. Deposits timed more than N ns away will not be converted to digis
Inefficiency 0.0 Artificial inefficiency added to the digitization.
Parameter for VR data (ZeroSuppression= False)
SingleStripNoise True only if Noise = True. It uses the values of noise for each strip as stored in the Db
RealPedestals True The pedestals as stored in the Db + 128 are used. If false just a constant shift of 128 is applied
CommonModeNoise True The Gaussian CMN is added for each APV. The RMS is specified by the parameters below
cmnRMStib 5.92 CMN RMS for TIB
cmnRMStob 1.08 CMN RMS for TOB
cmnRMStid 3.08 CMN RMS for TID
cmnRMStec 2.44 CMN RMS for TEC
APVSaturationFromHIP True The APV is killed if an hadron produces HIP. The probability of this happening can be configured by the parameter below
APVSaturationProb 0.001 Probability of an hadron producing HIP
BaselineShift True APV baseline shift down is applied and proportional to the APV occupancy and total charged deposited
PedestalsCondition 128 It is the pedestals offset introduced to avoid negative values on the FED. In the Db the pedestals are subtracted of 128

hitsProducer

SiStripDigitizer.cc:57:  hitsProducer(conf.getParameter<std::string>("hitsProducer")),

DeltaProductionCut

SiLinearChargeDivider.cc:16:  deltaCut(conf.getParameter<double>("DeltaProductionCut")),

APVpeakmode

DigiSimLinkAlgorithm.cc:23:  peakMode                  = conf_.getParameter<bool>("APVpeakmode");
SiLinearChargeDivider.cc:9:  peakMode(conf.getParameter<bool>("APVpeakmode")),
SiStripDigitizerAlgorithm.cc:33:  peakMode(conf.getParameter<bool>("APVpeakmode")),
SiTrivialInduceChargeOnStrips.cc:27:  std::string mode = conf.getParameter<bool>("APVpeakmode") ? "Peak" : "Dec";

LandauFluctuations

SiLinearChargeDivider.cc:11:  fluctuateCharge(conf.getParameter<bool>("LandauFluctuations")),

chargeDivisionsPerStrip

SiLinearChargeDivider.cc:14:  chargedivisionsPerStrip(conf.getParameter("chargeDivisionsPerStrip")),

CosmicDelayShift

DigiSimLinkAlgorithm.cc:29:  cosmicShift               = conf_.getUntrackedParameter<double>("CosmicDelayShift");
SiLinearChargeDivider.cc:20:  cosmicShift(conf.getUntrackedParameter<double>("CosmicDelayShift")),
SiStripDigitizerAlgorithm.cc:46:  cosmicShift(conf.getUntrackedParameter<double>("CosmicDelayShift")),

DepletionVoltage

SiHitDigitizer.cc:17:  depletionVoltage(conf.getParameter<double>("DepletionVoltage")),

AppliedVoltage

SiHitDigitizer.cc:24:         conf.getParameter<double>("AppliedVoltage"))),

ChargeMobility

SiHitDigitizer.cc:18:  chargeMobility(conf.getParameter<double>("ChargeMobility")),

Temperature

SiHitDigitizer.cc:21:         CBOLTZ_over_e_SI * chargeMobility * conf.getParameter<double>("Temperature") * (conf.getParameter<bool>("noDiffusion") ? noDiffusionMultiplier : 1.0),

GevPerElectron

SiHitDigitizer.cc:25:  theSiInduceChargeOnStrips(new SiTrivialInduceChargeOnStrips(conf, conf.getParameter<double>("GevPerElectron"))) {

ChargeDistributionRMS

SiHitDigitizer.cc:22:         conf.getParameter<double>("ChargeDistributionRMS"),

noDiffusion

SiHitDigitizer.cc:21:         CBOLTZ_over_e_SI * chargeMobility * conf.getParameter<double>("Temperature") * (conf.getParameter<bool>("noDiffusion") ? noDiffusionMultiplier : 1.0),

CouplingConstant

SiTrivialInduceChargeOnStrips.cc:29:    signalCoupling.push_back(conf.getParameter("CouplingConstant"+mode+typeArray[i]));

DigiModeList

DigiSimLinkProducer.cc:67:  edm::ParameterSet ParamSet=conf_.getParameter<edm::ParameterSet>("DigiModeList");
SiStripDigitizer.cc:59:  ZSDigi(conf.getParameter<edm::ParameterSet>("DigiModeList").getParameter<std::string>("ZSDigi")),
SiStripDigitizer.cc:60:  SCDigi(conf.getParameter<edm::ParameterSet>("DigiModeList").getParameter<std::string>("SCDigi")),
SiStripDigitizer.cc:61:  VRDigi(conf.getParameter<edm::ParameterSet>("DigiModeList").getParameter<std::string>("VRDigi")),
SiStripDigitizer.cc:62:  PRDigi(conf.getParameter<edm::ParameterSet>("DigiModeList").getParameter<std::string>("PRDigi")),

ROUList

DigiSimLinkProducer.cc:71:  trackerContainers = conf.getParameter<std::vector<std::string> >("ROUList");
SiStripDigitizer.cc:58:  trackerContainers(conf.getParameter<std::vector<std::string>>("ROUList")),

GeometryType

DigiSimLinkProducer.cc:72:  geometryType = conf.getParameter<std::string>("GeometryType");
SiStripDigitizer.cc:63:  geometryType(conf.getParameter<std::string>("GeometryType")),

TrackerConfigurationFromDB

DigiSimLinkProducer.cc:73:  useConfFromDB = conf.getParameter<bool>("TrackerConfigurationFromDB");
SiStripDigitizer.cc:64:  useConfFromDB(conf.getParameter<bool>("TrackerConfigurationFromDB")),

ZeroSuppression

DigiSimLinkAlgorithm.cc:26:  zeroSuppression           = conf_.getParameter<bool>("ZeroSuppression");
DigiSimLinkProducer.cc:83:  zeroSuppression = conf_.getParameter<bool>("ZeroSuppression");
SiStripDigitizerAlgorithm.cc:41:  zeroSuppression(conf.getParameter<bool>("ZeroSuppression")),
SiStripDigitizer.cc:65:  zeroSuppression(conf.getParameter<bool>("ZeroSuppression"))

LorentzAngle

DigiSimLinkProducer.cc:139:  std::string LAname = conf_.getParameter<std::string>("LorentzAngle");
SiStripDigitizerAlgorithm.cc:25:  lorentzAngleName(conf.getParameter<std::string>("LorentzAngle")),

Gain

DigiSimLinkProducer.cc:141:  std::string gainLabel = conf_.getParameter<std::string>("Gain");
SiStripDigitizer.cc:56:  gainLabel(conf.getParameter<std::string>("Gain")),

NoiseSigmaThreshold

DigiSimLinkAlgorithm.cc:21:  theThreshold              = conf_.getParameter<double>("NoiseSigmaThreshold");
SiStripDigitizerAlgorithm.cc:26:  theThreshold(conf.getParameter<double>("NoiseSigmaThreshold")),

electronPerAdcDec

DigiSimLinkAlgorithm.cc:24:  theElectronPerADC         = conf_.getParameter<double>( peakMode ? "electronPerAdcPeak" : "electronPerAdcDec" );
SiStripDigitizerAlgorithm.cc:42:  theElectronPerADC(conf.getParameter<double>( peakMode ? "electronPerAdcPeak" : "electronPerAdcDec" )),

electronPerAdcPeak

DigiSimLinkAlgorithm.cc:24:  theElectronPerADC         = conf_.getParameter<double>( peakMode ? "electronPerAdcPeak" : "electronPerAdcDec" );
SiStripDigitizerAlgorithm.cc:42:  theElectronPerADC(conf.getParameter<double>( peakMode ? "electronPerAdcPeak" : "electronPerAdcDec" )),

FedAlgorithm

DigiSimLinkAlgorithm.cc:22:  theFedAlgo                = conf_.getParameter<int>("FedAlgorithm");
SiStripDigitizerAlgorithm.cc:40:  theFedAlgo(conf.getParameter<int>("FedAlgorithm")),

Noise

DigiSimLinkAlgorithm.cc:25:  noise                     = conf_.getParameter<bool>("Noise");
SiStripDigitizerAlgorithm.cc:34:  noise(conf.getParameter<bool>("Noise")),

RealPedestals

DigiSimLinkAlgorithm.cc:31:  RealPedestals             = conf_.getParameter<bool>("RealPedestals"); 
SiStripDigitizerAlgorithm.cc:35:  RealPedestals(conf.getParameter<bool>("RealPedestals")), 

SingleStripNoise

DigiSimLinkAlgorithm.cc:32:  SingleStripNoise          = conf_.getParameter<bool>("SingleStripNoise");
SiStripDigitizerAlgorithm.cc:36:  SingleStripNoise(conf.getParameter<bool>("SingleStripNoise")),

CommonModeNoise

DigiSimLinkAlgorithm.cc:33:  CommonModeNoise           = conf_.getParameter<bool>("CommonModeNoise");
SiStripDigitizerAlgorithm.cc:37:  CommonModeNoise(conf.getParameter<bool>("CommonModeNoise")),

BaselineShift

DigiSimLinkAlgorithm.cc:34:  BaselineShift             = conf_.getParameter<bool>("BaselineShift");
SiStripDigitizerAlgorithm.cc:38:  BaselineShift(conf.getParameter<bool>("BaselineShift")),

APVSaturationFromHIP

DigiSimLinkAlgorithm.cc:35:  APVSaturationFromHIP      = conf_.getParameter<bool>("APVSaturationFromHIP");
SiStripDigitizerAlgorithm.cc:39:  APVSaturationFromHIP(conf.getParameter<bool>("APVSaturationFromHIP")),

APVSaturationProb

DigiSimLinkAlgorithm.cc:36:  APVSaturationProb         = conf_.getParameter<double>("APVSaturationProb");
SiStripDigitizerAlgorithm.cc:31:  APVSaturationProb(conf.getParameter<double>("APVSaturationProb")),

cmnRMStib

DigiSimLinkAlgorithm.cc:37:  cmnRMStib                 = conf_.getParameter<double>("cmnRMStib");
SiStripDigitizerAlgorithm.cc:27:  cmnRMStib(conf.getParameter<double>("cmnRMStib")),

cmnRMStob

DigiSimLinkAlgorithm.cc:38:  cmnRMStob                 = conf_.getParameter<double>("cmnRMStob");
SiStripDigitizerAlgorithm.cc:28:  cmnRMStob(conf.getParameter<double>("cmnRMStob")),

cmnRMStid

DigiSimLinkAlgorithm.cc:39:  cmnRMStid                 = conf_.getParameter<double>("cmnRMStid");
SiStripDigitizerAlgorithm.cc:29:  cmnRMStid(conf.getParameter<double>("cmnRMStid")),

cmnRMStec

DigiSimLinkAlgorithm.cc:40:  cmnRMStec                 = conf_.getParameter<double>("cmnRMStec");
SiStripDigitizerAlgorithm.cc:30:  cmnRMStec(conf.getParameter<double>("cmnRMStec")),

PedestalsOffset

DigiSimLinkAlgorithm.cc:41:  pedOffset                 = (unsigned int)conf_.getParameter<double>("PedestalsOffset");
SiStripDigitizerAlgorithm.cc:48:  pedOffset((unsigned int)conf.getParameter<double>("PedestalsOffset")),

TOFCutForDeconvolution

DigiSimLinkAlgorithm.cc:28:  theTOFCutForDeconvolution = conf_.getParameter<double>("TOFCutForDeconvolution");
SiStripDigitizerAlgorithm.cc:44:  theTOFCutForDeconvolution(conf.getParameter<double>("TOFCutForDeconvolution")),

TOFCutForPeak

DigiSimLinkAlgorithm.cc:27:  theTOFCutForPeak          = conf_.getParameter<double>("TOFCutForPeak");
SiStripDigitizerAlgorithm.cc:43:  theTOFCutForPeak(conf.getParameter<double>("TOFCutForPeak")),

Inefficiency

DigiSimLinkAlgorithm.cc:30:  inefficiency              = conf_.getParameter<double>("Inefficiency");
SiStripDigitizerAlgorithm.cc:47:  inefficiency(conf.getParameter<double>("Inefficiency")),

RelVal Reproduction

runTheMatrix.py -n -l 201.0 -e
you can see the relval steps. and run
runTheMatrix.py -n
list all of the processing options.

Validation procedure

from Andrea Giammanco twiki:http://agiamman.web.cern.ch/agiamman/tkvalid/

Sequence of actions:

cmsrel CMSSW_3_3_0_pre6
cd CMSSW_3_3_0_pre6/src
cvs co Validation/TrackerConfiguration
cd Validation/TrackerConfiguration/test/
./getHarvestedHistos.csh https://etc.
cd ../scripts
[edit filenames in TrackerValidationChain.csh]
./TrackerValidationChain.csh 

Normally you download the already harvested files from here: https://cmsweb.cern.ch/dqm/offline/data/browse/ROOT/RelVal

But if you have to do harvesting yourself, then you must do "step 3" of the relval testing with the corresponding input files. Example DBS query:

dbs --search --query='find file where dataset like /RelValSingleMuPt10/CMSSW_3_1_4-MC_31X_V3-v1/GEN-SIM-RECO'

In case the RECO step has to be redone, you also need "step 2", e.g.:

cmsDriver.py step2 -s RAW2DIGI,L1Reco,RECO,VALIDATION --relval 25000,100 --datatier GEN-SIM-RECO --eventcontent RECOSIM --geometry DB --conditions auto:mc --filein /store/relval/CMSSW_3_6_0_pre2/RelValSingleMuPt100/GEN-SIM-DIGI-RAW-HLTDEBUG/MC_3XY_V24_GeomDB-v1/0000/74D1A746-DC27-DF11-85C2-0030487CD77E.root

cmsDriver.py step3 -s HARVESTING:validationHarvesting --conditions FrontierConditions_GlobalTag,MC_3XY_V24::All --filein file:step2_RAW2DIGI_L1Reco_RECO_VALIDATION_DQM.root

The output of your validation is copied here:

/afs/cern.ch/cms/performance/tracker/activities/validation/
If copyWWW = true, results are visible at the address http://cmsdoc.cern.ch/cms/performance/tracker/activities/validation/

Then I must fill the tables in https://twiki.cern.ch/twiki/bin/view/CMS/SWGuideValidationTableReco and https://twiki.cern.ch/twiki/bin/view/CMS/SWGuideValidationTableSim, and send mails to hn-cms-trackerperformance@cern.ch and hn-cms-relval@cern.ch

>Default mails (hide)

Standard mail to hn-cms-trackerperformance@cern.ch:

Dear all,
at the page:
http://cmsdoc.cern.ch/cms/performance/tracker/activities/validation/CMSSW_3_4_0_pre2/
you can find the validation of CMSSW_3_4_0_pre2 vs CMSSW_3_4_0_pre1 for the Tracker.

Andrea

Standard mail to hn-cms-relval@cern.ch:

Dear all,

here the results for tracker validation:
http://cmsdoc.cern.ch/cms/performance/tracker/activities/validation/CMSSW_3_4_0_pre2/

Dataset used for validation:

  /RelValSingleMuPt10/CMSSW_3_4_0_pre2-MC_3XY_V10-v1/GEN-SIM-RECO

Requester group:
Tracker DPG

Remarks:
none

Validation status:
Success.

Cheers,
Andrea

In order to free disk space, very old harvesting rootfiles have to be gzipped and moved to castor; use this script:

cd Validation/TrackerConfiguration/scripts
./backup_and_free.csh CMSSW_3_1_1

To check whether there were changes in the software: https://twiki.cern.ch/twiki/bin/view/CMS/TrackerDPGRelIntegration.

If there are changes to commit, one must follow the instructions in https://twiki.cern.ch/twiki/bin/view/CMS/RelValTesting and then submit the tag in the validation tag collector wiki and in the CMS tag collector (login, then "package publication").