CMS 3D CMS Logo

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