CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
HcalIsoTrkAnalyzer Class Reference

#include <Calibration/HcalCalibAlgos/src/HcalIsoTrkAnalyzer.cc>

Inheritance diagram for HcalIsoTrkAnalyzer:
edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

 HcalIsoTrkAnalyzer (const edm::ParameterSet &)
 
 ~HcalIsoTrkAnalyzer ()
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
ModuleDescription const & moduleDescription () const
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &) override
 
virtual void beginJob () override
 
virtual void endJob () override
 

Private Attributes

bool allowMissingInputs_
 
double associationConeSize_
 
string AxB_
 
double calibrationConeSize_
 
UInt_t cell
 
Float_t cellEnergy
 
TClonesArray * cells
 
TRefArray * cells3x3
 
TRefArray * cellsPF
 
double EcalCone
 
double EcalConeOuter
 
Float_t emEnergy
 
Float_t emRingEnergy
 
double energyECALmip
 
double energyMaxIso
 
double energyMinIso
 
Float_t etVetoJet
 
UInt_t eventNumber
 
float eventWeight
 
const CaloGeometrygeo
 
double hottestHitDistance
 
Int_t iEtaHit
 
std::ofstream input_to_L3
 
UInt_t iPhiHit
 
std::string m_ebInstance
 
std::string m_ecalLabel
 
std::string m_eeInstance
 
std::string m_hcalLabel
 
int m_histoFlag
 
std::string m_inputTrackLabel
 
double maxPNear
 
int MinNTECHitsEndcap
 
int MinNTrackHitsBarrel
 
int nIterations
 
UInt_t numberOfCells
 
string outputFileName_
 
TrackAssociatorParameters parameters_
 
Float_t probeJetEmFrac
 
TLorentzVector * probeJetP4
 
Float_t PxTrkHcal
 
Float_t PyTrkHcal
 
Float_t PzTrkHcal
 
TFile * rootFile
 
UInt_t runNumber
 
double rvert
 
Float_t tagJetEmFrac
 
TLorentzVector * tagJetP4
 
Float_t targetE
 
edm::EDGetTokenT
< EcalRecHitCollection
tok_ecal_
 
edm::EDGetTokenT
< HBHERecHitCollection
tok_hbhe_
 
edm::EDGetTokenT
< HORecHitCollection
tok_ho_
 
edm::EDGetTokenT
< reco::TrackCollection
tok_track1_
 
edm::EDGetTokenT
< reco::IsolatedPixelTrackCandidateCollection
tok_track_
 
TrackDetectorAssociator trackAssociator_
 
double trackEta
 
double trackPhi
 
TTree * tree
 
Float_t xTrkEcal
 
Float_t xTrkHcal
 
Float_t yTrkEcal
 
Float_t yTrkHcal
 
Float_t zTrkEcal
 
Float_t zTrkHcal
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Description: see twiki for details: https://twiki.cern.ch/twiki/bin/view/CMS/IsoTrackAnalyzer

Implementation: <Notes on="" implementation>="">

Definition at line 92 of file HcalIsoTrkAnalyzer.cc.

Constructor & Destructor Documentation

HcalIsoTrkAnalyzer::HcalIsoTrkAnalyzer ( const edm::ParameterSet iConfig)
explicit

Definition at line 172 of file HcalIsoTrkAnalyzer.cc.

References edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), Parameters::parameters, and AlCaHLTBitMon_QueryRunRegistry::string.

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");
208 
209 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
dictionary parameters
Definition: Parameters.py:2
edm::EDGetTokenT< EcalRecHitCollection > tok_ecal_
void useDefaultPropagator()
use the default propagator
void loadParameters(const edm::ParameterSet &, edm::ConsumesCollector &)
TrackDetectorAssociator trackAssociator_
edm::EDGetTokenT< HBHERecHitCollection > tok_hbhe_
edm::EDGetTokenT< reco::IsolatedPixelTrackCandidateCollection > tok_track_
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
TrackAssociatorParameters parameters_
edm::EDGetTokenT< HORecHitCollection > tok_ho_
edm::EDGetTokenT< reco::TrackCollection > tok_track1_
HcalIsoTrkAnalyzer::~HcalIsoTrkAnalyzer ( )

Definition at line 211 of file HcalIsoTrkAnalyzer.cc.

212 {
213 }

Member Function Documentation

void HcalIsoTrkAnalyzer::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivatevirtual

Implements edm::EDAnalyzer.

Definition at line 217 of file HcalIsoTrkAnalyzer.cc.

References funct::abs(), edm::SortedCollection< T, SORT >::begin(), gather_cfg::cout, HLT_25ns14e33_v1_cff::depth, MaxHit_struct::depthhit, MaxHit_struct::dr, alignCSCRings::e, patCandidatesForDimuonsSequences_cff::ecal, ecalEnergyInCone(), edm::SortedCollection< T, SORT >::end(), edm::EventID::event(), edm::EventSetup::get(), edm::Event::getByToken(), getDistInPlaneTrackDir(), DetId::Hcal, HcalBarrel, MaxHit_struct::hitenergy, i, edm::EventBase::id(), HcalDetId::ieta(), MaxHit_struct::ietahitm, info(), HcalDetId::iphi(), MaxHit_struct::iphihitm, MaxHit_struct::posMax, edm::Handle< T >::product(), edm::EventID::run(), convertSQLiteXML::runNumber, mathSSE::sqrt(), reco::btau::trackEta, reco::btau::trackPhi, MainPageGenerator::tree, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

218 {
219  using namespace edm;
220  using namespace std;
221 
222  vector<float> rawEnergyVec;
223  vector<int> detiphi;
224  vector<int> detieta;
225  vector<int> i3i5;
226  vector<HcalDetId> detidvec;
227  float calEnergy;
228 
230  iEvent.getByToken(tok_track1_,isoProdTracks);
231 
233  iEvent.getByToken(tok_track_,isoPixelTracks);
234 
236  iEvent.getByToken(tok_ecal_,ecal);
237  const EcalRecHitCollection Hitecal = *(ecal.product());
238 
240  iEvent.getByToken(tok_hbhe_,hbhe);
241  const HBHERecHitCollection Hithbhe = *(hbhe.product());
242 
244  iSetup.get<CaloGeometryRecord>().get(pG);
245  geo = pG.product();
246 
248  //Note: even though it says HcalBarrel, we actually get the whole Hcal detector geometry!
249 
250 
251 // rof 16.05.2008 start: include the possibility for recalibration (use "recalibrate" label for safety)
252 /*
253  edm::ESHandle <HcalRespCorrs> recalibCorrs;
254  iSetup.get<HcalRespCorrsRcd>().get("recalibrate",recalibCorrs);
255  const HcalRespCorrs* myRecalib = recalibCorrs.product();
256 */
257 // rof end
258 
259  parameters_.useEcal = true;
260  parameters_.useHcal = true;
261  parameters_.useCalo = false;
262  parameters_.useMuon = false;
263  parameters_.dREcal = 0.5;
264  parameters_.dRHcal = 0.6;
265 
266  if (isoPixelTracks->size()==0) return;
267 
268  for (reco::TrackCollection::const_iterator trit=isoProdTracks->begin(); trit!=isoProdTracks->end(); trit++)
269  {
270  reco::IsolatedPixelTrackCandidateCollection::const_iterator isoMatched=isoPixelTracks->begin();
271  bool matched=false;
272 
273  //Note: this part needs to be changed: obtain isoPixelTracks from isoProdTracks (should be a way)
274  for (reco::IsolatedPixelTrackCandidateCollection::const_iterator it = isoPixelTracks->begin(); it!=isoPixelTracks->end(); it++)
275  {
276 
277  if (abs((trit->pt() - it->pt())/it->pt()) < 0.005 && abs(trit->eta() - it->eta()) < 0.01)
278  {
279  isoMatched=it;
280  matched=true;
281  break;
282  }
283  }
284  if (!matched) continue;
285 
286  if (trit->hitPattern().numberOfValidHits()<MinNTrackHitsBarrel) continue;
287  if (fabs(trit->eta())>1.47&&trit->hitPattern().numberOfValidStripTECHits()<MinNTECHitsEndcap) continue;
288 
289 
290  calEnergy = sqrt(trit->px()*trit->px()+trit->py()*trit->py()+trit->pz()*trit->pz()+0.14*0.14);
291 
292  trackEta = trit->eta();
293  trackPhi = trit->phi();
294 
295  double corrHCAL = 1.; //another possibility for correction. - why?
296 
297  // cout << endl << " ISO TRACK E = "<< calEnergy << " ETA = " << trackEta<< " PHI = " << trackPhi << " Correction " << corrHCAL<< endl;
298 
299  rvert = sqrt(trit->vx()*trit->vx()+trit->vy()*trit->vy()+trit->vz()*trit->vz());
300 
301  //Associate track with a calorimeter
303 
304 
305  xTrkHcal=info.trkGlobPosAtHcal.x();
306  yTrkHcal=info.trkGlobPosAtHcal.y();
307  zTrkHcal=info.trkGlobPosAtHcal.z();
308 
309  xTrkEcal=info.trkGlobPosAtEcal.x();
310  yTrkEcal=info.trkGlobPosAtEcal.y();
311  zTrkEcal=info.trkGlobPosAtEcal.z();
312 
313  if (xTrkEcal==0 && yTrkEcal==0&& zTrkEcal==0) {cout<<"zero point at Ecal"<<endl; continue;}
314  if (xTrkHcal==0 && yTrkHcal==0&& zTrkHcal==0) {cout<<"zero point at Hcal"<<endl; continue;}
315 
316  GlobalVector trackMomAtHcal = info.trkMomAtHcal;
317 
318  PxTrkHcal = trackMomAtHcal.x();
319  PyTrkHcal = trackMomAtHcal.y();
320  PzTrkHcal = trackMomAtHcal.z();
321 
322  //PxTrkHcal=0;
323  //PyTrkHcal=0;
324  //PzTrkHcal=0;
325 
328 
329  // emEnergy = isoMatched->energyIn();
330  emEnergy = ecalEnergyInCone(gPointEcal, EcalCone, Hitecal, geo);
331 
332  emRingEnergy = ecalEnergyInCone(gPointEcal, EcalConeOuter, Hitecal, geo) - ecalEnergyInCone(gPointEcal, EcalCone, Hitecal, geo);
333 
334 
335  int iphitrue = -10;
336  int ietatrue = 100;
337 
338  const HcalDetId tempId = gHcal->getClosestCell(gPointHcal);
339  ietatrue = tempId.ieta();
340  iphitrue = tempId.iphi();
341 
342 
343  //container for used recHits
344  std::vector<DetId> usedHits;
345  //
346  //clear usedHits
347  usedHits.clear();
348 
349 
350  // Find Hcal RecHit with maximum energy and collect other information
351  MaxHit_struct MaxHit;
352  MaxHit.hitenergy=-100;
353 
354 
355  for (HBHERecHitCollection::const_iterator hhit=Hithbhe.begin(); hhit!=Hithbhe.end(); hhit++)
356  {
357 
358  //check that this hit was not considered before and push it into usedHits
359  bool hitIsUsed=false;
360  DetId hitId=hhit->id();
361  for (uint32_t i=0; i<usedHits.size(); i++)
362  {
363  if (usedHits[i]==hitId) hitIsUsed=true;
364  }
365  if (hitIsUsed) continue;
366  usedHits.push_back(hitId);
367  //
368 
369  // rof 16.05.2008 start: include the possibility for recalibration
370  float recal = 1;
371  // rof end
372 
373  GlobalPoint pos = geo->getPosition(hhit->detid());
374 
375  int iphihitm = (hhit->id()).iphi();
376  int ietahitm = (hhit->id()).ieta();
377  int depthhit = (hhit->id()).depth();
378  double enehit = hhit->energy() * recal;
379 
380  if (depthhit!=1) continue;
381 
382 
383  double distAtHcal = getDistInPlaneTrackDir(gPointHcal, trackMomAtHcal, pos);
384  //double distAtHcal = getDistInPlaneSimple(gPointHcal, pos);
385 
386  //if(dr<associationConeSize_)
387  if(distAtHcal < associationConeSize_)
388  {
389  for (HBHERecHitCollection::const_iterator hhit2=Hithbhe.begin(); hhit2!=Hithbhe.end(); hhit2++)
390  {
391  int iphihitm2 = (hhit2->id()).iphi();
392  int ietahitm2 = (hhit2->id()).ieta();
393  int depthhit2 = (hhit2->id()).depth();
394  double enehit2 = hhit2->energy() * recal;
395 
396  if ( iphihitm==iphihitm2 && ietahitm==ietahitm2 && depthhit!=depthhit2){
397 
398  enehit = enehit+enehit2;
399  }
400  }
401 
402  if(enehit > MaxHit.hitenergy)
403  {
404  MaxHit.hitenergy = enehit;
405  MaxHit.ietahitm = (hhit->id()).ieta();
406  MaxHit.iphihitm = (hhit->id()).iphi();
407  MaxHit.depthhit = (hhit->id()).depth();
408  MaxHit.dr = distAtHcal;
409 
410  MaxHit.posMax = geo->getPosition(hhit->detid());
411 
412  }
413  }
414  }
415 
416 
417  Bool_t passCuts = kFALSE;
418  if(calEnergy > energyMinIso && calEnergy < energyMaxIso && emEnergy < energyECALmip &&
419  isoMatched->maxPtPxl() < maxPNear && abs(MaxHit.ietahitm)<30 && MaxHit.hitenergy > 0. &&
420  MaxHit.dr < hottestHitDistance && emRingEnergy<8.){ passCuts = kTRUE; }
421 
422 
423  if(AxB_=="5x5" || AxB_=="3x3" || AxB_=="7x7"|| AxB_=="Cone")
424  {
425 
426  //clear usedHits
427  usedHits.clear();
428  //
429 
430  for (HBHERecHitCollection::const_iterator hhit=Hithbhe.begin(); hhit!=Hithbhe.end(); hhit++)
431  {
432 
433  //check that this hit was not considered before and push it into usedHits
434  bool hitIsUsed=false;
435  DetId hitId=hhit->id();
436  for (uint32_t i=0; i<usedHits.size(); i++)
437  {
438  if (usedHits[i]==hitId) hitIsUsed=true;
439  }
440  if (hitIsUsed)
441  {
442  //cout<<"Hit is Used! ieta: "<< (hhit->id()).ieta()<<" iphi: "<<(hhit->id()).iphi()<<" depth: "<<(hhit->id()).depth()<<" hashed_index: "<<hitHashedIndex<<endl;
443  continue;}
444 
445  usedHits.push_back(hitId);
446  //
447 
448  int DIETA = 100;
449  if(MaxHit.ietahitm*(hhit->id()).ieta()>0)
450  {
451  DIETA = MaxHit.ietahitm - (hhit->id()).ieta();
452  }
453  if(MaxHit.ietahitm*(hhit->id()).ieta()<0)
454  {
455  DIETA = MaxHit.ietahitm - (hhit->id()).ieta();
456  DIETA = DIETA>0 ? DIETA-1 : DIETA+1;
457  }
458 
459  int DIPHI = abs(MaxHit.iphihitm - (hhit->id()).iphi());
460  DIPHI = DIPHI>36 ? 72-DIPHI : DIPHI;
461  /*AP DIPHI = DIPHI<-36 ? 72+DIPHI : DIPHI; */
462 
463  int numbercell=0;
464  if(AxB_=="3x3") numbercell = 1;
465  if(AxB_=="5x5") numbercell = 2;
466  if(AxB_=="7x7") numbercell = 3;
467  if(AxB_=="Cone") numbercell = 1000;
468 
469  if( abs(DIETA)<=numbercell && (abs(DIPHI)<=numbercell || ( abs(MaxHit.ietahitm)>=20 && abs(DIPHI)<=numbercell+1)) ) {
470 
471  // rof 16.05.2008 start: include the possibility for recalibration
472  float recal = 1;
473 
474  int iii3i5 = 0;
475 
476  const GlobalPoint pos2 = geo->getPosition(hhit->detid());
477 
478  if(passCuts){
479 
480  if(AxB_=="5x5" || AxB_=="3x3" || AxB_=="7x7") {
481 
482  rawEnergyVec.push_back(hhit->energy() * recal * corrHCAL);
483  detidvec.push_back(hhit->id());
484  detiphi.push_back((hhit->id()).iphi());
485  detieta.push_back((hhit->id()).ieta());
486  i3i5.push_back(iii3i5);
487 
488  }
489 
490  if (AxB_=="Cone" && getDistInPlaneTrackDir(gPointHcal, trackMomAtHcal, pos2) < calibrationConeSize_) {
491  //if (AxB_=="Cone" && getDistInPlaneSimple(gPointHcal,pos2) < calibrationConeSize_) {
492 
493  rawEnergyVec.push_back(hhit->energy() * recal * corrHCAL);
494  detidvec.push_back(hhit->id());
495  detiphi.push_back((hhit->id()).iphi());
496  detieta.push_back((hhit->id()).ieta());
497  i3i5.push_back(iii3i5);
498 
499  }
500 
501  }
502  }
503  }
504  }
505 
506  if(AxB_!="3x3" && AxB_!="5x5" && AxB_!="7x7" && AxB_!="Cone") LogWarning(" AxB ")<<" Not supported: "<< AxB_;
507 
508  if(passCuts){
509 
510  input_to_L3 << rawEnergyVec.size() << " " << calEnergy;
511 
512 
513  for (unsigned int i=0; i<rawEnergyVec.size(); i++)
514  {
515  input_to_L3 << " " << rawEnergyVec.at(i) << " " << detidvec.at(i).rawId() ;
516 
517  }
518  input_to_L3 <<endl;
519 
520  eventNumber = iEvent.id().event();
521  runNumber = iEvent.id().run();
522  iEtaHit = ietatrue;
523  iPhiHit = iphitrue;
524 
525  numberOfCells=rawEnergyVec.size();
526  targetE = calEnergy;
527 
528  for (unsigned int ia=0; ia<numberOfCells; ++ia) {
529  cellEnergy = rawEnergyVec.at(ia);
530  cell = detidvec.at(ia).rawId();
531 
532  new((*cells)[ia]) TCell(cell, cellEnergy);
533 
534 
535  }
536 
537  tree->Fill();
538 
539  cells->Clear();
540 
541  }
542 
543  rawEnergyVec.clear();
544  detidvec.clear();
545  detiphi.clear();
546  detieta.clear();
547  i3i5.clear();
548 
549  try {
551  iEvent.getByToken(tok_ho_,ho);
552  const HORecHitCollection Hitho = *(ho.product());
553 
554  //clear usedHits
555  usedHits.clear();
556  //
557 
558  for(HORecHitCollection::const_iterator hoItr=Hitho.begin(); hoItr!=Hitho.end(); hoItr++)
559  {
560 
561  //check that this hit was not considered before and push it into usedHits
562  bool hitIsUsed=false;
563  DetId hitId=hoItr->id();
564  for (uint32_t i=0; i<usedHits.size(); i++)
565  {
566  if (usedHits[i]==hitId) hitIsUsed=true;
567  }
568  if (hitIsUsed) continue;
569 
570  usedHits.push_back(hitId);
571 
572  /*AP
573  GlobalPoint pos = geo->getPosition(hoItr->detid());
574  double phihit = pos.phi();
575  double etahit = pos.eta();
576 
577  int iphihitm = (hoItr->id()).iphi();
578  int ietahitm = (hoItr->id()).ieta();
579  int depthhit = (hoItr->id()).depth();
580 
581  double dphi = fabs(trackPhi - phihit);
582  if(dphi > 4.*atan(1.)) dphi = 8.*atan(1.) - dphi;
583  double deta = fabs(trackEta - etahit);
584  double dr = sqrt(dphi*dphi + deta*deta);
585  */
586 
587  }
588  } catch (cms::Exception& e) { // can't find it!
589  if (!allowMissingInputs_) throw e;
590  }
591  }
592 }
RunNumber_t run() const
Definition: EventID.h:39
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
Definition: CaloGeometry.cc:43
EventNumber_t event() const
Definition: EventID.h:41
int i
Definition: DBlmapReader.cc:9
static const TGPicture * info(bool iBackgroundIsBlack)
edm::EDGetTokenT< EcalRecHitCollection > tok_ecal_
GlobalPoint posMax
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:449
double ecalEnergyInCone(const GlobalPoint center, double radius, const EcalRecHitCollection ecalCol, const CaloGeometry *geo)
static FreeTrajectoryState getFreeTrajectoryState(const edm::EventSetup &, const reco::Track &)
get FreeTrajectoryState from different track representations
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_
edm::EDGetTokenT< HBHERecHitCollection > tok_hbhe_
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
const GlobalPoint & getPosition(const DetId &id) const
Get the position of a given detector id.
Definition: CaloGeometry.cc:68
const CaloGeometry * geo
const_iterator end() const
TrackAssociatorParameters parameters_
int iphi() const
get the cell iphi
Definition: HcalDetId.h:38
Definition: DetId.h:18
T const * product() const
Definition: Handle.h:81
const T & get() const
Definition: EventSetup.h:55
edm::EDGetTokenT< HORecHitCollection > tok_ho_
edm::EventID id() const
Definition: EventBase.h:60
TrackDetMatchInfo associate(const edm::Event &, const edm::EventSetup &, const FreeTrajectoryState &, const AssociatorParameters &)
tuple cout
Definition: gather_cfg.py:121
T x() const
Definition: PV3DBase.h:62
edm::EDGetTokenT< reco::TrackCollection > tok_track1_
const_iterator begin() const
void HcalIsoTrkAnalyzer::beginJob ( void  )
overrideprivatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 598 of file HcalIsoTrkAnalyzer.cc.

References convertSQLiteXML::runNumber, and MainPageGenerator::tree.

599 {
600 
601  // MyL3Algo = new MinL3AlgoUniv<HcalDetId>(eventWeight);
602 
603  input_to_L3.open("input_to_l3.txt");
604 
605  rootFile = new TFile("rootFile.root", "RECREATE");
606  tree = new TTree("hcalCalibTree", "Tree for IsoTrack Calibration");
607  cells = new TClonesArray("TCell", 10000);
608 // cells3x3 = new TRefArray;
609 // cellsPF = new TRefArray;
610 // exampleP4 = new TLorentzVector();
611  tagJetP4 = new TLorentzVector(); // dijet
612  probeJetP4 = new TLorentzVector(); // dijet
613 
614  tree->Branch("cells", &cells, 64000, 0);
615  tree->Branch("targetE", &targetE, "targetE/F");
616  tree->Branch("emEnergy", &emEnergy, "emEnergy/F");
617 
618  tree->Branch("PxTrkHcal", &PxTrkHcal, "PxTrkHcal/F");
619  tree->Branch("PyTrkHcal", &PyTrkHcal, "PyTrkHcal/F");
620  tree->Branch("PzTrkHcal", &PzTrkHcal, "PzTrkHcal/F");
621 
622 
623  tree->Branch("xTrkHcal", &xTrkHcal, "xTrkHcal/F");
624  tree->Branch("yTrkHcal", &yTrkHcal, "yTrkHcal/F");
625  tree->Branch("zTrkHcal", &zTrkHcal, "zTrkHcal/F");
626 
627  tree->Branch("iEtaHit", &iEtaHit, "iEtaHit/I");
628  tree->Branch("iPhiHit", &iPhiHit, "iPhiHit/i");
629  tree->Branch("eventNumber", &eventNumber, "eventNumber/i");
630  tree->Branch("runNumber", &runNumber, "runNumber/i");
631 
632  tree->Branch("tagJetP4", "TLorentzVector", &tagJetP4); // dijet
633  tree->Branch("probeJetP4", "TLorentzVector", &probeJetP4); // dijet
634  tree->Branch("etVetoJet", &etVetoJet, "etVetoJet/F"); // dijet
635  tree->Branch("tagJetEmFrac", &tagJetEmFrac,"tagJetEmFrac/F"); // dijet
636  tree->Branch("probeJetEmFrac", &probeJetEmFrac,"probeJetEmFrac/F"); // dijet
637 
638 }
TLorentzVector * probeJetP4
TLorentzVector * tagJetP4
void HcalIsoTrkAnalyzer::endJob ( void  )
overrideprivatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 642 of file HcalIsoTrkAnalyzer.cc.

642  {
643 
644  input_to_L3.close();
645 
646  rootFile->Write();
647  rootFile->Close();
648 
649  if (cells) delete cells;
650 // if (cells3x3) delete cells3x3;
651 // if (cellsPF) delete cellsPF;
652 // if (exampleP4) delete exampleP4;
653  if (tagJetP4) delete tagJetP4; // dijet
654  if (probeJetP4) delete probeJetP4; // dijet
655 
656 }
TLorentzVector * probeJetP4
TLorentzVector * tagJetP4

Member Data Documentation

bool HcalIsoTrkAnalyzer::allowMissingInputs_
private

Definition at line 126 of file HcalIsoTrkAnalyzer.cc.

double HcalIsoTrkAnalyzer::associationConeSize_
private

Definition at line 124 of file HcalIsoTrkAnalyzer.cc.

string HcalIsoTrkAnalyzer::AxB_
private

Definition at line 125 of file HcalIsoTrkAnalyzer.cc.

double HcalIsoTrkAnalyzer::calibrationConeSize_
private

Definition at line 124 of file HcalIsoTrkAnalyzer.cc.

UInt_t HcalIsoTrkAnalyzer::cell
private

Definition at line 143 of file HcalIsoTrkAnalyzer.cc.

Float_t HcalIsoTrkAnalyzer::cellEnergy
private

Definition at line 144 of file HcalIsoTrkAnalyzer.cc.

TClonesArray* HcalIsoTrkAnalyzer::cells
private

Definition at line 146 of file HcalIsoTrkAnalyzer.cc.

TRefArray* HcalIsoTrkAnalyzer::cells3x3
private

Definition at line 147 of file HcalIsoTrkAnalyzer.cc.

TRefArray* HcalIsoTrkAnalyzer::cellsPF
private

Definition at line 148 of file HcalIsoTrkAnalyzer.cc.

double HcalIsoTrkAnalyzer::EcalCone
private

Definition at line 137 of file HcalIsoTrkAnalyzer.cc.

double HcalIsoTrkAnalyzer::EcalConeOuter
private

Definition at line 137 of file HcalIsoTrkAnalyzer.cc.

Float_t HcalIsoTrkAnalyzer::emEnergy
private

Definition at line 158 of file HcalIsoTrkAnalyzer.cc.

Float_t HcalIsoTrkAnalyzer::emRingEnergy
private

Definition at line 158 of file HcalIsoTrkAnalyzer.cc.

double HcalIsoTrkAnalyzer::energyECALmip
private

Definition at line 136 of file HcalIsoTrkAnalyzer.cc.

double HcalIsoTrkAnalyzer::energyMaxIso
private

Definition at line 135 of file HcalIsoTrkAnalyzer.cc.

double HcalIsoTrkAnalyzer::energyMinIso
private

Definition at line 135 of file HcalIsoTrkAnalyzer.cc.

Float_t HcalIsoTrkAnalyzer::etVetoJet
private

Definition at line 163 of file HcalIsoTrkAnalyzer.cc.

UInt_t HcalIsoTrkAnalyzer::eventNumber
private
float HcalIsoTrkAnalyzer::eventWeight
private

Definition at line 134 of file HcalIsoTrkAnalyzer.cc.

const CaloGeometry* HcalIsoTrkAnalyzer::geo
private

Definition at line 110 of file HcalIsoTrkAnalyzer.cc.

double HcalIsoTrkAnalyzer::hottestHitDistance
private

Definition at line 137 of file HcalIsoTrkAnalyzer.cc.

Int_t HcalIsoTrkAnalyzer::iEtaHit
private

Definition at line 151 of file HcalIsoTrkAnalyzer.cc.

std::ofstream HcalIsoTrkAnalyzer::input_to_L3
private

Definition at line 167 of file HcalIsoTrkAnalyzer.cc.

UInt_t HcalIsoTrkAnalyzer::iPhiHit
private

Definition at line 152 of file HcalIsoTrkAnalyzer.cc.

std::string HcalIsoTrkAnalyzer::m_ebInstance
private

Definition at line 119 of file HcalIsoTrkAnalyzer.cc.

std::string HcalIsoTrkAnalyzer::m_ecalLabel
private

Definition at line 118 of file HcalIsoTrkAnalyzer.cc.

std::string HcalIsoTrkAnalyzer::m_eeInstance
private

Definition at line 120 of file HcalIsoTrkAnalyzer.cc.

std::string HcalIsoTrkAnalyzer::m_hcalLabel
private

Definition at line 121 of file HcalIsoTrkAnalyzer.cc.

int HcalIsoTrkAnalyzer::m_histoFlag
private

Definition at line 122 of file HcalIsoTrkAnalyzer.cc.

std::string HcalIsoTrkAnalyzer::m_inputTrackLabel
private

Definition at line 117 of file HcalIsoTrkAnalyzer.cc.

double HcalIsoTrkAnalyzer::maxPNear
private

Definition at line 136 of file HcalIsoTrkAnalyzer.cc.

int HcalIsoTrkAnalyzer::MinNTECHitsEndcap
private

Definition at line 133 of file HcalIsoTrkAnalyzer.cc.

int HcalIsoTrkAnalyzer::MinNTrackHitsBarrel
private

Definition at line 133 of file HcalIsoTrkAnalyzer.cc.

int HcalIsoTrkAnalyzer::nIterations
private

Definition at line 133 of file HcalIsoTrkAnalyzer.cc.

UInt_t HcalIsoTrkAnalyzer::numberOfCells
private

Definition at line 142 of file HcalIsoTrkAnalyzer.cc.

string HcalIsoTrkAnalyzer::outputFileName_
private

Definition at line 127 of file HcalIsoTrkAnalyzer.cc.

TrackAssociatorParameters HcalIsoTrkAnalyzer::parameters_
private
Float_t HcalIsoTrkAnalyzer::probeJetEmFrac
private

Definition at line 165 of file HcalIsoTrkAnalyzer.cc.

TLorentzVector* HcalIsoTrkAnalyzer::probeJetP4
private

Definition at line 162 of file HcalIsoTrkAnalyzer.cc.

Float_t HcalIsoTrkAnalyzer::PxTrkHcal
private

Definition at line 156 of file HcalIsoTrkAnalyzer.cc.

Float_t HcalIsoTrkAnalyzer::PyTrkHcal
private

Definition at line 156 of file HcalIsoTrkAnalyzer.cc.

Float_t HcalIsoTrkAnalyzer::PzTrkHcal
private

Definition at line 156 of file HcalIsoTrkAnalyzer.cc.

TFile* HcalIsoTrkAnalyzer::rootFile
private

Definition at line 139 of file HcalIsoTrkAnalyzer.cc.

UInt_t HcalIsoTrkAnalyzer::runNumber
private

Definition at line 150 of file HcalIsoTrkAnalyzer.cc.

double HcalIsoTrkAnalyzer::rvert
private

Definition at line 130 of file HcalIsoTrkAnalyzer.cc.

Float_t HcalIsoTrkAnalyzer::tagJetEmFrac
private

Definition at line 164 of file HcalIsoTrkAnalyzer.cc.

TLorentzVector* HcalIsoTrkAnalyzer::tagJetP4
private

Definition at line 161 of file HcalIsoTrkAnalyzer.cc.

Float_t HcalIsoTrkAnalyzer::targetE
private

Definition at line 141 of file HcalIsoTrkAnalyzer.cc.

edm::EDGetTokenT<EcalRecHitCollection> HcalIsoTrkAnalyzer::tok_ecal_
private

Definition at line 113 of file HcalIsoTrkAnalyzer.cc.

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

Definition at line 111 of file HcalIsoTrkAnalyzer.cc.

edm::EDGetTokenT<HORecHitCollection> HcalIsoTrkAnalyzer::tok_ho_
private

Definition at line 112 of file HcalIsoTrkAnalyzer.cc.

edm::EDGetTokenT<reco::TrackCollection> HcalIsoTrkAnalyzer::tok_track1_
private

Definition at line 115 of file HcalIsoTrkAnalyzer.cc.

edm::EDGetTokenT<reco::IsolatedPixelTrackCandidateCollection> HcalIsoTrkAnalyzer::tok_track_
private

Definition at line 114 of file HcalIsoTrkAnalyzer.cc.

TrackDetectorAssociator HcalIsoTrkAnalyzer::trackAssociator_
private

Definition at line 107 of file HcalIsoTrkAnalyzer.cc.

double HcalIsoTrkAnalyzer::trackEta
private

Definition at line 129 of file HcalIsoTrkAnalyzer.cc.

double HcalIsoTrkAnalyzer::trackPhi
private

Definition at line 129 of file HcalIsoTrkAnalyzer.cc.

TTree* HcalIsoTrkAnalyzer::tree
private
Float_t HcalIsoTrkAnalyzer::xTrkEcal
private

Definition at line 154 of file HcalIsoTrkAnalyzer.cc.

Float_t HcalIsoTrkAnalyzer::xTrkHcal
private

Definition at line 155 of file HcalIsoTrkAnalyzer.cc.

Float_t HcalIsoTrkAnalyzer::yTrkEcal
private

Definition at line 154 of file HcalIsoTrkAnalyzer.cc.

Float_t HcalIsoTrkAnalyzer::yTrkHcal
private

Definition at line 155 of file HcalIsoTrkAnalyzer.cc.

Float_t HcalIsoTrkAnalyzer::zTrkEcal
private

Definition at line 154 of file HcalIsoTrkAnalyzer.cc.

Float_t HcalIsoTrkAnalyzer::zTrkHcal
private

Definition at line 155 of file HcalIsoTrkAnalyzer.cc.