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.string('thresholdSelect'),
31  threshold_silicon = cms.double(2.), # MipT
32  threshold_scintillator = cms.double(2.), # MipT
33  coarsenTriggerCells = cms.bool(False),
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.string('bestChoiceSelect'),
79  NData = cms.vuint32(bestchoice_ndata_centralized),
80  coarsenTriggerCells = cms.bool(False),
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.string('superTriggerCellSelect'),
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.bool(False),
94  superTCCompression = superTCCompression_proc.clone(),
95  coarseTCCompression = coarseTCCompression_proc.clone(),
96  superTCCalibration = vfe_proc.clone(),
97  )
98 
99 
100 mixedbcstc_conc_proc = cms.PSet(ProcessorName = cms.string('HGCalConcentratorProcessorSelection'),
101  Method = cms.string('mixedBestChoiceSuperTriggerCell'),
102  NData = cms.vuint32(bestchoice_ndata_centralized),
103  coarsenTriggerCells = cms.bool(False),
104  fixedDataSizePerHGCROC = cms.bool(False),
105  type_energy_division = cms.string('superTriggerCell'),# superTriggerCell,oneBitFraction,equalShare
106  stcSize = cms.vuint32(STC_SIZE),
107  ctcSize = cms.vuint32(CTC_SIZE),
108  supertccompression = superTCCompression_proc.clone(),
109  coarseTCCompression = coarseTCCompression_proc.clone(),
110  superTCCalibration = vfe_proc.clone(),
111  )
112 
113 
114 coarsetc_onebitfraction_proc = cms.PSet(ProcessorName = cms.string('HGCalConcentratorProcessorSelection'),
115  Method = cms.string('superTriggerCellSelect'),
116  type_energy_division = cms.string('oneBitFraction'),
117  stcSize = cms.vuint32([4]*(MAX_LAYERS+1)+ [8]*(MAX_LAYERS+1)*3),
118  ctcSize = cms.vuint32(CTC_SIZE),
119  fixedDataSizePerHGCROC = cms.bool(True),
120  coarsenTriggerCells = cms.bool(False),
121  oneBitFractionThreshold = cms.double(0.125),
122  oneBitFractionLowValue = cms.double(0.0625),
123  oneBitFractionHighValue = cms.double(0.25),
124  superTCCompression = superTCCompression_proc.clone(),
125  coarseTCCompression = coarseTCCompression_proc.clone(),
126  superTCCalibration = vfe_proc.clone(),
127  )
128 
129 
130 coarsetc_equalshare_proc = cms.PSet(ProcessorName = cms.string('HGCalConcentratorProcessorSelection'),
131  Method = cms.string('superTriggerCellSelect'),
132  type_energy_division = cms.string('equalShare'),
133  stcSize = cms.vuint32([4]*(MAX_LAYERS+1)+ [8]*(MAX_LAYERS+1)*3),
134  ctcSize = cms.vuint32(CTC_SIZE),
135  fixedDataSizePerHGCROC = cms.bool(True),
136  coarsenTriggerCells = cms.bool(False),
137  superTCCompression = superTCCompression_proc.clone(),
138  coarseTCCompression = coarseTCCompression_proc.clone(),
139  superTCCalibration = vfe_proc.clone(),
140 )
141 
142 
143 
144 
145 
146 from Configuration.Eras.Modifier_phase2_hgcalV9_cff import phase2_hgcalV9
147 # V9 samples have a different defintiion of the dEdx calibrations. To account for it
148 # we reascale the thresholds of the FE selection
149 # (see https://indico.cern.ch/event/806845/contributions/3359859/attachments/1815187/2966402/19-03-20_EGPerf_HGCBE.pdf
150 # for more details)
151 phase2_hgcalV9.toModify(threshold_conc_proc,
152  threshold_silicon=1.35, # MipT
153  threshold_scintillator=1.35, # MipT
154  )
155 
156 
157 hgcalConcentratorProducer = cms.EDProducer(
158  "HGCalConcentratorProducer",
159  InputTriggerCells = cms.InputTag('hgcalVFEProducer:HGCalVFEProcessorSums'),
160  InputTriggerSums = cms.InputTag('hgcalVFEProducer:HGCalVFEProcessorSums'),
161  ProcessorParameters = threshold_conc_proc.clone()
162  )