CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HcalHitReconstructor_hbhe_cfi.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 import RecoLocalCalo.HcalRecProducers.HBHEMethod3Parameters_cfi as method3
3 
4 hbheprereco = cms.EDProducer(
5  "HcalHitReconstructor",
6  method3.m3Parameters,
7  correctionPhaseNS = cms.double(6.0),
8  digiLabel = cms.InputTag("hcalDigis"),
9  Subdetector = cms.string('HBHE'),
10  correctForPhaseContainment = cms.bool(True),
11  correctForTimeslew = cms.bool(True),
12  dropZSmarkedPassed = cms.bool(True),
13  firstSample = cms.int32(4),
14  samplesToAdd = cms.int32(2),
15  tsFromDB = cms.bool(True),
16  recoParamsFromDB = cms.bool(True),
17  useLeakCorrection = cms.bool(False),
18  dataOOTCorrectionName = cms.string("HBHE"),
19  dataOOTCorrectionCategory = cms.string("Data"),
20  mcOOTCorrectionName = cms.string("HBHE"),
21  mcOOTCorrectionCategory = cms.string("MC"),
22  puCorrMethod = cms.int32(2),
23 
24  # Set time slice for first digi to be stored in aux word
25  # (HBHE uses time slices 4-7 for reco)
26  firstAuxTS = cms.int32(4),
27 
28  # Tags for calculating status flags
29  correctTiming = cms.bool(True),
30  setNoiseFlags = cms.bool(True),
31  setHSCPFlags = cms.bool(True),
32  setSaturationFlags = cms.bool(True),
33  setTimingShapedCutsFlags = cms.bool(True),
34  setTimingTrustFlags = cms.bool(False), # timing flags currently only implemented for HF
35  setPulseShapeFlags = cms.bool(True),
36 
37  # Enable negative energy filter
38  setNegativeFlags = cms.bool(True),
39 
40  flagParameters= cms.PSet(nominalPedestal=cms.double(3.0), #fC
41  hitEnergyMinimum=cms.double(1.0), #GeV
42  hitMultiplicityThreshold=cms.int32(17),
43  pulseShapeParameterSets = cms.VPSet(
44  cms.PSet(pulseShapeParameters=cms.vdouble( 0.0, 100.0, -50.0, 0.0, -15.0, 0.15)),
45  cms.PSet(pulseShapeParameters=cms.vdouble( 100.0, 2.0e3, -50.0, 0.0, -5.0, 0.05)),
46  cms.PSet(pulseShapeParameters=cms.vdouble( 2.0e3, 1.0e6, -50.0, 0.0, 95.0, 0.0 )),
47  cms.PSet(pulseShapeParameters=cms.vdouble(-1.0e6, 1.0e6, 45.0, 0.1, 1.0e6, 0.0 )),
48  )
49  ),
50  saturationParameters= cms.PSet(maxADCvalue=cms.int32(127)),
51  hscpParameters= cms.PSet(r1Min = cms.double(0.15), # was 0.1
52  r1Max = cms.double(1.0), # was 0.7
53  r2Min = cms.double(0.1), # was 0.1
54  r2Max = cms.double(0.5),
55  fracLeaderMin = cms.double(0.4),
56  fracLeaderMax = cms.double(0.7),
57  slopeMin = cms.double(-1.5),
58  slopeMax = cms.double(-0.6),
59  outerMin = cms.double(0.), # was 0.
60  outerMax = cms.double(0.1), # was 0.1
61  TimingEnergyThreshold = cms.double(30.)),
62 
63  pulseShapeParameters = cms.PSet(MinimumChargeThreshold = cms.double(20),
64  TS4TS5ChargeThreshold = cms.double(70),
65  TrianglePeakTS = cms.uint32(4),
66  LinearThreshold = cms.vdouble(20, 100, 100000),
67  LinearCut = cms.vdouble(-3, -0.054, -0.054),
68  RMS8MaxThreshold = cms.vdouble(20, 100, 100000),
69  RMS8MaxCut = cms.vdouble(-13.5, -11.5, -11.5),
70  LeftSlopeThreshold = cms.vdouble(250, 500, 100000),
71  LeftSlopeCut = cms.vdouble(5, 2.55, 2.55),
72  RightSlopeThreshold = cms.vdouble(250, 400, 100000),
73  RightSlopeCut = cms.vdouble(5, 4.15, 4.15),
74  RightSlopeSmallThreshold = cms.vdouble(150, 200, 100000),
75  RightSlopeSmallCut = cms.vdouble(1.08, 1.16, 1.16),
76  MinimumTS4TS5Threshold = cms.double(100),
77  TS4TS5UpperThreshold = cms.vdouble(70, 90, 100, 400),
78  TS4TS5UpperCut = cms.vdouble(1, 0.8, 0.75, 0.72),
79  TS4TS5LowerThreshold = cms.vdouble(100, 120, 160, 200, 300, 500),
80  TS4TS5LowerCut = cms.vdouble(-1, -0.7, -0.5, -0.4, -0.3, 0.1),
81  UseDualFit = cms.bool(True),
82  TriangleIgnoreSlow = cms.bool(False)),
83 
84  # shaped cut parameters are triples of (energy, low time threshold, high time threshold) values.
85  # The low and high thresholds must straddle zero (i.e., low<0, high>0); use win_offset to shift.
86  # win_gain is applied to both threshold values before win_offset.
87  # Energy ordering is no longer required on input, but guaranteed by the software.
88  # note that energies are rounded to the nearest GeV.
89  #
90  timingshapedcutsParameters = cms.PSet(tfilterEnvelope=cms.vdouble( 50.0, -2.0, 4.25,
91  52.0, -2.0, 4.09,
92  54.0, -2.0, 3.95,
93  56.0, -2.0, 3.82,
94  58.0, -2.0, 3.71,
95  60.0, -2.0, 3.60,
96  63.0, -2.0, 3.46,
97  66.0, -2.0, 3.33,
98  69.0, -2.0, 3.22,
99  73.0, -2.0, 3.10,
100  77.0, -2.0, 2.99,
101  82.0, -2.0, 2.87,
102  88.0, -2.0, 2.75,
103  95.0, -2.0, 2.64,
104  103.0, -2.0, 2.54,
105  113.0, -2.0, 2.44,
106  127.0, -2.0, 2.33,
107  146.0, -2.0, 2.23,
108  176.0, -2.0, 2.13,
109  250.0, -2.0, 2.00 ),
110  win_offset = cms.double(0.0),
111  win_gain = cms.double(3.0),
112  ignorelowest=cms.bool(True),
113  ignorehighest=cms.bool(False)
114  ),
115  applyPedConstraint = cms.bool(True),
116  applyTimeConstraint = cms.bool(True),
117  applyPulseJitter = cms.bool(False),
118  applyUnconstrainedFit = cms.bool(False), #Turn on original Method 2
119  applyTimeSlew = cms.bool(True), #units
120  ts4Min = cms.double(0.), #fC
121  ts4Max = cms.double(100.), #fC
122  pulseJitter = cms.double(1.), #GeV/bin
123  meanTime = cms.double(0.), #ns
124  timeSigma = cms.double(5.), #ns
125  meanPed = cms.double(0.), #GeV
126  pedSigma = cms.double(0.5), #GeV
127  noise = cms.double(1), #fC
128  timeMin = cms.double(-12.5), #ns
129  timeMax = cms.double(12.5), #ns
130  ts3chi2 = cms.double(5.), #chi2 (not used)
131  ts4chi2 = cms.double(15.), #chi2 for triple pulse
132  ts345chi2 = cms.double(100.), #chi2 (not used)
133  chargeMax = cms.double(6.), #Charge cut (fC) for uncstrianed Fit
134  fitTimes = cms.int32(1) # -1 means no constraint on number of fits per channel
135 )