CMS 3D CMS Logo

HFPhase1Reconstructor_cfi.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 
3 # Slopes for the S9S1 filter
4 _slopes_S9S1_run1 = [-99999,0.0164905,0.0238698,0.0321383,
5  0.041296,0.0513428,0.0622789,0.0741041,
6  0.0868186,0.100422,0.135313,0.136289,0.0589927]
7 
8 _coeffs = [1.0, 2.5, 2.2, 2.0, 1.8, 1.6, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
9 
10 _slopes_S9S1_run2 = [s*c for s, c in zip(_slopes_S9S1_run1, _coeffs)]
11 
12 
13 hfreco = cms.EDProducer("HFPhase1Reconstructor",
14  # Label for the input HFPreRecHitCollection
15  inputLabel = cms.InputTag("hfprereco"),
16 
17  # Change the following to True in order to use the channel
18  # status from the DB
19  useChannelQualityFromDB = cms.bool(True),
20 
21  # Change the following to True when the status becomes
22  # available in the DB for both anodes. If this parameter
23  # is set to False then it is assumed that the status of
24  # both anodes is given by the channel at depth 1 and 2.
25  checkChannelQualityForDepth3and4 = cms.bool(True),
26 
27  # Configure the reconstruction algorithm
28  algorithm = cms.PSet(
29  Class = cms.string("HFFlexibleTimeCheck"),
30 
31  # Timing cuts: pass everything for now
32  tlimits = cms.vdouble(-1000.0, 1000.0,
33  -1000.0, 1000.0),
34 
35  # Linear mapping of the array with dimensions [13][2].
36  # The first dimension is 2*HFAnodeStatus::N_POSSIBLE_STATES - 1.
37  energyWeights = cms.vdouble(
38  1.0, 1.0, # {OK, OK} anode status
39  1.0, 0.0, # {OK, NOT_DUAL}
40  1.0, 0.0, # {OK, NOT_READ_OUT}
41  2.0, 0.0, # {OK, HARDWARE_ERROR}
42  2.0, 0.0, # {OK, FLAGGED_BAD}
43  2.0, 0.0, # {OK, FAILED_TIMING}
44  1.0, 0.0, # {OK, FAILED_OTHER}
45  0.0, 1.0, # {NOT_DUAL, OK}
46  0.0, 1.0, # {NOT_READ_OUT, OK}
47  0.0, 2.0, # {HARDWARE_ERROR, OK}
48  0.0, 2.0, # {FLAGGED_BAD, OK}
49  0.0, 2.0, # {FAILED_TIMING, OK}
50  0.0, 1.0 # {FAILED_OTHER, OK}
51  ),
52 
53  # Into which byte (0, 1, or 2) of the aux word the sample
54  # of interest ADC will be placed?
55  soiPhase = cms.uint32(1),
56 
57  # Time shift added to all "normal" QIE10 TDC time measurements
58  timeShift = cms.double(0.0),
59 
60  # Rise and fall time of the rechit will be set to these values
61  # if neither anode has valid TDC info
62  triseIfNoTDC = cms.double(-100.0),
63  tfallIfNoTDC = cms.double(-101.0),
64 
65  # Charge limits for special TDC values. If the anode charge is
66  # below such a limit, the anode will participate in the energy
67  # reconstruction even if its TDC undershoots/overshoots. These
68  # global limits are in addition to those per channel limits in
69  # the database (effectively, the larger limit is used).
70  minChargeForUndershoot = cms.double(1.0e10),
71  minChargeForOvershoot = cms.double(1.0e10),
72 
73  # Do not construct rechits with problems
74  rejectAllFailures = cms.bool(True),
75 
76  # If False, calculate charge asymmetry only when both PMT
77  # anodes have "OK" status (or were mapped into "OK" status)
78  alwaysCalculateQAsymmetry = cms.bool(False)
79  ),
80 
81  # Reconstruction algorithm data to fetch from DB, if any
82  algoConfigClass = cms.string("HFPhase1PMTParams"),
83 
84  # Turn on/off the noise cleanup algorithms
85  setNoiseFlags = cms.bool(True),
86 
87  # Run HFStripFilter in the noise cleanup sequence? This switch
88  # is meaningful only if "setNoiseFlags" is set to True.
89  runHFStripFilter = cms.bool(True),
90 
91  # Parameters for the S9S1 test.
92  #
93  # optimumSlopes are slopes for each of the |ieta| values
94  # 29, 30, .... ,41 (although |ieta|=29 is not used in
95  # current S9S1 formulation)
96  #
97  # energy and ET params are thresholds for each |ieta|
98  #
99  S9S1stat = cms.PSet(
100  # WARNING! ONLY LONG PARAMETERS ARE USED IN DEFAULT RECO; SHORT S9S1 IS NOT USED!
101  short_optimumSlope = cms.vdouble(_slopes_S9S1_run2),
102 
103  # Short energy cut is 129.9 - 6.61*|ieta|+0.1153*|ieta|^2
104  shortEnergyParams = cms.vdouble([35.1773, 35.37, 35.7933, 36.4472,
105  37.3317, 38.4468, 39.7925, 41.3688,
106  43.1757, 45.2132, 47.4813, 49.98,
107  52.7093]),
108  shortETParams = cms.vdouble([0,0,0,0,
109  0,0,0,0,
110  0,0,0,0,0]),
111 
112  long_optimumSlope = cms.vdouble(_slopes_S9S1_run2),
113 
114  # Long energy cut is 162.4-10.9*abs(ieta)+0.21*ieta*ieta
115  longEnergyParams = cms.vdouble([43.5, 45.7, 48.32, 51.36,
116  54.82, 58.7, 63.0, 67.72,
117  72.86, 78.42, 84.4, 90.8,
118  97.62]),
119  longETParams = cms.vdouble([0,0,0,0,
120  0,0,0,0,
121  0,0,0,0,0]),
122 
123  HcalAcceptSeverityLevel = cms.int32(9), # allow hits with severity up to AND INCLUDING 9
124  isS8S1 = cms.bool(False),
125  ),
126 
127  # Parameters for the S8S1 test. Sets the HFS8S1Ratio Bit (bit 3).
128  #
129  # energy and ET params are coefficients for
130  # energy/ET thresholds, parameterized in ieta
131  #
132  S8S1stat = cms.PSet(
133  short_optimumSlope = cms.vdouble([0.30, # ieta=29 is a special case
134  0.10, 0.10, 0.10, 0.10,
135  0.10, 0.10, 0.10, 0.10,
136  0.10, 0.10, 0.10, 0.10]),
137 
138  # Short energy cut is 40 for ieta=29, 100 otherwise
139  shortEnergyParams = cms.vdouble([40,
140  100,100,100,100,
141  100,100,100,100,
142  100,100,100,100]),
143  shortETParams = cms.vdouble([0,0,0,0,
144  0,0,0,0,
145  0,0,0,0,0]),
146 
147  long_optimumSlope = cms.vdouble([0.30, # ieta=29 is a special case
148  0.10, 0.10, 0.10, 0.10,
149  0.10, 0.10, 0.10, 0.10,
150  0.10, 0.10, 0.10, 0.10]),
151 
152  # Long energy cut is 40 for ieta=29, 100 otherwise
153  longEnergyParams = cms.vdouble([40,
154  100,100,100,100,
155  100,100,100,100,
156  100,100,100,100]),
157  longETParams = cms.vdouble([0,0,0,0,
158  0,0,0,0,
159  0,0,0,0,0]),
160 
161  HcalAcceptSeverityLevel = cms.int32(9), # allow hits with severity up to AND INCLUDING 9
162  isS8S1 = cms.bool(True),
163  ),
164 
165  # Parameters for the Parameterized Energy Threshold (PET) test.
166  #
167  # short_R, long_R are coefficients of R threshold,
168  # parameterized in *ENERGY*: R_thresh = [0]+[1]*energy+[2]*energy^2+...
169  #
170  # As of March 2010, the R threshold is a simple fixed value:
171  # R>0.98, with separate params for |ieta|=29
172  #
173  # Energy and ET params are energy and ET cuts for each |ieta| 29 -> 41
174  #
175  PETstat = cms.PSet(
176  short_R = cms.vdouble([0.8]), # new default ratio cut: R>0.8
177 
178  # Short energy cut is 129.9 - 6.61*|ieta|+0.1153*|ieta|^2
179  shortEnergyParams = cms.vdouble([35.1773, 35.37, 35.7933, 36.4472,
180  37.3317, 38.4468, 39.7925, 41.3688,
181  43.1757, 45.2132, 47.4813, 49.98,
182  52.7093]),
183  shortETParams = cms.vdouble([0,0,0,0,
184  0,0,0,0,
185  0,0,0,0,0]),
186 
187  long_R = cms.vdouble([0.98]), # default ratio cut: R>0.98
188 
189  # Long energy cut is 162.4-10.9*abs(ieta)+0.21*ieta*ieta
190  longEnergyParams = cms.vdouble([43.5, 45.7, 48.32, 51.36,
191  54.82, 58.7, 63.0, 67.72,
192  72.86, 78.42, 84.4, 90.8,
193  97.62]),
194  longETParams = cms.vdouble([0,0,0,0,
195  0,0,0,0,
196  0,0,0,0,0]),
197 
198  short_R_29 = cms.vdouble([0.8]),
199  long_R_29 = cms.vdouble([0.8]), # should move from 0.98 to 0.8?
200  HcalAcceptSeverityLevel = cms.int32(9), # allow hits with severity up to AND INCLUDING 9
201  ),
202 
203  # Parameters for HFStripFilter.
204  # Please add some descriptions of their meaning.
205  HFStripFilter = cms.PSet(
206  stripThreshold = cms.double(40.0),
207  maxThreshold = cms.double(100.0),
208  timeMax = cms.double(6.0),
209  maxStripTime = cms.double(10.0),
210  wedgeCut = cms.double(0.05),
211  seedHitIetaMax = cms.int32(35),
212  gap = cms.int32(2),
213  lstrips = cms.int32(2),
214  verboseLevel = cms.untracked.int32(10)
215  )
216 )
OutputIterator zip(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp)