CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_14/src/RecoJets/FFTJetProducers/python/fftjetproducer_cfi.py

Go to the documentation of this file.
00001 import math
00002 import FWCore.ParameterSet.Config as cms
00003 
00004 from RecoJets.FFTJetProducers.fftjetcommon_cfi import *
00005 
00006 fftjet_default_recombination_scale = 0.5
00007 
00008 # FFTJet jet producer configuration
00009 fftjet_jet_maker = cms.EDProducer(
00010     "FFTJetProducer",
00011     #
00012     # Label for the input clustering tree (must be sparse)
00013     treeLabel = cms.InputTag("fftjetpatreco", "FFTJetPatternRecognition"),
00014     #
00015     # Do we have the complete event at the lowest clustering tree scale?
00016     # Note that sparse clustering tree removes it by default, even if
00017     # it is inserted by the pattern recognition module.
00018     insertCompleteEvent = cms.bool(fftjet_insert_complete_event),
00019     completeEventScale = cms.double(fftjet_complete_event_scale),
00020     #
00021     # The initial set of scales used by the pattern recognition stage.
00022     # This is also the final set unless clustering tree construction
00023     # is adaptive. Needed here for reading back non-adaptive trees.
00024     InitialScales = fftjet_patreco_scales_50,
00025     #
00026     # Label for the produced objects
00027     outputLabel = cms.string("MadeByFFTJet"),
00028     #
00029     # Label for the input collection of Candidate objects
00030     src = cms.InputTag("towerMaker"),
00031     #
00032     # Type of the jets which will be produced (should be consistent with
00033     # the input collection). Valid types are "BasicJet", "GenJet", "CaloJet",
00034     # "PFJet", and "TrackJet". The algorithm might do different things
00035     # depending on the type. In particular, vertex correction may be done
00036     # for "CaloJet".
00037     jetType = cms.string("CaloJet"),
00038     #
00039     # Perform vertex correction?
00040     doPVCorrection = cms.bool(False),
00041     #
00042     # Label for the input collection of vertex objects. Meaningful
00043     # only when "doPVCorrection" is True
00044     srcPVs = cms.InputTag("offlinePrimaryVertices"),
00045     #
00046     # Anomalous calo tower definition (comes from RecoJets default)
00047     anomalous = fftjet_anomalous_tower_default,
00048     #
00049     # Magnitude correction factors (used only with gridded algorithms)
00050     etaDependentMagnutideFactors = cms.vdouble(),
00051     #
00052     # If a gridded algorithm is used, do we want to pick up the discretized
00053     # energy flow grid from the event record?
00054     reuseExistingGrid = cms.bool(False),
00055     #
00056     # If we do not reuse an existing grid, we need to provide
00057     # the grid configuration
00058     GridConfiguration = fftjet_grid_256_128,
00059     #
00060     # Maximum number of iterations allowed for the iterative jet
00061     # fitting. One-shot method is used if this number is 0 or 1.
00062     maxIterations = cms.uint32(1),
00063     #
00064     # Number of leading jets for which the iterative jet fitting must
00065     # converge before iterations are declared successful. This parameter
00066     # is not terribly meaningfule unless you know how many jets you expect
00067     # to get.
00068     nJetsRequiredToConverge = cms.uint32(10),
00069     #
00070     # The distance cutoff for the convergence. The distance between
00071     # the jets on two subsequent iterations must be less than this
00072     # cutoff in order to declare that the jet reconstruction has
00073     # converged. The distance function is defined by the "jetDistanceCalc"
00074     # parameter. Used only if "maxIterations" is larger than 1.
00075     convergenceDistance = cms.double(1.0e-6),
00076     #
00077     # Are we going to produce the set of constituents for each jet?
00078     # If we are not doing this, the code will run faster.
00079     assignConstituents = cms.bool(True),
00080     #
00081     # Are we going to resum constituents to calculate jet 4-vectors?
00082     # This only makes sense when a gridded algorithm is used in the
00083     # crisp 4-vector recombination mode to determine jet areas (note
00084     # that "recombinationDataCutoff" parameter should be negative),
00085     # and resumming is used to emulate vector algorithm recombination.
00086     resumConstituents = cms.bool(False),
00087     #
00088     # Noise sigma parameter for the background functor (the interface
00089     # to noise modeling is likely to be changed in the future)
00090     noiseLevel = cms.double(0.15),
00091     #
00092     # Number of clusters requested. Works with both "locallyAdaptive"
00093     # and "globallyAdaptive" resolution schemes.
00094     nClustersRequested = cms.uint32(4),
00095     #
00096     # Maximum eta for gridded recombination algorithms. Grid cells
00097     # with eta values ou t
00098     gridScanMaxEta = cms.double(fftjet_standard_eta_range),
00099     #
00100     # Are we going to use gridded or vector algorithm? Vector algoritms
00101     # are slightly more precise (no binning uncertainty introduced). However,
00102     # jet-by-jet jet areas can be calculated only by gridded algorithms.
00103     useGriddedAlgorithm = cms.bool(False),
00104     #
00105     # The recombination algorithm used. For vector algorithms, possible
00106     # specifications are:
00107     #   "Kernel"     -- use 4-vector recombination scheme
00108     #   "EtCentroid" -- use Et centroid (or "original Snowmass") scheme
00109     #   "EtSum"      -- set the jet direction to the precluster direction
00110     # For gridded algorithms additional specifications are available:
00111     # "FasterKernel", "FasterEtCentroid", and "FasterEtSum". See the
00112     # comments in the "FasterKernelRecombinationAlg.hh" header of the
00113     # FFTJet package for limitations of those faster algorithms.
00114     recombinationAlgorithm = cms.string("Kernel"),
00115     #
00116     # Are we going to utilize crisp or fuzzy clustering?
00117     isCrisp = cms.bool(True),
00118     #
00119     # A parameter which defines when we will attempt to split the energy
00120     # of a calorimeter cell if it is unlikely to belong to any jet and
00121     # to the noise. Works with Et-dependent membership functions only.
00122     # The default value of 0 means don't split, just assign this energy
00123     # deposition to the unclustered energy.
00124     unlikelyBgWeight = cms.double(0.0),
00125     #
00126     # The data cutoff for the gridded algorithms. Set this cutoff
00127     # to some negative number if you want to calculate jet areas
00128     # (this can also be done by turning on pile-up calculation
00129     # as a separate step.) Set it to 0 or some positive number
00130     # if you want to improve the code speed.
00131     recombinationDataCutoff = cms.double(0.0),
00132     #
00133     # The built-in precluster selection for subsequent jet reconstruction
00134     # can be performed according to the following schemes which, basically,
00135     # describe how the resolution of the Gaussian filter is chosen:
00136     #  "fixed"            -- use the same user-selected resolution across
00137     #                        the whole eta-phi space
00138     #  "maximallyStable"  -- pick up a single resolution according to
00139     #                        a jet configuration stability criterion
00140     #  "globallyAdaptive" -- pick up a single resolution which gives
00141     #                        a desired number of jets
00142     #  "locallyAdaptive"  -- use different resolutions in different parts
00143     #                        of the eta-phi space in order to maximize
00144     #                        a certain optimization criterion
00145     resolution = cms.string("fixed"),
00146     #
00147     # Scale parameter for the "fixed" and "locallyAdaptive" resolution schemes
00148     fixedScale = cms.double(0.15),
00149     #
00150     # Minimum and maximum stable scales for the "maximallyStable"
00151     # resolution scheme. Value of 0 means there is no limit, and
00152     # all scales in the clustering tree are considered.
00153     minStableScale = cms.double(0.0),
00154     maxStableScale = cms.double(0.0),
00155     #
00156     # Stability exponent for the "maximallyStable" resolution scheme
00157     stabilityAlpha = cms.double(0.5),
00158     #
00159     # The precluster discriminator which works together with the
00160     # resolution selection scheme
00161     PeakSelectorConfiguration = cms.PSet(
00162         Class = cms.string("SimplePeakSelector"),
00163         magCut = cms.double(0.1),
00164         driftSpeedCut = cms.double(1.0e100),
00165         magSpeedCut = cms.double(-1.0e100),
00166         lifeTimeCut = cms.double(-1.0e100),
00167         NNDCut = cms.double(-1.0e100),
00168         etaCut = cms.double(1.0e100)
00169     ),
00170     #
00171     # The jet membership function
00172     jetMembershipFunction = fftjet_jet_membership_cone,
00173     #
00174     # The noise membership function
00175     bgMembershipFunction = fftjet_noise_membership_smallconst,
00176     #
00177     # The recombination scale function
00178     recoScaleCalcPeak = cms.PSet(
00179         Class = cms.string("ConstDouble"),
00180         value = cms.double(fftjet_default_recombination_scale)
00181     ),
00182     #
00183     # The function which calculates eta-to-phi bandwidth ratio
00184     # for the jet membership function. If the ratio is set to 0,
00185     # the "setScaleRatio" membership function method will never
00186     # be called, and the default ratio built into the membership
00187     # functionwill be used instead.
00188     recoScaleRatioCalcPeak = fftjet_peakfunctor_const_zero,
00189     #
00190     # The function which calculates the factor to be multiplied by
00191     # the membership function
00192     memberFactorCalcPeak = fftjet_peakfunctor_const_one,
00193     #
00194     # The following parameters must be specified if "maxIterations" value
00195     # is larger than 1. They are used in the iterative mode only.
00196     #  recoScaleCalcJet = ,
00197     #  recoScaleRatioCalcJet = ,
00198     #  memberFactorCalcJet = ,
00199     #  jetDistanceCalc = ,
00200     #
00201     recoScaleCalcJet = cms.PSet(
00202         Class = cms.string("ConstDouble"),
00203         value = cms.double(fftjet_default_recombination_scale)
00204     ),
00205     recoScaleRatioCalcJet = fftjet_peakfunctor_const_one,
00206     memberFactorCalcJet = fftjet_peakfunctor_const_one,
00207     jetDistanceCalc = fftjet_convergence_jet_distance,
00208     #
00209     # Are we going to estimate the pile-up using actual jet shapes?
00210     # Note that the following _must_ be defined if we want to do this:
00211     #   recoScaleCalcJet, recoScaleRatioCalcJet, memberFactorCalcJet,
00212     #   PileupGridConfiguration, and pileupDensityCalc
00213     calculatePileup = cms.bool(False),
00214     #
00215     # If the pile-up is estimated, do we want to subtract it?
00216     subtractPileup = cms.bool(False),
00217     #
00218     # If the pile-up is both estimated and subtracted, do we want to use
00219     # the 4-vector pile-up subtraction scheme? (The alternative is based
00220     # on scaling the jet Pt).
00221     subtractPileupAs4Vec = cms.bool(True),
00222     #
00223     # Source of the pile-up energy flow data
00224     pileupLabel = cms.InputTag("pileupestimator", "FFTJetPileupEstimatePF")
00225 )