CMS 3D CMS Logo

particleFlowClusterHF_cfi.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 
3 #### PF CLUSTER HFEM ####
4 
5 #cleaning
6 _spikeAndDoubleSpikeCleaner_HF = cms.PSet(
7  algoName = cms.string("SpikeAndDoubleSpikeCleaner"),
8  cleaningByDetector = cms.VPSet(
9  cms.PSet( detector = cms.string("HF_EM"),
10  #single spike
11  singleSpikeThresh = cms.double(80.0),
12  minS4S1_a = cms.double(0.11), #constant term
13  minS4S1_b = cms.double(-0.19), #log pt scaling
14  #double spike
15  doubleSpikeThresh = cms.double(1e9),
16  doubleSpikeS6S2 = cms.double(-1.0),
17  energyThresholdModifier = cms.double(1.0), ## aka "tighterE"
18  fractionThresholdModifier = cms.double(1.0) ## aka "tighterF"
19  ),
20  cms.PSet( detector = cms.string("HF_HAD"),
21  #single spike
22  singleSpikeThresh = cms.double(120.0),
23  minS4S1_a = cms.double(0.045), #constant term
24  minS4S1_b = cms.double(-0.080), #log pt scaling
25  #double spike
26  doubleSpikeThresh = cms.double(1e9),
27  doubleSpikeS6S2 = cms.double(-1.0),
28  energyThresholdModifier = cms.double(1.0), ## aka "tighterE"
29  fractionThresholdModifier = cms.double(1.0) ## aka "tighterF"
30  )
31  )
32  )
33 
34 #seeding
35 _localMaxSeeds_HF = cms.PSet(
36  algoName = cms.string("LocalMaximumSeedFinder"),
37  thresholdsByDetector = cms.VPSet(
38  cms.PSet( detector = cms.string("HF_EM"),
39  seedingThreshold = cms.double(1.4),
40  seedingThresholdPt = cms.double(0.0)
41  ),
42  cms.PSet( detector = cms.string("HF_HAD"),
43  seedingThreshold = cms.double(1.4),
44  seedingThresholdPt = cms.double(0.0)
45  )
46 
47  ),
48  nNeighbours = cms.int32(0)
49 )
50 
51 #topo clusters
52 _topoClusterizer_HF = cms.PSet(
53  algoName = cms.string("Basic2DGenericTopoClusterizer"),
54  thresholdsByDetector = cms.VPSet(
55  cms.PSet( detector = cms.string("HF_EM"),
56  gatheringThreshold = cms.double(0.8),
57  gatheringThresholdPt = cms.double(0.0)
58  ),
59  cms.PSet( detector = cms.string("HF_HAD"),
60  gatheringThreshold = cms.double(0.8),
61  gatheringThresholdPt = cms.double(0.0)
62  )
63 
64  ),
65  useCornerCells = cms.bool(False)
66 )
67 
68 #position calc
69 _positionCalcHF_cross_nodepth = cms.PSet(
70  algoName = cms.string("Basic2DGenericPFlowPositionCalc"),
71 
72  minFractionInCalc = cms.double(1e-9),
73  posCalcNCrystals = cms.int32(5),
74  logWeightDenominator = cms.double(0.8), # same as gathering threshold
75  minAllowedNormalization = cms.double(1e-9)
76 )
77 
78 _positionCalcHF_all_nodepth = _positionCalcHF_cross_nodepth.clone(
79  posCalcNCrystals = cms.int32(-1)
80  )
81 
82 #pf clusters
83 _pfClusterizer_HF = cms.PSet(
84  algoName = cms.string("Basic2DGenericPFlowClusterizer"),
85  #pf clustering parameters
86  minFractionToKeep = cms.double(1e-7),
87  positionCalc = _positionCalcHF_cross_nodepth,
88  allCellsPositionCalc = _positionCalcHF_all_nodepth,
89  showerSigma = cms.double(10.0),
90  stoppingTolerance = cms.double(1e-8),
91  maxIterations = cms.uint32(50),
92  excludeOtherSeeds = cms.bool(True),
93  minFracTot = cms.double(1e-20), ## numerical stabilization
94  recHitEnergyNorms = cms.VPSet(
95  cms.PSet( detector = cms.string("HF_EM"),
96  recHitEnergyNorm = cms.double(0.8)
97  ),
98  cms.PSet( detector = cms.string("HF_HAD"),
99  recHitEnergyNorm = cms.double(0.8)
100  )
101  )
102 )
103 
104 particleFlowClusterHF = cms.EDProducer(
105  "PFClusterProducer",
106  recHitsSource = cms.InputTag("particleFlowRecHitHF"),
107  recHitCleaners = cms.VPSet(_spikeAndDoubleSpikeCleaner_HF),
108  seedFinder = _localMaxSeeds_HF,
109  initialClusteringStep = _topoClusterizer_HF,
110  pfClusterBuilder = _pfClusterizer_HF,
111  positionReCalc = cms.PSet(),
112  energyCorrector = cms.PSet()
113  )
114