CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
Phase1L1TJetProducer Class Reference

#include <L1Trigger/L1CaloTrigger/plugin/Phase1L1TJetProducer.cc>

Inheritance diagram for Phase1L1TJetProducer:
edm::one::EDProducer<> edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 Phase1L1TJetProducer (const edm::ParameterSet &)
 
template<class Handle >
std::vector< std::vector< edm::Ptr< reco::Candidate > > > prepareInputsIntoRegions (const Handle triggerPrimitives)
 
 ~Phase1L1TJetProducer () override
 
- Public Member Functions inherited from edm::one::EDProducer<>
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
std::vector< bool > const & recordProvenanceList () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
TypeLabelList const & typeLabelList () const
 used by the fwk to register the list of products of this module More...
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESResolverIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESResolverIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::array< std::vector< ModuleDescription const *> *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const *> const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProductResolverIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Member Functions

reco::CaloJet buildJetFromSeed (const std::tuple< int, int > &seed) const
 
std::vector< reco::CaloJetbuildJetsFromSeeds (const std::vector< std::tuple< int, int >> &seeds) const
 
std::vector< reco::CaloJetbuildJetsFromSeedsWithPUSubtraction (const std::vector< std::tuple< int, int >> &seeds, bool killZeroPt) const
 
l1t::EtSum computeMET (const double etaCut, l1t::EtSum::EtSumType sumType) const
 
template<class Container >
void fillCaloGrid (TH2F &caloGrid, const Container &triggerPrimitives, const unsigned int regionIndex)
 
std::vector< std::tuple< int, int > > findSeeds (float seedThreshold) const
 Finds the seeds in the caloGrid, seeds are saved in a vector that contain the index in the TH2F of each seed. More...
 
std::pair< float, float > getCandidateDigiEtaPhi (const float eta, const float phi, const unsigned int regionIndex) const
 
unsigned int getRegionIndex (const unsigned int phiRegion, const unsigned int etaRegion) const
 
float getTowerEnergy (int iEta, int iPhi) const
 Get the energy of a certain tower while correctly handling phi periodicity in case of overflow. More...
 
template<class Handle >
std::vector< std::vector< reco::CandidatePtr > > prepareInputsIntoRegions (const Handle triggerPrimitives)
 
void produce (edm::Event &, const edm::EventSetup &) override
 
std::pair< double, double > regionEtaPhiLowEdges (const unsigned int regionIndex) const
 
std::pair< double, double > regionEtaPhiUpEdges (const unsigned int regionIndex) const
 
void subtract9x9Pileup (reco::CaloJet &jet) const
 
bool trimTower (const int etaIndex, const int phiIndex) const
 

Private Attributes

std::unique_ptr< TH2F > caloGrid_
 
std::vector< double > cosPhi_
 
std::vector< double > etaBinning_
 
double etalsb_
 
std::vector< double > etaRegionEdges_
 
edm::EDGetTokenT< edm::View< reco::Candidate > > inputCollectionTag_
 
unsigned int jetIEtaSize_
 
unsigned int jetIPhiSize_
 
unsigned int maxInputsPerRegion_
 
double metAbsEtaCut_
 
double metHFAbsEtaCut_
 
size_t nBinsEta_
 
unsigned int nBinsPhi_
 
std::string outputCollectionName_
 
double phiLow_
 
double philsb_
 
std::vector< double > phiRegionEdges_
 
double phiUp_
 
double ptlsb_
 
bool puSubtraction_
 
double seedPtThreshold_
 
std::vector< double > sinPhi_
 
bool trimmedGrid_
 
bool vetoZeroPt_
 

Additional Inherited Members

- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
template<typename T >
using BranchAliasSetterT = ProductRegistryHelper::BranchAliasSetterT< T >
 
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex > >
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from edm::ProducerBase
template<Transition Tr = Transition::Event>
auto produces (std::string instanceName) noexcept
 declare what type of product will make and with which optional label More...
 
template<Transition B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<BranchType B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
template<Transition Tr = Transition::Event>
auto produces () noexcept
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< Bconsumes (edm::InputTag tag) noexcept
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes ()
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag)
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
void resetItemsToGetFrom (BranchType iType)
 

Detailed Description

Description: Produces jets with a phase-1 like sliding window algorithm using a collection of reco::Candidates in input. Also calculates MET from the histogram used to find the jets.

INPUT PARAMETERS ***
etaBinning: vdouble with eta binning (allows non-homogeneous binning in eta)
nBinsPhi: uint32, number of bins in phi
phiLow: double, min phi (typically -pi)
phiUp: double, max phi (typically +pi)
jetIEtaSize: uint32, jet cluster size in ieta
jetIPhiSize: uint32, jet cluster size in iphi
trimmedGrid: Flag (bool) to remove three bins in each corner of grid in jet finding
seedPtThreshold: double, threshold of the seed tower
pt/eta/philsb : lsb of quantities used in firmware implementation
puSubtraction: bool, runs chunky doughnut pile-up subtraction, 9x9 jet only
eta/phiRegionEdges: Boundaries of the input (PF) regions
maxInputsPerRegion: Truncate number of inputes per input (PF) region
sin/cosPhi: Value of sin/cos phi in the middle of each bin of the grid.
met{HF}AbsETaCut: Eta selection of input candidates for calculation of MET
outputCollectionName: string, tag for the output collection
vetoZeroPt: bool, controls whether jets with 0 pt should be save. 
It matters if PU is ON, as you can get negative or zero pt jets after it.
inputCollectionTag: inputtag, collection of reco::candidates used as input to the algo

Definition at line 62 of file Phase1L1TJetProducer.cc.

Constructor & Destructor Documentation

◆ Phase1L1TJetProducer()

Phase1L1TJetProducer::Phase1L1TJetProducer ( const edm::ParameterSet iConfig)
explicit

Definition at line 165 of file Phase1L1TJetProducer.cc.

References edm::ParameterSet::getParameter().

166  : // getting configuration settings
168  consumes<edm::View<reco::Candidate>>(iConfig.getParameter<edm::InputTag>("inputCollectionTag"))},
169  etaBinning_(iConfig.getParameter<std::vector<double>>("etaBinning")),
170  nBinsEta_(etaBinning_.size() - 1),
171  nBinsPhi_(iConfig.getParameter<unsigned int>("nBinsPhi")),
172  phiLow_(iConfig.getParameter<double>("phiLow")),
173  phiUp_(iConfig.getParameter<double>("phiUp")),
174  jetIEtaSize_(iConfig.getParameter<unsigned int>("jetIEtaSize")),
175  jetIPhiSize_(iConfig.getParameter<unsigned int>("jetIPhiSize")),
176  trimmedGrid_(iConfig.getParameter<bool>("trimmedGrid")),
177  seedPtThreshold_(iConfig.getParameter<double>("seedPtThreshold")),
178  ptlsb_(iConfig.getParameter<double>("ptlsb")),
179  philsb_(iConfig.getParameter<double>("philsb")),
180  etalsb_(iConfig.getParameter<double>("etalsb")),
181  puSubtraction_(iConfig.getParameter<bool>("puSubtraction")),
182  vetoZeroPt_(iConfig.getParameter<bool>("vetoZeroPt")),
183  etaRegionEdges_(iConfig.getParameter<std::vector<double>>("etaRegions")),
184  phiRegionEdges_(iConfig.getParameter<std::vector<double>>("phiRegions")),
185  maxInputsPerRegion_(iConfig.getParameter<unsigned int>("maxInputsPerRegion")),
186  sinPhi_(iConfig.getParameter<std::vector<double>>("sinPhi")),
187  cosPhi_(iConfig.getParameter<std::vector<double>>("cosPhi")),
188  metAbsEtaCut_(iConfig.getParameter<double>("metAbsEtaCut")),
189  metHFAbsEtaCut_(iConfig.getParameter<double>("metHFAbsEtaCut")),
190  outputCollectionName_(iConfig.getParameter<std::string>("outputCollectionName")) {
191  caloGrid_ =
192  std::make_unique<TH2F>("caloGrid", "Calorimeter grid", nBinsEta_, etaBinning_.data(), nBinsPhi_, phiLow_, phiUp_);
193  caloGrid_->GetXaxis()->SetTitle("#eta");
194  caloGrid_->GetYaxis()->SetTitle("#phi");
195  produces<std::vector<reco::CaloJet>>(outputCollectionName_).setBranchAlias(outputCollectionName_);
196  produces<std::vector<l1t::EtSum>>(outputCollectionName_ + "MET").setBranchAlias(outputCollectionName_ + "MET");
197 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
std::vector< double > phiRegionEdges_
std::vector< double > cosPhi_
std::vector< double > sinPhi_
std::vector< double > etaBinning_
std::unique_ptr< TH2F > caloGrid_
std::vector< double > etaRegionEdges_
edm::EDGetTokenT< edm::View< reco::Candidate > > inputCollectionTag_

◆ ~Phase1L1TJetProducer()

Phase1L1TJetProducer::~Phase1L1TJetProducer ( )
override

Definition at line 199 of file Phase1L1TJetProducer.cc.

199 {}

Member Function Documentation

◆ buildJetFromSeed()

reco::CaloJet Phase1L1TJetProducer::buildJetFromSeed ( const std::tuple< int, int > &  seed) const
private

Definition at line 361 of file Phase1L1TJetProducer.cc.

References caloGrid_, getTowerEnergy(), l1tTowerCalibrationProducer_cfi::iEta, createfilelist::int, metsig::jet, jetIEtaSize_, jetIPhiSize_, fileCollector::seed, trimmedGrid_, and trimTower().

Referenced by buildJetsFromSeeds(), and buildJetsFromSeedsWithPUSubtraction().

361  {
362  int iEta = std::get<0>(seed);
363  int iPhi = std::get<1>(seed);
364 
365  int etaHalfSize = (int)jetIEtaSize_ / 2;
366  int phiHalfSize = (int)jetIPhiSize_ / 2;
367 
368  float ptSum = 0;
369  // Scanning through the grid centered on the seed
370  for (int etaIndex = -etaHalfSize; etaIndex <= etaHalfSize; etaIndex++) {
371  for (int phiIndex = -phiHalfSize; phiIndex <= phiHalfSize; phiIndex++) {
372  if (trimmedGrid_) {
373  if (trimTower(etaIndex, phiIndex))
374  continue;
375  }
376  ptSum += getTowerEnergy(iEta + etaIndex, iPhi + phiIndex);
377  }
378  }
379 
380  // Creating a jet with eta phi centered on the seed and momentum equal to the sum of the pt of the components
382  ptVector.SetPt(ptSum);
383  ptVector.SetEta(caloGrid_->GetXaxis()->GetBinCenter(iEta));
384  ptVector.SetPhi(caloGrid_->GetYaxis()->GetBinCenter(iPhi));
386  jet.setP4(ptVector);
387  return jet;
388 }
Jets made from CaloTowers.
Definition: CaloJet.h:27
float getTowerEnergy(int iEta, int iPhi) const
Get the energy of a certain tower while correctly handling phi periodicity in case of overflow...
std::unique_ptr< TH2F > caloGrid_
bool trimTower(const int etaIndex, const int phiIndex) const
math::PtEtaPhiMLorentzVector PolarLorentzVector
Lorentz vector.
Definition: Candidate.h:38

◆ buildJetsFromSeeds()

std::vector< reco::CaloJet > Phase1L1TJetProducer::buildJetsFromSeeds ( const std::vector< std::tuple< int, int >> &  seeds) const
private

Definition at line 406 of file Phase1L1TJetProducer.cc.

References buildJetFromSeed(), metsig::jet, PDWG_EXODelayedJetMET_cff::jets, fileCollector::seed, and DetachedQuadStep_cff::seeds.

Referenced by produce().

407  {
408  // For each seed take a grid centered on the seed of the size specified by the user
409  // Sum the pf in the grid, that will be the pt of the l1t jet. Eta and phi of the jet is taken from the seed.
410  std::vector<reco::CaloJet> jets;
411  for (const auto& seed : seeds) {
413  jets.push_back(jet);
414  }
415  return jets;
416 }
Jets made from CaloTowers.
Definition: CaloJet.h:27
reco::CaloJet buildJetFromSeed(const std::tuple< int, int > &seed) const

◆ buildJetsFromSeedsWithPUSubtraction()

std::vector< reco::CaloJet > Phase1L1TJetProducer::buildJetsFromSeedsWithPUSubtraction ( const std::vector< std::tuple< int, int >> &  seeds,
bool  killZeroPt 
) const
private

Definition at line 390 of file Phase1L1TJetProducer.cc.

References buildJetFromSeed(), metsig::jet, PDWG_EXODelayedJetMET_cff::jets, fileCollector::seed, DetachedQuadStep_cff::seeds, subtract9x9Pileup(), and vetoZeroPt_.

Referenced by produce().

391  {
392  // For each seed take a grid centered on the seed of the size specified by the user
393  // Sum the pf in the grid, that will be the pt of the l1t jet. Eta and phi of the jet is taken from the seed.
394  std::vector<reco::CaloJet> jets;
395  for (const auto& seed : seeds) {
398  //killing jets with 0 pt
399  if ((vetoZeroPt_) && (jet.pt() <= 0))
400  continue;
401  jets.push_back(jet);
402  }
403  return jets;
404 }
Jets made from CaloTowers.
Definition: CaloJet.h:27
void subtract9x9Pileup(reco::CaloJet &jet) const
reco::CaloJet buildJetFromSeed(const std::tuple< int, int > &seed) const

◆ computeMET()

l1t::EtSum Phase1L1TJetProducer::computeMET ( const double  etaCut,
l1t::EtSum::EtSumType  sumType 
) const
private

Definition at line 572 of file Phase1L1TJetProducer.cc.

References caloGrid_, cosPhi_, fftjetproducer_cfi::etaCut, mps_fire::i, DiDispStaMuonMonitor_cfi::pt, ptlsb_, sinPhi_, mathSSE::sqrt(), and pileupReCalc_HLTpaths::trunc.

Referenced by produce().

572  {
573  const auto lowEtaBin = caloGrid_->GetXaxis()->FindBin(-1.0 * etaCut);
574  const auto highEtaBin = caloGrid_->GetXaxis()->FindBin(etaCut) - 1;
575  const auto phiProjection = caloGrid_->ProjectionY("temp", lowEtaBin, highEtaBin);
576 
577  // Use digitised quantities when summing to improve agreement with firmware
578  int totalDigiPx{0};
579  int totalDigiPy{0};
580 
581  for (int i = 1; i < phiProjection->GetNbinsX() + 1; ++i) {
582  double pt = phiProjection->GetBinContent(i);
583  totalDigiPx += trunc(floor(pt / ptlsb_) * cosPhi_[i - 1]);
584  totalDigiPy += trunc(floor(pt / ptlsb_) * sinPhi_[i - 1]);
585  }
586 
587  double lMET = floor(sqrt(totalDigiPx * totalDigiPx + totalDigiPy * totalDigiPy)) * ptlsb_;
588 
589  math::PtEtaPhiMLorentzVector lMETVector(lMET, 0, acos(totalDigiPx / (lMET / ptlsb_)), 0);
590  l1t::EtSum lMETSum(lMETVector, sumType, 0, 0, 0, 0);
591  return lMETSum;
592 }
std::vector< double > cosPhi_
std::vector< double > sinPhi_
PtEtaPhiMLorentzVectorD PtEtaPhiMLorentzVector
Lorentz vector with cartesian internal representation.
Definition: LorentzVector.h:25
T sqrt(T t)
Definition: SSEVec.h:19
std::unique_ptr< TH2F > caloGrid_

◆ fillCaloGrid()

template<class Container >
void Phase1L1TJetProducer::fillCaloGrid ( TH2F &  caloGrid,
const Container &  triggerPrimitives,
const unsigned int  regionIndex 
)
private

Definition at line 419 of file Phase1L1TJetProducer.cc.

References getCandidateDigiEtaPhi().

421  {
422  //Filling the calo grid with the primitives
423  for (const auto& primitiveIterator : triggerPrimitives) {
424  // Get digitised (floating point with reduced precision) eta and phi
425  std::pair<float, float> digi_EtaPhi =
426  getCandidateDigiEtaPhi(primitiveIterator->eta(), primitiveIterator->phi(), regionIndex);
427 
428  caloGrid.Fill(static_cast<float>(digi_EtaPhi.first),
429  static_cast<float>(digi_EtaPhi.second),
430  static_cast<float>(primitiveIterator->pt()));
431  }
432 }
std::pair< float, float > getCandidateDigiEtaPhi(const float eta, const float phi, const unsigned int regionIndex) const

◆ fillDescriptions()

void Phase1L1TJetProducer::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 488 of file Phase1L1TJetProducer.cc.

References edm::ConfigurationDescriptions::add(), submitPVResolutionJobs::desc, ProducerED_cfi::InputTag, and M_PI.

488  {
490  desc.add<edm::InputTag>("inputCollectionTag", edm::InputTag("l1pfCandidates", "Puppi"));
491  desc.add<std::vector<double>>("etaBinning");
492  desc.add<unsigned int>("nBinsPhi", 72);
493  desc.add<double>("phiLow", -M_PI);
494  desc.add<double>("phiUp", M_PI);
495  desc.add<unsigned int>("jetIEtaSize", 7);
496  desc.add<unsigned int>("jetIPhiSize", 7);
497  desc.add<bool>("trimmedGrid", false);
498  desc.add<double>("seedPtThreshold", 5);
499  desc.add<double>("ptlsb", 0.25), desc.add<double>("philsb", 0.0043633231), desc.add<double>("etalsb", 0.0043633231),
500  desc.add<bool>("puSubtraction", false);
501  desc.add<string>("outputCollectionName", "UncalibratedPhase1L1TJetFromPfCandidates");
502  desc.add<bool>("vetoZeroPt", true);
503  desc.add<std::vector<double>>("etaRegions");
504  desc.add<std::vector<double>>("phiRegions");
505  desc.add<unsigned int>("maxInputsPerRegion", 18);
506  desc.add<std::vector<double>>("sinPhi");
507  desc.add<std::vector<double>>("cosPhi");
508  desc.add<double>("metAbsEtaCut", 3);
509  desc.add<double>("metHFAbsEtaCut", 5);
510  descriptions.add("Phase1L1TJetProducer", desc);
511 }
#define M_PI
void add(std::string const &label, ParameterSetDescription const &psetDescription)

◆ findSeeds()

std::vector< std::tuple< int, int > > Phase1L1TJetProducer::findSeeds ( float  seedThreshold) const
private

Finds the seeds in the caloGrid, seeds are saved in a vector that contain the index in the TH2F of each seed.

Definition at line 306 of file Phase1L1TJetProducer.cc.

References caloGrid_, getTowerEnergy(), l1tTowerCalibrationProducer_cfi::iEta, createfilelist::int, jetIEtaSize_, jetIPhiSize_, DetachedQuadStep_cff::seeds, trimmedGrid_, and trimTower().

Referenced by produce().

306  {
307  int nBinsX = caloGrid_->GetNbinsX();
308  int nBinsY = caloGrid_->GetNbinsY();
309 
310  std::vector<std::tuple<int, int>> seeds;
311 
312  int etaHalfSize = (int)jetIEtaSize_ / 2;
313  int phiHalfSize = (int)jetIPhiSize_ / 2;
314 
315  // for each point of the grid check if it is a local maximum
316  // to do so I take a point, and look if is greater than the points around it (in the 9x9 neighborhood)
317  // to prevent mutual exclusion, I check greater or equal for points above and right to the one I am considering (including the top-left point)
318  // to prevent mutual exclusion, I check greater for points below and left to the one I am considering (including the bottom-right point)
319 
320  for (int iPhi = 1; iPhi <= nBinsY; iPhi++) {
321  for (int iEta = 1; iEta <= nBinsX; iEta++) {
322  float centralPt = caloGrid_->GetBinContent(iEta, iPhi);
323  if (centralPt < seedThreshold)
324  continue;
325  bool isLocalMaximum = true;
326 
327  // Scanning through the grid centered on the seed
328  for (int etaIndex = -etaHalfSize; etaIndex <= etaHalfSize; etaIndex++) {
329  for (int phiIndex = -phiHalfSize; phiIndex <= phiHalfSize; phiIndex++) {
330  if (trimmedGrid_) {
331  if (trimTower(etaIndex, phiIndex))
332  continue;
333  }
334 
335  if ((etaIndex == 0) && (phiIndex == 0))
336  continue;
337  if (phiIndex > 0) {
338  if (phiIndex > -etaIndex) {
339  isLocalMaximum = ((isLocalMaximum) && (centralPt > getTowerEnergy(iEta + etaIndex, iPhi + phiIndex)));
340  } else {
341  isLocalMaximum = ((isLocalMaximum) && (centralPt >= getTowerEnergy(iEta + etaIndex, iPhi + phiIndex)));
342  }
343  } else {
344  if (phiIndex >= -etaIndex) {
345  isLocalMaximum = ((isLocalMaximum) && (centralPt > getTowerEnergy(iEta + etaIndex, iPhi + phiIndex)));
346  } else {
347  isLocalMaximum = ((isLocalMaximum) && (centralPt >= getTowerEnergy(iEta + etaIndex, iPhi + phiIndex)));
348  }
349  }
350  }
351  }
352  if (isLocalMaximum) {
353  seeds.emplace_back(iEta, iPhi);
354  }
355  }
356  }
357 
358  return seeds;
359 }
float getTowerEnergy(int iEta, int iPhi) const
Get the energy of a certain tower while correctly handling phi periodicity in case of overflow...
std::unique_ptr< TH2F > caloGrid_
bool trimTower(const int etaIndex, const int phiIndex) const

◆ getCandidateDigiEtaPhi()

std::pair< float, float > Phase1L1TJetProducer::getCandidateDigiEtaPhi ( const float  eta,
const float  phi,
const unsigned int  regionIndex 
) const
private

Definition at line 434 of file Phase1L1TJetProducer.cc.

References caloGrid_, PVValHelper::eta, etalsb_, mps_fire::i, phi, philsb_, regionEtaPhiLowEdges(), and regionEtaPhiUpEdges().

Referenced by fillCaloGrid().

436  {
437  std::pair<double, double> regionLowEdges = regionEtaPhiLowEdges(regionIndex);
438 
439  int digitisedEta = floor((eta - regionLowEdges.second) / etalsb_);
440  int digitisedPhi = floor((phi - regionLowEdges.first) / philsb_);
441 
442  // If eta or phi is on a bin edge
443  // Put in bin above, to match behaviour of HLS
444  // Unless it's on the last bin of this pf region
445  // Then it is placed in the last bin, not the overflow
446  TAxis* etaAxis = caloGrid_->GetXaxis();
447  std::pair<double, double> regionUpEdges = regionEtaPhiUpEdges(regionIndex);
448  int digiEtaEdgeLastBinUp = floor((regionUpEdges.second - regionLowEdges.second) / etalsb_);
449  // If the digi eta is outside the last bin of this pf region
450  // Set the digitised quantity so it would be in the last bin
451  // These cases could be avoided by sorting input candidates based on digitised eta/phi
452  if (digitisedEta >= digiEtaEdgeLastBinUp) {
453  digitisedEta = digiEtaEdgeLastBinUp - 1;
454  } else {
455  for (int i = 0; i < etaAxis->GetNbins(); ++i) {
456  if (etaAxis->GetBinUpEdge(i) < regionLowEdges.second)
457  continue;
458  int digiEdgeBinUp = floor((etaAxis->GetBinUpEdge(i) - regionLowEdges.second) / etalsb_);
459  if (digiEdgeBinUp == digitisedEta) {
460  digitisedEta += 1;
461  }
462  }
463  }
464 
465  // Similar for phi
466  TAxis* phiAxis = caloGrid_->GetYaxis();
467  int digiPhiEdgeLastBinUp = floor((regionUpEdges.first - regionLowEdges.first) / philsb_);
468  if (digitisedPhi >= digiPhiEdgeLastBinUp) {
469  digitisedPhi = digiPhiEdgeLastBinUp - 1;
470  } else {
471  for (int i = 0; i < phiAxis->GetNbins(); ++i) {
472  if (phiAxis->GetBinUpEdge(i) < regionLowEdges.first)
473  continue;
474  int digiEdgeBinUp = floor((phiAxis->GetBinUpEdge(i) - regionLowEdges.first) / philsb_);
475  if (digiEdgeBinUp == digitisedPhi) {
476  digitisedPhi += 1;
477  }
478  }
479  }
480 
481  // Convert digitised eta and phi back to floating point quantities with reduced precision
482  float floatDigitisedEta = (digitisedEta + 0.5) * etalsb_ + regionLowEdges.second;
483  float floatDigitisedPhi = (digitisedPhi + 0.5) * philsb_ + regionLowEdges.first;
484 
485  return std::pair<float, float>{floatDigitisedEta, floatDigitisedPhi};
486 }
std::pair< double, double > regionEtaPhiLowEdges(const unsigned int regionIndex) const
std::unique_ptr< TH2F > caloGrid_
std::pair< double, double > regionEtaPhiUpEdges(const unsigned int regionIndex) const

◆ getRegionIndex()

unsigned int Phase1L1TJetProducer::getRegionIndex ( const unsigned int  phiRegion,
const unsigned int  etaRegion 
) const
private

Definition at line 550 of file Phase1L1TJetProducer.cc.

References phiRegionEdges_.

Referenced by prepareInputsIntoRegions().

550  {
551  return etaRegion * (phiRegionEdges_.size() - 1) + phiRegion;
552 }
std::vector< double > phiRegionEdges_

◆ getTowerEnergy()

float Phase1L1TJetProducer::getTowerEnergy ( int  iEta,
int  iPhi 
) const
private

Get the energy of a certain tower while correctly handling phi periodicity in case of overflow.

Definition at line 201 of file Phase1L1TJetProducer.cc.

References caloGrid_, l1tTowerCalibrationProducer_cfi::iEta, l1tHGCalTowerMapProducer_cfi::nBinsEta, and l1tSlwPFPuppiJets_cfi::nBinsPhi.

Referenced by buildJetFromSeed(), findSeeds(), and subtract9x9Pileup().

201  {
202  // We return the pt of a certain bin in the calo grid, taking account of the phi periodicity when overflowing (e.g. phi > phiSize), and returning 0 for the eta out of bounds
203 
204  int nBinsEta = caloGrid_->GetNbinsX();
205  int nBinsPhi = caloGrid_->GetNbinsY();
206  while (iPhi < 1) {
207  iPhi += nBinsPhi;
208  }
209  while (iPhi > nBinsPhi) {
210  iPhi -= nBinsPhi;
211  }
212  if (iEta < 1) {
213  return 0;
214  }
215  if (iEta > nBinsEta) {
216  return 0;
217  }
218  return caloGrid_->GetBinContent(iEta, iPhi);
219 }
std::unique_ptr< TH2F > caloGrid_

◆ prepareInputsIntoRegions() [1/2]

template<class Handle >
std::vector<std::vector<reco::CandidatePtr> > Phase1L1TJetProducer::prepareInputsIntoRegions ( const Handle  triggerPrimitives)
private

◆ prepareInputsIntoRegions() [2/2]

template<class Handle >
std::vector<std::vector<edm::Ptr<reco::Candidate> > > Phase1L1TJetProducer::prepareInputsIntoRegions ( const Handle  triggerPrimitives)

Definition at line 514 of file Phase1L1TJetProducer.cc.

References etaRegionEdges_, getRegionIndex(), mps_fire::i, PixelMapPlotter::inputs, maxInputsPerRegion_, phiRegionEdges_, cmsswSequenceInfo::tp, and pfDeepBoostedJetPreprocessParams_cfi::upper_bound.

515  {
516  std::vector<std::vector<reco::CandidatePtr>> inputsInRegions{etaRegionEdges_.size() * (phiRegionEdges_.size() - 1)};
517 
518  for (unsigned int i = 0; i < triggerPrimitives->size(); ++i) {
519  reco::CandidatePtr tp(triggerPrimitives, i);
520 
521  if (tp->phi() < phiRegionEdges_.front() || tp->phi() >= phiRegionEdges_.back() ||
522  tp->eta() < etaRegionEdges_.front() || tp->eta() >= etaRegionEdges_.back())
523  continue;
524 
525  // Which phi region does this tp belong to
526  auto it_phi = phiRegionEdges_.begin();
527  it_phi = std::upper_bound(phiRegionEdges_.begin(), phiRegionEdges_.end(), tp->phi()) - 1;
528 
529  // Which eta region does this tp belong to
530  auto it_eta = etaRegionEdges_.begin();
531  it_eta = std::upper_bound(etaRegionEdges_.begin(), etaRegionEdges_.end(), tp->eta()) - 1;
532 
533  if (it_phi != phiRegionEdges_.end() && it_eta != etaRegionEdges_.end()) {
534  auto phiRegion = it_phi - phiRegionEdges_.begin();
535  auto etaRegion = it_eta - etaRegionEdges_.begin();
536  inputsInRegions[getRegionIndex(phiRegion, etaRegion)].emplace_back(tp);
537  }
538  }
539 
540  // Truncate number of inputs in each pf region
541  for (auto& inputs : inputsInRegions) {
542  if (inputs.size() > maxInputsPerRegion_) {
543  inputs.resize(maxInputsPerRegion_);
544  }
545  }
546 
547  return inputsInRegions;
548 }
std::vector< double > phiRegionEdges_
unsigned int getRegionIndex(const unsigned int phiRegion, const unsigned int etaRegion) const
std::vector< double > etaRegionEdges_

◆ produce()

void Phase1L1TJetProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivatevirtual

Implements edm::one::EDProducerBase.

Definition at line 221 of file Phase1L1TJetProducer.cc.

References buildJetsFromSeeds(), buildJetsFromSeedsWithPUSubtraction(), caloGrid_, computeMET(), findSeeds(), iEvent, inputCollectionTag_, L1Analysis::kMissingEt, L1Analysis::kMissingEtHF, metAbsEtaCut_, metHFAbsEtaCut_, eostools::move(), outputCollectionName_, reco::LeafCandidate::pt(), puSubtraction_, seedPtThreshold_, jetUpdater_cfi::sort, and vetoZeroPt_.

221  {
222  edm::Handle<edm::View<reco::Candidate>> inputCollectionHandle;
223  iEvent.getByToken(inputCollectionTag_, inputCollectionHandle);
224 
225  // sort inputs into PF regions
226  std::vector<std::vector<reco::CandidatePtr>> inputsInRegions = prepareInputsIntoRegions<>(inputCollectionHandle);
227 
228  // histogramming the data
229  caloGrid_->Reset();
230  for (unsigned int iInputRegion = 0; iInputRegion < inputsInRegions.size(); ++iInputRegion) {
231  fillCaloGrid<>(*(caloGrid_), inputsInRegions[iInputRegion], iInputRegion);
232  }
233 
234  // find the seeds
235  const auto& seedsVector = findSeeds(seedPtThreshold_); // seedPtThreshold = 5
236  // build jets from the seeds
237  auto l1jetVector =
239 
240  // sort by pt
241  std::sort(l1jetVector.begin(), l1jetVector.end(), [](const reco::CaloJet& jet1, const reco::CaloJet& jet2) {
242  return jet1.pt() > jet2.pt();
243  });
244 
245  auto l1jetVectorPtr = std::make_unique<std::vector<reco::CaloJet>>(l1jetVector);
246  iEvent.put(std::move(l1jetVectorPtr), outputCollectionName_);
247 
248  // calculate METs
251  std::unique_ptr<std::vector<l1t::EtSum>> lSumVectorPtr(new std::vector<l1t::EtSum>(0));
252  lSumVectorPtr->push_back(lMET);
253  lSumVectorPtr->push_back(lMETHF);
254  iEvent.put(std::move(lSumVectorPtr), this->outputCollectionName_ + "MET");
255 
256  return;
257 }
l1t::EtSum computeMET(const double etaCut, l1t::EtSum::EtSumType sumType) const
Jets made from CaloTowers.
Definition: CaloJet.h:27
double pt() const final
transverse momentum
std::vector< reco::CaloJet > buildJetsFromSeedsWithPUSubtraction(const std::vector< std::tuple< int, int >> &seeds, bool killZeroPt) const
std::vector< std::tuple< int, int > > findSeeds(float seedThreshold) const
Finds the seeds in the caloGrid, seeds are saved in a vector that contain the index in the TH2F of ea...
int iEvent
Definition: GenABIO.cc:224
std::unique_ptr< TH2F > caloGrid_
std::vector< reco::CaloJet > buildJetsFromSeeds(const std::vector< std::tuple< int, int >> &seeds) const
def move(src, dest)
Definition: eostools.py:511
edm::EDGetTokenT< edm::View< reco::Candidate > > inputCollectionTag_

◆ regionEtaPhiLowEdges()

std::pair< double, double > Phase1L1TJetProducer::regionEtaPhiLowEdges ( const unsigned int  regionIndex) const
private

Definition at line 554 of file Phase1L1TJetProducer.cc.

References etaRegionEdges_, and phiRegionEdges_.

Referenced by getCandidateDigiEtaPhi().

554  {
555  unsigned int phiRegion = regionIndex % (phiRegionEdges_.size() - 1);
556  unsigned int etaRegion = (regionIndex - phiRegion) / (phiRegionEdges_.size() - 1);
557  return std::pair<double, double>{phiRegionEdges_.at(phiRegion), etaRegionEdges_.at(etaRegion)};
558 }
std::vector< double > phiRegionEdges_
std::vector< double > etaRegionEdges_

◆ regionEtaPhiUpEdges()

std::pair< double, double > Phase1L1TJetProducer::regionEtaPhiUpEdges ( const unsigned int  regionIndex) const
private

Definition at line 560 of file Phase1L1TJetProducer.cc.

References etaRegionEdges_, and phiRegionEdges_.

Referenced by getCandidateDigiEtaPhi().

560  {
561  unsigned int phiRegion = regionIndex % (phiRegionEdges_.size() - 1);
562  unsigned int etaRegion = (regionIndex - phiRegion) / (phiRegionEdges_.size() - 1);
563  if (phiRegion == phiRegionEdges_.size() - 1) {
564  return std::pair<double, double>{phiRegionEdges_.at(phiRegion), etaRegionEdges_.at(etaRegion + 1)};
565  } else if (etaRegion == etaRegionEdges_.size() - 1) {
566  return std::pair<double, double>{phiRegionEdges_.at(phiRegion + 1), etaRegionEdges_.at(etaRegion)};
567  }
568 
569  return std::pair<double, double>{phiRegionEdges_.at(phiRegion + 1), etaRegionEdges_.at(etaRegion + 1)};
570 }
std::vector< double > phiRegionEdges_
std::vector< double > etaRegionEdges_

◆ subtract9x9Pileup()

void Phase1L1TJetProducer::subtract9x9Pileup ( reco::CaloJet jet) const
private

Definition at line 259 of file Phase1L1TJetProducer.cc.

References caloGrid_, getTowerEnergy(), metsig::jet, SiStripPI::max, x, x_scroll_max, x_scroll_min, y, y_scroll_max, and y_scroll_min.

Referenced by buildJetsFromSeedsWithPUSubtraction().

259  {
260  // these variables host the total pt in each sideband and the total pileup contribution
261  float topBandPt = 0;
262  float leftBandPt = 0;
263  float rightBandPt = 0;
264  float bottomBandPt = 0;
265  float pileUpEnergy;
266 
267  // hold the jet's x-y (and z, as I have to use it, even if 2D) location in the histo
268  int xCenter, yCenter, zCenter;
269  // Retrieving histo-coords for seed
270  caloGrid_->GetBinXYZ(caloGrid_->FindFixBin(jet.eta(), jet.phi()), xCenter, yCenter, zCenter);
271 
272  // Computing pileup
273  for (int x = x_scroll_min; x <= x_scroll_max; x++) {
274  for (int y = y_scroll_min; y < y_scroll_max; y++) {
275  // top band, I go up 5 squares to reach the bottom of the top band
276  // +x scrolls from left to right, +y scrolls up
277  topBandPt += getTowerEnergy(xCenter + x, yCenter + (5 + y));
278  // left band, I go left 5 squares (-5) to reach the bottom of the top band
279  // +x scrolls from bottom to top, +y scrolls left
280  leftBandPt += getTowerEnergy(xCenter - (5 + y), yCenter + x);
281  // right band, I go right 5 squares (+5) to reach the bottom of the top band
282  // +x scrolls from bottom to top, +y scrolls right
283  rightBandPt += getTowerEnergy(xCenter + (5 + y), yCenter + x);
284  // right band, I go right 5 squares (+5) to reach the bottom of the top band
285  // +x scrolls from bottom to top, +y scrolls right
286  bottomBandPt += getTowerEnergy(xCenter + x, yCenter - (5 + y));
287  }
288  }
289  // adding bands and removing the maximum band (equivalent to adding the three minimum bands)
290  pileUpEnergy = topBandPt + leftBandPt + rightBandPt + bottomBandPt -
291  std::max(topBandPt, std::max(leftBandPt, std::max(rightBandPt, bottomBandPt)));
292 
293  //preparing the new 4-momentum vector
295  // removing pu contribution
296  float ptAfterPUSubtraction = jet.pt() - pileUpEnergy;
297  ptVector.SetPt((ptAfterPUSubtraction > 0) ? ptAfterPUSubtraction : 0);
298  ptVector.SetEta(jet.eta());
299  ptVector.SetPhi(jet.phi());
300  //updating the jet
301  jet.setP4(ptVector);
302  jet.setPileup(pileUpEnergy);
303  return;
304 }
float getTowerEnergy(int iEta, int iPhi) const
Get the energy of a certain tower while correctly handling phi periodicity in case of overflow...
constexpr int x_scroll_max
std::unique_ptr< TH2F > caloGrid_
constexpr int y_scroll_max
constexpr int y_scroll_min
constexpr int x_scroll_min
math::PtEtaPhiMLorentzVector PolarLorentzVector
Lorentz vector.
Definition: Candidate.h:38

◆ trimTower()

bool Phase1L1TJetProducer::trimTower ( const int  etaIndex,
const int  phiIndex 
) const
private

Definition at line 594 of file Phase1L1TJetProducer.cc.

References jetIEtaSize_, and jetIPhiSize_.

Referenced by buildJetFromSeed(), and findSeeds().

594  {
595  int etaHalfSize = jetIEtaSize_ / 2;
596  int phiHalfSize = jetIPhiSize_ / 2;
597 
598  if (etaIndex == -etaHalfSize || etaIndex == etaHalfSize) {
599  if (phiIndex <= -phiHalfSize + 1 || phiIndex >= phiHalfSize - 1) {
600  return true;
601  }
602  } else if (etaIndex == -etaHalfSize + 1 || etaIndex == etaHalfSize - 1) {
603  if (phiIndex == -phiHalfSize || phiIndex == phiHalfSize) {
604  return true;
605  }
606  }
607 
608  return false;
609 }

Member Data Documentation

◆ caloGrid_

std::unique_ptr<TH2F> Phase1L1TJetProducer::caloGrid_
private

◆ cosPhi_

std::vector<double> Phase1L1TJetProducer::cosPhi_
private

Definition at line 157 of file Phase1L1TJetProducer.cc.

Referenced by computeMET().

◆ etaBinning_

std::vector<double> Phase1L1TJetProducer::etaBinning_
private

Definition at line 136 of file Phase1L1TJetProducer.cc.

◆ etalsb_

double Phase1L1TJetProducer::etalsb_
private

Definition at line 147 of file Phase1L1TJetProducer.cc.

Referenced by getCandidateDigiEtaPhi().

◆ etaRegionEdges_

std::vector<double> Phase1L1TJetProducer::etaRegionEdges_
private

◆ inputCollectionTag_

edm::EDGetTokenT<edm::View<reco::Candidate> > Phase1L1TJetProducer::inputCollectionTag_
private

Definition at line 132 of file Phase1L1TJetProducer.cc.

Referenced by produce().

◆ jetIEtaSize_

unsigned int Phase1L1TJetProducer::jetIEtaSize_
private

Definition at line 141 of file Phase1L1TJetProducer.cc.

Referenced by buildJetFromSeed(), findSeeds(), and trimTower().

◆ jetIPhiSize_

unsigned int Phase1L1TJetProducer::jetIPhiSize_
private

Definition at line 142 of file Phase1L1TJetProducer.cc.

Referenced by buildJetFromSeed(), findSeeds(), and trimTower().

◆ maxInputsPerRegion_

unsigned int Phase1L1TJetProducer::maxInputsPerRegion_
private

Definition at line 154 of file Phase1L1TJetProducer.cc.

Referenced by prepareInputsIntoRegions().

◆ metAbsEtaCut_

double Phase1L1TJetProducer::metAbsEtaCut_
private

Definition at line 159 of file Phase1L1TJetProducer.cc.

Referenced by produce().

◆ metHFAbsEtaCut_

double Phase1L1TJetProducer::metHFAbsEtaCut_
private

Definition at line 161 of file Phase1L1TJetProducer.cc.

Referenced by produce().

◆ nBinsEta_

size_t Phase1L1TJetProducer::nBinsEta_
private

Definition at line 137 of file Phase1L1TJetProducer.cc.

◆ nBinsPhi_

unsigned int Phase1L1TJetProducer::nBinsPhi_
private

Definition at line 138 of file Phase1L1TJetProducer.cc.

◆ outputCollectionName_

std::string Phase1L1TJetProducer::outputCollectionName_
private

Definition at line 162 of file Phase1L1TJetProducer.cc.

Referenced by produce().

◆ phiLow_

double Phase1L1TJetProducer::phiLow_
private

Definition at line 139 of file Phase1L1TJetProducer.cc.

◆ philsb_

double Phase1L1TJetProducer::philsb_
private

Definition at line 146 of file Phase1L1TJetProducer.cc.

Referenced by getCandidateDigiEtaPhi().

◆ phiRegionEdges_

std::vector<double> Phase1L1TJetProducer::phiRegionEdges_
private

◆ phiUp_

double Phase1L1TJetProducer::phiUp_
private

Definition at line 140 of file Phase1L1TJetProducer.cc.

◆ ptlsb_

double Phase1L1TJetProducer::ptlsb_
private

Definition at line 145 of file Phase1L1TJetProducer.cc.

Referenced by computeMET().

◆ puSubtraction_

bool Phase1L1TJetProducer::puSubtraction_
private

Definition at line 148 of file Phase1L1TJetProducer.cc.

Referenced by produce().

◆ seedPtThreshold_

double Phase1L1TJetProducer::seedPtThreshold_
private

Definition at line 144 of file Phase1L1TJetProducer.cc.

Referenced by produce().

◆ sinPhi_

std::vector<double> Phase1L1TJetProducer::sinPhi_
private

Definition at line 156 of file Phase1L1TJetProducer.cc.

Referenced by computeMET().

◆ trimmedGrid_

bool Phase1L1TJetProducer::trimmedGrid_
private

Definition at line 143 of file Phase1L1TJetProducer.cc.

Referenced by buildJetFromSeed(), and findSeeds().

◆ vetoZeroPt_

bool Phase1L1TJetProducer::vetoZeroPt_
private

Definition at line 149 of file Phase1L1TJetProducer.cc.

Referenced by buildJetsFromSeedsWithPUSubtraction(), and produce().