CMS 3D CMS Logo

hgcalConcentratorProducer_cfi.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
3 
4 # Digitization parameters
5 adcSaturationBH_MIP = digiparam.hgchebackDigitizer.digiCfg.feCfg.adcSaturation_fC
6 adcNbitsBH = digiparam.hgchebackDigitizer.digiCfg.feCfg.adcNbits
7 
8 EE_DR_GROUP = 7
9 FH_DR_GROUP = 6
10 BH_DR_GROUP = 12
11 MAX_LAYERS = 52
12 
13 STC_SIZE_CUSTOM_PERLAYER_100 = ([4] + # no layer 0
14  [4]*EE_DR_GROUP + [4]*EE_DR_GROUP + [4]*EE_DR_GROUP + [4]*EE_DR_GROUP + # EM
15  [4]*FH_DR_GROUP + [4]*FH_DR_GROUP + # FH
16  [4]*BH_DR_GROUP) # BH
17 STC_SIZE_CUSTOM_PERLAYER_200 = ([16] + # no layer 0
18  [16]*EE_DR_GROUP + [16]*EE_DR_GROUP + [16]*EE_DR_GROUP + [16]*EE_DR_GROUP + # EM
19  [16]*FH_DR_GROUP + [16]*FH_DR_GROUP + # FH
20  [16]*BH_DR_GROUP) # BH
21 STC_SIZE_CUSTOM_PERLAYER_300 = STC_SIZE_CUSTOM_PERLAYER_200
22 STC_SIZE_CUSTOM_PERLAYER_SCIN = STC_SIZE_CUSTOM_PERLAYER_200
23 
24 
25 CTC_SIZE = ( [2]*(MAX_LAYERS+1)*4)
26 STC_SIZE = ( [4]*(MAX_LAYERS+1)+ [16]*(MAX_LAYERS+1)*3 )
27 
28 
29 threshold_conc_proc = cms.PSet(ProcessorName = cms.string('HGCalConcentratorProcessorSelection'),
30  Method = cms.vstring(['thresholdSelect']*3),
31  threshold_silicon = cms.double(2.), # MipT
32  threshold_scintillator = cms.double(2.), # MipT
33  coarsenTriggerCells = cms.vuint32(0,0,0),
34  fixedDataSizePerHGCROC = cms.bool(False),
35  ctcSize = cms.vuint32(CTC_SIZE),
36  )
37 
38 # Column is Nlinks, Row is NWafers
39 # Requested size = 8(links)x8(wafers)
40 # Values taken from https://indico.cern.ch/event/747610/contributions/3155360/, slide 13
41 # For motherboards larger than 3, it is split in two
42 bestchoice_ndata_centralized = [
43  13, 42, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
44  13, 40, 74, 80, 114, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
45  12, 39, 72, 82, 116, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
46  12, 26, 53, 80, 114, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
47  12, 25, 52, 79, 112, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
48  0, 24, 51, 78, 111, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
49  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
50  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
51  ]
52 
53 
54 bestchoice_ndata_decentralized = [
55  1, 3, 6, 9, 14, 18, 23, 27, 32, 37, 41, 46, 0, 0, 0, 0,
56  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
57  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
58  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
59  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
60  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
61  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
62  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
63  ]
64 
65 
66 superTCCompression_proc = cms.PSet(exponentBits = cms.uint32(4),
67  mantissaBits = cms.uint32(5),
68  rounding = cms.bool(True),
69 )
70 
71 coarseTCCompression_proc = cms.PSet(exponentBits = cms.uint32(4),
72  mantissaBits = cms.uint32(3),
73  rounding = cms.bool(True),
74 )
75 
76 from L1Trigger.L1THGCal.hgcalVFEProducer_cfi import vfe_proc
77 best_conc_proc = cms.PSet(ProcessorName = cms.string('HGCalConcentratorProcessorSelection'),
78  Method = cms.vstring(['bestChoiceSelect']*3),
79  NData = cms.vuint32(bestchoice_ndata_centralized),
80  coarsenTriggerCells = cms.vuint32(0,0,0),
81  fixedDataSizePerHGCROC = cms.bool(False),
82  coarseTCCompression = coarseTCCompression_proc.clone(),
83  superTCCalibration = vfe_proc.clone(),
84  ctcSize = cms.vuint32(CTC_SIZE),
85  )
86 
87 supertc_conc_proc = cms.PSet(ProcessorName = cms.string('HGCalConcentratorProcessorSelection'),
88  Method = cms.vstring(['superTriggerCellSelect']*3),
89  type_energy_division = cms.string('superTriggerCell'),# superTriggerCell,oneBitFraction,equalShare
90  stcSize = cms.vuint32(STC_SIZE),
91  ctcSize = cms.vuint32(CTC_SIZE),
92  fixedDataSizePerHGCROC = cms.bool(False),
93  coarsenTriggerCells = cms.vuint32(0,0,0),
94  superTCCompression = superTCCompression_proc.clone(),
95  coarseTCCompression = coarseTCCompression_proc.clone(),
96  superTCCalibration = vfe_proc.clone(),
97  )
98 
99 custom_conc_proc = cms.PSet(ProcessorName = cms.string('HGCalConcentratorProcessorSelection'),
100  Method = cms.vstring('bestChoiceSelect','superTriggerCellSelect','superTriggerCellSelect'),
101  NData = cms.vuint32(bestchoice_ndata_centralized),
102  threshold_silicon = cms.double(2.), # MipT
103  threshold_scintillator = cms.double(2.), # MipT
104  coarsenTriggerCells = cms.vuint32(0,0,0),
105  fixedDataSizePerHGCROC = cms.bool(False),
106  type_energy_division = cms.string('superTriggerCell'),# superTriggerCell,oneBitFraction,equalShare
107  stcSize = cms.vuint32(STC_SIZE),
108  ctcSize = cms.vuint32(CTC_SIZE),
109  superTCCompression = superTCCompression_proc.clone(),
110  coarseTCCompression = coarseTCCompression_proc.clone(),
111  superTCCalibration = vfe_proc.clone(),
112  )
113 
114 
115 coarsetc_onebitfraction_proc = cms.PSet(ProcessorName = cms.string('HGCalConcentratorProcessorSelection'),
116  Method = cms.vstring(['superTriggerCellSelect']*3),
117  type_energy_division = cms.string('oneBitFraction'),
118  stcSize = cms.vuint32([4]*(MAX_LAYERS+1)+ [8]*(MAX_LAYERS+1)*3),
119  ctcSize = cms.vuint32(CTC_SIZE),
120  fixedDataSizePerHGCROC = cms.bool(True),
121  coarsenTriggerCells = cms.vuint32(0,0,0),
122  oneBitFractionThreshold = cms.double(0.125),
123  oneBitFractionLowValue = cms.double(0.0625),
124  oneBitFractionHighValue = cms.double(0.25),
125  superTCCompression = superTCCompression_proc.clone(),
126  coarseTCCompression = coarseTCCompression_proc.clone(),
127  superTCCalibration = vfe_proc.clone(),
128  )
129 
130 
131 coarsetc_equalshare_proc = cms.PSet(ProcessorName = cms.string('HGCalConcentratorProcessorSelection'),
132  Method = cms.vstring(['superTriggerCellSelect']*3),
133  type_energy_division = cms.string('equalShare'),
134  stcSize = cms.vuint32([4]*(MAX_LAYERS+1)+ [8]*(MAX_LAYERS+1)*3),
135  ctcSize = cms.vuint32(CTC_SIZE),
136  fixedDataSizePerHGCROC = cms.bool(True),
137  coarsenTriggerCells = cms.vuint32(0,0,0),
138  superTCCompression = superTCCompression_proc.clone(),
139  coarseTCCompression = coarseTCCompression_proc.clone(),
140  superTCCalibration = vfe_proc.clone(),
141 )
142 
143 
144 
145 
146 
147 from Configuration.Eras.Modifier_phase2_hgcalV9_cff import phase2_hgcalV9
148 # V9 samples have a different defintiion of the dEdx calibrations. To account for it
149 # we reascale the thresholds of the FE selection
150 # (see https://indico.cern.ch/event/806845/contributions/3359859/attachments/1815187/2966402/19-03-20_EGPerf_HGCBE.pdf
151 # for more details)
152 phase2_hgcalV9.toModify(threshold_conc_proc,
153  threshold_silicon=1.35, # MipT
154  threshold_scintillator=1.35, # MipT
155  )
156 
157 
158 hgcalConcentratorProducer = cms.EDProducer(
159  "HGCalConcentratorProducer",
160  InputTriggerCells = cms.InputTag('hgcalVFEProducer:HGCalVFEProcessorSums'),
161  InputTriggerSums = cms.InputTag('hgcalVFEProducer:HGCalVFEProcessorSums'),
162  ProcessorParameters = threshold_conc_proc.clone()
163  )
164 
165 
166 hgcalConcentratorProducerHFNose = hgcalConcentratorProducer.clone(
167  InputTriggerCells = cms.InputTag('hfnoseVFEProducer:HGCalVFEProcessorSums'),
168  InputTriggerSums = cms.InputTag('hfnoseVFEProducer:HGCalVFEProcessorSums')
169 )
170 
hgcalDigitizer_cfi
hgcalVFEProducer_cfi