CMS 3D CMS Logo

mtdDigitizer_cfi.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 
3 _common_BTLparameters = cms.PSet(
4  bxTime = cms.double(25), # [ns]
5  LightYield = cms.double(40000.), # [photons/MeV]
6  LightCollectionEff = cms.double(0.25),
7  PhotonDetectionEff = cms.double(0.20),
8 )
9 
10 _barrel_MTDDigitizer = cms.PSet(
11  digitizerName = cms.string("BTLDigitizer"),
12  inputSimHits = cms.InputTag("g4SimHits:FastTimerHitsBarrel"),
13  digiCollectionTag = cms.string("FTLBarrel"),
14  maxSimHitsAccTime = cms.uint32(100),
15  premixStage1 = cms.bool(False),
16  premixStage1MinCharge = cms.double(1e-4),
17  premixStage1MaxCharge = cms.double(1e6),
18  DeviceSimulation = cms.PSet(
19  _common_BTLparameters,
20  LightCollectionSlope = cms.double(0.075), # [ns/cm]
21  LCEpositionSlope = cms.double(0.071), # [1/cm] LCE variation vs longitudinal position shift
22  ),
23  ElectronicsSimulation = cms.PSet(
24  _common_BTLparameters,
25  TestBeamMIPTimeRes = cms.double(4.293), # This is given by 0.048[ns]*sqrt(8000.), in order to
26  # rescale the time resolution of 1 MIP = 8000 p.e.
27  ScintillatorRiseTime = cms.double(1.1), # [ns]
28  ScintillatorDecayTime = cms.double(40.), # [ns]
29  ChannelTimeOffset = cms.double(0.), # [ns]
30  smearChannelTimeOffset = cms.double(0.), # [ns]
31  EnergyThreshold = cms.double(4.), # [photo-electrons]
32  TimeThreshold1 = cms.double(20.), # [photo-electrons]
33  TimeThreshold2 = cms.double(50.), # [photo-electrons]
34  ReferencePulseNpe = cms.double(100.), # [photo-electrons]
35  DarkCountRate = cms.double(10.), # [GHz]
36  SinglePhotonTimeResolution = cms.double(0.060), # [ns]
37  SigmaElectronicNoise = cms.double(1.), # [p.e.]
38  SigmaClock = cms.double(0.015), # [ns]
39  CorrelationCoefficient = cms.double(1.),
40  SmearTimeForOOTtails = cms.bool(True),
41  Npe_to_pC = cms.double(0.016), # [pC]
42  Npe_to_V = cms.double(0.0064),# [V]
43  SigmaRelTOFHIRenergy = cms.vdouble(0.139,-4.35e-05,3.315e-09,-1.20e-13,1.67e-18), # [%] coefficients of 4th degree Chebyshev polynomial parameterization
44 
45  # n bits for the ADC
46  adcNbits = cms.uint32(10),
47  # n bits for the TDC
48  tdcNbits = cms.uint32(10),
49  # ADC saturation
50  adcSaturation_MIP = cms.double(600.), # [pC]
51  # for different thickness
52  adcThreshold_MIP = cms.double(0.064), # [pC]
53  # LSB for time of arrival estimate from TDC
54  toaLSB_ns = cms.double(0.020), # [ns]
55  )
56 
57 
58 )
59 
60 _endcap_MTDDigitizer = cms.PSet(
61  digitizerName = cms.string("ETLDigitizer"),
62  inputSimHits = cms.InputTag("g4SimHits:FastTimerHitsEndcap"),
63  digiCollectionTag = cms.string("FTLEndcap"),
64  maxSimHitsAccTime = cms.uint32(100),
65  premixStage1 = cms.bool(False),
66  premixStage1MinCharge = cms.double(1e-4),
67  premixStage1MaxCharge = cms.double(1e6),
68  DeviceSimulation = cms.PSet(
69  bxTime = cms.double(25),
70  IntegratedLuminosity = cms.double(1000.0),
71  FluenceVsRadius = cms.string("1.937*TMath::Power(x,-1.706)"),
72  LGADGainVsFluence = cms.string("TMath::Min(15.,30.-x)"),
73  LGADGainDegradation = cms.string("TMath::Max(1.0, TMath::Min(x, x + 0.05/0.01 * (x - 1) + y * (1 - x)/0.01))"),
74  applyDegradation = cms.bool(False),
75  tofDelay = cms.double(1),
76  meVPerMIP = cms.double(0.085), #from HGCAL
77  MPVMuon = cms.string("1.21561e-05 + 8.89462e-07 / (x * x)"),
78  MPVPion = cms.string("1.24531e-05 + 7.16578e-07 / (x * x)"),
79  MPVKaon = cms.string("1.20998e-05 + 2.47192e-06 / (x * x * x)"),
80  MPVElectron = cms.string("1.30030e-05 + 1.55166e-07 / (x * x)"),
81  MPVProton = cms.string("1.13666e-05 + 1.20093e-05 / (x * x)")
82  ),
83  ElectronicsSimulation = cms.PSet(
84  bxTime = cms.double(25),
85  IntegratedLuminosity = cms.double(1000.), # [1/fb]
86  # n bits for the ADC
87  adcNbits = cms.uint32(8),
88  # n bits for the TDC
89  tdcNbits = cms.uint32(11),
90  # ADC saturation
91  adcSaturation_MIP = cms.double(25),
92  # for different thickness
93  adcThreshold_MIP = cms.double(0.025),
94  iThreshold_MIP = cms.double(0.9525),
95  # LSB for time of arrival estimate from TDC in ns
96  toaLSB_ns = cms.double(0.013),
97  referenceChargeColl = cms.double(1.0),
98  noiseLevel = cms.double(0.3554),
99  sigmaDistorsion = cms.double(0.0),
100  sigmaTDC = cms.double(0.010),
101  formulaLandauNoise = cms.string("TMath::Max(0.020, 0.020 * (0.35 * (x - 1.0) + 1.0))")
102  )
103 )
104 
105 from Configuration.Eras.Modifier_phase2_etlV4_cff import phase2_etlV4
106 phase2_etlV4.toModify(_endcap_MTDDigitizer.DeviceSimulation, meVPerMIP = 0.015 )
107 
108 from Configuration.ProcessModifiers.premix_stage1_cff import premix_stage1
109 for _m in [_barrel_MTDDigitizer, _endcap_MTDDigitizer]:
110  premix_stage1.toModify(_m, premixStage1 = True)
111 
112 # Fast Timing
113 mtdDigitizer = cms.PSet(
114  accumulatorType = cms.string("MTDDigiProducer"),
115  makeDigiSimLinks = cms.bool(False),
116  verbosity = cms.untracked.uint32(0),
117 
118  barrelDigitizer = _barrel_MTDDigitizer,
119  endcapDigitizer = _endcap_MTDDigitizer
120 )