CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
AlCaHcalIsotrkProducer Class Reference
Inheritance diagram for AlCaHcalIsotrkProducer:
edm::stream::EDProducer< edm::GlobalCache< alcaHcalIsoTracks::Counters > >

Public Member Functions

 AlCaHcalIsotrkProducer (edm::ParameterSet const &, const alcaHcalIsoTracks::Counters *)
 
void endStream () override
 
void produce (edm::Event &, edm::EventSetup const &) override
 
 ~AlCaHcalIsotrkProducer () override=default
 
- Public Member Functions inherited from edm::stream::EDProducer< edm::GlobalCache< alcaHcalIsoTracks::Counters > >
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
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
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
static void globalEndJob (const alcaHcalIsoTracks::Counters *counters)
 
static std::unique_ptr
< alcaHcalIsoTracks::Counters
initializeGlobalCache (edm::ParameterSet const &)
 

Private Member Functions

void beginRun (edm::Run const &, edm::EventSetup const &) override
 
double dR (math::XYZTLorentzVector &, math::XYZTLorentzVector &)
 
void endRun (edm::Run const &, edm::EventSetup const &) override
 
double eThreshold (const DetId &id, const CaloGeometry *geo) const
 
std::array< int, 3 > getProducts (int goodPV, double eventWeight, std::vector< math::XYZTLorentzVector > &vecL1, std::vector< math::XYZTLorentzVector > &vecL3, math::XYZPoint &leadPV, std::vector< spr::propagatedTrackDirection > &trkCaloDirections, std::vector< spr::propagatedTrackID > &trkCaloDets, const CaloGeometry *geo, const CaloTopology *topo, const HcalTopology *theHBHETopology, const EcalChannelStatus *theEcalChStatus, const EcalSeverityLevelAlgo *theEcalSevlv, edm::Handle< EcalRecHitCollection > &barrelRecHitsHandle, edm::Handle< EcalRecHitCollection > &endcapRecHitsHandle, edm::Handle< HBHERecHitCollection > &hbhe, edm::Handle< CaloTowerCollection > &towerHandle, const edm::Handle< reco::GenParticleCollection > &genParticles, const HcalRespCorrs *respCorrs, const edm::Handle< reco::MuonCollection > &muonh, std::vector< HcalIsoTrkCalibVariables > &hocalib, HcalIsoTrkEventVariables &hocalibEvent)
 
DetId newId (const DetId &)
 
bool notaMuon (const reco::Track *pTrack0, const edm::Handle< reco::MuonCollection > &muonh)
 
double rhoh (const edm::Handle< CaloTowerCollection > &)
 
void storeEnergy (const HcalRespCorrs *respCorrs, const std::vector< DetId > &ids, std::vector< double > &edet, double &eHcal, std::vector< unsigned int > &detIds, std::vector< double > &hitEnergies)
 
std::pair< double, double > storeEnergy (const HcalRespCorrs *respCorrs, edm::Handle< HBHERecHitCollection > &hbhe, const std::vector< DetId > &ids, std::vector< double > &hitEnergy1, std::vector< double > &hitEnergy2)
 
double trackP (const reco::Track *, const edm::Handle< reco::GenParticleCollection > &)
 

Private Attributes

double a_charIsoR_
 
double a_coneR1_
 
double a_coneR2_
 
const double a_coneR_
 
const double a_mipR2_
 
const double a_mipR3_
 
const double a_mipR4_
 
const double a_mipR5_
 
const double a_mipR_
 
const bool collapseDepth_
 
const std::vector< int > debEvents_
 
bool debug_
 
const double eEcalMax_
 
const double eIsolate1_
 
const double eIsolate2_
 
std::vector< double > etabins_
 
double etadist_
 
double etahalfdist_
 
const double hcalScale_
 
const HcalDDDRecConstantshdc_
 
const bool hep17_
 
const double hitEthrEB_
 
const double hitEthrEE0_
 
const double hitEthrEE1_
 
const double hitEthrEE2_
 
const double hitEthrEE3_
 
const double hitEthrEEHi_
 
const double hitEthrEELo_
 
HLTConfigProvider hltConfig_
 
const bool ignoreTrigger_
 
const std::string l1Filter_
 
l1t::L1TGlobalUtill1GtUtils_
 
const std::string l1TrigName_
 
const std::string l2Filter_
 
const std::string l3Filter_
 
const std::string labelEB_
 
const std::string labelEE_
 
const std::string labelGenTrack_
 
const std::string labelHBHE_
 
const std::string labelIsoTkEvtVar_
 
const std::string labelIsoTkVar_
 
const std::string labelRecVtx_
 
const std::string labelTower_
 
const double maxRestrictionP_
 
unsigned int nAll_
 
const std::vector< int > newDepth_
 
unsigned int nGood_
 
unsigned int nRange_
 
unsigned int nRun_
 
std::vector< int > oldDepth_
 
std::vector< int > oldDet_
 
std::vector< int > oldEta_
 
const std::vector< int > oldID_
 
std::vector< double > phibins_
 
double phidist_
 
double phihalfdist_
 
const std::string processName_
 
const double pTrackHigh_
 
const double pTrackLow_
 
const double pTrackMin_
 
spr::trackSelectionParameters selectionParameter_
 
const double slopeRestrictionP_
 
const std::string theTrackQuality_
 
const edm::InputTag theTriggerResultsLabel_
 
edm::EDGetTokenT< BXVector
< GlobalAlgBlk > > 
tok_alg_
 
edm::ESGetToken< MagneticField,
IdealMagneticFieldRecord
tok_bFieldH_
 
edm::EDGetTokenT< reco::BeamSpottok_bs_
 
edm::EDGetTokenT
< CaloTowerCollection
tok_cala_
 
edm::ESGetToken< CaloTopology,
CaloTopologyRecord
tok_caloTopology_
 
edm::ESGetToken
< HcalDDDRecConstants,
HcalRecNumberingRecord
tok_ddrec_
 
edm::EDGetTokenT
< EcalRecHitCollection
tok_EB_
 
edm::ESGetToken
< EcalChannelStatus,
EcalChannelStatusRcd
tok_ecalChStatus_
 
edm::EDGetTokenT
< EcalRecHitCollection
tok_EE_
 
edm::EDGetTokenT
< GenEventInfoProduct
tok_ew_
 
edm::EDGetTokenT
< reco::TrackCollection
tok_genTrack_
 
edm::ESGetToken< CaloGeometry,
CaloGeometryRecord
tok_geom_
 
edm::EDGetTokenT
< HBHERecHitCollection
tok_hbhe_
 
edm::ESGetToken< HcalTopology,
HcalRecNumberingRecord
tok_htopo_
 
edm::EDGetTokenT
< reco::MuonCollection
tok_Muon_
 
edm::EDGetTokenT
< reco::GenParticleCollection
tok_parts_
 
edm::EDGetTokenT
< reco::VertexCollection
tok_recVtx_
 
edm::ESGetToken< HcalRespCorrs,
HcalRespCorrsRcd
tok_resp_
 
edm::ESGetToken
< EcalSeverityLevelAlgo,
EcalSeverityLevelAlgoRcd
tok_sevlv_
 
edm::EDGetTokenT
< trigger::TriggerEvent
tok_trigEvt_
 
edm::EDGetTokenT
< edm::TriggerResults
tok_trigRes_
 
const edm::InputTag triggerEvent_
 
const std::vector< std::string > trigNames_
 
const bool unCorrect_
 
const bool useL1Trigger_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer< edm::GlobalCache< alcaHcalIsoTracks::Counters > >
using CacheTypes = CacheContexts< T...>
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T...>
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Detailed Description

Definition at line 91 of file AlCaHcalIsotrkProducer.cc.

Constructor & Destructor Documentation

AlCaHcalIsotrkProducer::AlCaHcalIsotrkProducer ( edm::ParameterSet const &  iConfig,
const alcaHcalIsoTracks::Counters counters 
)
explicit

Definition at line 206 of file AlCaHcalIsotrkProducer.cc.

References a_charIsoR_, a_coneR1_, a_coneR2_, a_coneR_, a_mipR2_, a_mipR3_, a_mipR4_, a_mipR5_, a_mipR_, collapseDepth_, debEvents_, eEcalMax_, eIsolate1_, eIsolate2_, etabins_, etadist_, etahalfdist_, l1t::Event, edm::ParameterSet::getParameter(), hcalScale_, hep17_, hitEthrEB_, hitEthrEE0_, hitEthrEE1_, hitEthrEE2_, hitEthrEE3_, hitEthrEEHi_, hitEthrEELo_, mps_fire::i, ignoreTrigger_, HLT_FULL_cff::InputTag, isotrackApplyRegressor::k, l1Filter_, l1GtUtils_, l1TrigName_, l2Filter_, l3Filter_, labelEB_, labelEE_, labelGenTrack_, labelHBHE_, labelIsoTkEvtVar_, labelIsoTkVar_, labelRecVtx_, labelTower_, M_PI, spr::trackSelectionParameters::maxChi2, spr::trackSelectionParameters::maxDpOverP, spr::trackSelectionParameters::maxDxyPV, spr::trackSelectionParameters::maxDzPV, spr::trackSelectionParameters::maxInMiss, spr::trackSelectionParameters::maxOutMiss, maxRestrictionP_, spr::trackSelectionParameters::minLayerCrossed, spr::trackSelectionParameters::minOuterHit, spr::trackSelectionParameters::minPt, spr::trackSelectionParameters::minQuality, newDepth_, oldDepth_, oldDet_, oldEta_, oldID_, phibins_, phidist_, phihalfdist_, processName_, pTrackHigh_, pTrackLow_, pTrackMin_, reco::TrackBase::qualityByName(), selectionParameter_, slopeRestrictionP_, AlCaHLTBitMon_QueryRunRegistry::string, theTrackQuality_, theTriggerResultsLabel_, tok_alg_, tok_bFieldH_, tok_bs_, tok_cala_, tok_caloTopology_, tok_ddrec_, tok_EB_, tok_ecalChStatus_, tok_EE_, tok_ew_, tok_genTrack_, tok_geom_, tok_hbhe_, tok_htopo_, tok_Muon_, tok_parts_, tok_recVtx_, tok_resp_, tok_sevlv_, tok_trigEvt_, tok_trigRes_, triggerEvent_, trigNames_, unCorrect_, and useL1Trigger_.

208  : nRun_(0),
209  nAll_(0),
210  nGood_(0),
211  nRange_(0),
212  trigNames_(iConfig.getParameter<std::vector<std::string>>("triggers")),
213  theTrackQuality_(iConfig.getParameter<std::string>("trackQuality")),
214  processName_(iConfig.getParameter<std::string>("processName")),
215  l1Filter_(iConfig.getParameter<std::string>("l1Filter")),
216  l2Filter_(iConfig.getParameter<std::string>("l2Filter")),
217  l3Filter_(iConfig.getParameter<std::string>("l3Filter")),
218  a_coneR_(iConfig.getParameter<double>("coneRadius")),
219  a_mipR_(iConfig.getParameter<double>("coneRadiusMIP")),
220  a_mipR2_(iConfig.getParameter<double>("coneRadiusMIP2")),
221  a_mipR3_(iConfig.getParameter<double>("coneRadiusMIP3")),
222  a_mipR4_(iConfig.getParameter<double>("coneRadiusMIP4")),
223  a_mipR5_(iConfig.getParameter<double>("coneRadiusMIP5")),
224  pTrackMin_(iConfig.getParameter<double>("minimumTrackP")),
225  eEcalMax_(iConfig.getParameter<double>("maximumEcalEnergy")),
226  maxRestrictionP_(iConfig.getParameter<double>("maxTrackP")),
227  slopeRestrictionP_(iConfig.getParameter<double>("slopeTrackP")),
228  hcalScale_(iConfig.getUntrackedParameter<double>("hHcalScale", 1.0)),
229  eIsolate1_(iConfig.getParameter<double>("isolationEnergyTight")),
230  eIsolate2_(iConfig.getParameter<double>("isolationEnergyLoose")),
231  pTrackLow_(iConfig.getParameter<double>("momentumLow")),
232  pTrackHigh_(iConfig.getParameter<double>("momentumHigh")),
233  ignoreTrigger_(iConfig.getUntrackedParameter<bool>("ignoreTriggers", false)),
234  useL1Trigger_(iConfig.getUntrackedParameter<bool>("useL1Trigger", false)),
235  unCorrect_(iConfig.getUntrackedParameter<bool>("unCorrect", false)),
236  collapseDepth_(iConfig.getUntrackedParameter<bool>("collapseDepth", false)),
237  hitEthrEB_(iConfig.getParameter<double>("EBHitEnergyThreshold")),
238  hitEthrEE0_(iConfig.getParameter<double>("EEHitEnergyThreshold0")),
239  hitEthrEE1_(iConfig.getParameter<double>("EEHitEnergyThreshold1")),
240  hitEthrEE2_(iConfig.getParameter<double>("EEHitEnergyThreshold2")),
241  hitEthrEE3_(iConfig.getParameter<double>("EEHitEnergyThreshold3")),
242  hitEthrEELo_(iConfig.getParameter<double>("EEHitEnergyThresholdLow")),
243  hitEthrEEHi_(iConfig.getParameter<double>("EEHitEnergyThresholdHigh")),
244  triggerEvent_(iConfig.getParameter<edm::InputTag>("labelTriggerEvent")),
245  theTriggerResultsLabel_(iConfig.getParameter<edm::InputTag>("labelTriggerResult")),
246  labelGenTrack_(iConfig.getParameter<std::string>("labelTrack")),
247  labelRecVtx_(iConfig.getParameter<std::string>("labelVertex")),
248  labelEB_(iConfig.getParameter<std::string>("labelEBRecHit")),
249  labelEE_(iConfig.getParameter<std::string>("labelEERecHit")),
250  labelHBHE_(iConfig.getParameter<std::string>("labelHBHERecHit")),
251  labelTower_(iConfig.getParameter<std::string>("labelCaloTower")),
252  l1TrigName_(iConfig.getUntrackedParameter<std::string>("l1TrigName", "L1_SingleJet60")),
253  oldID_(iConfig.getUntrackedParameter<std::vector<int>>("oldID")),
254  newDepth_(iConfig.getUntrackedParameter<std::vector<int>>("newDepth")),
255  hep17_(iConfig.getUntrackedParameter<bool>("hep17")),
256  labelIsoTkVar_(iConfig.getParameter<std::string>("isoTrackLabel")),
257  labelIsoTkEvtVar_(iConfig.getParameter<std::string>("isoTrackEventLabel")),
258  debEvents_(iConfig.getParameter<std::vector<int>>("debugEvents")) {
259  // Get the run parameters
260  const double isolationRadius(28.9), innerR(10.0), outerR(30.0);
262  selectionParameter_.minPt = iConfig.getParameter<double>("minTrackPt");
263  selectionParameter_.maxChi2 = iConfig.getParameter<double>("maxChi2");
264  selectionParameter_.maxDpOverP = iConfig.getParameter<double>("maxDpOverP");
265  selectionParameter_.minOuterHit = iConfig.getParameter<int>("minOuterHit");
266  selectionParameter_.minLayerCrossed = iConfig.getParameter<int>("minLayerCrossed");
267  selectionParameter_.maxInMiss = iConfig.getParameter<int>("maxInMiss");
268  selectionParameter_.minQuality = trackQuality_;
269  selectionParameter_.maxDxyPV = iConfig.getParameter<double>("maxDxyPV");
270  selectionParameter_.maxDzPV = iConfig.getParameter<double>("maxDzPV");
271  selectionParameter_.maxChi2 = iConfig.getParameter<double>("maxChi2");
272  selectionParameter_.maxDpOverP = iConfig.getParameter<double>("maxDpOverP");
273  selectionParameter_.minOuterHit = iConfig.getParameter<int>("minOuterHit");
274  selectionParameter_.minLayerCrossed = iConfig.getParameter<int>("minLayerCrossed");
275  selectionParameter_.maxInMiss = iConfig.getParameter<int>("maxInMiss");
276  selectionParameter_.maxOutMiss = iConfig.getParameter<int>("maxOutMiss");
277  a_charIsoR_ = a_coneR_ + isolationRadius;
278  a_coneR1_ = a_coneR_ + innerR;
279  a_coneR2_ = a_coneR_ + outerR;
280  // Different isolation cuts are described in DN-2016/029
281  // Tight cut uses 2 GeV; Loose cut uses 10 GeV
282  // Eta dependent cut uses (maxRestrictionP_ * exp(|ieta|*log(2.5)/18))
283  // with the factor for exponential slopeRestrictionP_ = log(2.5)/18
284  // maxRestrictionP_ = 8 GeV as came from a study
285  std::string labelBS = iConfig.getParameter<std::string>("labelBeamSpot");
286  edm::InputTag algTag = iConfig.getParameter<edm::InputTag>("algInputTag");
287  edm::InputTag extTag = iConfig.getParameter<edm::InputTag>("extInputTag");
288  std::string labelMuon = iConfig.getParameter<std::string>("labelMuon");
289 
290  for (unsigned int k = 0; k < oldID_.size(); ++k) {
291  oldDet_.emplace_back((oldID_[k] / 10000) % 10);
292  oldEta_.emplace_back((oldID_[k] / 100) % 100);
293  oldDepth_.emplace_back(oldID_[k] % 100);
294  }
295  l1GtUtils_ = new l1t::L1TGlobalUtil(iConfig, consumesCollector(), *this, algTag, extTag, l1t::UseEventSetupIn::Event);
296  // define tokens for access
297  tok_trigEvt_ = consumes<trigger::TriggerEvent>(triggerEvent_);
298  tok_trigRes_ = consumes<edm::TriggerResults>(theTriggerResultsLabel_);
299  tok_bs_ = consumes<reco::BeamSpot>(labelBS);
300  tok_genTrack_ = consumes<reco::TrackCollection>(labelGenTrack_);
301  tok_ew_ = consumes<GenEventInfoProduct>(edm::InputTag("generator"));
302  tok_parts_ = consumes<reco::GenParticleCollection>(edm::InputTag("genParticles"));
303  tok_cala_ = consumes<CaloTowerCollection>(labelTower_);
304  tok_alg_ = consumes<BXVector<GlobalAlgBlk>>(algTag);
305  tok_Muon_ = consumes<reco::MuonCollection>(labelMuon);
306  tok_recVtx_ = consumes<reco::VertexCollection>(labelRecVtx_);
307  tok_EB_ = consumes<EcalRecHitCollection>(edm::InputTag("ecalRecHit", labelEB_));
308  tok_EE_ = consumes<EcalRecHitCollection>(edm::InputTag("ecalRecHit", labelEE_));
309  tok_hbhe_ = consumes<HBHERecHitCollection>(labelHBHE_);
310  edm::LogVerbatim("HcalIsoTrack") << "Labels used " << triggerEvent_ << " " << theTriggerResultsLabel_ << " "
311  << labelBS << " " << labelRecVtx_ << " " << labelGenTrack_ << " "
312  << edm::InputTag("ecalRecHit", labelEB_) << " "
313  << edm::InputTag("ecalRecHit", labelEE_) << " " << labelHBHE_ << " " << labelTower_
314  << " " << labelMuon;
315 
316  tok_ddrec_ = esConsumes<HcalDDDRecConstants, HcalRecNumberingRecord, edm::Transition::BeginRun>();
317  tok_bFieldH_ = esConsumes<MagneticField, IdealMagneticFieldRecord>();
318  tok_ecalChStatus_ = esConsumes<EcalChannelStatus, EcalChannelStatusRcd>();
319  tok_sevlv_ = esConsumes<EcalSeverityLevelAlgo, EcalSeverityLevelAlgoRcd>();
320  tok_geom_ = esConsumes<CaloGeometry, CaloGeometryRecord>();
321  tok_caloTopology_ = esConsumes<CaloTopology, CaloTopologyRecord>();
322  tok_htopo_ = esConsumes<HcalTopology, HcalRecNumberingRecord>();
323  tok_resp_ = esConsumes<HcalRespCorrs, HcalRespCorrsRcd>();
324 
325  edm::LogVerbatim("HcalIsoTrack") << "Parameters read from config file \n"
326  << "\t minPt " << selectionParameter_.minPt << "\t theTrackQuality "
327  << theTrackQuality_ << "\t minQuality " << selectionParameter_.minQuality
328  << "\t maxDxyPV " << selectionParameter_.maxDxyPV << "\t maxDzPV "
330  << "\t maxDpOverP " << selectionParameter_.maxDpOverP << "\t minOuterHit "
331  << selectionParameter_.minOuterHit << "\t minLayerCrossed "
332  << selectionParameter_.minLayerCrossed << "\t maxInMiss "
333  << selectionParameter_.maxInMiss << "\t maxOutMiss "
334  << selectionParameter_.maxOutMiss << "\t a_coneR " << a_coneR_ << ":" << a_coneR1_
335  << ":" << a_coneR2_ << "\t a_charIsoR " << a_charIsoR_ << "\t a_mipR " << a_mipR_
336  << "\t a_mipR2 " << a_mipR2_ << "\t a_mipR3 " << a_mipR3_ << "\t a_mipR4 "
337  << a_mipR4_ << "\t a_mipR5 " << a_mipR5_ << "\n pTrackMin_ " << pTrackMin_
338  << "\t eEcalMax_ " << eEcalMax_ << "\t maxRestrictionP_ " << maxRestrictionP_
339  << "\t slopeRestrictionP_ " << slopeRestrictionP_ << "\t eIsolateStrong_ "
340  << eIsolate1_ << "\t eIsolateSoft_ " << eIsolate2_ << "\t hcalScale_ " << hcalScale_
341  << "\n\t momentumLow_ " << pTrackLow_ << "\t momentumHigh_ " << pTrackHigh_
342  << "\n\t ignoreTrigger_ " << ignoreTrigger_ << "\n\t useL1Trigger_ " << useL1Trigger_
343  << "\t unCorrect_ " << unCorrect_ << "\t collapseDepth_ " << collapseDepth_
344  << "\t L1TrigName_ " << l1TrigName_ << "\nThreshold for EB " << hitEthrEB_
345  << " EE " << hitEthrEE0_ << ":" << hitEthrEE1_ << ":" << hitEthrEE2_ << ":"
346  << hitEthrEE3_ << ":" << hitEthrEELo_ << ":" << hitEthrEEHi_;
347  edm::LogVerbatim("HcalIsoTrack") << "Process " << processName_ << " L1Filter:" << l1Filter_
348  << " L2Filter:" << l2Filter_ << " L3Filter:" << l3Filter_ << " and "
349  << debEvents_.size() << " events to be debugged";
350  for (unsigned int k = 0; k < trigNames_.size(); ++k) {
351  edm::LogVerbatim("HcalIsoTrack") << "Trigger[" << k << "] " << trigNames_[k];
352  }
353  edm::LogVerbatim("HcalIsoTrack") << oldID_.size() << " DetIDs to be corrected with HEP17 flag:" << hep17_;
354  for (unsigned int k = 0; k < oldID_.size(); ++k)
355  edm::LogVerbatim("HcalIsoTrack") << "[" << k << "] Det " << oldDet_[k] << " EtaAbs " << oldEta_[k] << " Depth "
356  << oldDepth_[k] << ":" << newDepth_[k];
357 
358  for (int i = 0; i < 10; i++)
359  phibins_.push_back(-M_PI + 0.1 * (2 * i + 1) * M_PI);
360  for (int i = 0; i < 8; ++i)
361  etabins_.push_back(-2.1 + 0.6 * i);
362  etadist_ = etabins_[1] - etabins_[0];
363  phidist_ = phibins_[1] - phibins_[0];
364  etahalfdist_ = 0.5 * etadist_;
365  phihalfdist_ = 0.5 * phidist_;
366  edm::LogVerbatim("HcalIsoTrack") << "EtaDist " << etadist_ << " " << etahalfdist_ << " PhiDist " << phidist_ << " "
367  << phihalfdist_;
368  //create also IsolatedPixelTrackCandidateCollection which contains isolation info and reference to primary track
369  produces<HcalIsoTrkCalibVariablesCollection>(labelIsoTkVar_);
370  produces<HcalIsoTrkEventVariablesCollection>(labelIsoTkEvtVar_);
371  edm::LogVerbatim("HcalIsoTrack") << " Expected to produce the collections:\n"
372  << "HcalIsoTrkCalibVariablesCollection with label " << labelIsoTkVar_
373  << "\nand HcalIsoTrkEventVariablesCollection with label " << labelIsoTkEvtVar_;
374 }
Log< level::Info, true > LogVerbatim
edm::EDGetTokenT< reco::TrackCollection > tok_genTrack_
TrackQuality
track quality
Definition: TrackBase.h:150
edm::EDGetTokenT< EcalRecHitCollection > tok_EB_
edm::EDGetTokenT< trigger::TriggerEvent > tok_trigEvt_
edm::EDGetTokenT< HBHERecHitCollection > tok_hbhe_
const std::string labelIsoTkEvtVar_
edm::EDGetTokenT< reco::GenParticleCollection > tok_parts_
edm::EDGetTokenT< BXVector< GlobalAlgBlk > > tok_alg_
spr::trackSelectionParameters selectionParameter_
edm::EDGetTokenT< CaloTowerCollection > tok_cala_
std::vector< double > phibins_
const std::vector< int > debEvents_
const edm::InputTag triggerEvent_
l1t::L1TGlobalUtil * l1GtUtils_
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > tok_geom_
edm::ESGetToken< HcalTopology, HcalRecNumberingRecord > tok_htopo_
const std::vector< int > newDepth_
#define M_PI
const edm::InputTag theTriggerResultsLabel_
edm::ESGetToken< EcalSeverityLevelAlgo, EcalSeverityLevelAlgoRcd > tok_sevlv_
edm::EDGetTokenT< reco::BeamSpot > tok_bs_
edm::EDGetTokenT< reco::MuonCollection > tok_Muon_
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > tok_bFieldH_
static TrackQuality qualityByName(const std::string &name)
Definition: TrackBase.cc:126
edm::EDGetTokenT< EcalRecHitCollection > tok_EE_
edm::ESGetToken< HcalDDDRecConstants, HcalRecNumberingRecord > tok_ddrec_
edm::EDGetTokenT< GenEventInfoProduct > tok_ew_
edm::ESGetToken< EcalChannelStatus, EcalChannelStatusRcd > tok_ecalChStatus_
edm::EDGetTokenT< edm::TriggerResults > tok_trigRes_
reco::TrackBase::TrackQuality minQuality
edm::ESGetToken< HcalRespCorrs, HcalRespCorrsRcd > tok_resp_
const std::vector< int > oldID_
edm::ESGetToken< CaloTopology, CaloTopologyRecord > tok_caloTopology_
const std::string theTrackQuality_
const std::vector< std::string > trigNames_
std::vector< double > etabins_
edm::EDGetTokenT< reco::VertexCollection > tok_recVtx_
AlCaHcalIsotrkProducer::~AlCaHcalIsotrkProducer ( )
overridedefault

Member Function Documentation

void AlCaHcalIsotrkProducer::beginRun ( edm::Run const &  iRun,
edm::EventSetup const &  iSetup 
)
overrideprivate

Definition at line 741 of file AlCaHcalIsotrkProducer.cc.

References edm::EventSetup::getData(), hdc_, hltConfig_, ignoreTrigger_, HLTConfigProvider::init(), nRun_, processName_, edm::RunBase::run(), and tok_ddrec_.

741  {
742  hdc_ = &iSetup.getData(tok_ddrec_);
743  if (!ignoreTrigger_) {
744  bool changed(false);
745  edm::LogVerbatim("HcalIsoTrack") << "Run[" << nRun_ << "] " << iRun.run() << " hltconfig.init "
746  << hltConfig_.init(iRun, iSetup, processName_, changed);
747  }
748 }
Log< level::Info, true > LogVerbatim
const HcalDDDRecConstants * hdc_
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d&#39;tor
edm::ESGetToken< HcalDDDRecConstants, HcalRecNumberingRecord > tok_ddrec_
double AlCaHcalIsotrkProducer::dR ( math::XYZTLorentzVector vec1,
math::XYZTLorentzVector vec2 
)
private

Definition at line 1200 of file AlCaHcalIsotrkProducer.cc.

References reco::deltaR().

Referenced by getProducts(), notaMuon(), and trackP().

1200  {
1201  return reco::deltaR(vec1.eta(), vec1.phi(), vec2.eta(), vec2.phi());
1202 }
std::vector< double > vec1
Definition: HCALResponse.h:15
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:30
std::vector< vec1 > vec2
Definition: HCALResponse.h:16
void AlCaHcalIsotrkProducer::endRun ( edm::Run const &  iRun,
edm::EventSetup const &   
)
overrideprivate

Definition at line 750 of file AlCaHcalIsotrkProducer.cc.

References nRun_, and edm::RunBase::run().

750  {
751  edm::LogVerbatim("HcalIsoTrack") << "endRun [" << nRun_ << "] " << iRun.run();
752  ++nRun_;
753 }
Log< level::Info, true > LogVerbatim
void AlCaHcalIsotrkProducer::endStream ( )
override

Definition at line 730 of file AlCaHcalIsotrkProducer.cc.

References nAll_, nGood_, and nRange_.

730  {
731  globalCache()->nAll_ += nAll_;
732  globalCache()->nGood_ += nGood_;
733  globalCache()->nRange_ += nRange_;
734 }
double AlCaHcalIsotrkProducer::eThreshold ( const DetId id,
const CaloGeometry geo 
) const
private

Definition at line 1251 of file AlCaHcalIsotrkProducer.cc.

References funct::abs(), EcalBarrel, PVValHelper::eta, PV3DBase< T, PVType, FrameType >::eta(), CaloGeometry::getPosition(), hitEthrEB_, hitEthrEE0_, hitEthrEE1_, hitEthrEE2_, hitEthrEE3_, hitEthrEEHi_, and hitEthrEELo_.

Referenced by getProducts().

1251  {
1252  const GlobalPoint& pos = geo->getPosition(id);
1253  double eta = std::abs(pos.eta());
1254  double eThr(hitEthrEB_);
1255  if (id.subdetId() != EcalBarrel) {
1256  eThr = (((eta * hitEthrEE3_ + hitEthrEE2_) * eta + hitEthrEE1_) * eta + hitEthrEE0_);
1257  if (eThr < hitEthrEELo_)
1258  eThr = hitEthrEELo_;
1259  else if (eThr > hitEthrEEHi_)
1260  eThr = hitEthrEEHi_;
1261  }
1262  return eThr;
1263 }
GlobalPoint getPosition(const DetId &id) const
Get the position of a given detector id.
Definition: CaloGeometry.cc:50
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
T eta() const
Definition: PV3DBase.h:73
void AlCaHcalIsotrkProducer::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 376 of file AlCaHcalIsotrkProducer.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), edm::ParameterSetDescription::addUntracked(), submitPVResolutionJobs::desc, patZpeak::events, HLT_FULL_cff::InputTag, and AlCaHLTBitMon_QueryRunRegistry::string.

376  {
378  desc.add<std::string>("processName", "HLT");
379  std::vector<std::string> trig;
380  desc.add<std::vector<std::string>>("triggers", trig);
381  desc.add<std::string>("l1Filter", "");
382  desc.add<std::string>("l2Filter", "L2Filter");
383  desc.add<std::string>("l3Filter", "Filter");
384  // following 10 parameters are parameters to select good tracks
385  desc.add<std::string>("trackQuality", "highPurity");
386  desc.add<double>("minTrackPt", 1.0);
387  desc.add<double>("maxDxyPV", 0.02);
388  desc.add<double>("maxDzPV", 0.02);
389  desc.add<double>("maxChi2", 5.0);
390  desc.add<double>("maxDpOverP", 0.1);
391  desc.add<int>("minOuterHit", 4);
392  desc.add<int>("minLayerCrossed", 8);
393  desc.add<int>("maxInMiss", 0);
394  desc.add<int>("maxOutMiss", 0);
395  // Minimum momentum of selected isolated track and signal zone
396  desc.add<double>("minimumTrackP", 10.0);
397  desc.add<double>("coneRadius", 34.98);
398  // signal zone in ECAL and MIP energy cutoff
399  desc.add<double>("coneRadiusMIP", 14.0);
400  desc.add<double>("coneRadiusMIP2", 18.0);
401  desc.add<double>("coneRadiusMIP3", 20.0);
402  desc.add<double>("coneRadiusMIP4", 22.0);
403  desc.add<double>("coneRadiusMIP5", 24.0);
404  desc.add<double>("maximumEcalEnergy", 2.0);
405  // following 4 parameters are for isolation cuts and described in the code
406  desc.add<double>("maxTrackP", 8.0);
407  desc.add<double>("slopeTrackP", 0.05090504066);
408  desc.add<double>("isolationEnergyTight", 2.0);
409  desc.add<double>("isolationEnergyLoose", 10.0);
410  // energy thershold for ECAL (from Egamma group)
411  desc.add<double>("EBHitEnergyThreshold", 0.08);
412  desc.add<double>("EEHitEnergyThreshold0", 0.30);
413  desc.add<double>("EEHitEnergyThreshold1", 0.00);
414  desc.add<double>("EEHitEnergyThreshold2", 0.00);
415  desc.add<double>("EEHitEnergyThreshold3", 0.00);
416  desc.add<double>("EEHitEnergyThresholdLow", 0.30);
417  desc.add<double>("EEHitEnergyThresholdHigh", 0.30);
418  // prescale factors
419  desc.add<double>("momentumLow", 40.0);
420  desc.add<double>("momentumHigh", 60.0);
421  desc.add<int>("prescaleLow", 1);
422  desc.add<int>("prescaleHigh", 1);
423  // various labels for collections used in the code
424  desc.add<edm::InputTag>("labelTriggerEvent", edm::InputTag("hltTriggerSummaryAOD", "", "HLT"));
425  desc.add<edm::InputTag>("labelTriggerResult", edm::InputTag("TriggerResults", "", "HLT"));
426  desc.add<std::string>("labelTrack", "generalTracks");
427  desc.add<std::string>("labelVertex", "offlinePrimaryVertices");
428  desc.add<std::string>("labelEBRecHit", "EcalRecHitsEB");
429  desc.add<std::string>("labelEERecHit", "EcalRecHitsEE");
430  desc.add<std::string>("labelHBHERecHit", "hbhereco");
431  desc.add<std::string>("labelBeamSpot", "offlineBeamSpot");
432  desc.add<std::string>("labelCaloTower", "towerMaker");
433  desc.add<std::string>("labelMuon", "muons");
434  desc.add<edm::InputTag>("algInputTag", edm::InputTag("gtStage2Digis"));
435  desc.add<edm::InputTag>("extInputTag", edm::InputTag("gtStage2Digis"));
436  desc.add<std::string>("isoTrackLabel", "HcalIsoTrack");
437  desc.add<std::string>("isoTrackEventLabel", "HcalIsoTrackEvent");
438  // Various flags used for selecting tracks, choice of energy Method2/0
439  // Data type 0/1 for single jet trigger or others
440  desc.addUntracked<bool>("ignoreTriggers", false);
441  desc.addUntracked<bool>("useL1Trigger", false);
442  desc.addUntracked<double>("hcalScale", 1.0);
443  desc.addUntracked<bool>("unCorrect", false);
444  desc.addUntracked<bool>("collapseDepth", false);
445  desc.addUntracked<std::string>("l1TrigName", "L1_SingleJet60");
446  std::vector<int> dummy;
447  desc.addUntracked<std::vector<int>>("oldID", dummy);
448  desc.addUntracked<std::vector<int>>("newDepth", dummy);
449  desc.addUntracked<bool>("hep17", false);
450  std::vector<int> events;
451  desc.add<std::vector<int>>("debugEvents", events);
452  descriptions.add("alcaHcalIsotrkProducer", desc);
453 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
tuple events
Definition: patZpeak.py:20
std::array< int, 3 > AlCaHcalIsotrkProducer::getProducts ( int  goodPV,
double  eventWeight,
std::vector< math::XYZTLorentzVector > &  vecL1,
std::vector< math::XYZTLorentzVector > &  vecL3,
math::XYZPoint leadPV,
std::vector< spr::propagatedTrackDirection > &  trkCaloDirections,
std::vector< spr::propagatedTrackID > &  trkCaloDets,
const CaloGeometry geo,
const CaloTopology topo,
const HcalTopology theHBHETopology,
const EcalChannelStatus theEcalChStatus,
const EcalSeverityLevelAlgo theEcalSevlv,
edm::Handle< EcalRecHitCollection > &  barrelRecHitsHandle,
edm::Handle< EcalRecHitCollection > &  endcapRecHitsHandle,
edm::Handle< HBHERecHitCollection > &  hbhe,
edm::Handle< CaloTowerCollection > &  towerHandle,
const edm::Handle< reco::GenParticleCollection > &  genParticles,
const HcalRespCorrs respCorrs,
const edm::Handle< reco::MuonCollection > &  muonh,
std::vector< HcalIsoTrkCalibVariables > &  hocalib,
HcalIsoTrkEventVariables hocalibEvent 
)
private

Definition at line 755 of file AlCaHcalIsotrkProducer.cc.

References a_charIsoR_, a_coneR1_, a_coneR2_, a_coneR_, a_mipR2_, a_mipR3_, a_mipR4_, a_mipR5_, a_mipR_, funct::abs(), accept(), HcalIsoTrkEventVariables::allvertex_, spr::chargeIsolationCone(), spr::chargeIsolationEcal(), debug_, TauDecayModes::dec, HcalIsoTrkCalibVariables::detIds1_, HcalIsoTrkCalibVariables::detIds3_, HcalIsoTrkCalibVariables::detIds_, dR(), runTauDisplay::dr, HcalIsoTrkCalibVariables::eAnnular_, spr::eCone_ecal(), spr::eCone_hcal(), spr::eECALmatrix(), eEcalMax_, HcalIsoTrkCalibVariables::eHcal10_, HcalIsoTrkCalibVariables::eHcal10Aux_, HcalIsoTrkCalibVariables::eHcal10Raw_, HcalIsoTrkCalibVariables::eHcal30_, HcalIsoTrkCalibVariables::eHcal30Aux_, HcalIsoTrkCalibVariables::eHcal30Raw_, HcalIsoTrkCalibVariables::eHcal_, HcalIsoTrkCalibVariables::eHcalAux_, spr::eHCALmatrix(), HcalIsoTrkCalibVariables::eHcalRaw_, eIsolate1_, eIsolate2_, HcalIsoTrkCalibVariables::emaxNearP_, HcalIsoTrkCalibVariables::eMipDR_, reco::TrackBase::eta(), eThreshold(), HcalIsoTrkCalibVariables::eventWeight_, funct::exp(), HcalIsoTrkCalibVariables::gentrackP_, HcalIsoTrkCalibVariables::goodPV_, spr::goodTrack(), HcalIsoTrkCalibVariables::hAnnular_, HcalIsoTrkCalibVariables::hitEnergies1_, HcalIsoTrkCalibVariables::hitEnergies1Aux_, HcalIsoTrkCalibVariables::hitEnergies1Raw_, HcalIsoTrkCalibVariables::hitEnergies3_, HcalIsoTrkCalibVariables::hitEnergies3Aux_, HcalIsoTrkCalibVariables::hitEnergies3Raw_, HcalIsoTrkCalibVariables::hitEnergies_, HcalIsoTrkCalibVariables::hitEnergiesAux_, HcalIsoTrkCalibVariables::hitEnergiesRaw_, HcalIsoTrkEventVariables::hltbits_, HcalIsoTrkCalibVariables::hmaxNearP_, HcalDetId::ieta(), HcalIsoTrkCalibVariables::ieta_, HcalIsoTrkEventVariables::ietaAll_, HcalIsoTrkEventVariables::ietaGood_, HcalDetId::iphi(), HcalIsoTrkCalibVariables::iphi_, edm::HandleBase::isValid(), isotrackApplyRegressor::k, HcalIsoTrkCalibVariables::l1eta_, HcalIsoTrkCalibVariables::l1phi_, HcalIsoTrkCalibVariables::l1pt_, HcalIsoTrkCalibVariables::l3eta_, HcalIsoTrkCalibVariables::l3phi_, HcalIsoTrkCalibVariables::l3pt_, spr::trackSelectionParameters::maxDxyPV, spr::trackSelectionParameters::maxDzPV, spr::trackSelectionParameters::maxInMiss, spr::trackSelectionParameters::maxOutMiss, maxRestrictionP_, HcalIsoTrkCalibVariables::mindR1_, HcalIsoTrkCalibVariables::mindR2_, newId(), notaMuon(), BeamSpotPI::nTracks, HcalIsoTrkCalibVariables::nTrk_, HcalIsoTrkCalibVariables::nVtx_, oldID_, reco::TrackBase::p(), HcalIsoTrkCalibVariables::p_, reco::TrackBase::phi(), HcalIsoTrkCalibVariables::phi_, reco::TrackBase::pt(), HcalIsoTrkCalibVariables::pt_, pTrackMin_, reco::TrackBase::px(), reco::TrackBase::py(), reco::TrackBase::pz(), HcalIsoTrkCalibVariables::qltyFlag_, HcalIsoTrkCalibVariables::qltyMissFlag_, HcalIsoTrkCalibVariables::qltyPVFlag_, rhoh(), HcalIsoTrkCalibVariables::rhoh_, selectionParameter_, HcalIsoTrkCalibVariables::selectTk_, slopeRestrictionP_, storeEnergy(), AlCaHLTBitMon_QueryRunRegistry::string, trackP(), HcalIsoTrkEventVariables::trackType_, and HcalIsoTrkCalibVariables::trgbits_.

Referenced by produce().

775  {
776  int nSave(0), nLoose(0), nTight(0);
777  unsigned int nTracks(0), nselTracks(0);
778  double rhohEV = (tower.isValid()) ? rhoh(tower) : 0;
779 
780  //Loop over tracks
781  std::vector<spr::propagatedTrackDirection>::const_iterator trkDetItr;
782  for (trkDetItr = trkCaloDirections.begin(), nTracks = 0; trkDetItr != trkCaloDirections.end();
783  trkDetItr++, nTracks++) {
784  const reco::Track* pTrack = &(*(trkDetItr->trkItr));
785  math::XYZTLorentzVector v4(pTrack->px(), pTrack->py(), pTrack->pz(), pTrack->p());
786  bool accept(false);
788  isoTk.eventWeight_ = eventWeight;
789  isoTk.goodPV_ = goodPV;
790  isoTk.nVtx_ = hocalibEvent.allvertex_;
791  isoTk.nTrk_ = trkCaloDirections.size();
792  isoTk.rhoh_ = rhohEV;
793  for (const auto& trig : hocalibEvent.hltbits_)
794  isoTk.trgbits_.emplace_back(trig);
795  if (!vecL1.empty()) {
796  isoTk.l1pt_ = vecL1[0].pt();
797  isoTk.l1eta_ = vecL1[0].eta();
798  isoTk.l1phi_ = vecL1[0].phi();
799  }
800  if (!vecL3.empty()) {
801  isoTk.l3pt_ = vecL3[0].pt();
802  isoTk.l3eta_ = vecL3[0].eta();
803  isoTk.l3phi_ = vecL3[0].phi();
804  }
805 
806  isoTk.p_ = pTrack->p();
807  isoTk.pt_ = pTrack->pt();
808  isoTk.phi_ = pTrack->phi();
809 #ifdef EDM_ML_DEBUG
810  if (debug_)
811  edm::LogVerbatim("HcalIsoTrack") << "This track : " << nTracks << " (pt|eta|phi|p) : " << isoTk.pt_ << "|"
812  << pTrack->eta() << "|" << isoTk.phi_ << "|" << isoTk.p_;
813  int flag(0);
814 #endif
815  isoTk.mindR2_ = 999;
816  for (unsigned int k = 0; k < vecL3.size(); ++k) {
817  double dr = dR(vecL3[k], v4);
818  if (dr < isoTk.mindR2_) {
819  isoTk.mindR2_ = dr;
820  }
821  }
822  isoTk.mindR1_ = (!vecL1.empty()) ? dR(vecL1[0], v4) : 999;
823 #ifdef EDM_ML_DEBUG
824  if (debug_)
825  edm::LogVerbatim("HcalIsoTrack") << "Closest L3 object at dr : " << isoTk.mindR2_ << " and from L1 "
826  << isoTk.mindR1_;
827 #endif
828  isoTk.ieta_ = isoTk.iphi_ = 0;
829  if (trkDetItr->okHCAL) {
830  HcalDetId detId = (HcalDetId)(trkDetItr->detIdHCAL);
831  isoTk.ieta_ = detId.ieta();
832  isoTk.iphi_ = detId.iphi();
833  if (isoTk.p_ > 40.0 && isoTk.p_ <= 60.0)
834  hocalibEvent.ietaAll_.emplace_back(isoTk.ieta_);
835  }
836  //Selection of good track
837  isoTk.selectTk_ = spr::goodTrack(pTrack, leadPV, selectionParameter_, false);
839  oneCutParameters.maxDxyPV = 10;
840  oneCutParameters.maxDzPV = 100;
841  oneCutParameters.maxInMiss = 2;
842  oneCutParameters.maxOutMiss = 2;
843  bool qltyFlag = spr::goodTrack(pTrack, leadPV, oneCutParameters, false);
844  oneCutParameters = selectionParameter_;
845  oneCutParameters.maxDxyPV = 10;
846  oneCutParameters.maxDzPV = 100;
847  isoTk.qltyMissFlag_ = spr::goodTrack(pTrack, leadPV, oneCutParameters, false);
848  oneCutParameters = selectionParameter_;
849  oneCutParameters.maxInMiss = 2;
850  oneCutParameters.maxOutMiss = 2;
851  isoTk.qltyPVFlag_ = spr::goodTrack(pTrack, leadPV, oneCutParameters, false);
852  double eIsolation = maxRestrictionP_ * exp(slopeRestrictionP_ * std::abs((double)isoTk.ieta_));
853  if (eIsolation < eIsolate1_)
854  eIsolation = eIsolate1_;
855  if (eIsolation < eIsolate2_)
856  eIsolation = eIsolate2_;
857 #ifdef EDM_ML_DEBUG
858  if (debug_)
859  edm::LogVerbatim("HcalIsoTrack") << "qltyFlag|okECAL|okHCAL : " << qltyFlag << "|" << trkDetItr->okECAL << "|"
860  << trkDetItr->okHCAL << " eIsolation " << eIsolation;
861  if (qltyFlag)
862  flag += 1;
863  if (trkDetItr->okECAL)
864  flag += 2;
865  if (trkDetItr->okHCAL)
866  flag += 4;
867 #endif
868  isoTk.qltyFlag_ = (qltyFlag && trkDetItr->okECAL && trkDetItr->okHCAL);
869  bool notMuon = (muonh.isValid()) ? notaMuon(pTrack, muonh) : true;
870 #ifdef EDM_ML_DEBUG
871  if (notMuon)
872  flag += 8;
873 #endif
874  if (isoTk.qltyFlag_ && notMuon) {
875  nselTracks++;
876  int nNearTRKs(0);
878  std::vector<DetId> eIds;
879  std::vector<double> eHit;
880 #ifdef EDM_ML_DEBUG
881  double eMipDR =
882 #endif
883  spr::eCone_ecal(geo,
884  barrelRecHitsHandle,
885  endcapRecHitsHandle,
886  trkDetItr->pointHCAL,
887  trkDetItr->pointECAL,
888  a_mipR_,
889  trkDetItr->directionECAL,
890  eIds,
891  eHit);
892  double eEcal(0);
893  for (unsigned int k = 0; k < eIds.size(); ++k) {
894  if (eHit[k] > eThreshold(eIds[k], geo))
895  eEcal += eHit[k];
896  }
897 #ifdef EDM_ML_DEBUG
898  if (debug_)
899  edm::LogVerbatim("HcalIsoTrack") << "eMIP before and after: " << eMipDR << ":" << eEcal;
900 #endif
901  isoTk.eMipDR_.emplace_back(eEcal);
904  std::vector<DetId> eIds2;
905  std::vector<double> eHit2;
906 #ifdef EDM_ML_DEBUG
907  double eMipDR2 =
908 #endif
909  spr::eCone_ecal(geo,
910  barrelRecHitsHandle,
911  endcapRecHitsHandle,
912  trkDetItr->pointHCAL,
913  trkDetItr->pointECAL,
914  a_mipR2_,
915  trkDetItr->directionECAL,
916  eIds2,
917  eHit2);
918  double eEcal2(0);
919  for (unsigned int k = 0; k < eIds2.size(); ++k) {
920  if (eHit2[k] > eThreshold(eIds2[k], geo))
921  eEcal2 += eHit2[k];
922  }
923 #ifdef EDM_ML_DEBUG
924  if (debug_)
925  edm::LogVerbatim("HcalIsoTrack") << "eMIP before and after: " << eMipDR2 << ":" << eEcal2;
926 #endif
927  isoTk.eMipDR_.emplace_back(eEcal2);
930  std::vector<DetId> eIds3;
931  std::vector<double> eHit3;
932 #ifdef EDM_ML_DEBUG
933  double eMipDR3 =
934 #endif
935  spr::eCone_ecal(geo,
936  barrelRecHitsHandle,
937  endcapRecHitsHandle,
938  trkDetItr->pointHCAL,
939  trkDetItr->pointECAL,
940  a_mipR3_,
941  trkDetItr->directionECAL,
942  eIds3,
943  eHit3);
944  double eEcal3(0);
945  for (unsigned int k = 0; k < eIds3.size(); ++k) {
946  if (eHit3[k] > eThreshold(eIds3[k], geo))
947  eEcal3 += eHit3[k];
948  }
949 #ifdef EDM_ML_DEBUG
950  if (debug_)
951  edm::LogVerbatim("HcalIsoTrack") << "eMIP before and after: " << eMipDR3 << ":" << eEcal3;
952 #endif
953  isoTk.eMipDR_.emplace_back(eEcal3);
956  std::vector<DetId> eIds4;
957  std::vector<double> eHit4;
958 #ifdef EDM_ML_DEBUG
959  double eMipDR4 =
960 #endif
961  spr::eCone_ecal(geo,
962  barrelRecHitsHandle,
963  endcapRecHitsHandle,
964  trkDetItr->pointHCAL,
965  trkDetItr->pointECAL,
966  a_mipR4_,
967  trkDetItr->directionECAL,
968  eIds4,
969  eHit4);
970  double eEcal4(0);
971  for (unsigned int k = 0; k < eIds4.size(); ++k) {
972  if (eHit4[k] > eThreshold(eIds4[k], geo))
973  eEcal4 += eHit4[k];
974  }
975 #ifdef EDM_ML_DEBUG
976  if (debug_)
977  edm::LogVerbatim("HcalIsoTrack") << "eMIP before and after: " << eMipDR4 << ":" << eEcal4;
978 #endif
979  isoTk.eMipDR_.emplace_back(eEcal4);
982  std::vector<DetId> eIds5;
983  std::vector<double> eHit5;
984 #ifdef EDM_ML_DEBUG
985  double eMipDR5 =
986 #endif
987  spr::eCone_ecal(geo,
988  barrelRecHitsHandle,
989  endcapRecHitsHandle,
990  trkDetItr->pointHCAL,
991  trkDetItr->pointECAL,
992  a_mipR5_,
993  trkDetItr->directionECAL,
994  eIds5,
995  eHit5);
996  double eEcal5(0);
997  for (unsigned int k = 0; k < eIds5.size(); ++k) {
998  if (eHit5[k] > eThreshold(eIds5[k], geo))
999  eEcal5 += eHit5[k];
1000  }
1001 #ifdef EDM_ML_DEBUG
1002  if (debug_)
1003  edm::LogVerbatim("HcalIsoTrack") << "eMIP before and after: " << eMipDR5 << ":" << eEcal5;
1004 #endif
1005  isoTk.eMipDR_.emplace_back(eEcal5);
1007 
1008  isoTk.emaxNearP_ = spr::chargeIsolationEcal(nTracks, trkCaloDets, geo, caloTopology, 15, 15);
1009  const DetId cellE(trkDetItr->detIdECAL);
1010  std::pair<double, bool> e11x11P = spr::eECALmatrix(cellE,
1011  barrelRecHitsHandle,
1012  endcapRecHitsHandle,
1013  *theEcalChStatus,
1014  geo,
1015  caloTopology,
1016  theEcalSevlv,
1017  5,
1018  5,
1019  -100.0,
1020  -100.0,
1021  -100.0,
1022  100.0);
1023  std::pair<double, bool> e15x15P = spr::eECALmatrix(cellE,
1024  barrelRecHitsHandle,
1025  endcapRecHitsHandle,
1026  *theEcalChStatus,
1027  geo,
1028  caloTopology,
1029  theEcalSevlv,
1030  7,
1031  7,
1032  -100.0,
1033  -100.0,
1034  -100.0,
1035  100.0);
1036  if (e11x11P.second && e15x15P.second) {
1037  isoTk.eAnnular_ = (e15x15P.first - e11x11P.first);
1038  } else {
1039  isoTk.eAnnular_ = -(e15x15P.first - e11x11P.first);
1040  }
1041  isoTk.hmaxNearP_ = spr::chargeIsolationCone(nTracks, trkCaloDirections, a_charIsoR_, nNearTRKs, false);
1042  const DetId cellH(trkDetItr->detIdHCAL);
1043  double h5x5 = spr::eHCALmatrix(
1044  theHBHETopology, cellH, hbhe, 2, 2, false, true, -100.0, -100.0, -100.0, -100.0, -100.0, 100.0);
1045  double h7x7 = spr::eHCALmatrix(
1046  theHBHETopology, cellH, hbhe, 3, 3, false, true, -100.0, -100.0, -100.0, -100.0, -100.0, 100.0);
1047  isoTk.hAnnular_ = h7x7 - h5x5;
1048 #ifdef EDM_ML_DEBUG
1049  if (debug_)
1050  edm::LogVerbatim("HcalIsoTrack") << "max p Near (Ecal) " << isoTk.emaxNearP_ << " (Hcal) " << isoTk.hmaxNearP_
1051  << " Annular E (Ecal) " << e11x11P.first << ":" << e15x15P.first << ":"
1052  << isoTk.eAnnular_ << " (Hcal) " << h5x5 << ":" << h7x7 << ":"
1053  << isoTk.hAnnular_;
1054  if (isoTk.eMipDR_[0] < eEcalMax_)
1055  flag += 16;
1056  if (isoTk.hmaxNearP_ < eIsolation)
1057  flag += 32;
1058 #endif
1059  isoTk.gentrackP_ = trackP(pTrack, genParticles);
1060  if (isoTk.eMipDR_[0] < eEcalMax_ && isoTk.hmaxNearP_ < eIsolation) {
1061  int nRecHits(-999), nRecHits1(-999), nRecHits3(-999);
1062  std::vector<DetId> ids, ids1, ids3;
1063  std::vector<double> edet0, edet1, edet3;
1064  isoTk.eHcal_ = spr::eCone_hcal(geo,
1065  hbhe,
1066  trkDetItr->pointHCAL,
1067  trkDetItr->pointECAL,
1068  a_coneR_,
1069  trkDetItr->directionHCAL,
1070  nRecHits,
1071  ids,
1072  edet0,
1073  0);
1074  if (!oldID_.empty()) {
1075  for (unsigned k = 0; k < ids.size(); ++k)
1076  ids[k] = newId(ids[k]);
1077  }
1078  storeEnergy(respCorrs, ids, edet0, isoTk.eHcal_, isoTk.detIds_, isoTk.hitEnergies_);
1079  std::pair<double, double> ehcal0 =
1080  storeEnergy(respCorrs, hbhe, ids, isoTk.hitEnergiesRaw_, isoTk.hitEnergiesAux_);
1081  isoTk.eHcalRaw_ = ehcal0.first;
1082  isoTk.eHcalAux_ = ehcal0.second;
1083 
1084  //----- hcal energy in the extended cone 1 (a_coneR+10) --------------
1085  isoTk.eHcal10_ = spr::eCone_hcal(geo,
1086  hbhe,
1087  trkDetItr->pointHCAL,
1088  trkDetItr->pointECAL,
1089  a_coneR1_,
1090  trkDetItr->directionHCAL,
1091  nRecHits1,
1092  ids1,
1093  edet1,
1094  0);
1095  if (!oldID_.empty()) {
1096  for (unsigned k = 0; k < ids1.size(); ++k)
1097  ids1[k] = newId(ids1[k]);
1098  }
1099  storeEnergy(respCorrs, ids1, edet1, isoTk.eHcal10_, isoTk.detIds1_, isoTk.hitEnergies1_);
1100  std::pair<double, double> ehcal1 =
1101  storeEnergy(respCorrs, hbhe, ids1, isoTk.hitEnergies1Raw_, isoTk.hitEnergies1Aux_);
1102  isoTk.eHcal10Raw_ = ehcal1.first;
1103  isoTk.eHcal10Aux_ = ehcal1.second;
1104 
1105  //----- hcal energy in the extended cone 3 (a_coneR+30) --------------
1106  isoTk.eHcal30_ = spr::eCone_hcal(geo,
1107  hbhe,
1108  trkDetItr->pointHCAL,
1109  trkDetItr->pointECAL,
1110  a_coneR2_,
1111  trkDetItr->directionHCAL,
1112  nRecHits3,
1113  ids3,
1114  edet3,
1115  0);
1116  if (!oldID_.empty()) {
1117  for (unsigned k = 0; k < ids3.size(); ++k)
1118  ids3[k] = newId(ids3[k]);
1119  }
1120  storeEnergy(respCorrs, ids3, edet3, isoTk.eHcal30_, isoTk.detIds3_, isoTk.hitEnergies3_);
1121  std::pair<double, double> ehcal3 =
1122  storeEnergy(respCorrs, hbhe, ids3, isoTk.hitEnergies3Raw_, isoTk.hitEnergies3Aux_);
1123  isoTk.eHcal30Raw_ = ehcal3.first;
1124  isoTk.eHcal30Aux_ = ehcal3.second;
1125 
1126  if (isoTk.p_ > pTrackMin_)
1127  accept = true;
1128 #ifdef EDM_ML_DEBUG
1129  if (accept)
1130  flag += 64;
1131  if (debug_) {
1132  std::string ctype = accept ? " ***** ACCEPT *****" : "";
1133  edm::LogVerbatim("HcalIsoTrack")
1134  << "This track : " << nTracks << " (pt|eta|phi|p) : " << isoTk.pt_ << "|" << pTrack->eta() << "|"
1135  << isoTk.phi_ << "|" << isoTk.p_ << " Generator Level p " << isoTk.gentrackP_;
1136  edm::LogVerbatim("HcalIsoTrack")
1137  << "e_MIP " << isoTk.eMipDR_[0] << " Chg Isolation " << isoTk.hmaxNearP_ << " eHcal" << isoTk.eHcal_
1138  << ":" << isoTk.eHcalRaw_ << ":" << isoTk.eHcalAux_ << " ieta " << isoTk.ieta_ << " Quality "
1139  << isoTk.qltyMissFlag_ << ":" << isoTk.qltyPVFlag_ << ":" << isoTk.selectTk_ << ctype;
1140  for (unsigned int ll = 0; ll < isoTk.detIds_.size(); ll++) {
1141  edm::LogVerbatim("HcalIsoTrack")
1142  << "det id is = " << HcalDetId(isoTk.detIds_[ll]) << " hit enery is = " << isoTk.hitEnergies_[ll]
1143  << " : " << isoTk.hitEnergiesRaw_[ll] << " : " << isoTk.hitEnergiesAux_[ll];
1144  }
1145  for (unsigned int ll = 0; ll < isoTk.detIds1_.size(); ll++) {
1146  edm::LogVerbatim("HcalIsoTrack")
1147  << "det id is = " << HcalDetId(isoTk.detIds1_[ll]) << " hit enery is = " << isoTk.hitEnergies1_[ll]
1148  << " : " << isoTk.hitEnergies1Raw_[ll] << " : " << isoTk.hitEnergies1Aux_[ll];
1149  }
1150  for (unsigned int ll = 0; ll < isoTk.detIds3_.size(); ll++) {
1151  edm::LogVerbatim("HcalIsoTrack")
1152  << "det id is = " << HcalDetId(isoTk.detIds3_[ll]) << " hit enery is = " << isoTk.hitEnergies3_[ll]
1153  << " : " << isoTk.hitEnergies3Raw_[ll] << " : " << isoTk.hitEnergies3Aux_[ll];
1154  }
1155  }
1156 #endif
1157  if (accept) {
1158  hocalib.emplace_back(isoTk);
1159  nSave++;
1160  int type(0);
1161  if (isoTk.eMipDR_[0] < 1.0) {
1162  if (isoTk.hmaxNearP_ < eIsolate2_) {
1163  ++nLoose;
1164  type = 1;
1165  }
1166  if (isoTk.hmaxNearP_ < eIsolate1_) {
1167  ++nTight;
1168  type = 2;
1169  }
1170  }
1171  if (isoTk.p_ > 40.0 && isoTk.p_ <= 60.0 && isoTk.selectTk_) {
1172  hocalibEvent.ietaGood_.emplace_back(isoTk.ieta_);
1173  hocalibEvent.trackType_.emplace_back(type);
1174  }
1175 #ifdef EDM_ML_DEBUG
1176  for (unsigned int k = 0; k < isoTk.trgbits_.size(); k++) {
1177  edm::LogVerbatim("HcalIsoTrack") << "trigger bit is = " << isoTk.trgbits_[k];
1178  }
1179 #endif
1180  }
1181  }
1182  }
1183 #ifdef EDM_ML_DEBUG
1184  if (debug_) {
1185  if (isoTk.eMipDR_.empty())
1186  edm::LogVerbatim("HcalIsoTrack") << "Track " << nTracks << " Selection Flag " << std::hex << flag << std::dec
1187  << " Accept " << accept << " Momentum " << isoTk.p_ << ":" << pTrackMin_;
1188  else
1189  edm::LogVerbatim("HcalIsoTrack") << "Track " << nTracks << " Selection Flag " << std::hex << flag << std::dec
1190  << " Accept " << accept << " Momentum " << isoTk.p_ << ":" << pTrackMin_
1191  << " Ecal Energy " << isoTk.eMipDR_[0] << ":" << eEcalMax_
1192  << " Charge Isolation " << isoTk.hmaxNearP_ << ":" << eIsolation;
1193  }
1194 #endif
1195  }
1196  std::array<int, 3> i3{{nSave, nLoose, nTight}};
1197  return i3;
1198 }
double p() const
momentum vector magnitude
Definition: TrackBase.h:631
double eCone_hcal(const CaloGeometry *geo, edm::Handle< T > &hits, const GlobalPoint &hpoint1, const GlobalPoint &point1, double dR, const GlobalVector &trackMom, int &nRecHits, double hbThr=-100, double heThr=-100, double hfThr=-100, double hoThr=-100, double tMin=-500, double tMax=500, int detOnly=-1, int useRaw=0, bool debug=false)
Log< level::Info, true > LogVerbatim
std::vector< double > hitEnergies1Raw_
std::vector< double > hitEnergies3_
std::vector< unsigned int > detIds3_
std::vector< double > hitEnergies_
std::vector< unsigned int > detIds1_
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:649
Exp< T >::type exp(const T &t)
Definition: Exp.h:22
double chargeIsolationCone(unsigned int trkIndex, std::vector< spr::propagatedTrackDirection > &trkDirs, double dR, int &nNearTRKs, bool debug=false)
double px() const
x coordinate of momentum vector
Definition: TrackBase.h:640
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:31
std::vector< unsigned int > detIds_
void storeEnergy(const HcalRespCorrs *respCorrs, const std::vector< DetId > &ids, std::vector< double > &edet, double &eHcal, std::vector< unsigned int > &detIds, std::vector< double > &hitEnergies)
bool notaMuon(const reco::Track *pTrack0, const edm::Handle< reco::MuonCollection > &muonh)
std::vector< double > hitEnergiesRaw_
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
double dR(math::XYZTLorentzVector &, math::XYZTLorentzVector &)
spr::trackSelectionParameters selectionParameter_
double chargeIsolationEcal(unsigned int trkIndex, std::vector< spr::propagatedTrackID > &vdetIds, const CaloGeometry *geo, const CaloTopology *caloTopology, int ieta, int iphi, bool debug=false)
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:652
std::vector< double > hitEnergies1Aux_
double rhoh(const edm::Handle< CaloTowerCollection > &)
constexpr int iphi() const
get the cell iphi
Definition: HcalDetId.h:157
bool goodTrack(const reco::Track *pTrack, math::XYZPoint leadPV, trackSelectionParameters parameters, bool debug=false)
double pt() const
track transverse momentum
Definition: TrackBase.h:637
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
constexpr int ieta() const
get the cell ieta
Definition: HcalDetId.h:155
double eCone_ecal(const CaloGeometry *geo, edm::Handle< T > &barrelhits, edm::Handle< T > &endcaphits, const GlobalPoint &hpoint1, const GlobalPoint &point1, double dR, const GlobalVector &trackMom, int &nRecHits, double ebThr=-100, double eeThr=-100, double tMin=-500, double tMax=500, bool debug=false)
std::vector< double > hitEnergies1_
double trackP(const reco::Track *, const edm::Handle< reco::GenParticleCollection > &)
bool isValid() const
Definition: HandleBase.h:70
std::vector< double > hitEnergies3Raw_
double pz() const
z coordinate of momentum vector
Definition: TrackBase.h:646
Definition: DetId.h:17
double eThreshold(const DetId &id, const CaloGeometry *geo) const
std::vector< double > hitEnergies3Aux_
const std::vector< int > oldID_
std::vector< double > hitEnergiesAux_
double py() const
y coordinate of momentum vector
Definition: TrackBase.h:643
double eECALmatrix(const DetId &detId, edm::Handle< T > &hitsEB, edm::Handle< T > &hitsEE, const CaloGeometry *geo, const CaloTopology *caloTopology, int ieta, int iphi, double ebThr=-100, double eeThr=-100, double tMin=-500, double tMax=500, bool debug=false)
double eHCALmatrix(const HcalTopology *topology, const DetId &det, edm::Handle< T > &hits, int ieta, int iphi, bool includeHO=false, bool algoNew=true, double hbThr=-100, double heThr=-100, double hfThr=-100, double hoThr=-100, double tMin=-500, double tMax=500, int useRaw=0, bool debug=false)
void AlCaHcalIsotrkProducer::globalEndJob ( const alcaHcalIsoTracks::Counters counters)
static

Definition at line 736 of file AlCaHcalIsotrkProducer.cc.

References alcaHcalIsoTracks::Counters::nAll_, alcaHcalIsoTracks::Counters::nGood_, and alcaHcalIsoTracks::Counters::nRange_.

736  {
737  edm::LogVerbatim("HcalIsoTrack") << "Finds " << count->nGood_ << " good tracks in " << count->nAll_ << " events and "
738  << count->nRange_ << " events in the momentum range";
739 }
Log< level::Info, true > LogVerbatim
static std::unique_ptr<alcaHcalIsoTracks::Counters> AlCaHcalIsotrkProducer::initializeGlobalCache ( edm::ParameterSet const &  )
inlinestatic

Definition at line 96 of file AlCaHcalIsotrkProducer.cc.

96  {
97  return std::make_unique<alcaHcalIsoTracks::Counters>();
98  }
DetId AlCaHcalIsotrkProducer::newId ( const DetId id)
private

Definition at line 1265 of file AlCaHcalIsotrkProducer.cc.

References HcalDetId::depth(), hep17_, gpuClustering::id, HcalDetId::ieta(), HcalDetId::ietaAbs(), HcalDetId::iphi(), isotrackApplyRegressor::k, newDepth_, oldDepth_, oldDet_, oldEta_, oldID_, HcalDetId::subdet(), DetId::subdetId(), and HcalDetId::zside().

Referenced by getProducts().

1265  {
1266  HcalDetId hid(id);
1267  if (hep17_ && ((hid.iphi() < 63) || (hid.iphi() > 66) || (hid.zside() < 0)))
1268  return id;
1269  for (unsigned int k = 0; k < oldID_.size(); ++k) {
1270  if ((hid.subdetId() == oldDet_[k]) && (hid.ietaAbs() == oldEta_[k]) && (hid.depth() == oldDepth_[k])) {
1271  return static_cast<DetId>(HcalDetId(hid.subdet(), hid.ieta(), hid.iphi(), newDepth_[k]));
1272  }
1273  }
1274  return id;
1275 }
uint16_t *__restrict__ id
const std::vector< int > newDepth_
Definition: DetId.h:17
const std::vector< int > oldID_
bool AlCaHcalIsotrkProducer::notaMuon ( const reco::Track pTrack0,
const edm::Handle< reco::MuonCollection > &  muonh 
)
private

Definition at line 1415 of file AlCaHcalIsotrkProducer.cc.

References reco::deltaR(), dR(), reco::TrackBase::eta(), reco::TrackBase::phi(), and muon::segmentCompatibility().

Referenced by getProducts().

1415  {
1416  bool flag(true);
1417  for (reco::MuonCollection::const_iterator recMuon = muonh->begin(); recMuon != muonh->end(); ++recMuon) {
1418  if (recMuon->innerTrack().isNonnull()) {
1419  const reco::Track* pTrack = (recMuon->innerTrack()).get();
1420  bool mediumMuon = (((recMuon->isPFMuon()) && (recMuon->isGlobalMuon() || recMuon->isTrackerMuon())) &&
1421  (recMuon->innerTrack()->validFraction() > 0.49));
1422  if (mediumMuon) {
1423  double chiGlobal = ((recMuon->globalTrack().isNonnull()) ? recMuon->globalTrack()->normalizedChi2() : 999);
1424  bool goodGlob = (recMuon->isGlobalMuon() && chiGlobal < 3 &&
1425  recMuon->combinedQuality().chi2LocalPosition < 12 && recMuon->combinedQuality().trkKink < 20);
1426  mediumMuon = muon::segmentCompatibility(*recMuon) > (goodGlob ? 0.303 : 0.451);
1427  }
1428  if (mediumMuon) {
1429  double dR = reco::deltaR(pTrack->eta(), pTrack->phi(), pTrack0->eta(), pTrack0->phi());
1430  if (dR < 0.1) {
1431  flag = false;
1432  break;
1433  }
1434  }
1435  }
1436  }
1437  return flag;
1438 }
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:649
double dR(math::XYZTLorentzVector &, math::XYZTLorentzVector &)
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:652
float segmentCompatibility(const reco::Muon &muon, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:30
void AlCaHcalIsotrkProducer::produce ( edm::Event iEvent,
edm::EventSetup const &  iSetup 
)
override

Definition at line 455 of file AlCaHcalIsotrkProducer.cc.

References HcalIsoTrkEventVariables::allvertex_, ecalTB2006H4_GenSimDigiReco_cfg::bField, edm::EventBase::bunchCrossing(), debEvents_, debug_, l1t::L1TGlobalUtil::decisionsFinal(), fileCollector::done, trigger::TriggerObject::energy(), trigger::TriggerObject::eta(), edm::EventID::event(), trigger::TriggerEvent::filterKeys(), trigger::TriggerEvent::filterTag(), spr::find(), genParticleCandidates2GenParticles_cfi::genParticles, edm::EventSetup::getData(), edm::Event::getHandle(), trigger::TriggerEvent::getObjects(), getProducts(), ValidationMatrix::hlt, HcalIsoTrkEventVariables::hltbits_, hltConfig_, mps_fire::i, trigger::TriggerObject::id(), edm::EventBase::id(), ignoreTrigger_, isotrackApplyRegressor::k, HcalIsoTrkEventVariables::l1Bit_, l1Filter_, l1GtUtils_, l1TrigName_, l2Filter_, l3Filter_, label, edm::InputTag::label(), labelEB_, labelEE_, labelGenTrack_, labelHBHE_, labelIsoTkEvtVar_, labelIsoTkVar_, edm::EventBase::luminosityBlock(), trigger::TriggerObject::mass(), HLTConfigProvider::moduleLabels(), TrackingSourceConfig_Tier0_Cosmic_cff::modules, eostools::move(), nAll_, names, nGood_, nRange_, convertSQLiteXML::ok, trigger::TriggerObject::phi(), spr::propagateCALO(), trigger::TriggerObject::pt(), pTrackHigh_, pTrackLow_, edm::Event::put(), trigger::TriggerObject::px(), trigger::TriggerObject::py(), trigger::TriggerObject::pz(), l1t::L1TGlobalUtil::retrieveL1(), edm::EventID::run(), trigger::TriggerEvent::sizeFilters(), AlCaHLTBitMon_QueryRunRegistry::string, theTrackQuality_, tok_alg_, tok_bFieldH_, tok_bs_, tok_cala_, tok_caloTopology_, tok_EB_, tok_ecalChStatus_, tok_EE_, tok_ew_, tok_genTrack_, tok_geom_, tok_hbhe_, tok_htopo_, tok_Muon_, tok_parts_, tok_recVtx_, tok_resp_, tok_sevlv_, tok_trigEvt_, tok_trigRes_, HcalIsoTrkEventVariables::tracks_, HcalIsoTrkEventVariables::tracksLoose_, HcalIsoTrkEventVariables::tracksProp_, HcalIsoTrkEventVariables::tracksSaved_, HcalIsoTrkEventVariables::tracksTight_, triggerEvent_, HLTConfigProvider::triggerIndex(), edm::TriggerNames::triggerNames(), L1TMuonDQMOffline_cfi::triggerNames, edm::Event::triggerNames(), triggerResults, trigNames_, HcalIsoTrkEventVariables::trigPass_, HcalIsoTrkEventVariables::trigPassSel_, useL1Trigger_, x, y, and z.

455  {
456  nAll_++;
457  debug_ = (debEvents_.empty())
458  ? true
459  : (std::find(debEvents_.begin(), debEvents_.end(), iEvent.id().event()) != debEvents_.end());
460 #ifdef EDM_ML_DEBUG
461  if (debug_)
462  edm::LogVerbatim("HcalIsoTrack") << "Run " << iEvent.id().run() << " Event " << iEvent.id().event()
463  << " Luminosity " << iEvent.luminosityBlock() << " Bunch "
464  << iEvent.bunchCrossing();
465 #endif
466 
467  HcalIsoTrkEventVariables isoTrkEvent;
468  //Step1: Get all the relevant containers
469  const MagneticField* bField = &iSetup.getData(tok_bFieldH_);
470  const EcalChannelStatus* theEcalChStatus = &iSetup.getData(tok_ecalChStatus_);
471  const EcalSeverityLevelAlgo* theEcalSevlv = &iSetup.getData(tok_sevlv_);
472 
473  // get handles to calogeometry and calotopology
474  const CaloGeometry* geo = &iSetup.getData(tok_geom_);
475  const CaloTopology* caloTopology = &iSetup.getData(tok_caloTopology_);
476  const HcalTopology* theHBHETopology = &iSetup.getData(tok_htopo_);
477  const HcalRespCorrs* respCorrs = &iSetup.getData(tok_resp_);
478  bool okC(true);
479  //Get track collection
480  auto trkCollection = iEvent.getHandle(tok_genTrack_);
481  if (!trkCollection.isValid()) {
482  edm::LogWarning("HcalIsoTrack") << "Cannot access the collection " << labelGenTrack_;
483  okC = false;
484  }
485 
486  //Get muon collection
487  auto const& muonh = iEvent.getHandle(tok_Muon_);
488 
489  //Define the best vertex and the beamspot
490  auto const& recVtxs = iEvent.getHandle(tok_recVtx_);
491  auto const& beamSpotH = iEvent.getHandle(tok_bs_);
492  math::XYZPoint leadPV(0, 0, 0);
493  int goodPV(0);
494  if (recVtxs.isValid() && !(recVtxs->empty())) {
495  isoTrkEvent.allvertex_ = recVtxs->size();
496  for (unsigned int k = 0; k < recVtxs->size(); ++k) {
497  if (!((*recVtxs)[k].isFake()) && ((*recVtxs)[k].ndof() > 4)) {
498  if (goodPV == 0)
499  leadPV = math::XYZPoint((*recVtxs)[k].x(), (*recVtxs)[k].y(), (*recVtxs)[k].z());
500  goodPV++;
501  }
502  }
503  }
504  if (goodPV == 0 && beamSpotH.isValid()) {
505  leadPV = beamSpotH->position();
506  }
507 #ifdef EDM_ML_DEBUG
508  if (debug_) {
509  edm::LogVerbatim("HcalIsoTrack") << "Primary Vertex " << leadPV << " out of " << goodPV << " vertex";
510  if (beamSpotH.isValid())
511  edm::LogVerbatim("HcalIsoTrack") << " Beam Spot " << beamSpotH->position();
512  }
513 #endif
514 
515  // RecHits
516  auto barrelRecHitsHandle = iEvent.getHandle(tok_EB_);
517  if (!barrelRecHitsHandle.isValid()) {
518  edm::LogWarning("HcalIsoTrack") << "Cannot access the collection " << labelEB_;
519  okC = false;
520  }
521  auto endcapRecHitsHandle = iEvent.getHandle(tok_EE_);
522  if (!endcapRecHitsHandle.isValid()) {
523  edm::LogWarning("HcalIsoTrack") << "Cannot access the collection " << labelEE_;
524  okC = false;
525  }
526  auto hbhe = iEvent.getHandle(tok_hbhe_);
527  if (!hbhe.isValid()) {
528  edm::LogWarning("HcalIsoTrack") << "Cannot access the collection " << labelHBHE_;
529  okC = false;
530  }
531  auto caloTower = iEvent.getHandle(tok_cala_);
532 
533  //=== genParticle information
534  auto const& genParticles = iEvent.getHandle(tok_parts_);
535  auto const& genEventInfo = iEvent.getHandle(tok_ew_);
536  double eventWeight = (genEventInfo.isValid()) ? genEventInfo->weight() : 1.0;
537 
538  //Propagate tracks to calorimeter surface)
539  std::vector<spr::propagatedTrackDirection> trkCaloDirections;
540  spr::propagateCALO(trkCollection, geo, bField, theTrackQuality_, trkCaloDirections, false);
541  std::vector<spr::propagatedTrackID> trkCaloDets;
542  spr::propagateCALO(trkCollection, geo, bField, theTrackQuality_, trkCaloDets, false);
543  std::vector<math::XYZTLorentzVector> vecL1, vecL3;
544  isoTrkEvent.tracks_ = trkCollection->size();
545  isoTrkEvent.tracksProp_ = trkCaloDirections.size();
546  isoTrkEvent.hltbits_.assign(trigNames_.size(), false);
547 
548  if (!ignoreTrigger_) {
549  //L1
550  l1GtUtils_->retrieveL1(iEvent, iSetup, tok_alg_);
551  const std::vector<std::pair<std::string, bool>>& finalDecisions = l1GtUtils_->decisionsFinal();
552  for (const auto& decision : finalDecisions) {
553  if (decision.first.find(l1TrigName_) != std::string::npos) {
554  isoTrkEvent.l1Bit_ = decision.second;
555  break;
556  }
557  }
558 #ifdef EDM_ML_DEBUG
559  if (debug_)
560  edm::LogVerbatim("HcalIsoTrack") << "Trigger Information for " << l1TrigName_ << " is " << isoTrkEvent.l1Bit_
561  << " from a list of " << finalDecisions.size() << " decisions";
562 #endif
563 
564  //HLT
565  auto const& triggerResults = iEvent.getHandle(tok_trigRes_);
566  if (triggerResults.isValid()) {
568  const std::vector<std::string>& names = triggerNames.triggerNames();
569  if (!trigNames_.empty()) {
570  for (unsigned int iHLT = 0; iHLT < triggerResults->size(); iHLT++) {
571  int hlt = triggerResults->accept(iHLT);
572  for (unsigned int i = 0; i < trigNames_.size(); ++i) {
573  if (names[iHLT].find(trigNames_[i]) != std::string::npos) {
574  isoTrkEvent.hltbits_[i] = (hlt > 0);
575  if (hlt > 0)
576  isoTrkEvent.trigPass_ = true;
577 #ifdef EDM_ML_DEBUG
578  if (debug_)
579  edm::LogVerbatim("HcalIsoTrack")
580  << "This trigger " << names[iHLT] << " Flag " << hlt << ":" << isoTrkEvent.hltbits_[i];
581 #endif
582  }
583  }
584  }
585  }
586  }
587 #ifdef EDM_ML_DEBUG
588  if (debug_)
589  edm::LogVerbatim("HcalIsoTrack") << "HLT Information shows " << isoTrkEvent.trigPass_ << ":" << trigNames_.empty()
590  << ":" << okC;
591 #endif
592  }
593 
594  auto outputHcalIsoTrackColl = std::make_unique<HcalIsoTrkCalibVariablesCollection>();
595  std::array<int, 3> ntksave{{0, 0, 0}};
596  if (ignoreTrigger_ || useL1Trigger_) {
597  if (ignoreTrigger_ || isoTrkEvent.l1Bit_)
598  ntksave = getProducts(goodPV,
599  eventWeight,
600  vecL1,
601  vecL3,
602  leadPV,
603  trkCaloDirections,
604  trkCaloDets,
605  geo,
606  caloTopology,
607  theHBHETopology,
608  theEcalChStatus,
609  theEcalSevlv,
610  barrelRecHitsHandle,
611  endcapRecHitsHandle,
612  hbhe,
613  caloTower,
614  genParticles,
615  respCorrs,
616  muonh,
617  *outputHcalIsoTrackColl,
618  isoTrkEvent);
619  isoTrkEvent.tracksSaved_ = ntksave[0];
620  isoTrkEvent.tracksLoose_ = ntksave[1];
621  isoTrkEvent.tracksTight_ = ntksave[2];
622  } else {
623  trigger::TriggerEvent triggerEvent;
624  auto const& triggerEventHandle = iEvent.getHandle(tok_trigEvt_);
625  if (!triggerEventHandle.isValid()) {
626  edm::LogWarning("HcalIsoTrack") << "Error! Can't get the product " << triggerEvent_.label();
627  } else if (okC) {
628  triggerEvent = *(triggerEventHandle.product());
629  const trigger::TriggerObjectCollection& TOC(triggerEvent.getObjects());
630  bool done(false);
631  auto const& triggerResults = iEvent.getHandle(tok_trigRes_);
632  if (triggerResults.isValid()) {
633  std::vector<std::string> modules;
634  const edm::TriggerNames& triggerNames = iEvent.triggerNames(*triggerResults);
635  const std::vector<std::string>& names = triggerNames.triggerNames();
636  for (unsigned int iHLT = 0; iHLT < triggerResults->size(); iHLT++) {
637  bool ok = (isoTrkEvent.trigPass_) || (trigNames_.empty());
638  if (ok) {
639  unsigned int triggerindx = hltConfig_.triggerIndex(names[iHLT]);
640  const std::vector<std::string>& moduleLabels(hltConfig_.moduleLabels(triggerindx));
641  std::vector<math::XYZTLorentzVector> vecL2;
642  vecL1.clear();
643  vecL3.clear();
644  //loop over all trigger filters in event (i.e. filters passed)
645  for (unsigned int ifilter = 0; ifilter < triggerEvent.sizeFilters(); ++ifilter) {
646  std::vector<int> Keys;
647  std::string label = triggerEvent.filterTag(ifilter).label();
648  //loop over keys to objects passing this filter
649  for (unsigned int imodule = 0; imodule < moduleLabels.size(); imodule++) {
650  if (label.find(moduleLabels[imodule]) != std::string::npos) {
651 #ifdef EDM_ML_DEBUG
652  if (debug_)
653  edm::LogVerbatim("HcalIsoTrack") << "FilterName " << label;
654 #endif
655  for (unsigned int ifiltrKey = 0; ifiltrKey < triggerEvent.filterKeys(ifilter).size(); ++ifiltrKey) {
656  Keys.push_back(triggerEvent.filterKeys(ifilter)[ifiltrKey]);
657  const trigger::TriggerObject& TO(TOC[Keys[ifiltrKey]]);
658  math::XYZTLorentzVector v4(TO.px(), TO.py(), TO.pz(), TO.energy());
659  if (label.find(l2Filter_) != std::string::npos) {
660  vecL2.push_back(v4);
661  } else if (label.find(l3Filter_) != std::string::npos) {
662  vecL3.push_back(v4);
663  } else if ((label.find(l1Filter_) != std::string::npos) || (l1Filter_.empty())) {
664  vecL1.push_back(v4);
665  }
666 #ifdef EDM_ML_DEBUG
667  if (debug_)
668  edm::LogVerbatim("HcalIsoTrack")
669  << "key " << ifiltrKey << " : pt " << TO.pt() << " eta " << TO.eta() << " phi " << TO.phi()
670  << " mass " << TO.mass() << " Id " << TO.id();
671 #endif
672  }
673 #ifdef EDM_ML_DEBUG
674  if (debug_)
675  edm::LogVerbatim("HcalIsoTrack")
676  << "sizes " << vecL1.size() << ":" << vecL2.size() << ":" << vecL3.size();
677 #endif
678  }
679  }
680  }
681 
682  // Now Make the products for all selected tracks
683  if (!done) {
684  ntksave = getProducts(goodPV,
685  eventWeight,
686  vecL1,
687  vecL3,
688  leadPV,
689  trkCaloDirections,
690  trkCaloDets,
691  geo,
692  caloTopology,
693  theHBHETopology,
694  theEcalChStatus,
695  theEcalSevlv,
696  barrelRecHitsHandle,
697  endcapRecHitsHandle,
698  hbhe,
699  caloTower,
700  genParticles,
701  respCorrs,
702  muonh,
703  *outputHcalIsoTrackColl,
704  isoTrkEvent);
705  isoTrkEvent.tracksSaved_ += ntksave[0];
706  isoTrkEvent.tracksLoose_ += ntksave[1];
707  isoTrkEvent.tracksTight_ += ntksave[2];
708  done = true;
709  }
710  }
711  }
712  }
713  }
714  }
715  isoTrkEvent.trigPassSel_ = (isoTrkEvent.tracksSaved_ > 0);
716  if (isoTrkEvent.trigPassSel_) {
717  ++nGood_;
718  for (auto itr = outputHcalIsoTrackColl->begin(); itr != outputHcalIsoTrackColl->end(); ++itr) {
719  if (itr->p_ > pTrackLow_ && itr->p_ < pTrackHigh_)
720  ++nRange_;
721  }
722  }
723 
724  auto outputEventcol = std::make_unique<HcalIsoTrkEventVariablesCollection>();
725  outputEventcol->emplace_back(isoTrkEvent);
726  iEvent.put(std::move(outputEventcol), labelIsoTkEvtVar_);
727  iEvent.put(std::move(outputHcalIsoTrackColl), labelIsoTkVar_);
728 }
RunNumber_t run() const
Definition: EventID.h:38
Log< level::Info, true > LogVerbatim
EventNumber_t event() const
Definition: EventID.h:40
edm::EDGetTokenT< reco::TrackCollection > tok_genTrack_
std::vector< spr::propagatedTrackID > propagateCALO(edm::Handle< reco::TrackCollection > &trkCollection, const CaloGeometry *geo, const MagneticField *bField, const std::string &theTrackQuality, bool debug=false)
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
The single EDProduct to be saved for each event (AOD case)
Definition: TriggerEvent.h:25
trigger::size_type sizeFilters() const
Definition: TriggerEvent.h:146
const Keys & filterKeys(trigger::size_type index) const
Definition: TriggerEvent.h:118
edm::EDGetTokenT< EcalRecHitCollection > tok_EB_
edm::EDGetTokenT< trigger::TriggerEvent > tok_trigEvt_
int bunchCrossing() const
Definition: EventBase.h:64
edm::EDGetTokenT< HBHERecHitCollection > tok_hbhe_
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:61
const std::string labelIsoTkEvtVar_
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
edm::EDGetTokenT< reco::GenParticleCollection > tok_parts_
Strings const & triggerNames() const
Definition: TriggerNames.cc:48
const std::string names[nVars_]
edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const override
Definition: Event.cc:275
unsigned int triggerIndex(const std::string &triggerName) const
slot position of trigger path in trigger table (0 to size-1)
Single trigger physics object (e.g., an isolated muon)
Definition: TriggerObject.h:21
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
edm::EDGetTokenT< BXVector< GlobalAlgBlk > > tok_alg_
char const * label
Handle< PROD > getHandle(EDGetTokenT< PROD > token) const
Definition: Event.h:563
edm::EDGetTokenT< CaloTowerCollection > tok_cala_
const std::vector< int > debEvents_
const edm::InputTag triggerEvent_
const TriggerObjectCollection & getObjects() const
Definition: TriggerEvent.h:101
l1t::L1TGlobalUtil * l1GtUtils_
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > tok_geom_
def move
Definition: eostools.py:511
static std::string const triggerResults
Definition: EdmProvDump.cc:44
edm::ESGetToken< HcalTopology, HcalRecNumberingRecord > tok_htopo_
edm::ESGetToken< EcalSeverityLevelAlgo, EcalSeverityLevelAlgoRcd > tok_sevlv_
edm::EDGetTokenT< reco::BeamSpot > tok_bs_
const std::vector< std::string > & moduleLabels(unsigned int trigger) const
label(s) of module(s) on a trigger path
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
Definition: TriggerObject.h:75
edm::EDGetTokenT< reco::MuonCollection > tok_Muon_
const edm::InputTag filterTag(trigger::size_type index) const
Definition: TriggerEvent.h:108
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > tok_bFieldH_
edm::EDGetTokenT< EcalRecHitCollection > tok_EE_
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
std::vector< size_type > Keys
std::string const & label() const
Definition: InputTag.h:36
edm::EventID id() const
Definition: EventBase.h:59
edm::EDGetTokenT< GenEventInfoProduct > tok_ew_
edm::ESGetToken< EcalChannelStatus, EcalChannelStatusRcd > tok_ecalChStatus_
edm::EDGetTokenT< edm::TriggerResults > tok_trigRes_
const std::vector< std::pair< std::string, bool > > & decisionsFinal()
edm::ESGetToken< HcalRespCorrs, HcalRespCorrsRcd > tok_resp_
edm::ESGetToken< CaloTopology, CaloTopologyRecord > tok_caloTopology_
Log< level::Warning, false > LogWarning
const std::string theTrackQuality_
std::array< int, 3 > getProducts(int goodPV, double eventWeight, std::vector< math::XYZTLorentzVector > &vecL1, std::vector< math::XYZTLorentzVector > &vecL3, math::XYZPoint &leadPV, std::vector< spr::propagatedTrackDirection > &trkCaloDirections, std::vector< spr::propagatedTrackID > &trkCaloDets, const CaloGeometry *geo, const CaloTopology *topo, const HcalTopology *theHBHETopology, const EcalChannelStatus *theEcalChStatus, const EcalSeverityLevelAlgo *theEcalSevlv, edm::Handle< EcalRecHitCollection > &barrelRecHitsHandle, edm::Handle< EcalRecHitCollection > &endcapRecHitsHandle, edm::Handle< HBHERecHitCollection > &hbhe, edm::Handle< CaloTowerCollection > &towerHandle, const edm::Handle< reco::GenParticleCollection > &genParticles, const HcalRespCorrs *respCorrs, const edm::Handle< reco::MuonCollection > &muonh, std::vector< HcalIsoTrkCalibVariables > &hocalib, HcalIsoTrkEventVariables &hocalibEvent)
const std::vector< std::string > trigNames_
void retrieveL1(const edm::Event &iEvent, const edm::EventSetup &evSetup)
initialize the class (mainly reserve)
edm::EDGetTokenT< reco::VertexCollection > tok_recVtx_
double AlCaHcalIsotrkProducer::rhoh ( const edm::Handle< CaloTowerCollection > &  tower)
private

Definition at line 1220 of file AlCaHcalIsotrkProducer.cc.

References debug_, reco::deltaPhi(), PVValHelper::eta, etabins_, etadist_, etahalfdist_, phi, phibins_, phidist_, and phihalfdist_.

Referenced by getProducts().

1220  {
1221  std::vector<double> sumPFNallSMDQH2;
1222  sumPFNallSMDQH2.reserve(phibins_.size() * etabins_.size());
1223  for (auto eta : etabins_) {
1224  for (auto phi : phibins_) {
1225  double hadder = 0;
1226  for (const auto& pf_it : (*tower)) {
1227  if (fabs(eta - pf_it.eta()) > etahalfdist_)
1228  continue;
1229  if (fabs(reco::deltaPhi(phi, pf_it.phi())) > phihalfdist_)
1230  continue;
1231  hadder += pf_it.hadEt();
1232  }
1233  sumPFNallSMDQH2.emplace_back(hadder);
1234  }
1235  }
1236 
1237  double evt_smdq(0);
1238  std::sort(sumPFNallSMDQH2.begin(), sumPFNallSMDQH2.end());
1239  if (sumPFNallSMDQH2.size() % 2)
1240  evt_smdq = sumPFNallSMDQH2[(sumPFNallSMDQH2.size() - 1) / 2];
1241  else
1242  evt_smdq = (sumPFNallSMDQH2[sumPFNallSMDQH2.size() / 2] + sumPFNallSMDQH2[(sumPFNallSMDQH2.size() - 2) / 2]) / 2.;
1243  double rhoh = evt_smdq / (etadist_ * phidist_);
1244 #ifdef EDM_ML_DEBUG
1245  if (debug_)
1246  edm::LogVerbatim("HcalIsoTrack") << "Rho " << evt_smdq << ":" << rhoh;
1247 #endif
1248  return rhoh;
1249 }
constexpr double deltaPhi(double phi1, double phi2)
Definition: deltaPhi.h:26
Log< level::Info, true > LogVerbatim
std::vector< double > phibins_
double rhoh(const edm::Handle< CaloTowerCollection > &)
std::vector< double > etabins_
void AlCaHcalIsotrkProducer::storeEnergy ( const HcalRespCorrs respCorrs,
const std::vector< DetId > &  ids,
std::vector< double > &  edet,
double &  eHcal,
std::vector< unsigned int > &  detIds,
std::vector< double > &  hitEnergies 
)
private

Definition at line 1277 of file AlCaHcalIsotrkProducer.cc.

References funct::abs(), collapseDepth_, alignCSCRings::corr, debug_, reco::JetExtendedAssociation::getValue(), HcalCondObjectContainer< Item >::getValues(), hcalScale_, hdc_, gpuClustering::id, isotrackApplyRegressor::k, HcalDDDRecConstants::mergedDepthDetId(), and unCorrect_.

Referenced by getProducts().

1282  {
1283  double ehcal(0);
1284  if (unCorrect_) {
1285  for (unsigned int k = 0; k < ids.size(); ++k) {
1286  double corr = (respCorrs->getValues(ids[k]))->getValue();
1287  if (corr != 0)
1288  edet[k] /= corr;
1289  ehcal += edet[k];
1290  }
1291  } else {
1292  for (const auto& en : edet)
1293  ehcal += en;
1294  }
1295  if ((std::abs(ehcal - eHcal) > 0.001) && (!unCorrect_))
1296  edm::LogWarning("HcalIsoTrack") << "Check inconsistent energies: " << eHcal << ":" << ehcal << " from "
1297  << ids.size() << " cells";
1298  eHcal = hcalScale_ * ehcal;
1299 
1300  if (collapseDepth_) {
1301  std::map<HcalDetId, double> hitMap;
1302  for (unsigned int k = 0; k < ids.size(); ++k) {
1303  HcalDetId id = hdc_->mergedDepthDetId(HcalDetId(ids[k]));
1304  auto itr = hitMap.find(id);
1305  if (itr == hitMap.end()) {
1306  hitMap[id] = edet[k];
1307  } else {
1308  (itr->second) += edet[k];
1309  }
1310  }
1311  detIds.reserve(hitMap.size());
1312  hitEnergies.reserve(hitMap.size());
1313  for (const auto& hit : hitMap) {
1314  detIds.emplace_back(hit.first.rawId());
1315  hitEnergies.emplace_back(hit.second);
1316  }
1317  } else {
1318  detIds.reserve(ids.size());
1319  hitEnergies.reserve(ids.size());
1320  for (unsigned int k = 0; k < ids.size(); ++k) {
1321  detIds.emplace_back(ids[k].rawId());
1322  hitEnergies.emplace_back(edet[k]);
1323  }
1324  }
1325 #ifdef EDM_ML_DEBUG
1326  if (debug_) {
1327  edm::LogVerbatim("HcalIsoTrack") << "StoreEnergy1::Input to storeEnergy with " << ids.size() << " cells";
1328  for (unsigned int k = 0; k < ids.size(); ++k)
1329  edm::LogVerbatim("HcalIsoTrack") << "Hit [" << k << "] " << HcalDetId(ids[k]) << " E " << edet[k];
1330  edm::LogVerbatim("HcalIsoTrack") << "StoreEnergy1::Output of storeEnergy with " << detIds.size()
1331  << " cells and Etot " << eHcal;
1332  for (unsigned int k = 0; k < detIds.size(); ++k)
1333  edm::LogVerbatim("HcalIsoTrack") << "Hit [" << k << "] " << HcalDetId(detIds[k]) << " E " << hitEnergies[k];
1334  }
1335 #endif
1336 }
Log< level::Info, true > LogVerbatim
uint16_t *__restrict__ id
HcalDetId mergedDepthDetId(const HcalDetId &id) const
const Item * getValues(DetId fId, bool throwOnFail=true) const
const HcalDDDRecConstants * hdc_
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
const JetExtendedData & getValue(const Container &, const reco::JetBaseRef &)
get value for the association. Throw exception if no association found
Log< level::Warning, false > LogWarning
std::pair< double, double > AlCaHcalIsotrkProducer::storeEnergy ( const HcalRespCorrs respCorrs,
edm::Handle< HBHERecHitCollection > &  hbhe,
const std::vector< DetId > &  ids,
std::vector< double > &  hitEnergy1,
std::vector< double > &  hitEnergy2 
)
private

Definition at line 1338 of file AlCaHcalIsotrkProducer.cc.

References collapseDepth_, alignCSCRings::corr, debug_, alignCSCRings::e, first, reco::JetExtendedAssociation::getValue(), HcalCondObjectContainer< Item >::getValues(), hcalScale_, hdc_, gpuClustering::id, isotrackApplyRegressor::k, HcalDDDRecConstants::mergedDepthDetId(), edm::second(), and unCorrect_.

1342  {
1343  double ehcal1(0), ehcal2(0);
1344  std::vector<double> edet1, edet2;
1345  for (unsigned int k = 0; k < ids.size(); ++k) {
1346  double e1(0), e2(0);
1347  for (auto itr = hbhe->begin(); itr != hbhe->end(); ++itr) {
1348  if (itr->id() == ids[k]) {
1349  e1 = itr->eraw();
1350  e2 = itr->eaux();
1351  break;
1352  }
1353  }
1354  if (e1 < 1.e-10)
1355  e1 = 0;
1356  if (e2 < 1.e-10)
1357  e2 = 0;
1358  edet1.emplace_back(e1);
1359  edet2.emplace_back(e2);
1360  }
1361  if (unCorrect_) {
1362  for (unsigned int k = 0; k < ids.size(); ++k) {
1363  double corr = (respCorrs->getValues(ids[k]))->getValue();
1364  if (corr != 0) {
1365  edet1[k] /= corr;
1366  edet2[k] /= corr;
1367  }
1368  }
1369  }
1370  for (unsigned int k = 0; k < ids.size(); ++k) {
1371  ehcal1 += edet1[k];
1372  ehcal2 += edet2[k];
1373  }
1374  ehcal1 *= hcalScale_;
1375  ehcal2 *= hcalScale_;
1376 
1377  if (collapseDepth_) {
1378  std::map<HcalDetId, std::pair<double, double>> hitMap;
1379  for (unsigned int k = 0; k < ids.size(); ++k) {
1380  HcalDetId id = hdc_->mergedDepthDetId(HcalDetId(ids[k]));
1381  auto itr = hitMap.find(id);
1382  if (itr == hitMap.end()) {
1383  hitMap[id] = std::make_pair(edet1[k], edet2[k]);
1384  } else {
1385  (itr->second).first += edet1[k];
1386  (itr->second).second += edet2[k];
1387  }
1388  }
1389  hitEnergy1.reserve(hitMap.size());
1390  hitEnergy2.reserve(hitMap.size());
1391  for (const auto& hit : hitMap) {
1392  hitEnergy1.emplace_back(hit.second.first);
1393  hitEnergy2.emplace_back(hit.second.second);
1394  }
1395  } else {
1396  hitEnergy1.reserve(ids.size());
1397  hitEnergy2.reserve(ids.size());
1398  for (unsigned int k = 0; k < ids.size(); ++k) {
1399  hitEnergy1.emplace_back(edet1[k]);
1400  hitEnergy2.emplace_back(edet2[k]);
1401  }
1402  }
1403 #ifdef EDM_ML_DEBUG
1404  if (debug_) {
1405  edm::LogVerbatim("HcalIsoTrack") << "StoreEnergy2::Input to storeEnergy with " << ids.size() << " cells";
1406  edm::LogVerbatim("HcalIsoTrack") << "StoreEnergy2::Output of storeEnergy with " << hitEnergy1.size()
1407  << " cells and Etot " << ehcal1 << ":" << ehcal2;
1408  for (unsigned int k = 0; k < hitEnergy1.size(); ++k)
1409  edm::LogVerbatim("HcalIsoTrack") << "Hit [" << k << "] " << hitEnergy1[k] << " : " << hitEnergy2[k];
1410  }
1411 #endif
1412  return std::make_pair(ehcal1, ehcal2);
1413 }
Log< level::Info, true > LogVerbatim
uint16_t *__restrict__ id
HcalDetId mergedDepthDetId(const HcalDetId &id) const
const Item * getValues(DetId fId, bool throwOnFail=true) const
U second(std::pair< T, U > const &p)
const HcalDDDRecConstants * hdc_
const JetExtendedData & getValue(const Container &, const reco::JetBaseRef &)
get value for the association. Throw exception if no association found
double AlCaHcalIsotrkProducer::trackP ( const reco::Track pTrack,
const edm::Handle< reco::GenParticleCollection > &  genParticles 
)
private

Definition at line 1204 of file AlCaHcalIsotrkProducer.cc.

References reco::deltaR(), dR(), reco::TrackBase::eta(), edm::HandleBase::isValid(), AlCaHLTBitMon_ParallelJobs::p, reco::TrackBase::phi(), and isotrackTrainRegressor::pmom.

Referenced by getProducts().

1205  {
1206  double pmom = -1.0;
1207  if (genParticles.isValid()) {
1208  double mindR(999.9);
1209  for (const auto& p : (*genParticles)) {
1210  double dR = reco::deltaR(pTrack->eta(), pTrack->phi(), p.momentum().Eta(), p.momentum().Phi());
1211  if (dR < mindR) {
1212  mindR = dR;
1213  pmom = p.momentum().R();
1214  }
1215  }
1216  }
1217  return pmom;
1218 }
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:649
double dR(math::XYZTLorentzVector &, math::XYZTLorentzVector &)
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:652
bool isValid() const
Definition: HandleBase.h:70
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:30

Member Data Documentation

double AlCaHcalIsotrkProducer::a_charIsoR_
private

Definition at line 174 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and getProducts().

double AlCaHcalIsotrkProducer::a_coneR1_
private

Definition at line 174 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and getProducts().

double AlCaHcalIsotrkProducer::a_coneR2_
private

Definition at line 174 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and getProducts().

const double AlCaHcalIsotrkProducer::a_coneR_
private

Definition at line 156 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and getProducts().

const double AlCaHcalIsotrkProducer::a_mipR2_
private

Definition at line 156 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and getProducts().

const double AlCaHcalIsotrkProducer::a_mipR3_
private

Definition at line 156 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and getProducts().

const double AlCaHcalIsotrkProducer::a_mipR4_
private

Definition at line 157 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and getProducts().

const double AlCaHcalIsotrkProducer::a_mipR5_
private

Definition at line 157 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and getProducts().

const double AlCaHcalIsotrkProducer::a_mipR_
private

Definition at line 156 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and getProducts().

const bool AlCaHcalIsotrkProducer::collapseDepth_
private

Definition at line 162 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and storeEnergy().

const std::vector<int> AlCaHcalIsotrkProducer::debEvents_
private

Definition at line 172 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

bool AlCaHcalIsotrkProducer::debug_
private

Definition at line 203 of file AlCaHcalIsotrkProducer.cc.

Referenced by getProducts(), produce(), rhoh(), and storeEnergy().

const double AlCaHcalIsotrkProducer::eEcalMax_
private

Definition at line 157 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and getProducts().

const double AlCaHcalIsotrkProducer::eIsolate1_
private

Definition at line 159 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and getProducts().

const double AlCaHcalIsotrkProducer::eIsolate2_
private

Definition at line 159 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and getProducts().

std::vector<double> AlCaHcalIsotrkProducer::etabins_
private

Definition at line 176 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and rhoh().

double AlCaHcalIsotrkProducer::etadist_
private

Definition at line 178 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and rhoh().

double AlCaHcalIsotrkProducer::etahalfdist_
private

Definition at line 178 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and rhoh().

const double AlCaHcalIsotrkProducer::hcalScale_
private

Definition at line 159 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and storeEnergy().

const HcalDDDRecConstants* AlCaHcalIsotrkProducer::hdc_
private

Definition at line 175 of file AlCaHcalIsotrkProducer.cc.

Referenced by beginRun(), and storeEnergy().

const bool AlCaHcalIsotrkProducer::hep17_
private

Definition at line 170 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and newId().

const double AlCaHcalIsotrkProducer::hitEthrEB_
private

Definition at line 163 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and eThreshold().

const double AlCaHcalIsotrkProducer::hitEthrEE0_
private

Definition at line 163 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and eThreshold().

const double AlCaHcalIsotrkProducer::hitEthrEE1_
private

Definition at line 163 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and eThreshold().

const double AlCaHcalIsotrkProducer::hitEthrEE2_
private

Definition at line 164 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and eThreshold().

const double AlCaHcalIsotrkProducer::hitEthrEE3_
private

Definition at line 164 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and eThreshold().

const double AlCaHcalIsotrkProducer::hitEthrEEHi_
private

Definition at line 165 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and eThreshold().

const double AlCaHcalIsotrkProducer::hitEthrEELo_
private

Definition at line 165 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and eThreshold().

HLTConfigProvider AlCaHcalIsotrkProducer::hltConfig_
private

Definition at line 149 of file AlCaHcalIsotrkProducer.cc.

Referenced by beginRun(), and produce().

const bool AlCaHcalIsotrkProducer::ignoreTrigger_
private

Definition at line 161 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), beginRun(), and produce().

const std::string AlCaHcalIsotrkProducer::l1Filter_
private

Definition at line 154 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

l1t::L1TGlobalUtil* AlCaHcalIsotrkProducer::l1GtUtils_
private

Definition at line 148 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

const std::string AlCaHcalIsotrkProducer::l1TrigName_
private

Definition at line 168 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

const std::string AlCaHcalIsotrkProducer::l2Filter_
private

Definition at line 155 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

const std::string AlCaHcalIsotrkProducer::l3Filter_
private

Definition at line 155 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

const std::string AlCaHcalIsotrkProducer::labelEB_
private

Definition at line 167 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

const std::string AlCaHcalIsotrkProducer::labelEE_
private

Definition at line 168 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

const std::string AlCaHcalIsotrkProducer::labelGenTrack_
private

Definition at line 167 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

const std::string AlCaHcalIsotrkProducer::labelHBHE_
private

Definition at line 168 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

const std::string AlCaHcalIsotrkProducer::labelIsoTkEvtVar_
private

Definition at line 171 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

const std::string AlCaHcalIsotrkProducer::labelIsoTkVar_
private

Definition at line 171 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

const std::string AlCaHcalIsotrkProducer::labelRecVtx_
private

Definition at line 167 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer().

const std::string AlCaHcalIsotrkProducer::labelTower_
private

Definition at line 168 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer().

const double AlCaHcalIsotrkProducer::maxRestrictionP_
private

Definition at line 158 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and getProducts().

unsigned int AlCaHcalIsotrkProducer::nAll_
private

Definition at line 150 of file AlCaHcalIsotrkProducer.cc.

Referenced by endStream(), and produce().

const std::vector<int> AlCaHcalIsotrkProducer::newDepth_
private

Definition at line 169 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and newId().

unsigned int AlCaHcalIsotrkProducer::nGood_
private

Definition at line 150 of file AlCaHcalIsotrkProducer.cc.

Referenced by endStream(), and produce().

unsigned int AlCaHcalIsotrkProducer::nRange_
private

Definition at line 150 of file AlCaHcalIsotrkProducer.cc.

Referenced by endStream(), and produce().

unsigned int AlCaHcalIsotrkProducer::nRun_
private

Definition at line 150 of file AlCaHcalIsotrkProducer.cc.

Referenced by beginRun(), and endRun().

std::vector<int> AlCaHcalIsotrkProducer::oldDepth_
private

Definition at line 177 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and newId().

std::vector<int> AlCaHcalIsotrkProducer::oldDet_
private

Definition at line 177 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and newId().

std::vector<int> AlCaHcalIsotrkProducer::oldEta_
private

Definition at line 177 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and newId().

const std::vector<int> AlCaHcalIsotrkProducer::oldID_
private

Definition at line 169 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), getProducts(), and newId().

std::vector<double> AlCaHcalIsotrkProducer::phibins_
private

Definition at line 176 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and rhoh().

double AlCaHcalIsotrkProducer::phidist_
private

Definition at line 178 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and rhoh().

double AlCaHcalIsotrkProducer::phihalfdist_
private

Definition at line 178 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and rhoh().

const std::string AlCaHcalIsotrkProducer::processName_
private

Definition at line 154 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and beginRun().

const double AlCaHcalIsotrkProducer::pTrackHigh_
private

Definition at line 160 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

const double AlCaHcalIsotrkProducer::pTrackLow_
private

Definition at line 160 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

const double AlCaHcalIsotrkProducer::pTrackMin_
private

Definition at line 157 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and getProducts().

spr::trackSelectionParameters AlCaHcalIsotrkProducer::selectionParameter_
private

Definition at line 152 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and getProducts().

const double AlCaHcalIsotrkProducer::slopeRestrictionP_
private

Definition at line 158 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and getProducts().

const std::string AlCaHcalIsotrkProducer::theTrackQuality_
private

Definition at line 153 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

const edm::InputTag AlCaHcalIsotrkProducer::theTriggerResultsLabel_
private

Definition at line 166 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer().

edm::EDGetTokenT<BXVector<GlobalAlgBlk> > AlCaHcalIsotrkProducer::tok_alg_
private

Definition at line 191 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> AlCaHcalIsotrkProducer::tok_bFieldH_
private

Definition at line 195 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

edm::EDGetTokenT<reco::BeamSpot> AlCaHcalIsotrkProducer::tok_bs_
private

Definition at line 185 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

edm::EDGetTokenT<CaloTowerCollection> AlCaHcalIsotrkProducer::tok_cala_
private

Definition at line 189 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

edm::ESGetToken<CaloTopology, CaloTopologyRecord> AlCaHcalIsotrkProducer::tok_caloTopology_
private

Definition at line 199 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

edm::ESGetToken<HcalDDDRecConstants, HcalRecNumberingRecord> AlCaHcalIsotrkProducer::tok_ddrec_
private

Definition at line 194 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and beginRun().

edm::EDGetTokenT<EcalRecHitCollection> AlCaHcalIsotrkProducer::tok_EB_
private

Definition at line 186 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

edm::ESGetToken<EcalChannelStatus, EcalChannelStatusRcd> AlCaHcalIsotrkProducer::tok_ecalChStatus_
private

Definition at line 196 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

edm::EDGetTokenT<EcalRecHitCollection> AlCaHcalIsotrkProducer::tok_EE_
private

Definition at line 187 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

edm::EDGetTokenT<GenEventInfoProduct> AlCaHcalIsotrkProducer::tok_ew_
private

Definition at line 190 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

edm::EDGetTokenT<reco::TrackCollection> AlCaHcalIsotrkProducer::tok_genTrack_
private

Definition at line 183 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

edm::ESGetToken<CaloGeometry, CaloGeometryRecord> AlCaHcalIsotrkProducer::tok_geom_
private

Definition at line 198 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

edm::EDGetTokenT<HBHERecHitCollection> AlCaHcalIsotrkProducer::tok_hbhe_
private

Definition at line 188 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

edm::ESGetToken<HcalTopology, HcalRecNumberingRecord> AlCaHcalIsotrkProducer::tok_htopo_
private

Definition at line 200 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

edm::EDGetTokenT<reco::MuonCollection> AlCaHcalIsotrkProducer::tok_Muon_
private

Definition at line 192 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

edm::EDGetTokenT<reco::GenParticleCollection> AlCaHcalIsotrkProducer::tok_parts_
private

Definition at line 182 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

edm::EDGetTokenT<reco::VertexCollection> AlCaHcalIsotrkProducer::tok_recVtx_
private

Definition at line 184 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

edm::ESGetToken<HcalRespCorrs, HcalRespCorrsRcd> AlCaHcalIsotrkProducer::tok_resp_
private

Definition at line 201 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

edm::ESGetToken<EcalSeverityLevelAlgo, EcalSeverityLevelAlgoRcd> AlCaHcalIsotrkProducer::tok_sevlv_
private

Definition at line 197 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

edm::EDGetTokenT<trigger::TriggerEvent> AlCaHcalIsotrkProducer::tok_trigEvt_
private

Definition at line 180 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

edm::EDGetTokenT<edm::TriggerResults> AlCaHcalIsotrkProducer::tok_trigRes_
private

Definition at line 181 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

const edm::InputTag AlCaHcalIsotrkProducer::triggerEvent_
private

Definition at line 166 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

const std::vector<std::string> AlCaHcalIsotrkProducer::trigNames_
private

Definition at line 151 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().

const bool AlCaHcalIsotrkProducer::unCorrect_
private

Definition at line 162 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and storeEnergy().

const bool AlCaHcalIsotrkProducer::useL1Trigger_
private

Definition at line 161 of file AlCaHcalIsotrkProducer.cc.

Referenced by AlCaHcalIsotrkProducer(), and produce().