CMS 3D CMS Logo

IsoTrackCalibration.cc
Go to the documentation of this file.
1 
2 //#define DebugLog
3 
4 // system include files
5 #include <memory>
6 #include <string>
7 #include <vector>
8 
9 // Root objects
10 #include "TROOT.h"
11 #include "TSystem.h"
12 #include "TFile.h"
13 #include "TProfile.h"
14 #include "TDirectory.h"
15 #include "TTree.h"
16 #include "TH1F.h"
17 #include "TLorentzVector.h"
18 #include "TInterpreter.h"
19 
20 //Tracks
25 
26 // Vertices
30 
31 //Triggers
40 
51 
57 
73 
74 class IsoTrackCalibration : public edm::one::EDAnalyzer<edm::one::WatchRuns,edm::one::SharedResources> {
75 
76 public:
77  explicit IsoTrackCalibration(const edm::ParameterSet&);
78  ~IsoTrackCalibration() override;
79 
80  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
81 
82 private:
83  void analyze(edm::Event const&, edm::EventSetup const&) override;
84  void beginJob() override;
85  void beginRun(edm::Run const&, edm::EventSetup const&) override;
86  void endRun(edm::Run const&, edm::EventSetup const&) override;
87  virtual void beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&);
88  virtual void endLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&);
89 
92  std::vector<std::string> trigNames_, HLTNames_;
99  double maxEcalEnr_;
101  int nRun_;
105 
113 
114  TTree *tree;
120  std::vector<unsigned int> *t_DetIds, *t_DetIds1, *t_DetIds3;
121  std::vector<double> *t_HitEnergies, *t_HitEnergies1, *t_HitEnergies3;
122 
123  TH1F *h_nTrk, *h_nVtx;
125  TH1I *h_iEta, *h_tketa0[5], *h_tketa1[5], *h_tketa2[5];
126  TH1I *h_tketa3[5], *h_tketa4[5], *h_tketa5[5];
128  TH1F *h_jetpt[4];
129  TH1I *h_tketav1[5][6], *h_tketav2[5][6];
130 };
131 
133  nRun_(0) {
134 
135  usesResource("TFileService");
136  //now do whatever initialization is needed
137  const double isolationRadius(28.9);
138  verbosity_ = iConfig.getUntrackedParameter<int>("Verbosity",0);
139  trigNames_ = iConfig.getUntrackedParameter<std::vector<std::string> >("Triggers");
140  theTrackQuality_ = iConfig.getUntrackedParameter<std::string>("TrackQuality","highPurity");
141  reco::TrackBase::TrackQuality trackQuality_=reco::TrackBase::qualityByName(theTrackQuality_);
142  constTrackPt_ = iConfig.getUntrackedParameter<double>("ConstTrackPt", 10.0);
143  slopeTrackPt_ = iConfig.getUntrackedParameter<double>("SlopeTrackPt", 0.16);
145  selectionParameters_.minQuality = trackQuality_;
146  selectionParameters_.maxDxyPV = iConfig.getUntrackedParameter<double>("MaxDxyPV", 0.02);
147  selectionParameters_.maxDzPV = iConfig.getUntrackedParameter<double>("MaxDzPV", 0.02);
148  selectionParameters_.maxChi2 = iConfig.getUntrackedParameter<double>("MaxChi2", 5.0);
149  selectionParameters_.maxDpOverP = iConfig.getUntrackedParameter<double>("MaxDpOverP", 0.1);
150  selectionParameters_.minOuterHit = iConfig.getUntrackedParameter<int>("MinOuterHit", 4);
151  selectionParameters_.minLayerCrossed= iConfig.getUntrackedParameter<int>("MinLayerCrossed", 8);
152  selectionParameters_.maxInMiss = iConfig.getUntrackedParameter<int>("MaxInMiss", 0);
153  selectionParameters_.maxOutMiss = iConfig.getUntrackedParameter<int>("MaxOutMiss", 0);
154  a_coneR_ = iConfig.getUntrackedParameter<double>("ConeRadius",34.98);
155  a_charIsoR_ = a_coneR_ + isolationRadius;
156  a_mipR_ = iConfig.getUntrackedParameter<double>("ConeRadiusMIP",14.0);
157  maxEcalEnr_ = iConfig.getUntrackedParameter<double>("MaxEcalEnergyInCone",2.5);
158  maxNeighborTrackEnr_ = iConfig.getUntrackedParameter<double>("MaxNeighborTrackEnergy",40.0);
159  isMC_ = iConfig.getUntrackedParameter<bool>("IsMC", false);
160  isQCD_ = iConfig.getUntrackedParameter<bool>("IsQCD", false);
161  isAOD_ = iConfig.getUntrackedParameter<bool>("IsAOD", true);
162  triggerEvent_ = edm::InputTag("hltTriggerSummaryAOD","","HLT");
163  theTriggerResultsLabel_ = edm::InputTag("TriggerResults","","HLT");
164 
165  // define tokens for access
166  tok_trigEvt_ = consumes<trigger::TriggerEvent>(triggerEvent_);
167  tok_trigRes_ = consumes<edm::TriggerResults>(theTriggerResultsLabel_);
168  tok_genTrack_ = consumes<reco::TrackCollection>(edm::InputTag("generalTracks"));
169  tok_recVtx_ = consumes<reco::VertexCollection>(edm::InputTag("offlinePrimaryVertices"));
170  tok_bs_ = consumes<reco::BeamSpot>(edm::InputTag("offlineBeamSpot"));
171  tok_ew_ = consumes<GenEventInfoProduct>(edm::InputTag("generator"));
172 
173  if (isAOD_) {
174  tok_EB_ = consumes<EcalRecHitCollection>(edm::InputTag("reducedEcalRecHitsEB"));
175  tok_EE_ = consumes<EcalRecHitCollection>(edm::InputTag("reducedEcalRecHitsEE"));
176  tok_hbhe_ = consumes<HBHERecHitCollection>(edm::InputTag("reducedHcalRecHits", "hbhereco"));
177  } else {
178  tok_EB_ = consumes<EcalRecHitCollection>(edm::InputTag("ecalRecHit","EcalRecHitsEB"));
179  tok_EE_ = consumes<EcalRecHitCollection>(edm::InputTag("ecalRecHit","EcalRecHitsEE"));
180  tok_hbhe_ = consumes<HBHERecHitCollection>(edm::InputTag("hbhereco"));
181  }
182 
183 #ifdef DebugLog
184  if (verbosity_>=0) {
185  std::cout <<"Parameters read from config file \n"
186  <<"\t minPt " << selectionParameters_.minPt
187  <<"\t theTrackQuality " << theTrackQuality_
188  <<"\t minQuality " << selectionParameters_.minQuality
189  <<"\t maxDxyPV " << selectionParameters_.maxDxyPV
190  <<"\t maxDzPV " << selectionParameters_.maxDzPV
191  <<"\t maxChi2 " << selectionParameters_.maxChi2
192  <<"\t maxDpOverP " << selectionParameters_.maxDpOverP
193  <<"\t minOuterHit " << selectionParameters_.minOuterHit
194  <<"\t minLayerCrossed " << selectionParameters_.minLayerCrossed
195  <<"\t maxInMiss " << selectionParameters_.maxInMiss
196  <<"\t maxOutMiss " << selectionParameters_.maxOutMiss
197  <<"\t a_coneR " << a_coneR_
198  <<"\t a_charIsoR " << a_charIsoR_
199  <<"\t a_mipR " << a_mipR_
200  <<"\t isMC " << isMC_
201  <<"\t isQCD " << isQCD_
202  <<"\t isAOD " << isAOD_
203  << std::endl;
204  std::cout << trigNames_.size() << " triggers to be studied:";
205  for (unsigned int k=0; k<trigNames_.size(); ++k)
206  std::cout << " " << trigNames_[k];
207  std::cout << std::endl;
208  }
209 #endif
210 }
211 
213  // do anything here that needs to be done at desctruction time
214  // (e.g. close files, deallocate resources etc.)
215 }
216 
218  const edm::EventSetup& iSetup) {
219 
220  t_Run = iEvent.id().run();
221  t_Event = iEvent.id().event();
222 #ifdef DebugLog
223  if (verbosity_%10 > 0)
224  std::cout << "Run " << t_Run << " Event " << t_Event << " Luminosity "
225  << iEvent.luminosityBlock() << " Bunch " << iEvent.bunchCrossing()
226  << " starts ==========" << std::endl;
227 #endif
228  //Get magnetic field and ECAL channel status
230  iSetup.get<IdealMagneticFieldRecord>().get(bFieldH);
231  const MagneticField *bField = bFieldH.product();
232 
234  iSetup.get<EcalSeverityLevelAlgoRcd>().get(sevlv);
235 
236  // get handles to calogeometry and calotopology
238  iSetup.get<CaloGeometryRecord>().get(pG);
239  const CaloGeometry* geo = pG.product();
240 
241  //Get track collection
243  iEvent.getByToken(tok_genTrack_, trkCollection);
244  reco::TrackCollection::const_iterator trkItr;
245 
246  //event weight for FLAT sample and PU information
247  t_EventWeight = 1.0;
249  iEvent.getByToken(tok_ew_, genEventInfo);
250  if (genEventInfo.isValid()) t_EventWeight = genEventInfo->weight();
251 
252  //Define the best vertex and the beamspot
254  iEvent.getByToken(tok_recVtx_, recVtxs);
255  edm::Handle<reco::BeamSpot> beamSpotH;
256  iEvent.getByToken(tok_bs_, beamSpotH);
257  math::XYZPoint leadPV(0,0,0);
258 
259  t_nVtx = recVtxs->size();
260  h_nVtx->Fill(t_nVtx);
261 
262  if (!recVtxs->empty() && !((*recVtxs)[0].isFake())) {
263  leadPV = math::XYZPoint( (*recVtxs)[0].x(),(*recVtxs)[0].y(), (*recVtxs)[0].z() );
264  } else if (beamSpotH.isValid()) {
265  leadPV = beamSpotH->position();
266  }
267 #ifdef DebugLog
268  if ((verbosity_/100)%10>0) {
269  std::cout << "Primary Vertex " << leadPV;
270  if (beamSpotH.isValid()) std::cout << " Beam Spot "
271  << beamSpotH->position();
272  std::cout << std::endl;
273  }
274 #endif
275 
276  // RecHits
277  edm::Handle<EcalRecHitCollection> barrelRecHitsHandle;
278  edm::Handle<EcalRecHitCollection> endcapRecHitsHandle;
279  iEvent.getByToken(tok_EB_, barrelRecHitsHandle);
280  iEvent.getByToken(tok_EE_, endcapRecHitsHandle);
282  iEvent.getByToken(tok_hbhe_, hbhe);
283 
284  //Trigger
285  bool triggerOK = false;
286  if (isMC_ && !isQCD_) {
287  triggerOK = true; // ignore HLT for single pion MC
288  } else {
289  trigger::TriggerEvent triggerEvent;
290  edm::Handle<trigger::TriggerEvent> triggerEventHandle;
291  iEvent.getByToken(tok_trigEvt_, triggerEventHandle);
292  if (!triggerEventHandle.isValid()) {
293 #ifdef DebugLog
294  std::cout << "Error! Can't get the product "<< triggerEvent_.label()
295  << std::endl;
296 #endif
297  } else {
300  iEvent.getByToken(tok_trigRes_, triggerResults);
301  if (triggerResults.isValid()) {
302  const edm::TriggerNames & triggerNames = iEvent.triggerNames(*triggerResults);
303  const std::vector<std::string> & triggerNames_ = triggerNames.triggerNames();
304  for (unsigned int iHLT=0; iHLT<triggerResults->size(); iHLT++) {
305  int hlt = triggerResults->accept(iHLT);
306  if (hlt > 0) {
307  for (unsigned int i=0; i<trigNames_.size(); ++i) {
308  if (triggerNames_[iHLT].find(trigNames_[i])!=std::string::npos) {
309  triggerOK = true;
310 #ifdef DebugLog
311  if (verbosity_%10 > 0)
312  std::cout << "This is the trigger we are looking for "
313  << triggerNames_[iHLT] << " Flag " << hlt
314  << std::endl;
315 #endif
316  }
317  }
318  }
319  }
320  }
321  }
322  }
323 
324  if (triggerOK) {
325  //Propagate tracks to calorimeter surface)
326  std::vector<spr::propagatedTrackDirection> trkCaloDirections;
327  spr::propagateCALO(trkCollection, geo, bField, theTrackQuality_,
328  trkCaloDirections, ((verbosity_/100)%10>2));
329  //Loop over tracks
330  std::vector<spr::propagatedTrackDirection>::const_iterator trkDetItr;
331  unsigned int nTracks(0), nselTracks(0);
332  t_nTrk = trkCaloDirections.size();
333 
334  for (trkDetItr = trkCaloDirections.begin(),nTracks=0;
335  trkDetItr != trkCaloDirections.end(); trkDetItr++, nTracks++) {
336 
337  const reco::Track* pTrack = &(*(trkDetItr->trkItr));
338 #ifdef DebugLog
339  if (verbosity_%10> 0)
340  std::cout << "This track : " << nTracks << " (pt/eta/phi/p) :"
341  << pTrack->pt() << "/" << pTrack->eta() << "/"
342  << pTrack->phi() << "/" << pTrack->p() << std::endl;
343 #endif
344 
345  t_ieta = 0;
346  if (trkDetItr->okHCAL) {
347  HcalDetId detId = (HcalDetId)(trkDetItr->detIdHCAL);
348  t_ieta = detId.ieta();
349  }
350  // ---------- eta-dependent restriction on Pt ----------------------------
352  // -----------------------------------------------------------------------
353 
354  //Selection of good track
355  t_selectTk = spr::goodTrack(pTrack,leadPV,selectionParameters_,((verbosity_/100)%10>2));
357  oneCutParameters.maxDxyPV = 10;
358  oneCutParameters.maxDzPV = 100;
359  oneCutParameters.maxInMiss = 2;
360  oneCutParameters.maxOutMiss= 2;
361  bool qltyFlag = spr::goodTrack(pTrack,leadPV,oneCutParameters,((verbosity_/100)%10>2));
362  oneCutParameters = selectionParameters_;
363  oneCutParameters.maxDxyPV = 10;
364  oneCutParameters.maxDzPV = 100;
365  t_qltyMissFlag = spr::goodTrack(pTrack,leadPV,oneCutParameters,((verbosity_/100)%10>2));
366  oneCutParameters = selectionParameters_;
367  oneCutParameters.maxInMiss = 2;
368  oneCutParameters.maxOutMiss= 2;
369  t_qltyPVFlag = spr::goodTrack(pTrack,leadPV,oneCutParameters,((verbosity_/100)%10>2));
370 
371 #ifdef DebugLog
372  if (verbosity_%10 > 0)
373  std::cout << "qltyFlag|okECAL|okHCAL : " << qltyFlag << "|"
374  << trkDetItr->okECAL << "/" << trkDetItr->okHCAL
375  << std::endl;
376 #endif
377  if (qltyFlag && trkDetItr->okECAL && trkDetItr->okHCAL) {
378  nselTracks++;
379  int nRH_eMipDR(0), nNearTRKs(0);
380  //------ ecal energy around track -------------------------------
381  t_eMipDR = spr::eCone_ecal(geo, barrelRecHitsHandle,
382  endcapRecHitsHandle,
383  trkDetItr->pointHCAL,
384  trkDetItr->pointECAL,
385  a_mipR_, trkDetItr->directionECAL,
386  nRH_eMipDR);
387  //---- isolation criteria ----------------------------------------------
388  t_hmaxNearP = spr::chargeIsolationCone(nTracks,trkCaloDirections,
389  a_charIsoR_, nNearTRKs,
390  ((verbosity_/100)%10>2));
391 
393  //------------ HCAL --------------------------------------------------
394  //------ initialize arrays of DetID and hit energies -----------------
395  t_DetIds->clear();
396  t_DetIds1->clear();
397  t_DetIds3->clear();
398  t_HitEnergies->clear();
399  t_HitEnergies1->clear();
400  t_HitEnergies3->clear();
401  int nRecHits(-999), nRecHits1(-999), nRecHits3(-999);
402  std::vector<DetId> ids, ids1, ids3;
403  //------ hcal energy in the main cone -------------------------------
404  t_eHcal = spr::eCone_hcal(geo, hbhe, trkDetItr->pointHCAL,
405  trkDetItr->pointECAL, a_coneR_,
406  trkDetItr->directionHCAL,nRecHits,
407  ids, *t_HitEnergies);
408  t_DetIds->reserve(ids.size());
409  for (unsigned int k = 0; k < ids.size(); ++k) {
410  t_DetIds->push_back(ids[k].rawId());
411  }
412  //----- hcal energy in the extended cone 1 (a_coneR+10) --------------
413  t_eHcal10 = spr::eCone_hcal(geo, hbhe, trkDetItr->pointHCAL,
414  trkDetItr->pointECAL, a_coneR_+10,
415  trkDetItr->directionHCAL,nRecHits1,
416  ids1, *t_HitEnergies1);
417  t_DetIds1->reserve(ids1.size());
418  for (unsigned int k = 0; k < ids1.size(); ++k) {
419  t_DetIds1->push_back(ids1[k].rawId());
420  }
421  //----- hcal energy in the extended cone 3 (a_coneR+30) --------------
422  t_eHcal30 = spr::eCone_hcal(geo, hbhe, trkDetItr->pointHCAL,
423  trkDetItr->pointECAL, a_coneR_+30,
424  trkDetItr->directionHCAL,nRecHits3,
425  ids3, *t_HitEnergies3);
426  t_DetIds3->reserve(ids3.size());
427  for (unsigned int k = 0; k < ids3.size(); ++k) {
428  t_DetIds3->push_back(ids3[k].rawId());
429  }
430 
431  t_p = pTrack->p();
432  t_pt = pTrack->pt();
433  t_phi = pTrack->phi();
434 #ifdef DebugLog
435  if (verbosity_%10 > 0) {
436  std::cout << "This track : " << nTracks << " (pt/eta/phi/p) :"
437  << pTrack->pt() << "/" << pTrack->eta() << "/"
438  << pTrack->phi() << "/" << t_p << std::endl;
439  std::cout << "e_MIP " << t_eMipDR << " Chg Isolation "
440  << t_hmaxNearP << " eHcal" << t_eHcal << " ieta "
441  << t_ieta << " Quality " << t_qltyMissFlag
442  << ":" << t_qltyPVFlag << ":" << t_selectTk
443  << std::endl;
444  for (unsigned int lll=0;lll<t_DetIds->size();lll++) {
445  std::cout << "det id is = " << t_DetIds->at(lll) << " "
446  << " hit enery is = " << t_HitEnergies->at(lll)
447  << std::endl;
448  }
449  }
450 #endif
451  tree->Fill();
452  } // end of conditions on t_eMipDR and t_hmaxNearP
453  } // end of loose check of track quality
454  } // end of loop over tracks
455 
456  h_nTrk->Fill(nTracks);
457  } // end of triggerOK
458 }
459 
461 
462  h_nVtx = fs_->make<TH1F>("h_nVtx","h_nVtx",100,0,100);
463  h_nTrk = fs_->make<TH1F>("h_nTrk","h_nTrk",100,0,2000);
464 
465  tree = fs_->make<TTree>("CalibTree", "CalibTree");
466 
467  tree->Branch("t_Run", &t_Run, "t_Run/I");
468  tree->Branch("t_Event", &t_Event, "t_Event/I");
469  tree->Branch("t_nVtx", &t_nVtx, "t_nVtx/I");
470  tree->Branch("t_nTrk", &t_nTrk, "t_nTrk/I");
471  tree->Branch("t_EventWeight", &t_EventWeight, "t_EventWeight/D");
472  tree->Branch("t_p", &t_p, "t_p/D");
473  tree->Branch("t_pt", &t_pt, "t_pt/D");
474  tree->Branch("t_ieta", &t_ieta, "t_ieta/I");
475  tree->Branch("t_phi", &t_phi, "t_phi/D");
476  tree->Branch("t_eMipDR", &t_eMipDR, "t_eMipDR/D");
477  tree->Branch("t_eHcal", &t_eHcal, "t_eHcal/D");
478  tree->Branch("t_eHcal10", &t_eHcal10, "t_eHcal10/D");
479  tree->Branch("t_eHcal30", &t_eHcal30, "t_eHcal30/D");
480  tree->Branch("t_hmaxNearP", &t_hmaxNearP, "t_hmaxNearP/D");
481  tree->Branch("t_selectTk", &t_selectTk, "t_selectTk/O");
482  tree->Branch("t_qltyMissFlag",&t_qltyMissFlag,"t_qltyMissFlag/O");
483  tree->Branch("t_qltyPVFlag", &t_qltyPVFlag, "t_qltyPVFlag/O)");
484 
485  t_DetIds = new std::vector<unsigned int>();
486  t_DetIds1 = new std::vector<unsigned int>();
487  t_DetIds3 = new std::vector<unsigned int>();
488  t_HitEnergies = new std::vector<double>();
489  t_HitEnergies1 = new std::vector<double>();
490  t_HitEnergies3 = new std::vector<double>();
491 
492  tree->Branch("t_DetIds", "std::vector<unsigned int>", &t_DetIds);
493 //tree->Branch("t_DetIds1", "std::vector<unsigned int>", &t_DetIds1);
494 //tree->Branch("t_DetIds3", "std::vector<unsigned int>", &t_DetIds3);
495  tree->Branch("t_HitEnergies", "std::vector<double>", &t_HitEnergies);
496 //tree->Branch("t_HitEnergies1", "std::vector<double>", &t_HitEnergies1);
497 //tree->Branch("t_HitEnergies3", "std::vector<double>", &t_HitEnergies3);
498 }
499 
500 // ------------ method called when starting to processes a run ------------
501 void IsoTrackCalibration::beginRun(edm::Run const& iRun, edm::EventSetup const& iSetup) {
502 
503  bool changed_(true);
504  bool flag = hltConfig_.init(iRun,iSetup,"HLT",changed_);
505  edm::LogInfo("HcalIsoTrack") << "Run[" << nRun_ << "] " << iRun.run()
506  << " process HLT init flag "
507  << flag << " change flag " << changed_;
508 
509  // check if trigger names in (new) config
510  if (changed_) {
511  changed_ = false;
512  edm::LogInfo("HcalIsoTrack") << "New trigger menu found !!!";
513  const unsigned int n(hltConfig_.size());
514  for (unsigned itrig=0; itrig<trigNames_.size(); itrig++) {
515  unsigned int triggerindx = hltConfig_.triggerIndex(trigNames_[itrig]);
516  if (triggerindx >= n) {
517  edm::LogWarning("HcalIsoTrack") << trigNames_[itrig] << " "
518  << triggerindx << " does not exist in "
519  << "the current menu";
520  } else {
521  edm::LogInfo("HcalIsoTrack") << trigNames_[itrig] << " "
522  << triggerindx << " exists";
523  }
524  }
525  }
526 }
527 
528 // ------------ method called when ending the processing of a run ------------
530  ++nRun_;
531  edm::LogWarning("HcalIsoTrack") << "endRun[" << nRun_ << "] " << iRun.run();
532 }
533 
534 // ------------ method called when starting to processes a luminosity block ------------
536 // ------------ method called when ending the processing of a luminosity block ------------
538 // ------------ method fills 'descriptions' with the allowed parameters for the module ------------
540  //The following says we do not know what parameters are allowed so do no validation
541  // Please change this to state exactly what you do use, even if it is no parameters
543  desc.setUnknown();
544  descriptions.addDefault(desc);
545 }
546 
547 //define this as a plug-in
549 
RunNumber_t run() const
Definition: EventID.h:39
unsigned int size() const
number of trigger paths in trigger table
std::vector< double > * t_HitEnergies3
double p() const
momentum vector magnitude
Definition: TrackBase.h:615
EventNumber_t event() const
Definition: EventID.h:41
T getUntrackedParameter(std::string const &, T const &) const
const unsigned int nTracks(const reco::Vertex &sv)
edm::InputTag theTriggerResultsLabel_
std::vector< spr::propagatedTrackID > propagateCALO(edm::Handle< reco::TrackCollection > &trkCollection, const CaloGeometry *geo, const MagneticField *bField, std::string &theTrackQuality, bool debug=false)
edm::EDGetTokenT< reco::BeamSpot > tok_bs_
RunNumber_t run() const
Definition: RunBase.h:40
The single EDProduct to be saved for each event (AOD case)
Definition: TriggerEvent.h:25
edm::EDGetTokenT< reco::TrackCollection > tok_genTrack_
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:508
TrackQuality
track quality
Definition: TrackBase.h:151
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
void beginRun(edm::Run const &, edm::EventSetup const &) override
bool accept() const
Has at least one path accepted the event?
edm::EDGetTokenT< trigger::TriggerEvent > tok_trigEvt_
int bunchCrossing() const
Definition: EventBase.h:66
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:63
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:645
T * make(const Args &...args) const
make new ROOT object
Definition: TFileService.h:64
double chargeIsolationCone(unsigned int trkIndex, std::vector< spr::propagatedTrackDirection > &trkDirs, double dR, int &nNearTRKs, bool debug=false)
double weight() const
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:20
std::vector< unsigned int > * t_DetIds1
std::vector< unsigned int > * t_DetIds3
edm::EDGetTokenT< edm::TriggerResults > tok_trigRes_
Strings const & triggerNames() const
Definition: TriggerNames.cc:24
edm::EDGetTokenT< EcalRecHitCollection > tok_EE_
unsigned int triggerIndex(const std::string &triggerName) const
slot position of trigger path in trigger table (0 to size-1)
int iEvent
Definition: GenABIO.cc:230
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:651
void addDefault(ParameterSetDescription const &psetDescription)
std::vector< std::string > HLTNames_
edm::EDGetTokenT< GenEventInfoProduct > tok_ew_
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:621
int ieta() const
get the cell ieta
Definition: HcalDetId.h:56
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
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)
static std::string const triggerResults
Definition: EdmProvDump.cc:41
IsoTrackCalibration(const edm::ParameterSet &)
bool isValid() const
Definition: HandleBase.h:74
std::vector< double > * t_HitEnergies
std::vector< std::string > trigNames_
virtual void beginLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &)
int k[5][pyjets_maxn]
edm::EDGetTokenT< HBHERecHitCollection > tok_hbhe_
static TrackQuality qualityByName(const std::string &name)
Definition: TrackBase.cc:125
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
const T & get() const
Definition: EventSetup.h:55
edm::EDGetTokenT< EcalRecHitCollection > tok_EB_
std::string const & label() const
Definition: InputTag.h:36
edm::EventID id() const
Definition: EventBase.h:60
void analyze(edm::Event const &, edm::EventSetup const &) override
spr::trackSelectionParameters selectionParameters_
reco::TrackBase::TrackQuality minQuality
void endRun(edm::Run const &, edm::EventSetup const &) override
const Point & position() const
position
Definition: BeamSpot.h:62
Definition: tree.py:1
edm::Service< TFileService > fs_
std::vector< double > * t_HitEnergies1
std::vector< unsigned int > * t_DetIds
HLTConfigProvider hltConfig_
T const * product() const
Definition: ESHandle.h:86
edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const override
Definition: Event.cc:272
Definition: Run.h:43
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, bool useRaw=false, bool debug=false)
virtual void endLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &)
edm::EDGetTokenT< reco::VertexCollection > tok_recVtx_