CMS 3D CMS Logo

fftjetproducer_cfi.py
Go to the documentation of this file.
1 import math
2 import FWCore.ParameterSet.Config as cms
3 
5 
6 fftjet_default_recombination_scale = 0.5
7 
8 # FFTJet jet producer configuration
9 fftjetJetMaker = cms.EDProducer(
10  "FFTJetProducer",
11  #
12  # Label for the input clustering tree (must be sparse)
13  treeLabel = cms.InputTag("fftjetpatreco", "FFTJetPatternRecognition"),
14  #
15  # Do we have the complete event at the lowest clustering tree scale?
16  # Note that sparse clustering tree removes it by default, even if
17  # it is inserted by the pattern recognition module.
18  insertCompleteEvent = cms.bool(fftjet_insert_complete_event),
19  completeEventScale = cms.double(fftjet_complete_event_scale),
20  #
21  # The initial set of scales used by the pattern recognition stage.
22  # This is also the final set unless clustering tree construction
23  # is adaptive. Needed here for reading back non-adaptive trees.
24  InitialScales = fftjet_patreco_scales_50,
25  #
26  # Label for the produced objects
27  outputLabel = cms.string("MadeByFFTJet"),
28  #
29  # Label for the input collection of Candidate objects
30  src = cms.InputTag("towerMaker"),
31  #
32  # Type of the jets which will be produced (should be consistent with
33  # the input collection). Valid types are "BasicJet", "GenJet", "CaloJet",
34  # "PFJet", and "TrackJet". The algorithm might do different things
35  # depending on the type. In particular, vertex correction may be done
36  # for "CaloJet".
37  jetType = cms.string("CaloJet"),
38  #
39  # Perform vertex correction?
40  doPVCorrection = cms.bool(False),
41  #
42  # Label for the input collection of vertex objects. Meaningful
43  # only when "doPVCorrection" is True
44  srcPVs = cms.InputTag("offlinePrimaryVertices"),
45  #
46  # Anomalous calo tower definition (comes from RecoJets default)
47  anomalous = fftjet_anomalous_tower_default,
48  #
49  # Magnitude correction factors (used only with gridded algorithms)
50  etaDependentMagnutideFactors = cms.vdouble(),
51  #
52  # If a gridded algorithm is used, do we want to pick up the discretized
53  # energy flow grid from the event record?
54  reuseExistingGrid = cms.bool(False),
55  #
56  # If we do not reuse an existing grid, we need to provide
57  # the grid configuration
58  GridConfiguration = fftjet_grid_256_128,
59  #
60  # Maximum number of iterations allowed for the iterative jet
61  # fitting. One-shot method is used if this number is 0 or 1.
62  maxIterations = cms.uint32(1),
63  #
64  # Number of leading jets for which the iterative jet fitting must
65  # converge before iterations are declared successful. This parameter
66  # is not terribly meaningfule unless you know how many jets you expect
67  # to get.
68  nJetsRequiredToConverge = cms.uint32(10),
69  #
70  # The distance cutoff for the convergence. The distance between
71  # the jets on two subsequent iterations must be less than this
72  # cutoff in order to declare that the jet reconstruction has
73  # converged. The distance function is defined by the "jetDistanceCalc"
74  # parameter. Used only if "maxIterations" is larger than 1.
75  convergenceDistance = cms.double(1.0e-6),
76  #
77  # Are we going to produce the set of constituents for each jet?
78  # If we are not doing this, the code will run faster.
79  assignConstituents = cms.bool(True),
80  #
81  # Are we going to resum constituents to calculate jet 4-vectors?
82  # This only makes sense when a gridded algorithm is used in the
83  # crisp 4-vector recombination mode to determine jet areas (note
84  # that "recombinationDataCutoff" parameter should be negative),
85  # and resumming is used to emulate vector algorithm recombination.
86  resumConstituents = cms.bool(False),
87  #
88  # Noise sigma parameter for the background functor (the interface
89  # to noise modeling is likely to be changed in the future)
90  noiseLevel = cms.double(0.15),
91  #
92  # Number of clusters requested. Works with both "locallyAdaptive"
93  # and "globallyAdaptive" resolution schemes.
94  nClustersRequested = cms.uint32(4),
95  #
96  # Maximum eta for gridded recombination algorithms. Grid cells
97  # with eta values ou t
98  gridScanMaxEta = cms.double(fftjet_standard_eta_range),
99  #
100  # Are we going to use gridded or vector algorithm? Vector algoritms
101  # are slightly more precise (no binning uncertainty introduced). However,
102  # jet-by-jet jet areas can be calculated only by gridded algorithms.
103  useGriddedAlgorithm = cms.bool(False),
104  #
105  # The recombination algorithm used. For vector algorithms, possible
106  # specifications are:
107  # "Kernel" -- use 4-vector recombination scheme
108  # "EtCentroid" -- use Et centroid (or "original Snowmass") scheme
109  # "EtSum" -- set the jet direction to the precluster direction
110  # For gridded algorithms additional specifications are available:
111  # "FasterKernel", "FasterEtCentroid", and "FasterEtSum". See the
112  # comments in the "FasterKernelRecombinationAlg.hh" header of the
113  # FFTJet package for limitations of those faster algorithms.
114  recombinationAlgorithm = cms.string("Kernel"),
115  #
116  # Are we going to utilize crisp or fuzzy clustering?
117  isCrisp = cms.bool(True),
118  #
119  # A parameter which defines when we will attempt to split the energy
120  # of a calorimeter cell if it is unlikely to belong to any jet and
121  # to the noise. Works with Et-dependent membership functions only.
122  # The default value of 0 means don't split, just assign this energy
123  # deposition to the unclustered energy.
124  unlikelyBgWeight = cms.double(0.0),
125  #
126  # The data cutoff for the gridded algorithms. Set this cutoff
127  # to some negative number if you want to calculate jet areas
128  # (this can also be done by turning on pile-up calculation
129  # as a separate step.) Set it to 0 or some positive number
130  # if you want to improve the code speed.
131  recombinationDataCutoff = cms.double(0.0),
132  #
133  # The built-in precluster selection for subsequent jet reconstruction
134  # can be performed according to the following schemes which, basically,
135  # describe how the resolution of the Gaussian filter is chosen:
136  # "fixed" -- use the same user-selected resolution across
137  # the whole eta-phi space
138  # "maximallyStable" -- pick up a single resolution according to
139  # a jet configuration stability criterion
140  # "globallyAdaptive" -- pick up a single resolution which gives
141  # a desired number of jets
142  # "locallyAdaptive" -- use different resolutions in different parts
143  # of the eta-phi space in order to maximize
144  # a certain optimization criterion
145  resolution = cms.string("fixed"),
146  #
147  # Scale parameter for the "fixed" and "locallyAdaptive" resolution schemes
148  fixedScale = cms.double(0.15),
149  #
150  # Minimum and maximum stable scales for the "maximallyStable"
151  # resolution scheme. Value of 0 means there is no limit, and
152  # all scales in the clustering tree are considered.
153  minStableScale = cms.double(0.0),
154  maxStableScale = cms.double(0.0),
155  #
156  # Stability exponent for the "maximallyStable" resolution scheme
157  stabilityAlpha = cms.double(0.5),
158  #
159  # The precluster discriminator which works together with the
160  # resolution selection scheme
161  PeakSelectorConfiguration = cms.PSet(
162  Class = cms.string("SimplePeakSelector"),
163  magCut = cms.double(0.1),
164  driftSpeedCut = cms.double(1.0e100),
165  magSpeedCut = cms.double(-1.0e100),
166  lifeTimeCut = cms.double(-1.0e100),
167  NNDCut = cms.double(-1.0e100),
168  etaCut = cms.double(1.0e100),
169  splitTimeCut = cms.double(-1.0e100),
170  mergeTimeCut = cms.double(-1.0e100)
171  ),
172  #
173  # The jet membership function
174  jetMembershipFunction = fftjet_jet_membership_cone,
175  #
176  # The noise membership function
177  bgMembershipFunction = fftjet_noise_membership_smallconst,
178  #
179  # The recombination scale function
180  recoScaleCalcPeak = cms.PSet(
181  Class = cms.string("ConstDouble"),
182  value = cms.double(fftjet_default_recombination_scale)
183  ),
184  #
185  # The function which calculates eta-to-phi bandwidth ratio
186  # for the jet membership function. If the ratio is set to 0,
187  # the "setScaleRatio" membership function method will never
188  # be called, and the default ratio built into the membership
189  # functionwill be used instead.
190  recoScaleRatioCalcPeak = fftjet_peakfunctor_const_zero,
191  #
192  # The function which calculates the factor to be multiplied by
193  # the membership function
194  memberFactorCalcPeak = fftjet_peakfunctor_const_one,
195  #
196  # The following parameters must be specified if "maxIterations" value
197  # is larger than 1. They are used in the iterative mode only.
198  # recoScaleCalcJet = ,
199  # recoScaleRatioCalcJet = ,
200  # memberFactorCalcJet = ,
201  # jetDistanceCalc = ,
202  #
203  recoScaleCalcJet = cms.PSet(
204  Class = cms.string("ConstDouble"),
205  value = cms.double(fftjet_default_recombination_scale)
206  ),
207  recoScaleRatioCalcJet = fftjet_peakfunctor_const_one,
208  memberFactorCalcJet = fftjet_peakfunctor_const_one,
209  jetDistanceCalc = fftjet_convergence_jet_distance,
210  #
211  # Are we going to estimate the pile-up using actual jet shapes?
212  # Note that the following _must_ be defined if we want to do this:
213  # recoScaleCalcJet, recoScaleRatioCalcJet, memberFactorCalcJet,
214  # PileupGridConfiguration, and pileupDensityCalc
215  calculatePileup = cms.bool(False),
216  #
217  # If the pile-up is estimated, do we want to subtract it?
218  subtractPileup = cms.bool(False),
219  #
220  # If the pile-up is both estimated and subtracted, do we want to use
221  # the 4-vector pile-up subtraction scheme? (The alternative is based
222  # on scaling the jet Pt).
223  subtractPileupAs4Vec = cms.bool(False),
224  #
225  # Source of the pile-up energy flow data
226  pileupLabel = cms.InputTag("pileupestimator", "FFTJetPileupEstimatePF"),
227  #
228  # Label for GenJet collection in the "fromGenJets" resolution mode
229  genJetsLabel = cms.InputTag("fftgenjetproducer", "MadeByFFTJet"),
230  #
231  # Max number of preclusters. Does not take into account the possibility
232  # of further precluster removal by setting its membership factor to 0.
233  maxInitialPreclusters = cms.uint32(2147483647),
234  #
235  # Parameters related to pileup shape fetching from DB
236  pileupTableRecord = cms.string("pileupTableRecord"),
237  pileupTableName = cms.string("pileupTableName"),
238  pileupTableCategory = cms.string("pileupTableCategory"),
239  loadPileupFromDB = cms.bool(False)
240 )