CMS 3D CMS Logo

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

#include <L1TowerCalibrator.cc>

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

Public Member Functions

 L1TowerCalibrator (const edm::ParameterSet &)
 
- 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)
 

Private Member Functions

void produce (edm::Event &, const edm::EventSetup &) override
 

Private Attributes

std::map< std::string, std::map< std::string, TF1 > > all_nvtx_to_PU_sub_funcs
 
const double barrelSF
 
const bool debug
 
const edm::ESGetToken< CaloTPGTranscoder, CaloTPGRecorddecoderTag_
 
std::map< std::string, TF1 > ecal_nvtx_to_PU_sub_funcs
 
const double EcalTpEtMin
 
std::map< std::string, TF1 > hcal_nvtx_to_PU_sub_funcs
 
const edm::EDGetTokenT< HcalTrigPrimDigiCollectionhcalToken_
 
edm::Handle< HcalTrigPrimDigiCollectionhcalTowerHandle
 
const double HcalTpEtMin
 
std::map< std::string, TF1 > hf_nvtx_to_PU_sub_funcs
 
const double hfSF
 
const double HFTpEtMin
 
std::map< std::string, TF1 > hgcalEM_nvtx_to_PU_sub_funcs
 
const double HGCalEmTpEtMin
 
std::map< std::string, TF1 > hgcalHad_nvtx_to_PU_sub_funcs
 
const double HGCalHadTpEtMin
 
const double hgcalSF
 
l1t::HGCalTowerBxCollection hgcalTowers
 
edm::Handle< l1t::HGCalTowerBxCollectionhgcalTowersHandle
 
const edm::EDGetTokenT< l1t::HGCalTowerBxCollectionhgcalTowersToken_
 
edm::Handle< l1tp2::CaloTowerCollectionl1CaloTowerHandle
 
const edm::EDGetTokenT< l1tp2::CaloTowerCollectionl1TowerToken_
 
std::map< std::string, TF1 > nHits_to_nvtx_funcs
 
std::vector< edm::ParameterSetnHits_to_nvtx_params
 
std::vector< edm::ParameterSetnvtx_to_PU_sub_params
 
const double puThreshold
 
const double puThresholdEcalMax
 
const double puThresholdEcalMin
 
const double puThresholdHcalMax
 
const double puThresholdHcalMin
 
const double puThresholdHFMax
 
const double puThresholdHFMin
 
const double puThresholdHGCalEMMax
 
const double puThresholdHGCalEMMin
 
const double puThresholdHGCalHadMax
 
const double puThresholdHGCalHadMin
 
const double puThresholdL1eg
 
const bool skipCalibrations
 

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
 
- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- 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: Take the calibrated unclustered ECAL energy and total HCAL energy associated with the L1CaloTower collection output from L1EGammaCrystalsEmulatorProducer: l1CaloTowerCollection, "L1CaloTowerCollection"

as well as HGCal Tower level inputs: BXVector<l1t::HGCalTower> "hgcalTriggerPrimitiveDigiProducer" "tower" "HLT"
and HCAL HF inputs from: edm::SortedCollection<HcalTriggerPrimitiveDigi,edm::StrictWeakOrdering<HcalTriggerPrimitiveDigi> > "simHcalTriggerPrimitiveDigis" "" "HLT"

Implement PU-based calibrations which scale down the ET in the towers based on mapping nTowers with ECAL(HCAL) ET <= defined PU threshold. This value has been shown to be similar between TTbar, QCD, and minBias samples. This allows a prediction of nvtx. Which can be mapped to the total minBias energy in an eta slice of the detector. Subtract the total estimated minBias energy per eta slice divided by nTowers in that eta slice from each trigger tower in that eta slice.

This is all ECAL / HCAL specific or EM vs. Hadronic for HGCal.

Implementation: [Notes on implementation]

Definition at line 63 of file L1TowerCalibrator.cc.

Constructor & Destructor Documentation

◆ L1TowerCalibrator()

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

Definition at line 118 of file L1TowerCalibrator.cc.

References all_nvtx_to_PU_sub_funcs, debug, ecal_nvtx_to_PU_sub_funcs, hcal_nvtx_to_PU_sub_funcs, hf_nvtx_to_PU_sub_funcs, hgcalEM_nvtx_to_PU_sub_funcs, hgcalHad_nvtx_to_PU_sub_funcs, mps_fire::i, l1tPhase2CaloJetEmulator_cfi::iEta, nHits_to_nvtx_funcs, nHits_to_nvtx_params, nvtx_to_PU_sub_params, LaserDQM_cfg::p1, SiStripOfflineCRack_cfg::p2, muonDTDigis_cfi::pset, AlCaHLTBitMon_QueryRunRegistry::string, and parallelization::uint.

119  : HcalTpEtMin(iConfig.getParameter<double>("HcalTpEtMin")),
120  EcalTpEtMin(iConfig.getParameter<double>("EcalTpEtMin")),
121  HGCalHadTpEtMin(iConfig.getParameter<double>("HGCalHadTpEtMin")),
122  HGCalEmTpEtMin(iConfig.getParameter<double>("HGCalEmTpEtMin")),
123  HFTpEtMin(iConfig.getParameter<double>("HFTpEtMin")),
124  puThreshold(iConfig.getParameter<double>("puThreshold")),
125  puThresholdL1eg(iConfig.getParameter<double>("puThresholdL1eg")),
126  puThresholdHcalMin(iConfig.getParameter<double>("puThresholdHcalMin")),
127  puThresholdHcalMax(iConfig.getParameter<double>("puThresholdHcalMax")),
128  puThresholdEcalMin(iConfig.getParameter<double>("puThresholdEcalMin")),
129  puThresholdEcalMax(iConfig.getParameter<double>("puThresholdEcalMax")),
130  puThresholdHGCalEMMin(iConfig.getParameter<double>("puThresholdHGCalEMMin")),
131  puThresholdHGCalEMMax(iConfig.getParameter<double>("puThresholdHGCalEMMax")),
132  puThresholdHGCalHadMin(iConfig.getParameter<double>("puThresholdHGCalHadMin")),
133  puThresholdHGCalHadMax(iConfig.getParameter<double>("puThresholdHGCalHadMax")),
134  puThresholdHFMin(iConfig.getParameter<double>("puThresholdHFMin")),
135  puThresholdHFMax(iConfig.getParameter<double>("puThresholdHFMax")),
136  barrelSF(iConfig.getParameter<double>("barrelSF")),
137  hgcalSF(iConfig.getParameter<double>("hgcalSF")),
138  hfSF(iConfig.getParameter<double>("hfSF")),
139  debug(iConfig.getParameter<bool>("debug")),
140  skipCalibrations(iConfig.getParameter<bool>("skipCalibrations")),
141  l1TowerToken_(consumes<l1tp2::CaloTowerCollection>(iConfig.getParameter<edm::InputTag>("l1CaloTowers"))),
143  consumes<l1t::HGCalTowerBxCollection>(iConfig.getParameter<edm::InputTag>("L1HgcalTowersInputTag"))),
144  hcalToken_(consumes<HcalTrigPrimDigiCollection>(iConfig.getParameter<edm::InputTag>("hcalDigis"))),
145  decoderTag_(esConsumes<CaloTPGTranscoder, CaloTPGRecord>(edm::ESInputTag("", ""))),
146  nHits_to_nvtx_params(iConfig.getParameter<std::vector<edm::ParameterSet> >("nHits_to_nvtx_params")),
147  nvtx_to_PU_sub_params(iConfig.getParameter<std::vector<edm::ParameterSet> >("nvtx_to_PU_sub_params")) {
148  // Initialize the nHits --> nvtx functions
149  for (uint i = 0; i < nHits_to_nvtx_params.size(); i++) {
151  std::string calo = pset->getParameter<std::string>("fit");
152  nHits_to_nvtx_funcs[calo.c_str()] = TF1(calo.c_str(), "[0] + [1] * x");
153  nHits_to_nvtx_funcs[calo.c_str()].SetParameter(0, pset->getParameter<std::vector<double> >("params").at(0));
154  nHits_to_nvtx_funcs[calo.c_str()].SetParameter(1, pset->getParameter<std::vector<double> >("params").at(1));
155 
156  if (debug) {
157  printf(
158  "nHits_to_nvtx_params[%i]\n \
159  fit: %s \n \
160  p1: %f \n \
161  p2 %f \n",
162  i,
163  calo.c_str(),
164  nHits_to_nvtx_funcs[calo.c_str()].GetParameter(0),
165  nHits_to_nvtx_funcs[calo.c_str()].GetParameter(1));
166  }
167  }
168 
169  // Initialize the nvtx --> PU subtraction functions
175 
176  for (uint i = 0; i < nvtx_to_PU_sub_params.size(); i++) {
178  std::string calo = pset->getParameter<std::string>("calo");
179  std::string iEta = pset->getParameter<std::string>("iEta");
180  double p1 = pset->getParameter<std::vector<double> >("params").at(0);
181  double p2 = pset->getParameter<std::vector<double> >("params").at(1);
182 
183  all_nvtx_to_PU_sub_funcs[calo.c_str()][iEta.c_str()] = TF1(calo.c_str(), "[0] + [1] * x");
184  all_nvtx_to_PU_sub_funcs[calo.c_str()][iEta.c_str()].SetParameter(0, p1);
185  all_nvtx_to_PU_sub_funcs[calo.c_str()][iEta.c_str()].SetParameter(1, p2);
186 
187  if (debug) {
188  printf(
189  "nvtx_to_PU_sub_params[%i]\n \
190  sub detector: %s \n \
191  iEta: %s \n \
192  p1: %f \n \
193  p2 %f \n",
194  i,
195  calo.c_str(),
196  iEta.c_str(),
197  p1,
198  p2);
199  }
200  }
201 
202  // Our two outputs, calibrated towers and estimated nvtx for fun
203  produces<l1tp2::CaloTowerCollection>("L1CaloTowerCalibratedCollection");
204  produces<double>("EstimatedNvtx");
205 }
const double puThresholdHGCalEMMin
const double HGCalEmTpEtMin
const double puThresholdHcalMax
const double HFTpEtMin
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
const double puThresholdEcalMax
const double HGCalHadTpEtMin
std::map< std::string, TF1 > nHits_to_nvtx_funcs
std::map< std::string, TF1 > hf_nvtx_to_PU_sub_funcs
const double puThresholdL1eg
const bool skipCalibrations
const edm::ESGetToken< CaloTPGTranscoder, CaloTPGRecord > decoderTag_
const double puThresholdEcalMin
const edm::EDGetTokenT< l1t::HGCalTowerBxCollection > hgcalTowersToken_
const double puThresholdHFMin
const double HcalTpEtMin
std::map< std::string, TF1 > hgcalEM_nvtx_to_PU_sub_funcs
std::vector< edm::ParameterSet > nHits_to_nvtx_params
const double EcalTpEtMin
std::map< std::string, std::map< std::string, TF1 > > all_nvtx_to_PU_sub_funcs
const double puThresholdHGCalEMMax
std::map< std::string, TF1 > hcal_nvtx_to_PU_sub_funcs
const edm::EDGetTokenT< l1tp2::CaloTowerCollection > l1TowerToken_
const double puThresholdHcalMin
std::vector< edm::ParameterSet > nvtx_to_PU_sub_params
std::map< std::string, TF1 > hgcalHad_nvtx_to_PU_sub_funcs
const double puThresholdHFMax
const double puThresholdHGCalHadMax
const edm::EDGetTokenT< HcalTrigPrimDigiCollection > hcalToken_
const double puThreshold
const double puThresholdHGCalHadMin
std::map< std::string, TF1 > ecal_nvtx_to_PU_sub_funcs
Definition: Common.h:9

Member Function Documentation

◆ produce()

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

Implements edm::one::EDProducerBase.

Definition at line 207 of file L1TowerCalibrator.cc.

References funct::abs(), all_nvtx_to_PU_sub_funcs, barrelSF, BXVector< T >::begin(), debug, decoderTag_, l1tp2::CaloTower::ecalTowerEt(), EcalTpEtMin, BXVector< T >::end(), EgHLTOffHistBins_cfi::et, edm::EventSetup::getData(), hcalToken_, l1tp2::CaloTower::hcalTowerEt(), hcalTowerHandle, HcalTpEtMin, hfSF, HFTpEtMin, HGCalEmTpEtMin, HGCalHadTpEtMin, hgcalSF, hgcalTowers, hgcalTowersHandle, hgcalTowersToken_, hit::id, hcalRecHitTable_cff::ieta, iEvent, createfilelist::int, hcalRecHitTable_cff::iphi, ALPAKA_ACCELERATOR_NAMESPACE::vertexFinder::it, l1t::CaloTools::kHFBegin, l1t::CaloTools::kHFEnd, l1CaloTowerHandle, l1TowerToken_, eostools::move(), nHits_to_nvtx_funcs, edm::Handle< T >::product(), puThresholdEcalMax, puThresholdEcalMin, puThresholdHcalMax, puThresholdHcalMin, puThresholdHFMax, puThresholdHFMin, puThresholdHGCalEMMax, puThresholdHGCalEMMin, puThresholdHGCalHadMax, puThresholdHGCalHadMin, l1tp2::CaloTower::setEcalTowerEt(), l1tp2::CaloTower::setHcalTowerEt(), l1tp2::CaloTower::setIsBarrel(), l1tp2::CaloTower::setL1egStandaloneIso(), l1tp2::CaloTower::setL1egStandaloneSS(), l1tp2::CaloTower::setL1egTowerEt(), l1tp2::CaloTower::setL1egTrkIso(), l1tp2::CaloTower::setL1egTrkSS(), l1tp2::CaloTower::setNL1eg(), l1tp2::CaloTower::setTowerEta(), l1tp2::CaloTower::setTowerIEta(), l1tp2::CaloTower::setTowerIPhi(), l1tp2::CaloTower::setTowerPhi(), skipCalibrations, l1tp2::CaloTower::towerEta(), l1t::CaloTools::towerEta(), l1tp2::CaloTower::towerIEta(), l1tp2::CaloTower::towerIPhi(), l1tp2::CaloTower::towerPhi(), and l1t::CaloTools::towerPhi().

207  {
208  // Estimated number of vertices used for calibration estimattion
209  std::unique_ptr<double> EstimatedNvtx(new double);
210  // Calibrated output collection
211  std::unique_ptr<l1tp2::CaloTowerCollection> L1CaloTowerCalibratedCollection(new l1tp2::CaloTowerCollection);
212 
213  // Load the ECAL+HCAL tower sums coming from L1EGammaCrystalsEmulatorProducer.cc
215 
216  // HGCal info
218  hgcalTowers = (*hgcalTowersHandle.product());
219 
220  // HF Tower info
221  iEvent.getByToken(hcalToken_, hcalTowerHandle);
222 
223  // Barrel ECAL (unclustered) and HCAL
224  for (auto& hit : *l1CaloTowerHandle.product()) {
225  l1tp2::CaloTower l1Hit;
226  l1Hit.setEcalTowerEt(hit.ecalTowerEt());
227  l1Hit.setHcalTowerEt(hit.hcalTowerEt());
228  l1Hit.setL1egTowerEt(hit.l1egTowerEt());
229  // Add min ET thresholds for tower ET
230  if (l1Hit.ecalTowerEt() < EcalTpEtMin)
231  l1Hit.setEcalTowerEt(0.0);
232  if (l1Hit.hcalTowerEt() < HcalTpEtMin)
233  l1Hit.setHcalTowerEt(0.0);
234  l1Hit.setTowerIEta(hit.towerIEta());
235  l1Hit.setTowerIPhi(hit.towerIPhi());
236  l1Hit.setTowerEta(hit.towerEta());
237  l1Hit.setTowerPhi(hit.towerPhi());
238  l1Hit.setIsBarrel(hit.isBarrel());
239  l1Hit.setNL1eg(hit.nL1eg());
240  l1Hit.setL1egTrkSS(hit.l1egTrkSS());
241  l1Hit.setL1egTrkIso(hit.l1egTrkIso());
242  l1Hit.setL1egStandaloneSS(hit.l1egStandaloneSS());
243  l1Hit.setL1egStandaloneIso(hit.l1egStandaloneIso());
244 
245  // FIXME There is an error in the L1EGammaCrystalsEmulatorProducer.cc which is
246  // returning towers with minimal ECAL energy, and no HCAL energy with these
247  // iEta/iPhi coordinates and eta = -88.653152 and phi = -99.000000.
248  // Skip these for the time being until the upstream code has been debugged
249  if ((int)l1Hit.towerIEta() == -1016 && (int)l1Hit.towerIPhi() == -962)
250  continue;
251 
252  (*L1CaloTowerCalibratedCollection).push_back(l1Hit);
253  if (debug)
254  printf("Barrel tower iEta %i iPhi %i eta %f phi %f ecal_et %f hcal_et_sum %f\n",
255  (int)l1Hit.towerIEta(),
256  (int)l1Hit.towerIPhi(),
257  l1Hit.towerEta(),
258  l1Hit.towerPhi(),
259  l1Hit.ecalTowerEt(),
260  l1Hit.hcalTowerEt());
261  }
262 
263  // Loop over HGCalTowers and create L1CaloTowers for them and add to collection
264  // This iterator is taken from the PF P2 group
265  // https://github.com/p2l1pfp/cmssw/blob/170808db68038d53794bc65fdc962f8fc337a24d/L1Trigger/Phase2L1ParticleFlow/plugins/L1TPFCaloProducer.cc#L278-L289
266  for (auto it = hgcalTowers.begin(0), ed = hgcalTowers.end(0); it != ed; ++it) {
267  // skip lowest ET towers
268  if (it->etEm() < HGCalEmTpEtMin && it->etHad() < HGCalHadTpEtMin)
269  continue;
270 
271  l1tp2::CaloTower l1Hit;
272  // Set energies normally, but need to zero if below threshold
273  if (it->etEm() < HGCalEmTpEtMin)
274  l1Hit.setEcalTowerEt(0.);
275  else
276  l1Hit.setEcalTowerEt(it->etEm());
277 
278  if (it->etHad() < HGCalHadTpEtMin)
279  l1Hit.setHcalTowerEt(0.);
280  else
281  l1Hit.setHcalTowerEt(it->etHad());
282 
283  l1Hit.setTowerEta(it->eta());
284  l1Hit.setTowerPhi(it->phi());
285  l1Hit.setTowerIEta(-98); // -98 mean HGCal
286  l1Hit.setTowerIPhi(-98);
287  l1Hit.setIsBarrel(false);
288  (*L1CaloTowerCalibratedCollection).push_back(l1Hit);
289  if (debug)
290  printf("HGCal tower iEta %i iPhi %i eta %f phi %f ecal_et %f hcal_et_sum %f\n",
291  (int)l1Hit.towerIEta(),
292  (int)l1Hit.towerIPhi(),
293  l1Hit.towerEta(),
294  l1Hit.towerPhi(),
295  l1Hit.ecalTowerEt(),
296  l1Hit.hcalTowerEt());
297  }
298 
299  // Loop over Hcal HF tower inputs and create L1CaloTowers and add to
300  // L1CaloTowerCalibratedCollection collection
301  const auto& decoder = iSetup.getData(decoderTag_);
302  for (const auto& hit : *hcalTowerHandle.product()) {
303  HcalTrigTowerDetId id = hit.id();
304  double et = decoder.hcaletValue(hit.id(), hit.t0());
305  if (et < HFTpEtMin)
306  continue;
307  // Only doing HF so skip outside range
308  if (abs(id.ieta()) < l1t::CaloTools::kHFBegin)
309  continue;
310  if (abs(id.ieta()) > l1t::CaloTools::kHFEnd)
311  continue;
312 
313  l1tp2::CaloTower l1Hit;
314  l1Hit.setEcalTowerEt(0.);
315  l1Hit.setHcalTowerEt(et);
317  l1Hit.setTowerPhi(l1t::CaloTools::towerPhi(id.ieta(), id.iphi()));
318  l1Hit.setTowerIEta(id.ieta());
319  l1Hit.setTowerIPhi(id.iphi());
320  l1Hit.setIsBarrel(false);
321  (*L1CaloTowerCalibratedCollection).push_back(l1Hit);
322 
323  if (debug)
324  printf("HCAL HF tower iEta %i iPhi %i eta %f phi %f ecal_et %f hcal_et_sum %f\n",
325  (int)l1Hit.towerIEta(),
326  (int)l1Hit.towerIPhi(),
327  l1Hit.towerEta(),
328  l1Hit.towerPhi(),
329  l1Hit.ecalTowerEt(),
330  l1Hit.hcalTowerEt());
331  }
332 
333  // N Tower totals
334  // For mapping to estimated nvtx in event
335  int i_ecal_hits_leq_threshold = 0;
336  int i_hgcalEM_hits_leq_threshold = 0;
337  int i_hcal_hits_leq_threshold = 0;
338  int i_hgcalHad_hits_leq_threshold = 0;
339  int i_hf_hits_leq_threshold = 0;
340 
341  // Loop over the collection containing all hits
342  // and calculate the number of hits falling into the
343  // "less than or equal" nTowers variable which maps to
344  // estimated number of vertices
345  for (auto& l1CaloTower : (*L1CaloTowerCalibratedCollection)) {
346  // Barrel ECAL
347  if (l1CaloTower.ecalTowerEt() > 0. && l1CaloTower.towerIEta() != -98) {
348  if (l1CaloTower.ecalTowerEt() <= puThresholdEcalMax && l1CaloTower.ecalTowerEt() >= puThresholdEcalMin) {
349  i_ecal_hits_leq_threshold++;
350  }
351  }
352 
353  // HGCal EM
354  if (l1CaloTower.ecalTowerEt() > 0. && l1CaloTower.towerIEta() == -98) {
355  if (l1CaloTower.ecalTowerEt() <= puThresholdHGCalEMMax && l1CaloTower.ecalTowerEt() >= puThresholdHGCalEMMin) {
356  i_hgcalEM_hits_leq_threshold++;
357  }
358  }
359 
360  // Barrel HCAL
361  if (l1CaloTower.hcalTowerEt() > 0. && l1CaloTower.towerIEta() != -98 &&
362  abs(l1CaloTower.towerEta()) < 2.0) // abs(eta) < 2 just keeps us out of HF
363  {
364  if (l1CaloTower.hcalTowerEt() <= puThresholdHcalMax && l1CaloTower.hcalTowerEt() >= puThresholdHcalMin) {
365  i_hcal_hits_leq_threshold++;
366  }
367  }
368 
369  // HGCal Had
370  if (l1CaloTower.hcalTowerEt() > 0. && l1CaloTower.towerIEta() == -98) {
371  if (l1CaloTower.hcalTowerEt() <= puThresholdHGCalHadMax && l1CaloTower.hcalTowerEt() >= puThresholdHGCalHadMin) {
372  i_hgcalHad_hits_leq_threshold++;
373  }
374  }
375 
376  // HF
377  if (l1CaloTower.hcalTowerEt() > 0. && l1CaloTower.towerIEta() != -98 &&
378  abs(l1CaloTower.towerEta()) > 2.0) // abs(eta) > 2 keeps us out of barrel HF
379  {
380  if (l1CaloTower.hcalTowerEt() <= puThresholdHFMax && l1CaloTower.hcalTowerEt() >= puThresholdHFMin) {
381  i_hf_hits_leq_threshold++;
382  }
383  }
384  }
385 
386  // For each subdetector, map to the estimated number of vertices
387  double ecal_nvtx = nHits_to_nvtx_funcs["ecal"].Eval(i_ecal_hits_leq_threshold);
388  double hcal_nvtx = nHits_to_nvtx_funcs["hcal"].Eval(i_hcal_hits_leq_threshold);
389  double hgcalEM_nvtx = nHits_to_nvtx_funcs["hgcalEM"].Eval(i_hgcalEM_hits_leq_threshold);
390  double hgcalHad_nvtx = nHits_to_nvtx_funcs["hgcalHad"].Eval(i_hgcalHad_hits_leq_threshold);
391  double hf_nvtx = nHits_to_nvtx_funcs["hf"].Eval(i_hf_hits_leq_threshold);
392  // Make sure all values are >= 0
393  if (ecal_nvtx < 0)
394  ecal_nvtx = 0;
395  if (hcal_nvtx < 0)
396  hcal_nvtx = 0;
397  if (hgcalEM_nvtx < 0)
398  hgcalEM_nvtx = 0;
399  if (hgcalHad_nvtx < 0)
400  hgcalHad_nvtx = 0;
401  if (hf_nvtx < 0)
402  hf_nvtx = 0;
403  // Best estimate is avg of all except HF.
404  // This is b/c HF currently has such poor prediction power, it only degrades the avg result
405  // NEW, with 10_3_X, hgcal and HF has the best results based on the values I took...
406  // skip ECAL and HCAL
407  //*EstimatedNvtx = ( ecal_nvtx + hcal_nvtx + hgcalEM_nvtx + hgcalHad_nvtx + hf_nvtx ) / 3.;
408  *EstimatedNvtx = (hgcalEM_nvtx + hgcalHad_nvtx + hf_nvtx) / 3.;
409 
410  if (debug) {
411  double lumi = iEvent.eventAuxiliary().luminosityBlock();
412  double event = iEvent.eventAuxiliary().event();
413 
414  printf(
415  "L1TowerCalibrater: lumi %.0f evt %.0f nTowers for subdetecters \
416  \nECAL: %i --> nvtx = %.1f \
417  \nHGCal EM: %i --> nvtx = %.1f \
418  \nHCAL: %i --> nvtx = %.1f \
419  \nHGCal Had: %i --> nvtx = %.1f \
420  \nHCAL HF: %i --> nvtx = %.1f \
421  \nEstimated Nvtx = %.1f\n",
422  lumi,
423  event,
424  i_ecal_hits_leq_threshold,
425  ecal_nvtx,
426  i_hgcalEM_hits_leq_threshold,
427  hgcalEM_nvtx,
428  i_hcal_hits_leq_threshold,
429  hcal_nvtx,
430  i_hgcalHad_hits_leq_threshold,
431  hgcalHad_nvtx,
432  i_hf_hits_leq_threshold,
433  hf_nvtx,
434  *EstimatedNvtx);
435  }
436 
437  // Use estimated number of vertices to subtract off PU contributions
438  // to each and every hit. In cases where the energy would go negative,
439  // limit this to zero.
440  if (!skipCalibrations) // skipCalibrations simply passes the towers through
441  {
442  for (auto& l1CaloTower : (*L1CaloTowerCalibratedCollection)) {
443  // Barrel ECAL eta slices
444  if (l1CaloTower.ecalTowerEt() > 0. && l1CaloTower.towerIEta() != -98) {
445  if (abs(l1CaloTower.towerIEta()) <= 3) {
446  l1CaloTower.setEcalTowerEt(l1CaloTower.ecalTowerEt() -
447  all_nvtx_to_PU_sub_funcs["ecal"]["er1to3"].Eval(*EstimatedNvtx) * barrelSF);
448  }
449  if (abs(l1CaloTower.towerIEta()) <= 6 && abs(l1CaloTower.towerIEta()) >= 4) {
450  l1CaloTower.setEcalTowerEt(l1CaloTower.ecalTowerEt() -
451  all_nvtx_to_PU_sub_funcs["ecal"]["er4to6"].Eval(*EstimatedNvtx) * barrelSF);
452  }
453  if (abs(l1CaloTower.towerIEta()) <= 9 && abs(l1CaloTower.towerIEta()) >= 7) {
454  l1CaloTower.setEcalTowerEt(l1CaloTower.ecalTowerEt() -
455  all_nvtx_to_PU_sub_funcs["ecal"]["er7to9"].Eval(*EstimatedNvtx) * barrelSF);
456  }
457  if (abs(l1CaloTower.towerIEta()) <= 12 && abs(l1CaloTower.towerIEta()) >= 10) {
458  l1CaloTower.setEcalTowerEt(l1CaloTower.ecalTowerEt() -
459  all_nvtx_to_PU_sub_funcs["ecal"]["er10to12"].Eval(*EstimatedNvtx) * barrelSF);
460  }
461  if (abs(l1CaloTower.towerIEta()) <= 15 && abs(l1CaloTower.towerIEta()) >= 13) {
462  l1CaloTower.setEcalTowerEt(l1CaloTower.ecalTowerEt() -
463  all_nvtx_to_PU_sub_funcs["ecal"]["er13to15"].Eval(*EstimatedNvtx) * barrelSF);
464  }
465  if (abs(l1CaloTower.towerIEta()) <= 18 && abs(l1CaloTower.towerIEta()) >= 16) {
466  l1CaloTower.setEcalTowerEt(l1CaloTower.ecalTowerEt() -
467  all_nvtx_to_PU_sub_funcs["ecal"]["er16to18"].Eval(*EstimatedNvtx) * barrelSF);
468  }
469  }
470 
471  // HGCal EM eta slices
472  if (l1CaloTower.ecalTowerEt() > 0. && l1CaloTower.towerIEta() == -98) {
473  if (abs(l1CaloTower.towerEta()) <= 1.8) {
474  l1CaloTower.setEcalTowerEt(l1CaloTower.ecalTowerEt() -
475  all_nvtx_to_PU_sub_funcs["hgcalEM"]["er1p4to1p8"].Eval(*EstimatedNvtx) * hgcalSF);
476  }
477  if (abs(l1CaloTower.towerEta()) <= 2.1 && abs(l1CaloTower.towerEta()) > 1.8) {
478  l1CaloTower.setEcalTowerEt(l1CaloTower.ecalTowerEt() -
479  all_nvtx_to_PU_sub_funcs["hgcalEM"]["er1p8to2p1"].Eval(*EstimatedNvtx) * hgcalSF);
480  }
481  if (abs(l1CaloTower.towerEta()) <= 2.4 && abs(l1CaloTower.towerEta()) > 2.1) {
482  l1CaloTower.setEcalTowerEt(l1CaloTower.ecalTowerEt() -
483  all_nvtx_to_PU_sub_funcs["hgcalEM"]["er2p1to2p4"].Eval(*EstimatedNvtx) * hgcalSF);
484  }
485  if (abs(l1CaloTower.towerEta()) <= 2.7 && abs(l1CaloTower.towerEta()) > 2.4) {
486  l1CaloTower.setEcalTowerEt(l1CaloTower.ecalTowerEt() -
487  all_nvtx_to_PU_sub_funcs["hgcalEM"]["er2p4to2p7"].Eval(*EstimatedNvtx) * hgcalSF);
488  }
489  if (abs(l1CaloTower.towerEta()) <= 3.1 && abs(l1CaloTower.towerEta()) > 2.7) {
490  l1CaloTower.setEcalTowerEt(l1CaloTower.ecalTowerEt() -
491  all_nvtx_to_PU_sub_funcs["hgcalEM"]["er2p7to3p1"].Eval(*EstimatedNvtx) * hgcalSF);
492  }
493  }
494 
495  // Barrel HCAL eta slices
496  if (l1CaloTower.hcalTowerEt() > 0. && l1CaloTower.towerIEta() != -98 &&
497  abs(l1CaloTower.towerEta()) < 2.0) // abs(eta) < 2 just keeps us out of HF
498  {
499  if (abs(l1CaloTower.towerIEta()) <= 3) {
500  l1CaloTower.setHcalTowerEt(l1CaloTower.hcalTowerEt() -
501  all_nvtx_to_PU_sub_funcs["hcal"]["er1to3"].Eval(*EstimatedNvtx) * barrelSF);
502  }
503  if (abs(l1CaloTower.towerIEta()) <= 6 && abs(l1CaloTower.towerIEta()) >= 4) {
504  l1CaloTower.setHcalTowerEt(l1CaloTower.hcalTowerEt() -
505  all_nvtx_to_PU_sub_funcs["hcal"]["er4to6"].Eval(*EstimatedNvtx) * barrelSF);
506  }
507  if (abs(l1CaloTower.towerIEta()) <= 9 && abs(l1CaloTower.towerIEta()) >= 7) {
508  l1CaloTower.setHcalTowerEt(l1CaloTower.hcalTowerEt() -
509  all_nvtx_to_PU_sub_funcs["hcal"]["er7to9"].Eval(*EstimatedNvtx) * barrelSF);
510  }
511  if (abs(l1CaloTower.towerIEta()) <= 12 && abs(l1CaloTower.towerIEta()) >= 10) {
512  l1CaloTower.setHcalTowerEt(l1CaloTower.hcalTowerEt() -
513  all_nvtx_to_PU_sub_funcs["hcal"]["er10to12"].Eval(*EstimatedNvtx) * barrelSF);
514  }
515  if (abs(l1CaloTower.towerIEta()) <= 15 && abs(l1CaloTower.towerIEta()) >= 13) {
516  l1CaloTower.setHcalTowerEt(l1CaloTower.hcalTowerEt() -
517  all_nvtx_to_PU_sub_funcs["hcal"]["er13to15"].Eval(*EstimatedNvtx) * barrelSF);
518  }
519  if (abs(l1CaloTower.towerIEta()) <= 18 && abs(l1CaloTower.towerIEta()) >= 16) {
520  l1CaloTower.setHcalTowerEt(l1CaloTower.hcalTowerEt() -
521  all_nvtx_to_PU_sub_funcs["hcal"]["er16to18"].Eval(*EstimatedNvtx) * barrelSF);
522  }
523  }
524 
525  // HGCal Had eta slices
526  if (l1CaloTower.hcalTowerEt() > 0. && l1CaloTower.towerIEta() == -98) {
527  if (abs(l1CaloTower.towerEta()) <= 1.8) {
528  l1CaloTower.setHcalTowerEt(l1CaloTower.hcalTowerEt() -
529  all_nvtx_to_PU_sub_funcs["hgcalHad"]["er1p4to1p8"].Eval(*EstimatedNvtx) * hgcalSF);
530  }
531  if (abs(l1CaloTower.towerEta()) <= 2.1 && abs(l1CaloTower.towerEta()) > 1.8) {
532  l1CaloTower.setHcalTowerEt(l1CaloTower.hcalTowerEt() -
533  all_nvtx_to_PU_sub_funcs["hgcalHad"]["er1p8to2p1"].Eval(*EstimatedNvtx) * hgcalSF);
534  }
535  if (abs(l1CaloTower.towerEta()) <= 2.4 && abs(l1CaloTower.towerEta()) > 2.1) {
536  l1CaloTower.setHcalTowerEt(l1CaloTower.hcalTowerEt() -
537  all_nvtx_to_PU_sub_funcs["hgcalHad"]["er2p1to2p4"].Eval(*EstimatedNvtx) * hgcalSF);
538  }
539  if (abs(l1CaloTower.towerEta()) <= 2.7 && abs(l1CaloTower.towerEta()) > 2.4) {
540  l1CaloTower.setHcalTowerEt(l1CaloTower.hcalTowerEt() -
541  all_nvtx_to_PU_sub_funcs["hgcalHad"]["er2p4to2p7"].Eval(*EstimatedNvtx) * hgcalSF);
542  }
543  if (abs(l1CaloTower.towerEta()) <= 3.1 && abs(l1CaloTower.towerEta()) > 2.7) {
544  l1CaloTower.setHcalTowerEt(l1CaloTower.hcalTowerEt() -
545  all_nvtx_to_PU_sub_funcs["hgcalHad"]["er2p7to3p1"].Eval(*EstimatedNvtx) * hgcalSF);
546  }
547  }
548 
549  // HF eta slices
550  if (l1CaloTower.hcalTowerEt() > 0. && l1CaloTower.towerIEta() != -98 &&
551  abs(l1CaloTower.towerEta()) > 2.0) // abs(eta) > 2 keeps us out of barrel HF
552  {
553  if (abs(l1CaloTower.towerIEta()) <= 33 && abs(l1CaloTower.towerIEta()) >= 29) {
554  l1CaloTower.setHcalTowerEt(l1CaloTower.hcalTowerEt() -
555  all_nvtx_to_PU_sub_funcs["hf"]["er29to33"].Eval(*EstimatedNvtx) * hfSF);
556  }
557  if (abs(l1CaloTower.towerIEta()) <= 37 && abs(l1CaloTower.towerIEta()) >= 34) {
558  l1CaloTower.setHcalTowerEt(l1CaloTower.hcalTowerEt() -
559  all_nvtx_to_PU_sub_funcs["hf"]["er34to37"].Eval(*EstimatedNvtx) * hfSF);
560  }
561  if (abs(l1CaloTower.towerIEta()) <= 41 && abs(l1CaloTower.towerIEta()) >= 38) {
562  l1CaloTower.setHcalTowerEt(l1CaloTower.hcalTowerEt() -
563  all_nvtx_to_PU_sub_funcs["hf"]["er38to41"].Eval(*EstimatedNvtx) * hfSF);
564  }
565  }
566 
567  // Make sure none are negative
568  if (l1CaloTower.ecalTowerEt() < 0.)
569  l1CaloTower.setEcalTowerEt(0.);
570  if (l1CaloTower.hcalTowerEt() < 0.)
571  l1CaloTower.setHcalTowerEt(0.);
572  }
573  }
574 
575  iEvent.put(std::move(EstimatedNvtx), "EstimatedNvtx");
576  iEvent.put(std::move(L1CaloTowerCalibratedCollection), "L1CaloTowerCalibratedCollection");
577 }
static float towerEta(int ieta)
Definition: CaloTools.cc:201
const double puThresholdHGCalEMMin
const double HGCalEmTpEtMin
float ecalTowerEt() const
Definition: CaloTower.h:35
const double puThresholdHcalMax
const double HFTpEtMin
const double puThresholdEcalMax
static float towerPhi(int ieta, int iphi)
Definition: CaloTools.cc:208
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
const double HGCalHadTpEtMin
std::map< std::string, TF1 > nHits_to_nvtx_funcs
const bool skipCalibrations
void setEcalTowerEt(float et)
Definition: CaloTower.h:49
int towerIPhi() const
Definition: CaloTower.h:37
void setTowerIPhi(int iPhi)
Definition: CaloTower.h:51
T const * product() const
Definition: Handle.h:70
std::vector< CaloTower > CaloTowerCollection
Definition: CaloTower.h:83
void setL1egStandaloneIso(int staIso)
Definition: CaloTower.h:60
const edm::ESGetToken< CaloTPGTranscoder, CaloTPGRecord > decoderTag_
const double puThresholdEcalMin
void setL1egTrkIso(int trkIso)
Definition: CaloTower.h:58
const edm::EDGetTokenT< l1t::HGCalTowerBxCollection > hgcalTowersToken_
const double puThresholdHFMin
static const int kHFBegin
Definition: CaloTools.h:39
const double HcalTpEtMin
const_iterator begin(int bx) const
void setHcalTowerEt(float et)
Definition: CaloTower.h:50
void setTowerIEta(int iEta)
Definition: CaloTower.h:52
const double EcalTpEtMin
int iEvent
Definition: GenABIO.cc:224
void setTowerPhi(float phi)
Definition: CaloTower.h:53
std::map< std::string, std::map< std::string, TF1 > > all_nvtx_to_PU_sub_funcs
const double puThresholdHGCalEMMax
static const int kHFEnd
Definition: CaloTools.h:40
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
int towerIEta() const
Definition: CaloTower.h:38
void setL1egTrkSS(int trkSS)
Definition: CaloTower.h:57
void setIsBarrel(bool isBarrel)
Definition: CaloTower.h:61
void setTowerEta(float eta)
Definition: CaloTower.h:54
unsigned int id
const edm::EDGetTokenT< l1tp2::CaloTowerCollection > l1TowerToken_
const double puThresholdHcalMin
float towerPhi() const
Definition: CaloTower.h:39
edm::Handle< l1tp2::CaloTowerCollection > l1CaloTowerHandle
float hcalTowerEt() const
Definition: CaloTower.h:36
void setL1egTowerEt(float et)
Definition: CaloTower.h:55
edm::Handle< l1t::HGCalTowerBxCollection > hgcalTowersHandle
const_iterator end(int bx) const
const double puThresholdHFMax
const double puThresholdHGCalHadMax
const edm::EDGetTokenT< HcalTrigPrimDigiCollection > hcalToken_
const double puThresholdHGCalHadMin
edm::Handle< HcalTrigPrimDigiCollection > hcalTowerHandle
void setNL1eg(int n)
Definition: CaloTower.h:56
float towerEta() const
Definition: CaloTower.h:40
l1t::HGCalTowerBxCollection hgcalTowers
void setL1egStandaloneSS(int staSS)
Definition: CaloTower.h:59
def move(src, dest)
Definition: eostools.py:511
Definition: event.py:1

Member Data Documentation

◆ all_nvtx_to_PU_sub_funcs

std::map<std::string, std::map<std::string, TF1> > L1TowerCalibrator::all_nvtx_to_PU_sub_funcs
private

Definition at line 115 of file L1TowerCalibrator.cc.

Referenced by L1TowerCalibrator(), and produce().

◆ barrelSF

const double L1TowerCalibrator::barrelSF
private

Definition at line 87 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ debug

const bool L1TowerCalibrator::debug
private

◆ decoderTag_

const edm::ESGetToken<CaloTPGTranscoder, CaloTPGRecord> L1TowerCalibrator::decoderTag_
private

Definition at line 102 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ ecal_nvtx_to_PU_sub_funcs

std::map<std::string, TF1> L1TowerCalibrator::ecal_nvtx_to_PU_sub_funcs
private

Definition at line 110 of file L1TowerCalibrator.cc.

Referenced by L1TowerCalibrator().

◆ EcalTpEtMin

const double L1TowerCalibrator::EcalTpEtMin
private

Definition at line 71 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ hcal_nvtx_to_PU_sub_funcs

std::map<std::string, TF1> L1TowerCalibrator::hcal_nvtx_to_PU_sub_funcs
private

Definition at line 111 of file L1TowerCalibrator.cc.

Referenced by L1TowerCalibrator().

◆ hcalToken_

const edm::EDGetTokenT<HcalTrigPrimDigiCollection> L1TowerCalibrator::hcalToken_
private

Definition at line 100 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ hcalTowerHandle

edm::Handle<HcalTrigPrimDigiCollection> L1TowerCalibrator::hcalTowerHandle
private

Definition at line 101 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ HcalTpEtMin

const double L1TowerCalibrator::HcalTpEtMin
private

Definition at line 70 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ hf_nvtx_to_PU_sub_funcs

std::map<std::string, TF1> L1TowerCalibrator::hf_nvtx_to_PU_sub_funcs
private

Definition at line 114 of file L1TowerCalibrator.cc.

Referenced by L1TowerCalibrator().

◆ hfSF

const double L1TowerCalibrator::hfSF
private

Definition at line 89 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ HFTpEtMin

const double L1TowerCalibrator::HFTpEtMin
private

Definition at line 74 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ hgcalEM_nvtx_to_PU_sub_funcs

std::map<std::string, TF1> L1TowerCalibrator::hgcalEM_nvtx_to_PU_sub_funcs
private

Definition at line 112 of file L1TowerCalibrator.cc.

Referenced by L1TowerCalibrator().

◆ HGCalEmTpEtMin

const double L1TowerCalibrator::HGCalEmTpEtMin
private

Definition at line 73 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ hgcalHad_nvtx_to_PU_sub_funcs

std::map<std::string, TF1> L1TowerCalibrator::hgcalHad_nvtx_to_PU_sub_funcs
private

Definition at line 113 of file L1TowerCalibrator.cc.

Referenced by L1TowerCalibrator().

◆ HGCalHadTpEtMin

const double L1TowerCalibrator::HGCalHadTpEtMin
private

Definition at line 72 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ hgcalSF

const double L1TowerCalibrator::hgcalSF
private

Definition at line 88 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ hgcalTowers

l1t::HGCalTowerBxCollection L1TowerCalibrator::hgcalTowers
private

Definition at line 98 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ hgcalTowersHandle

edm::Handle<l1t::HGCalTowerBxCollection> L1TowerCalibrator::hgcalTowersHandle
private

Definition at line 97 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ hgcalTowersToken_

const edm::EDGetTokenT<l1t::HGCalTowerBxCollection> L1TowerCalibrator::hgcalTowersToken_
private

Definition at line 96 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ l1CaloTowerHandle

edm::Handle<l1tp2::CaloTowerCollection> L1TowerCalibrator::l1CaloTowerHandle
private

Definition at line 94 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ l1TowerToken_

const edm::EDGetTokenT<l1tp2::CaloTowerCollection> L1TowerCalibrator::l1TowerToken_
private

Definition at line 93 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ nHits_to_nvtx_funcs

std::map<std::string, TF1> L1TowerCalibrator::nHits_to_nvtx_funcs
private

Definition at line 106 of file L1TowerCalibrator.cc.

Referenced by L1TowerCalibrator(), and produce().

◆ nHits_to_nvtx_params

std::vector<edm::ParameterSet> L1TowerCalibrator::nHits_to_nvtx_params
private

Definition at line 105 of file L1TowerCalibrator.cc.

Referenced by L1TowerCalibrator().

◆ nvtx_to_PU_sub_params

std::vector<edm::ParameterSet> L1TowerCalibrator::nvtx_to_PU_sub_params
private

Definition at line 109 of file L1TowerCalibrator.cc.

Referenced by L1TowerCalibrator().

◆ puThreshold

const double L1TowerCalibrator::puThreshold
private

Definition at line 75 of file L1TowerCalibrator.cc.

◆ puThresholdEcalMax

const double L1TowerCalibrator::puThresholdEcalMax
private

Definition at line 80 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ puThresholdEcalMin

const double L1TowerCalibrator::puThresholdEcalMin
private

Definition at line 79 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ puThresholdHcalMax

const double L1TowerCalibrator::puThresholdHcalMax
private

Definition at line 78 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ puThresholdHcalMin

const double L1TowerCalibrator::puThresholdHcalMin
private

Definition at line 77 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ puThresholdHFMax

const double L1TowerCalibrator::puThresholdHFMax
private

Definition at line 86 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ puThresholdHFMin

const double L1TowerCalibrator::puThresholdHFMin
private

Definition at line 85 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ puThresholdHGCalEMMax

const double L1TowerCalibrator::puThresholdHGCalEMMax
private

Definition at line 82 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ puThresholdHGCalEMMin

const double L1TowerCalibrator::puThresholdHGCalEMMin
private

Definition at line 81 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ puThresholdHGCalHadMax

const double L1TowerCalibrator::puThresholdHGCalHadMax
private

Definition at line 84 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ puThresholdHGCalHadMin

const double L1TowerCalibrator::puThresholdHGCalHadMin
private

Definition at line 83 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ puThresholdL1eg

const double L1TowerCalibrator::puThresholdL1eg
private

Definition at line 76 of file L1TowerCalibrator.cc.

◆ skipCalibrations

const bool L1TowerCalibrator::skipCalibrations
private

Definition at line 91 of file L1TowerCalibrator.cc.

Referenced by produce().