CMS 3D CMS Logo

AlCaIsoTracksFilter.cc
Go to the documentation of this file.
1 // system include files
2 #include <atomic>
3 #include <memory>
4 #include <cmath>
5 #include <iostream>
6 #include <sstream>
7 #include <fstream>
8 
9 // user include files
19 
21 //Tracks
26 // Vertices
30 // RecHits
33 //Triggers
36 
38 
43 
56 
57 //
58 // class declaration
59 //
60 
61 namespace AlCaIsoTracks {
62  struct Counters {
63  Counters() : nAll_(0), nGood_(0), nRange_(0), nHigh_(0) {}
64  mutable std::atomic<unsigned int> nAll_, nGood_, nRange_, nHigh_;
65  };
66 } // namespace AlCaIsoTracks
67 
68 class AlCaIsoTracksFilter : public edm::stream::EDFilter<edm::GlobalCache<AlCaIsoTracks::Counters> > {
69 public:
71  ~AlCaIsoTracksFilter() override;
72 
73  static std::unique_ptr<AlCaIsoTracks::Counters> initializeGlobalCache(edm::ParameterSet const& iConfig) {
74  return std::make_unique<AlCaIsoTracks::Counters>();
75  }
76 
77  bool filter(edm::Event&, edm::EventSetup const&) override;
78  void endStream() override;
79  static void globalEndJob(const AlCaIsoTracks::Counters* counters);
80  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
81 
82 private:
83  void beginRun(edm::Run const&, edm::EventSetup const&) override;
84  void endRun(edm::Run const&, edm::EventSetup const&) override;
85 
86  // ----------member data ---------------------------
88  const std::vector<std::string> trigNames_;
89  const edm::InputTag labelGenTrack_, labelRecVtx_;
90  const edm::InputTag labelEB_, labelEE_, labelHBHE_;
91  const edm::InputTag triggerEvent_, theTriggerResultsLabel_;
93  const double a_coneR_, a_mipR_, pTrackMin_, eEcalMax_;
94  const double maxRestrictionP_, slopeRestrictionP_;
95  const double eIsolate_;
96  const double hitEthrEB_, hitEthrEE0_, hitEthrEE1_;
97  const double hitEthrEE2_, hitEthrEE3_;
98  const double hitEthrEELo_, hitEthrEEHi_;
99  const double pTrackLow_, pTrackHigh_, pTrackH_;
100  const int preScale_, preScaleH_;
103  double a_charIsoR_;
104  unsigned int nRun_, nAll_, nGood_, nRange_, nHigh_;
113 };
114 
115 //
116 // constants, enums and typedefs
117 //
118 
119 //
120 // static data member definitions
121 //
122 
123 //
124 // constructors and destructor
125 //
127  : trigNames_(iConfig.getParameter<std::vector<std::string> >("triggers")),
128  labelGenTrack_(iConfig.getParameter<edm::InputTag>("labelTrack")),
129  labelRecVtx_(iConfig.getParameter<edm::InputTag>("labelVertex")),
130  labelEB_(iConfig.getParameter<edm::InputTag>("labelEBRecHit")),
131  labelEE_(iConfig.getParameter<edm::InputTag>("labelEERecHit")),
132  labelHBHE_(iConfig.getParameter<edm::InputTag>("labelHBHERecHit")),
133  triggerEvent_(iConfig.getParameter<edm::InputTag>("labelTriggerEvent")),
134  theTriggerResultsLabel_(iConfig.getParameter<edm::InputTag>("labelTriggerResult")),
135  processName_(iConfig.getParameter<std::string>("processName")),
136  a_coneR_(iConfig.getParameter<double>("coneRadius")),
137  a_mipR_(iConfig.getParameter<double>("coneRadiusMIP")),
138  pTrackMin_(iConfig.getParameter<double>("minimumTrackP")),
139  eEcalMax_(iConfig.getParameter<double>("maximumEcalEnergy")),
140  maxRestrictionP_(iConfig.getParameter<double>("maxTrackP")),
141  slopeRestrictionP_(iConfig.getParameter<double>("slopeTrackP")),
142  eIsolate_(iConfig.getParameter<double>("isolationEnergy")),
143  hitEthrEB_(iConfig.getParameter<double>("EBHitEnergyThreshold")),
144  hitEthrEE0_(iConfig.getParameter<double>("EEHitEnergyThreshold0")),
145  hitEthrEE1_(iConfig.getParameter<double>("EEHitEnergyThreshold1")),
146  hitEthrEE2_(iConfig.getParameter<double>("EEHitEnergyThreshold2")),
147  hitEthrEE3_(iConfig.getParameter<double>("EEHitEnergyThreshold3")),
148  hitEthrEELo_(iConfig.getParameter<double>("EEHitEnergyThresholdLow")),
149  hitEthrEEHi_(iConfig.getParameter<double>("EEHitEnergyThresholdHigh")),
150  pTrackLow_(iConfig.getParameter<double>("momentumRangeLow")),
151  pTrackHigh_(iConfig.getParameter<double>("momentumRangeHigh")),
152  pTrackH_(iConfig.getParameter<double>("momentumHigh")),
153  preScale_(iConfig.getParameter<int>("preScaleFactor")),
154  preScaleH_(iConfig.getParameter<int>("preScaleHigh")),
155  theTrackQuality_(iConfig.getParameter<std::string>("trackQuality")),
156  nRun_(0),
157  nAll_(0),
158  nGood_(0),
159  nRange_(0),
160  nHigh_(0) {
161  //now do what ever initialization is needed
162  const double isolationRadius(28.9);
163  // Different isolation cuts are described in DN-2016/029
164  // Tight cut uses 2 GeV; Loose cut uses 10 GeV
165  // Eta dependent cut uses (maxRestrictionP_ * exp(|ieta|*log(2.5)/18))
166  // with the factor for exponential slopeRestrictionP_ = log(2.5)/18
167  // maxRestrictionP_ = 8 GeV as came from a study
169  selectionParameter_.minPt = iConfig.getParameter<double>("minTrackPt");
170  ;
171  selectionParameter_.minQuality = trackQuality_;
172  selectionParameter_.maxDxyPV = iConfig.getParameter<double>("maxDxyPV");
173  selectionParameter_.maxDzPV = iConfig.getParameter<double>("maxDzPV");
174  selectionParameter_.maxChi2 = iConfig.getParameter<double>("maxChi2");
175  selectionParameter_.maxDpOverP = iConfig.getParameter<double>("maxDpOverP");
176  selectionParameter_.minOuterHit = iConfig.getParameter<int>("minOuterHit");
177  selectionParameter_.minLayerCrossed = iConfig.getParameter<int>("minLayerCrossed");
178  selectionParameter_.maxInMiss = iConfig.getParameter<int>("maxInMiss");
179  selectionParameter_.maxOutMiss = iConfig.getParameter<int>("maxOutMiss");
180  a_charIsoR_ = a_coneR_ + isolationRadius;
181 
182  // define tokens for access
183  tok_trigEvt_ = consumes<trigger::TriggerEvent>(triggerEvent_);
184  tok_trigRes_ = consumes<edm::TriggerResults>(theTriggerResultsLabel_);
185  tok_genTrack_ = consumes<reco::TrackCollection>(labelGenTrack_);
186  tok_recVtx_ = consumes<reco::VertexCollection>(labelRecVtx_);
187  tok_bs_ = consumes<reco::BeamSpot>(iConfig.getParameter<edm::InputTag>("labelBeamSpot"));
188 
189  tok_EB_ = consumes<EcalRecHitCollection>(labelEB_);
190  tok_EE_ = consumes<EcalRecHitCollection>(labelEE_);
191  tok_hbhe_ = consumes<HBHERecHitCollection>(labelHBHE_);
192 
193  edm::LogInfo("HcalIsoTrack") << "Parameters read from config file \n"
194  << "\t minPt " << selectionParameter_.minPt << "\t theTrackQuality " << theTrackQuality_
195  << "\t minQuality " << selectionParameter_.minQuality << "\t maxDxyPV "
197  << "\t maxChi2 " << selectionParameter_.maxChi2 << "\t maxDpOverP "
199  << "\t minLayerCrossed " << selectionParameter_.minLayerCrossed << "\t maxInMiss "
201  << "\n"
202  << "\t a_coneR " << a_coneR_ << "\t a_charIsoR " << a_charIsoR_ << "\t a_mipR "
203  << a_mipR_ << "\t maxRestrictionP_ " << maxRestrictionP_ << "\t slopeRestrictionP_ "
204  << slopeRestrictionP_ << "\t eIsolate_ " << eIsolate_ << "\n"
205  << "\t Precale factor " << preScale_ << "\t in momentum range " << pTrackLow_ << ":"
206  << pTrackHigh_ << " and prescale factor " << preScaleH_ << " for p > " << pTrackH_
207  << " Threshold for EB " << hitEthrEB_ << " EE " << hitEthrEE0_ << ":" << hitEthrEE1_
208  << ":" << hitEthrEE2_ << ":" << hitEthrEE3_ << ":" << hitEthrEELo_ << ":"
209  << hitEthrEEHi_;
210 
211  for (unsigned int k = 0; k < trigNames_.size(); ++k)
212  edm::LogInfo("HcalIsoTrack") << "Trigger[" << k << "] " << trigNames_[k];
213 } // AlCaIsoTracksFilter::AlCaIsoTracksFilter constructor
214 
216 
217 //
218 // member functions
219 //
220 
221 // ------------ method called on each new Event ------------
223  bool accept(false);
224  ++nAll_;
225  edm::LogVerbatim("HcalIsoTrack") << "Run " << iEvent.id().run() << " Event " << iEvent.id().event() << " Luminosity "
226  << iEvent.luminosityBlock() << " Bunch " << iEvent.bunchCrossing();
227 
228  //Step1: Find if the event passes one of the chosen triggers
229  bool triggerSatisfied(false);
230  if (trigNames_.empty()) {
231  triggerSatisfied = true;
232  } else {
233  trigger::TriggerEvent triggerEvent;
234  edm::Handle<trigger::TriggerEvent> triggerEventHandle;
235  iEvent.getByToken(tok_trigEvt_, triggerEventHandle);
236  if (!triggerEventHandle.isValid()) {
237  edm::LogWarning("HcalIsoTrack") << "Error! Can't get the product " << triggerEvent_.label();
238  } else {
239  triggerEvent = *(triggerEventHandle.product());
240 
243  iEvent.getByToken(tok_trigRes_, triggerResults);
244  if (triggerResults.isValid()) {
245  std::vector<std::string> modules;
246  const edm::TriggerNames& triggerNames = iEvent.triggerNames(*triggerResults);
247  const std::vector<std::string>& triggerNames_ = triggerNames.triggerNames();
248  for (unsigned int iHLT = 0; iHLT < triggerResults->size(); iHLT++) {
249  int hlt = triggerResults->accept(iHLT);
250  for (unsigned int i = 0; i < trigNames_.size(); ++i) {
251  if (triggerNames_[iHLT].find(trigNames_[i]) != std::string::npos) {
252  if (hlt > 0)
253  triggerSatisfied = true;
254  edm::LogVerbatim("HcalIsoTrack")
255  << triggerNames_[iHLT] << " has got HLT flag " << hlt << ":" << triggerSatisfied;
256  if (triggerSatisfied)
257  break;
258  }
259  }
260  }
261  }
262  }
263  }
264 
265  //Step2: Get geometry/B-field information
266  if (triggerSatisfied) {
267  //Get magnetic field
269  iSetup.get<IdealMagneticFieldRecord>().get(bFieldH);
270  const MagneticField* bField = bFieldH.product();
271  // get handles to calogeometry and calotopology
273  iSetup.get<CaloGeometryRecord>().get(pG);
274  const CaloGeometry* geo = pG.product();
275 
276  //Also relevant information to extrapolate tracks to Hcal surface
277  bool foundCollections(true);
278  //Get track collection
280  iEvent.getByToken(tok_genTrack_, trkCollection);
281  if (!trkCollection.isValid()) {
282  edm::LogWarning("HcalIsoTrack") << "Cannot access the collection " << labelGenTrack_;
283  foundCollections = false;
284  }
285 
286  //Define the best vertex and the beamspot
288  iEvent.getByToken(tok_recVtx_, recVtxs);
289  edm::Handle<reco::BeamSpot> beamSpotH;
290  iEvent.getByToken(tok_bs_, beamSpotH);
291  math::XYZPoint leadPV(0, 0, 0);
292  if (!recVtxs->empty() && !((*recVtxs)[0].isFake())) {
293  leadPV = math::XYZPoint((*recVtxs)[0].x(), (*recVtxs)[0].y(), (*recVtxs)[0].z());
294  } else if (beamSpotH.isValid()) {
295  leadPV = beamSpotH->position();
296  }
297  edm::LogVerbatim("HcalIsoTrack") << "Primary Vertex " << leadPV;
298 
299  // RecHits
300  edm::Handle<EcalRecHitCollection> barrelRecHitsHandle;
301  iEvent.getByToken(tok_EB_, barrelRecHitsHandle);
302  if (!barrelRecHitsHandle.isValid()) {
303  edm::LogWarning("HcalIsoTrack") << "Cannot access the collection " << labelEB_;
304  foundCollections = false;
305  }
306  edm::Handle<EcalRecHitCollection> endcapRecHitsHandle;
307  iEvent.getByToken(tok_EE_, endcapRecHitsHandle);
308  if (!endcapRecHitsHandle.isValid()) {
309  edm::LogWarning("HcalIsoTrack") << "Cannot access the collection " << labelEE_;
310  foundCollections = false;
311  }
313  iEvent.getByToken(tok_hbhe_, hbhe);
314  if (!hbhe.isValid()) {
315  edm::LogWarning("HcalIsoTrack") << "Cannot access the collection " << labelHBHE_;
316  foundCollections = false;
317  }
318 
319  //Step3 propagate the tracks to calorimeter surface and find
320  // candidates for isolated tracks
321  if (foundCollections) {
322  //Propagate tracks to calorimeter surface)
323  std::vector<spr::propagatedTrackDirection> trkCaloDirections;
324  spr::propagateCALO(trkCollection, geo, bField, theTrackQuality_, trkCaloDirections, false);
325 
326  std::vector<spr::propagatedTrackDirection>::const_iterator trkDetItr;
327  unsigned int nTracks(0), nselTracks(0), ntrin(0), ntrout(0), ntrH(0);
328  for (trkDetItr = trkCaloDirections.begin(), nTracks = 0; trkDetItr != trkCaloDirections.end();
329  trkDetItr++, nTracks++) {
330  const reco::Track* pTrack = &(*(trkDetItr->trkItr));
331  math::XYZTLorentzVector v4(pTrack->px(), pTrack->py(), pTrack->pz(), pTrack->p());
332  edm::LogVerbatim("HcalIsoTrack") << "This track : " << nTracks << " (pt|eta|phi|p) :" << pTrack->pt() << "|"
333  << pTrack->eta() << "|" << pTrack->phi() << "|" << pTrack->p();
334 
335  //Selection of good track
336  int ieta(0);
337  if (trkDetItr->okHCAL) {
338  HcalDetId detId = (HcalDetId)(trkDetItr->detIdHCAL);
339  ieta = detId.ietaAbs();
340  }
341  bool qltyFlag = spr::goodTrack(pTrack, leadPV, selectionParameter_, false);
342  edm::LogVerbatim("HcalIsoTrack") << "qltyFlag|okECAL|okHCAL : " << qltyFlag << "|" << trkDetItr->okECAL << "|"
343  << trkDetItr->okHCAL;
344  if (qltyFlag && trkDetItr->okECAL && trkDetItr->okHCAL) {
345  double t_p = pTrack->p();
346  nselTracks++;
347  int nNearTRKs(0);
348  std::vector<DetId> eIds;
349  std::vector<double> eHit;
350  double eEcal = spr::eCone_ecal(geo,
351  barrelRecHitsHandle,
352  endcapRecHitsHandle,
353  trkDetItr->pointHCAL,
354  trkDetItr->pointECAL,
355  a_mipR_,
356  trkDetItr->directionECAL,
357  eIds,
358  eHit);
359  double eMipDR(0);
360  for (unsigned int k = 0; k < eIds.size(); ++k) {
361  const GlobalPoint& pos = geo->getPosition(eIds[k]);
362  double eta = std::abs(pos.eta());
363  double eThr(hitEthrEB_);
364  if (eIds[k].subdetId() != EcalBarrel) {
365  eThr = (((eta * hitEthrEE3_ + hitEthrEE2_) * eta + hitEthrEE1_) * eta + hitEthrEE0_);
366  if (eThr < hitEthrEELo_)
367  eThr = hitEthrEELo_;
368  else if (eThr > hitEthrEEHi_)
369  eThr = hitEthrEEHi_;
370  }
371  if (eHit[k] > eThr)
372  eMipDR += eHit[k];
373  }
374  double hmaxNearP = spr::chargeIsolationCone(nTracks, trkCaloDirections, a_charIsoR_, nNearTRKs, false);
375  double eIsolation = (maxRestrictionP_ * exp(slopeRestrictionP_ * ((double)(ieta))));
376  if (eIsolation < eIsolate_)
377  eIsolation = eIsolate_;
378  edm::LogVerbatim("HcalIsoTrack") << "This track : " << nTracks << " (pt|eta|phi|p) :" << pTrack->pt() << "|"
379  << pTrack->eta() << "|" << pTrack->phi() << "|" << t_p << "e_MIP " << eMipDR
380  << ":" << eEcal << " Chg Isolation " << hmaxNearP << ":" << eIsolation;
381  if (t_p > pTrackMin_ && eMipDR < eEcalMax_ && hmaxNearP < eIsolation) {
382  if (t_p > pTrackLow_ && t_p < pTrackHigh_)
383  ntrin++;
384  else if (t_p > pTrackH_)
385  ntrH++;
386  else
387  ntrout++;
388  }
389  }
390  }
391  accept = (ntrout > 0);
392  if (!accept && ntrin > 0) {
393  ++nRange_;
394  if (preScale_ <= 1)
395  accept = true;
396  else if (nRange_ % preScale_ == 1)
397  accept = true;
398  }
399  if (!accept && ntrH > 0) {
400  ++nHigh_;
401  if (preScaleH_ <= 1)
402  accept = true;
403  else if (nHigh_ % preScaleH_ == 1)
404  accept = true;
405  }
406  }
407  }
408  // Step 4: Return the acceptance flag
409  if (accept)
410  ++nGood_;
411  return accept;
412 
413 } // AlCaIsoTracksFilter::filter
414 
415 // ------------ method called once each job just after ending the event loop ------------
417  globalCache()->nAll_ += nAll_;
418  globalCache()->nGood_ += nGood_;
419  globalCache()->nRange_ += nRange_;
420  globalCache()->nHigh_ += nHigh_;
421 }
422 
424  edm::LogVerbatim("HcalIsoTrack") << "Selects " << count->nGood_ << " in " << count->nAll_ << " events and with "
425  << count->nRange_ << " events in the p-range" << count->nHigh_
426  << " events with high p";
427 }
428 
429 // ------------ method called when starting to processes a run ------------
430 void AlCaIsoTracksFilter::beginRun(edm::Run const& iRun, edm::EventSetup const& iSetup) {
431  bool changed(false);
432  edm::LogInfo("HcalIsoTrack") << "Run[" << nRun_ << "] " << iRun.run() << " hltconfig.init "
433  << hltConfig_.init(iRun, iSetup, processName_, changed);
434 }
435 
436 // ------------ method called when ending the processing of a run ------------
438  ++nRun_;
439  edm::LogInfo("HcalIsoTrack") << "endRun[" << nRun_ << "] " << iRun.run();
440 }
441 
442 // ------------ method fills 'descriptions' with the allowed parameters for the module ------------
445  desc.add<edm::InputTag>("labelTrack", edm::InputTag("generalTracks"));
446  desc.add<edm::InputTag>("labelVertex", edm::InputTag("offlinePrimaryVertices"));
447  desc.add<edm::InputTag>("labelBeamSpot", edm::InputTag("offlineBeamSpot"));
448  desc.add<edm::InputTag>("labelEBRecHit", edm::InputTag("ecalRecHit", "EcalRecHitsEB"));
449  desc.add<edm::InputTag>("labelEERecHit", edm::InputTag("ecalRecHit", "EcalRecHitsEE"));
450  desc.add<edm::InputTag>("labelHBHERecHit", edm::InputTag("hbhereco"));
451  desc.add<edm::InputTag>("labelTriggerEvent", edm::InputTag("hltTriggerSummaryAOD", "", "HLT"));
452  desc.add<edm::InputTag>("labelTriggerResult", edm::InputTag("TriggerResults", "", "HLT"));
453  std::vector<std::string> trigger;
454  desc.add<std::vector<std::string> >("triggers", trigger);
455  desc.add<std::string>("processName", "HLT");
456  // following 10 parameters are parameters to select good tracks
457  desc.add<std::string>("trackQuality", "highPurity");
458  desc.add<double>("minTrackPt", 1.0);
459  desc.add<double>("maxDxyPV", 10.0);
460  desc.add<double>("maxDzPV", 100.0);
461  desc.add<double>("maxChi2", 5.0);
462  desc.add<double>("maxDpOverP", 0.1);
463  desc.add<int>("minOuterHit", 4);
464  desc.add<int>("minLayerCrossed", 8);
465  desc.add<int>("maxInMiss", 2);
466  desc.add<int>("maxOutMiss", 2);
467  // Minimum momentum of selected isolated track and signal zone
468  desc.add<double>("coneRadius", 34.98);
469  desc.add<double>("minimumTrackP", 20.0);
470  // signal zone in ECAL and MIP energy cutoff
471  desc.add<double>("coneRadiusMIP", 14.0);
472  desc.add<double>("maximumEcalEnergy", 100.0);
473  // following 3 parameters are for isolation cuts and described in the code
474  desc.add<double>("maxTrackP", 8.0);
475  desc.add<double>("slopeTrackP", 0.05090504066);
476  desc.add<double>("isolationEnergy", 10.0);
477  // energy thershold for ECAL (from Egamma group)
478  desc.add<double>("EBHitEnergyThreshold", 0.08);
479  desc.add<double>("EEHitEnergyThreshold0", 0.30);
480  desc.add<double>("EEHitEnergyThreshold1", 0.00);
481  desc.add<double>("EEHitEnergyThreshold2", 0.00);
482  desc.add<double>("EEHitEnergyThreshold3", 0.00);
483  desc.add<double>("EEHitEnergyThresholdLow", 0.30);
484  desc.add<double>("EEHitEnergyThresholdHigh", 0.30);
485  // Prescale events only containing isolated tracks in the range
486  desc.add<double>("momentumRangeLow", 20.0);
487  desc.add<double>("momentumRangeHigh", 40.0);
488  desc.add<int>("preScaleFactor", 10);
489  desc.add<double>("momentumHigh", 60.0);
490  desc.add<int>("preScaleHigh", 2);
491  descriptions.add("alcaIsoTracksFilter", desc);
492 }
493 
494 //define this as a plug-in
RunNumber_t run() const
Definition: EventID.h:39
double p() const
momentum vector magnitude
Definition: TrackBase.h:654
const edm::InputTag labelEE_
const double slopeRestrictionP_
T getParameter(std::string const &) const
EventNumber_t event() const
Definition: EventID.h:41
const edm::InputTag labelRecVtx_
std::vector< spr::propagatedTrackID > propagateCALO(edm::Handle< reco::TrackCollection > &trkCollection, const CaloGeometry *geo, const MagneticField *bField, const std::string &theTrackQuality, bool debug=false)
const unsigned int nTracks(const reco::Vertex &sv)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
RunNumber_t run() const
Definition: RunBase.h:40
The single EDProduct to be saved for each event (AOD case)
Definition: TriggerEvent.h:25
spr::trackSelectionParameters selectionParameter_
static void globalEndJob(const AlCaIsoTracks::Counters *counters)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
edm::EDGetTokenT< reco::TrackCollection > tok_genTrack_
TrackQuality
track quality
Definition: TrackBase.h:151
const std::string theTrackQuality_
const std::string processName_
bool accept() const
Has at least one path accepted the event?
int bunchCrossing() const
Definition: EventBase.h:64
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:61
edm::EDGetTokenT< reco::BeamSpot > tok_bs_
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:684
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:666
bool filter(edm::Event &, edm::EventSetup const &) override
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:20
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:30
edm::EDGetTokenT< reco::VertexCollection > tok_recVtx_
Strings const & triggerNames() const
Definition: TriggerNames.cc:20
const std::vector< std::string > trigNames_
const edm::InputTag triggerEvent_
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
int iEvent
Definition: GenABIO.cc:224
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:690
bool goodTrack(const reco::Track *pTrack, math::XYZPoint leadPV, trackSelectionParameters parameters, bool debug=false)
unsigned int size() const
Get number of paths stored.
double pt() const
track transverse momentum
Definition: TrackBase.h:660
const edm::InputTag labelGenTrack_
GlobalPoint getPosition(const DetId &id) const
Get the position of a given detector id.
Definition: CaloGeometry.cc:74
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::atomic< unsigned int > nHigh_
const edm::InputTag labelHBHE_
edm::EDGetTokenT< trigger::TriggerEvent > tok_trigEvt_
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)
edm::EDGetTokenT< HBHERecHitCollection > tok_hbhe_
static std::string const triggerResults
Definition: EdmProvDump.cc:45
edm::EDGetTokenT< EcalRecHitCollection > tok_EB_
ParameterDescriptionBase * add(U const &iLabel, T const &value)
bool isValid() const
Definition: HandleBase.h:74
double pz() const
z coordinate of momentum vector
Definition: TrackBase.h:678
int k[5][pyjets_maxn]
int ietaAbs() const
get the absolute value of the cell ieta
Definition: HcalDetId.h:154
std::atomic< unsigned int > nGood_
edm::EDGetTokenT< edm::TriggerResults > tok_trigRes_
edm::EDGetTokenT< EcalRecHitCollection > tok_EE_
static TrackQuality qualityByName(const std::string &name)
Definition: TrackBase.cc:134
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
T const * product() const
Definition: Handle.h:74
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d&#39;tor
AlCaIsoTracksFilter(edm::ParameterSet const &, const AlCaIsoTracks::Counters *count)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
std::atomic< unsigned int > nAll_
const edm::InputTag theTriggerResultsLabel_
std::string const & label() const
Definition: InputTag.h:36
T eta() const
Definition: PV3DBase.h:76
edm::EventID id() const
Definition: EventBase.h:59
HLT enums.
T get() const
Definition: EventSetup.h:71
reco::TrackBase::TrackQuality minQuality
const edm::InputTag labelEB_
const Point & position() const
position
Definition: BeamSpot.h:62
void endRun(edm::Run const &, edm::EventSetup const &) override
HLTConfigProvider hltConfig_
T const * product() const
Definition: ESHandle.h:86
std::atomic< unsigned int > nRange_
edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const override
Definition: Event.cc:256
double py() const
y coordinate of momentum vector
Definition: TrackBase.h:672
Definition: Run.h:45
static std::unique_ptr< AlCaIsoTracks::Counters > initializeGlobalCache(edm::ParameterSet const &iConfig)
void beginRun(edm::Run const &, edm::EventSetup const &) override