CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HcalIsoTrkAnalyzer.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: HcalCalibAlgos
4 // Class: HcalIsoTrkAnalyzer
5 
6 //
13 //
14 // Original Authors: Andrey Pozdnyakov, Sergey Petrushanko,
15 // Grigory Safronov, Olga Kodolova
16 // Created: Thu Jul 12 18:12:19 CEST 2007
17 //
18 //
19 
20 // system include files
21 #include <memory>
22 
23 // user include files
26 
34 
38 
42 
45 
51 
63 
65 
66 
67 #include "TROOT.h"
68 #include "TH1.h"
69 #include "TH2.h"
70 #include "TFile.h"
71 #include "TTree.h"
72 
73 #include "TString.h"
74 #include "TObject.h"
75 #include "TObjArray.h"
76 #include "TClonesArray.h"
77 #include "TRefArray.h"
78 #include "TLorentzVector.h"
79 
80 
81 #include <iostream>
82 #include <fstream>
83 
84 using namespace edm;
85 using namespace std;
86 using namespace reco;
87 
88 //
89 // class decleration
90 //
91 
93 public:
94  explicit HcalIsoTrkAnalyzer(const edm::ParameterSet&);
96 
97  //double getDistInPlaneSimple(const GlobalPoint caloPoint, const GlobalPoint rechitPoint);
98 
99 private:
100  virtual void beginJob() override ;
101  virtual void analyze(const edm::Event&, const edm::EventSetup&) override;
102  virtual void endJob() override ;
103 
104  // ----------member data ---------------------------
105 
106 
109 
116 
123 
124  double associationConeSize_, calibrationConeSize_;
125  string AxB_;
128 
129  double trackEta, trackPhi;
130  double rvert;
131 
132 
133  int nIterations, MinNTrackHitsBarrel,MinNTECHitsEndcap;
134  float eventWeight;
135  double energyMinIso, energyMaxIso;
136  double energyECALmip, maxPNear;
137  double hottestHitDistance, EcalCone, EcalConeOuter;
138 
139  TFile* rootFile;
140  TTree* tree;
141  Float_t targetE;
143  UInt_t cell;
144  Float_t cellEnergy;
145 
146  TClonesArray* cells;
147  TRefArray* cells3x3;
148  TRefArray* cellsPF;
149  UInt_t eventNumber;
150  UInt_t runNumber;
151  Int_t iEtaHit;
152  UInt_t iPhiHit;
153 
154  Float_t xTrkEcal, yTrkEcal, zTrkEcal;
155  Float_t xTrkHcal, yTrkHcal, zTrkHcal;
156  Float_t PxTrkHcal, PyTrkHcal, PzTrkHcal;
157 
158  Float_t emEnergy, emRingEnergy;
159 
160  // TLorentzVector* exampleP4;
161  TLorentzVector* tagJetP4; // dijet
162  TLorentzVector* probeJetP4; // dijet
163  Float_t etVetoJet; // dijet
164  Float_t tagJetEmFrac; // dijet
165  Float_t probeJetEmFrac; // dijet
166 
167  std::ofstream input_to_L3;
168 
169 };
170 
171 
173 {
174 
175  m_ecalLabel = iConfig.getUntrackedParameter<std::string> ("ecalRecHitsLabel","ecalRecHit");
176  m_ebInstance = iConfig.getUntrackedParameter<std::string> ("ebRecHitsInstance","EcalRecHitsEB");
177  m_eeInstance = iConfig.getUntrackedParameter<std::string> ("eeRecHitsInstance","EcalRecHitsEE");
178  m_hcalLabel = iConfig.getUntrackedParameter<std::string> ("hcalRecHitsLabel","hbhereco");
179 
180  tok_hbhe_ = consumes<HBHERecHitCollection>(iConfig.getParameter<edm::InputTag>("hbheInput"));
181  tok_ho_ = consumes<HORecHitCollection>(iConfig.getParameter<edm::InputTag>("hoInput"));
182  tok_ecal_ = consumes<EcalRecHitCollection>(iConfig.getParameter<edm::InputTag>("eInput"));
183  tok_track_ = consumes<reco::IsolatedPixelTrackCandidateCollection>(iConfig.getParameter<edm::InputTag>("HcalIsolTrackInput"));
184  tok_track1_ = consumes<reco::TrackCollection>(iConfig.getParameter<edm::InputTag>("trackInput"));
185  associationConeSize_=iConfig.getParameter<double>("associationConeSize");
186  allowMissingInputs_=iConfig.getUntrackedParameter<bool>("allowMissingInputs",true);
187  outputFileName_=iConfig.getParameter<std::string>("outputFileName");
188 
189  AxB_=iConfig.getParameter<std::string>("AxB");
190  calibrationConeSize_=iConfig.getParameter<double>("calibrationConeSize");
191 
192  nIterations = iConfig.getParameter<int>("noOfIterations");
193  eventWeight = iConfig.getParameter<double>("eventWeight");
194  energyMinIso = iConfig.getParameter<double>("energyMinIso");
195  energyMaxIso = iConfig.getParameter<double>("energyMaxIso");
196  energyECALmip = iConfig.getParameter<double>("energyECALmip");
197  maxPNear = iConfig.getParameter<double>("maxPNear");
198  MinNTrackHitsBarrel = iConfig.getParameter<int>("MinNTrackHitsBarrel");
199  MinNTECHitsEndcap = iConfig.getParameter<int>("MinNTECHitsEndcap");
200  hottestHitDistance = iConfig.getParameter<double>("hottestHitDistance");
201  EcalCone = iConfig.getParameter<double>("EcalCone");
202  EcalConeOuter = iConfig.getParameter<double>("EcalConeOuter");
203 
204  edm::ParameterSet parameters = iConfig.getParameter<edm::ParameterSet>("TrackAssociatorParameters");
205  parameters_.loadParameters( parameters );
206  trackAssociator_.useDefaultPropagator();
207 
208 }
209 
211 {
212 }
213 
214 // ------------ method called to for each event ------------
215 void
217 {
218  using namespace edm;
219  using namespace std;
220 
221  vector<float> rawEnergyVec;
222  vector<int> detiphi;
223  vector<int> detieta;
224  vector<int> i3i5;
225  vector<HcalDetId> detidvec;
226  float calEnergy;
227 
229  iEvent.getByToken(tok_track1_,isoProdTracks);
230 
232  iEvent.getByToken(tok_track_,isoPixelTracks);
233 
235  iEvent.getByToken(tok_ecal_,ecal);
236  const EcalRecHitCollection Hitecal = *(ecal.product());
237 
239  iEvent.getByToken(tok_hbhe_,hbhe);
240  const HBHERecHitCollection Hithbhe = *(hbhe.product());
241 
243  iSetup.get<CaloGeometryRecord>().get(pG);
244  geo = pG.product();
245 
246  const CaloSubdetectorGeometry* gHcal = geo->getSubdetectorGeometry(DetId::Hcal,HcalBarrel);
247  //Note: even though it says HcalBarrel, we actually get the whole Hcal detector geometry!
248 
249 
250 // rof 16.05.2008 start: include the possibility for recalibration (use "recalibrate" label for safety)
251 /*
252  edm::ESHandle <HcalRespCorrs> recalibCorrs;
253  iSetup.get<HcalRespCorrsRcd>().get("recalibrate",recalibCorrs);
254  const HcalRespCorrs* myRecalib = recalibCorrs.product();
255 */
256 // rof end
257 
258  parameters_.useEcal = true;
259  parameters_.useHcal = true;
260  parameters_.useCalo = false;
261  parameters_.useMuon = false;
262  parameters_.dREcal = 0.5;
263  parameters_.dRHcal = 0.6;
264 
265  if (isoPixelTracks->size()==0) return;
266 
267  for (reco::TrackCollection::const_iterator trit=isoProdTracks->begin(); trit!=isoProdTracks->end(); trit++)
268  {
269  reco::IsolatedPixelTrackCandidateCollection::const_iterator isoMatched=isoPixelTracks->begin();
270  bool matched=false;
271 
272  //Note: this part needs to be changed: obtain isoPixelTracks from isoProdTracks (should be a way)
273  for (reco::IsolatedPixelTrackCandidateCollection::const_iterator it = isoPixelTracks->begin(); it!=isoPixelTracks->end(); it++)
274  {
275 
276  if (abs((trit->pt() - it->pt())/it->pt()) < 0.005 && abs(trit->eta() - it->eta()) < 0.01)
277  {
278  isoMatched=it;
279  matched=true;
280  break;
281  }
282  }
283  if (!matched) continue;
284 
285  if (trit->hitPattern().numberOfValidHits()<MinNTrackHitsBarrel) continue;
286  if (fabs(trit->eta())>1.47&&trit->hitPattern().numberOfValidStripTECHits()<MinNTECHitsEndcap) continue;
287 
288 
289  calEnergy = sqrt(trit->px()*trit->px()+trit->py()*trit->py()+trit->pz()*trit->pz()+0.14*0.14);
290 
291  trackEta = trit->eta();
292  trackPhi = trit->phi();
293 
294  double corrHCAL = 1.; //another possibility for correction. - why?
295 
296  // cout << endl << " ISO TRACK E = "<< calEnergy << " ETA = " << trackEta<< " PHI = " << trackPhi << " Correction " << corrHCAL<< endl;
297 
298  rvert = sqrt(trit->vx()*trit->vx()+trit->vy()*trit->vy()+trit->vz()*trit->vz());
299 
300  //Associate track with a calorimeter
301  TrackDetMatchInfo info = trackAssociator_.associate(iEvent, iSetup,trackAssociator_.getFreeTrajectoryState(iSetup, *trit),parameters_);
302 
303 
304  xTrkHcal=info.trkGlobPosAtHcal.x();
305  yTrkHcal=info.trkGlobPosAtHcal.y();
306  zTrkHcal=info.trkGlobPosAtHcal.z();
307 
308  xTrkEcal=info.trkGlobPosAtEcal.x();
309  yTrkEcal=info.trkGlobPosAtEcal.y();
310  zTrkEcal=info.trkGlobPosAtEcal.z();
311 
312  if (xTrkEcal==0 && yTrkEcal==0&& zTrkEcal==0) {cout<<"zero point at Ecal"<<endl; continue;}
313  if (xTrkHcal==0 && yTrkHcal==0&& zTrkHcal==0) {cout<<"zero point at Hcal"<<endl; continue;}
314 
315  GlobalVector trackMomAtHcal = info.trkMomAtHcal;
316 
317  PxTrkHcal = trackMomAtHcal.x();
318  PyTrkHcal = trackMomAtHcal.y();
319  PzTrkHcal = trackMomAtHcal.z();
320 
321  //PxTrkHcal=0;
322  //PyTrkHcal=0;
323  //PzTrkHcal=0;
324 
325  GlobalPoint gPointEcal(xTrkEcal,yTrkEcal,zTrkEcal);
326  GlobalPoint gPointHcal(xTrkHcal,yTrkHcal,zTrkHcal);
327 
328  // emEnergy = isoMatched->energyIn();
329  emEnergy = ecalEnergyInCone(gPointEcal, EcalCone, Hitecal, geo);
330 
331  emRingEnergy = ecalEnergyInCone(gPointEcal, EcalConeOuter, Hitecal, geo) - ecalEnergyInCone(gPointEcal, EcalCone, Hitecal, geo);
332 
333 
334  int iphitrue = -10;
335  int ietatrue = 100;
336 
337  const HcalDetId tempId = gHcal->getClosestCell(gPointHcal);
338  ietatrue = tempId.ieta();
339  iphitrue = tempId.iphi();
340 
341 
342  //container for used recHits
343  std::vector<DetId> usedHits;
344  //
345  //clear usedHits
346  usedHits.clear();
347 
348 
349  // Find Hcal RecHit with maximum energy and collect other information
350  MaxHit_struct MaxHit;
351  MaxHit.hitenergy=-100;
352 
353 
354  for (HBHERecHitCollection::const_iterator hhit=Hithbhe.begin(); hhit!=Hithbhe.end(); hhit++)
355  {
356 
357  //check that this hit was not considered before and push it into usedHits
358  bool hitIsUsed=false;
359  DetId hitId=hhit->id();
360  for (uint32_t i=0; i<usedHits.size(); i++)
361  {
362  if (usedHits[i]==hitId) hitIsUsed=true;
363  }
364  if (hitIsUsed) continue;
365  usedHits.push_back(hitId);
366  //
367 
368  // rof 16.05.2008 start: include the possibility for recalibration
369  float recal = 1;
370  // rof end
371 
372  GlobalPoint pos = geo->getPosition(hhit->detid());
373 
374  int iphihitm = (hhit->id()).iphi();
375  int ietahitm = (hhit->id()).ieta();
376  int depthhit = (hhit->id()).depth();
377  double enehit = hhit->energy() * recal;
378 
379  if (depthhit!=1) continue;
380 
381 
382  double distAtHcal = getDistInPlaneTrackDir(gPointHcal, trackMomAtHcal, pos);
383  //double distAtHcal = getDistInPlaneSimple(gPointHcal, pos);
384 
385  //if(dr<associationConeSize_)
386  if(distAtHcal < associationConeSize_)
387  {
388  for (HBHERecHitCollection::const_iterator hhit2=Hithbhe.begin(); hhit2!=Hithbhe.end(); hhit2++)
389  {
390  int iphihitm2 = (hhit2->id()).iphi();
391  int ietahitm2 = (hhit2->id()).ieta();
392  int depthhit2 = (hhit2->id()).depth();
393  double enehit2 = hhit2->energy() * recal;
394 
395  if ( iphihitm==iphihitm2 && ietahitm==ietahitm2 && depthhit!=depthhit2){
396 
397  enehit = enehit+enehit2;
398  }
399  }
400 
401  if(enehit > MaxHit.hitenergy)
402  {
403  MaxHit.hitenergy = enehit;
404  MaxHit.ietahitm = (hhit->id()).ieta();
405  MaxHit.iphihitm = (hhit->id()).iphi();
406  MaxHit.depthhit = (hhit->id()).depth();
407  MaxHit.dr = distAtHcal;
408 
409  MaxHit.posMax = geo->getPosition(hhit->detid());
410 
411  }
412  }
413  }
414 
415 
416  Bool_t passCuts = kFALSE;
417  if(calEnergy > energyMinIso && calEnergy < energyMaxIso && emEnergy < energyECALmip &&
418  isoMatched->maxPtPxl() < maxPNear && abs(MaxHit.ietahitm)<30 && MaxHit.hitenergy > 0. &&
419  MaxHit.dr < hottestHitDistance && emRingEnergy<8.){ passCuts = kTRUE; }
420 
421 
422  if(AxB_=="5x5" || AxB_=="3x3" || AxB_=="7x7"|| AxB_=="Cone")
423  {
424 
425  //clear usedHits
426  usedHits.clear();
427  //
428 
429  for (HBHERecHitCollection::const_iterator hhit=Hithbhe.begin(); hhit!=Hithbhe.end(); hhit++)
430  {
431 
432  //check that this hit was not considered before and push it into usedHits
433  bool hitIsUsed=false;
434  DetId hitId=hhit->id();
435  for (uint32_t i=0; i<usedHits.size(); i++)
436  {
437  if (usedHits[i]==hitId) hitIsUsed=true;
438  }
439  if (hitIsUsed)
440  {
441  //cout<<"Hit is Used! ieta: "<< (hhit->id()).ieta()<<" iphi: "<<(hhit->id()).iphi()<<" depth: "<<(hhit->id()).depth()<<" hashed_index: "<<hitHashedIndex<<endl;
442  continue;}
443 
444  usedHits.push_back(hitId);
445  //
446 
447  int DIETA = 100;
448  if(MaxHit.ietahitm*(hhit->id()).ieta()>0)
449  {
450  DIETA = MaxHit.ietahitm - (hhit->id()).ieta();
451  }
452  if(MaxHit.ietahitm*(hhit->id()).ieta()<0)
453  {
454  DIETA = MaxHit.ietahitm - (hhit->id()).ieta();
455  DIETA = DIETA>0 ? DIETA-1 : DIETA+1;
456  }
457 
458  int DIPHI = abs(MaxHit.iphihitm - (hhit->id()).iphi());
459  DIPHI = DIPHI>36 ? 72-DIPHI : DIPHI;
460  /*AP DIPHI = DIPHI<-36 ? 72+DIPHI : DIPHI; */
461 
462  int numbercell=0;
463  if(AxB_=="3x3") numbercell = 1;
464  if(AxB_=="5x5") numbercell = 2;
465  if(AxB_=="7x7") numbercell = 3;
466  if(AxB_=="Cone") numbercell = 1000;
467 
468  if( abs(DIETA)<=numbercell && (abs(DIPHI)<=numbercell || ( abs(MaxHit.ietahitm)>=20 && abs(DIPHI)<=numbercell+1)) ) {
469 
470  // rof 16.05.2008 start: include the possibility for recalibration
471  float recal = 1;
472 
473  int iii3i5 = 0;
474 
475  const GlobalPoint pos2 = geo->getPosition(hhit->detid());
476 
477  if(passCuts){
478 
479  if(AxB_=="5x5" || AxB_=="3x3" || AxB_=="7x7") {
480 
481  rawEnergyVec.push_back(hhit->energy() * recal * corrHCAL);
482  detidvec.push_back(hhit->id());
483  detiphi.push_back((hhit->id()).iphi());
484  detieta.push_back((hhit->id()).ieta());
485  i3i5.push_back(iii3i5);
486 
487  }
488 
489  if (AxB_=="Cone" && getDistInPlaneTrackDir(gPointHcal, trackMomAtHcal, pos2) < calibrationConeSize_) {
490  //if (AxB_=="Cone" && getDistInPlaneSimple(gPointHcal,pos2) < calibrationConeSize_) {
491 
492  rawEnergyVec.push_back(hhit->energy() * recal * corrHCAL);
493  detidvec.push_back(hhit->id());
494  detiphi.push_back((hhit->id()).iphi());
495  detieta.push_back((hhit->id()).ieta());
496  i3i5.push_back(iii3i5);
497 
498  }
499 
500  }
501  }
502  }
503  }
504 
505  if(AxB_!="3x3" && AxB_!="5x5" && AxB_!="7x7" && AxB_!="Cone") LogWarning(" AxB ")<<" Not supported: "<< AxB_;
506 
507  if(passCuts){
508 
509  input_to_L3 << rawEnergyVec.size() << " " << calEnergy;
510 
511 
512  for (unsigned int i=0; i<rawEnergyVec.size(); i++)
513  {
514  input_to_L3 << " " << rawEnergyVec.at(i) << " " << detidvec.at(i).rawId() ;
515 
516  }
517  input_to_L3 <<endl;
518 
519  eventNumber = iEvent.id().event();
520  runNumber = iEvent.id().run();
521  iEtaHit = ietatrue;
522  iPhiHit = iphitrue;
523 
524  numberOfCells=rawEnergyVec.size();
525  targetE = calEnergy;
526 
527  for (unsigned int ia=0; ia<numberOfCells; ++ia) {
528  cellEnergy = rawEnergyVec.at(ia);
529  cell = detidvec.at(ia).rawId();
530 
531  new((*cells)[ia]) TCell(cell, cellEnergy);
532 
533 
534  }
535 
536  tree->Fill();
537 
538  cells->Clear();
539 
540  }
541 
542  rawEnergyVec.clear();
543  detidvec.clear();
544  detiphi.clear();
545  detieta.clear();
546  i3i5.clear();
547 
548  try {
550  iEvent.getByToken(tok_ho_,ho);
551  const HORecHitCollection Hitho = *(ho.product());
552 
553  //clear usedHits
554  usedHits.clear();
555  //
556 
557  for(HORecHitCollection::const_iterator hoItr=Hitho.begin(); hoItr!=Hitho.end(); hoItr++)
558  {
559 
560  //check that this hit was not considered before and push it into usedHits
561  bool hitIsUsed=false;
562  DetId hitId=hoItr->id();
563  for (uint32_t i=0; i<usedHits.size(); i++)
564  {
565  if (usedHits[i]==hitId) hitIsUsed=true;
566  }
567  if (hitIsUsed) continue;
568 
569  usedHits.push_back(hitId);
570 
571  /*AP
572  GlobalPoint pos = geo->getPosition(hoItr->detid());
573  double phihit = pos.phi();
574  double etahit = pos.eta();
575 
576  int iphihitm = (hoItr->id()).iphi();
577  int ietahitm = (hoItr->id()).ieta();
578  int depthhit = (hoItr->id()).depth();
579 
580  double dphi = fabs(trackPhi - phihit);
581  if(dphi > 4.*atan(1.)) dphi = 8.*atan(1.) - dphi;
582  double deta = fabs(trackEta - etahit);
583  double dr = sqrt(dphi*dphi + deta*deta);
584  */
585 
586  }
587  } catch (cms::Exception& e) { // can't find it!
588  if (!allowMissingInputs_) throw e;
589  }
590  }
591 }
592 
593 
594 
595 // ------------ method called once each job just before starting event loop ------------
596 void
598 {
599 
600  // MyL3Algo = new MinL3AlgoUniv<HcalDetId>(eventWeight);
601 
602  input_to_L3.open("input_to_l3.txt");
603 
604  rootFile = new TFile("rootFile.root", "RECREATE");
605  tree = new TTree("hcalCalibTree", "Tree for IsoTrack Calibration");
606  cells = new TClonesArray("TCell", 10000);
607 // cells3x3 = new TRefArray;
608 // cellsPF = new TRefArray;
609 // exampleP4 = new TLorentzVector();
610  tagJetP4 = new TLorentzVector(); // dijet
611  probeJetP4 = new TLorentzVector(); // dijet
612 
613  tree->Branch("cells", &cells, 64000, 0);
614  tree->Branch("targetE", &targetE, "targetE/F");
615  tree->Branch("emEnergy", &emEnergy, "emEnergy/F");
616 
617  tree->Branch("PxTrkHcal", &PxTrkHcal, "PxTrkHcal/F");
618  tree->Branch("PyTrkHcal", &PyTrkHcal, "PyTrkHcal/F");
619  tree->Branch("PzTrkHcal", &PzTrkHcal, "PzTrkHcal/F");
620 
621 
622  tree->Branch("xTrkHcal", &xTrkHcal, "xTrkHcal/F");
623  tree->Branch("yTrkHcal", &yTrkHcal, "yTrkHcal/F");
624  tree->Branch("zTrkHcal", &zTrkHcal, "zTrkHcal/F");
625 
626  tree->Branch("iEtaHit", &iEtaHit, "iEtaHit/I");
627  tree->Branch("iPhiHit", &iPhiHit, "iPhiHit/i");
628  tree->Branch("eventNumber", &eventNumber, "eventNumber/i");
629  tree->Branch("runNumber", &runNumber, "runNumber/i");
630 
631  tree->Branch("tagJetP4", "TLorentzVector", &tagJetP4); // dijet
632  tree->Branch("probeJetP4", "TLorentzVector", &probeJetP4); // dijet
633  tree->Branch("etVetoJet", &etVetoJet, "etVetoJet/F"); // dijet
634  tree->Branch("tagJetEmFrac", &tagJetEmFrac,"tagJetEmFrac/F"); // dijet
635  tree->Branch("probeJetEmFrac", &probeJetEmFrac,"probeJetEmFrac/F"); // dijet
636 
637 }
638 
639 // ------------ method called once each job just after ending the event loop ------------
640 void
642 
643  input_to_L3.close();
644 
645  rootFile->Write();
646  rootFile->Close();
647 
648  if (cells) delete cells;
649 // if (cells3x3) delete cells3x3;
650 // if (cellsPF) delete cellsPF;
651 // if (exampleP4) delete exampleP4;
652  if (tagJetP4) delete tagJetP4; // dijet
653  if (probeJetP4) delete probeJetP4; // dijet
654 
655 }
656 
657 //define this as a plug-in
659 
RunNumber_t run() const
Definition: EventID.h:42
T getParameter(std::string const &) const
EventNumber_t event() const
Definition: EventID.h:44
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
dictionary parameters
Definition: Parameters.py:2
static const TGPicture * info(bool iBackgroundIsBlack)
edm::EDGetTokenT< EcalRecHitCollection > tok_ecal_
GlobalPoint posMax
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:434
HcalIsoTrkAnalyzer(const edm::ParameterSet &)
double ecalEnergyInCone(const GlobalPoint center, double radius, const EcalRecHitCollection ecalCol, const CaloGeometry *geo)
double getDistInPlaneTrackDir(const GlobalPoint caloPoint, const GlobalVector caloVector, const GlobalPoint rechitPoint)
std::vector< HBHERecHit >::const_iterator const_iterator
T y() const
Definition: PV3DBase.h:63
Definition: TCell.h:15
TrackDetectorAssociator trackAssociator_
DEFINE_FWK_MODULE(HiMixingModule)
edm::EDGetTokenT< HBHERecHitCollection > tok_hbhe_
void beginJob()
Definition: Breakpoints.cc:15
TLorentzVector * probeJetP4
int iEvent
Definition: GenABIO.cc:243
edm::EDGetTokenT< reco::IsolatedPixelTrackCandidateCollection > tok_track_
T sqrt(T t)
Definition: SSEVec.h:48
T z() const
Definition: PV3DBase.h:64
int ieta() const
get the cell ieta
Definition: HcalDetId.h:36
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
virtual void analyze(const edm::Event &, const edm::EventSetup &) override
const CaloGeometry * geo
TLorentzVector * tagJetP4
const_iterator end() const
TrackAssociatorParameters parameters_
int iphi() const
get the cell iphi
Definition: HcalDetId.h:38
Definition: DetId.h:18
const T & get() const
Definition: EventSetup.h:55
edm::EDGetTokenT< HORecHitCollection > tok_ho_
T const * product() const
Definition: Handle.h:81
virtual void endJob() override
edm::EventID id() const
Definition: EventBase.h:56
tuple cout
Definition: gather_cfg.py:121
virtual void beginJob() override
T x() const
Definition: PV3DBase.h:62
edm::EDGetTokenT< reco::TrackCollection > tok_track1_
const_iterator begin() const