CMS 3D CMS Logo

IsolatedTracksNxN.cc
Go to the documentation of this file.
1 // -*- C++ -*
2 //
3 // Package: IsolatedParticles
4 // Class: IsolatedTracksNxN
5 //
13 //
14 // Original Author: Seema Sharma
15 // Created: Mon Aug 10 15:30:40 CST 2009
16 //
17 //
18 
19 // system include files
20 #include <cmath>
21 #include <map>
22 #include <string>
23 #include <vector>
24 
25 // user include files
26 #include <Math/GenVector/VectorUtil.h>
27 
28 // root objects
29 #include "TROOT.h"
30 #include "TSystem.h"
31 #include "TFile.h"
32 #include "TH1F.h"
33 #include "TH2F.h"
34 #include "TProfile.h"
35 #include "TDirectory.h"
36 #include "TTree.h"
37 
46 
48 //L1 trigger Menus etc
57 
62 // muons and tracks
67 // Vertices
71 // Calorimeters
78 // Trigger
86 //L1 objects
93 // Jets in the event
97 
106 // TFile Service
109 
110 // ecal / hcal
118 
121 
125 
126 // SimHit + SimTrack
132 
133 // track associator
138 
139 class IsolatedTracksNxN : public edm::one::EDAnalyzer<edm::one::SharedResources> {
140 
141 public:
142  explicit IsolatedTracksNxN(const edm::ParameterSet&);
143  ~IsolatedTracksNxN() override;
144 
145  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
146 
147 private:
148  void beginJob() override ;
149  void analyze(const edm::Event&, const edm::EventSetup&) override;
150  void endJob() override ;
151 
152  void printTrack(const reco::Track* pTrack);
153 
154  void bookHistograms();
155 
156  double deltaPhi(double v1, double v2);
157  double deltaR(double eta1, double phi1, double eta2, double phi2);
158 
159 
160  void clearTreeVectors();
161 
162 private:
163 
165  static constexpr size_t nL1BitsMax=128;
167 
168  // map of trig bit, algo name and num events passed
169  std::map< std::pair<unsigned int,std::string>, int> l1AlgoMap_;
170  std::vector<unsigned int> m_triggerMaskAlgoTrig;
171 
172  const bool doMC_, writeAllTracks_;
173  const int myverbose_;
174  const double pvTracksPtMin_;
175  const int debugTrks_;
177  const double minTrackP_, maxTrackEta_;
179  const double tMinE_, tMaxE_, tMinH_, tMaxH_;
180  bool initL1_;
182 
186 
190 
193 
197 
205 
206 
207  static constexpr size_t NPBins = 15;
208  static constexpr size_t NEtaBins = 3;
209  double genPartPBins[NPBins+1], genPartEtaBins[NEtaBins+1];
210 
217  TH1F *h_nTracks;
224 
225  TTree *tree_;
226 
229  std::vector<std::string> *t_L1AlgoNames;
230  std::vector<int> *t_L1PreScale;
231  int t_L1Decision[128];
232 
233  std::vector<double> *t_L1CenJetPt, *t_L1CenJetEta, *t_L1CenJetPhi;
234  std::vector<double> *t_L1FwdJetPt, *t_L1FwdJetEta, *t_L1FwdJetPhi;
235  std::vector<double> *t_L1TauJetPt, *t_L1TauJetEta, *t_L1TauJetPhi;
236  std::vector<double> *t_L1MuonPt, *t_L1MuonEta, *t_L1MuonPhi;
237  std::vector<double> *t_L1IsoEMPt, *t_L1IsoEMEta, *t_L1IsoEMPhi;
239  std::vector<double> *t_L1METPt, *t_L1METEta, *t_L1METPhi;
240 
241  std::vector<double> *t_PVx, *t_PVy, *t_PVz, *t_PVTracksSumPt;
244  std::vector<int> *t_PVNTracksHP, *t_PVNTracksHPWt;
245 
246  std::vector<double> *t_jetPt, *t_jetEta, *t_jetPhi;
247  std::vector<double> *t_nTrksJetCalo, *t_nTrksJetVtx;
248 
250  std::vector<double> *t_trackPtAll;
252 
253  std::vector<double> *t_trackP, *t_trackPt, *t_trackEta, *t_trackPhi;
255  std::vector<double> *t_trackDxy, *t_trackDxyBS, *t_trackDz, *t_trackDzBS;
256  std::vector<double> *t_trackDxyPV, *t_trackDzPV;
257  std::vector<double> *t_trackChiSq;
258  std::vector<int> *t_trackPVIdx;
259 
260  std::vector<int> *t_NLayersCrossed, *t_trackNOuterHits;
261  std::vector<int> *t_trackHitsTOB, *t_trackHitsTEC;
266  std::vector<double> *t_trackOutPosOutHitDr, *t_trackL;
267 
268  std::vector<double> *t_maxNearP31x31;
269  std::vector<double> *t_maxNearP21x21;
270  std::vector<int> *t_ecalSpike11x11;
271 
272  std::vector<double> *t_e7x7, *t_e9x9, *t_e11x11, *t_e15x15;
278 
279  std::vector<double> *t_esimPdgId, *t_simTrackP, *t_trkEcalEne;
280  std::vector<double> *t_esim7x7, *t_esim9x9, *t_esim11x11, *t_esim15x15;
286 
288  std::vector<double> *t_h3x3, *t_h5x5, *t_h7x7;
289  std::vector<double> *t_h3x3Sig, *t_h5x5Sig, *t_h7x7Sig;
290  std::vector<int> *t_infoHcal;
291 
292  std::vector<double> *t_trkHcalEne;
293  std::vector<double> *t_hsim3x3, *t_hsim5x5, *t_hsim7x7;
295  std::vector<double> *t_hsim3x3Rest, *t_hsim5x5Rest, *t_hsim7x7Rest;
299 
300 };
301 
302 static const bool useL1EventSetup(true);
303 static const bool useL1GtTriggerMenuLite(true);
304 
308  doMC_(iConfig.getUntrackedParameter<bool>("doMC",false)),
309  writeAllTracks_(iConfig.getUntrackedParameter<bool>("writeAllTracks",false)),
310  myverbose_(iConfig.getUntrackedParameter<int>("verbosity",5)),
311  pvTracksPtMin_(iConfig.getUntrackedParameter<double>("pvTracksPtMin",1.0)),
312  debugTrks_(iConfig.getUntrackedParameter<int>("debugTracks",0)),
313  printTrkHitPattern_(iConfig.getUntrackedParameter<bool>("printTrkHitPattern",false)),
314  minTrackP_(iConfig.getUntrackedParameter<double>("minTrackP",1.0)),
315  maxTrackEta_(iConfig.getUntrackedParameter<double>("maxTrackEta",5.0)),
316  debugL1Info_(iConfig.getUntrackedParameter<bool>("debugL1Info",false)),
317  L1TriggerAlgoInfo_(iConfig.getUntrackedParameter<bool>("l1TriggerAlgoInfo",false)),
318  tMinE_(iConfig.getUntrackedParameter<double>("timeMinCutECAL",-500.)),
319  tMaxE_(iConfig.getUntrackedParameter<double>("timeMaxCutECAL",500.)),
320  tMinH_(iConfig.getUntrackedParameter<double>("timeMinCutHCAL",-500.)),
321  tMaxH_(iConfig.getUntrackedParameter<double>("timeMaxCutHCAL",500.)),
386 
387  usesResource(TFileService::kSharedResource);
388 
389  //now do what ever initialization is needed
390 
391  edm::InputTag L1extraTauJetSource_ = iConfig.getParameter<edm::InputTag>("l1extraTauJetSource" );
392  edm::InputTag L1extraCenJetSource_ = iConfig.getParameter<edm::InputTag>("l1extraCenJetSource" );
393  edm::InputTag L1extraFwdJetSource_ = iConfig.getParameter<edm::InputTag>("l1extraFwdJetSource" );
394  edm::InputTag L1extraMuonSource_ = iConfig.getParameter<edm::InputTag>("l1extraMuonSource" );
395  edm::InputTag L1extraIsoEmSource_ = iConfig.getParameter<edm::InputTag>("l1extraIsoEmSource" );
396  edm::InputTag L1extraNonIsoEmSource_ = iConfig.getParameter<edm::InputTag>("l1extraNonIsoEmSource" );
397  edm::InputTag L1GTReadoutRcdSource_ = iConfig.getParameter<edm::InputTag>("l1GTReadoutRcdSource" );
398  edm::InputTag L1GTObjectMapRcdSource_= iConfig.getParameter<edm::InputTag>("l1GTObjectMapRcdSource");
399  edm::InputTag JetSrc_ = iConfig.getParameter<edm::InputTag>("jetSource");
400  edm::InputTag JetExtender_ = iConfig.getParameter<edm::InputTag>("jetExtender");
401  edm::InputTag HBHERecHitSource_ = iConfig.getParameter<edm::InputTag>("hbheRecHitSource");
402 
403  // define tokens for access
404  tok_L1extTauJet_ = consumes<l1extra::L1JetParticleCollection>(L1extraTauJetSource_);
405  tok_L1extCenJet_ = consumes<l1extra::L1JetParticleCollection>(L1extraCenJetSource_);
406  tok_L1extFwdJet_ = consumes<l1extra::L1JetParticleCollection>(L1extraFwdJetSource_);
407  tok_L1extMu_ = consumes<l1extra::L1MuonParticleCollection>(L1extraMuonSource_);
408  tok_L1extIsoEm_ = consumes<l1extra::L1EmParticleCollection>(L1extraIsoEmSource_);
409  tok_L1extNoIsoEm_ = consumes<l1extra::L1EmParticleCollection>(L1extraNonIsoEmSource_);
410  tok_jets_ = consumes<reco::CaloJetCollection>(JetSrc_);
411  tok_hbhe_ = consumes<HBHERecHitCollection>(HBHERecHitSource_);
412 
413  tok_genTrack_ = consumes<reco::TrackCollection>(edm::InputTag("generalTracks"));
414  tok_recVtx_ = consumes<reco::VertexCollection>(edm::InputTag("offlinePrimaryVertices"));
415  tok_bs_ = consumes<reco::BeamSpot>(edm::InputTag("offlineBeamSpot"));
416  tok_EB_ = consumes<EcalRecHitCollection>(edm::InputTag("ecalRecHit","EcalRecHitsEB"));
417  tok_EE_ = consumes<EcalRecHitCollection>(edm::InputTag("ecalRecHit","EcalRecHitsEE"));
418 
419  tok_simTk_ = consumes<edm::SimTrackContainer>(edm::InputTag("g4SimHits"));
420  tok_simVtx_ = consumes<edm::SimVertexContainer>(edm::InputTag("g4SimHits"));
421  tok_caloEB_ = consumes<edm::PCaloHitContainer>(edm::InputTag("g4SimHits", "EcalHitsEB"));
422  tok_caloEE_ = consumes<edm::PCaloHitContainer>(edm::InputTag("g4SimHits", "EcalHitsEE"));
423  tok_caloHH_ = consumes<edm::PCaloHitContainer>(edm::InputTag("g4SimHits", "HcalHits"));
424 
425  if (myverbose_>=0) {
426  edm::LogVerbatim("IsoTrack") <<"Parameters read from config file \n"
427  <<" doMC " << doMC_
428  <<"\t myverbose " << myverbose_
429  <<"\t minTrackP " << minTrackP_
430  << "\t maxTrackEta " << maxTrackEta_
431  << "\t tMinE " << tMinE_
432  << "\t tMaxE " << tMaxE_
433  << "\t tMinH " << tMinH_
434  << "\t tMaxH " << tMaxH_
435  << "\n debugL1Info " << debugL1Info_
436  << "\t L1TriggerAlgoInfo " << L1TriggerAlgoInfo_
437  << "\n";
438  }
439 }
440 
442  delete t_PVx;
443  delete t_PVy;
444  delete t_PVz;
445  delete t_PVisValid;
446  delete t_PVndof;
447  delete t_PVNTracks;
448  delete t_PVNTracksWt;
449  delete t_PVTracksSumPt;
450  delete t_PVTracksSumPtWt;
451  delete t_PVNTracksHP;
452  delete t_PVNTracksHPWt;
453  delete t_PVTracksSumPtHP;
454  delete t_PVTracksSumPtHPWt;
455  delete t_L1AlgoNames;
456  delete t_L1PreScale;
457  delete t_L1CenJetPt;
458  delete t_L1CenJetEta;
459  delete t_L1CenJetPhi;
460  delete t_L1FwdJetPt;
461  delete t_L1FwdJetEta;
462  delete t_L1FwdJetPhi;
463  delete t_L1TauJetPt;
464  delete t_L1TauJetEta;
465  delete t_L1TauJetPhi;
466  delete t_L1MuonPt;
467  delete t_L1MuonEta;
468  delete t_L1MuonPhi;
469  delete t_L1IsoEMPt;
470  delete t_L1IsoEMEta;
471  delete t_L1IsoEMPhi;
472  delete t_L1NonIsoEMPt;
473  delete t_L1NonIsoEMEta;
474  delete t_L1NonIsoEMPhi;
475  delete t_L1METPt;
476  delete t_L1METEta;
477  delete t_L1METPhi;
478  delete t_jetPt;
479  delete t_jetEta;
480  delete t_jetPhi;
481  delete t_nTrksJetCalo;
482  delete t_nTrksJetVtx;
483  delete t_trackPAll;
484  delete t_trackEtaAll;
485  delete t_trackPhiAll;
486  delete t_trackPdgIdAll;
487  delete t_trackPtAll;
488  delete t_trackDxyAll;
489  delete t_trackDzAll;
490  delete t_trackDxyPVAll;
491  delete t_trackDzPVAll;
492  delete t_trackChiSqAll;
493  delete t_trackP;
494  delete t_trackPt;
495  delete t_trackEta;
496  delete t_trackPhi;
497  delete t_trackEcalEta;
498  delete t_trackEcalPhi;
499  delete t_trackHcalEta;
500  delete t_trackHcalPhi;
501  delete t_trackNOuterHits;
502  delete t_NLayersCrossed;
503  delete t_trackDxy;
504  delete t_trackDxyBS;
505  delete t_trackDz;
506  delete t_trackDzBS;
507  delete t_trackDxyPV;
508  delete t_trackDzPV;
509  delete t_trackPVIdx;
510  delete t_trackChiSq;
511  delete t_trackHitsTOB;
512  delete t_trackHitsTEC;
513  delete t_trackHitInMissTOB;
514  delete t_trackHitInMissTEC;
515  delete t_trackHitInMissTIB;
516  delete t_trackHitInMissTID;
517  delete t_trackHitOutMissTOB;
518  delete t_trackHitOutMissTEC;
519  delete t_trackHitOutMissTIB;
520  delete t_trackHitOutMissTID;
521  delete t_trackHitInMissTIBTID;
522  delete t_trackHitOutMissTOB;
523  delete t_trackHitOutMissTEC;
524  delete t_trackHitOutMissTIB;
525  delete t_trackHitOutMissTID;
527  delete t_trackHitInMeasTOB;
528  delete t_trackHitInMeasTEC;
529  delete t_trackHitInMeasTIB;
530  delete t_trackHitInMeasTID;
531  delete t_trackHitOutMeasTOB;
532  delete t_trackHitOutMeasTEC;
533  delete t_trackHitOutMeasTIB;
534  delete t_trackHitOutMeasTID;
535  delete t_trackOutPosOutHitDr;
536  delete t_trackL;
537  delete t_maxNearP31x31;
538  delete t_maxNearP21x21;
539  delete t_ecalSpike11x11;
540  delete t_e7x7;
541  delete t_e9x9;
542  delete t_e11x11;
543  delete t_e15x15;
544  delete t_e7x7_10Sig;
545  delete t_e9x9_10Sig;
546  delete t_e11x11_10Sig;
547  delete t_e15x15_10Sig;
548  delete t_e7x7_15Sig;
549  delete t_e9x9_15Sig;
550  delete t_e11x11_15Sig;
551  delete t_e15x15_15Sig;
552  delete t_e7x7_20Sig;
553  delete t_e9x9_20Sig;
554  delete t_e11x11_20Sig;
555  delete t_e15x15_20Sig;
556  delete t_e7x7_25Sig;
557  delete t_e9x9_25Sig;
558  delete t_e11x11_25Sig;
559  delete t_e15x15_25Sig;
560  delete t_e7x7_30Sig;
561  delete t_e9x9_30Sig;
562  delete t_e11x11_30Sig;
563  delete t_e15x15_30Sig;
564  delete t_esim7x7;
565  delete t_esim9x9;
566  delete t_esim11x11;
567  delete t_esim15x15;
568  delete t_esim7x7Matched;
569  delete t_esim9x9Matched;
570  delete t_esim11x11Matched;
571  delete t_esim15x15Matched;
572  delete t_esim7x7Rest;
573  delete t_esim9x9Rest;
574  delete t_esim11x11Rest;
575  delete t_esim15x15Rest;
576  delete t_esim7x7Photon;
577  delete t_esim9x9Photon;
578  delete t_esim11x11Photon;
579  delete t_esim15x15Photon;
580  delete t_esim7x7NeutHad;
581  delete t_esim9x9NeutHad;
582  delete t_esim11x11NeutHad;
583  delete t_esim15x15NeutHad;
584  delete t_esim7x7CharHad;
585  delete t_esim9x9CharHad;
586  delete t_esim11x11CharHad;
587  delete t_esim15x15CharHad;
588  delete t_trkEcalEne;
589  delete t_simTrackP;
590  delete t_esimPdgId;
591  delete t_maxNearHcalP3x3;
592  delete t_maxNearHcalP5x5;
593  delete t_maxNearHcalP7x7;
594  delete t_h3x3;
595  delete t_h5x5;
596  delete t_h7x7;
597  delete t_h3x3Sig;
598  delete t_h5x5Sig;
599  delete t_h7x7Sig;
600  delete t_infoHcal;
601  delete t_trkHcalEne;
602  delete t_hsim3x3;
603  delete t_hsim5x5;
604  delete t_hsim7x7;
605  delete t_hsim3x3Matched;
606  delete t_hsim5x5Matched;
607  delete t_hsim7x7Matched;
608  delete t_hsim3x3Rest;
609  delete t_hsim5x5Rest;
610  delete t_hsim7x7Rest;
611  delete t_hsim3x3Photon;
612  delete t_hsim5x5Photon;
613  delete t_hsim7x7Photon;
614  delete t_hsim3x3NeutHad;
615  delete t_hsim5x5NeutHad;
616  delete t_hsim7x7NeutHad;
617  delete t_hsim3x3CharHad;
618  delete t_hsim5x5CharHad;
619  delete t_hsim7x7CharHad;
620 }
621 
623 
625  desc.addUntracked<bool>("doMC", false);
626  desc.addUntracked<bool>("writeAllTracks", false);
627  desc.addUntracked<int>("verbosity", 1);
628  desc.addUntracked<double>("pvTracksPtMin", 0.200);
629  desc.addUntracked<int>("debugTracks", 0);
630  desc.addUntracked<bool>("printTrkHitPattern", true);
631  desc.addUntracked<double>("minTrackP", 1.0);
632  desc.addUntracked<double>("maxTrackEta", 2.6);
633  desc.addUntracked<bool>("debugL1Info", false);
634  desc.addUntracked<bool>("l1TriggerAlgoInfo", false);
635  desc.add<edm::InputTag>("l1extraTauJetSource", edm::InputTag("l1extraParticles","Tau"));
636  desc.add<edm::InputTag>("l1extraCenJetSource", edm::InputTag("l1extraParticles","Central"));
637  desc.add<edm::InputTag>("l1extraFwdJetSource", edm::InputTag("l1extraParticles","Forward"));
638  desc.add<edm::InputTag>("l1extraMuonSource", edm::InputTag("l1extraParticles"));
639  desc.add<edm::InputTag>("l1extraIsoEmSource", edm::InputTag("l1extraParticles","Isolated"));
640  desc.add<edm::InputTag>("l1extraNonIsoEmSource", edm::InputTag("l1extraParticles","NonIsolated"));
641  desc.add<edm::InputTag>("l1GTReadoutRcdSource", edm::InputTag("gtDigis"));
642  desc.add<edm::InputTag>("l1GTObjectMapRcdSource",edm::InputTag("hltL1GtObjectMap"));
643  desc.add<edm::InputTag>("jetSource", edm::InputTag("iterativeCone5CaloJets"));
644  desc.add<edm::InputTag>("jetExtender", edm::InputTag("iterativeCone5JetExtender"));
645  desc.add<edm::InputTag>("hbheRecHitSource", edm::InputTag("hbhereco"));
646  desc.addUntracked<double>("maxNearTrackPT", 1.0);
647  desc.addUntracked<double>("timeMinCutECAL", -500.0);
648  desc.addUntracked<double>("timeMaxCutECAL", 500.0);
649  desc.addUntracked<double>("timeMinCutHCAL", -500.0);
650  desc.addUntracked<double>("timeMaxCutHCAL", 500.0);
651  descriptions.add("isolatedTracksNxN",desc);
652 }
653 
655 
656  bool haveIsoTrack=false;
657 
659  iSetup.get<IdealMagneticFieldRecord>().get(bFieldH);
660  const MagneticField* bField = bFieldH.product();
661 
663 
664  t_RunNo = iEvent.id().run();
665  t_EvtNo = iEvent.id().event();
666  t_Lumi = iEvent.luminosityBlock();
667  t_Bunch = iEvent.bunchCrossing();
668 
669  ++nEventProc_;
670 
672  iEvent.getByToken(tok_genTrack_, trkCollection);
673  reco::TrackCollection::const_iterator trkItr;
674  if (debugTrks_>1) {
675  edm::LogVerbatim("IsoTrack") << "Track Collection: ";
676  edm::LogVerbatim("IsoTrack") << "Number of Tracks "
677  << trkCollection->size();
678  }
679  std::string theTrackQuality = "highPurity";
680  reco::TrackBase::TrackQuality trackQuality_=reco::TrackBase::qualityByName(theTrackQuality);
681 
682  //===================== save L1 Trigger information =======================
683  if( L1TriggerAlgoInfo_ ) {
684 
686 
687  int iErrorCode = -1;
688  int l1ConfCode = -1;
689  const bool l1Conf = m_l1GtUtils.availableL1Configuration(iErrorCode, l1ConfCode);
690  if( !l1Conf) {
691  edm::LogVerbatim("IsoTrack") << "\nL1 configuration code:" << l1ConfCode
692  << "\nNo valid L1 trigger configuration available."
693  << "\nSee text above for error code interpretation"
694  << "\nNo return here, in order to test each method, protected against configuration error.";
695  }
696 
697  const L1GtTriggerMenu* m_l1GtMenu = m_l1GtUtils.ptrL1TriggerMenuEventSetup(iErrorCode);
698  const AlgorithmMap& algorithmMap = m_l1GtMenu->gtAlgorithmMap();
699  const std::string& menuName = m_l1GtMenu->gtTriggerMenuName();
700 
701  if (!initL1_) {
702  initL1_=true;
703  edm::LogVerbatim("IsoTrack") << "menuName " << menuName;
704  for (CItAlgo itAlgo = algorithmMap.begin(); itAlgo != algorithmMap.end(); itAlgo++) {
705  std::string algName = itAlgo->first;
706  int algBitNumber = ( itAlgo->second ).algoBitNumber();
707  l1AlgoMap_.insert( std::pair<std::pair<unsigned int,std::string>,int>( std::pair<unsigned int,std::string>(algBitNumber, algName) , 0) ) ;
708  }
709  std::map< std::pair<unsigned int,std::string>, int>::iterator itr;
710  for(itr=l1AlgoMap_.begin(); itr!=l1AlgoMap_.end(); itr++) {
711  edm::LogVerbatim("IsoTrack") << " ********** " << (itr->first).first
712  << " " << (itr->first).second << " "
713  << itr->second;
714  }
715  }
716 
717  std::vector<int> algbits;
718  for (CItAlgo itAlgo = algorithmMap.begin(); itAlgo != algorithmMap.end(); itAlgo++) {
719  std::string algName = itAlgo->first;
720  int algBitNumber = ( itAlgo->second ).algoBitNumber();
721  bool decision = m_l1GtUtils.decision (iEvent, itAlgo->first, iErrorCode);
722  int preScale = m_l1GtUtils.prescaleFactor (iEvent, itAlgo->first, iErrorCode);
723 
724  // save the algo names which fired
725  if (decision) {
726  l1AlgoMap_[std::pair<unsigned int,std::string>(algBitNumber, algName)] += 1;
727  h_L1AlgoNames->Fill( algBitNumber );
728  t_L1AlgoNames->push_back(itAlgo->first);
729  t_L1PreScale->push_back(preScale);
730  t_L1Decision[algBitNumber] = 1;
731  algbits.push_back(algBitNumber);
732  }
733  }
734 
735  if (debugL1Info_) {
736  for(unsigned int ii=0; ii<t_L1AlgoNames->size(); ii++){
737  edm::LogVerbatim("IsoTrack") << ii << " " << (*t_L1AlgoNames)[ii] << " "
738  << (*t_L1PreScale)[ii] << " "
739  << algbits[ii];
740  }
741  for (int i=0; i<128; ++i) {
742  edm::LogVerbatim("IsoTrack") << "L1Decision: " << i << ":"
743  << t_L1Decision[i];
744  }
745  }
746 
747  // L1Taus
749  iEvent.getByToken(tok_L1extTauJet_,l1TauHandle);
750  l1extra::L1JetParticleCollection::const_iterator itr;
751  int iL1Obj=0;
752  for (itr = l1TauHandle->begin(),iL1Obj=0; itr != l1TauHandle->end(); ++itr,iL1Obj++) {
753  if (iL1Obj<1) {
754  t_L1TauJetPt ->push_back( itr->pt() );
755  t_L1TauJetEta ->push_back( itr->eta() );
756  t_L1TauJetPhi ->push_back( itr->phi() );
757  }
758  if (debugL1Info_) {
759  edm::LogVerbatim("IsoTrack") << "tauJ p/pt " << itr->momentum() << " "
760  << itr->pt() << " eta/phi " << itr->eta()
761  << " " << itr->phi();
762  }
763  }
764 
765  // L1 Central Jets
767  iEvent.getByToken(tok_L1extCenJet_,l1CenJetHandle);
768  for (itr = l1CenJetHandle->begin(),iL1Obj=0; itr != l1CenJetHandle->end(); ++itr,iL1Obj++) {
769  if (iL1Obj<1) {
770  t_L1CenJetPt ->push_back( itr->pt() );
771  t_L1CenJetEta ->push_back( itr->eta() );
772  t_L1CenJetPhi ->push_back( itr->phi() );
773  }
774  if (debugL1Info_) {
775  edm::LogVerbatim("IsoTrack") << "cenJ p/pt " << itr->momentum()
776  << " " << itr->pt() << " eta/phi "
777  << itr->eta() << " " << itr->phi();
778  }
779  }
780 
781  // L1 Forward Jets
783  iEvent.getByToken(tok_L1extFwdJet_,l1FwdJetHandle);
784  for (itr = l1FwdJetHandle->begin(),iL1Obj=0; itr != l1FwdJetHandle->end(); ++itr,iL1Obj++) {
785  if (iL1Obj<1) {
786  t_L1FwdJetPt ->push_back( itr->pt() );
787  t_L1FwdJetEta ->push_back( itr->eta() );
788  t_L1FwdJetPhi ->push_back( itr->phi() );
789  }
790  if (debugL1Info_) {
791  edm::LogVerbatim("IsoTrack") << "fwdJ p/pt " << itr->momentum()
792  << " " << itr->pt() << " eta/phi "
793  << itr->eta() << " " << itr->phi();
794  }
795  }
796 
797  // L1 Isolated EM onjects
798  l1extra::L1EmParticleCollection::const_iterator itrEm;
800  iEvent.getByToken(tok_L1extIsoEm_, l1IsoEmHandle);
801  for (itrEm = l1IsoEmHandle->begin(),iL1Obj=0; itrEm != l1IsoEmHandle->end(); ++itrEm,iL1Obj++) {
802  if (iL1Obj<1) {
803  t_L1IsoEMPt ->push_back( itrEm->pt() );
804  t_L1IsoEMEta ->push_back( itrEm->eta() );
805  t_L1IsoEMPhi ->push_back( itrEm->phi() );
806  }
807  if (debugL1Info_) {
808  edm::LogVerbatim("IsoTrack") << "isoEm p/pt " << itrEm->momentum()
809  << " " << itrEm->pt() << " eta/phi "
810  << itrEm->eta() << " " << itrEm->phi();
811  }
812  }
813 
814  // L1 Non-Isolated EM onjects
816  iEvent.getByToken(tok_L1extNoIsoEm_, l1NonIsoEmHandle);
817  for (itrEm = l1NonIsoEmHandle->begin(),iL1Obj=0; itrEm != l1NonIsoEmHandle->end(); ++itrEm,iL1Obj++) {
818  if (iL1Obj<1) {
819  t_L1NonIsoEMPt ->push_back( itrEm->pt() );
820  t_L1NonIsoEMEta ->push_back( itrEm->eta() );
821  t_L1NonIsoEMPhi ->push_back( itrEm->phi() );
822  }
823  if (debugL1Info_) {
824  edm::LogVerbatim("IsoTrack") << "nonIsoEm p/pt " << itrEm->momentum()
825  << " " << itrEm->pt() << " eta/phi "
826  << itrEm->eta() << " " << itrEm->phi();
827  }
828  }
829 
830  // L1 Muons
831  l1extra::L1MuonParticleCollection::const_iterator itrMu;
833  iEvent.getByToken(tok_L1extMu_, l1MuHandle);
834  for (itrMu = l1MuHandle->begin(),iL1Obj=0; itrMu != l1MuHandle->end(); ++itrMu,iL1Obj++) {
835  if (iL1Obj<1) {
836  t_L1MuonPt ->push_back( itrMu->pt() );
837  t_L1MuonEta ->push_back( itrMu->eta() );
838  t_L1MuonPhi ->push_back( itrMu->phi() );
839  }
840  if (debugL1Info_) {
841  edm::LogVerbatim("IsoTrack") << "l1muon p/pt " << itrMu->momentum()
842  << " " << itrMu->pt() << " eta/phi "
843  << itrMu->eta() << " " << itrMu->phi();
844  }
845  }
846  }
847 
848  //============== store the information about all the Non-Fake vertices ===============
849 
851  iEvent.getByToken(tok_recVtx_,recVtxs);
852 
853  std::vector<reco::Track> svTracks;
854  math::XYZPoint leadPV(0,0,0);
855  double sumPtMax = -1.0;
856  for(unsigned int ind=0;ind<recVtxs->size();ind++) {
857 
858  if ( !((*recVtxs)[ind].isFake()) ) {
859  double vtxTrkSumPt=0.0, vtxTrkSumPtWt=0.0;
860  int vtxTrkNWt =0;
861  double vtxTrkSumPtHP=0.0, vtxTrkSumPtHPWt=0.0;
862  int vtxTrkNHP =0, vtxTrkNHPWt =0;
863 
864  reco::Vertex::trackRef_iterator vtxTrack = (*recVtxs)[ind].tracks_begin();
865 
866  for (vtxTrack = (*recVtxs)[ind].tracks_begin(); vtxTrack!=(*recVtxs)[ind].tracks_end(); vtxTrack++) {
867 
868  if((*vtxTrack)->pt()<pvTracksPtMin_) continue;
869 
870  bool trkQuality = (*vtxTrack)->quality(trackQuality_);
871 
872  vtxTrkSumPt += (*vtxTrack)->pt();
873 
874  vtxTrkSumPt += (*vtxTrack)->pt();
875  if (trkQuality) {
876  vtxTrkSumPtHP += (*vtxTrack)->pt();
877  vtxTrkNHP++;
878  }
879 
880  double weight = (*recVtxs)[ind].trackWeight(*vtxTrack);
881  h_PVTracksWt ->Fill(weight);
882  if (weight>0.5) {
883  vtxTrkSumPtWt += (*vtxTrack)->pt();
884  vtxTrkNWt++;
885  if (trkQuality) {
886  vtxTrkSumPtHPWt += (*vtxTrack)->pt();
887  vtxTrkNHPWt++;
888  }
889  }
890  }
891 
892  if (vtxTrkSumPt>sumPtMax) {
893  sumPtMax = vtxTrkSumPt;
894  leadPV = math::XYZPoint( (*recVtxs)[ind].x(),(*recVtxs)[ind].y(), (*recVtxs)[ind].z() );
895  }
896 
897  t_PVx ->push_back( (*recVtxs)[ind].x() );
898  t_PVy ->push_back( (*recVtxs)[ind].y() );
899  t_PVz ->push_back( (*recVtxs)[ind].z() );
900  t_PVisValid ->push_back( (*recVtxs)[ind].isValid() );
901  t_PVNTracks ->push_back( (*recVtxs)[ind].tracksSize() );
902  t_PVndof ->push_back( (*recVtxs)[ind].ndof() );
903  t_PVNTracksWt ->push_back( vtxTrkNWt );
904  t_PVTracksSumPt ->push_back( vtxTrkSumPt );
905  t_PVTracksSumPtWt->push_back( vtxTrkSumPtWt );
906 
907  t_PVNTracksHP ->push_back( vtxTrkNHP );
908  t_PVNTracksHPWt ->push_back( vtxTrkNHPWt );
909  t_PVTracksSumPtHP ->push_back( vtxTrkSumPtHP );
910  t_PVTracksSumPtHPWt->push_back( vtxTrkSumPtHPWt );
911 
912  if (myverbose_==4) {
913  edm::LogVerbatim("IsoTrack") << "PV " << ind << " isValid "
914  << (*recVtxs)[ind].isValid() << " isFake "
915  <<(*recVtxs)[ind].isFake()
916  << " hasRefittedTracks() " << ind << " "
917  << (*recVtxs)[ind].hasRefittedTracks()
918  << " refittedTrksSize "
919  << (*recVtxs)[ind].refittedTracks().size()
920  << " tracksSize() "
921  << (*recVtxs)[ind].tracksSize()
922  << " sumPt " << vtxTrkSumPt;
923  }
924  } // if vtx is not Fake
925  } // loop over PVs
926  //===================================================================================
927 
928  // Get the beamspot
929  edm::Handle<reco::BeamSpot> beamSpotH;
930  iEvent.getByToken(tok_bs_, beamSpotH);
931  math::XYZPoint bspot;
932  bspot = ( beamSpotH.isValid() ) ? beamSpotH->position() : math::XYZPoint(0, 0, 0);
933 
934  //=====================================================================
935 
937  iEvent.getByToken(tok_jets_,jets);
938  // edm::Handle<reco::JetExtendedAssociation::Container> jetExtender;
939  // iEvent.getByLabel(JetExtender_,jetExtender);
940 
941  for (unsigned int ijet=0;ijet<(*jets).size();ijet++) {
942  t_jetPt ->push_back( (*jets)[ijet].pt() );
943  t_jetEta ->push_back( (*jets)[ijet].eta() );
944  t_jetPhi ->push_back( (*jets)[ijet].phi() );
945  t_nTrksJetVtx ->push_back( -1.0);
946  t_nTrksJetCalo->push_back( -1.0);
947  }
948 
949  //===================================================================================
950 
951  // get handles to calogeometry and calotopology
953  iSetup.get<CaloGeometryRecord>().get(pG);
954  const CaloGeometry* geo = pG.product();
955 
956  edm::ESHandle<CaloTopology> theCaloTopology;
957  iSetup.get<CaloTopologyRecord>().get(theCaloTopology);
958  const CaloTopology *caloTopology = theCaloTopology.product();
959 
961  iSetup.get<HcalRecNumberingRecord>().get(htopo);
962  const HcalTopology* theHBHETopology = htopo.product();
963 
964  edm::Handle<EcalRecHitCollection> barrelRecHitsHandle;
965  edm::Handle<EcalRecHitCollection> endcapRecHitsHandle;
966  iEvent.getByToken(tok_EB_,barrelRecHitsHandle);
967  iEvent.getByToken(tok_EE_,endcapRecHitsHandle);
968 
969  // Retrieve the good/bad ECAL channels from the DB
971  iSetup.get<EcalChannelStatusRcd>().get(ecalChStatus);
972  const EcalChannelStatus* theEcalChStatus = ecalChStatus.product();
973 
974  // Retrieve trigger tower map
976  iSetup.get<IdealGeometryRecord>().get(hTtmap);
977  const EcalTrigTowerConstituentsMap& ttMap = *hTtmap;
978 
980  iEvent.getByToken(tok_hbhe_, hbhe);
981  if (!hbhe.isValid()) {
982  ++nbad_;
983  if (nbad_ < 10) edm::LogVerbatim("IsoTrack") << "No HBHE rechit collection";
984  return;
985  }
986  const HBHERecHitCollection Hithbhe = *(hbhe.product());
987 
988  //get Handles to SimTracks and SimHits
990  if (doMC_) iEvent.getByToken(tok_simTk_,SimTk);
991  edm::SimTrackContainer::const_iterator simTrkItr;
992 
994  if (doMC_) iEvent.getByToken(tok_simVtx_,SimVtx);
995 
996  //get Handles to PCaloHitContainers of eb/ee/hbhe
998  if (doMC_) iEvent.getByToken(tok_caloEB_, pcaloeb);
999 
1001  if (doMC_) iEvent.getByToken(tok_caloEE_, pcaloee);
1002 
1004  if (doMC_) iEvent.getByToken(tok_caloHH_, pcalohh);
1005 
1006  //associates tracker rechits/simhits to a track
1007  std::unique_ptr<TrackerHitAssociator> associate;
1008  if (doMC_) associate.reset(new TrackerHitAssociator(iEvent, trackerHitAssociatorConfig_));
1009 
1010  //===================================================================================
1011 
1012  h_nTracks->Fill(trkCollection->size());
1013 
1014  int nTracks = 0;
1015 
1016  t_nTracks = trkCollection->size();
1017 
1018  // get the list of DetIds closest to the impact point of track on surface calorimeters
1019  std::vector<spr::propagatedTrackID> trkCaloDets;
1020  spr::propagateCALO(trkCollection, geo, bField, theTrackQuality, trkCaloDets, false);
1021  std::vector<spr::propagatedTrackID>::const_iterator trkDetItr;
1022 
1023  if(myverbose_>2) {
1024  for (trkDetItr = trkCaloDets.begin(); trkDetItr != trkCaloDets.end(); trkDetItr++) {
1025  edm::LogVerbatim("IsoTrack") << trkDetItr->trkItr->p() << " "
1026  << trkDetItr->trkItr->eta() << " "
1027  << trkDetItr->okECAL << " "
1028  << trkDetItr->okHCAL;
1029  if (trkDetItr->okECAL) {
1030  if (trkDetItr->detIdECAL.subdetId() == EcalBarrel)
1031  edm::LogVerbatim("IsoTrack") << (EBDetId)trkDetItr->detIdECAL;
1032  else
1033  edm::LogVerbatim("IsoTrack") << (EEDetId)trkDetItr->detIdECAL;
1034  }
1035  if (trkDetItr->okHCAL)
1036  edm::LogVerbatim("IsoTrack") << (HcalDetId)trkDetItr->detIdHCAL;
1037  }
1038  }
1039 
1040  int nvtxTracks=0;
1041  for (trkDetItr = trkCaloDets.begin(),nTracks=0; trkDetItr != trkCaloDets.end(); trkDetItr++,nTracks++) {
1042 
1043  const reco::Track* pTrack = &(*(trkDetItr->trkItr));
1044 
1045  // find vertex index the track is associated with
1046  int pVtxTkId = -1;
1047  for (unsigned int ind=0; ind<recVtxs->size(); ind++) {
1048  if (!((*recVtxs)[ind].isFake())) {
1049  reco::Vertex::trackRef_iterator vtxTrack = (*recVtxs)[ind].tracks_begin();
1050  for (vtxTrack = (*recVtxs)[ind].tracks_begin(); vtxTrack!=(*recVtxs)[ind].tracks_end(); vtxTrack++) {
1051 
1052  const edm::RefToBase<reco::Track> pvtxTrack = (*vtxTrack);
1053  if (pTrack == pvtxTrack.get()) {
1054  pVtxTkId = ind;
1055  break;
1056  if (myverbose_>2) {
1057  if (pTrack->pt()>1.0) {
1058  edm::LogVerbatim("IsoTrack") << "Debug the track association with vertex ";
1059  edm::LogVerbatim("IsoTrack") << pTrack << " " <<pvtxTrack.get();
1060  edm::LogVerbatim("IsoTrack") << " trkVtxIndex " << nvtxTracks
1061  << " vtx " << ind << " pt "
1062  << pTrack->pt() << " eta "
1063  << pTrack->eta() << " "
1064  <<pTrack->pt()-pvtxTrack->pt()<<" "
1065  << pTrack->eta()-pvtxTrack->eta();
1066  nvtxTracks++;
1067  }
1068  }
1069  }
1070  }
1071  }
1072  }
1073 
1074  const reco::HitPattern& hitp = pTrack->hitPattern();
1075  int nLayersCrossed = hitp.trackerLayersWithMeasurement() ;
1076  int nOuterHits = hitp.stripTOBLayersWithMeasurement()+hitp.stripTECLayersWithMeasurement() ;
1077 
1078  bool ifGood = pTrack->quality(trackQuality_);
1079  double pt1 = pTrack->pt();
1080  double p1 = pTrack->p();
1081  double eta1 = pTrack->momentum().eta();
1082  double phi1 = pTrack->momentum().phi();
1083  double etaEcal1 = trkDetItr->etaECAL;
1084  double phiEcal1 = trkDetItr->phiECAL;
1085  double etaHcal1 = trkDetItr->etaHCAL;
1086  double phiHcal1 = trkDetItr->phiHCAL;
1087  double dxy1 = pTrack->dxy();
1088  double dz1 = pTrack->dz();
1089  double chisq1 = pTrack->normalizedChi2();
1090  double dxybs1 = beamSpotH.isValid() ? pTrack->dxy(bspot) : pTrack->dxy();
1091  double dzbs1 = beamSpotH.isValid() ? pTrack->dz(bspot) : pTrack->dz();
1092  double dxypv1 = pTrack->dxy();
1093  double dzpv1 = pTrack->dz();
1094  if (pVtxTkId>=0) {
1095  math::XYZPoint thisTkPV = math::XYZPoint( (*recVtxs)[pVtxTkId].x(),(*recVtxs)[pVtxTkId].y(), (*recVtxs)[pVtxTkId].z() );
1096  dxypv1 = pTrack->dxy(thisTkPV);
1097  dzpv1 = pTrack->dz (thisTkPV);
1098  }
1099 
1100  h_recEtaPt_0->Fill(eta1, pt1);
1101  h_recEtaP_0 ->Fill(eta1, p1);
1102  h_recPt_0 ->Fill(pt1);
1103  h_recP_0 ->Fill(p1);
1104  h_recEta_0 ->Fill(eta1);
1105  h_recPhi_0 ->Fill(phi1);
1106 
1107  if (ifGood && nLayersCrossed>7 ) {
1108  h_recEtaPt_1->Fill(eta1, pt1);
1109  h_recEtaP_1 ->Fill(eta1, p1);
1110  h_recPt_1 ->Fill(pt1);
1111  h_recP_1 ->Fill(p1);
1112  h_recEta_1 ->Fill(eta1);
1113  h_recPhi_1 ->Fill(phi1);
1114  }
1115 
1116  if (! ifGood) continue;
1117 
1118  if (writeAllTracks_ && p1>2.0 && nLayersCrossed>7) {
1119  t_trackPAll ->push_back( p1 );
1120  t_trackEtaAll ->push_back( eta1 );
1121  t_trackPhiAll ->push_back( phi1 );
1122  t_trackPtAll ->push_back( pt1 );
1123  t_trackDxyAll ->push_back( dxy1 );
1124  t_trackDzAll ->push_back( dz1 );
1125  t_trackDxyPVAll ->push_back( dxypv1 );
1126  t_trackDzPVAll ->push_back( dzpv1 );
1127  t_trackChiSqAll ->push_back( chisq1 );
1128  }
1129  if (doMC_) {
1130  edm::SimTrackContainer::const_iterator matchedSimTrkAll = spr::matchedSimTrack(iEvent, SimTk, SimVtx, pTrack, *associate, false);
1131  if (writeAllTracks_ && matchedSimTrkAll != SimTk->end()) t_trackPdgIdAll->push_back( matchedSimTrkAll->type() );
1132  }
1133 
1134  if (pt1>minTrackP_ && std::abs(eta1)<maxTrackEta_ && trkDetItr->okECAL) {
1135 
1136  double maxNearP31x31=999.0, maxNearP25x25=999.0, maxNearP21x21=999.0, maxNearP15x15=999.0;
1137  maxNearP31x31 = spr::chargeIsolationEcal(nTracks, trkCaloDets, geo, caloTopology, 15,15);
1138  maxNearP25x25 = spr::chargeIsolationEcal(nTracks, trkCaloDets, geo, caloTopology, 12,12);
1139  maxNearP21x21 = spr::chargeIsolationEcal(nTracks, trkCaloDets, geo, caloTopology, 10,10);
1140  maxNearP15x15 = spr::chargeIsolationEcal(nTracks, trkCaloDets, geo, caloTopology, 7, 7);
1141 
1142  int iTrkEtaBin=-1, iTrkMomBin=-1;
1143  for(unsigned int ieta=0; ieta<NEtaBins; ieta++) {
1144  if(std::abs(eta1)>genPartEtaBins[ieta] && std::abs(eta1)<genPartEtaBins[ieta+1] ) iTrkEtaBin = ieta;
1145  }
1146  for (unsigned int ipt=0; ipt<NPBins; ipt++) {
1147  if (p1>genPartPBins[ipt] && p1<genPartPBins[ipt+1]) iTrkMomBin = ipt;
1148  }
1149  if (iTrkMomBin>=0 && iTrkEtaBin>=0) {
1150  h_maxNearP31x31[iTrkMomBin][iTrkEtaBin]->Fill( maxNearP31x31 );
1151  h_maxNearP25x25[iTrkMomBin][iTrkEtaBin]->Fill( maxNearP25x25 );
1152  h_maxNearP21x21[iTrkMomBin][iTrkEtaBin]->Fill( maxNearP21x21 );
1153  h_maxNearP15x15[iTrkMomBin][iTrkEtaBin]->Fill( maxNearP15x15 );
1154  }
1155  if (maxNearP31x31<0.0 && nLayersCrossed>7 && nOuterHits>4) {
1156  h_recEtaPt_2->Fill(eta1, pt1);
1157  h_recEtaP_2 ->Fill(eta1, p1);
1158  h_recPt_2 ->Fill(pt1);
1159  h_recP_2 ->Fill(p1);
1160  h_recEta_2 ->Fill(eta1);
1161  h_recPhi_2 ->Fill(phi1);
1162  }
1163 
1164  // if charge isolated in ECAL, store the further quantities
1165  if (maxNearP31x31<1.0) {
1166 
1167  haveIsoTrack = true;
1168 
1169  // get the matching simTrack
1170  double simTrackP = -1;
1171  if (doMC_) {
1172  edm::SimTrackContainer::const_iterator matchedSimTrk = spr::matchedSimTrack(iEvent, SimTk, SimVtx, pTrack, *associate, false);
1173  if( matchedSimTrk != SimTk->end() )simTrackP = matchedSimTrk->momentum().P();
1174  }
1175 
1177  iSetup.get<EcalSeverityLevelAlgoRcd>().get(sevlv);
1178 
1179  // get ECal Tranverse Profile
1180  std::pair<double, bool> e7x7P, e9x9P, e11x11P, e15x15P;
1181  std::pair<double, bool> e7x7_10SigP, e9x9_10SigP, e11x11_10SigP, e15x15_10SigP;
1182  std::pair<double, bool> e7x7_15SigP, e9x9_15SigP, e11x11_15SigP, e15x15_15SigP;
1183  std::pair<double, bool> e7x7_20SigP, e9x9_20SigP, e11x11_20SigP, e15x15_20SigP;
1184  std::pair<double, bool> e7x7_25SigP, e9x9_25SigP, e11x11_25SigP, e15x15_25SigP;
1185  std::pair<double, bool> e7x7_30SigP, e9x9_30SigP, e11x11_30SigP, e15x15_30SigP;
1186 
1187  spr::caloSimInfo simInfo3x3, simInfo5x5, simInfo7x7, simInfo9x9;
1188  spr::caloSimInfo simInfo11x11, simInfo13x13, simInfo15x15, simInfo21x21, simInfo25x25, simInfo31x31;
1189  double trkEcalEne=0;
1190 
1191  const DetId isoCell = trkDetItr->detIdECAL;
1192  e7x7P = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),3,3, -100.0, -100.0, tMinE_,tMaxE_);
1193  e9x9P = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),4,4, -100.0, -100.0, tMinE_,tMaxE_);
1194  e11x11P = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),5,5, -100.0, -100.0, tMinE_,tMaxE_);
1195  e15x15P = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),7,7, -100.0, -100.0, tMinE_,tMaxE_);
1196 
1197  e7x7_10SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),3,3, 0.030, 0.150, tMinE_,tMaxE_);
1198  e9x9_10SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),4,4, 0.030, 0.150, tMinE_,tMaxE_);
1199  e11x11_10SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),5,5, 0.030, 0.150, tMinE_,tMaxE_);
1200  e15x15_10SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),7,7, 0.030, 0.150, tMinE_,tMaxE_);
1201 
1202  e7x7_15SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology, sevlv.product(),ttMap, 3,3, 0.20,0.45, tMinE_,tMaxE_);
1203  e9x9_15SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology, sevlv.product(),ttMap, 4,4, 0.20,0.45, tMinE_,tMaxE_);
1204  e11x11_15SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(), ttMap, 5,5, 0.20,0.45, tMinE_,tMaxE_);
1205  e15x15_15SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology, sevlv.product(),ttMap, 7,7, 0.20,0.45, tMinE_,tMaxE_, false);
1206 
1207  e7x7_20SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),3,3, 0.060, 0.300, tMinE_,tMaxE_);
1208  e9x9_20SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),4,4, 0.060, 0.300, tMinE_,tMaxE_);
1209  e11x11_20SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),5,5, 0.060, 0.300, tMinE_,tMaxE_);
1210  e15x15_20SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),7,7, 0.060, 0.300, tMinE_,tMaxE_);
1211 
1212  e7x7_25SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),3,3, 0.075, 0.375, tMinE_,tMaxE_);
1213  e9x9_25SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),4,4, 0.075, 0.375, tMinE_,tMaxE_);
1214  e11x11_25SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),5,5, 0.075, 0.375, tMinE_,tMaxE_);
1215  e15x15_25SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),7,7, 0.075, 0.375, tMinE_,tMaxE_);
1216 
1217  e7x7_30SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),3,3, 0.090, 0.450, tMinE_,tMaxE_);
1218  e9x9_30SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),4,4, 0.090, 0.450, tMinE_,tMaxE_);
1219  e11x11_30SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),5,5, 0.090, 0.450, tMinE_,tMaxE_);
1220  e15x15_30SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),7,7, 0.090, 0.450, tMinE_,tMaxE_);
1221  if (myverbose_ == 2) {
1222  edm::LogVerbatim("IsoTrack") << "clean ecal rechit ";
1223  edm::LogVerbatim("IsoTrack") << "e7x7 " <<e7x7P.first << " e9x9 "
1224  << e9x9P.first << " e11x11 "
1225  << e11x11P.first << " e15x15 "
1226  <<e15x15P.first;
1227  edm::LogVerbatim("IsoTrack") << "e7x7_10Sig " << e7x7_10SigP.first
1228  << " e11x11_10Sig " <<e11x11_10SigP.first
1229  <<" e15x15_10Sig " <<e15x15_10SigP.first;
1230  }
1231 
1232  if (doMC_) {
1233  // check the energy from SimHits
1234  spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 1,1, simInfo3x3);
1235  spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 2,2, simInfo5x5);
1236  spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 3,3, simInfo7x7);
1237  spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 4,4, simInfo9x9);
1238  spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 5,5, simInfo11x11);
1239  spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 6,6, simInfo13x13);
1240  spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 7,7, simInfo15x15, 150.0,false);
1241  spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 10,10, simInfo21x21);
1242  spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 12,12, simInfo25x25);
1243  spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 15,15, simInfo31x31);
1244 
1245  trkEcalEne = spr::eCaloSimInfo(iEvent, geo, pcaloeb,pcaloee, SimTk, SimVtx, pTrack, *associate);
1246  if (myverbose_ == 1) {
1247  edm::LogVerbatim("IsoTrack") << "Track momentum " << pt1;
1248  edm::LogVerbatim("IsoTrack") << "ecal siminfo ";
1249  edm::LogVerbatim("IsoTrack") << "simInfo3x3: eTotal "
1250  << simInfo3x3.eTotal << " eMatched "
1251  << simInfo3x3.eMatched << " eRest "
1252  << simInfo3x3.eRest << " eGamma "
1253  << simInfo3x3.eGamma <<" eNeutralHad "
1254  << simInfo3x3.eNeutralHad
1255  << " eChargedHad "
1256  << simInfo3x3.eChargedHad;
1257  edm::LogVerbatim("IsoTrack") << "simInfo5x5: eTotal "
1258  << simInfo5x5.eTotal << " eMatched "
1259  << simInfo5x5.eMatched << " eRest "
1260  << simInfo5x5.eRest << " eGamma "
1261  << simInfo5x5.eGamma << " eNeutralHad "
1262  << simInfo5x5.eNeutralHad
1263  << " eChargedHad "
1264  << simInfo5x5.eChargedHad;
1265  edm::LogVerbatim("IsoTrack") << "simInfo7x7: eTotal "
1266  << simInfo7x7.eTotal << " eMatched "
1267  << simInfo7x7.eMatched << " eRest "
1268  << simInfo7x7.eRest << " eGamma "
1269  << simInfo7x7.eGamma <<" eNeutralHad "
1270  << simInfo7x7.eNeutralHad
1271  << " eChargedHad "
1272  << simInfo7x7.eChargedHad;
1273  edm::LogVerbatim("IsoTrack") << "simInfo9x9: eTotal "
1274  << simInfo9x9.eTotal << " eMatched "
1275  << simInfo9x9.eMatched << " eRest "
1276  << simInfo9x9.eRest << " eGamma "
1277  << simInfo9x9.eGamma <<" eNeutralHad "
1278  << simInfo9x9.eNeutralHad
1279  << " eChargedHad "
1280  << simInfo9x9.eChargedHad;
1281  edm::LogVerbatim("IsoTrack") << "simInfo11x11: eTotal "
1282  << simInfo11x11.eTotal << " eMatched "
1283  << simInfo11x11.eMatched << " eRest "
1284  << simInfo11x11.eRest << " eGamma "
1285  <<simInfo11x11.eGamma <<" eNeutralHad "
1286  << simInfo11x11.eNeutralHad
1287  << " eChargedHad "
1288  << simInfo11x11.eChargedHad;
1289  edm::LogVerbatim("IsoTrack") << "simInfo15x15: eTotal "
1290  << simInfo15x15.eTotal << " eMatched "
1291  << simInfo15x15.eMatched << " eRest "
1292  << simInfo15x15.eRest << " eGamma "
1293  <<simInfo15x15.eGamma <<" eNeutralHad "
1294  << simInfo15x15.eNeutralHad
1295  << " eChargedHad "
1296  << simInfo15x15.eChargedHad;
1297  edm::LogVerbatim("IsoTrack") << "simInfo31x31: eTotal "
1298  << simInfo31x31.eTotal << " eMatched "
1299  << simInfo31x31.eMatched << " eRest "
1300  << simInfo31x31.eRest << " eGamma "
1301  <<simInfo31x31.eGamma <<" eNeutralHad "
1302  << simInfo31x31.eNeutralHad
1303  << " eChargedHad "
1304  << simInfo31x31.eChargedHad;
1305  edm::LogVerbatim("IsoTrack") << "trkEcalEne" << trkEcalEne;
1306  }
1307  }
1308 
1309  // ======= Get HCAL information
1310  double hcalScale=1.0;
1311  if( std::abs(pTrack->eta())<1.4 ) {
1312  hcalScale=120.0;
1313  } else {
1314  hcalScale=135.0;
1315  }
1316 
1317  double maxNearHcalP3x3=-1, maxNearHcalP5x5=-1, maxNearHcalP7x7=-1;
1318  maxNearHcalP3x3 = spr::chargeIsolationHcal(nTracks, trkCaloDets, theHBHETopology, 1,1);
1319  maxNearHcalP5x5 = spr::chargeIsolationHcal(nTracks, trkCaloDets, theHBHETopology, 2,2);
1320  maxNearHcalP7x7 = spr::chargeIsolationHcal(nTracks, trkCaloDets, theHBHETopology, 3,3);
1321 
1322  double h3x3=0, h5x5=0, h7x7=0;
1323  double h3x3Sig=0, h5x5Sig=0, h7x7Sig=0;
1324  double trkHcalEne = 0;
1325  spr::caloSimInfo hsimInfo3x3, hsimInfo5x5, hsimInfo7x7;
1326 
1327  if (trkDetItr->okHCAL) {
1328  const DetId ClosestCell(trkDetItr->detIdHCAL);
1329  // bool includeHO=false, bool algoNew=true, bool debug=false
1330  h3x3 = spr::eHCALmatrix(theHBHETopology, ClosestCell, hbhe,1,1, false, true, -100.0, -100.0, -100.0, -100.0, tMinH_,tMaxH_);
1331  h5x5 = spr::eHCALmatrix(theHBHETopology, ClosestCell, hbhe,2,2, false, true, -100.0, -100.0, -100.0, -100.0, tMinH_,tMaxH_);
1332  h7x7 = spr::eHCALmatrix(theHBHETopology, ClosestCell, hbhe,3,3, false, true, -100.0, -100.0, -100.0, -100.0, tMinH_,tMaxH_);
1333  h3x3Sig = spr::eHCALmatrix(theHBHETopology, ClosestCell, hbhe,1,1, false, true, 0.7, 0.8, -100.0, -100.0, tMinH_,tMaxH_);
1334  h5x5Sig = spr::eHCALmatrix(theHBHETopology, ClosestCell, hbhe,2,2, false, true, 0.7, 0.8, -100.0, -100.0, tMinH_,tMaxH_);
1335  h7x7Sig = spr::eHCALmatrix(theHBHETopology, ClosestCell, hbhe,3,3, false, true, 0.7, 0.8, -100.0, -100.0, tMinH_,tMaxH_);
1336 
1337  if (myverbose_==2) {
1338  edm::LogVerbatim("IsoTrack") << "HCAL 3x3 " << h3x3 << " "
1339  << h3x3Sig << " 5x5 " << h5x5 << " "
1340  << h5x5Sig << " 7x7 " << h7x7 << " "
1341  << h7x7Sig;
1342  }
1343 
1344  if (doMC_) {
1345  spr::eHCALSimInfo(iEvent, theHBHETopology, ClosestCell, geo,pcalohh, SimTk, SimVtx, pTrack, *associate, 1,1, hsimInfo3x3);
1346  spr::eHCALSimInfo(iEvent, theHBHETopology, ClosestCell, geo,pcalohh, SimTk, SimVtx, pTrack, *associate, 2,2, hsimInfo5x5);
1347  spr::eHCALSimInfo(iEvent, theHBHETopology, ClosestCell, geo,pcalohh, SimTk, SimVtx, pTrack, *associate, 3,3, hsimInfo7x7, 150.0, false,false);
1348  trkHcalEne = spr::eCaloSimInfo(iEvent, geo,pcalohh, SimTk, SimVtx, pTrack, *associate);
1349  if (myverbose_ == 1) {
1350  edm::LogVerbatim("IsoTrack") << "Hcal siminfo ";
1351  edm::LogVerbatim("IsoTrack") << "hsimInfo3x3: eTotal "
1352  << hsimInfo3x3.eTotal << " eMatched "
1353  << hsimInfo3x3.eMatched << " eRest "
1354  << hsimInfo3x3.eRest << " eGamma "
1355  << hsimInfo3x3.eGamma
1356  << " eNeutralHad "
1357  << hsimInfo3x3.eNeutralHad
1358  << " eChargedHad "
1359  << hsimInfo3x3.eChargedHad;
1360  edm::LogVerbatim("IsoTrack") << "hsimInfo5x5: eTotal "
1361  << hsimInfo5x5.eTotal << " eMatched "
1362  << hsimInfo5x5.eMatched << " eRest "
1363  << hsimInfo5x5.eRest << " eGamma "
1364  << hsimInfo5x5.eGamma
1365  << " eNeutralHad "
1366  << hsimInfo5x5.eNeutralHad
1367  << " eChargedHad "
1368  << hsimInfo5x5.eChargedHad;
1369  edm::LogVerbatim("IsoTrack") << "hsimInfo7x7: eTotal "
1370  << hsimInfo7x7.eTotal << " eMatched "
1371  << hsimInfo7x7.eMatched << " eRest "
1372  << hsimInfo7x7.eRest << " eGamma "
1373  << hsimInfo7x7.eGamma
1374  << " eNeutralHad "
1375  << hsimInfo7x7.eNeutralHad
1376  << " eChargedHad "
1377  << hsimInfo7x7.eChargedHad;
1378  edm::LogVerbatim("IsoTrack") << "trkHcalEne " << trkHcalEne;
1379  }
1380  }
1381 
1382  // debug the ecal and hcal matrix
1383  if (myverbose_==4) {
1384  edm::LogVerbatim("IsoTrack") << "Run " << iEvent.id().run()
1385  << " Event " <<iEvent.id().event();
1386  std::vector<std::pair<DetId,double> > v7x7 = spr::eHCALmatrixCell(theHBHETopology, ClosestCell, hbhe,3,3, false, false);
1387  double sumv=0.0;
1388 
1389  for (unsigned int iv=0; iv<v7x7.size(); iv++) {
1390  sumv += v7x7[iv].second;
1391  }
1392  edm::LogVerbatim("IsoTrack") << "h7x7 " << h7x7 << " v7x7 " << sumv
1393  << " in " << v7x7.size();
1394  for(unsigned int iv=0; iv<v7x7.size(); iv++) {
1395  HcalDetId id = v7x7[iv].first;
1396  edm::LogVerbatim("IsoTrack") << " Cell " << iv << " 0x"
1397  << std::hex << v7x7[iv].first()
1398  << std::dec << " " << id <<" Energy "
1399  << v7x7[iv].second;
1400  }
1401  }
1402 
1403  }
1404  if (doMC_) {
1405  trkHcalEne = spr::eCaloSimInfo(iEvent, geo,pcalohh, SimTk, SimVtx, pTrack, *associate);
1406  }
1407 
1408  // ====================================================================================================
1409  // get diff between track outermost hit position and the propagation point at outermost surface of tracker
1410  std::pair<math::XYZPoint,double> point2_TK0 = spr::propagateTrackerEnd( pTrack, bField, false);
1411  math::XYZPoint diff(pTrack->outerPosition().X()-point2_TK0.first.X(),
1412  pTrack->outerPosition().Y()-point2_TK0.first.Y(),
1413  pTrack->outerPosition().Z()-point2_TK0.first.Z() );
1414  double trackOutPosOutHitDr = diff.R();
1415  double trackL = point2_TK0.second;
1416  if (myverbose_==5) {
1417  edm::LogVerbatim("IsoTrack") << " propagted " << point2_TK0.first
1418  << " " << point2_TK0.first.eta() << " "
1419  << point2_TK0.first.phi();
1420  edm::LogVerbatim("IsoTrack") << " outerPosition() "
1421  << pTrack->outerPosition() << " "
1422  << pTrack->outerPosition().eta() << " "
1423  << pTrack->outerPosition().phi();
1424  edm::LogVerbatim("IsoTrack") <<"diff " << diff << " diffR "
1425  << diff.R() << " diffR/L "
1426  << diff.R()/point2_TK0.second;
1427  }
1428 
1429  for (unsigned int ind=0;ind<recVtxs->size();ind++) {
1430  if (!((*recVtxs)[ind].isFake())) {
1431  reco::Vertex::trackRef_iterator vtxTrack = (*recVtxs)[ind].tracks_begin();
1432  if (deltaR(eta1,phi1, (*vtxTrack)->eta(),(*vtxTrack)->phi()) < 0.01 ) t_trackPVIdx ->push_back( ind );
1433  else t_trackPVIdx ->push_back( -1 );
1434  }
1435  }
1436 
1437  // Fill the tree Branches here
1438  t_trackPVIdx ->push_back( pVtxTkId );
1439  t_trackP ->push_back( p1 );
1440  t_trackPt ->push_back( pt1 );
1441  t_trackEta ->push_back( eta1 );
1442  t_trackPhi ->push_back( phi1 );
1443  t_trackEcalEta ->push_back( etaEcal1 );
1444  t_trackEcalPhi ->push_back( phiEcal1 );
1445  t_trackHcalEta ->push_back( etaHcal1 );
1446  t_trackHcalPhi ->push_back( phiHcal1 );
1447  t_trackDxy ->push_back( dxy1 );
1448  t_trackDz ->push_back( dz1 );
1449  t_trackDxyBS ->push_back( dxybs1 );
1450  t_trackDzBS ->push_back( dzbs1 );
1451  t_trackDxyPV ->push_back( dxypv1 );
1452  t_trackDzPV ->push_back( dzpv1 );
1453  t_trackChiSq ->push_back( chisq1 );
1454  t_trackNOuterHits ->push_back( nOuterHits );
1455  t_NLayersCrossed ->push_back( nLayersCrossed );
1456 
1457  t_trackHitsTOB ->push_back( hitp.stripTOBLayersWithMeasurement() );
1458  t_trackHitsTEC ->push_back( hitp.stripTECLayersWithMeasurement() );
1464 
1470 
1471  t_trackHitInMeasTOB ->push_back( hitp.stripTOBLayersWithMeasurement() );
1472  t_trackHitInMeasTEC ->push_back( hitp.stripTECLayersWithMeasurement() );
1473  t_trackHitInMeasTIB ->push_back( hitp.stripTIBLayersWithMeasurement() );
1474  t_trackHitInMeasTID ->push_back( hitp.stripTIDLayersWithMeasurement() );
1476  t_trackHitOutMeasTEC ->push_back( hitp.stripTECLayersWithMeasurement() );
1479  t_trackOutPosOutHitDr ->push_back( trackOutPosOutHitDr );
1480  t_trackL ->push_back( trackL );
1481 
1482  t_maxNearP31x31 ->push_back( maxNearP31x31 );
1483  t_maxNearP21x21 ->push_back( maxNearP21x21 );
1484 
1485  t_ecalSpike11x11 ->push_back( e11x11P.second );
1486  t_e7x7 ->push_back( e7x7P.first );
1487  t_e9x9 ->push_back( e9x9P.first );
1488  t_e11x11 ->push_back( e11x11P.first );
1489  t_e15x15 ->push_back( e15x15P.first );
1490 
1491  t_e7x7_10Sig ->push_back( e7x7_10SigP.first );
1492  t_e9x9_10Sig ->push_back( e9x9_10SigP.first );
1493  t_e11x11_10Sig ->push_back( e11x11_10SigP.first );
1494  t_e15x15_10Sig ->push_back( e15x15_10SigP.first );
1495  t_e7x7_15Sig ->push_back( e7x7_15SigP.first );
1496  t_e9x9_15Sig ->push_back( e9x9_15SigP.first );
1497  t_e11x11_15Sig ->push_back( e11x11_15SigP.first );
1498  t_e15x15_15Sig ->push_back( e15x15_15SigP.first );
1499  t_e7x7_20Sig ->push_back( e7x7_20SigP.first );
1500  t_e9x9_20Sig ->push_back( e9x9_20SigP.first );
1501  t_e11x11_20Sig ->push_back( e11x11_20SigP.first );
1502  t_e15x15_20Sig ->push_back( e15x15_20SigP.first );
1503  t_e7x7_25Sig ->push_back( e7x7_25SigP.first );
1504  t_e9x9_25Sig ->push_back( e9x9_25SigP.first );
1505  t_e11x11_25Sig ->push_back( e11x11_25SigP.first );
1506  t_e15x15_25Sig ->push_back( e15x15_25SigP.first );
1507  t_e7x7_30Sig ->push_back( e7x7_30SigP.first );
1508  t_e9x9_30Sig ->push_back( e9x9_30SigP.first );
1509  t_e11x11_30Sig ->push_back( e11x11_30SigP.first );
1510  t_e15x15_30Sig ->push_back( e15x15_30SigP.first );
1511 
1512  if (doMC_) {
1513  t_esim7x7 ->push_back( simInfo7x7.eTotal );
1514  t_esim9x9 ->push_back( simInfo9x9.eTotal );
1515  t_esim11x11 ->push_back( simInfo11x11.eTotal );
1516  t_esim15x15 ->push_back( simInfo15x15.eTotal );
1517 
1518  t_esim7x7Matched ->push_back( simInfo7x7.eMatched );
1519  t_esim9x9Matched ->push_back( simInfo9x9.eMatched );
1520  t_esim11x11Matched ->push_back( simInfo11x11.eMatched );
1521  t_esim15x15Matched ->push_back( simInfo15x15.eMatched );
1522 
1523  t_esim7x7Rest ->push_back( simInfo7x7.eRest );
1524  t_esim9x9Rest ->push_back( simInfo9x9.eRest );
1525  t_esim11x11Rest ->push_back( simInfo11x11.eRest );
1526  t_esim15x15Rest ->push_back( simInfo15x15.eRest );
1527 
1528  t_esim7x7Photon ->push_back( simInfo7x7.eGamma );
1529  t_esim9x9Photon ->push_back( simInfo9x9.eGamma );
1530  t_esim11x11Photon ->push_back( simInfo11x11.eGamma );
1531  t_esim15x15Photon ->push_back( simInfo15x15.eGamma );
1532 
1533  t_esim7x7NeutHad ->push_back( simInfo7x7.eNeutralHad );
1534  t_esim9x9NeutHad ->push_back( simInfo9x9.eNeutralHad );
1535  t_esim11x11NeutHad ->push_back( simInfo11x11.eNeutralHad );
1536  t_esim15x15NeutHad ->push_back( simInfo15x15.eNeutralHad );
1537 
1538  t_esim7x7CharHad ->push_back( simInfo7x7.eChargedHad );
1539  t_esim9x9CharHad ->push_back( simInfo9x9.eChargedHad );
1540  t_esim11x11CharHad ->push_back( simInfo11x11.eChargedHad );
1541  t_esim15x15CharHad ->push_back( simInfo15x15.eChargedHad );
1542 
1543  t_trkEcalEne ->push_back( trkEcalEne );
1544  t_simTrackP ->push_back( simTrackP );
1545  t_esimPdgId ->push_back( simInfo11x11.pdgMatched );
1546  }
1547 
1548  t_maxNearHcalP3x3 ->push_back( maxNearHcalP3x3 );
1549  t_maxNearHcalP5x5 ->push_back( maxNearHcalP5x5 );
1550  t_maxNearHcalP7x7 ->push_back( maxNearHcalP7x7 );
1551 
1552  t_h3x3 ->push_back( h3x3 );
1553  t_h5x5 ->push_back( h5x5 );
1554  t_h7x7 ->push_back( h7x7 );
1555  t_h3x3Sig ->push_back( h3x3Sig );
1556  t_h5x5Sig ->push_back( h5x5Sig );
1557  t_h7x7Sig ->push_back( h7x7Sig );
1558 
1559  t_infoHcal ->push_back( trkDetItr->okHCAL );
1560  if (doMC_) {
1561  t_trkHcalEne ->push_back( hcalScale*trkHcalEne );
1562 
1563  t_hsim3x3 ->push_back( hcalScale*hsimInfo3x3.eTotal );
1564  t_hsim5x5 ->push_back( hcalScale*hsimInfo5x5.eTotal );
1565  t_hsim7x7 ->push_back( hcalScale*hsimInfo7x7.eTotal );
1566 
1567  t_hsim3x3Matched ->push_back( hcalScale*hsimInfo3x3.eMatched );
1568  t_hsim5x5Matched ->push_back( hcalScale*hsimInfo5x5.eMatched );
1569  t_hsim7x7Matched ->push_back( hcalScale*hsimInfo7x7.eMatched );
1570 
1571  t_hsim3x3Rest ->push_back( hcalScale*hsimInfo3x3.eRest );
1572  t_hsim5x5Rest ->push_back( hcalScale*hsimInfo5x5.eRest );
1573  t_hsim7x7Rest ->push_back( hcalScale*hsimInfo7x7.eRest );
1574 
1575  t_hsim3x3Photon ->push_back( hcalScale*hsimInfo3x3.eGamma );
1576  t_hsim5x5Photon ->push_back( hcalScale*hsimInfo5x5.eGamma );
1577  t_hsim7x7Photon ->push_back( hcalScale*hsimInfo7x7.eGamma );
1578 
1579  t_hsim3x3NeutHad ->push_back( hcalScale*hsimInfo3x3.eNeutralHad );
1580  t_hsim5x5NeutHad ->push_back( hcalScale*hsimInfo5x5.eNeutralHad );
1581  t_hsim7x7NeutHad ->push_back( hcalScale*hsimInfo7x7.eNeutralHad );
1582 
1583  t_hsim3x3CharHad ->push_back( hcalScale*hsimInfo3x3.eChargedHad );
1584  t_hsim5x5CharHad ->push_back( hcalScale*hsimInfo5x5.eChargedHad );
1585  t_hsim7x7CharHad ->push_back( hcalScale*hsimInfo7x7.eChargedHad );
1586  }
1587 
1588  } // if loosely isolated track
1589  } // check p1/eta
1590  } // loop over track collection
1591 
1592  if(haveIsoTrack) tree_->Fill();
1593 }
1594 
1595 // ----- method called once each job just before starting event loop ----
1597 
1598  nEventProc_ = 0;
1599  nbad_ = 0;
1600  initL1_ = false;
1601  double tempgen_TH[NPBins+1] = { 0.0, 1.0, 2.0, 3.0, 4.0,
1602  5.0, 6.0, 7.0, 9.0, 11.0,
1603  15.0, 20.0, 30.0, 50.0, 75.0, 100.0};
1604 
1605  for (unsigned int i=0; i<NPBins+1; i++) genPartPBins[i] = tempgen_TH[i];
1606 
1607  double tempgen_Eta[NEtaBins+1] = {0.0, 1.131, 1.653, 2.172};
1608 
1609  for (unsigned int i=0; i<NEtaBins+1; i++) genPartEtaBins[i] = tempgen_Eta[i];
1610 
1611  bookHistograms();
1612 }
1613 
1614 // ----- method called once each job just after ending the event loop ----
1616 
1617  if (L1TriggerAlgoInfo_) {
1618  std::map< std::pair<unsigned int,std::string>, int>::iterator itr;
1619  for (itr=l1AlgoMap_.begin(); itr!=l1AlgoMap_.end(); itr++) {
1620  edm::LogVerbatim("IsoTrack") << " ****endjob**** " << (itr->first).first
1621  << " " << (itr->first).second << " "
1622  << itr->second;
1623  int ibin = (itr->first).first;
1624  TString name( (itr->first).second );
1625  h_L1AlgoNames->GetXaxis()->SetBinLabel(ibin+1,name);
1626  }
1627  edm::LogVerbatim("IsoTrack") << "Number of Events Processed " <<nEventProc_;
1628  }
1629 
1630 }
1631 
1632 //========================================================================================================
1633 
1635 
1636  t_PVx ->clear();
1637  t_PVy ->clear();
1638  t_PVz ->clear();
1639  t_PVisValid ->clear();
1640  t_PVndof ->clear();
1641  t_PVNTracks ->clear();
1642  t_PVNTracksWt ->clear();
1643  t_PVTracksSumPt ->clear();
1644  t_PVTracksSumPtWt ->clear();
1645  t_PVNTracksHP ->clear();
1646  t_PVNTracksHPWt ->clear();
1647  t_PVTracksSumPtHP ->clear();
1648  t_PVTracksSumPtHPWt ->clear();
1649 
1650  for(int i=0; i<128; i++) t_L1Decision[i]=0;
1651  t_L1AlgoNames ->clear();
1652  t_L1PreScale ->clear();
1653 
1654  t_L1CenJetPt ->clear();
1655  t_L1CenJetEta ->clear();
1656  t_L1CenJetPhi ->clear();
1657  t_L1FwdJetPt ->clear();
1658  t_L1FwdJetEta ->clear();
1659  t_L1FwdJetPhi ->clear();
1660  t_L1TauJetPt ->clear();
1661  t_L1TauJetEta ->clear();
1662  t_L1TauJetPhi ->clear();
1663  t_L1MuonPt ->clear();
1664  t_L1MuonEta ->clear();
1665  t_L1MuonPhi ->clear();
1666  t_L1IsoEMPt ->clear();
1667  t_L1IsoEMEta ->clear();
1668  t_L1IsoEMPhi ->clear();
1669  t_L1NonIsoEMPt ->clear();
1670  t_L1NonIsoEMEta ->clear();
1671  t_L1NonIsoEMPhi ->clear();
1672  t_L1METPt ->clear();
1673  t_L1METEta ->clear();
1674  t_L1METPhi ->clear();
1675 
1676  t_jetPt ->clear();
1677  t_jetEta ->clear();
1678  t_jetPhi ->clear();
1679  t_nTrksJetCalo ->clear();
1680  t_nTrksJetVtx ->clear();
1681 
1682  t_trackPAll ->clear();
1683  t_trackEtaAll ->clear();
1684  t_trackPhiAll ->clear();
1685  t_trackPdgIdAll ->clear();
1686  t_trackPtAll ->clear();
1687  t_trackDxyAll ->clear();
1688  t_trackDzAll ->clear();
1689  t_trackDxyPVAll ->clear();
1690  t_trackDzPVAll ->clear();
1691  t_trackChiSqAll ->clear();
1692 
1693  t_trackP ->clear();
1694  t_trackPt ->clear();
1695  t_trackEta ->clear();
1696  t_trackPhi ->clear();
1697  t_trackEcalEta ->clear();
1698  t_trackEcalPhi ->clear();
1699  t_trackHcalEta ->clear();
1700  t_trackHcalPhi ->clear();
1701  t_NLayersCrossed ->clear();
1702  t_trackNOuterHits ->clear();
1703  t_trackDxy ->clear();
1704  t_trackDxyBS ->clear();
1705  t_trackDz ->clear();
1706  t_trackDzBS ->clear();
1707  t_trackDxyPV ->clear();
1708  t_trackDzPV ->clear();
1709  t_trackChiSq ->clear();
1710  t_trackPVIdx ->clear();
1711  t_trackHitsTOB ->clear();
1712  t_trackHitsTEC ->clear();
1713  t_trackHitInMissTOB ->clear();
1714  t_trackHitInMissTEC ->clear();
1715  t_trackHitInMissTIB ->clear();
1716  t_trackHitInMissTID ->clear();
1717  t_trackHitInMissTIBTID ->clear();
1718  t_trackHitOutMissTOB ->clear();
1719  t_trackHitOutMissTEC ->clear();
1720  t_trackHitOutMissTIB ->clear();
1721  t_trackHitOutMissTID ->clear();
1722  t_trackHitOutMissTOBTEC ->clear();
1723  t_trackHitInMeasTOB ->clear();
1724  t_trackHitInMeasTEC ->clear();
1725  t_trackHitInMeasTIB ->clear();
1726  t_trackHitInMeasTID ->clear();
1727  t_trackHitOutMeasTOB ->clear();
1728  t_trackHitOutMeasTEC ->clear();
1729  t_trackHitOutMeasTIB ->clear();
1730  t_trackHitOutMeasTID ->clear();
1731  t_trackOutPosOutHitDr ->clear();
1732  t_trackL ->clear();
1733 
1734  t_maxNearP31x31 ->clear();
1735  t_maxNearP21x21 ->clear();
1736 
1737  t_ecalSpike11x11 ->clear();
1738  t_e7x7 ->clear();
1739  t_e9x9 ->clear();
1740  t_e11x11 ->clear();
1741  t_e15x15 ->clear();
1742 
1743  t_e7x7_10Sig ->clear();
1744  t_e9x9_10Sig ->clear();
1745  t_e11x11_10Sig ->clear();
1746  t_e15x15_10Sig ->clear();
1747  t_e7x7_15Sig ->clear();
1748  t_e9x9_15Sig ->clear();
1749  t_e11x11_15Sig ->clear();
1750  t_e15x15_15Sig ->clear();
1751  t_e7x7_20Sig ->clear();
1752  t_e9x9_20Sig ->clear();
1753  t_e11x11_20Sig ->clear();
1754  t_e15x15_20Sig ->clear();
1755  t_e7x7_25Sig ->clear();
1756  t_e9x9_25Sig ->clear();
1757  t_e11x11_25Sig ->clear();
1758  t_e15x15_25Sig ->clear();
1759  t_e7x7_30Sig ->clear();
1760  t_e9x9_30Sig ->clear();
1761  t_e11x11_30Sig ->clear();
1762  t_e15x15_30Sig ->clear();
1763 
1764  if (doMC_) {
1765  t_simTrackP ->clear();
1766  t_esimPdgId ->clear();
1767  t_trkEcalEne ->clear();
1768 
1769  t_esim7x7 ->clear();
1770  t_esim9x9 ->clear();
1771  t_esim11x11 ->clear();
1772  t_esim15x15 ->clear();
1773 
1774  t_esim7x7Matched ->clear();
1775  t_esim9x9Matched ->clear();
1776  t_esim11x11Matched ->clear();
1777  t_esim15x15Matched ->clear();
1778 
1779  t_esim7x7Rest ->clear();
1780  t_esim9x9Rest ->clear();
1781  t_esim11x11Rest ->clear();
1782  t_esim15x15Rest ->clear();
1783 
1784  t_esim7x7Photon ->clear();
1785  t_esim9x9Photon ->clear();
1786  t_esim11x11Photon ->clear();
1787  t_esim15x15Photon ->clear();
1788 
1789  t_esim7x7NeutHad ->clear();
1790  t_esim9x9NeutHad ->clear();
1791  t_esim11x11NeutHad ->clear();
1792  t_esim15x15NeutHad ->clear();
1793 
1794  t_esim7x7CharHad ->clear();
1795  t_esim9x9CharHad ->clear();
1796  t_esim11x11CharHad ->clear();
1797  t_esim15x15CharHad ->clear();
1798  }
1799 
1800  t_maxNearHcalP3x3 ->clear();
1801  t_maxNearHcalP5x5 ->clear();
1802  t_maxNearHcalP7x7 ->clear();
1803 
1804  t_h3x3 ->clear();
1805  t_h5x5 ->clear();
1806  t_h7x7 ->clear();
1807  t_h3x3Sig ->clear();
1808  t_h5x5Sig ->clear();
1809  t_h7x7Sig ->clear();
1810 
1811  t_infoHcal ->clear();
1812 
1813  if (doMC_) {
1814  t_trkHcalEne ->clear();
1815 
1816  t_hsim3x3 ->clear();
1817  t_hsim5x5 ->clear();
1818  t_hsim7x7 ->clear();
1819  t_hsim3x3Matched ->clear();
1820  t_hsim5x5Matched ->clear();
1821  t_hsim7x7Matched ->clear();
1822  t_hsim3x3Rest ->clear();
1823  t_hsim5x5Rest ->clear();
1824  t_hsim7x7Rest ->clear();
1825  t_hsim3x3Photon ->clear();
1826  t_hsim5x5Photon ->clear();
1827  t_hsim7x7Photon ->clear();
1828  t_hsim3x3NeutHad ->clear();
1829  t_hsim5x5NeutHad ->clear();
1830  t_hsim7x7NeutHad ->clear();
1831  t_hsim3x3CharHad ->clear();
1832  t_hsim5x5CharHad ->clear();
1833  t_hsim7x7CharHad ->clear();
1834  }
1835 }
1836 
1838 
1839  char hname[100], htit[100];
1840 
1842  TFileDirectory dir = fs->mkdir("nearMaxTrackP");
1843 
1844  for(unsigned int ieta=0; ieta<NEtaBins; ieta++) {
1845  double lowEta=-5.0, highEta= 5.0;
1846  lowEta = genPartEtaBins[ieta];
1847  highEta = genPartEtaBins[ieta+1];
1848 
1849  for(unsigned int ipt=0; ipt<NPBins; ipt++) {
1850  double lowP=0.0, highP=300.0;
1851  lowP = genPartPBins[ipt];
1852  highP = genPartPBins[ipt+1];
1853  sprintf(hname, "h_maxNearP31x31_ptBin%i_etaBin%i",ipt, ieta);
1854  sprintf(htit, "maxNearP in 31x31 (%3.2f<|#eta|<%3.2f), (%2.0f<trkP<%3.0f)", lowEta, highEta, lowP, highP );
1855  h_maxNearP31x31[ipt][ieta] = dir.make<TH1F>(hname, htit, 220, -2.0, 20.0);
1856  h_maxNearP31x31[ipt][ieta] ->Sumw2();
1857  sprintf(hname, "h_maxNearP25x25_ptBin%i_etaBin%i",ipt, ieta);
1858  sprintf(htit, "maxNearP in 25x25 (%3.2f<|#eta|<%3.2f), (%2.0f<trkP<%3.0f)", lowEta, highEta, lowP, highP );
1859  h_maxNearP25x25[ipt][ieta] = dir.make<TH1F>(hname, htit, 220, -2.0, 20.0);
1860  h_maxNearP25x25[ipt][ieta] ->Sumw2();
1861  sprintf(hname, "h_maxNearP21x21_ptBin%i_etaBin%i",ipt, ieta);
1862  sprintf(htit, "maxNearP in 21x21 (%3.2f<|#eta|<%3.2f), (%2.0f<trkP<%3.0f)", lowEta, highEta, lowP, highP );
1863  h_maxNearP21x21[ipt][ieta] = dir.make<TH1F>(hname, htit, 220, -2.0, 20.0);
1864  h_maxNearP21x21[ipt][ieta] ->Sumw2();
1865  sprintf(hname, "h_maxNearP15x15_ptBin%i_etaBin%i",ipt, ieta);
1866  sprintf(htit, "maxNearP in 15x15 (%3.2f<|#eta|<%3.2f), (%2.0f<trkP<%3.0f)", lowEta, highEta, lowP, highP );
1867  h_maxNearP15x15[ipt][ieta] = dir.make<TH1F>(hname, htit, 220, -2.0, 20.0);
1868  h_maxNearP15x15[ipt][ieta] ->Sumw2();
1869  }
1870  }
1871 
1872  h_L1AlgoNames = fs->make<TH1I>("h_L1AlgoNames", "h_L1AlgoNames:Bin Labels", 128, -0.5, 127.5);
1873 
1874  // Reconstructed Tracks
1875 
1876  h_PVTracksWt = fs->make<TH1F>("h_PVTracksWt", "h_PVTracksWt", 600, -0.1, 1.1);
1877 
1878  h_nTracks = fs->make<TH1F>("h_nTracks", "h_nTracks", 1000, -0.5, 999.5);
1879 
1880  sprintf(hname, "h_recEtaPt_0");
1881  sprintf(htit, "h_recEtaPt (all tracks Eta vs pT)");
1882  h_recEtaPt_0 = fs->make<TH2F>(hname, htit, 30, -3.0,3.0, 15, genPartPBins);
1883 
1884  sprintf(hname, "h_recEtaP_0");
1885  sprintf(htit, "h_recEtaP (all tracks Eta vs pT)");
1886  h_recEtaP_0 = fs->make<TH2F>(hname, htit, 30, -3.0,3.0, 15, genPartPBins);
1887 
1888  h_recPt_0 = fs->make<TH1F>("h_recPt_0", "Pt (all tracks)", 15, genPartPBins);
1889  h_recP_0 = fs->make<TH1F>("h_recP_0", "P (all tracks)", 15, genPartPBins);
1890  h_recEta_0 = fs->make<TH1F>("h_recEta_0", "Eta (all tracks)", 60, -3.0, 3.0);
1891  h_recPhi_0 = fs->make<TH1F>("h_recPhi_0", "Phi (all tracks)", 100, -3.2, 3.2);
1892  //-------------------------
1893  sprintf(hname, "h_recEtaPt_1");
1894  sprintf(htit, "h_recEtaPt (all good tracks Eta vs pT)");
1895  h_recEtaPt_1 = fs->make<TH2F>(hname, htit, 30, -3.0,3.0, 15, genPartPBins);
1896 
1897  sprintf(hname, "h_recEtaP_1");
1898  sprintf(htit, "h_recEtaP (all good tracks Eta vs pT)");
1899  h_recEtaP_1 = fs->make<TH2F>(hname, htit, 30, -3.0, 3.0, 15, genPartPBins);
1900 
1901  h_recPt_1 = fs->make<TH1F>("h_recPt_1", "Pt (all good tracks)", 15, genPartPBins);
1902  h_recP_1 = fs->make<TH1F>("h_recP_1", "P (all good tracks)", 15, genPartPBins);
1903  h_recEta_1 = fs->make<TH1F>("h_recEta_1", "Eta (all good tracks)", 60, -3.0, 3.0);
1904  h_recPhi_1 = fs->make<TH1F>("h_recPhi_1", "Phi (all good tracks)", 100, -3.2, 3.2);
1905  //-------------------------
1906  sprintf(hname, "h_recEtaPt_2");
1907  sprintf(htit, "h_recEtaPt (charge isolation Eta vs pT)");
1908  h_recEtaPt_2 = fs->make<TH2F>(hname, htit, 30, -3.0, 3.0, 15, genPartPBins);
1909 
1910  sprintf(hname, "h_recEtaP_2");
1911  sprintf(htit, "h_recEtaP (charge isolation Eta vs pT)");
1912  h_recEtaP_2 = fs->make<TH2F>(hname, htit, 30, -3.0, 3.0, 15, genPartPBins);
1913 
1914  h_recPt_2 = fs->make<TH1F>("h_recPt_2", "Pt (charge isolation)", 15, genPartPBins);
1915  h_recP_2 = fs->make<TH1F>("h_recP_2", "P (charge isolation)", 15, genPartPBins);
1916  h_recEta_2 = fs->make<TH1F>("h_recEta_2", "Eta (charge isolation)", 60, -3.0, 3.0);
1917  h_recPhi_2 = fs->make<TH1F>("h_recPhi_2", "Phi (charge isolation)", 100, -3.2, 3.2);
1918 
1919  tree_ = fs->make<TTree>("tree", "tree");
1920  tree_->SetAutoSave(10000);
1921 
1922  tree_->Branch("t_EvtNo" ,&t_EvtNo ,"t_EvtNo/I");
1923  tree_->Branch("t_RunNo" ,&t_RunNo ,"t_RunNo/I");
1924  tree_->Branch("t_Lumi" ,&t_Lumi ,"t_Lumi/I");
1925  tree_->Branch("t_Bunch" ,&t_Bunch ,"t_Bunch/I");
1926 
1927  t_PVx = new std::vector<double>();
1928  t_PVy = new std::vector<double>();
1929  t_PVz = new std::vector<double>();
1930  t_PVisValid = new std::vector<int>();
1931  t_PVndof = new std::vector<int>();
1932  t_PVNTracks = new std::vector<int>();
1933  t_PVNTracksWt = new std::vector<int>();
1934  t_PVTracksSumPt = new std::vector<double>();
1935  t_PVTracksSumPtWt = new std::vector<double>();
1936  t_PVNTracksHP = new std::vector<int>();
1937  t_PVNTracksHPWt = new std::vector<int>();
1938  t_PVTracksSumPtHP = new std::vector<double>();
1939  t_PVTracksSumPtHPWt = new std::vector<double>();
1940 
1941  tree_->Branch("PVx" ,"std::vector<double>" ,&t_PVx);
1942  tree_->Branch("PVy" ,"std::vector<double>" ,&t_PVy);
1943  tree_->Branch("PVz" ,"std::vector<double>" ,&t_PVz);
1944  tree_->Branch("PVisValid" ,"std::vector<int>" ,&t_PVisValid);
1945  tree_->Branch("PVndof" ,"std::vector<int>" ,&t_PVndof);
1946  tree_->Branch("PVNTracks" ,"std::vector<int>" ,&t_PVNTracks);
1947  tree_->Branch("PVNTracksWt" ,"std::vector<int>" ,&t_PVNTracksWt);
1948  tree_->Branch("t_PVTracksSumPt" ,"std::vector<double>" ,&t_PVTracksSumPt);
1949  tree_->Branch("t_PVTracksSumPtWt" ,"std::vector<double>" ,&t_PVTracksSumPtWt);
1950  tree_->Branch("PVNTracksHP" ,"std::vector<int>" ,&t_PVNTracksHP);
1951  tree_->Branch("PVNTracksHPWt" ,"std::vector<int>" ,&t_PVNTracksHPWt);
1952  tree_->Branch("t_PVTracksSumPtHP" ,"std::vector<double>" ,&t_PVTracksSumPtHP);
1953  tree_->Branch("t_PVTracksSumPtHPWt" ,"std::vector<double>" ,&t_PVTracksSumPtHPWt);
1954 
1955  //----- L1Trigger information
1956  for(int i=0; i<128; i++) t_L1Decision[i]=0;
1957  t_L1AlgoNames = new std::vector<std::string>();
1958  t_L1PreScale = new std::vector<int>();
1959  t_L1CenJetPt = new std::vector<double>();
1960  t_L1CenJetEta = new std::vector<double>();
1961  t_L1CenJetPhi = new std::vector<double>();
1962  t_L1FwdJetPt = new std::vector<double>();
1963  t_L1FwdJetEta = new std::vector<double>();
1964  t_L1FwdJetPhi = new std::vector<double>();
1965  t_L1TauJetPt = new std::vector<double>();
1966  t_L1TauJetEta = new std::vector<double>();
1967  t_L1TauJetPhi = new std::vector<double>();
1968  t_L1MuonPt = new std::vector<double>();
1969  t_L1MuonEta = new std::vector<double>();
1970  t_L1MuonPhi = new std::vector<double>();
1971  t_L1IsoEMPt = new std::vector<double>();
1972  t_L1IsoEMEta = new std::vector<double>();
1973  t_L1IsoEMPhi = new std::vector<double>();
1974  t_L1NonIsoEMPt = new std::vector<double>();
1975  t_L1NonIsoEMEta = new std::vector<double>();
1976  t_L1NonIsoEMPhi = new std::vector<double>();
1977  t_L1METPt = new std::vector<double>();
1978  t_L1METEta = new std::vector<double>();
1979  t_L1METPhi = new std::vector<double>();
1980 
1981  tree_->Branch("t_L1Decision", t_L1Decision, "t_L1Decision[128]/I");
1982  tree_->Branch("t_L1AlgoNames", "std::vector<string>", &t_L1AlgoNames);
1983  tree_->Branch("t_L1PreScale", "std::vector<int>", &t_L1PreScale);
1984  tree_->Branch("t_L1CenJetPt", "std::vector<double>", &t_L1CenJetPt);
1985  tree_->Branch("t_L1CenJetEta", "std::vector<double>", &t_L1CenJetEta);
1986  tree_->Branch("t_L1CenJetPhi", "std::vector<double>", &t_L1CenJetPhi);
1987  tree_->Branch("t_L1FwdJetPt", "std::vector<double>", &t_L1FwdJetPt);
1988  tree_->Branch("t_L1FwdJetEta", "std::vector<double>", &t_L1FwdJetEta);
1989  tree_->Branch("t_L1FwdJetPhi", "std::vector<double>", &t_L1FwdJetPhi);
1990  tree_->Branch("t_L1TauJetPt", "std::vector<double>", &t_L1TauJetPt);
1991  tree_->Branch("t_L1TauJetEta", "std::vector<double>", &t_L1TauJetEta);
1992  tree_->Branch("t_L1TauJetPhi", "std::vector<double>", &t_L1TauJetPhi);
1993  tree_->Branch("t_L1MuonPt", "std::vector<double>", &t_L1MuonPt);
1994  tree_->Branch("t_L1MuonEta", "std::vector<double>", &t_L1MuonEta);
1995  tree_->Branch("t_L1MuonPhi", "std::vector<double>", &t_L1MuonPhi);
1996  tree_->Branch("t_L1IsoEMPt", "std::vector<double>", &t_L1IsoEMPt);
1997  tree_->Branch("t_L1IsoEMEta", "std::vector<double>", &t_L1IsoEMEta);
1998  tree_->Branch("t_L1IsoEMPhi", "std::vector<double>", &t_L1IsoEMPhi);
1999  tree_->Branch("t_L1NonIsoEMPt", "std::vector<double>", &t_L1NonIsoEMPt);
2000  tree_->Branch("t_L1NonIsoEMEta", "std::vector<double>", &t_L1NonIsoEMEta);
2001  tree_->Branch("t_L1NonIsoEMPhi", "std::vector<double>", &t_L1NonIsoEMPhi);
2002  tree_->Branch("t_L1METPt", "std::vector<double>", &t_L1METPt);
2003  tree_->Branch("t_L1METEta", "std::vector<double>", &t_L1METEta);
2004  tree_->Branch("t_L1METPhi", "std::vector<double>", &t_L1METPhi);
2005 
2006  t_jetPt = new std::vector<double>();
2007  t_jetEta = new std::vector<double>();
2008  t_jetPhi = new std::vector<double>();
2009  t_nTrksJetCalo = new std::vector<double>();
2010  t_nTrksJetVtx = new std::vector<double>();
2011  tree_->Branch("t_jetPt", "std::vector<double>",&t_jetPt);
2012  tree_->Branch("t_jetEta", "std::vector<double>",&t_jetEta);
2013  tree_->Branch("t_jetPhi", "std::vector<double>",&t_jetPhi);
2014  tree_->Branch("t_nTrksJetCalo", "std::vector<double>",&t_nTrksJetCalo);
2015  tree_->Branch("t_nTrksJetVtx", "std::vector<double>",&t_nTrksJetVtx);
2016 
2017  t_trackPAll = new std::vector<double>();
2018  t_trackEtaAll = new std::vector<double>();
2019  t_trackPhiAll = new std::vector<double>();
2020  t_trackPdgIdAll = new std::vector<double>();
2021  t_trackPtAll = new std::vector<double>();
2022  t_trackDxyAll = new std::vector<double>();
2023  t_trackDzAll = new std::vector<double>();
2024  t_trackDxyPVAll = new std::vector<double>();
2025  t_trackDzPVAll = new std::vector<double>();
2026  t_trackChiSqAll = new std::vector<double>();
2027  tree_->Branch("t_trackPAll", "std::vector<double>", &t_trackPAll );
2028  tree_->Branch("t_trackPhiAll", "std::vector<double>", &t_trackPhiAll );
2029  tree_->Branch("t_trackEtaAll", "std::vector<double>", &t_trackEtaAll );
2030  tree_->Branch("t_trackPtAll", "std::vector<double>", &t_trackPtAll );
2031  tree_->Branch("t_trackDxyAll", "std::vector<double>", &t_trackDxyAll );
2032  tree_->Branch("t_trackDzAll", "std::vector<double>", &t_trackDzAll );
2033  tree_->Branch("t_trackDxyPVAll", "std::vector<double>", &t_trackDxyPVAll );
2034  tree_->Branch("t_trackDzPVAll", "std::vector<double>", &t_trackDzPVAll );
2035  tree_->Branch("t_trackChiSqAll", "std::vector<double>", &t_trackChiSqAll );
2036  //tree_->Branch("t_trackPdgIdAll", "std::vector<double>", &t_trackPdgIdAll);
2037 
2038  t_trackP = new std::vector<double>();
2039  t_trackPt = new std::vector<double>();
2040  t_trackEta = new std::vector<double>();
2041  t_trackPhi = new std::vector<double>();
2042  t_trackEcalEta = new std::vector<double>();
2043  t_trackEcalPhi = new std::vector<double>();
2044  t_trackHcalEta = new std::vector<double>();
2045  t_trackHcalPhi = new std::vector<double>();
2046  t_trackNOuterHits = new std::vector<int>();
2047  t_NLayersCrossed = new std::vector<int>();
2048  t_trackDxy = new std::vector<double>();
2049  t_trackDxyBS = new std::vector<double>();
2050  t_trackDz = new std::vector<double>();
2051  t_trackDzBS = new std::vector<double>();
2052  t_trackDxyPV = new std::vector<double>();
2053  t_trackDzPV = new std::vector<double>();
2054  t_trackPVIdx = new std::vector<int>();
2055  t_trackChiSq = new std::vector<double>();
2056  t_trackHitsTOB = new std::vector<int>();
2057  t_trackHitsTEC = new std::vector<int>();
2058  t_trackHitInMissTOB = new std::vector<int>();
2059  t_trackHitInMissTEC = new std::vector<int>();
2060  t_trackHitInMissTIB = new std::vector<int>();
2061  t_trackHitInMissTID = new std::vector<int>();
2062  t_trackHitOutMissTOB = new std::vector<int>();
2063  t_trackHitOutMissTEC = new std::vector<int>();
2064  t_trackHitOutMissTIB = new std::vector<int>();
2065  t_trackHitOutMissTID = new std::vector<int>();
2066  t_trackHitInMissTIBTID = new std::vector<int>();
2067  t_trackHitOutMissTOB = new std::vector<int>();
2068  t_trackHitOutMissTEC = new std::vector<int>();
2069  t_trackHitOutMissTIB = new std::vector<int>();
2070  t_trackHitOutMissTID = new std::vector<int>();
2071  t_trackHitOutMissTOBTEC= new std::vector<int>();
2072  t_trackHitInMeasTOB = new std::vector<int>();
2073  t_trackHitInMeasTEC = new std::vector<int>();
2074  t_trackHitInMeasTIB = new std::vector<int>();
2075  t_trackHitInMeasTID = new std::vector<int>();
2076  t_trackHitOutMeasTOB = new std::vector<int>();
2077  t_trackHitOutMeasTEC = new std::vector<int>();
2078  t_trackHitOutMeasTIB = new std::vector<int>();
2079  t_trackHitOutMeasTID = new std::vector<int>();
2080  t_trackOutPosOutHitDr = new std::vector<double>();
2081  t_trackL = new std::vector<double>();
2082 
2083  tree_->Branch("t_trackP", "std::vector<double>", &t_trackP );
2084  tree_->Branch("t_trackPt", "std::vector<double>", &t_trackPt );
2085  tree_->Branch("t_trackEta", "std::vector<double>", &t_trackEta );
2086  tree_->Branch("t_trackPhi", "std::vector<double>", &t_trackPhi );
2087  tree_->Branch("t_trackEcalEta", "std::vector<double>", &t_trackEcalEta );
2088  tree_->Branch("t_trackEcalPhi", "std::vector<double>", &t_trackEcalPhi );
2089  tree_->Branch("t_trackHcalEta", "std::vector<double>", &t_trackHcalEta );
2090  tree_->Branch("t_trackHcalPhi", "std::vector<double>", &t_trackHcalPhi );
2091 
2092  tree_->Branch("t_trackNOuterHits", "std::vector<int>", &t_trackNOuterHits );
2093  tree_->Branch("t_NLayersCrossed", "std::vector<int>", &t_NLayersCrossed );
2094  tree_->Branch("t_trackHitsTOB", "std::vector<int>", &t_trackHitsTOB );
2095  tree_->Branch("t_trackHitsTEC", "std::vector<int>", &t_trackHitsTEC );
2096  tree_->Branch("t_trackHitInMissTOB", "std::vector<int>", &t_trackHitInMissTOB );
2097  tree_->Branch("t_trackHitInMissTEC", "std::vector<int>", &t_trackHitInMissTEC );
2098  tree_->Branch("t_trackHitInMissTIB", "std::vector<int>", &t_trackHitInMissTIB );
2099  tree_->Branch("t_trackHitInMissTID", "std::vector<int>", &t_trackHitInMissTID );
2100  tree_->Branch("t_trackHitInMissTIBTID", "std::vector<int>", &t_trackHitInMissTIBTID );
2101  tree_->Branch("t_trackHitOutMissTOB", "std::vector<int>", &t_trackHitOutMissTOB);
2102  tree_->Branch("t_trackHitOutMissTEC", "std::vector<int>", &t_trackHitOutMissTEC);
2103  tree_->Branch("t_trackHitOutMissTIB", "std::vector<int>", &t_trackHitOutMissTIB);
2104  tree_->Branch("t_trackHitOutMissTID", "std::vector<int>", &t_trackHitOutMissTID);
2105  tree_->Branch("t_trackHitOutMissTOBTEC","std::vector<int>", &t_trackHitOutMissTOBTEC);
2106  tree_->Branch("t_trackHitInMeasTOB", "std::vector<int>", &t_trackHitInMeasTOB );
2107  tree_->Branch("t_trackHitInMeasTEC", "std::vector<int>", &t_trackHitInMeasTEC );
2108  tree_->Branch("t_trackHitInMeasTIB", "std::vector<int>", &t_trackHitInMeasTIB );
2109  tree_->Branch("t_trackHitInMeasTID", "std::vector<int>", &t_trackHitInMeasTID );
2110  tree_->Branch("t_trackHitOutMeasTOB", "std::vector<int>", &t_trackHitOutMeasTOB);
2111  tree_->Branch("t_trackHitOutMeasTEC", "std::vector<int>", &t_trackHitOutMeasTEC);
2112  tree_->Branch("t_trackHitOutMeasTIB", "std::vector<int>", &t_trackHitOutMeasTIB);
2113  tree_->Branch("t_trackHitOutMeasTID", "std::vector<int>", &t_trackHitOutMeasTID);
2114  tree_->Branch("t_trackOutPosOutHitDr", "std::vector<double>", &t_trackOutPosOutHitDr);
2115  tree_->Branch("t_trackL", "std::vector<double>", &t_trackL);
2116 
2117  tree_->Branch("t_trackDxy", "std::vector<double>", &t_trackDxy );
2118  tree_->Branch("t_trackDxyBS", "std::vector<double>", &t_trackDxyBS );
2119  tree_->Branch("t_trackDz", "std::vector<double>", &t_trackDz );
2120  tree_->Branch("t_trackDzBS", "std::vector<double>", &t_trackDzBS );
2121  tree_->Branch("t_trackDxyPV", "std::vector<double>", &t_trackDxyPV );
2122  tree_->Branch("t_trackDzPV", "std::vector<double>", &t_trackDzPV );
2123  tree_->Branch("t_trackChiSq", "std::vector<double>", &t_trackChiSq );
2124  tree_->Branch("t_trackPVIdx", "std::vector<int>", &t_trackPVIdx );
2125 
2126  t_maxNearP31x31 = new std::vector<double>();
2127  t_maxNearP21x21 = new std::vector<double>();
2128 
2129  tree_->Branch("t_maxNearP31x31", "std::vector<double>", &t_maxNearP31x31);
2130  tree_->Branch("t_maxNearP21x21", "std::vector<double>", &t_maxNearP21x21);
2131 
2132  t_ecalSpike11x11 = new std::vector<int>();
2133  t_e7x7 = new std::vector<double>();
2134  t_e9x9 = new std::vector<double>();
2135  t_e11x11 = new std::vector<double>();
2136  t_e15x15 = new std::vector<double>();
2137 
2138  tree_->Branch("t_ecalSpike11x11", "std::vector<int>", &t_ecalSpike11x11);
2139  tree_->Branch("t_e7x7", "std::vector<double>", &t_e7x7);
2140  tree_->Branch("t_e9x9", "std::vector<double>", &t_e9x9);
2141  tree_->Branch("t_e11x11", "std::vector<double>", &t_e11x11);
2142  tree_->Branch("t_e15x15", "std::vector<double>", &t_e15x15);
2143 
2144  t_e7x7_10Sig = new std::vector<double>();
2145  t_e9x9_10Sig = new std::vector<double>();
2146  t_e11x11_10Sig = new std::vector<double>();
2147  t_e15x15_10Sig = new std::vector<double>();
2148  t_e7x7_15Sig = new std::vector<double>();
2149  t_e9x9_15Sig = new std::vector<double>();
2150  t_e11x11_15Sig = new std::vector<double>();
2151  t_e15x15_15Sig = new std::vector<double>();
2152  t_e7x7_20Sig = new std::vector<double>();
2153  t_e9x9_20Sig = new std::vector<double>();
2154  t_e11x11_20Sig = new std::vector<double>();
2155  t_e15x15_20Sig = new std::vector<double>();
2156  t_e7x7_25Sig = new std::vector<double>();
2157  t_e9x9_25Sig = new std::vector<double>();
2158  t_e11x11_25Sig = new std::vector<double>();
2159  t_e15x15_25Sig = new std::vector<double>();
2160  t_e7x7_30Sig = new std::vector<double>();
2161  t_e9x9_30Sig = new std::vector<double>();
2162  t_e11x11_30Sig = new std::vector<double>();
2163  t_e15x15_30Sig = new std::vector<double>();
2164 
2165  tree_->Branch("t_e7x7_10Sig" ,"std::vector<double>", &t_e7x7_10Sig);
2166  tree_->Branch("t_e9x9_10Sig" ,"std::vector<double>", &t_e9x9_10Sig);
2167  tree_->Branch("t_e11x11_10Sig" ,"std::vector<double>", &t_e11x11_10Sig);
2168  tree_->Branch("t_e15x15_10Sig" ,"std::vector<double>", &t_e15x15_10Sig);
2169  tree_->Branch("t_e7x7_15Sig" ,"std::vector<double>", &t_e7x7_15Sig);
2170  tree_->Branch("t_e9x9_15Sig" ,"std::vector<double>", &t_e9x9_15Sig);
2171  tree_->Branch("t_e11x11_15Sig" ,"std::vector<double>", &t_e11x11_15Sig);
2172  tree_->Branch("t_e15x15_15Sig" ,"std::vector<double>", &t_e15x15_15Sig);
2173  tree_->Branch("t_e7x7_20Sig" ,"std::vector<double>", &t_e7x7_20Sig);
2174  tree_->Branch("t_e9x9_20Sig" ,"std::vector<double>", &t_e9x9_20Sig);
2175  tree_->Branch("t_e11x11_20Sig" ,"std::vector<double>", &t_e11x11_20Sig);
2176  tree_->Branch("t_e15x15_20Sig" ,"std::vector<double>", &t_e15x15_20Sig);
2177  tree_->Branch("t_e7x7_25Sig" ,"std::vector<double>", &t_e7x7_25Sig);
2178  tree_->Branch("t_e9x9_25Sig" ,"std::vector<double>", &t_e9x9_25Sig);
2179  tree_->Branch("t_e11x11_25Sig" ,"std::vector<double>", &t_e11x11_25Sig);
2180  tree_->Branch("t_e15x15_25Sig" ,"std::vector<double>", &t_e15x15_25Sig);
2181  tree_->Branch("t_e7x7_30Sig" ,"std::vector<double>", &t_e7x7_30Sig);
2182  tree_->Branch("t_e9x9_30Sig" ,"std::vector<double>", &t_e9x9_30Sig);
2183  tree_->Branch("t_e11x11_30Sig" ,"std::vector<double>", &t_e11x11_30Sig);
2184  tree_->Branch("t_e15x15_30Sig" ,"std::vector<double>", &t_e15x15_30Sig);
2185 
2186  if (doMC_) {
2187  t_esim7x7 = new std::vector<double>();
2188  t_esim9x9 = new std::vector<double>();
2189  t_esim11x11 = new std::vector<double>();
2190  t_esim15x15 = new std::vector<double>();
2191 
2192  t_esim7x7Matched = new std::vector<double>();
2193  t_esim9x9Matched = new std::vector<double>();
2194  t_esim11x11Matched = new std::vector<double>();
2195  t_esim15x15Matched = new std::vector<double>();
2196 
2197  t_esim7x7Rest = new std::vector<double>();
2198  t_esim9x9Rest = new std::vector<double>();
2199  t_esim11x11Rest = new std::vector<double>();
2200  t_esim15x15Rest = new std::vector<double>();
2201 
2202  t_esim7x7Photon = new std::vector<double>();
2203  t_esim9x9Photon = new std::vector<double>();
2204  t_esim11x11Photon = new std::vector<double>();
2205  t_esim15x15Photon = new std::vector<double>();
2206 
2207  t_esim7x7NeutHad = new std::vector<double>();
2208  t_esim9x9NeutHad = new std::vector<double>();
2209  t_esim11x11NeutHad = new std::vector<double>();
2210  t_esim15x15NeutHad = new std::vector<double>();
2211 
2212  t_esim7x7CharHad = new std::vector<double>();
2213  t_esim9x9CharHad = new std::vector<double>();
2214  t_esim11x11CharHad = new std::vector<double>();
2215  t_esim15x15CharHad = new std::vector<double>();
2216 
2217  t_trkEcalEne = new std::vector<double>();
2218  t_simTrackP = new std::vector<double>();
2219  t_esimPdgId = new std::vector<double>();
2220 
2221  tree_->Branch("t_esim7x7", "std::vector<double>", &t_esim7x7);
2222  tree_->Branch("t_esim9x9", "std::vector<double>", &t_esim9x9);
2223  tree_->Branch("t_esim11x11", "std::vector<double>", &t_esim11x11);
2224  tree_->Branch("t_esim15x15", "std::vector<double>", &t_esim15x15);
2225 
2226  tree_->Branch("t_esim7x7Matched", "std::vector<double>", &t_esim7x7Matched);
2227  tree_->Branch("t_esim9x9Matched", "std::vector<double>", &t_esim9x9Matched);
2228  tree_->Branch("t_esim11x11Matched", "std::vector<double>", &t_esim11x11Matched);
2229  tree_->Branch("t_esim15x15Matched", "std::vector<double>", &t_esim15x15Matched);
2230 
2231  tree_->Branch("t_esim7x7Rest", "std::vector<double>", &t_esim7x7Rest);
2232  tree_->Branch("t_esim9x9Rest", "std::vector<double>", &t_esim9x9Rest);
2233  tree_->Branch("t_esim11x11Rest", "std::vector<double>", &t_esim11x11Rest);
2234  tree_->Branch("t_esim15x15Rest", "std::vector<double>", &t_esim15x15Rest);
2235 
2236  tree_->Branch("t_esim7x7Photon", "std::vector<double>", &t_esim7x7Photon);
2237  tree_->Branch("t_esim9x9Photon", "std::vector<double>", &t_esim9x9Photon);
2238  tree_->Branch("t_esim11x11Photon", "std::vector<double>", &t_esim11x11Photon);
2239  tree_->Branch("t_esim15x15Photon", "std::vector<double>", &t_esim15x15Photon);
2240 
2241  tree_->Branch("t_esim7x7NeutHad", "std::vector<double>", &t_esim7x7NeutHad);
2242  tree_->Branch("t_esim9x9NeutHad", "std::vector<double>", &t_esim9x9NeutHad);
2243  tree_->Branch("t_esim11x11NeutHad", "std::vector<double>", &t_esim11x11NeutHad);
2244  tree_->Branch("t_esim15x15NeutHad", "std::vector<double>", &t_esim15x15NeutHad);
2245 
2246  tree_->Branch("t_esim7x7CharHad", "std::vector<double>", &t_esim7x7CharHad);
2247  tree_->Branch("t_esim9x9CharHad", "std::vector<double>", &t_esim9x9CharHad);
2248  tree_->Branch("t_esim11x11CharHad", "std::vector<double>", &t_esim11x11CharHad);
2249  tree_->Branch("t_esim15x15CharHad", "std::vector<double>", &t_esim15x15CharHad);
2250 
2251  tree_->Branch("t_trkEcalEne", "std::vector<double>", &t_trkEcalEne);
2252  tree_->Branch("t_simTrackP", "std::vector<double>", &t_simTrackP);
2253  tree_->Branch("t_esimPdgId", "std::vector<double>", &t_esimPdgId);
2254  }
2255 
2256  t_maxNearHcalP3x3 = new std::vector<double>();
2257  t_maxNearHcalP5x5 = new std::vector<double>();
2258  t_maxNearHcalP7x7 = new std::vector<double>();
2259  t_h3x3 = new std::vector<double>();
2260  t_h5x5 = new std::vector<double>();
2261  t_h7x7 = new std::vector<double>();
2262  t_h3x3Sig = new std::vector<double>();
2263  t_h5x5Sig = new std::vector<double>();
2264  t_h7x7Sig = new std::vector<double>();
2265  t_infoHcal = new std::vector<int>();
2266 
2267  if (doMC_) {
2268  t_trkHcalEne = new std::vector<double>();
2269  t_hsim3x3 = new std::vector<double>();
2270  t_hsim5x5 = new std::vector<double>();
2271  t_hsim7x7 = new std::vector<double>();
2272  t_hsim3x3Matched = new std::vector<double>();
2273  t_hsim5x5Matched = new std::vector<double>();
2274  t_hsim7x7Matched = new std::vector<double>();
2275  t_hsim3x3Rest = new std::vector<double>();
2276  t_hsim5x5Rest = new std::vector<double>();
2277  t_hsim7x7Rest = new std::vector<double>();
2278  t_hsim3x3Photon = new std::vector<double>();
2279  t_hsim5x5Photon = new std::vector<double>();
2280  t_hsim7x7Photon = new std::vector<double>();
2281  t_hsim3x3NeutHad = new std::vector<double>();
2282  t_hsim5x5NeutHad = new std::vector<double>();
2283  t_hsim7x7NeutHad = new std::vector<double>();
2284  t_hsim3x3CharHad = new std::vector<double>();
2285  t_hsim5x5CharHad = new std::vector<double>();
2286  t_hsim7x7CharHad = new std::vector<double>();
2287  }
2288 
2289  tree_->Branch("t_maxNearHcalP3x3", "std::vector<double>", &t_maxNearHcalP3x3);
2290  tree_->Branch("t_maxNearHcalP5x5", "std::vector<double>", &t_maxNearHcalP5x5);
2291  tree_->Branch("t_maxNearHcalP7x7", "std::vector<double>", &t_maxNearHcalP7x7);
2292  tree_->Branch("t_h3x3", "std::vector<double>", &t_h3x3);
2293  tree_->Branch("t_h5x5", "std::vector<double>", &t_h5x5);
2294  tree_->Branch("t_h7x7", "std::vector<double>", &t_h7x7);
2295  tree_->Branch("t_h3x3Sig", "std::vector<double>", &t_h3x3Sig);
2296  tree_->Branch("t_h5x5Sig", "std::vector<double>", &t_h5x5Sig);
2297  tree_->Branch("t_h7x7Sig", "std::vector<double>", &t_h7x7Sig);
2298  tree_->Branch("t_infoHcal", "std::vector<int>", &t_infoHcal);
2299 
2300  if (doMC_) {
2301  tree_->Branch("t_trkHcalEne", "std::vector<double>", &t_trkHcalEne);
2302  tree_->Branch("t_hsim3x3", "std::vector<double>", &t_hsim3x3);
2303  tree_->Branch("t_hsim5x5", "std::vector<double>", &t_hsim5x5);
2304  tree_->Branch("t_hsim7x7", "std::vector<double>", &t_hsim7x7);
2305  tree_->Branch("t_hsim3x3Matched", "std::vector<double>", &t_hsim3x3Matched);
2306  tree_->Branch("t_hsim5x5Matched", "std::vector<double>", &t_hsim5x5Matched);
2307  tree_->Branch("t_hsim7x7Matched", "std::vector<double>", &t_hsim7x7Matched);
2308  tree_->Branch("t_hsim3x3Rest", "std::vector<double>", &t_hsim3x3Rest);
2309  tree_->Branch("t_hsim5x5Rest", "std::vector<double>", &t_hsim5x5Rest);
2310  tree_->Branch("t_hsim7x7Rest", "std::vector<double>", &t_hsim7x7Rest);
2311  tree_->Branch("t_hsim3x3Photon", "std::vector<double>", &t_hsim3x3Photon);
2312  tree_->Branch("t_hsim5x5Photon", "std::vector<double>", &t_hsim5x5Photon);
2313  tree_->Branch("t_hsim7x7Photon", "std::vector<double>", &t_hsim7x7Photon);
2314  tree_->Branch("t_hsim3x3NeutHad", "std::vector<double>", &t_hsim3x3NeutHad);
2315  tree_->Branch("t_hsim5x5NeutHad", "std::vector<double>", &t_hsim5x5NeutHad);
2316  tree_->Branch("t_hsim7x7NeutHad", "std::vector<double>", &t_hsim7x7NeutHad);
2317  tree_->Branch("t_hsim3x3CharHad", "std::vector<double>", &t_hsim3x3CharHad);
2318  tree_->Branch("t_hsim5x5CharHad", "std::vector<double>", &t_hsim5x5CharHad);
2319  tree_->Branch("t_hsim7x7CharHad", "std::vector<double>", &t_hsim7x7CharHad);
2320  }
2321  tree_->Branch("t_nTracks", &t_nTracks, "t_nTracks/I");
2322 
2323 }
2324 
2325 double IsolatedTracksNxN::deltaPhi(double v1, double v2) {
2326  // Computes the correctly normalized phi difference
2327  // v1, v2 = phi of object 1 and 2
2328  double diff = std::abs(v2 - v1);
2329  double corr = 2*M_PI - diff;
2330  return ((diff < M_PI) ? diff : corr);
2331 }
2332 
2333 double IsolatedTracksNxN::deltaR(double eta1, double phi1, double eta2, double phi2) {
2334  double deta = eta1 - eta2;
2335  double dphi = deltaPhi(phi1, phi2);
2336  return std::sqrt(deta*deta + dphi*dphi);
2337 }
2338 
2340 
2341  std::string theTrackQuality = "highPurity";
2342  reco::TrackBase::TrackQuality trackQuality_ = reco::TrackBase::qualityByName(theTrackQuality);
2343 
2344  edm::LogVerbatim("IsoTrack") << " Reference Point " <<pTrack->referencePoint()
2345  << "\n TrackMmentum " << pTrack->momentum()
2346  << " (pt,eta,phi)(" << pTrack->pt() << ","
2347  << pTrack->eta() << "," << pTrack->phi() << ")"
2348  << " p " << pTrack->p() << "\n Normalized chi2 "
2349  << pTrack->normalizedChi2() << " charge "
2350  << pTrack->charge() << " qoverp() "
2351  << pTrack->qoverp() << "+-"
2352  << pTrack->qoverpError() << " d0 "
2353  << pTrack->d0() << "\n NValidHits "
2354  << pTrack->numberOfValidHits() << " NLostHits "
2355  << pTrack->numberOfLostHits() << " TrackQuality "
2356  << pTrack->qualityName(trackQuality_) << " "
2357  << pTrack->quality(trackQuality_);
2358 
2359  if( printTrkHitPattern_ ) {
2360  const reco::HitPattern& p = pTrack->hitPattern();
2361 
2362  edm::LogVerbatim("IsoTrack") << "default ";
2363  for (int i=0; i<p.numberOfAllHits(reco::HitPattern::TRACK_HITS); i++) {
2365  }
2366  edm::LogVerbatim("IsoTrack")<<"trackerMissingInnerHits() ";
2369  }
2370  edm::LogVerbatim("IsoTrack")<<"trackerMissingOuterHits() ";
2373  }
2374 
2375 
2376  edm::LogVerbatim("IsoTrack") << "\n \t trackerLayersWithMeasurement() "
2378  << "\n \t pixelLayersWithMeasurement() "
2380  << "\n \t stripLayersWithMeasurement() "
2382  << "\n \t pixelBarrelLayersWithMeasurement() "
2384  << "\n \t pixelEndcapLayersWithMeasurement() "
2386  << "\n \t stripTIBLayersWithMeasurement() "
2388  << "\n \t stripTIDLayersWithMeasurement() "
2390  << "\n \t stripTOBLayersWithMeasurement() "
2392  << "\n \t stripTECLayersWithMeasurement() "
2394  }
2395 }
2396 
2397 //define this as a plug-in
RunNumber_t run() const
Definition: EventID.h:39
std::vector< double > * t_hsim7x7CharHad
double qoverp() const
q / p
Definition: TrackBase.h:573
static const std::string kSharedResource
Definition: TFileService.h:76
double p() const
momentum vector magnitude
Definition: TrackBase.h:615
std::vector< double > * t_hsim3x3Matched
int stripTOBLayersWithMeasurement() const
Definition: HitPattern.cc:604
std::vector< double > * t_esim7x7CharHad
edm::EDGetTokenT< l1extra::L1JetParticleCollection > tok_L1extCenJet_
const std::string & gtTriggerMenuName() const
std::vector< double > * t_e15x15
value_type const * get() const
Definition: RefToBase.h:234
std::vector< double > * t_nTrksJetCalo
const bool L1TriggerAlgoInfo_
T getParameter(std::string const &) const
EventNumber_t event() const
Definition: EventID.h:41
std::vector< double > * t_maxNearHcalP7x7
double deltaPhi(double v1, double v2)
const Point & referencePoint() const
Reference point on the track.
Definition: TrackBase.h:681
std::vector< double > * t_trackPt
std::vector< double > * t_trackPAll
const bool printTrkHitPattern_
std::vector< double > * t_e7x7
std::vector< double > * t_trackHcalPhi
std::vector< double > * t_trackDxyPVAll
const unsigned int nTracks(const reco::Vertex &sv)
~IsolatedTracksNxN() override
static std::string qualityName(TrackQuality)
Definition: TrackBase.h:532
std::vector< int > * t_trackHitOutMeasTEC
std::vector< double > * t_trackPdgIdAll
std::vector< spr::propagatedTrackID > propagateCALO(edm::Handle< reco::TrackCollection > &trkCollection, const CaloGeometry *geo, const MagneticField *bField, std::string &theTrackQuality, bool debug=false)
void eCaloSimInfo(std::vector< DetId > vdets, const CaloGeometry *geo, edm::Handle< T > &hitsEB, edm::Handle< T > &hitsEE, edm::Handle< edm::SimTrackContainer > &SimTk, edm::Handle< edm::SimVertexContainer > &SimVtx, edm::SimTrackContainer::const_iterator trkInfo, caloSimInfo &info, double timeCut=150, bool debug=false)
std::vector< double > * t_trackOutPosOutHitDr
std::vector< double > * t_maxNearHcalP5x5
std::vector< double > * t_L1NonIsoEMPt
std::vector< int > * t_trackHitOutMeasTIB
std::vector< double > * t_esim7x7
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
std::vector< int > * t_trackHitInMissTOB
std::vector< double > * t_trackDz
double d0() const
dxy parameter in perigee convention (d0 = -dxy)
Definition: TrackBase.h:597
std::map< std::string, double > eHCALSimInfo(const edm::Event &, const HcalTopology *topology, const DetId &det, const CaloGeometry *geo, edm::Handle< T > &hits, edm::Handle< edm::SimTrackContainer > &SimTk, edm::Handle< edm::SimVertexContainer > &SimVtx, const reco::Track *pTrack, TrackerHitAssociator &associate, int ieta, int iphi, double timeCut=150, bool includeHO=false, bool debug=false)
std::vector< double > * t_trackEcalEta
int stripTIBLayersWithMeasurement() const
Definition: HitPattern.cc:582
double normalizedChi2() const
chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
Definition: TrackBase.h:561
std::vector< double > * t_trackEtaAll
std::map< std::pair< unsigned int, std::string >, int > l1AlgoMap_
std::vector< double > * t_esim11x11Matched
std::vector< double > * t_L1IsoEMEta
std::vector< double > * t_PVTracksSumPt
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
std::vector< double > * t_e9x9_10Sig
TH1F * h_maxNearP25x25[NPBins][NEtaBins]
TrackQuality
track quality
Definition: TrackBase.h:151
std::vector< double > * t_hsim3x3CharHad
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
int stripTOBLayersWithoutMeasurement(HitCategory category) const
Definition: HitPattern.cc:672
std::vector< int > * t_PVndof
std::map< std::string, L1GtAlgorithm > AlgorithmMap
map containing the algorithms
std::vector< double > * t_hsim7x7Rest
std::vector< double > * t_L1TauJetPhi
std::vector< double > * t_PVTracksSumPtWt
const bool availableL1Configuration(int &errorCode, int &l1ConfCode) const
Definition: L1GtUtils.cc:1948
std::vector< int > * t_infoHcal
std::vector< double > * t_e11x11_15Sig
std::vector< double > * t_L1TauJetPt
std::vector< int > * t_PVNTracksWt
std::vector< double > * t_trackEcalPhi
std::vector< double > * t_esim11x11NeutHad
std::vector< double > * t_L1TauJetEta
std::vector< double > * t_e15x15_15Sig
std::vector< double > * t_L1MuonEta
std::vector< double > * t_L1MuonPt
static size_t nL1BitsMax
double eHCALmatrix(const HcalTopology *topology, const DetId &det, edm::Handle< T > &hits, int ieta, int iphi, bool includeHO=false, bool algoNew=true, double hbThr=-100, double heThr=-100, double hfThr=-100, double hoThr=-100, double tMin=-500, double tMax=500, bool useRaw=false, bool debug=false)
int bunchCrossing() const
Definition: EventBase.h:66
std::vector< double > * t_h3x3
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:63
std::vector< double > * t_L1MuonPhi
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:645
unsigned short numberOfLostHits() const
number of cases where track crossed a layer without getting a hit.
Definition: TrackBase.h:826
const bool decision(const edm::Event &iEvent, const std::string &nameAlgoTechTrig, int &errorCode) const
Definition: L1GtUtils.cc:1208
Definition: weight.py:1
std::vector< double > * t_trackDxyAll
T * make(const Args &...args) const
make new ROOT object
Definition: TFileService.h:64
std::vector< double > * t_maxNearHcalP3x3
IsolatedTracksNxN(const edm::ParameterSet &)
edm::EDGetTokenT< edm::SimVertexContainer > tok_simVtx_
std::vector< double > * t_hsim3x3Photon
edm::EDGetTokenT< reco::BeamSpot > tok_bs_
int pixelLayersWithMeasurement() const
Definition: HitPattern.cc:499
const Vector & momentum() const
track momentum vector
Definition: TrackBase.h:675
#define nullptr
std::vector< double > * t_PVTracksSumPtHP
const math::XYZPoint & outerPosition() const
position of the outermost hit
Definition: Track.h:65
std::vector< double > * t_esim11x11Rest
int trackerLayersWithMeasurement() const
Definition: HitPattern.cc:518
int pixelEndcapLayersWithMeasurement() const
Definition: HitPattern.cc:570
#define constexpr
const double maxTrackEta_
std::vector< int > * t_trackNOuterHits
std::vector< double > * t_h7x7Sig
std::vector< double > * t_e15x15_30Sig
std::vector< double > * t_trackPhiAll
std::vector< double > * t_e7x7_25Sig
double genPartPBins[NPBins+1]
std::vector< double > * t_trkHcalEne
double deltaR(double eta1, double phi1, double eta2, double phi2)
std::vector< double > * t_e7x7_20Sig
std::vector< double > * t_e11x11_10Sig
AlgorithmMap::const_iterator CItAlgo
iterators through map containing the algorithms
std::vector< double > * t_trackPtAll
std::vector< double > * t_h3x3Sig
static size_t NEtaBins
std::vector< double > * t_esimPdgId
double eNeutralHad
Definition: CaloSimInfo.h:47
void printHitPattern(HitCategory category, int position, std::ostream &stream) const
Definition: HitPattern.cc:832
double eChargedHad
Definition: CaloSimInfo.h:48
std::vector< double > * t_e11x11_20Sig
std::vector< double > * t_jetEta
std::vector< double > * t_maxNearP31x31
std::vector< int > * t_trackHitInMissTEC
double chargeIsolationEcal(unsigned int trkIndex, std::vector< spr::propagatedTrackID > &vdetIds, const CaloGeometry *geo, const CaloTopology *caloTopology, int ieta, int iphi, bool debug=false)
std::vector< double > * t_trkEcalEne
int iEvent
Definition: GenABIO.cc:230
std::vector< double > * t_trackEta
std::vector< double > * t_esim9x9Photon
std::vector< int > * t_trackHitInMeasTID
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:651
std::vector< double > * t_hsim5x5Rest
std::vector< double > * t_e11x11
std::vector< double > * t_esim15x15
edm::EDGetTokenT< edm::SimTrackContainer > tok_simTk_
std::vector< double > * t_L1CenJetPt
std::vector< double > * t_trackChiSqAll
std::vector< double > * t_e15x15_25Sig
std::vector< int > * t_trackHitOutMissTIB
edm::EDGetTokenT< edm::PCaloHitContainer > tok_caloHH_
std::vector< double > * t_esim15x15Rest
std::vector< double > * t_esim11x11
std::vector< double > * t_hsim7x7
std::vector< int > * t_PVNTracksHPWt
int stripTIDLayersWithMeasurement() const
Definition: HitPattern.cc:593
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
T sqrt(T t)
Definition: SSEVec.h:18
std::vector< int > * t_trackHitOutMissTID
std::vector< int > * t_trackHitOutMissTOBTEC
vector< PseudoJet > jets
double pt() const
track transverse momentum
Definition: TrackBase.h:621
std::vector< int > * t_trackHitsTEC
std::vector< double > * t_e9x9_30Sig
edm::EDGetTokenT< edm::PCaloHitContainer > tok_caloEB_
std::vector< double > * t_L1CenJetPhi
int numberOfAllHits(HitCategory category) const
Definition: HitPattern.h:807
std::vector< double > * t_L1FwdJetEta
std::vector< double > * t_h7x7
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
void analyze(const edm::Event &, const edm::EventSetup &) override
std::vector< int > * t_ecalSpike11x11
std::vector< double > * t_esim15x15NeutHad
std::vector< double > * t_e9x9_20Sig
std::vector< int > * t_trackHitOutMeasTOB
std::vector< int > * t_trackHitInMeasTIB
edm::SimTrackContainer::const_iterator matchedSimTrack(const edm::Event &iEvent, edm::Handle< edm::SimTrackContainer > &SimTk, edm::Handle< edm::SimVertexContainer > &SimVtx, const reco::Track *pTrack, TrackerHitAssociator &associate, bool debug=false)
unsigned short numberOfValidHits() const
number of valid hits found
Definition: TrackBase.h:820
edm::EDGetTokenT< reco::TrackCollection > tok_genTrack_
T * make(const Args &...args) const
make new ROOT object
std::vector< double > * t_trackDzPV
std::vector< int > * t_PVNTracksHP
std::vector< double > * t_L1FwdJetPhi
edm::EDGetTokenT< l1extra::L1JetParticleCollection > tok_L1extFwdJet_
edm::EDGetTokenT< l1extra::L1EmParticleCollection > tok_L1extIsoEm_
ParameterDescriptionBase * add(U const &iLabel, T const &value)
std::vector< double > * t_nTrksJetVtx
bool isValid() const
Definition: HandleBase.h:74
std::vector< double > * t_esim7x7NeutHad
std::vector< double > * t_hsim3x3NeutHad
std::vector< double > * t_L1NonIsoEMPhi
std::vector< double > * t_trackDzBS
std::vector< int > * t_trackHitOutMissTOB
std::vector< double > * t_L1CenJetEta
std::vector< double > * t_trackDzPVAll
JetCorrectorParameters corr
Definition: classes.h:5
edm::EDGetTokenT< l1extra::L1MuonParticleCollection > tok_L1extMu_
ii
Definition: cuy.py:588
#define M_PI
std::vector< double > * t_esim7x7Matched
std::vector< double > * t_esim9x9
std::vector< double > * t_hsim5x5
std::vector< double > * t_h5x5
double qoverpError() const
error on signed transverse curvature
Definition: TrackBase.h:757
std::vector< double > * t_trackDxyPV
std::vector< double > * t_hsim5x5NeutHad
std::vector< double > * t_trackChiSq
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
Definition: TrackBase.h:609
std::vector< double > * t_hsim5x5Photon
std::vector< double > * t_PVy
std::vector< unsigned int > m_triggerMaskAlgoTrig
std::vector< int > * t_L1PreScale
std::vector< double > * t_hsim3x3Rest
int stripTIDLayersWithoutMeasurement(HitCategory category) const
Definition: HitPattern.cc:661
Definition: DetId.h:18
std::vector< int > * t_PVisValid
static TrackQuality qualityByName(const std::string &name)
Definition: TrackBase.cc:125
std::vector< double > * t_esim9x9Rest
std::vector< double > * t_L1METPhi
std::vector< int > * t_trackHitInMissTIB
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
Definition: TFileService.h:69
std::vector< double > * t_e9x9_15Sig
std::vector< double > * t_e7x7_15Sig
std::vector< double > * t_trackPhi
T const * product() const
Definition: Handle.h:81
std::vector< double > * t_e7x7_10Sig
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
Definition: TrackBase.h:446
void endJob() override
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
const double pvTracksPtMin_
edm::EDGetTokenT< l1extra::L1EmParticleCollection > tok_L1extNoIsoEm_
std::vector< double > * t_trackDzAll
edm::EDGetTokenT< reco::VertexCollection > tok_recVtx_
TH1F * h_maxNearP31x31[NPBins][NEtaBins]
std::vector< double > * t_esim11x11CharHad
const T & get() const
Definition: EventSetup.h:58
int stripLayersWithMeasurement() const
Definition: HitPattern.h:1035
int pixelBarrelLayersWithMeasurement() const
Definition: HitPattern.cc:558
edm::EDGetTokenT< edm::PCaloHitContainer > tok_caloEE_
edm::EDGetTokenT< EcalRecHitCollection > tok_EB_
TH1F * h_maxNearP15x15[NPBins][NEtaBins]
void add(std::string const &label, ParameterSetDescription const &psetDescription)
std::vector< double > * t_e9x9_25Sig
void eECALSimInfo(const edm::Event &, const DetId &det, const CaloGeometry *geo, const CaloTopology *caloTopology, edm::Handle< T > &hitsEB, edm::Handle< T > &hitsEE, edm::Handle< edm::SimTrackContainer > &SimTk, edm::Handle< edm::SimVertexContainer > &SimVtx, const reco::Track *pTrack, TrackerHitAssociator &associate, int ieta, int iphi, caloSimInfo &info, double timeCut=150, bool debug=false)
std::vector< double > * t_esim7x7Photon
static const bool useL1GtTriggerMenuLite(true)
std::vector< double > * t_esim9x9NeutHad
std::vector< double > * t_L1FwdJetPt
std::vector< double > * t_simTrackP
std::vector< double > * t_hsim7x7Matched
std::vector< int > * t_trackPVIdx
bool quality(const TrackQuality) const
Track quality.
Definition: TrackBase.h:510
std::vector< int > * t_trackHitsTOB
std::vector< double > * t_esim9x9Matched
std::vector< double > * t_hsim7x7NeutHad
std::vector< double > * t_L1IsoEMPhi
std::vector< int > * t_PVNTracks
edm::EDGetTokenT< HBHERecHitCollection > tok_hbhe_
std::vector< double > * t_maxNearP21x21
TrackerHitAssociator::Config trackerHitAssociatorConfig_
edm::EventID id() const
Definition: EventBase.h:60
std::vector< double > * t_L1NonIsoEMEta
double p1[4]
Definition: TauolaWrapper.h:89
std::vector< double > * t_PVz
std::pair< math::XYZPoint, double > propagateTrackerEnd(const reco::Track *, const MagneticField *, bool debug=false)
void printTrack(const reco::Track *pTrack)
std::vector< double > * t_e15x15_20Sig
void getL1GtRunCache(const edm::Run &, const edm::EventSetup &, const bool, const bool)
get all the run-constant quantities for L1 trigger and cache them
Definition: L1GtUtils.cc:319
std::vector< double > * t_PVTracksSumPtHPWt
std::vector< double > * t_trackDxy
std::vector< std::string > * t_L1AlgoNames
std::vector< double > * t_hsim5x5CharHad
std::vector< double > * t_e15x15_10Sig
const AlgorithmMap & gtAlgorithmMap() const
get / set the algorithm map (by name)
int stripTECLayersWithMeasurement() const
Definition: HitPattern.cc:615
std::vector< TrackBaseRef >::const_iterator trackRef_iterator
The iteratator for the vector<TrackRef>
Definition: Vertex.h:37
TH1F * h_maxNearP21x21[NPBins][NEtaBins]
int stripTECLayersWithoutMeasurement(HitCategory category) const
Definition: HitPattern.cc:683
std::vector< double > * t_jetPhi
std::vector< double > * t_trackL
std::vector< double > * t_esim7x7Rest
std::vector< double > * t_trackDxyBS
int charge() const
track electric charge
Definition: TrackBase.h:567
const Point & position() const
position
Definition: BeamSpot.h:62
std::vector< double > * t_trackHcalEta
std::vector< double > * t_L1METPt
dbl *** dir
Definition: mlp_gen.cc:35
std::vector< int > * t_NLayersCrossed
edm::EDGetTokenT< reco::CaloJetCollection > tok_jets_
std::vector< std::pair< DetId, double > > eHCALmatrixCell(const HcalTopology *topology, const DetId &det, edm::Handle< T > &hits, int ieta, int iphi, bool includeHO=false, double hbThr=-100, double heThr=-100, double hfThr=-100, double hoThr=-100, bool debug=false)
std::vector< int > * t_trackHitInMeasTOB
std::vector< double > * t_PVx
std::vector< int > * t_trackHitInMeasTEC
void beginJob() override
std::vector< double > * t_esim15x15Photon
std::vector< double > * t_e9x9
std::vector< double > * t_hsim5x5Matched
const L1GtTriggerMenu * ptrL1TriggerMenuEventSetup(int &errorCode)
return a pointer to the L1 trigger menu from event setup
Definition: L1GtUtils.cc:1883
double genPartEtaBins[NEtaBins+1]
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
Definition: TrackBase.h:591
std::vector< double > * t_esim15x15Matched
double chargeIsolationHcal(unsigned int trkIndex, std::vector< spr::propagatedTrackID > &vdetIds, const HcalTopology *topology, int ieta, int iphi, bool debug=false)
std::vector< int > * t_trackHitOutMeasTID
std::vector< double > * t_L1METEta
std::vector< double > * t_e7x7_30Sig
T const * product() const
Definition: ESHandle.h:86
std::vector< int > * t_trackHitOutMissTEC
std::vector< double > * t_e11x11_25Sig
std::vector< double > * t_hsim3x3
std::vector< double > * t_trackP
std::vector< double > * t_hsim7x7Photon
std::vector< double > * t_jetPt
static const bool useL1EventSetup(true)
std::vector< double > * t_L1IsoEMPt
std::vector< double > * t_esim11x11Photon
int stripTIBLayersWithoutMeasurement(HitCategory category) const
Definition: HitPattern.cc:650
std::vector< double > * t_h5x5Sig
std::vector< int > * t_trackHitInMissTID
std::vector< double > * t_e11x11_30Sig
std::vector< int > * t_trackHitInMissTIBTID
std::vector< double > * t_esim9x9CharHad
double eECALmatrix(const DetId &detId, edm::Handle< T > &hitsEB, edm::Handle< T > &hitsEE, const CaloGeometry *geo, const CaloTopology *caloTopology, int ieta, int iphi, double ebThr=-100, double eeThr=-100, double tMin=-500, double tMax=500, bool debug=false)
edm::EDGetTokenT< EcalRecHitCollection > tok_EE_
edm::EDGetTokenT< l1extra::L1JetParticleCollection > tok_L1extTauJet_
std::vector< double > * t_esim15x15CharHad
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
const int prescaleFactor(const edm::Event &iEvent, const std::string &nameAlgoTechTrig, int &errorCode) const
return prescale factor for a given algorithm or technical trigger
Definition: L1GtUtils.cc:1223