CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
particleFlowClusterECALWithTime_cfi.py
Go to the documentation of this file.
2 
3 from particleFlowClusterECALTimeResolutionParameters_cfi import _timeResolutionECALBarrel, _timeResolutionECALEndcap
4 
5 #### PF CLUSTER ECAL ####
6 
7 #cleaning
8 _spikeAndDoubleSpikeCleaner_ECAL = cms.PSet(
9  algoName = cms.string("SpikeAndDoubleSpikeCleaner"),
10  cleaningByDetector = cms.VPSet(
11  cms.PSet( detector = cms.string("ECAL_BARREL"),
12  #single spike
13  singleSpikeThresh = cms.double(4.0),
14  minS4S1_a = cms.double(0.04), #constant term
15  minS4S1_b = cms.double(-0.024), #log pt scaling
16  #double spike
17  doubleSpikeThresh = cms.double(10.0),
18  doubleSpikeS6S2 = cms.double(0.04),
19  energyThresholdModifier = cms.double(2.0), ## aka "tighterE"
20  fractionThresholdModifier = cms.double(3.0) ## aka "tighterF"
21  ),
22  cms.PSet( detector = cms.string("ECAL_ENDCAP"),
23  #single spike
24  singleSpikeThresh = cms.double(15.0),
25  minS4S1_a = cms.double(0.02), #constant term
26  minS4S1_b = cms.double(-0.0125), #log pt scaling
27  #double spike
28  doubleSpikeThresh = cms.double(1e9),
29  doubleSpikeS6S2 = cms.double(-1.0),
30  energyThresholdModifier = cms.double(2.0), ## aka "tighterE"
31  fractionThresholdModifier = cms.double(3.0) ## aka "tighterF"
32  )
33  )
34 )
35 
36 #seeding
37 _localMaxSeeds_ECAL = cms.PSet(
38  algoName = cms.string("LocalMaximumSeedFinder"),
39  thresholdsByDetector = cms.VPSet(
40  cms.PSet( detector = cms.string("ECAL_ENDCAP"),
41  seedingThreshold = cms.double(0.6),
42  seedingThresholdPt = cms.double(0.15)
43  ),
44  cms.PSet( detector = cms.string("ECAL_BARREL"),
45  seedingThreshold = cms.double(0.23),
46  seedingThresholdPt = cms.double(0.0)
47  )
48  ),
49  nNeighbours = cms.int32(8)
50 )
51 
52 # topo clusterizer
53 _topoClusterizer_ECAL = cms.PSet(
54  algoName = cms.string("Basic2DGenericTopoClusterizer"),
55  thresholdsByDetector = cms.VPSet(
56  cms.PSet( detector = cms.string("ECAL_BARREL"),
57  gatheringThreshold = cms.double(0.08),
58  gatheringThresholdPt = cms.double(0.0)
59  ),
60  cms.PSet( detector = cms.string("ECAL_ENDCAP"),
61  gatheringThreshold = cms.double(0.3),
62  gatheringThresholdPt = cms.double(0.0)
63  )
64  ),
65  useCornerCells = cms.bool(True)
66 )
67 
68 #position calculations
69 _positionCalcECAL_all_nodepth = cms.PSet(
70  algoName = cms.string("Basic2DGenericPFlowPositionCalc"),
71  ##
72  minFractionInCalc = cms.double(1e-9),
73  posCalcNCrystals = cms.int32(-1),
74  logWeightDenominator = cms.double(0.08), # same as gathering threshold
75  minAllowedNormalization = cms.double(1e-9),
76  timeResolutionCalcBarrel = _timeResolutionECALBarrel,
77  timeResolutionCalcEndcap = _timeResolutionECALEndcap,
78 )
79 _positionCalcECAL_3x3_nodepth = _positionCalcECAL_all_nodepth.clone(
80  posCalcNCrystals = cms.int32(9)
81 )
82 _positionCalcECAL_all_withdepth = cms.PSet(
83  algoName = cms.string("ECAL2DPositionCalcWithDepthCorr"),
84  ##
85  minFractionInCalc = cms.double(0.0),
86  minAllowedNormalization = cms.double(0.0),
87  T0_EB = cms.double(7.4),
88  T0_EE = cms.double(3.1),
89  T0_ES = cms.double(1.2),
90  W0 = cms.double(4.2),
91  X0 = cms.double(0.89)
92 )
93 
94 # pf clustering
95 _pfClusterizerWithTime_ECAL = cms.PSet(
96  algoName = cms.string("PFlow2DClusterizerWithTime"),
97  #pf clustering parameters
98  minFractionToKeep = cms.double(1e-7),
99  positionCalc = _positionCalcECAL_3x3_nodepth,
100  allCellsPositionCalc = _positionCalcECAL_all_nodepth,
101  positionCalcForConvergence = _positionCalcECAL_all_withdepth,
102  showerSigma = cms.double(1.5),
103  # The following 2 parameters are only considerd if no
104  # time resolution is provided
105  timeSigmaEB = cms.double(10),
106  timeSigmaEE = cms.double(10),
107  stoppingTolerance = cms.double(1e-8),
108  maxIterations = cms.uint32(50),
109  excludeOtherSeeds = cms.bool(True),
110  minFracTot = cms.double(1e-20), ## numerical stabilization
111  maxNSigmaTime = cms.double(10.), # Maximum number of sigmas in time
112  minChi2Prob = cms.double(0.), # Minimum chi2 probability (ignored if 0)
113  clusterTimeResFromSeed = cms.bool(False),
114  recHitEnergyNorms = cms.VPSet(
115  cms.PSet( detector = cms.string("ECAL_BARREL"),
116  recHitEnergyNorm = cms.double(0.08)
117  ),
118  cms.PSet( detector = cms.string("ECAL_ENDCAP"),
119  recHitEnergyNorm = cms.double(0.3)
120  )
121  ),
122  timeResolutionCalcBarrel = _timeResolutionECALBarrel,
123  timeResolutionCalcEndcap = _timeResolutionECALEndcap,
124 )
125 
126 #energy corrector for corrected cluster producer
127 _emEnergyCorrector = cms.PSet(
128  algoName = cms.string("PFClusterEMEnergyCorrector"),
129  applyCrackCorrections = cms.bool(False)
130 )
131 
132 particleFlowClusterECALWithTimeUncorrected = cms.EDProducer(
133  "PFClusterProducer",
134  recHitsSource = cms.InputTag("particleFlowRecHitECALWithTime"),
135  recHitCleaners = cms.VPSet(),
136  seedFinder = _localMaxSeeds_ECAL,
137  initialClusteringStep = _topoClusterizer_ECAL,
138  pfClusterBuilder = _pfClusterizerWithTime_ECAL,
139  positionReCalc = _positionCalcECAL_all_withdepth,
140  energyCorrector = cms.PSet()
141  )