CMS 3D CMS Logo

particleFlowClusterHBHE_cfi.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 from RecoParticleFlow.PFClusterProducer.particleFlowCaloResolution_cfi import _timeResolutionHCALMaxSample
3 
4 _thresholdsHB = cms.vdouble(0.8, 0.8, 0.8, 0.8)
5 _thresholdsHE = cms.vdouble(0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8)
6 _thresholdsHBphase1 = cms.vdouble(0.1, 0.2, 0.3, 0.3)
7 _thresholdsHEphase1 = cms.vdouble(0.1, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2)
8 _seedingThresholdsHB = cms.vdouble(1.0, 1.0, 1.0, 1.0)
9 _seedingThresholdsHE = cms.vdouble(1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1)
10 _seedingThresholdsHBphase1 = cms.vdouble(0.125, 0.25, 0.35, 0.35)
11 _seedingThresholdsHEphase1 = cms.vdouble(0.1375, 0.275, 0.275, 0.275, 0.275, 0.275, 0.275)
12 #updated HB RecHit threshold for 2023
13 _thresholdsHBphase1_2023 = cms.vdouble(0.4, 0.3, 0.3, 0.3)
14 #updated HB seeding threshold for 2023
15 _seedingThresholdsHBphase1_2023 = cms.vdouble(0.6, 0.5, 0.5, 0.5)
16 
17 
18 
19 particleFlowClusterHBHE = cms.EDProducer(
20  "PFClusterProducer",
21  recHitsSource = cms.InputTag("particleFlowRecHitHBHE"),
22  recHitCleaners = cms.VPSet(),
23  seedCleaners = cms.VPSet(),
24  seedFinder = cms.PSet(
25  algoName = cms.string("LocalMaximumSeedFinder"),
26  thresholdsByDetector = cms.VPSet(
27  cms.PSet( detector = cms.string("HCAL_BARREL1"),
28  depths = cms.vint32(1, 2, 3, 4),
29  seedingThreshold = _seedingThresholdsHB,
30  seedingThresholdPt = cms.vdouble(0.0, 0.0, 0.0, 0.0)
31  ),
32  cms.PSet( detector = cms.string("HCAL_ENDCAP"),
33  depths = cms.vint32(1, 2, 3, 4, 5, 6, 7),
34  seedingThreshold = _seedingThresholdsHE,
35  seedingThresholdPt = cms.vdouble(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
36  )
37  ),
38  nNeighbours = cms.int32(4)
39  ),
40  initialClusteringStep = cms.PSet(
41  algoName = cms.string("Basic2DGenericTopoClusterizer"),
42  thresholdsByDetector = cms.VPSet(
43  cms.PSet( detector = cms.string("HCAL_BARREL1"),
44  depths = cms.vint32(1, 2, 3, 4),
45  gatheringThreshold = _thresholdsHB,
46  gatheringThresholdPt = cms.vdouble(0.0, 0.0, 0.0, 0.0)
47  ),
48  cms.PSet( detector = cms.string("HCAL_ENDCAP"),
49  depths = cms.vint32(1, 2, 3, 4, 5, 6, 7),
50  gatheringThreshold = _thresholdsHE,
51  gatheringThresholdPt = cms.vdouble(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
52  )
53  ),
54  useCornerCells = cms.bool(True)
55  ),
56 
57  pfClusterBuilder = cms.PSet(
58  algoName = cms.string("Basic2DGenericPFlowClusterizer"),
59  #pf clustering parameters
60  minFractionToKeep = cms.double(1e-7),
61  positionCalc = cms.PSet(
62  algoName = cms.string("Basic2DGenericPFlowPositionCalc"),
63  minFractionInCalc = cms.double(1e-9),
64  posCalcNCrystals = cms.int32(5),
65  logWeightDenominatorByDetector = cms.VPSet(
66  cms.PSet( detector = cms.string("HCAL_BARREL1"),
67  depths = cms.vint32(1, 2, 3, 4),
68  logWeightDenominator = _thresholdsHB,
69  ),
70  cms.PSet( detector = cms.string("HCAL_ENDCAP"),
71  depths = cms.vint32(1, 2, 3, 4, 5, 6, 7),
72  logWeightDenominator = _thresholdsHE,
73  )
74  ),
75  minAllowedNormalization = cms.double(1e-9)
76  ),
77  allCellsPositionCalc =cms.PSet(
78  algoName = cms.string("Basic2DGenericPFlowPositionCalc"),
79  minFractionInCalc = cms.double(1e-9),
80  posCalcNCrystals = cms.int32(-1),
81  logWeightDenominatorByDetector = cms.VPSet(
82  cms.PSet( detector = cms.string("HCAL_BARREL1"),
83  depths = cms.vint32(1, 2, 3, 4),
84  logWeightDenominator = _thresholdsHB,
85  ),
86  cms.PSet( detector = cms.string("HCAL_ENDCAP"),
87  depths = cms.vint32(1, 2, 3, 4, 5, 6, 7),
88  logWeightDenominator = _thresholdsHE,
89  )
90  ),
91  minAllowedNormalization = cms.double(1e-9)
92  ),
93 
94 
95  timeSigmaEB = cms.double(10.),
96  timeSigmaEE = cms.double(10.),
97  maxNSigmaTime = cms.double(10.),
98  minChi2Prob = cms.double(0.),
99  clusterTimeResFromSeed = cms.bool(False),
100  timeResolutionCalcBarrel = _timeResolutionHCALMaxSample,
101  timeResolutionCalcEndcap = _timeResolutionHCALMaxSample,
102  showerSigma = cms.double(10.0),
103  stoppingTolerance = cms.double(1e-8),
104  maxIterations = cms.uint32(50),
105  excludeOtherSeeds = cms.bool(True),
106  minFracTot = cms.double(1e-20),
107  recHitEnergyNorms = cms.VPSet(
108  cms.PSet( detector = cms.string("HCAL_BARREL1"),
109  depths = cms.vint32(1, 2, 3, 4),
110  recHitEnergyNorm = _thresholdsHB,
111  ),
112  cms.PSet( detector = cms.string("HCAL_ENDCAP"),
113  depths = cms.vint32(1, 2, 3, 4, 5, 6, 7),
114  recHitEnergyNorm = _thresholdsHE,
115  )
116  )
117  ),
118  positionReCalc = cms.PSet(),
119  energyCorrector = cms.PSet()
120 )
121 
122 
123 
124 # offline 2018 -- uncollapsed
125 from Configuration.Eras.Modifier_run2_HE_2018_cff import run2_HE_2018
126 from Configuration.ProcessModifiers.run2_HECollapse_2018_cff import run2_HECollapse_2018
127 (run2_HE_2018 & ~run2_HECollapse_2018).toModify(particleFlowClusterHBHE,
128  seedFinder = dict(thresholdsByDetector = {1 : dict(seedingThreshold = _seedingThresholdsHEphase1) } ),
129  initialClusteringStep = dict(thresholdsByDetector = {1 : dict(gatheringThreshold = _thresholdsHEphase1) } ),
130  pfClusterBuilder = dict(
131  recHitEnergyNorms = {1 : dict(recHitEnergyNorm = _thresholdsHEphase1) },
132  positionCalc = dict(logWeightDenominatorByDetector = {1 : dict(logWeightDenominator = _thresholdsHEphase1) } ),
133  allCellsPositionCalc = dict(logWeightDenominatorByDetector = {1 : dict(logWeightDenominator = _thresholdsHEphase1) } ),
134  ),
135 )
136 
137 # offline 2019
138 from Configuration.Eras.Modifier_run3_HB_cff import run3_HB
139 run3_HB.toModify(particleFlowClusterHBHE,
140  seedFinder = dict(thresholdsByDetector = {0 : dict(seedingThreshold = _seedingThresholdsHBphase1) } ),
141  initialClusteringStep = dict(thresholdsByDetector = {0 : dict(gatheringThreshold = _thresholdsHBphase1) } ),
142  pfClusterBuilder = dict(
143  recHitEnergyNorms = {0 : dict(recHitEnergyNorm = _thresholdsHBphase1) },
144  positionCalc = dict(logWeightDenominatorByDetector = {0 : dict(logWeightDenominator = _thresholdsHBphase1) } ),
145  allCellsPositionCalc = dict(logWeightDenominatorByDetector = {0 : dict(logWeightDenominator = _thresholdsHBphase1) } ),
146  ),
147 )
148 
149 # offline 2023
150 from Configuration.Eras.Modifier_run3_egamma_2023_cff import run3_egamma_2023
151 run3_egamma_2023.toModify(particleFlowClusterHBHE,
152  seedFinder = dict(thresholdsByDetector = {0 : dict(seedingThreshold = _seedingThresholdsHBphase1_2023) } ),
153  initialClusteringStep = dict(thresholdsByDetector = {0 : dict(gatheringThreshold = _thresholdsHBphase1_2023) } ),
154  pfClusterBuilder = dict(
155  recHitEnergyNorms = {0 : dict(recHitEnergyNorm = _thresholdsHBphase1_2023) },
156  positionCalc = dict(logWeightDenominatorByDetector = {0 : dict(logWeightDenominator = _thresholdsHBphase1_2023) } ),
157  allCellsPositionCalc = dict(logWeightDenominatorByDetector = {0 : dict(logWeightDenominator = _thresholdsHBphase1_2023) } ),
158  ),
159 )
160 
161 
162 # HCALonly WF
163 particleFlowClusterHBHEOnly = particleFlowClusterHBHE.clone(
164  recHitsSource = "particleFlowRecHitHBHEOnly"
165 )