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::EDProducer edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 L1TowerCalibrator (const edm::ParameterSet &)
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDProducer () 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 &&)=default
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESProxyIndex > 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
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, 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::ESRecordsToProxyIndices 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
 
double barrelSF
 
bool debug
 
edm::ESGetToken< CaloTPGTranscoder, CaloTPGRecorddecoderTag_
 
std::map< std::string, TF1 > ecal_nvtx_to_PU_sub_funcs
 
double EcalTpEtMin
 
std::map< std::string, TF1 > hcal_nvtx_to_PU_sub_funcs
 
edm::EDGetTokenT< HcalTrigPrimDigiCollectionhcalToken_
 
edm::Handle< HcalTrigPrimDigiCollectionhcalTowerHandle
 
double HcalTpEtMin
 
std::map< std::string, TF1 > hf_nvtx_to_PU_sub_funcs
 
double hfSF
 
double HFTpEtMin
 
std::map< std::string, TF1 > hgcalEM_nvtx_to_PU_sub_funcs
 
double HGCalEmTpEtMin
 
std::map< std::string, TF1 > hgcalHad_nvtx_to_PU_sub_funcs
 
double HGCalHadTpEtMin
 
double hgcalSF
 
l1t::HGCalTowerBxCollection hgcalTowers
 
edm::Handle< l1t::HGCalTowerBxCollectionhgcalTowersHandle
 
edm::EDGetTokenT< l1t::HGCalTowerBxCollectionhgcalTowersToken_
 
edm::Handle< l1tp2::CaloTowerCollectionl1CaloTowerHandle
 
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
 
double puThreshold
 
double puThresholdEcalMax
 
double puThresholdEcalMin
 
double puThresholdHcalMax
 
double puThresholdHcalMin
 
double puThresholdHFMax
 
double puThresholdHFMin
 
double puThresholdHGCalEMMax
 
double puThresholdHGCalEMMin
 
double puThresholdHGCalHadMax
 
double puThresholdHGCalHadMin
 
double puThresholdL1eg
 
bool skipCalibrations
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
- Public Types inherited from edm::ProducerBase
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::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsInputProcessBlocks ()
 
static bool wantsProcessBlocks ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- Protected Member Functions inherited from edm::ProducerBase
template<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 declare what type of product will make and with which optional label More...
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
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)
 
template<Transition B>
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 (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< B > consumes (edm::InputTag tag) noexcept
 
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 ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes () noexcept
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag) noexcept
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 

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.

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 }

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, L1TowerCalibrationProducer_cfi::iEta, nHits_to_nvtx_funcs, nHits_to_nvtx_params, nvtx_to_PU_sub_params, p1, p2, muonDTDigis_cfi::pset, AlCaHLTBitMon_QueryRunRegistry::string, and parallelization::uint.

Member Function Documentation

◆ produce()

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

Implements edm::EDProducer.

Definition at line 207 of file L1TowerCalibrator.cc.

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 }

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, LEDCalibrationChannels::ieta, iEvent, createfilelist::int, LEDCalibrationChannels::iphi, 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().

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

double L1TowerCalibrator::barrelSF
private

Definition at line 87 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ debug

bool L1TowerCalibrator::debug
private

◆ decoderTag_

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

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_

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

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

double L1TowerCalibrator::hfSF
private

Definition at line 89 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ HFTpEtMin

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

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

double L1TowerCalibrator::HGCalHadTpEtMin
private

Definition at line 72 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ hgcalSF

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_

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_

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

double L1TowerCalibrator::puThreshold
private

Definition at line 75 of file L1TowerCalibrator.cc.

◆ puThresholdEcalMax

double L1TowerCalibrator::puThresholdEcalMax
private

Definition at line 80 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ puThresholdEcalMin

double L1TowerCalibrator::puThresholdEcalMin
private

Definition at line 79 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ puThresholdHcalMax

double L1TowerCalibrator::puThresholdHcalMax
private

Definition at line 78 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ puThresholdHcalMin

double L1TowerCalibrator::puThresholdHcalMin
private

Definition at line 77 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ puThresholdHFMax

double L1TowerCalibrator::puThresholdHFMax
private

Definition at line 86 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ puThresholdHFMin

double L1TowerCalibrator::puThresholdHFMin
private

Definition at line 85 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ puThresholdHGCalEMMax

double L1TowerCalibrator::puThresholdHGCalEMMax
private

Definition at line 82 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ puThresholdHGCalEMMin

double L1TowerCalibrator::puThresholdHGCalEMMin
private

Definition at line 81 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ puThresholdHGCalHadMax

double L1TowerCalibrator::puThresholdHGCalHadMax
private

Definition at line 84 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ puThresholdHGCalHadMin

double L1TowerCalibrator::puThresholdHGCalHadMin
private

Definition at line 83 of file L1TowerCalibrator.cc.

Referenced by produce().

◆ puThresholdL1eg

double L1TowerCalibrator::puThresholdL1eg
private

Definition at line 76 of file L1TowerCalibrator.cc.

◆ skipCalibrations

bool L1TowerCalibrator::skipCalibrations
private

Definition at line 91 of file L1TowerCalibrator.cc.

Referenced by produce().

L1TowerCalibrator::puThresholdHcalMax
double puThresholdHcalMax
Definition: L1TowerCalibrator.cc:78
l1tp2::CaloTower::towerIEta
int towerIEta() const
Definition: CaloTower.h:38
mps_fire.i
i
Definition: mps_fire.py:428
edm::ESInputTag
Definition: ESInputTag.h:87
l1tp2::CaloTower::towerEta
float towerEta() const
Definition: CaloTower.h:40
hit::id
unsigned int id
Definition: SiStripHitEffFromCalibTree.cc:92
L1TowerCalibrator::hgcalTowers
l1t::HGCalTowerBxCollection hgcalTowers
Definition: L1TowerCalibrator.cc:98
edm::Handle::product
T const * product() const
Definition: Handle.h:70
l1t::CaloTools::kHFBegin
static const int kHFBegin
Definition: CaloTools.h:39
l1tp2::CaloTower::setTowerPhi
void setTowerPhi(float phi)
Definition: CaloTower.h:53
L1TowerCalibrator::HGCalEmTpEtMin
double HGCalEmTpEtMin
Definition: L1TowerCalibrator.cc:73
L1TowerCalibrator::puThresholdHcalMin
double puThresholdHcalMin
Definition: L1TowerCalibrator.cc:77
l1tp2::CaloTower::setL1egTowerEt
void setL1egTowerEt(float et)
Definition: CaloTower.h:55
L1TowerCalibrator::hgcalEM_nvtx_to_PU_sub_funcs
std::map< std::string, TF1 > hgcalEM_nvtx_to_PU_sub_funcs
Definition: L1TowerCalibrator.cc:112
L1TowerCalibrator::nHits_to_nvtx_params
std::vector< edm::ParameterSet > nHits_to_nvtx_params
Definition: L1TowerCalibrator.cc:105
l1tp2::CaloTower::setHcalTowerEt
void setHcalTowerEt(float et)
Definition: CaloTower.h:50
l1t::CaloTools::kHFEnd
static const int kHFEnd
Definition: CaloTools.h:40
L1TowerCalibrator::l1TowerToken_
edm::EDGetTokenT< l1tp2::CaloTowerCollection > l1TowerToken_
Definition: L1TowerCalibrator.cc:93
L1TowerCalibrator::hgcalSF
double hgcalSF
Definition: L1TowerCalibrator.cc:88
L1TowerCalibrator::hf_nvtx_to_PU_sub_funcs
std::map< std::string, TF1 > hf_nvtx_to_PU_sub_funcs
Definition: L1TowerCalibrator.cc:114
parallelization.uint
uint
Definition: parallelization.py:124
L1TowerCalibrator::barrelSF
double barrelSF
Definition: L1TowerCalibrator.cc:87
l1tp2::CaloTowerCollection
std::vector< CaloTower > CaloTowerCollection
Definition: CaloTower.h:83
L1TowerCalibrator::skipCalibrations
bool skipCalibrations
Definition: L1TowerCalibrator.cc:91
LEDCalibrationChannels.iphi
iphi
Definition: LEDCalibrationChannels.py:64
l1t::CaloTools::towerPhi
static float towerPhi(int ieta, int iphi)
Definition: CaloTools.cc:208
L1TowerCalibrator::puThresholdEcalMin
double puThresholdEcalMin
Definition: L1TowerCalibrator.cc:79
p2
double p2[4]
Definition: TauolaWrapper.h:90
l1tp2::CaloTower::setL1egStandaloneIso
void setL1egStandaloneIso(int staIso)
Definition: CaloTower.h:60
BXVector::begin
const_iterator begin(int bx) const
L1TowerCalibrator::puThresholdHGCalEMMin
double puThresholdHGCalEMMin
Definition: L1TowerCalibrator.cc:81
l1tp2::CaloTower
Definition: CaloTower.h:16
L1TowerCalibrator::all_nvtx_to_PU_sub_funcs
std::map< std::string, std::map< std::string, TF1 > > all_nvtx_to_PU_sub_funcs
Definition: L1TowerCalibrator.cc:115
LEDCalibrationChannels.ieta
ieta
Definition: LEDCalibrationChannels.py:63
L1TowerCalibrator::hgcalTowersToken_
edm::EDGetTokenT< l1t::HGCalTowerBxCollection > hgcalTowersToken_
Definition: L1TowerCalibrator.cc:96
BXVector::end
const_iterator end(int bx) const
l1tp2::CaloTower::ecalTowerEt
float ecalTowerEt() const
Definition: CaloTower.h:35
edm::ParameterSet
Definition: ParameterSet.h:47
L1TowerCalibrator::puThresholdEcalMax
double puThresholdEcalMax
Definition: L1TowerCalibrator.cc:80
L1TowerCalibrator::nvtx_to_PU_sub_params
std::vector< edm::ParameterSet > nvtx_to_PU_sub_params
Definition: L1TowerCalibrator.cc:109
l1tp2::CaloTower::setTowerEta
void setTowerEta(float eta)
Definition: CaloTower.h:54
createfilelist.int
int
Definition: createfilelist.py:10
l1tp2::CaloTower::setEcalTowerEt
void setEcalTowerEt(float et)
Definition: CaloTower.h:49
iEvent
int iEvent
Definition: GenABIO.cc:224
l1tp2::CaloTower::towerIPhi
int towerIPhi() const
Definition: CaloTower.h:37
L1TowerCalibrator::puThresholdHGCalEMMax
double puThresholdHGCalEMMax
Definition: L1TowerCalibrator.cc:82
l1tp2::CaloTower::setL1egStandaloneSS
void setL1egStandaloneSS(int staSS)
Definition: CaloTower.h:59
L1TowerCalibrator::puThresholdHGCalHadMin
double puThresholdHGCalHadMin
Definition: L1TowerCalibrator.cc:83
l1tp2::CaloTower::setTowerIPhi
void setTowerIPhi(int iPhi)
Definition: CaloTower.h:51
p1
double p1[4]
Definition: TauolaWrapper.h:89
EgHLTOffHistBins_cfi.et
et
Definition: EgHLTOffHistBins_cfi.py:8
l1tp2::CaloTower::towerPhi
float towerPhi() const
Definition: CaloTower.h:39
L1TowerCalibrator::puThresholdHFMax
double puThresholdHFMax
Definition: L1TowerCalibrator.cc:86
L1TowerCalibrator::hcal_nvtx_to_PU_sub_funcs
std::map< std::string, TF1 > hcal_nvtx_to_PU_sub_funcs
Definition: L1TowerCalibrator.cc:111
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
L1TowerCalibrator::puThresholdL1eg
double puThresholdL1eg
Definition: L1TowerCalibrator.cc:76
L1TowerCalibrator::hgcalTowersHandle
edm::Handle< l1t::HGCalTowerBxCollection > hgcalTowersHandle
Definition: L1TowerCalibrator.cc:97
edm::EventSetup::getData
bool getData(T &iHolder) const
Definition: EventSetup.h:127
L1TowerCalibrator::l1CaloTowerHandle
edm::Handle< l1tp2::CaloTowerCollection > l1CaloTowerHandle
Definition: L1TowerCalibrator.cc:94
eostools.move
def move(src, dest)
Definition: eostools.py:511
l1t::CaloTools::towerEta
static float towerEta(int ieta)
Definition: CaloTools.cc:201
l1tp2::CaloTower::setIsBarrel
void setIsBarrel(bool isBarrel)
Definition: CaloTower.h:61
L1TowerCalibrator::decoderTag_
edm::ESGetToken< CaloTPGTranscoder, CaloTPGRecord > decoderTag_
Definition: L1TowerCalibrator.cc:102
L1TowerCalibrator::hfSF
double hfSF
Definition: L1TowerCalibrator.cc:89
l1tp2::CaloTower::setL1egTrkIso
void setL1egTrkIso(int trkIso)
Definition: CaloTower.h:58
l1tp2::CaloTower::setNL1eg
void setNL1eg(int n)
Definition: CaloTower.h:56
L1TowerCalibrator::hcalTowerHandle
edm::Handle< HcalTrigPrimDigiCollection > hcalTowerHandle
Definition: L1TowerCalibrator.cc:101
l1tp2::CaloTower::hcalTowerEt
float hcalTowerEt() const
Definition: CaloTower.h:36
L1TowerCalibrator::ecal_nvtx_to_PU_sub_funcs
std::map< std::string, TF1 > ecal_nvtx_to_PU_sub_funcs
Definition: L1TowerCalibrator.cc:110
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
L1TowerCalibrationProducer_cfi.iEta
iEta
Definition: L1TowerCalibrationProducer_cfi.py:60
L1TowerCalibrator::puThreshold
double puThreshold
Definition: L1TowerCalibrator.cc:75
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
calo
Definition: Common.h:9
l1tp2::CaloTower::setL1egTrkSS
void setL1egTrkSS(int trkSS)
Definition: CaloTower.h:57
L1TowerCalibrator::debug
bool debug
Definition: L1TowerCalibrator.cc:90
L1TowerCalibrator::puThresholdHFMin
double puThresholdHFMin
Definition: L1TowerCalibrator.cc:85
L1TowerCalibrator::hcalToken_
edm::EDGetTokenT< HcalTrigPrimDigiCollection > hcalToken_
Definition: L1TowerCalibrator.cc:100
L1TowerCalibrator::hgcalHad_nvtx_to_PU_sub_funcs
std::map< std::string, TF1 > hgcalHad_nvtx_to_PU_sub_funcs
Definition: L1TowerCalibrator.cc:113
event
Definition: event.py:1
L1TowerCalibrator::HGCalHadTpEtMin
double HGCalHadTpEtMin
Definition: L1TowerCalibrator.cc:72
lumi
Definition: LumiSectionData.h:20
L1TowerCalibrator::puThresholdHGCalHadMax
double puThresholdHGCalHadMax
Definition: L1TowerCalibrator.cc:84
l1tp2::CaloTower::setTowerIEta
void setTowerIEta(int iEta)
Definition: CaloTower.h:52
L1TowerCalibrator::HFTpEtMin
double HFTpEtMin
Definition: L1TowerCalibrator.cc:74
edm::InputTag
Definition: InputTag.h:15
L1TowerCalibrator::HcalTpEtMin
double HcalTpEtMin
Definition: L1TowerCalibrator.cc:70
L1TowerCalibrator::nHits_to_nvtx_funcs
std::map< std::string, TF1 > nHits_to_nvtx_funcs
Definition: L1TowerCalibrator.cc:106
hit
Definition: SiStripHitEffFromCalibTree.cc:88
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
HcalTrigTowerDetId
Definition: HcalTrigTowerDetId.h:14
L1TowerCalibrator::EcalTpEtMin
double EcalTpEtMin
Definition: L1TowerCalibrator.cc:71