CMS 3D CMS Logo

IsolatedGenParticles.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: IsolatedGenParticles
4 // Class: IsolatedGenParticles
5 //
13 //
14 // Original Author: Seema Sharma
15 // Created: Tue Oct 27 09:46:41 CDT 2009
16 //
17 //
18 
21 
27 
30 
33 #include <iostream>
34 #include <iomanip>
35 #include <list>
36 #include <vector>
37 #include <cmath>
38 
41 
43 
46 
48 
49  genSrc_ = iConfig.getUntrackedParameter("GenSrc",std::string("generatorSmeared"));
50 
51  tok_hepmc_ = consumes<edm::HepMCProduct>(edm::InputTag(genSrc_));
52  tok_genParticles_ = consumes<reco::GenParticleCollection>(edm::InputTag(genSrc_));
53 
54  useHepMC = iConfig.getUntrackedParameter<bool>("UseHepMC", false );
55  pSeed = iConfig.getUntrackedParameter<double>("ChargedHadronSeedP", 1.0);
56  ptMin = iConfig.getUntrackedParameter<double>("PTMin", 1.0);
57  etaMax = iConfig.getUntrackedParameter<double>("MaxChargedHadronEta", 2.5);
58  a_coneR = iConfig.getUntrackedParameter<double>("ConeRadius",34.98);
59  a_charIsoR = a_coneR + 28.9;
60  a_neutIsoR = a_charIsoR*0.726;
61  a_mipR = iConfig.getUntrackedParameter<double>("ConeRadiusMIP",14.0);
62  a_Isolation= iConfig.getUntrackedParameter<bool>("UseConeIsolation",false);
63  pCutIsolate= iConfig.getUntrackedParameter<double>("PMaxIsolation",20.0);
64  verbosity = iConfig.getUntrackedParameter<int>("Verbosity", 0);
65 
66  debugL1Info_ = iConfig.getUntrackedParameter<bool>( "DebugL1Info", false );
67 
68  edm::InputTag L1extraTauJetSource_ = iConfig.getParameter<edm::InputTag>("L1extraTauJetSource");
69  edm::InputTag L1extraCenJetSource_ = iConfig.getParameter<edm::InputTag>("L1extraCenJetSource");
70  edm::InputTag L1extraFwdJetSource_ = iConfig.getParameter<edm::InputTag>("L1extraFwdJetSource");
71  edm::InputTag L1extraMuonSource_ = iConfig.getParameter<edm::InputTag>("L1extraMuonSource");
72  edm::InputTag L1extraIsoEmSource_ = iConfig.getParameter<edm::InputTag>("L1extraIsoEmSource");
73  edm::InputTag L1extraNonIsoEmSource_ = iConfig.getParameter<edm::InputTag>("L1extraNonIsoEmSource");
74  edm::InputTag L1GTReadoutRcdSource_ = iConfig.getParameter<edm::InputTag>("L1GTReadoutRcdSource");
75  edm::InputTag L1GTObjectMapRcdSource_= iConfig.getParameter<edm::InputTag>("L1GTObjectMapRcdSource");
76  tok_L1GTrorsrc_ = consumes<L1GlobalTriggerReadoutRecord>(L1GTReadoutRcdSource_);
77  tok_L1GTobjmap_ = consumes<L1GlobalTriggerObjectMapRecord>(L1GTObjectMapRcdSource_);
78  tok_L1extMusrc_ = consumes<l1extra::L1MuonParticleCollection>(L1extraMuonSource_);
79  tok_L1Em_ = consumes<l1extra::L1EmParticleCollection>(L1extraIsoEmSource_);
80  tok_L1extNonIsoEm_= consumes<l1extra::L1EmParticleCollection>(L1extraNonIsoEmSource_);
81  tok_L1extTauJet_ = consumes<l1extra::L1JetParticleCollection>(L1extraTauJetSource_);
82  tok_L1extCenJet_ = consumes<l1extra::L1JetParticleCollection>(L1extraCenJetSource_);
83  tok_L1extFwdJet_ = consumes<l1extra::L1JetParticleCollection>(L1extraFwdJetSource_);
84 
85  if (!strcmp("Dummy", genSrc_.c_str())) {
86  if (useHepMC) genSrc_ = "generatorSmeared";
87  else genSrc_ = "genParticles";
88  }
89  std::cout << "Generator Source " << genSrc_ << " Use HepMC " << useHepMC
90  << " pSeed " << pSeed << " ptMin " << ptMin << " etaMax " << etaMax
91  << "\n a_coneR " << a_coneR << " a_charIsoR " << a_charIsoR
92  << " a_neutIsoR " << a_neutIsoR << " a_mipR " << a_mipR
93  << " debug " << verbosity << " debugL1Info " << debugL1Info_ << "\n"
94  << " Isolation Flag " << a_Isolation << " with cut "
95  << pCutIsolate << " GeV"
96  << std::endl;
97 }
98 
100 
101 }
102 
104 
106 
107  nEventProc++;
108 
110  iSetup.get<IdealMagneticFieldRecord>().get(bFieldH);
111  bField = bFieldH.product();
112 
113  // get particle data table
115  iSetup.getData(pdt);
116 
117  // get handle to HEPMCProduct
120  if (useHepMC) iEvent.getByToken(tok_hepmc_, hepmc);
121  else iEvent.getByToken(tok_genParticles_, genParticles);
122 
124  iSetup.get<CaloGeometryRecord>().get(pG);
125  const CaloGeometry* geo = pG.product();
126 
127  edm::ESHandle<CaloTopology> theCaloTopology;
128  iSetup.get<CaloTopologyRecord>().get(theCaloTopology);
129  const CaloTopology *caloTopology = theCaloTopology.product();
130 
132  iSetup.get<HcalRecNumberingRecord>().get(htopo);
133  const HcalTopology* theHBHETopology = htopo.product();
134 
135  //===================== save L1 Trigger information =======================
136  // get L1TriggerReadout records
138  iEvent.getByToken(tok_L1GTrorsrc_, gtRecord);
139 
141  iEvent.getByToken(tok_L1GTobjmap_, gtOMRec);
142 
143  // sanity check on L1 Trigger Records
144  if (!gtRecord.isValid()) {
145  std::cout << "\nL1GlobalTriggerReadoutRecord with \n \nnot found"
146  "\n --> returning false by default!\n" << std::endl;
147  }
148  if (!gtOMRec.isValid()) {
149  std::cout << "\nL1GlobalTriggerObjectMapRecord with \n \nnot found"
150  "\n --> returning false by default!\n" << std::endl;
151  }
152 
153  // L1 decision word
154  const DecisionWord dWord = gtRecord->decisionWord();
155  unsigned int numberTriggerBits= dWord.size();
156 
157  // just print the L1Bit number and AlgoName in first event
158  if ( !initL1){
159  initL1=true;
160  std::cout << "\n Number of Trigger bits " << numberTriggerBits << "\n\n";
161  std::cout << "\tBit \t L1 Algorithm " << std::endl;
162 
163  // get ObjectMaps from ObjectMapRecord
164  const std::vector<L1GlobalTriggerObjectMap>& objMapVec = gtOMRec->gtObjectMap();
165  for (std::vector<L1GlobalTriggerObjectMap>::const_iterator itMap = objMapVec.begin();
166  itMap != objMapVec.end(); ++itMap) {
167 
168  // Get trigger bits
169  int itrig = (*itMap).algoBitNumber();
170 
171  // Get trigger names
172  algoBitToName[itrig] = (*itMap).algoName();
173 
174  std::cout << "\t" << itrig << "\t" << algoBitToName[itrig] << std::endl;
175 
176  // store the algoNames as bin labels of a histogram
177  h_L1AlgoNames->GetXaxis()->SetBinLabel(itrig+1, algoBitToName[itrig].c_str());
178 
179  } // end of for loop
180  } // end of initL1
181 
182  // save L1 decision for each event
183  for (unsigned int iBit = 0; iBit < numberTriggerBits; ++iBit) {
184  bool accept = dWord[iBit];
185  t_L1Decision->push_back(accept);
186  // fill the trigger map
187  if(debugL1Info_) std::cout << "Bit " << iBit << " " << algoBitToName[iBit] << " " << accept << std::endl;
188 
189  if(accept) h_L1AlgoNames->Fill(iBit);
190  }
191 
192  //===================
193  // L1Taus
195  iEvent.getByToken(tok_L1extTauJet_,l1TauHandle);
196  l1extra::L1JetParticleCollection::const_iterator itr;
197  for(itr = l1TauHandle->begin(); itr != l1TauHandle->end(); ++itr ) {
198  t_L1TauJetPt ->push_back( itr->pt() );
199  t_L1TauJetEta ->push_back( itr->eta() );
200  t_L1TauJetPhi ->push_back( itr->phi() );
201  if(debugL1Info_) {
202  std::cout << "tauJ p/pt " << itr->momentum() << " " << itr->pt()
203  << " eta/phi " << itr->eta() << " " << itr->phi()
204  << std::endl;
205  }
206  }
207 
208  // L1 Central Jets
210  iEvent.getByToken(tok_L1extCenJet_,l1CenJetHandle);
211  for( itr = l1CenJetHandle->begin(); itr != l1CenJetHandle->end(); ++itr ) {
212  t_L1CenJetPt ->push_back( itr->pt() );
213  t_L1CenJetEta ->push_back( itr->eta() );
214  t_L1CenJetPhi ->push_back( itr->phi() );
215  if(debugL1Info_) {
216  std::cout << "cenJ p/pt " << itr->momentum() << " " << itr->pt()
217  << " eta/phi " << itr->eta() << " " << itr->phi()
218  << std::endl;
219  }
220  }
221  // L1 Forward Jets
223  iEvent.getByToken(tok_L1extFwdJet_,l1FwdJetHandle);
224  for( itr = l1FwdJetHandle->begin(); itr != l1FwdJetHandle->end(); ++itr ) {
225  t_L1FwdJetPt ->push_back( itr->pt() );
226  t_L1FwdJetEta ->push_back( itr->eta() );
227  t_L1FwdJetPhi ->push_back( itr->phi() );
228  if(debugL1Info_) {
229  std::cout << "fwdJ p/pt " << itr->momentum() << " " << itr->pt()
230  << " eta/phi " << itr->eta() << " " << itr->phi()
231  << std::endl;
232  }
233  }
234  // L1 Isolated EM onjects
235  l1extra::L1EmParticleCollection::const_iterator itrEm;
237  iEvent.getByToken(tok_L1Em_, l1IsoEmHandle);
238  for( itrEm = l1IsoEmHandle->begin(); itrEm != l1IsoEmHandle->end(); ++itrEm ) {
239  t_L1IsoEMPt ->push_back( itrEm->pt() );
240  t_L1IsoEMEta ->push_back( itrEm->eta() );
241  t_L1IsoEMPhi ->push_back( itrEm->phi() );
242  if(debugL1Info_) {
243  std::cout << "isoEm p/pt " << itrEm->momentum() << " " << itrEm->pt()
244  << " eta/phi " << itrEm->eta() << " " << itrEm->phi()
245  << std::endl;
246  }
247  }
248  // L1 Non-Isolated EM onjects
250  iEvent.getByToken(tok_L1extNonIsoEm_, l1NonIsoEmHandle);
251  for( itrEm = l1NonIsoEmHandle->begin(); itrEm != l1NonIsoEmHandle->end(); ++itrEm ) {
252  t_L1NonIsoEMPt ->push_back( itrEm->pt() );
253  t_L1NonIsoEMEta ->push_back( itrEm->eta() );
254  t_L1NonIsoEMPhi ->push_back( itrEm->phi() );
255  if(debugL1Info_) {
256  std::cout << "nonIsoEm p/pt " << itrEm->momentum() << " " << itrEm->pt()
257  << " eta/phi " << itrEm->eta() << " " << itrEm->phi()
258  << std::endl;
259  }
260  }
261 
262  // L1 Muons
263  l1extra::L1MuonParticleCollection::const_iterator itrMu;
265  iEvent.getByToken(tok_L1extMusrc_, l1MuHandle);
266  for( itrMu = l1MuHandle->begin(); itrMu != l1MuHandle->end(); ++itrMu ) {
267  t_L1MuonPt ->push_back( itrMu->pt() );
268  t_L1MuonEta ->push_back( itrMu->eta() );
269  t_L1MuonPhi ->push_back( itrMu->phi() );
270  if(debugL1Info_) {
271  std::cout << "l1muon p/pt " << itrMu->momentum() << " " << itrMu->pt()
272  << " eta/phi " << itrMu->eta() << " " << itrMu->phi()
273  << std::endl;
274  }
275  }
276  //=====================================================================
277 
278  GlobalPoint posVec, posECAL;
280  if (verbosity>0) std::cout << "event number " << iEvent.id().event() <<std::endl;
281  if (useHepMC) {
282  const HepMC::GenEvent *myGenEvent = hepmc->GetEvent();
283  std::vector<spr::propagatedGenTrackID> trackIDs = spr::propagateCALO(myGenEvent, pdt, geo, bField, etaMax, false);
284 
285  for (unsigned int indx=0; indx<trackIDs.size(); ++indx) {
286  int charge = trackIDs[indx].charge;
287  HepMC::GenEvent::particle_const_iterator p = trackIDs[indx].trkItr;
288  momVec = math::XYZTLorentzVector((*p)->momentum().px(), (*p)->momentum().py(), (*p)->momentum().pz(), (*p)->momentum().e());
289  if (verbosity>1) std::cout << "trkIndx " << indx << " pdgid " << trackIDs[indx].pdgId << " charge " << charge << " momVec " << momVec << std::endl;
290  // only stable particles avoiding electrons and muons
291  if (trackIDs[indx].ok && (std::abs(trackIDs[indx].pdgId)<11 ||
292  std::abs(trackIDs[indx].pdgId)>=21)) {
293  // consider particles within a phased space
294  if (momVec.Pt() > ptMin && std::abs(momVec.eta()) < etaMax) {
295  posVec = GlobalPoint(0.1*(*p)->production_vertex()->position().x(),
296  0.1*(*p)->production_vertex()->position().y(),
297  0.1*(*p)->production_vertex()->position().z());
298  posECAL = trackIDs[indx].pointECAL;
299  fillTrack (posVec, momVec, posECAL, trackIDs[indx].pdgId, trackIDs[indx].okECAL, true);
300  if (verbosity>1) std::cout << "posECAL " << posECAL << " okECAL " << trackIDs[indx].okECAL << "okHCAL " << trackIDs[indx].okHCAL << std::endl;
301  if (trackIDs[indx].okECAL) {
302  if ( std::abs(charge)>0 ) {
303  spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, 0, 0, isoinfo1x1, false);
304  spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, 1, 1, isoinfo3x3, false);
305  spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, 3, 3, isoinfo7x7, false);
306  spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, 4, 4, isoinfo9x9, false);
307  spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, 5, 5, isoinfo11x11, false);
308  spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, 7, 7, isoinfo15x15, false);
309  spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology,10,10, isoinfo21x21, false);
310  spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology,12,12, isoinfo25x25, false);
311  spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology,15,15, isoinfo31x31, false);
312  spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, a_mipR, trackIDs[indx].directionECAL, isoinfoR, false);
313  spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, a_neutIsoR, trackIDs[indx].directionECAL, isoinfoIsoR, false);
314  if (trackIDs[indx].okHCAL) {
315  spr::hGenSimInfo(trackIDs[indx].detIdHCAL, p, trackIDs, theHBHETopology, 0, 0, isoinfoHC1x1, false);
316  spr::hGenSimInfo(trackIDs[indx].detIdHCAL, p, trackIDs, theHBHETopology, 1, 1, isoinfoHC3x3, false);
317  spr::hGenSimInfo(trackIDs[indx].detIdHCAL, p, trackIDs, theHBHETopology, 2, 2, isoinfoHC5x5, false);
318  spr::hGenSimInfo(trackIDs[indx].detIdHCAL, p, trackIDs, theHBHETopology, 3, 3, isoinfoHC7x7, false);
319  spr::hGenSimInfo(trackIDs[indx].detIdHCAL, p, trackIDs, geo, theHBHETopology, a_coneR, trackIDs[indx].directionHCAL, isoinfoHCR, false);
320  spr::hGenSimInfo(trackIDs[indx].detIdHCAL, p, trackIDs, geo, theHBHETopology, a_charIsoR, trackIDs[indx].directionHCAL, isoinfoIsoHCR, false);
321  }
322 
323  bool saveTrack = true;
324  if (a_Isolation) saveTrack = (isoinfoR.maxNearP < pCutIsolate);
325  else saveTrack = (isoinfo7x7.maxNearP < pCutIsolate);
326  if (saveTrack) fillIsolatedTrack(momVec, posECAL, trackIDs[indx].pdgId);
327  }
328  }
329  } else { // stabale particles within |eta|=2.5
330  fillTrack (posVec, momVec, posECAL, 0, false, false);
331  }
332  }
333  }
334 
335  unsigned int indx;
336  HepMC::GenEvent::particle_const_iterator p;
337  for (p=myGenEvent->particles_begin(),indx=0; p!=myGenEvent->particles_end();
338  ++p,++indx) {
339  int pdgId = ((*p)->pdg_id());
340  int ix = particleCode(pdgId);
341  if (ix >= 0) {
342  double pp = (*p)->momentum().rho();
343  double eta = (*p)->momentum().eta();
344  h_pEta[ix]->Fill(pp,eta);
345  }
346  }
347  } else { // loop over gen particles
348  std::vector<spr::propagatedGenParticleID> trackIDs = spr::propagateCALO(genParticles, pdt, geo, bField, etaMax, (verbosity>0));
349 
350  for (unsigned int indx=0; indx<trackIDs.size(); ++indx) {
351  int charge = trackIDs[indx].charge;
352  reco::GenParticleCollection::const_iterator p = trackIDs[indx].trkItr;
353 
354  momVec = math::XYZTLorentzVector(p->momentum().x(), p->momentum().y(), p->momentum().z(), p->energy());
355  if (verbosity>1) std::cout << "trkIndx " << indx << " pdgid " << trackIDs[indx].pdgId << " charge " << charge << " momVec " << momVec << std::endl;
356  // only stable particles avoiding electrons and muons
357  if (trackIDs[indx].ok && std::abs(trackIDs[indx].pdgId)>21) {
358  // consider particles within a phased space
359  if (verbosity>1) std::cout << " pt " << momVec.Pt() << " eta " << momVec.eta() << std::endl;
360  if (momVec.Pt() > ptMin && std::abs(momVec.eta()) < etaMax) {
361  posVec = GlobalPoint(p->vertex().x(), p->vertex().y(), p->vertex().z());
362  posECAL = trackIDs[indx].pointECAL;
363  if (verbosity>0) std::cout << "posECAL " << posECAL << " okECAL " << trackIDs[indx].okECAL << "okHCAL " << trackIDs[indx].okHCAL << std::endl;
364  fillTrack (posVec, momVec, posECAL, trackIDs[indx].pdgId, trackIDs[indx].okECAL, true);
365  if (trackIDs[indx].okECAL) {
366  if ( std::abs(charge)>0 ) {
367  spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, 0, 0, isoinfo1x1, verbosity>1);
368  spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, 1, 1, isoinfo3x3, verbosity>0);
369  spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, 3, 3, isoinfo7x7, verbosity>1);
370  spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, 4, 4, isoinfo9x9, verbosity>1);
371  spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, 5, 5, isoinfo11x11, verbosity>1);
372  spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, 7, 7, isoinfo15x15, verbosity>1);
373  spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology,10,10, isoinfo21x21, verbosity>1);
374  spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology,12,12, isoinfo25x25, verbosity>1);
375  spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology,15,15, isoinfo31x31, verbosity>1);
376  spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, a_mipR, trackIDs[indx].directionECAL, isoinfoR, verbosity>1);
377  spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, a_neutIsoR, trackIDs[indx].directionECAL, isoinfoIsoR, verbosity>1);
378  if (trackIDs[indx].okHCAL) {
379  spr::hGenSimInfo(trackIDs[indx].detIdHCAL, p, trackIDs, theHBHETopology, 0, 0, isoinfoHC1x1, verbosity>1);
380  spr::hGenSimInfo(trackIDs[indx].detIdHCAL, p, trackIDs, theHBHETopology, 1, 1, isoinfoHC3x3, verbosity>1);
381  spr::hGenSimInfo(trackIDs[indx].detIdHCAL, p, trackIDs, theHBHETopology, 2, 2, isoinfoHC5x5, verbosity>1);
382  spr::hGenSimInfo(trackIDs[indx].detIdHCAL, p, trackIDs, theHBHETopology, 3, 3, isoinfoHC7x7, verbosity>1);
383  spr::hGenSimInfo(trackIDs[indx].detIdHCAL, p, trackIDs, geo, theHBHETopology, a_coneR, trackIDs[indx].directionHCAL, isoinfoHCR, verbosity>1);
384  spr::hGenSimInfo(trackIDs[indx].detIdHCAL, p, trackIDs, geo, theHBHETopology, a_charIsoR, trackIDs[indx].directionHCAL, isoinfoIsoHCR, verbosity>1);
385  }
386 
387  bool saveTrack = true;
388  if (a_Isolation) saveTrack = (isoinfoIsoR.maxNearP < pCutIsolate);
389  else saveTrack = (isoinfo7x7.maxNearP < pCutIsolate);
390  if (saveTrack) fillIsolatedTrack(momVec, posECAL, trackIDs[indx].pdgId);
391  }
392  }
393  } else { // stabale particles within |eta|=2.5
394  fillTrack (posVec, momVec, posECAL, 0, false, false);
395  }
396  }
397  } // loop over gen particles
398 
399  unsigned int indx;
400  reco::GenParticleCollection::const_iterator p;
401  for (p=genParticles->begin(),indx=0; p!=genParticles->end(); ++p,++indx) {
402  int pdgId = (p->pdgId());
403  int ix = particleCode(pdgId);
404  if (ix >= 0) {
405  double pp = (p->momentum()).R();
406  double eta = (p->momentum()).Eta();
407  h_pEta[ix]->Fill(pp,eta);
408  }
409  }
410 
411  }
412 
413  //t_nEvtProc->push_back(nEventProc);
414  h_NEventProc->SetBinContent(1,nEventProc);
415  tree->Fill();
416 
417 }
418 
420 
421  nEventProc=0;
422 
423  initL1 = false;
424 
425  double tempgen_TH[NPBins+1] = { 0.0, 5.0, 12.0, 300.0};
426  for(int i=0; i<=NPBins; i++) genPartPBins[i] = tempgen_TH[i];
427 
428  double tempgen_Eta[NEtaBins+1] = {0.0, 0.5, 1.1, 1.7, 2.3};
429  for(int i=0; i<=NEtaBins; i++) genPartEtaBins[i] = tempgen_Eta[i];
430 
431  BookHistograms();
432 
433 }
434 
436 }
437 
438 double IsolatedGenParticles::DeltaPhi(double v1, double v2) {
439  // Computes the correctly normalized phi difference
440  // v1, v2 = phi of object 1 and 2
441 
442  double pi = 3.141592654;
443  double twopi = 6.283185307;
444 
445  double diff = std::abs(v2 - v1);
446  double corr = twopi - diff;
447  if (diff < pi){ return diff;} else { return corr;}
448 }
449 
450 double IsolatedGenParticles::DeltaR(double eta1, double phi1, double eta2, double phi2) {
451  double deta = eta1 - eta2;
452  double dphi = DeltaPhi(phi1, phi2);
453  return std::sqrt(deta*deta + dphi*dphi);
454 }
455 
456 double IsolatedGenParticles::DeltaR2(double eta1, double phi1, double eta2, double phi2) {
457  double deta = eta1 - eta2;
458  double dphi = DeltaPhi(phi1, phi2);
459  return deta*deta + dphi*dphi;
460 }
461 
462 void IsolatedGenParticles::fillTrack (GlobalPoint & posVec, math::XYZTLorentzVector & momVec, GlobalPoint & posECAL, int pdgId, bool okECAL, bool accept) {
463 
464  if (accept) {
465  t_isoTrkPAll ->push_back( momVec.P() );
466  t_isoTrkPtAll ->push_back( momVec.Pt() );
467  t_isoTrkPhiAll ->push_back( momVec.phi() );
468  t_isoTrkEtaAll ->push_back( momVec.eta() );
469  t_isoTrkPdgIdAll ->push_back( pdgId ) ;
470  if (okECAL) {
471  double phi1 = momVec.phi();
472  double phi2 = (posECAL - posVec).phi();
473  double dphi = DeltaPhi( phi1, phi2 );
474  double deta = momVec.eta() - (posECAL - posVec).eta();
475  t_isoTrkDPhiAll ->push_back( dphi );
476  t_isoTrkDEtaAll ->push_back( deta );
477  } else {
478  t_isoTrkDPhiAll ->push_back( 999.0 );
479  t_isoTrkDEtaAll ->push_back( 999.0 );
480  }
481  } else {
482  t_isoTrkDPhiAll ->push_back( -999.0 );
483  t_isoTrkDEtaAll ->push_back( -999.0 );
484  }
485 }
486 
488 
489  t_isoTrkP ->push_back(momVec.P());
490  t_isoTrkPt ->push_back(momVec.Pt());
491  t_isoTrkEne ->push_back(momVec.E());
492  t_isoTrkEta ->push_back(momVec.eta());
493  t_isoTrkPhi ->push_back(momVec.phi());
494  t_isoTrkEtaEC ->push_back(posECAL.eta());
495  t_isoTrkPhiEC ->push_back(posECAL.phi());
496  t_isoTrkPdgId ->push_back(pdgId);
497 
505  t_eleEne31x31 ->push_back(isoinfo31x31.eleEne);
506  t_muEne31x31 ->push_back(isoinfo31x31.muEne);
507 
515  t_eleEne25x25 ->push_back(isoinfo25x25.eleEne);
516  t_muEne25x25 ->push_back(isoinfo25x25.muEne);
517 
525  t_eleEne21x21 ->push_back(isoinfo21x21.eleEne);
526  t_muEne21x21 ->push_back(isoinfo21x21.muEne);
527 
535  t_eleEne15x15 ->push_back(isoinfo15x15.eleEne);
536  t_muEne15x15 ->push_back(isoinfo15x15.muEne);
537 
545  t_eleEne11x11 ->push_back(isoinfo11x11.eleEne);
546  t_muEne11x11 ->push_back(isoinfo11x11.muEne);
547 
548  t_maxNearP9x9 ->push_back(isoinfo9x9.maxNearP);
550  t_cHadronEne9x9_1 ->push_back(isoinfo9x9.cHadronEne_[0]);
551  t_cHadronEne9x9_2 ->push_back(isoinfo9x9.cHadronEne_[1]);
552  t_cHadronEne9x9_3 ->push_back(isoinfo9x9.cHadronEne_[2]);
554  t_photonEne9x9 ->push_back(isoinfo9x9.photonEne);
555  t_eleEne9x9 ->push_back(isoinfo9x9.eleEne);
556  t_muEne9x9 ->push_back(isoinfo9x9.muEne);
557 
558  t_maxNearP7x7 ->push_back(isoinfo7x7.maxNearP);
560  t_cHadronEne7x7_1 ->push_back(isoinfo7x7.cHadronEne_[0]);
561  t_cHadronEne7x7_2 ->push_back(isoinfo7x7.cHadronEne_[1]);
562  t_cHadronEne7x7_3 ->push_back(isoinfo7x7.cHadronEne_[2]);
564  t_photonEne7x7 ->push_back(isoinfo7x7.photonEne);
565  t_eleEne7x7 ->push_back(isoinfo7x7.eleEne);
566  t_muEne7x7 ->push_back(isoinfo7x7.muEne);
567 
568  t_maxNearP3x3 ->push_back(isoinfo3x3.maxNearP);
570  t_cHadronEne3x3_1 ->push_back(isoinfo3x3.cHadronEne_[0]);
571  t_cHadronEne3x3_2 ->push_back(isoinfo3x3.cHadronEne_[1]);
572  t_cHadronEne3x3_3 ->push_back(isoinfo3x3.cHadronEne_[2]);
574  t_photonEne3x3 ->push_back(isoinfo3x3.photonEne);
575  t_eleEne3x3 ->push_back(isoinfo3x3.eleEne);
576  t_muEne3x3 ->push_back(isoinfo3x3.muEne);
577 
578  t_maxNearP1x1 ->push_back(isoinfo1x1.maxNearP);
580  t_cHadronEne1x1_1 ->push_back(isoinfo1x1.cHadronEne_[0]);
581  t_cHadronEne1x1_2 ->push_back(isoinfo1x1.cHadronEne_[1]);
582  t_cHadronEne1x1_3 ->push_back(isoinfo1x1.cHadronEne_[2]);
584  t_photonEne1x1 ->push_back(isoinfo1x1.photonEne);
585  t_eleEne1x1 ->push_back(isoinfo1x1.eleEne);
586  t_muEne1x1 ->push_back(isoinfo1x1.muEne);
587 
595  t_eleEneHC1x1 ->push_back(isoinfoHC1x1.eleEne);
596  t_muEneHC1x1 ->push_back(isoinfoHC1x1.muEne);
597 
605  t_eleEneHC3x3 ->push_back(isoinfoHC3x3.eleEne);
606  t_muEneHC3x3 ->push_back(isoinfoHC3x3.muEne);
607 
615  t_eleEneHC5x5 ->push_back(isoinfoHC5x5.eleEne);
616  t_muEneHC5x5 ->push_back(isoinfoHC5x5.muEne);
617 
625  t_eleEneHC7x7 ->push_back(isoinfoHC7x7.eleEne);
626  t_muEneHC7x7 ->push_back(isoinfoHC7x7.muEne);
627 
628  t_maxNearPR ->push_back(isoinfoR.maxNearP);
629  t_cHadronEneR ->push_back(isoinfoR.cHadronEne);
630  t_cHadronEneR_1 ->push_back(isoinfoR.cHadronEne_[0]);
631  t_cHadronEneR_2 ->push_back(isoinfoR.cHadronEne_[1]);
632  t_cHadronEneR_3 ->push_back(isoinfoR.cHadronEne_[2]);
633  t_nHadronEneR ->push_back(isoinfoR.nHadronEne);
634  t_photonEneR ->push_back(isoinfoR.photonEne);
635  t_eleEneR ->push_back(isoinfoR.eleEne);
636  t_muEneR ->push_back(isoinfoR.muEne);
637 
638  t_maxNearPIsoR ->push_back(isoinfoIsoR.maxNearP);
645  t_eleEneIsoR ->push_back(isoinfoIsoR.eleEne);
646  t_muEneIsoR ->push_back(isoinfoIsoR.muEne);
647 
648  t_maxNearPHCR ->push_back(isoinfoHCR.maxNearP);
650  t_cHadronEneHCR_1 ->push_back(isoinfoHCR.cHadronEne_[0]);
651  t_cHadronEneHCR_2 ->push_back(isoinfoHCR.cHadronEne_[1]);
652  t_cHadronEneHCR_3 ->push_back(isoinfoHCR.cHadronEne_[2]);
654  t_photonEneHCR ->push_back(isoinfoHCR.photonEne);
655  t_eleEneHCR ->push_back(isoinfoHCR.eleEne);
656  t_muEneHCR ->push_back(isoinfoHCR.muEne);
657 
665  t_eleEneIsoHCR ->push_back(isoinfoIsoHCR.eleEne);
666  t_muEneIsoHCR ->push_back(isoinfoIsoHCR.muEne);
667 }
668 
670 
671  //char hname[100], htit[100];
672 
673  h_NEventProc = fs->make<TH1I>("h_NEventProc", "h_NEventProc", 2, -0.5, 0.5);
674  h_L1AlgoNames = fs->make<TH1I>("h_L1AlgoNames", "h_L1AlgoNames:Bin Labels", 128, -0.5, 127.5);
675 
676  double pBin[PBins+1] = {0.0, 2.0, 4.0, 6.0, 8.0, 10.0, 20.0, 30.0, 40.0, 50.0,
677  60.0, 70.0, 80.0, 90.0, 100.0, 150.0, 200.0, 250.0,
678  300.0, 350.0, 400.0, 450.0, 500.0, 550.0, 600.0,
679  650.0, 700.0, 750.0, 800.0, 850.0, 900.0, 950.0,
680  1000.0};
681  double etaBin[EtaBins+1] = {-3.0, -2.9, -2.8, -2.7, -2.6, -2.5, -2.4, -2.3,
682  -2.2, -2.1, -2.0, -1.9, -1.8, -1.7, -1.6, -1.5,
683  -1.4, -1.3, -1.2, -1.1, -1.0, -0.9, -0.8, -0.7,
684  -0.6, -0.5, -0.4, -0.3, -0.2, -0.1, 0.0, 0.1,
685  0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9,
686  1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7,
687  1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5,
688  2.6, 2.7, 2.8, 2.9, 3.0};
689  std::string particle[Particles] = {"electron", "positron", "#gamma", "#pi^+",
690  "#pi^-", "K^+", "K^-", "p", "n", "pbar",
691  "nbar", "K^0_L"};
692  TFileDirectory dir1 = fs->mkdir( "pEta" );
693  char name[20], title[50];
694  for (int i=0; i<Particles; ++i) {
695  sprintf (name, "pEta%d", i);
696  sprintf (title, "#eta vs momentum for %s", particle[i].c_str());
697  h_pEta[i] = dir1.make<TH2D>(name, title, PBins, pBin, EtaBins, etaBin);
698  }
699 
700  // build the tree
701  tree = fs->make<TTree>("tree", "tree");
702 
703  t_isoTrkPAll = new std::vector<double>();
704  t_isoTrkPtAll = new std::vector<double>();
705  t_isoTrkPhiAll = new std::vector<double>();
706  t_isoTrkEtaAll = new std::vector<double>();
707  t_isoTrkDPhiAll = new std::vector<double>();
708  t_isoTrkDEtaAll = new std::vector<double>();
709  t_isoTrkPdgIdAll = new std::vector<double>();
710 
711  t_isoTrkP = new std::vector<double>();
712  t_isoTrkPt = new std::vector<double>();
713  t_isoTrkEne = new std::vector<double>();
714  t_isoTrkEta = new std::vector<double>();
715  t_isoTrkPhi = new std::vector<double>();
716  t_isoTrkEtaEC = new std::vector<double>();
717  t_isoTrkPhiEC = new std::vector<double>();
718  t_isoTrkPdgId = new std::vector<double>();
719 
720  t_maxNearP31x31 = new std::vector<double>();
721  t_cHadronEne31x31 = new std::vector<double>();
722  t_cHadronEne31x31_1 = new std::vector<double>();
723  t_cHadronEne31x31_2 = new std::vector<double>();
724  t_cHadronEne31x31_3 = new std::vector<double>();
725  t_nHadronEne31x31 = new std::vector<double>();
726  t_photonEne31x31 = new std::vector<double>();
727  t_eleEne31x31 = new std::vector<double>();
728  t_muEne31x31 = new std::vector<double>();
729 
730  t_maxNearP25x25 = new std::vector<double>();
731  t_cHadronEne25x25 = new std::vector<double>();
732  t_cHadronEne25x25_1 = new std::vector<double>();
733  t_cHadronEne25x25_2 = new std::vector<double>();
734  t_cHadronEne25x25_3 = new std::vector<double>();
735  t_nHadronEne25x25 = new std::vector<double>();
736  t_photonEne25x25 = new std::vector<double>();
737  t_eleEne25x25 = new std::vector<double>();
738  t_muEne25x25 = new std::vector<double>();
739 
740  t_maxNearP21x21 = new std::vector<double>();
741  t_cHadronEne21x21 = new std::vector<double>();
742  t_cHadronEne21x21_1 = new std::vector<double>();
743  t_cHadronEne21x21_2 = new std::vector<double>();
744  t_cHadronEne21x21_3 = new std::vector<double>();
745  t_nHadronEne21x21 = new std::vector<double>();
746  t_photonEne21x21 = new std::vector<double>();
747  t_eleEne21x21 = new std::vector<double>();
748  t_muEne21x21 = new std::vector<double>();
749 
750  t_maxNearP15x15 = new std::vector<double>();
751  t_cHadronEne15x15 = new std::vector<double>();
752  t_cHadronEne15x15_1 = new std::vector<double>();
753  t_cHadronEne15x15_2 = new std::vector<double>();
754  t_cHadronEne15x15_3 = new std::vector<double>();
755  t_nHadronEne15x15 = new std::vector<double>();
756  t_photonEne15x15 = new std::vector<double>();
757  t_eleEne15x15 = new std::vector<double>();
758  t_muEne15x15 = new std::vector<double>();
759 
760  t_maxNearP11x11 = new std::vector<double>();
761  t_cHadronEne11x11 = new std::vector<double>();
762  t_cHadronEne11x11_1 = new std::vector<double>();
763  t_cHadronEne11x11_2 = new std::vector<double>();
764  t_cHadronEne11x11_3 = new std::vector<double>();
765  t_nHadronEne11x11 = new std::vector<double>();
766  t_photonEne11x11 = new std::vector<double>();
767  t_eleEne11x11 = new std::vector<double>();
768  t_muEne11x11 = new std::vector<double>();
769 
770  t_maxNearP9x9 = new std::vector<double>();
771  t_cHadronEne9x9 = new std::vector<double>();
772  t_cHadronEne9x9_1 = new std::vector<double>();
773  t_cHadronEne9x9_2 = new std::vector<double>();
774  t_cHadronEne9x9_3 = new std::vector<double>();
775  t_nHadronEne9x9 = new std::vector<double>();
776  t_photonEne9x9 = new std::vector<double>();
777  t_eleEne9x9 = new std::vector<double>();
778  t_muEne9x9 = new std::vector<double>();
779 
780  t_maxNearP7x7 = new std::vector<double>();
781  t_cHadronEne7x7 = new std::vector<double>();
782  t_cHadronEne7x7_1 = new std::vector<double>();
783  t_cHadronEne7x7_2 = new std::vector<double>();
784  t_cHadronEne7x7_3 = new std::vector<double>();
785  t_nHadronEne7x7 = new std::vector<double>();
786  t_photonEne7x7 = new std::vector<double>();
787  t_eleEne7x7 = new std::vector<double>();
788  t_muEne7x7 = new std::vector<double>();
789 
790  t_maxNearP3x3 = new std::vector<double>();
791  t_cHadronEne3x3 = new std::vector<double>();
792  t_cHadronEne3x3_1 = new std::vector<double>();
793  t_cHadronEne3x3_2 = new std::vector<double>();
794  t_cHadronEne3x3_3 = new std::vector<double>();
795  t_nHadronEne3x3 = new std::vector<double>();
796  t_photonEne3x3 = new std::vector<double>();
797  t_eleEne3x3 = new std::vector<double>();
798  t_muEne3x3 = new std::vector<double>();
799 
800  t_maxNearP1x1 = new std::vector<double>();
801  t_cHadronEne1x1 = new std::vector<double>();
802  t_cHadronEne1x1_1 = new std::vector<double>();
803  t_cHadronEne1x1_2 = new std::vector<double>();
804  t_cHadronEne1x1_3 = new std::vector<double>();
805  t_nHadronEne1x1 = new std::vector<double>();
806  t_photonEne1x1 = new std::vector<double>();
807  t_eleEne1x1 = new std::vector<double>();
808  t_muEne1x1 = new std::vector<double>();
809 
810  t_maxNearPHC1x1 = new std::vector<double>();
811  t_cHadronEneHC1x1 = new std::vector<double>();
812  t_cHadronEneHC1x1_1 = new std::vector<double>();
813  t_cHadronEneHC1x1_2 = new std::vector<double>();
814  t_cHadronEneHC1x1_3 = new std::vector<double>();
815  t_nHadronEneHC1x1 = new std::vector<double>();
816  t_photonEneHC1x1 = new std::vector<double>();
817  t_eleEneHC1x1 = new std::vector<double>();
818  t_muEneHC1x1 = new std::vector<double>();
819 
820  t_maxNearPHC3x3 = new std::vector<double>();
821  t_cHadronEneHC3x3 = new std::vector<double>();
822  t_cHadronEneHC3x3_1 = new std::vector<double>();
823  t_cHadronEneHC3x3_2 = new std::vector<double>();
824  t_cHadronEneHC3x3_3 = new std::vector<double>();
825  t_nHadronEneHC3x3 = new std::vector<double>();
826  t_photonEneHC3x3 = new std::vector<double>();
827  t_eleEneHC3x3 = new std::vector<double>();
828  t_muEneHC3x3 = new std::vector<double>();
829 
830  t_maxNearPHC5x5 = new std::vector<double>();
831  t_cHadronEneHC5x5 = new std::vector<double>();
832  t_cHadronEneHC5x5_1 = new std::vector<double>();
833  t_cHadronEneHC5x5_2 = new std::vector<double>();
834  t_cHadronEneHC5x5_3 = new std::vector<double>();
835  t_nHadronEneHC5x5 = new std::vector<double>();
836  t_photonEneHC5x5 = new std::vector<double>();
837  t_eleEneHC5x5 = new std::vector<double>();
838  t_muEneHC5x5 = new std::vector<double>();
839 
840  t_maxNearPHC7x7 = new std::vector<double>();
841  t_cHadronEneHC7x7 = new std::vector<double>();
842  t_cHadronEneHC7x7_1 = new std::vector<double>();
843  t_cHadronEneHC7x7_2 = new std::vector<double>();
844  t_cHadronEneHC7x7_3 = new std::vector<double>();
845  t_nHadronEneHC7x7 = new std::vector<double>();
846  t_photonEneHC7x7 = new std::vector<double>();
847  t_eleEneHC7x7 = new std::vector<double>();
848  t_muEneHC7x7 = new std::vector<double>();
849 
850  t_maxNearPR = new std::vector<double>();
851  t_cHadronEneR = new std::vector<double>();
852  t_cHadronEneR_1 = new std::vector<double>();
853  t_cHadronEneR_2 = new std::vector<double>();
854  t_cHadronEneR_3 = new std::vector<double>();
855  t_nHadronEneR = new std::vector<double>();
856  t_photonEneR = new std::vector<double>();
857  t_eleEneR = new std::vector<double>();
858  t_muEneR = new std::vector<double>();
859 
860  t_maxNearPIsoR = new std::vector<double>();
861  t_cHadronEneIsoR = new std::vector<double>();
862  t_cHadronEneIsoR_1 = new std::vector<double>();
863  t_cHadronEneIsoR_2 = new std::vector<double>();
864  t_cHadronEneIsoR_3 = new std::vector<double>();
865  t_nHadronEneIsoR = new std::vector<double>();
866  t_photonEneIsoR = new std::vector<double>();
867  t_eleEneIsoR = new std::vector<double>();
868  t_muEneIsoR = new std::vector<double>();
869 
870  t_maxNearPHCR = new std::vector<double>();
871  t_cHadronEneHCR = new std::vector<double>();
872  t_cHadronEneHCR_1 = new std::vector<double>();
873  t_cHadronEneHCR_2 = new std::vector<double>();
874  t_cHadronEneHCR_3 = new std::vector<double>();
875  t_nHadronEneHCR = new std::vector<double>();
876  t_photonEneHCR = new std::vector<double>();
877  t_eleEneHCR = new std::vector<double>();
878  t_muEneHCR = new std::vector<double>();
879 
880  t_maxNearPIsoHCR = new std::vector<double>();
881  t_cHadronEneIsoHCR = new std::vector<double>();
882  t_cHadronEneIsoHCR_1 = new std::vector<double>();
883  t_cHadronEneIsoHCR_2 = new std::vector<double>();
884  t_cHadronEneIsoHCR_3 = new std::vector<double>();
885  t_nHadronEneIsoHCR = new std::vector<double>();
886  t_photonEneIsoHCR = new std::vector<double>();
887  t_eleEneIsoHCR = new std::vector<double>();
888  t_muEneIsoHCR = new std::vector<double>();
889 
890  //----- L1Trigger
891  t_L1Decision = new std::vector<int>();
892  t_L1CenJetPt = new std::vector<double>();
893  t_L1CenJetEta = new std::vector<double>();
894  t_L1CenJetPhi = new std::vector<double>();
895  t_L1FwdJetPt = new std::vector<double>();
896  t_L1FwdJetEta = new std::vector<double>();
897  t_L1FwdJetPhi = new std::vector<double>();
898  t_L1TauJetPt = new std::vector<double>();
899  t_L1TauJetEta = new std::vector<double>();
900  t_L1TauJetPhi = new std::vector<double>();
901  t_L1MuonPt = new std::vector<double>();
902  t_L1MuonEta = new std::vector<double>();
903  t_L1MuonPhi = new std::vector<double>();
904  t_L1IsoEMPt = new std::vector<double>();
905  t_L1IsoEMEta = new std::vector<double>();
906  t_L1IsoEMPhi = new std::vector<double>();
907  t_L1NonIsoEMPt = new std::vector<double>();
908  t_L1NonIsoEMEta = new std::vector<double>();
909  t_L1NonIsoEMPhi = new std::vector<double>();
910  t_L1METPt = new std::vector<double>();
911  t_L1METEta = new std::vector<double>();
912  t_L1METPhi = new std::vector<double>();
913 
914  //tree->Branch("t_nEvtProc", "vector<int>", &t_nEvtProc);
915 
916  tree->Branch("t_isoTrkPAll", "vector<double>", &t_isoTrkPAll);
917  tree->Branch("t_isoTrkPtAll", "vector<double>", &t_isoTrkPtAll);
918  tree->Branch("t_isoTrkPhiAll", "vector<double>", &t_isoTrkPhiAll);
919  tree->Branch("t_isoTrkEtaAll", "vector<double>", &t_isoTrkEtaAll);
920  tree->Branch("t_isoTrkDPhiAll", "vector<double>", &t_isoTrkDPhiAll);
921  tree->Branch("t_isoTrkDEtaAll", "vector<double>", &t_isoTrkDEtaAll);
922  tree->Branch("t_isoTrkPdgIdAll", "vector<double>", &t_isoTrkPdgIdAll);
923 
924  tree->Branch("t_isoTrkP", "vector<double>", &t_isoTrkP);
925  tree->Branch("t_isoTrkPt", "vector<double>", &t_isoTrkPt);
926  tree->Branch("t_isoTrkEne", "vector<double>", &t_isoTrkEne);
927  tree->Branch("t_isoTrkEta", "vector<double>", &t_isoTrkEta);
928  tree->Branch("t_isoTrkPhi", "vector<double>", &t_isoTrkPhi);
929  tree->Branch("t_isoTrkEtaEC", "vector<double>", &t_isoTrkEtaEC);
930  tree->Branch("t_isoTrkPhiEC", "vector<double>", &t_isoTrkPhiEC);
931  tree->Branch("t_isoTrkPdgId", "vector<double>", &t_isoTrkPdgId);
932 
933  tree->Branch("t_maxNearP31x31", "vector<double>", &t_maxNearP31x31);
934  tree->Branch("t_cHadronEne31x31", "vector<double>", &t_cHadronEne31x31);
935  tree->Branch("t_cHadronEne31x31_1", "vector<double>", &t_cHadronEne31x31_1);
936  tree->Branch("t_cHadronEne31x31_2", "vector<double>", &t_cHadronEne31x31_2);
937  tree->Branch("t_cHadronEne31x31_3", "vector<double>", &t_cHadronEne31x31_3);
938  tree->Branch("t_nHadronEne31x31", "vector<double>", &t_nHadronEne31x31);
939  tree->Branch("t_photonEne31x31", "vector<double>", &t_photonEne31x31);
940  tree->Branch("t_eleEne31x31", "vector<double>", &t_eleEne31x31);
941  tree->Branch("t_muEne31x31", "vector<double>", &t_muEne31x31);
942 
943  tree->Branch("t_maxNearP25x25", "vector<double>", &t_maxNearP25x25);
944  tree->Branch("t_cHadronEne25x25", "vector<double>", &t_cHadronEne25x25);
945  tree->Branch("t_cHadronEne25x25_1", "vector<double>", &t_cHadronEne25x25_1);
946  tree->Branch("t_cHadronEne25x25_2", "vector<double>", &t_cHadronEne25x25_2);
947  tree->Branch("t_cHadronEne25x25_3", "vector<double>", &t_cHadronEne25x25_3);
948  tree->Branch("t_nHadronEne25x25", "vector<double>", &t_nHadronEne25x25);
949  tree->Branch("t_photonEne25x25", "vector<double>", &t_photonEne25x25);
950  tree->Branch("t_eleEne25x25", "vector<double>", &t_eleEne25x25);
951  tree->Branch("t_muEne25x25", "vector<double>", &t_muEne25x25);
952 
953  tree->Branch("t_maxNearP21x21", "vector<double>", &t_maxNearP21x21);
954  tree->Branch("t_cHadronEne21x21", "vector<double>", &t_cHadronEne21x21);
955  tree->Branch("t_cHadronEne21x21_1", "vector<double>", &t_cHadronEne21x21_1);
956  tree->Branch("t_cHadronEne21x21_2", "vector<double>", &t_cHadronEne21x21_2);
957  tree->Branch("t_cHadronEne21x21_3", "vector<double>", &t_cHadronEne21x21_3);
958  tree->Branch("t_nHadronEne21x21", "vector<double>", &t_nHadronEne21x21);
959  tree->Branch("t_photonEne21x21", "vector<double>", &t_photonEne21x21);
960  tree->Branch("t_eleEne21x21", "vector<double>", &t_eleEne21x21);
961  tree->Branch("t_muEne21x21", "vector<double>", &t_muEne21x21);
962 
963  tree->Branch("t_maxNearP15x15", "vector<double>", &t_maxNearP15x15);
964  tree->Branch("t_cHadronEne15x15", "vector<double>", &t_cHadronEne15x15);
965  tree->Branch("t_cHadronEne15x15_1", "vector<double>", &t_cHadronEne15x15_1);
966  tree->Branch("t_cHadronEne15x15_2", "vector<double>", &t_cHadronEne15x15_2);
967  tree->Branch("t_cHadronEne15x15_3", "vector<double>", &t_cHadronEne15x15_3);
968  tree->Branch("t_nHadronEne15x15", "vector<double>", &t_nHadronEne15x15);
969  tree->Branch("t_photonEne15x15", "vector<double>", &t_photonEne15x15);
970  tree->Branch("t_eleEne15x15", "vector<double>", &t_eleEne15x15);
971  tree->Branch("t_muEne15x15", "vector<double>", &t_muEne15x15);
972 
973  tree->Branch("t_maxNearP11x11", "vector<double>", &t_maxNearP11x11);
974  tree->Branch("t_cHadronEne11x11", "vector<double>", &t_cHadronEne11x11);
975  tree->Branch("t_cHadronEne11x11_1", "vector<double>", &t_cHadronEne11x11_1);
976  tree->Branch("t_cHadronEne11x11_2", "vector<double>", &t_cHadronEne11x11_2);
977  tree->Branch("t_cHadronEne11x11_3", "vector<double>", &t_cHadronEne11x11_3);
978  tree->Branch("t_nHadronEne11x11", "vector<double>", &t_nHadronEne11x11);
979  tree->Branch("t_photonEne11x11", "vector<double>", &t_photonEne11x11);
980  tree->Branch("t_eleEne11x11", "vector<double>", &t_eleEne11x11);
981  tree->Branch("t_muEne11x11", "vector<double>", &t_muEne11x11);
982 
983  tree->Branch("t_maxNearP9x9", "vector<double>", &t_maxNearP9x9);
984  tree->Branch("t_cHadronEne9x9", "vector<double>", &t_cHadronEne9x9);
985  tree->Branch("t_cHadronEne9x9_1", "vector<double>", &t_cHadronEne9x9_1);
986  tree->Branch("t_cHadronEne9x9_2", "vector<double>", &t_cHadronEne9x9_2);
987  tree->Branch("t_cHadronEne9x9_3", "vector<double>", &t_cHadronEne9x9_3);
988  tree->Branch("t_nHadronEne9x9", "vector<double>", &t_nHadronEne9x9);
989  tree->Branch("t_photonEne9x9", "vector<double>", &t_photonEne9x9);
990  tree->Branch("t_eleEne9x9", "vector<double>", &t_eleEne9x9);
991  tree->Branch("t_muEne9x9", "vector<double>", &t_muEne9x9);
992 
993  tree->Branch("t_maxNearP7x7", "vector<double>", &t_maxNearP7x7);
994  tree->Branch("t_cHadronEne7x7", "vector<double>", &t_cHadronEne7x7);
995  tree->Branch("t_cHadronEne7x7_1", "vector<double>", &t_cHadronEne7x7_1);
996  tree->Branch("t_cHadronEne7x7_2", "vector<double>", &t_cHadronEne7x7_2);
997  tree->Branch("t_cHadronEne7x7_3", "vector<double>", &t_cHadronEne7x7_3);
998  tree->Branch("t_nHadronEne7x7", "vector<double>", &t_nHadronEne7x7);
999  tree->Branch("t_photonEne7x7", "vector<double>", &t_photonEne7x7);
1000  tree->Branch("t_eleEne7x7", "vector<double>", &t_eleEne7x7);
1001  tree->Branch("t_muEne7x7", "vector<double>", &t_muEne7x7);
1002 
1003  tree->Branch("t_maxNearP3x3", "vector<double>", &t_maxNearP3x3);
1004  tree->Branch("t_cHadronEne3x3", "vector<double>", &t_cHadronEne3x3);
1005  tree->Branch("t_cHadronEne3x3_1", "vector<double>", &t_cHadronEne3x3_1);
1006  tree->Branch("t_cHadronEne3x3_2", "vector<double>", &t_cHadronEne3x3_2);
1007  tree->Branch("t_cHadronEne3x3_3", "vector<double>", &t_cHadronEne3x3_3);
1008  tree->Branch("t_nHadronEne3x3", "vector<double>", &t_nHadronEne3x3);
1009  tree->Branch("t_photonEne3x3", "vector<double>", &t_photonEne3x3);
1010  tree->Branch("t_eleEne3x3", "vector<double>", &t_eleEne3x3);
1011  tree->Branch("t_muEne3x3", "vector<double>", &t_muEne3x3);
1012 
1013  tree->Branch("t_maxNearP1x1", "vector<double>", &t_maxNearP1x1);
1014  tree->Branch("t_cHadronEne1x1", "vector<double>", &t_cHadronEne1x1);
1015  tree->Branch("t_cHadronEne1x1_1", "vector<double>", &t_cHadronEne1x1_1);
1016  tree->Branch("t_cHadronEne1x1_2", "vector<double>", &t_cHadronEne1x1_2);
1017  tree->Branch("t_cHadronEne1x1_3", "vector<double>", &t_cHadronEne1x1_3);
1018  tree->Branch("t_nHadronEne1x1", "vector<double>", &t_nHadronEne1x1);
1019  tree->Branch("t_photonEne1x1", "vector<double>", &t_photonEne1x1);
1020  tree->Branch("t_eleEne1x1", "vector<double>", &t_eleEne1x1);
1021  tree->Branch("t_muEne1x1", "vector<double>", &t_muEne1x1);
1022 
1023  tree->Branch("t_maxNearPHC1x1", "vector<double>", &t_maxNearPHC1x1);
1024  tree->Branch("t_cHadronEneHC1x1", "vector<double>", &t_cHadronEneHC1x1);
1025  tree->Branch("t_cHadronEneHC1x1_1", "vector<double>", &t_cHadronEneHC1x1_1);
1026  tree->Branch("t_cHadronEneHC1x1_2", "vector<double>", &t_cHadronEneHC1x1_2);
1027  tree->Branch("t_cHadronEneHC1x1_3", "vector<double>", &t_cHadronEneHC1x1_3);
1028  tree->Branch("t_nHadronEneHC1x1", "vector<double>", &t_nHadronEneHC1x1);
1029  tree->Branch("t_photonEneHC1x1", "vector<double>", &t_photonEneHC1x1);
1030  tree->Branch("t_eleEneHC1x1", "vector<double>", &t_eleEneHC1x1);
1031  tree->Branch("t_muEneHC1x1", "vector<double>", &t_muEneHC1x1);
1032 
1033  tree->Branch("t_maxNearPHC3x3", "vector<double>", &t_maxNearPHC3x3);
1034  tree->Branch("t_cHadronEneHC3x3", "vector<double>", &t_cHadronEneHC3x3);
1035  tree->Branch("t_cHadronEneHC3x3_1", "vector<double>", &t_cHadronEneHC3x3_1);
1036  tree->Branch("t_cHadronEneHC3x3_2", "vector<double>", &t_cHadronEneHC3x3_2);
1037  tree->Branch("t_cHadronEneHC3x3_3", "vector<double>", &t_cHadronEneHC3x3_3);
1038  tree->Branch("t_nHadronEneHC3x3", "vector<double>", &t_nHadronEneHC3x3);
1039  tree->Branch("t_photonEneHC3x3", "vector<double>", &t_photonEneHC3x3);
1040  tree->Branch("t_eleEneHC3x3", "vector<double>", &t_eleEneHC3x3);
1041  tree->Branch("t_muEneHC3x3", "vector<double>", &t_muEneHC3x3);
1042 
1043  tree->Branch("t_maxNearPHC5x5", "vector<double>", &t_maxNearPHC5x5);
1044  tree->Branch("t_cHadronEneHC5x5", "vector<double>", &t_cHadronEneHC5x5);
1045  tree->Branch("t_cHadronEneHC5x5_1", "vector<double>", &t_cHadronEneHC5x5_1);
1046  tree->Branch("t_cHadronEneHC5x5_2", "vector<double>", &t_cHadronEneHC5x5_2);
1047  tree->Branch("t_cHadronEneHC5x5_3", "vector<double>", &t_cHadronEneHC5x5_3);
1048  tree->Branch("t_nHadronEneHC5x5", "vector<double>", &t_nHadronEneHC5x5);
1049  tree->Branch("t_photonEneHC5x5", "vector<double>", &t_photonEneHC5x5);
1050  tree->Branch("t_eleEneHC5x5", "vector<double>", &t_eleEneHC5x5);
1051  tree->Branch("t_muEneHC5x5", "vector<double>", &t_muEneHC5x5);
1052 
1053  tree->Branch("t_maxNearPHC7x7", "vector<double>", &t_maxNearPHC7x7);
1054  tree->Branch("t_cHadronEneHC7x7", "vector<double>", &t_cHadronEneHC7x7);
1055  tree->Branch("t_cHadronEneHC7x7_1", "vector<double>", &t_cHadronEneHC7x7_1);
1056  tree->Branch("t_cHadronEneHC7x7_2", "vector<double>", &t_cHadronEneHC7x7_2);
1057  tree->Branch("t_cHadronEneHC7x7_3", "vector<double>", &t_cHadronEneHC7x7_3);
1058  tree->Branch("t_nHadronEneHC7x7", "vector<double>", &t_nHadronEneHC7x7);
1059  tree->Branch("t_photonEneHC7x7", "vector<double>", &t_photonEneHC7x7);
1060  tree->Branch("t_eleEneHC7x7", "vector<double>", &t_eleEneHC7x7);
1061  tree->Branch("t_muEneHC7x7", "vector<double>", &t_muEneHC7x7);
1062 
1063  tree->Branch("t_maxNearPR", "vector<double>", &t_maxNearPR);
1064  tree->Branch("t_cHadronEneR", "vector<double>", &t_cHadronEneR);
1065  tree->Branch("t_cHadronEneR_1", "vector<double>", &t_cHadronEneR_1);
1066  tree->Branch("t_cHadronEneR_2", "vector<double>", &t_cHadronEneR_2);
1067  tree->Branch("t_cHadronEneR_3", "vector<double>", &t_cHadronEneR_3);
1068  tree->Branch("t_nHadronEneR", "vector<double>", &t_nHadronEneR);
1069  tree->Branch("t_photonEneR", "vector<double>", &t_photonEneR);
1070  tree->Branch("t_eleEneR", "vector<double>", &t_eleEneR);
1071  tree->Branch("t_muEneR", "vector<double>", &t_muEneR);
1072 
1073  tree->Branch("t_maxNearPIsoR", "vector<double>", &t_maxNearPIsoR);
1074  tree->Branch("t_cHadronEneIsoR", "vector<double>", &t_cHadronEneIsoR);
1075  tree->Branch("t_cHadronEneIsoR_1", "vector<double>", &t_cHadronEneIsoR_1);
1076  tree->Branch("t_cHadronEneIsoR_2", "vector<double>", &t_cHadronEneIsoR_2);
1077  tree->Branch("t_cHadronEneIsoR_3", "vector<double>", &t_cHadronEneIsoR_3);
1078  tree->Branch("t_nHadronEneIsoR", "vector<double>", &t_nHadronEneIsoR);
1079  tree->Branch("t_photonEneIsoR", "vector<double>", &t_photonEneIsoR);
1080  tree->Branch("t_eleEneIsoR", "vector<double>", &t_eleEneIsoR);
1081  tree->Branch("t_muEneIsoR", "vector<double>", &t_muEneIsoR);
1082 
1083  tree->Branch("t_maxNearPHCR", "vector<double>", &t_maxNearPHCR);
1084  tree->Branch("t_cHadronEneHCR", "vector<double>", &t_cHadronEneHCR);
1085  tree->Branch("t_cHadronEneHCR_1", "vector<double>", &t_cHadronEneHCR_1);
1086  tree->Branch("t_cHadronEneHCR_2", "vector<double>", &t_cHadronEneHCR_2);
1087  tree->Branch("t_cHadronEneHCR_3", "vector<double>", &t_cHadronEneHCR_3);
1088  tree->Branch("t_nHadronEneHCR", "vector<double>", &t_nHadronEneHCR);
1089  tree->Branch("t_photonEneHCR", "vector<double>", &t_photonEneHCR);
1090  tree->Branch("t_eleEneHCR", "vector<double>", &t_eleEneHCR);
1091  tree->Branch("t_muEneHCR", "vector<double>", &t_muEneHCR);
1092 
1093  tree->Branch("t_maxNearPIsoHCR", "vector<double>", &t_maxNearPIsoHCR);
1094  tree->Branch("t_cHadronEneIsoHCR", "vector<double>", &t_cHadronEneIsoHCR);
1095  tree->Branch("t_cHadronEneIsoHCR_1", "vector<double>", &t_cHadronEneIsoHCR_1);
1096  tree->Branch("t_cHadronEneIsoHCR_2", "vector<double>", &t_cHadronEneIsoHCR_2);
1097  tree->Branch("t_cHadronEneIsoHCR_3", "vector<double>", &t_cHadronEneIsoHCR_3);
1098  tree->Branch("t_nHadronEneIsoHCR", "vector<double>", &t_nHadronEneIsoHCR);
1099  tree->Branch("t_photonEneIsoHCR", "vector<double>", &t_photonEneIsoHCR);
1100  tree->Branch("t_eleEneIsoHCR", "vector<double>", &t_eleEneIsoHCR);
1101  tree->Branch("t_muEneIsoHCR", "vector<double>", &t_muEneIsoHCR);
1102 
1103  tree->Branch("t_L1Decision", "vector<int>", &t_L1Decision);
1104  tree->Branch("t_L1CenJetPt", "vector<double>", &t_L1CenJetPt);
1105  tree->Branch("t_L1CenJetEta", "vector<double>", &t_L1CenJetEta);
1106  tree->Branch("t_L1CenJetPhi", "vector<double>", &t_L1CenJetPhi);
1107  tree->Branch("t_L1FwdJetPt", "vector<double>", &t_L1FwdJetPt);
1108  tree->Branch("t_L1FwdJetEta", "vector<double>", &t_L1FwdJetEta);
1109  tree->Branch("t_L1FwdJetPhi", "vector<double>", &t_L1FwdJetPhi);
1110  tree->Branch("t_L1TauJetPt", "vector<double>", &t_L1TauJetPt);
1111  tree->Branch("t_L1TauJetEta", "vector<double>", &t_L1TauJetEta);
1112  tree->Branch("t_L1TauJetPhi", "vector<double>", &t_L1TauJetPhi);
1113  tree->Branch("t_L1MuonPt", "vector<double>", &t_L1MuonPt);
1114  tree->Branch("t_L1MuonEta", "vector<double>", &t_L1MuonEta);
1115  tree->Branch("t_L1MuonPhi", "vector<double>", &t_L1MuonPhi);
1116  tree->Branch("t_L1IsoEMPt", "vector<double>", &t_L1IsoEMPt);
1117  tree->Branch("t_L1IsoEMEta", "vector<double>", &t_L1IsoEMEta);
1118  tree->Branch("t_L1IsoEMPhi", "vector<double>", &t_L1IsoEMPhi);
1119  tree->Branch("t_L1NonIsoEMPt", "vector<double>", &t_L1NonIsoEMPt);
1120  tree->Branch("t_L1NonIsoEMEta", "vector<double>", &t_L1NonIsoEMEta);
1121  tree->Branch("t_L1NonIsoEMPhi", "vector<double>", &t_L1NonIsoEMPhi);
1122  tree->Branch("t_L1METPt", "vector<double>", &t_L1METPt);
1123  tree->Branch("t_L1METEta", "vector<double>", &t_L1METEta);
1124  tree->Branch("t_L1METPhi", "vector<double>", &t_L1METPhi);
1125 }
1126 
1127 
1129  // t_maxNearP31x31->clear();
1130 
1131  //t_nEvtProc ->clear();
1132 
1133  t_isoTrkPAll ->clear();
1134  t_isoTrkPtAll ->clear();
1135  t_isoTrkPhiAll ->clear();
1136  t_isoTrkEtaAll ->clear();
1137  t_isoTrkDPhiAll ->clear();
1138  t_isoTrkDEtaAll ->clear();
1139  t_isoTrkPdgIdAll ->clear();
1140 
1141  t_isoTrkP ->clear();
1142  t_isoTrkPt ->clear();
1143  t_isoTrkEne ->clear();
1144  t_isoTrkEta ->clear();
1145  t_isoTrkPhi ->clear();
1146  t_isoTrkEtaEC ->clear();
1147  t_isoTrkPhiEC ->clear();
1148  t_isoTrkPdgId ->clear();
1149 
1150  t_maxNearP31x31 ->clear();
1151  t_cHadronEne31x31 ->clear();
1152  t_cHadronEne31x31_1 ->clear();
1153  t_cHadronEne31x31_2 ->clear();
1154  t_cHadronEne31x31_3 ->clear();
1155  t_nHadronEne31x31 ->clear();
1156  t_photonEne31x31 ->clear();
1157  t_eleEne31x31 ->clear();
1158  t_muEne31x31 ->clear();
1159 
1160  t_maxNearP25x25 ->clear();
1161  t_cHadronEne25x25 ->clear();
1162  t_cHadronEne25x25_1 ->clear();
1163  t_cHadronEne25x25_2 ->clear();
1164  t_cHadronEne25x25_3 ->clear();
1165  t_nHadronEne25x25 ->clear();
1166  t_photonEne25x25 ->clear();
1167  t_eleEne25x25 ->clear();
1168  t_muEne25x25 ->clear();
1169 
1170  t_maxNearP21x21 ->clear();
1171  t_cHadronEne21x21 ->clear();
1172  t_cHadronEne21x21_1 ->clear();
1173  t_cHadronEne21x21_2 ->clear();
1174  t_cHadronEne21x21_3 ->clear();
1175  t_nHadronEne21x21 ->clear();
1176  t_photonEne21x21 ->clear();
1177  t_eleEne21x21 ->clear();
1178  t_muEne21x21 ->clear();
1179 
1180  t_maxNearP15x15 ->clear();
1181  t_cHadronEne15x15 ->clear();
1182  t_cHadronEne15x15_1 ->clear();
1183  t_cHadronEne15x15_2 ->clear();
1184  t_cHadronEne15x15_3 ->clear();
1185  t_nHadronEne15x15 ->clear();
1186  t_photonEne15x15 ->clear();
1187  t_eleEne15x15 ->clear();
1188  t_muEne15x15 ->clear();
1189 
1190  t_maxNearP11x11 ->clear();
1191  t_cHadronEne11x11 ->clear();
1192  t_cHadronEne11x11_1 ->clear();
1193  t_cHadronEne11x11_2 ->clear();
1194  t_cHadronEne11x11_3 ->clear();
1195  t_nHadronEne11x11 ->clear();
1196  t_photonEne11x11 ->clear();
1197  t_eleEne11x11 ->clear();
1198  t_muEne11x11 ->clear();
1199 
1200  t_maxNearP9x9 ->clear();
1201  t_cHadronEne9x9 ->clear();
1202  t_cHadronEne9x9_1 ->clear();
1203  t_cHadronEne9x9_2 ->clear();
1204  t_cHadronEne9x9_3 ->clear();
1205  t_nHadronEne9x9 ->clear();
1206  t_photonEne9x9 ->clear();
1207  t_eleEne9x9 ->clear();
1208  t_muEne9x9 ->clear();
1209 
1210  t_maxNearP7x7 ->clear();
1211  t_cHadronEne7x7 ->clear();
1212  t_cHadronEne7x7_1 ->clear();
1213  t_cHadronEne7x7_2 ->clear();
1214  t_cHadronEne7x7_3 ->clear();
1215  t_nHadronEne7x7 ->clear();
1216  t_photonEne7x7 ->clear();
1217  t_eleEne7x7 ->clear();
1218  t_muEne7x7 ->clear();
1219 
1220  t_maxNearP3x3 ->clear();
1221  t_cHadronEne3x3 ->clear();
1222  t_cHadronEne3x3_1 ->clear();
1223  t_cHadronEne3x3_2 ->clear();
1224  t_cHadronEne3x3_3 ->clear();
1225  t_nHadronEne3x3 ->clear();
1226  t_photonEne3x3 ->clear();
1227  t_eleEne3x3 ->clear();
1228  t_muEne3x3 ->clear();
1229 
1230  t_maxNearP1x1 ->clear();
1231  t_cHadronEne1x1 ->clear();
1232  t_cHadronEne1x1_1 ->clear();
1233  t_cHadronEne1x1_2 ->clear();
1234  t_cHadronEne1x1_3 ->clear();
1235  t_nHadronEne1x1 ->clear();
1236  t_photonEne1x1 ->clear();
1237  t_eleEne1x1 ->clear();
1238  t_muEne1x1 ->clear();
1239 
1240  t_maxNearPHC1x1 ->clear();
1241  t_cHadronEneHC1x1 ->clear();
1242  t_cHadronEneHC1x1_1 ->clear();
1243  t_cHadronEneHC1x1_2 ->clear();
1244  t_cHadronEneHC1x1_3 ->clear();
1245  t_nHadronEneHC1x1 ->clear();
1246  t_photonEneHC1x1 ->clear();
1247  t_eleEneHC1x1 ->clear();
1248  t_muEneHC1x1 ->clear();
1249 
1250  t_maxNearPHC3x3 ->clear();
1251  t_cHadronEneHC3x3 ->clear();
1252  t_cHadronEneHC3x3_1 ->clear();
1253  t_cHadronEneHC3x3_2 ->clear();
1254  t_cHadronEneHC3x3_3 ->clear();
1255  t_nHadronEneHC3x3 ->clear();
1256  t_photonEneHC3x3 ->clear();
1257  t_eleEneHC3x3 ->clear();
1258  t_muEneHC3x3 ->clear();
1259 
1260  t_maxNearPHC5x5 ->clear();
1261  t_cHadronEneHC5x5 ->clear();
1262  t_cHadronEneHC5x5_1 ->clear();
1263  t_cHadronEneHC5x5_2 ->clear();
1264  t_cHadronEneHC5x5_3 ->clear();
1265  t_nHadronEneHC5x5 ->clear();
1266  t_photonEneHC5x5 ->clear();
1267  t_eleEneHC5x5 ->clear();
1268  t_muEneHC5x5 ->clear();
1269 
1270  t_maxNearPHC7x7 ->clear();
1271  t_cHadronEneHC7x7 ->clear();
1272  t_cHadronEneHC7x7_1 ->clear();
1273  t_cHadronEneHC7x7_2 ->clear();
1274  t_cHadronEneHC7x7_3 ->clear();
1275  t_nHadronEneHC7x7 ->clear();
1276  t_photonEneHC7x7 ->clear();
1277  t_eleEneHC7x7 ->clear();
1278  t_muEneHC7x7 ->clear();
1279 
1280  t_maxNearPR ->clear();
1281  t_cHadronEneR ->clear();
1282  t_cHadronEneR_1 ->clear();
1283  t_cHadronEneR_2 ->clear();
1284  t_cHadronEneR_3 ->clear();
1285  t_nHadronEneR ->clear();
1286  t_photonEneR ->clear();
1287  t_eleEneR ->clear();
1288  t_muEneR ->clear();
1289 
1290  t_maxNearPIsoR ->clear();
1291  t_cHadronEneIsoR ->clear();
1292  t_cHadronEneIsoR_1 ->clear();
1293  t_cHadronEneIsoR_2 ->clear();
1294  t_cHadronEneIsoR_3 ->clear();
1295  t_nHadronEneIsoR ->clear();
1296  t_photonEneIsoR ->clear();
1297  t_eleEneIsoR ->clear();
1298  t_muEneIsoR ->clear();
1299 
1300  t_maxNearPHCR ->clear();
1301  t_cHadronEneHCR ->clear();
1302  t_cHadronEneHCR_1 ->clear();
1303  t_cHadronEneHCR_2 ->clear();
1304  t_cHadronEneHCR_3 ->clear();
1305  t_nHadronEneHCR ->clear();
1306  t_photonEneHCR ->clear();
1307  t_eleEneHCR ->clear();
1308  t_muEneHCR ->clear();
1309 
1310  t_maxNearPIsoHCR ->clear();
1311  t_cHadronEneIsoHCR ->clear();
1312  t_cHadronEneIsoHCR_1 ->clear();
1313  t_cHadronEneIsoHCR_2 ->clear();
1314  t_cHadronEneIsoHCR_3 ->clear();
1315  t_nHadronEneIsoHCR ->clear();
1316  t_photonEneIsoHCR ->clear();
1317  t_eleEneIsoHCR ->clear();
1318  t_muEneIsoHCR ->clear();
1319 
1320  t_L1Decision ->clear();
1321  t_L1CenJetPt ->clear();
1322  t_L1CenJetEta ->clear();
1323  t_L1CenJetPhi ->clear();
1324  t_L1FwdJetPt ->clear();
1325  t_L1FwdJetEta ->clear();
1326  t_L1FwdJetPhi ->clear();
1327  t_L1TauJetPt ->clear();
1328  t_L1TauJetEta ->clear();
1329  t_L1TauJetPhi ->clear();
1330  t_L1MuonPt ->clear();
1331  t_L1MuonEta ->clear();
1332  t_L1MuonPhi ->clear();
1333  t_L1IsoEMPt ->clear();
1334  t_L1IsoEMEta ->clear();
1335  t_L1IsoEMPhi ->clear();
1336  t_L1NonIsoEMPt ->clear();
1337  t_L1NonIsoEMEta ->clear();
1338  t_L1NonIsoEMPhi ->clear();
1339  t_L1METPt ->clear();
1340  t_L1METEta ->clear();
1341  t_L1METPhi ->clear();
1342 }
1343 
1345 
1346  int partID[Particles]={11,-11,21,211,-211,321,-321,2212,2112,-2212,-2112,130};
1347  int ix = -1;
1348  for (int ik=0; ik<Particles; ++ik) {
1349  if (pdgId == partID[ik]) {
1350  ix = ik; break;
1351  }
1352  }
1353  return ix;
1354 }
1355 
1356 //define this as a plug-in
std::vector< double > * t_cHadronEneHC1x1_3
std::vector< double > * t_eleEne7x7
std::vector< double > * t_nHadronEne21x21
std::vector< double > * t_cHadronEneHC7x7_2
T getParameter(std::string const &) const
spr::genSimInfo isoinfo25x25
EventNumber_t event() const
Definition: EventID.h:41
std::vector< double > * t_isoTrkEtaAll
TH2D * h_pEta[Particles]
std::vector< double > * t_maxNearPHCR
T getUntrackedParameter(std::string const &, T const &) const
std::vector< double > * t_isoTrkPdgId
std::vector< double > * t_L1FwdJetPhi
std::vector< double > * t_eleEne31x31
std::vector< double > * t_eleEneHC7x7
std::string algoBitToName[nL1BitsMax]
std::vector< int > * t_L1Decision
spr::genSimInfo isoinfo31x31
std::vector< double > * t_cHadronEneIsoR_1
std::vector< double > * t_nHadronEne7x7
std::vector< double > * t_isoTrkPt
std::vector< double > * t_L1TauJetPhi
std::vector< double > * t_L1TauJetPt
std::vector< double > * t_cHadronEneHCR_1
std::vector< spr::propagatedTrackID > propagateCALO(edm::Handle< reco::TrackCollection > &trkCollection, const CaloGeometry *geo, const MagneticField *bField, std::string &theTrackQuality, bool debug=false)
std::vector< double > * t_L1CenJetEta
std::vector< double > * t_photonEne7x7
spr::genSimInfo isoinfo21x21
std::vector< double > * t_L1MuonPt
std::vector< double > * t_isoTrkEta
std::vector< double > * t_cHadronEneHC7x7
std::vector< double > * t_cHadronEneHC7x7_3
std::vector< double > * t_cHadronEne7x7_2
double cHadronEne_[3]
Definition: GenSimInfo.h:47
std::vector< double > * t_cHadronEne15x15_3
std::vector< double > * t_maxNearP15x15
double photonEne
Definition: GenSimInfo.h:45
std::vector< double > * t_nHadronEneHC7x7
std::vector< double > * t_photonEne21x21
std::vector< double > * t_cHadronEneIsoHCR_2
std::vector< double > * t_cHadronEne25x25
std::vector< double > * t_photonEneHC5x5
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:508
std::vector< double > * t_cHadronEneHC1x1_2
edm::EDGetTokenT< l1extra::L1JetParticleCollection > tok_L1extCenJet_
std::vector< double > * t_L1IsoEMEta
static const int Particles
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
std::vector< double > * t_muEneIsoHCR
std::vector< double > * t_eleEne11x11
IsolatedGenParticles(const edm::ParameterSet &)
std::vector< double > * t_cHadronEneR
std::vector< double > * t_eleEne3x3
std::vector< double > * t_L1IsoEMPt
std::vector< double > * t_cHadronEne3x3_2
Geom::Phi< T > phi() const
Definition: PV3DBase.h:69
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
std::vector< double > * t_cHadronEneHC3x3_2
std::vector< double > * t_photonEne1x1
std::vector< double > * t_cHadronEne1x1_2
std::vector< double > * t_nHadronEneR
std::vector< double > * t_cHadronEneIsoR_3
std::vector< double > * t_maxNearP11x11
std::vector< double > * t_maxNearPHC7x7
spr::genSimInfo isoinfoHC3x3
edm::EDGetTokenT< l1extra::L1JetParticleCollection > tok_L1extTauJet_
std::vector< double > * t_cHadronEneHC5x5_2
std::vector< double > * t_photonEneHCR
std::vector< double > * t_L1METEta
std::vector< double > * t_muEneIsoR
std::vector< double > * t_nHadronEne9x9
T * make(const Args &...args) const
make new ROOT object
Definition: TFileService.h:64
std::vector< double > * t_L1MuonEta
std::vector< double > * t_isoTrkPdgIdAll
edm::Service< TFileService > fs
std::vector< double > * t_muEneHC7x7
std::vector< double > * t_cHadronEne31x31
std::vector< double > * t_nHadronEneIsoHCR
std::vector< double > * t_L1FwdJetPt
std::vector< double > * t_cHadronEne31x31_1
std::vector< double > * t_photonEneHC3x3
std::vector< double > * t_cHadronEneIsoHCR_1
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:30
std::vector< double > * t_muEneR
std::vector< double > * t_muEne9x9
std::vector< double > * t_muEne21x21
edm::EDGetTokenT< L1GlobalTriggerReadoutRecord > tok_L1GTrorsrc_
std::vector< double > * t_maxNearP7x7
void getData(T &iHolder) const
Definition: EventSetup.h:78
edm::EDGetTokenT< l1extra::L1MuonParticleCollection > tok_L1extMusrc_
spr::genSimInfo isoinfoHC7x7
std::vector< double > * t_muEneHC1x1
std::vector< double > * t_photonEneHC7x7
const std::vector< L1GlobalTriggerObjectMap > & gtObjectMap() const
get / set the vector of object maps
const Double_t pi
std::vector< double > * t_maxNearPIsoHCR
double cHadronEne
Definition: GenSimInfo.h:45
std::vector< double > * t_L1TauJetEta
std::vector< double > * t_cHadronEneHC5x5
double nHadronEne
Definition: GenSimInfo.h:45
std::vector< double > * t_cHadronEne31x31_2
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
std::vector< double > * t_isoTrkPAll
std::vector< double > * t_nHadronEneHC1x1
spr::genSimInfo isoinfo11x11
std::vector< double > * t_eleEneIsoHCR
std::vector< double > * t_eleEneHC5x5
std::vector< double > * t_cHadronEneIsoHCR
std::vector< double > * t_muEneHCR
int iEvent
Definition: GenABIO.cc:230
std::vector< double > * t_cHadronEne7x7_1
std::vector< double > * t_maxNearP25x25
std::vector< double > * t_cHadronEne3x3_3
std::vector< double > * t_cHadronEneHC7x7_1
std::vector< double > * t_cHadronEneHC5x5_1
edm::EDGetTokenT< l1extra::L1EmParticleCollection > tok_L1Em_
std::vector< double > * t_eleEne25x25
std::vector< double > * t_eleEne9x9
std::vector< double > * t_eleEne1x1
std::vector< double > * t_muEne11x11
std::vector< double > * t_eleEneHCR
std::vector< double > * t_muEne7x7
spr::genSimInfo isoinfoHC5x5
std::vector< double > * t_cHadronEneHC1x1
std::vector< bool > DecisionWord
typedefs
std::vector< double > * t_cHadronEneR_3
std::vector< double > * t_cHadronEne11x11_1
T sqrt(T t)
Definition: SSEVec.h:18
std::vector< double > * t_muEne1x1
std::vector< double > * t_cHadronEne15x15_1
std::vector< double > * t_cHadronEneIsoHCR_3
std::vector< double > * t_cHadronEneIsoR
spr::genSimInfo isoinfoHC1x1
std::vector< double > * t_eleEneHC3x3
std::vector< double > * t_isoTrkDEtaAll
std::vector< double > * t_muEne25x25
std::vector< double > * t_cHadronEne9x9_3
std::vector< double > * t_L1NonIsoEMPt
double DeltaR2(double eta1, double phi1, double eta2, double phi2)
std::vector< double > * t_photonEne25x25
std::vector< double > * t_maxNearP21x21
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::vector< double > * t_maxNearP31x31
std::vector< double > * t_muEneHC3x3
void eGenSimInfo(const DetId &coreDet, HepMC::GenEvent::particle_const_iterator trkItr, std::vector< spr::propagatedGenTrackID > &trackIds, const CaloGeometry *geo, const CaloTopology *caloTopology, int ieta, int iphi, spr::genSimInfo &info, bool debug=false)
Definition: GenSimInfo.cc:13
std::vector< double > * t_cHadronEneHC3x3
std::vector< double > * t_cHadronEne11x11
spr::genSimInfo isoinfoIsoHCR
std::vector< double > * t_cHadronEne25x25_3
std::vector< double > * t_cHadronEneHCR_3
T * make(const Args &...args) const
make new ROOT object
std::vector< double > * t_L1CenJetPt
spr::genSimInfo isoinfo15x15
std::vector< double > * t_maxNearPHC5x5
std::vector< double > * t_cHadronEneHCR_2
std::vector< double > * t_cHadronEne11x11_3
std::vector< double > * t_cHadronEneHCR
std::vector< double > * t_cHadronEne1x1
std::vector< double > * t_isoTrkDPhiAll
std::vector< double > * t_photonEneIsoHCR
bool isValid() const
Definition: HandleBase.h:74
std::vector< double > * t_nHadronEne31x31
std::vector< double > * t_maxNearP3x3
std::vector< double > * t_cHadronEne1x1_1
std::vector< double > * t_cHadronEne21x21_1
const DecisionWord & decisionWord(int bxInEventValue) const
std::vector< double > * t_isoTrkPhiEC
std::vector< double > * t_cHadronEne11x11_2
std::vector< double > * t_L1CenJetPhi
JetCorrectorParameters corr
Definition: classes.h:5
std::vector< double > * t_maxNearP1x1
edm::EDGetTokenT< L1GlobalTriggerObjectMapRecord > tok_L1GTobjmap_
std::vector< double > * t_maxNearPHC3x3
double DeltaPhi(double v1, double v2)
std::vector< double > * t_nHadronEneHCR
std::vector< double > * t_eleEneR
std::vector< double > * t_cHadronEneIsoR_2
std::vector< double > * t_cHadronEne9x9_1
std::vector< double > * t_eleEneIsoR
std::vector< double > * t_cHadronEneR_2
std::vector< double > * t_isoTrkPhiAll
void fillTrack(GlobalPoint &posVec, math::XYZTLorentzVector &momVec, GlobalPoint &posECAL, int pdgId, bool okECAL, bool accpet)
std::vector< double > * t_photonEneHC1x1
std::vector< double > * t_L1FwdJetEta
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
Definition: TFileService.h:69
const HepMC::GenEvent * GetEvent() const
Definition: HepMCProduct.h:38
std::vector< double > * t_maxNearPR
edm::EDGetTokenT< l1extra::L1EmParticleCollection > tok_L1extNonIsoEm_
std::vector< double > * t_muEne31x31
void fillIsolatedTrack(math::XYZTLorentzVector &momVec, GlobalPoint &posECAL, int pdgId)
std::vector< double > * t_isoTrkPtAll
double genPartEtaBins[NEtaBins+1]
std::vector< double > * t_isoTrkP
std::vector< double > * t_nHadronEne11x11
std::vector< double > * t_nHadronEneIsoR
std::vector< double > * t_L1NonIsoEMPhi
std::vector< double > * t_eleEne21x21
std::vector< double > * t_maxNearPHC1x1
std::vector< double > * t_cHadronEne9x9_2
std::vector< double > * t_cHadronEne31x31_3
const T & get() const
Definition: EventSetup.h:55
std::vector< double > * t_maxNearP9x9
std::vector< double > * t_photonEne31x31
std::vector< double > * t_nHadronEneHC3x3
std::vector< double > * t_cHadronEne15x15_2
std::vector< double > * t_photonEne15x15
std::vector< double > * t_L1NonIsoEMEta
std::vector< double > * t_isoTrkPhi
std::vector< double > * t_nHadronEne15x15
std::vector< double > * t_cHadronEneHC1x1_1
std::vector< double > * t_photonEneR
std::vector< double > * t_isoTrkEtaEC
std::vector< double > * t_nHadronEne1x1
std::vector< double > * t_cHadronEne3x3
edm::EDGetTokenT< edm::HepMCProduct > tok_hepmc_
void analyze(const edm::Event &, const edm::EventSetup &) override
std::vector< double > * t_cHadronEne25x25_2
const MagneticField * bField
std::vector< double > * t_L1IsoEMPhi
std::vector< double > * t_cHadronEneHC5x5_3
T eta() const
Definition: PV3DBase.h:76
edm::EDGetTokenT< reco::GenParticleCollection > tok_genParticles_
edm::EventID id() const
Definition: EventBase.h:60
std::vector< double > * t_photonEne9x9
std::vector< double > * t_L1METPhi
std::vector< double > * t_nHadronEne25x25
std::vector< double > * t_photonEne3x3
std::vector< double > * t_cHadronEneHC3x3_3
std::vector< double > * t_eleEneHC1x1
std::vector< double > * t_photonEne11x11
void hGenSimInfo(const DetId &coreDet, HepMC::GenEvent::particle_const_iterator trkItr, std::vector< spr::propagatedGenTrackID > &trackIds, const HcalTopology *topology, int ieta, int iphi, spr::genSimInfo &info, bool includeHO=false, bool debug=false)
Definition: GenSimInfo.cc:61
std::vector< double > * t_muEne3x3
double genPartPBins[NPBins+1]
Definition: tree.py:1
std::vector< double > * t_cHadronEne9x9
std::vector< double > * t_muEne15x15
std::vector< double > * t_cHadronEne21x21_2
std::vector< double > * t_cHadronEne3x3_1
std::vector< double > * t_cHadronEneHC3x3_1
edm::EDGetTokenT< l1extra::L1JetParticleCollection > tok_L1extFwdJet_
std::vector< double > * t_cHadronEne25x25_1
std::vector< double > * t_cHadronEne15x15
std::vector< double > * t_cHadronEne21x21
std::vector< double > * t_L1METPt
T const * product() const
Definition: ESHandle.h:86
std::vector< double > * t_muEneHC5x5
std::vector< double > * t_cHadronEneR_1
std::vector< double > * t_cHadronEne21x21_3
std::vector< double > * t_L1MuonPhi
double maxNearP
Definition: GenSimInfo.h:44
std::vector< double > * t_cHadronEne7x7_3
double DeltaR(double eta1, double phi1, double eta2, double phi2)
std::vector< double > * t_photonEneIsoR
std::vector< double > * t_cHadronEne7x7
std::vector< double > * t_eleEne15x15
std::vector< double > * t_maxNearPIsoR
std::vector< double > * t_nHadronEne3x3
std::vector< double > * t_nHadronEneHC5x5
std::vector< double > * t_isoTrkEne
std::vector< double > * t_cHadronEne1x1_3