CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
IsolatedTracksNxN.cc
Go to the documentation of this file.
1 // -*- C++ -*
2 //
3 // Package: IsolatedTracksNxN
4 // Class: IsolatedTracksNxN
5 //
13 //
14 // Original Author: Seema Sharma
15 // Created: Mon Aug 10 15:30:40 CST 2009
16 //
17 //
18 
21 
31 
33 
34  //now do what ever initialization is needed
35  doMC = iConfig.getUntrackedParameter<bool> ("DoMC", false);
36  myverbose_ = iConfig.getUntrackedParameter<int> ("Verbosity", 5 );
37  pvTracksPtMin_ = iConfig.getUntrackedParameter<double>("PVTracksPtMin", 1.0 );
38  debugTrks_ = iConfig.getUntrackedParameter<int> ("DebugTracks" );
39  printTrkHitPattern_ = iConfig.getUntrackedParameter<bool> ("PrintTrkHitPattern" );
40  minTrackP_ = iConfig.getUntrackedParameter<double>("minTrackP", 1.0 );
41  maxTrackEta_ = iConfig.getUntrackedParameter<double>("maxTrackEta", 5.0 );
42  debugL1Info_ = iConfig.getUntrackedParameter<bool> ("DebugL1Info", false );
43  L1extraTauJetSource_ = iConfig.getParameter<edm::InputTag> ("L1extraTauJetSource" );
44  L1extraCenJetSource_ = iConfig.getParameter<edm::InputTag> ("L1extraCenJetSource" );
45  L1extraFwdJetSource_ = iConfig.getParameter<edm::InputTag> ("L1extraFwdJetSource" );
46  L1extraMuonSource_ = iConfig.getParameter<edm::InputTag> ("L1extraMuonSource" );
47  L1extraIsoEmSource_ = iConfig.getParameter<edm::InputTag> ("L1extraIsoEmSource" );
48  L1extraNonIsoEmSource_ = iConfig.getParameter<edm::InputTag> ("L1extraNonIsoEmSource" );
49  L1GTReadoutRcdSource_ = iConfig.getParameter<edm::InputTag> ("L1GTReadoutRcdSource" );
50  L1GTObjectMapRcdSource_= iConfig.getParameter<edm::InputTag> ("L1GTObjectMapRcdSource");
51  JetSrc_ = iConfig.getParameter<edm::InputTag> ("JetSource");
52  JetExtender_ = iConfig.getParameter<edm::InputTag> ("JetExtender");
53  tMinE_ = iConfig.getUntrackedParameter<double>("TimeMinCutECAL", -500.);
54  tMaxE_ = iConfig.getUntrackedParameter<double>("TimeMaxCutECAL", 500.);
55  tMinH_ = iConfig.getUntrackedParameter<double>("TimeMinCutHCAL", -500.);
56  tMaxH_ = iConfig.getUntrackedParameter<double>("TimeMaxCutHCAL", 500.);
57 
58  //edm::ParameterSet parameters = iConfig.getParameter<edm::ParameterSet>("TrackAssociatorParameters");
59  //parameters_.loadParameters( parameters );
60  //trackAssociator_ = new TrackDetectorAssociator();
61  //trackAssociator_->useDefaultPropagator();
62 
63  if(myverbose_>=0) {
64  std::cout <<"Parameters read from config file \n"
65  <<" doMC " << doMC
66  <<"\t myverbose_ " << myverbose_
67  <<"\t minTrackP_ " << minTrackP_
68  << "\t maxTrackEta_ " << maxTrackEta_
69  << "\t tMinE_ " << tMinE_
70  << "\t tMaxE_ " << tMaxE_
71  << "\t tMinH_ " << tMinH_
72  << "\t tMaxH_ " << tMaxH_ << "\n"
73  << std::endl;
74  }
75 
76  initL1 = false;
77 
78 }
79 
81  //delete trackAssociator_;
82 }
83 
85  // std::cout<< tMinE_ << " " << tMaxE_ << " HCAL " << tMinH_ << " " << tMaxH_ << std::endl;
86 
88  iSetup.get<IdealMagneticFieldRecord>().get(bFieldH);
89  bField = bFieldH.product();
90 
92 
93  t_RunNo = iEvent.id().run();
94  t_EvtNo = iEvent.id().event();
95  t_Lumi = iEvent.luminosityBlock();
96  t_Bunch = iEvent.bunchCrossing();
97 
98  nEventProc++;
99 
101  iEvent.getByLabel("generalTracks", trkCollection);
102  reco::TrackCollection::const_iterator trkItr;
103  if(debugTrks_>1){
104  std::cout << "Track Collection: " << std::endl;
105  std::cout << "Number of Tracks " << trkCollection->size() << std::endl;
106  }
107  std::string theTrackQuality = "highPurity";
108  reco::TrackBase::TrackQuality trackQuality_=reco::TrackBase::qualityByName(theTrackQuality);
109 
110  //===================== save L1 Trigger information =======================
111  // get L1TriggerReadout records
113  iEvent.getByLabel(L1GTReadoutRcdSource_, gtRecord);
114 
115  // sanity check on L1 Trigger Records
116  if (!gtRecord.isValid()) {
117  std::cout << "\nL1GlobalTriggerReadoutRecord with \n \nnot found"
118  "\n --> returning false by default!\n" << std::endl;
119  }
120 
122  iSetup.get<L1GtTriggerMenuRcd>().get(gtOMRec) ;
123 
124  // L1 decision word
125  const DecisionWord dWord = gtRecord->decisionWord();
126  unsigned int numberTriggerBits= dWord.size();
127 
128  // just print the L1Bit number and AlgoName in first event
129  /*
130  if ( !initL1){
131  initL1=true;
132  std::cout << "\n Number of Trigger bits " << numberTriggerBits << "\n\n";
133  std::cout << "\tBit \t L1 Algorithm " << std::endl;
134 
135  // get ObjectMaps from ObjectMapRecord
136  const std::vector<L1GlobalTriggerObjectMap>& objMapVec = gtOMRec->gtObjectMap();
137  for (std::vector<L1GlobalTriggerObjectMap>::const_iterator itMap = objMapVec.begin();
138  itMap != objMapVec.end(); ++itMap) {
139 
140  // Get trigger bits
141  int itrig = (*itMap).algoBitNumber();
142 
143  // Get trigger names
144  algoBitToName[itrig] = (*itMap).algoName();
145  std::cout << "\t" << itrig << "\t" << algoBitToName[itrig] << std::endl;
146 
147  // store the algoNames as bin labels of a histogram
148  h_L1AlgoNames->GetXaxis()->SetBinLabel(itrig+1, algoBitToName[itrig].c_str());
149  } // end of for loop
150  } // end of initL1
151  */
152 
153  if ( !initL1){
154  initL1=true;
155  // std::cout << "\n Number of Trigger bits " << numberTriggerBits << "\n\n";
156  //std::cout << "\tBit \t L1 Algorithm " << std::endl;
157  int itrig=0;
158  for (CItAlgo algo = (*gtOMRec.product()).gtAlgorithmMap().begin(); algo!=(*gtOMRec.product()).gtAlgorithmMap().end(); ++algo, itrig++) {
159  // std::cout << "Name: " << (algo->second).algoName() << " Alias: " << (algo->second).algoAlias() << std::endl;
160  algoBitToName[itrig] = (algo->second).algoName() ;
161  }
162  } // end of initL1
163 
164  for (unsigned int iBit = 0; iBit < numberTriggerBits; ++iBit) {
165  bool accept = dWord[iBit];
166  //if (accept) h_L1Results2->Fill(float(iBit));
167 
168  // fill the trigger map
171  if (trig_iter==l1TriggerMap.end())
172  l1TriggerMap.insert(valType(algoBitToName[iBit],accept));
173  else
174  trig_iter->second=accept;
175  }
176 
177 
178  // save L1 decision for each event
179  for (unsigned int iBit = 0; iBit < numberTriggerBits; ++iBit) {
180 
181  bool accept = dWord[iBit];
182  t_L1Decision->push_back(accept);
183 
184  // fill the trigger map
185  if(debugL1Info_) std::cout << "Bit " << iBit << " " << algoBitToName[iBit] << " " << accept << std::endl;
186 
187  if(accept) h_L1AlgoNames->Fill(iBit);
188  }
189 
190  //===================
191 
193  iEvent.getByLabel("offlinePrimaryVertices",recVtxs);
194 
195  std::vector<reco::Track> svTracks;
196  math::XYZPoint leadPV(0,0,0);
197  double sumPtMax = -1.0;
198  for(unsigned int ind=0; ind < recVtxs->size(); ind++) {
199  if (!((*recVtxs)[ind].isFake())) {
200 
201  double vtxTrkSumPt=0.0, vtxTrkSumPtWt=0.0;
202  int vtxTrkNWt =0;
203  double vtxTrkSumPtHP=0.0, vtxTrkSumPtHPWt=0.0;
204  int vtxTrkNHP =0, vtxTrkNHPWt =0;
205 
206  reco::Vertex::trackRef_iterator vtxTrack = (*recVtxs)[ind].tracks_begin();
207  for (vtxTrack = (*recVtxs)[ind].tracks_begin(); vtxTrack!=(*recVtxs)[ind].tracks_end(); vtxTrack++) {
208 
209  bool trkQuality = (*vtxTrack)->quality(trackQuality_);
210 
211  if((*vtxTrack)->pt()<pvTracksPtMin_) continue;
212 
213  vtxTrkSumPt += (*vtxTrack)->pt();
214  if( trkQuality ) {
215  vtxTrkSumPtHP += (*vtxTrack)->pt();
216  vtxTrkNHP++;
217  }
218 
219  double weight = (*recVtxs)[ind].trackWeight(*vtxTrack);
220  h_PVTracksWt ->Fill(weight);
221  if( weight>0.5) {
222  vtxTrkSumPtWt += (*vtxTrack)->pt();
223  vtxTrkNWt++;
224  if( trkQuality ) {
225  vtxTrkSumPtHPWt += (*vtxTrack)->pt();
226  vtxTrkNHPWt++;
227  }
228  }
229  }
230 
231  if(vtxTrkSumPt>sumPtMax) {
232  sumPtMax = vtxTrkSumPt;
233  leadPV = math::XYZPoint( (*recVtxs)[ind].x(),(*recVtxs)[ind].y(), (*recVtxs)[ind].z() );
234  }
235 
236  t_PVx ->push_back( (*recVtxs)[ind].x() );
237  t_PVy ->push_back( (*recVtxs)[ind].y() );
238  t_PVz ->push_back( (*recVtxs)[ind].z() );
239  t_PVisValid ->push_back( (*recVtxs)[ind].isValid() );
240  t_PVNTracks ->push_back( (*recVtxs)[ind].tracksSize() );
241  t_PVndof ->push_back( (*recVtxs)[ind].ndof() );
242  t_PVNTracksWt ->push_back( vtxTrkNWt );
243  t_PVTracksSumPt ->push_back( vtxTrkSumPt );
244  t_PVTracksSumPtWt->push_back( vtxTrkSumPtWt );
245 
246  t_PVNTracksHP ->push_back( vtxTrkNHP );
247  t_PVNTracksHPWt ->push_back( vtxTrkNHPWt );
248  t_PVTracksSumPtHP ->push_back( vtxTrkSumPtHP );
249  t_PVTracksSumPtHPWt->push_back( vtxTrkSumPtHPWt );
250  if(myverbose_==4) {
251  std::cout<<"PV "<<ind<<" isValid "<<(*recVtxs)[ind].isValid()<<" isFake "<<(*recVtxs)[ind].isFake()
252  <<" hasRefittedTracks() "<<ind<<" "<<(*recVtxs)[ind].hasRefittedTracks()
253  <<" refittedTrksSize "<<(*recVtxs)[ind].refittedTracks().size()
254  <<" tracksSize() "<<(*recVtxs)[ind].tracksSize()<<" sumPt "<<vtxTrkSumPt
255  <<std::endl;
256  }
257  }
258  }
259 
260  // Get the beamspot
261  edm::Handle<reco::BeamSpot> beamSpotH;
262  iEvent.getByLabel("offlineBeamSpot", beamSpotH);
263  math::XYZPoint bspot;
264  bspot = ( beamSpotH.isValid() ) ? beamSpotH->position() : math::XYZPoint(0, 0, 0);
265 
266  //===================
267 
268  // L1Taus
270  iEvent.getByLabel(L1extraTauJetSource_,l1TauHandle);
271  l1extra::L1JetParticleCollection::const_iterator itr;
272  for(itr = l1TauHandle->begin(); itr != l1TauHandle->end(); ++itr ) {
273  t_L1TauJetPt ->push_back( itr->pt() );
274  t_L1TauJetEta ->push_back( itr->eta() );
275  t_L1TauJetPhi ->push_back( itr->phi() );
276  if(debugL1Info_) {
277  std::cout << "tauJ p/pt " << itr->momentum() << " " << itr->pt()
278  << " eta/phi " << itr->eta() << " " << itr->phi()
279  << std::endl;
280  }
281  }
282 
283  // L1 Central Jets
285  iEvent.getByLabel(L1extraCenJetSource_,l1CenJetHandle);
286  for( itr = l1CenJetHandle->begin(); itr != l1CenJetHandle->end(); ++itr ) {
287  t_L1CenJetPt ->push_back( itr->pt() );
288  t_L1CenJetEta ->push_back( itr->eta() );
289  t_L1CenJetPhi ->push_back( itr->phi() );
290  if(debugL1Info_) {
291  std::cout << "cenJ p/pt " << itr->momentum() << " " << itr->pt()
292  << " eta/phi " << itr->eta() << " " << itr->phi()
293  << std::endl;
294  }
295  }
296 
297  // L1 Forward Jets
299  iEvent.getByLabel(L1extraFwdJetSource_,l1FwdJetHandle);
300  for( itr = l1FwdJetHandle->begin(); itr != l1FwdJetHandle->end(); ++itr ) {
301  t_L1FwdJetPt ->push_back( itr->pt() );
302  t_L1FwdJetEta ->push_back( itr->eta() );
303  t_L1FwdJetPhi ->push_back( itr->phi() );
304  if(debugL1Info_) {
305  std::cout << "fwdJ p/pt " << itr->momentum() << " " << itr->pt()
306  << " eta/phi " << itr->eta() << " " << itr->phi()
307  << std::endl;
308  }
309  }
310 
311  // L1 Isolated EM onjects
312  l1extra::L1EmParticleCollection::const_iterator itrEm;
314  iEvent.getByLabel(L1extraIsoEmSource_, l1IsoEmHandle);
315  for( itrEm = l1IsoEmHandle->begin(); itrEm != l1IsoEmHandle->end(); ++itrEm ) {
316  t_L1IsoEMPt ->push_back( itrEm->pt() );
317  t_L1IsoEMEta ->push_back( itrEm->eta() );
318  t_L1IsoEMPhi ->push_back( itrEm->phi() );
319  if(debugL1Info_) {
320  std::cout << "isoEm p/pt " << itrEm->momentum() << " " << itrEm->pt()
321  << " eta/phi " << itrEm->eta() << " " << itrEm->phi()
322  << std::endl;
323  }
324  }
325 
326  // L1 Non-Isolated EM onjects
328  iEvent.getByLabel(L1extraNonIsoEmSource_, l1NonIsoEmHandle);
329  for( itrEm = l1NonIsoEmHandle->begin(); itrEm != l1NonIsoEmHandle->end(); ++itrEm ) {
330  t_L1NonIsoEMPt ->push_back( itrEm->pt() );
331  t_L1NonIsoEMEta ->push_back( itrEm->eta() );
332  t_L1NonIsoEMPhi ->push_back( itrEm->phi() );
333  if(debugL1Info_) {
334  std::cout << "nonIsoEm p/pt " << itrEm->momentum() << " " << itrEm->pt()
335  << " eta/phi " << itrEm->eta() << " " << itrEm->phi()
336  << std::endl;
337  }
338  }
339 
340  // L1 Muons
341  l1extra::L1MuonParticleCollection::const_iterator itrMu;
343  iEvent.getByLabel(L1extraMuonSource_, l1MuHandle);
344  for( itrMu = l1MuHandle->begin(); itrMu != l1MuHandle->end(); ++itrMu ) {
345  t_L1MuonPt ->push_back( itrMu->pt() );
346  t_L1MuonEta ->push_back( itrMu->eta() );
347  t_L1MuonPhi ->push_back( itrMu->phi() );
348  if(debugL1Info_) {
349  std::cout << "l1muon p/pt " << itrMu->momentum() << " " << itrMu->pt()
350  << " eta/phi " << itrMu->eta() << " " << itrMu->phi()
351  << std::endl;
352  }
353  }
354  //=====================================================================
355 
357  iEvent.getByLabel(JetSrc_,jets);
359  iEvent.getByLabel(JetExtender_,jetExtender);
360 
361  for(unsigned int ijet=0;ijet<(*jets).size();ijet++) {
362  t_jetPt ->push_back( (*jets)[ijet].pt() );
363  t_jetEta ->push_back( (*jets)[ijet].eta() );
364  t_jetPhi ->push_back( (*jets)[ijet].phi() );
365  //t_nTrksJetVtx ->push_back( reco::JetExtendedAssociation::tracksAtVertexNumber(*jetExtender,(*jets)[ijet]) );
366  //t_nTrksJetCalo ->push_back( reco::JetExtendedAssociation::tracksAtCaloNumber (*jetExtender,(*jets)[ijet]) );
367  t_nTrksJetVtx ->push_back( -1.0);
368  t_nTrksJetCalo ->push_back( -1.0);
369  }
370 
371  //=====================================================================
372 
373  // get handles to calogeometry and calotopology
375  iSetup.get<CaloGeometryRecord>().get(pG);
376  const CaloGeometry* geo = pG.product();
377 
378  edm::ESHandle<CaloTopology> theCaloTopology;
379  iSetup.get<CaloTopologyRecord>().get(theCaloTopology);
380  const CaloTopology *caloTopology = theCaloTopology.product();
381 
383  iSetup.get<IdealGeometryRecord>().get(htopo);
384  const HcalTopology* theHBHETopology = htopo.product();
385 
386  edm::Handle<EcalRecHitCollection> barrelRecHitsHandle;
387  edm::Handle<EcalRecHitCollection> endcapRecHitsHandle;
388  iEvent.getByLabel("ecalRecHit","EcalRecHitsEB",barrelRecHitsHandle);
389  iEvent.getByLabel("ecalRecHit","EcalRecHitsEE",endcapRecHitsHandle);
390 
391  // Retrieve the good/bad ECAL channels from the DB
393  iSetup.get<EcalChannelStatusRcd>().get(ecalChStatus);
394  const EcalChannelStatus* theEcalChStatus = ecalChStatus.product();
395 
396  // Retrieve trigger tower map
397  //const edm::ESHandle<EcalTrigTowerConstituentsMap> hTtmap;
399  iSetup.get<IdealGeometryRecord>().get(hTtmap);
400  const EcalTrigTowerConstituentsMap& ttMap = *hTtmap;
401 
403  iEvent.getByLabel("hbhereco",hbhe);
404  const HBHERecHitCollection Hithbhe = *(hbhe.product());
405 
406  //get Handles to SimTracks and SimHits
408  if (doMC) iEvent.getByLabel("g4SimHits",SimTk);
409  edm::SimTrackContainer::const_iterator simTrkItr;
410 
412  if (doMC) iEvent.getByLabel("g4SimHits",SimVtx);
413  edm::SimVertexContainer::const_iterator vtxItr = SimVtx->begin();
414 
415  //get Handles to PCaloHitContainers of eb/ee/hbhe
417  if (doMC) iEvent.getByLabel("g4SimHits", "EcalHitsEB", pcaloeb);
418 
420  if (doMC) iEvent.getByLabel("g4SimHits", "EcalHitsEE", pcaloee);
421 
423  if (doMC) iEvent.getByLabel("g4SimHits", "HcalHits", pcalohh);
424 
425  //associates tracker rechits/simhits to a track
426  TrackerHitAssociator* associate=0;
427  if (doMC) associate = new TrackerHitAssociator(iEvent);
428 
429  std::vector<int> ifGood(trkCollection->size(), 1);
430 
431  h_nTracks->Fill(trkCollection->size());
432 
433  int nTracks = 0;
434  t_nTracks = 0;
435 
436  t_nTracks = trkCollection->size();
437 
438  //decide the goodness of each track for this track collection
439  for( trkItr = trkCollection->begin(),nTracks=0; trkItr != trkCollection->end(); ++trkItr, nTracks++){
440  const reco::Track* pTrack = &(*trkItr);
441  bool trkQuality = pTrack->quality(trackQuality_);
442  if( !trkQuality ) ifGood[nTracks]=0;
443  }
444 
445  // get the list of DetIds closest to the impact point of track on surface calorimeters
446  std::vector<spr::propagatedTrackID> trkCaloDets;
447  spr::propagateCALO(trkCollection, geo, bField, theTrackQuality, trkCaloDets, false);
448  std::vector<spr::propagatedTrackID>::const_iterator trkDetItr;
449 
450  if(myverbose_>2) {
451  for(trkDetItr = trkCaloDets.begin(); trkDetItr != trkCaloDets.end(); trkDetItr++){
452  std::cout<<trkDetItr->trkItr->p()<<" "<<trkDetItr->trkItr->eta()<<" "<<trkDetItr->okECAL<<" ";
453  if(trkDetItr->detIdECAL.subdetId() == EcalBarrel) std::cout << (EBDetId)trkDetItr->detIdECAL <<" ";
454  else std::cout << (EEDetId)trkDetItr->detIdECAL <<" ";
455  std::cout<<trkDetItr->okHCAL<<" ";
456  if(trkDetItr->okHCAL) std::cout<<(HcalDetId)trkDetItr->detIdHCAL;
457  std::cout << std::endl;
458  }
459  }
460 
461  for(trkDetItr = trkCaloDets.begin(),nTracks=0; trkDetItr != trkCaloDets.end(); trkDetItr++,nTracks++){
462  const reco::Track* pTrack = &(*(trkDetItr->trkItr));
463 
464  const reco::HitPattern& hitp = pTrack->hitPattern();
465  int nLayersCrossed = hitp.trackerLayersWithMeasurement() ;
466  int nOuterHits = hitp.stripTOBLayersWithMeasurement()+hitp.stripTECLayersWithMeasurement() ;
467  const reco::HitPattern& hitpIn = pTrack->trackerExpectedHitsInner();
468  const reco::HitPattern& hitpOut = pTrack->trackerExpectedHitsOuter();
469 
470  double eta1 = pTrack->momentum().eta();
471  double phi1 = pTrack->momentum().phi();
472  double etaEcal1 = trkDetItr->etaECAL;
473  double phiEcal1 = trkDetItr->phiECAL;
474  double etaHcal1 = trkDetItr->etaHCAL;
475  double phiHcal1 = trkDetItr->phiHCAL;
476  double pt1 = pTrack->pt();
477  double p1 = pTrack->p();
478  double dxy1 = pTrack->dxy();
479  double dz1 = pTrack->dz();
480  double dxybs1 = beamSpotH.isValid() ? pTrack->dxy(bspot) : pTrack->dxy();
481  double dzbs1 = beamSpotH.isValid() ? pTrack->dz(bspot) : pTrack->dz();
482  double dxypv1 = (recVtxs->size()>0 && !((*recVtxs)[0].isFake())) ? pTrack->dxy(leadPV) : pTrack->dxy();
483  double dzpv1 = (recVtxs->size()>0 && !((*recVtxs)[0].isFake())) ? pTrack->dz(leadPV) : pTrack->dz();
484  double chisq1 = pTrack->normalizedChi2();
485 
486  h_recEtaPt_0->Fill(eta1, pt1);
487  h_recEtaP_0 ->Fill(eta1, p1);
488  h_recPt_0 ->Fill(pt1);
489  h_recP_0 ->Fill(p1);
490  h_recEta_0 ->Fill(eta1);
491  h_recPhi_0 ->Fill(phi1);
492 
493  if(ifGood[nTracks] && nLayersCrossed>7 ) {
494  h_recEtaPt_1->Fill(eta1, pt1);
495  h_recEtaP_1 ->Fill(eta1, p1);
496  h_recPt_1 ->Fill(pt1);
497  h_recP_1 ->Fill(p1);
498 
499 
500  h_recEta_1 ->Fill(eta1);
501  h_recPhi_1 ->Fill(phi1);
502  }
503 
504  if( ! ifGood[nTracks] ) continue;
505  if( pt1>2.0 && nLayersCrossed>7) {
506  t_trackPAll ->push_back( p1 );
507  t_trackEtaAll ->push_back( eta1 );
508  t_trackPhiAll ->push_back( phi1 );
509  t_trackPtAll ->push_back( pt1 );
510  t_trackDxyAll ->push_back( dxy1 );
511  t_trackDzAll ->push_back( dz1 );
512  t_trackDxyPVAll ->push_back( dxypv1 );
513  t_trackDzPVAll ->push_back( dzpv1 );
514  t_trackChiSqAll ->push_back( chisq1 );
515  }
516  if (doMC) {
517  edm::SimTrackContainer::const_iterator matchedSimTrkAll = spr::matchedSimTrack(iEvent, SimTk, SimVtx, pTrack, *associate, false);
518  if( matchedSimTrkAll != SimTk->end()) t_trackPdgIdAll->push_back( matchedSimTrkAll->type() );
519  }
520 
521  if( pt1>minTrackP_ && std::abs(eta1)<maxTrackEta_ && trkDetItr->okECAL) {
522 
523  double maxNearP31x31=999.0, maxNearP25x25=999.0, maxNearP21x21=999.0, maxNearP15x15=999.0;
524  //double maxNearP13x13=999.0, maxNearP11x11=999.0, maxNearP9x9 =999.0, maxNearP7x7 =999.0;
525 
526  maxNearP31x31 = spr::chargeIsolationEcal(nTracks, trkCaloDets, geo, caloTopology, 15,15);
527  maxNearP25x25 = spr::chargeIsolationEcal(nTracks, trkCaloDets, geo, caloTopology, 12,12);
528  maxNearP21x21 = spr::chargeIsolationEcal(nTracks, trkCaloDets, geo, caloTopology, 10,10);
529  maxNearP15x15 = spr::chargeIsolationEcal(nTracks, trkCaloDets, geo, caloTopology, 7, 7);
530  //maxNearP13x13 = spr::chargeIsolationEcal(nTracks, trkCaloDets, geo, caloTopology, 6, 6);
531  //maxNearP11x11 = spr::chargeIsolationEcal(nTracks, trkCaloDets, geo, caloTopology, 5, 5);
532  //maxNearP9x9 = spr::chargeIsolationEcal(nTracks, trkCaloDets, geo, caloTopology, 4, 4);
533  //maxNearP7x7 = spr::chargeIsolationEcal(nTracks, trkCaloDets, geo, caloTopology, 3, 3);
534 
535  int iTrkEtaBin=-1, iTrkMomBin=-1;
536  for(unsigned int ieta=0; ieta<NEtaBins; ieta++) {
537  if(std::abs(eta1)>genPartEtaBins[ieta] && std::abs(eta1)<genPartEtaBins[ieta+1] ) iTrkEtaBin = ieta;
538  }
539  for(unsigned int ipt=0; ipt<NPBins; ipt++) {
540  if( p1>genPartPBins[ipt] && p1<genPartPBins[ipt+1] ) iTrkMomBin = ipt;
541  }
542  if( iTrkMomBin>=0 && iTrkEtaBin>=0 ) {
543  h_maxNearP31x31[iTrkMomBin][iTrkEtaBin]->Fill( maxNearP31x31 );
544  h_maxNearP25x25[iTrkMomBin][iTrkEtaBin]->Fill( maxNearP25x25 );
545  h_maxNearP21x21[iTrkMomBin][iTrkEtaBin]->Fill( maxNearP21x21 );
546  h_maxNearP15x15[iTrkMomBin][iTrkEtaBin]->Fill( maxNearP15x15 );
547  }
548  if( maxNearP31x31<0.0 && nLayersCrossed>7 && nOuterHits>4) {
549  h_recEtaPt_2->Fill(eta1, pt1);
550  h_recEtaP_2 ->Fill(eta1, p1);
551  h_recPt_2 ->Fill(pt1);
552  h_recP_2 ->Fill(p1);
553  h_recEta_2 ->Fill(eta1);
554  h_recPhi_2 ->Fill(phi1);
555  }
556 
557  // if isolated in 7x7 then store the further quantities
558  //if( maxNearP7x7<0.0) {
559  if( maxNearP31x31<0.0) {
560 
561  // get the matching simTrack
562  double simTrackP = -1;
563  if (doMC) {
564  edm::SimTrackContainer::const_iterator matchedSimTrk = spr::matchedSimTrack(iEvent, SimTk, SimVtx, pTrack, *associate, false);
565  if( matchedSimTrk != SimTk->end() )simTrackP = matchedSimTrk->momentum().P();
566  }
567  // get ECal Tranverse Profile
568  //double e3x3=0, e5x5=0, e7x7=0, e9x9=0, e11x11=0, e13x13=0, e15x15=0, e21x21=0, e25x25=0, e31x31=0;
569  //double e7x7_10Sig=0, e9x9_10Sig=0, e11x11_10Sig=0, e15x15_10Sig=0;
570  //double e7x7_15Sig=0, e9x9_15Sig=0, e11x11_15Sig=0, e15x15_15Sig=0;
571  //double e7x7_20Sig=0, e9x9_20Sig=0, e11x11_20Sig=0, e15x15_20Sig=0;
572  //double e7x7_25Sig=0, e9x9_25Sig=0, e11x11_25Sig=0, e15x15_25Sig=0;
573  //double e7x7_30Sig=0, e9x9_30Sig=0, e11x11_30Sig=0, e15x15_30Sig=0;
574 
575  std::pair<double, bool> e3x3P, e5x5P, e7x7P, e9x9P, e11x11P, e13x13P, e15x15P, e21x21P, e25x25P, e31x31P;
576  std::pair<double, bool> e7x7_10SigP, e9x9_10SigP, e11x11_10SigP, e15x15_10SigP;
577  std::pair<double, bool> e7x7_15SigP, e9x9_15SigP, e11x11_15SigP, e15x15_15SigP;
578  std::pair<double, bool> e7x7_20SigP, e9x9_20SigP, e11x11_20SigP, e15x15_20SigP;
579  std::pair<double, bool> e7x7_25SigP, e9x9_25SigP, e11x11_25SigP, e15x15_25SigP;
580  std::pair<double, bool> e7x7_30SigP, e9x9_30SigP, e11x11_30SigP, e15x15_30SigP;
581 
582  spr::caloSimInfo simInfo3x3, simInfo5x5, simInfo7x7, simInfo9x9;
583  spr::caloSimInfo simInfo11x11, simInfo13x13, simInfo15x15, simInfo21x21, simInfo25x25, simInfo31x31;
584  double trkEcalEne=0;
585 
586  const DetId isoCell = trkDetItr->detIdECAL;
587  /*
588  e3x3 = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,1,1, -100.0, -100.0);
589  e5x5 = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,2,2, -100.0, -100.0);
590  e7x7 = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,3,3, -100.0, -100.0);
591  e9x9 = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,4,4, -100.0, -100.0);
592  e11x11 = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,5,5, -100.0, -100.0);
593  e13x13 = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,6,6, -100.0, -100.0);
594  e15x15 = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,7,7, -100.0, -100.0);
595  e21x21 = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,10,10, -100.0, -100.0);
596  e25x25 = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,12,12, -100.0, -100.0);
597  e31x31 = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,15,15, -100.0, -100.0);
598 
599  e7x7_10Sig = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,3,3, 0.030, 0.150);
600  e9x9_10Sig = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,4,4, 0.030, 0.150);
601  e11x11_10Sig = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,5,5, 0.030, 0.150);
602  e15x15_10Sig = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,7,7, 0.030, 0.150);
603 
604  e7x7_15Sig = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,3,3, 0.045, 0.225);
605  e9x9_15Sig = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,4,4, 0.045, 0.225);
606  e11x11_15Sig = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,5,5, 0.045, 0.225);
607  e15x15_15Sig = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,7,7, 0.045, 0.225);
608 
609  e7x7_20Sig = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,3,3, 0.060, 0.300);
610  e9x9_20Sig = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,4,4, 0.060, 0.300);
611  e11x11_20Sig = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,5,5, 0.060, 0.300);
612  e15x15_20Sig = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,7,7, 0.060, 0.300);
613 
614  e7x7_25Sig = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,3,3, 0.075, 0.375);
615  e9x9_25Sig = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,4,4, 0.075, 0.375);
616  e11x11_25Sig = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,5,5, 0.075, 0.375);
617  e15x15_25Sig = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,7,7, 0.075, 0.375);
618 
619  e7x7_30Sig = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,3,3, 0.090, 0.450);
620  e9x9_30Sig = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,4,4, 0.090, 0.450);
621  e11x11_30Sig = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,5,5, 0.090, 0.450);
622  e15x15_30Sig = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, geo, caloTopology,7,7, 0.090, 0.450);
623 
624  std::cout << "default ecal rechit " << std::endl;
625  std::cout<<"e3x3 "<<e3x3<<" e9x9 "<<e9x9<<" e15x15 " << e15x15 << " e31x31 "<<e31x31<<std::endl;
626  std::cout<<"e7x7_10Sig "<<e7x7_10Sig<<" e11x11_10Sig "<<e11x11_10Sig<<" e15x15_10Sig "<<e15x15_10Sig<<std::endl;
627  std::pair<double, bool> eJunk1 = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,3,3, 0.060, 0.300, false, true);
628  std::pair<double, bool> eJunk2 = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,3,3, 0.20, 0.45, true, true);
629  */
630 
631  //e3x3P = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,1,1, -100.0, -100.0);
632  //e5x5P = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,2,2, -100.0, -100.0);
633 
635  iSetup.get<EcalSeverityLevelAlgoRcd>().get(sevlv);
636 
637  e7x7P = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),3,3, -100.0, -100.0, tMinE_,tMaxE_);
638  e9x9P = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),4,4, -100.0, -100.0, tMinE_,tMaxE_);
639  e11x11P = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),5,5, -100.0, -100.0, tMinE_,tMaxE_);
640  //e13x13P = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,6,6, -100.0, -100.0);
641  e15x15P = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),7,7, -100.0, -100.0, tMinE_,tMaxE_);
642  //e21x21P = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,10,10, -100.0, -100.0);
643  //e25x25P = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,12,12, -100.0, -100.0);
644  //e31x31P = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,15,15, -100.0, -100.0);
645 
646  e7x7_10SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),3,3, 0.030, 0.150, tMinE_,tMaxE_);
647  e9x9_10SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),4,4, 0.030, 0.150, tMinE_,tMaxE_);
648  e11x11_10SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),5,5, 0.030, 0.150, tMinE_,tMaxE_);
649  e15x15_10SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),7,7, 0.030, 0.150, tMinE_,tMaxE_);
650 
651  /*
652  e7x7_15SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,3,3, 0.045, 0.225);
653  e9x9_15SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,4,4, 0.045, 0.225);
654  e11x11_15SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,5,5, 0.045, 0.225);
655  e15x15_15SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,7,7, 0.045, 0.225);
656  */
657  e7x7_15SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology, sevlv.product(),ttMap, 3,3, 0.20,0.45, tMinE_,tMaxE_);
658  e9x9_15SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology, sevlv.product(),ttMap, 4,4, 0.20,0.45, tMinE_,tMaxE_);
659  e11x11_15SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(), ttMap, 5,5, 0.20,0.45, tMinE_,tMaxE_);
660  e15x15_15SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology, sevlv.product(),ttMap, 7,7, 0.20,0.45, tMinE_,tMaxE_, false);
661 
662  e7x7_20SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),3,3, 0.060, 0.300, tMinE_,tMaxE_);
663  e9x9_20SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),4,4, 0.060, 0.300, tMinE_,tMaxE_);
664  e11x11_20SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),5,5, 0.060, 0.300, tMinE_,tMaxE_);
665  e15x15_20SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),7,7, 0.060, 0.300, tMinE_,tMaxE_);
666 
667  e7x7_25SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),3,3, 0.075, 0.375, tMinE_,tMaxE_);
668  e9x9_25SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),4,4, 0.075, 0.375, tMinE_,tMaxE_);
669  e11x11_25SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),5,5, 0.075, 0.375, tMinE_,tMaxE_);
670  e15x15_25SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),7,7, 0.075, 0.375, tMinE_,tMaxE_);
671 
672  e7x7_30SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),3,3, 0.090, 0.450, tMinE_,tMaxE_);
673  e9x9_30SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),4,4, 0.090, 0.450, tMinE_,tMaxE_);
674  e11x11_30SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),5,5, 0.090, 0.450, tMinE_,tMaxE_);
675  e15x15_30SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),7,7, 0.090, 0.450, tMinE_,tMaxE_);
676  if(myverbose_ == 2) {
677  std::cout << "clean ecal rechit " << std::endl;
678  std::cout<<"e3x3 "<<e3x3P.first<<" e9x9 "<<e9x9P.first<<" e15x15 " << e15x15P.first << " e31x31 "<<e31x31P.first<<std::endl;
679  std::cout<<"e7x7_10Sig "<<e7x7_10SigP.first<<" e11x11_10Sig "<<e11x11_10SigP.first<<" e15x15_10Sig "<<e15x15_10SigP.first<<std::endl;
680  }
681 
682  if (doMC) {
683  // check the energy from SimHits
684  spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 1,1, simInfo3x3);
685  spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 2,2, simInfo5x5);
686  spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 3,3, simInfo7x7);
687  spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 4,4, simInfo9x9);
688  spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 5,5, simInfo11x11);
689  spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 6,6, simInfo13x13);
690  spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 7,7, simInfo15x15, 150.0,false);
691  spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 10,10, simInfo21x21);
692  spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 12,12, simInfo25x25);
693  spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 15,15, simInfo31x31);
694 
695  trkEcalEne = spr::eCaloSimInfo(iEvent, geo, pcaloeb,pcaloee, SimTk, SimVtx, pTrack, *associate, 150.0, false);
696  if(myverbose_ == 1) {
697  std::cout << "Track momentum " << pt1 << std::endl;
698 
699  std::cout << "ecal siminfo " << std::endl;
700  std::cout << "simInfo3x3: " << "eTotal " << simInfo3x3.eTotal << " eMatched " << simInfo3x3.eMatched << " eRest " << simInfo3x3.eRest << " eGamma "<<simInfo3x3.eGamma << " eNeutralHad " << simInfo3x3.eNeutralHad << " eChargedHad " << simInfo3x3.eChargedHad << std::endl;
701  std::cout << "simInfo5x5: " << "eTotal " << simInfo5x5.eTotal << " eMatched " << simInfo5x5.eMatched << " eRest " << simInfo5x5.eRest << " eGamma "<<simInfo5x5.eGamma << " eNeutralHad " << simInfo5x5.eNeutralHad << " eChargedHad " << simInfo5x5.eChargedHad << std::endl;
702  std::cout << "simInfo7x7: " << "eTotal " << simInfo7x7.eTotal << " eMatched " << simInfo7x7.eMatched << " eRest " << simInfo7x7.eRest << " eGamma "<<simInfo7x7.eGamma << " eNeutralHad " << simInfo7x7.eNeutralHad << " eChargedHad " << simInfo7x7.eChargedHad << std::endl;
703  std::cout << "simInfo9x9: " << "eTotal " << simInfo9x9.eTotal << " eMatched " << simInfo9x9.eMatched << " eRest " << simInfo9x9.eRest << " eGamma "<<simInfo9x9.eGamma << " eNeutralHad " << simInfo9x9.eNeutralHad << " eChargedHad " << simInfo9x9.eChargedHad << std::endl;
704  std::cout << "simInfo11x11: " << "eTotal " << simInfo11x11.eTotal << " eMatched " << simInfo11x11.eMatched << " eRest " << simInfo11x11.eRest << " eGamma "<<simInfo11x11.eGamma << " eNeutralHad " << simInfo11x11.eNeutralHad << " eChargedHad " << simInfo11x11.eChargedHad << std::endl;
705  std::cout << "simInfo15x15: " << "eTotal " << simInfo15x15.eTotal << " eMatched " << simInfo15x15.eMatched << " eRest " << simInfo15x15.eRest << " eGamma "<<simInfo15x15.eGamma << " eNeutralHad " << simInfo15x15.eNeutralHad << " eChargedHad " << simInfo15x15.eChargedHad << std::endl;
706  std::cout << "simInfo31x31: " << "eTotal " << simInfo31x31.eTotal << " eMatched " << simInfo31x31.eMatched << " eRest " << simInfo31x31.eRest << " eGamma "<<simInfo31x31.eGamma << " eNeutralHad " << simInfo31x31.eNeutralHad << " eChargedHad " << simInfo31x31.eChargedHad << std::endl;
707  std::cout << "trkEcalEne" << trkEcalEne << std::endl;
708 
709  }
710  }
711 
712  // ======= Get HCAL information
713  double hcalScale=1.0;
714  if( std::abs(pTrack->eta())<1.4 ) {
715  hcalScale=120.0;
716  } else {
717  hcalScale=135.0;
718  }
719 
720  double maxNearHcalP3x3=-1, maxNearHcalP5x5=-1, maxNearHcalP7x7=-1;
721  maxNearHcalP3x3 = spr::chargeIsolationHcal(nTracks, trkCaloDets, theHBHETopology, 1,1);
722  maxNearHcalP5x5 = spr::chargeIsolationHcal(nTracks, trkCaloDets, theHBHETopology, 2,2);
723  maxNearHcalP7x7 = spr::chargeIsolationHcal(nTracks, trkCaloDets, theHBHETopology, 3,3);
724 
725  double h3x3=0, h5x5=0, h7x7=0;
726  double h3x3Sig=0, h5x5Sig=0, h7x7Sig=0;
727  double trkHcalEne = 0;
728  spr::caloSimInfo hsimInfo3x3, hsimInfo5x5, hsimInfo7x7;
729 
730  if(trkDetItr->okHCAL) {
731  const DetId ClosestCell(trkDetItr->detIdHCAL);
732  // bool includeHO=false, bool algoNew=true, bool debug=false
733  h3x3 = spr::eHCALmatrix(theHBHETopology, ClosestCell, hbhe,1,1, false, true, -100.0, -100.0, -100.0, -100.0, tMinH_,tMaxH_);
734  h5x5 = spr::eHCALmatrix(theHBHETopology, ClosestCell, hbhe,2,2, false, true, -100.0, -100.0, -100.0, -100.0, tMinH_,tMaxH_);
735  h7x7 = spr::eHCALmatrix(theHBHETopology, ClosestCell, hbhe,3,3, false, true, -100.0, -100.0, -100.0, -100.0, tMinH_,tMaxH_);
736  h3x3Sig = spr::eHCALmatrix(theHBHETopology, ClosestCell, hbhe,1,1, false, true, 0.7, 0.8, -100.0, -100.0, tMinH_,tMaxH_);
737  h5x5Sig = spr::eHCALmatrix(theHBHETopology, ClosestCell, hbhe,2,2, false, true, 0.7, 0.8, -100.0, -100.0, tMinH_,tMaxH_);
738  h7x7Sig = spr::eHCALmatrix(theHBHETopology, ClosestCell, hbhe,3,3, false, true, 0.7, 0.8, -100.0, -100.0, tMinH_,tMaxH_);
739  if(myverbose_==2) {
740  std::cout << "HCAL 3x3 " << h3x3 << " " << h3x3Sig << " 5x5 " << h5x5 << " " << h5x5Sig << " 7x7 " << h7x7 << " " << h7x7Sig << std::endl;
741  }
742 
743  if (doMC) {
744  spr::eHCALSimInfo(iEvent, theHBHETopology, ClosestCell, geo,pcalohh, SimTk, SimVtx, pTrack, *associate, 1,1, hsimInfo3x3);
745  spr::eHCALSimInfo(iEvent, theHBHETopology, ClosestCell, geo,pcalohh, SimTk, SimVtx, pTrack, *associate, 2,2, hsimInfo5x5);
746  spr::eHCALSimInfo(iEvent, theHBHETopology, ClosestCell, geo,pcalohh, SimTk, SimVtx, pTrack, *associate, 3,3, hsimInfo7x7, 150.0, false,false);
747  trkHcalEne = spr::eCaloSimInfo(iEvent, geo,pcalohh, SimTk, SimVtx, pTrack, *associate);
748  if(myverbose_ == 1) {
749  std::cout << "Hcal siminfo " << std::endl;
750  std::cout << "hsimInfo3x3: " << "eTotal " << hsimInfo3x3.eTotal << " eMatched " << hsimInfo3x3.eMatched << " eRest " << hsimInfo3x3.eRest << " eGamma "<<hsimInfo3x3.eGamma << " eNeutralHad " << hsimInfo3x3.eNeutralHad << " eChargedHad " << hsimInfo3x3.eChargedHad << std::endl;
751  std::cout << "hsimInfo5x5: " << "eTotal " << hsimInfo5x5.eTotal << " eMatched " << hsimInfo5x5.eMatched << " eRest " << hsimInfo5x5.eRest << " eGamma "<<hsimInfo5x5.eGamma << " eNeutralHad " << hsimInfo5x5.eNeutralHad << " eChargedHad " << hsimInfo5x5.eChargedHad << std::endl;
752  std::cout << "hsimInfo7x7: " << "eTotal " << hsimInfo7x7.eTotal << " eMatched " << hsimInfo7x7.eMatched << " eRest " << hsimInfo7x7.eRest << " eGamma "<<hsimInfo7x7.eGamma << " eNeutralHad " << hsimInfo7x7.eNeutralHad << " eChargedHad " << hsimInfo7x7.eChargedHad << std::endl;
753  std::cout << "trkHcalEne " << trkHcalEne << std::endl;
754  }
755  }
756 
757  // debug the ecal and hcal matrix
758  if(myverbose_==4) {
759  std::cout<<"Run "<<iEvent.id().run()<<" Event "<<iEvent.id().event()<<std::endl;
760  std::vector<std::pair<DetId,double> > v7x7 = spr::eHCALmatrixCell(theHBHETopology, ClosestCell, hbhe,3,3, false, false);
761  double sumv=0.0;
762 
763  for(unsigned int iv=0; iv<v7x7.size(); iv++) {
764  sumv += v7x7[iv].second;
765  }
766  std::cout<<"h7x7 "<<h7x7<<" v7x7 "<<sumv << " in " << v7x7.size() <<std::endl;
767  for(unsigned int iv=0; iv<v7x7.size(); iv++) {
768  HcalDetId id = v7x7[iv].first;
769  std::cout << " Cell " << iv << " 0x" << std::hex << v7x7[iv].first() << std::dec << " " << id << " Energy " << v7x7[iv].second << std::endl;
770  }
771  }
772 
773  }
774 
775 
776  // ====================================================================================================
777 
778  // get diff between track outermost hit position and the propagation point at outermost surface of tracker
779  std::pair<math::XYZPoint,double> point2_TK0 = spr::propagateTrackerEnd( pTrack, bField, false);
780  math::XYZPoint diff(pTrack->outerPosition().X()-point2_TK0.first.X(),
781  pTrack->outerPosition().Y()-point2_TK0.first.Y(),
782  pTrack->outerPosition().Z()-point2_TK0.first.Z() );
783  double trackOutPosOutHitDr = diff.R();
784  double trackL = point2_TK0.second;
785  //std::cout<<" propagted "<<point2_TK0.first<<" "<< point2_TK0.first.eta()<<" "<<point2_TK0.first.phi()<<std::endl;
786  //std::cout<<" outerPosition() "<< pTrack->outerPosition() << " "<< pTrack->outerPosition().eta()<< " " << pTrack->outerPosition().phi()<< std::endl;
787  //std::cout<<"diff " << diff << " diffR " <<diff.R()<<" diffR/L "<<diff.R()/point2_TK0.second <<std::endl;
788 
789  for(unsigned int ind=0;ind<recVtxs->size();ind++) {
790  if (!((*recVtxs)[ind].isFake())) {
791  reco::Vertex::trackRef_iterator vtxTrack = (*recVtxs)[ind].tracks_begin();
792  if( DeltaR(eta1,phi1, (*vtxTrack)->eta(),(*vtxTrack)->phi()) < 0.01 ) t_trackPVIdx ->push_back( ind );
793  else t_trackPVIdx ->push_back( -1 );
794  }
795  }
796 
797  // Fill the tree Branches here
798  t_trackP ->push_back( p1 );
799  t_trackPt ->push_back( pt1 );
800  t_trackEta ->push_back( eta1 );
801  t_trackPhi ->push_back( phi1 );
802  t_trackEcalEta ->push_back( etaEcal1 );
803  t_trackEcalPhi ->push_back( phiEcal1 );
804  t_trackHcalEta ->push_back( etaHcal1 );
805  t_trackHcalPhi ->push_back( phiHcal1 );
806  t_trackDxy ->push_back( dxy1 );
807  t_trackDz ->push_back( dz1 );
808  t_trackDxyBS ->push_back( dxybs1 );
809  t_trackDzBS ->push_back( dzbs1 );
810  t_trackDxyPV ->push_back( dxypv1 );
811  t_trackDzPV ->push_back( dzpv1 );
812  t_trackChiSq ->push_back( chisq1 );
813  t_trackNOuterHits ->push_back( nOuterHits );
814  t_NLayersCrossed ->push_back( nLayersCrossed );
815 
816  t_trackHitsTOB ->push_back( hitp.stripTOBLayersWithMeasurement() );
817  t_trackHitsTEC ->push_back( hitp.stripTECLayersWithMeasurement() );
818  t_trackHitInMissTOB ->push_back( hitpIn.stripTOBLayersWithoutMeasurement() );
819  t_trackHitInMissTEC ->push_back( hitpIn.stripTECLayersWithoutMeasurement() );
820  t_trackHitInMissTIB ->push_back( hitpIn.stripTIBLayersWithoutMeasurement() );
823 
825  t_trackHitOutMissTEC ->push_back( hitpOut.stripTECLayersWithoutMeasurement() );
829 
830  t_trackHitInMeasTOB ->push_back( hitpIn.stripTOBLayersWithMeasurement() );
831  t_trackHitInMeasTEC ->push_back( hitpIn.stripTECLayersWithMeasurement() );
832  t_trackHitInMeasTIB ->push_back( hitpIn.stripTIBLayersWithMeasurement() );
833  t_trackHitInMeasTID ->push_back( hitpIn.stripTIDLayersWithMeasurement() );
834  t_trackHitOutMeasTOB ->push_back( hitpOut.stripTOBLayersWithMeasurement() );
835  t_trackHitOutMeasTEC ->push_back( hitpOut.stripTECLayersWithMeasurement() );
836  t_trackHitOutMeasTIB ->push_back( hitpOut.stripTIBLayersWithMeasurement() );
837  t_trackHitOutMeasTID ->push_back( hitpOut.stripTIDLayersWithMeasurement() );
838  t_trackOutPosOutHitDr ->push_back( trackOutPosOutHitDr );
839  t_trackL ->push_back( trackL );
840 
841  t_maxNearP31x31 ->push_back( maxNearP31x31 );
842  //t_maxNearP25x25 ->push_back( maxNearP25x25 );
843  t_maxNearP21x21 ->push_back( maxNearP21x21 );
844  //t_maxNearP15x15 ->push_back( maxNearP15x15 );
845  //t_maxNearP13x13 ->push_back( maxNearP13x13 );
846  //t_maxNearP11x11 ->push_back( maxNearP11x11 );
847  //t_maxNearP9x9 ->push_back( maxNearP9x9 );
848  //t_maxNearP7x7 ->push_back( maxNearP7x7 );
849 
850  t_ecalSpike11x11 ->push_back( e11x11P.second );
851  //t_e3x3 ->push_back( e3x3P.first );
852  //t_e5x5 ->push_back( e5x5P.first );
853  t_e7x7 ->push_back( e7x7P.first );
854  t_e9x9 ->push_back( e9x9P.first );
855  t_e11x11 ->push_back( e11x11P.first );
856  //t_e13x13 ->push_back( e13x13P.first );
857  t_e15x15 ->push_back( e15x15P.first );
858  //t_e21x21 ->push_back( e21x21P.first );
859  //t_e25x25 ->push_back( e25x25P.first );
860  //t_e31x31 ->push_back( e31x31P.first );
861 
862  t_e7x7_10Sig ->push_back( e7x7_10SigP.first );
863  t_e9x9_10Sig ->push_back( e9x9_10SigP.first );
864  t_e11x11_10Sig ->push_back( e11x11_10SigP.first );
865  t_e15x15_10Sig ->push_back( e15x15_10SigP.first );
866  t_e7x7_15Sig ->push_back( e7x7_15SigP.first );
867  t_e9x9_15Sig ->push_back( e9x9_15SigP.first );
868  t_e11x11_15Sig ->push_back( e11x11_15SigP.first );
869  t_e15x15_15Sig ->push_back( e15x15_15SigP.first );
870  t_e7x7_20Sig ->push_back( e7x7_20SigP.first );
871  t_e9x9_20Sig ->push_back( e9x9_20SigP.first );
872  t_e11x11_20Sig ->push_back( e11x11_20SigP.first );
873  t_e15x15_20Sig ->push_back( e15x15_20SigP.first );
874  t_e7x7_25Sig ->push_back( e7x7_25SigP.first );
875  t_e9x9_25Sig ->push_back( e9x9_25SigP.first );
876  t_e11x11_25Sig ->push_back( e11x11_25SigP.first );
877  t_e15x15_25Sig ->push_back( e15x15_25SigP.first );
878  t_e7x7_30Sig ->push_back( e7x7_30SigP.first );
879  t_e9x9_30Sig ->push_back( e9x9_30SigP.first );
880  t_e11x11_30Sig ->push_back( e11x11_30SigP.first );
881  t_e15x15_30Sig ->push_back( e15x15_30SigP.first );
882 
883  if (doMC) {
884  //t_esim3x3 ->push_back( simInfo3x3.eTotal );
885  //t_esim5x5 ->push_back( simInfo5x5.eTotal );
886  t_esim7x7 ->push_back( simInfo7x7.eTotal );
887  t_esim9x9 ->push_back( simInfo9x9.eTotal );
888  t_esim11x11 ->push_back( simInfo11x11.eTotal );
889  //t_esim13x13 ->push_back( simInfo13x13.eTotal );
890  t_esim15x15 ->push_back( simInfo15x15.eTotal );
891  //t_esim21x21 ->push_back( simInfo21x21.eTotal );
892  //t_esim25x25 ->push_back( simInfo25x25.eTotal );
893  //t_esim31x31 ->push_back( simInfo31x31.eTotal );
894 
895  //t_esim3x3Matched ->push_back( simInfo3x3.eMatched );
896  //t_esim5x5Matched ->push_back( simInfo5x5.eMatched );
897  t_esim7x7Matched ->push_back( simInfo7x7.eMatched );
898  t_esim9x9Matched ->push_back( simInfo9x9.eMatched );
899  t_esim11x11Matched ->push_back( simInfo11x11.eMatched );
900  //t_esim13x13Matched ->push_back( simInfo13x13.eMatched );
901  t_esim15x15Matched ->push_back( simInfo15x15.eMatched );
902  //t_esim21x21Matched ->push_back( simInfo21x21.eMatched );
903  //t_esim25x25Matched ->push_back( simInfo25x25.eMatched );
904  //t_esim31x31Matched ->push_back( simInfo31x31.eMatched );
905 
906  //t_esim3x3Rest ->push_back( simInfo3x3.eRest );
907  //t_esim5x5Rest ->push_back( simInfo5x5.eRest );
908  t_esim7x7Rest ->push_back( simInfo7x7.eRest );
909  t_esim9x9Rest ->push_back( simInfo9x9.eRest );
910  t_esim11x11Rest ->push_back( simInfo11x11.eRest );
911  //t_esim13x13Rest ->push_back( simInfo13x13.eRest );
912  t_esim15x15Rest ->push_back( simInfo15x15.eRest );
913  //t_esim21x21Rest ->push_back( simInfo21x21.eRest );
914  //t_esim25x25Rest ->push_back( simInfo25x25.eRest );
915  //t_esim31x31Rest ->push_back( simInfo31x31.eRest );
916 
917  //t_esim3x3Photon ->push_back( simInfo3x3.eGamma );
918  //t_esim5x5Photon ->push_back( simInfo5x5.eGamma );
919  t_esim7x7Photon ->push_back( simInfo7x7.eGamma );
920  t_esim9x9Photon ->push_back( simInfo9x9.eGamma );
921  t_esim11x11Photon ->push_back( simInfo11x11.eGamma );
922  //t_esim13x13Photon ->push_back( simInfo13x13.eGamma );
923  t_esim15x15Photon ->push_back( simInfo15x15.eGamma );
924  //t_esim21x21Photon ->push_back( simInfo21x21.eGamma );
925  //t_esim25x25Photon ->push_back( simInfo25x25.eGamma );
926  //t_esim31x31Photon ->push_back( simInfo31x31.eGamma );
927 
928  //t_esim3x3NeutHad ->push_back( simInfo3x3.eNeutralHad );
929  //t_esim5x5NeutHad ->push_back( simInfo5x5.eNeutralHad );
930  t_esim7x7NeutHad ->push_back( simInfo7x7.eNeutralHad );
931  t_esim9x9NeutHad ->push_back( simInfo9x9.eNeutralHad );
932  t_esim11x11NeutHad ->push_back( simInfo11x11.eNeutralHad );
933  //t_esim13x13NeutHad ->push_back( simInfo13x13.eNeutralHad );
934  t_esim15x15NeutHad ->push_back( simInfo15x15.eNeutralHad );
935  //t_esim21x21NeutHad ->push_back( simInfo21x21.eNeutralHad );
936  //t_esim25x25NeutHad ->push_back( simInfo25x25.eNeutralHad );
937  //t_esim31x31NeutHad ->push_back( simInfo31x31.eNeutralHad );
938 
939  //t_esim3x3CharHad ->push_back( simInfo3x3.eChargedHad );
940  //t_esim5x5CharHad ->push_back( simInfo5x5.eChargedHad );
941  t_esim7x7CharHad ->push_back( simInfo7x7.eChargedHad );
942  t_esim9x9CharHad ->push_back( simInfo9x9.eChargedHad );
943  t_esim11x11CharHad ->push_back( simInfo11x11.eChargedHad );
944  //t_esim13x13CharHad ->push_back( simInfo13x13.eChargedHad );
945  t_esim15x15CharHad ->push_back( simInfo15x15.eChargedHad );
946  //t_esim21x21CharHad ->push_back( simInfo21x21.eChargedHad );
947  //t_esim25x25CharHad ->push_back( simInfo25x25.eChargedHad );
948  //t_esim31x31CharHad ->push_back( simInfo31x31.eChargedHad );
949 
950  t_trkEcalEne ->push_back( trkEcalEne );
951  t_simTrackP ->push_back( simTrackP );
952  t_esimPdgId ->push_back( simInfo11x11.pdgMatched );
953  }
954 
955  t_maxNearHcalP3x3 ->push_back( maxNearHcalP3x3 );
956  t_maxNearHcalP5x5 ->push_back( maxNearHcalP5x5 );
957  t_maxNearHcalP7x7 ->push_back( maxNearHcalP7x7 );
958 
959  t_h3x3 ->push_back( h3x3 );
960  t_h5x5 ->push_back( h5x5 );
961  t_h7x7 ->push_back( h7x7 );
962  t_h3x3Sig ->push_back( h3x3Sig );
963  t_h5x5Sig ->push_back( h5x5Sig );
964  t_h7x7Sig ->push_back( h7x7Sig );
965 
966  t_infoHcal ->push_back( trkDetItr->okHCAL );
967  if (doMC) {
968  t_trkHcalEne ->push_back( hcalScale*trkHcalEne );
969 
970  t_hsim3x3 ->push_back( hcalScale*hsimInfo3x3.eTotal );
971  t_hsim5x5 ->push_back( hcalScale*hsimInfo5x5.eTotal );
972  t_hsim7x7 ->push_back( hcalScale*hsimInfo7x7.eTotal );
973 
974  t_hsim3x3Matched ->push_back( hcalScale*hsimInfo3x3.eMatched );
975  t_hsim5x5Matched ->push_back( hcalScale*hsimInfo5x5.eMatched );
976  t_hsim7x7Matched ->push_back( hcalScale*hsimInfo7x7.eMatched );
977 
978  t_hsim3x3Rest ->push_back( hcalScale*hsimInfo3x3.eRest );
979  t_hsim5x5Rest ->push_back( hcalScale*hsimInfo5x5.eRest );
980  t_hsim7x7Rest ->push_back( hcalScale*hsimInfo7x7.eRest );
981 
982  t_hsim3x3Photon ->push_back( hcalScale*hsimInfo3x3.eGamma );
983  t_hsim5x5Photon ->push_back( hcalScale*hsimInfo5x5.eGamma );
984  t_hsim7x7Photon ->push_back( hcalScale*hsimInfo7x7.eGamma );
985 
986  t_hsim3x3NeutHad ->push_back( hcalScale*hsimInfo3x3.eNeutralHad );
987  t_hsim5x5NeutHad ->push_back( hcalScale*hsimInfo5x5.eNeutralHad );
988  t_hsim7x7NeutHad ->push_back( hcalScale*hsimInfo7x7.eNeutralHad );
989 
990  t_hsim3x3CharHad ->push_back( hcalScale*hsimInfo3x3.eChargedHad );
991  t_hsim5x5CharHad ->push_back( hcalScale*hsimInfo5x5.eChargedHad );
992  t_hsim7x7CharHad ->push_back( hcalScale*hsimInfo7x7.eChargedHad );
993  }
994  /*
995  if(hcalScale*hsimInfo3x3.eTotal > 50.0) {
996 
997  std::cout << "Loosely Iso Track : eta " << eta1 << " Rec Mom " << p1 << " SimMom " << simTrackP << " h3x3 " << h3x3 << std::endl;
998 
999  std::cout <<"Closest cell Hcal (atHCAL) " << (HcalDetId)ClosestCell << std::endl;
1000 
1001  std::cout <<"trkHcalEne, etotal, matched, rest " <<hcalScale*trkHcalEne<<std::setw(15)<<hcalScale*hsimInfo3x3.eTotal
1002  <<std::setw(15)<<hcalScale*hsimInfo3x3.eMatched<<std::setw(15)<<hcalScale*hsimInfo3x3.eRest
1003  <<std::endl;
1004  unsigned int nn = t_trkHcalEne->size();
1005  std::cout <<"in Tree " << (*t_trkHcalEne)[nn-1] <<std::setw(15)<< (*t_hsim3x3)[nn-1]
1006  <<std::setw(15)<< (*t_hsim3x3Matched)[nn-1] <<std::setw(15)<< (*t_hsim3x3Rest)[nn-1]
1007  << std::endl;
1008 
1009  std::cout << "debug output \n" << std::endl;
1010  spr::caloSimInfo hsimInfo3x3_debug;
1011  spr::eHCALSimInfo(iEvent, theHBHETopology, ClosestCell, geo,pcalohh, SimTk, SimVtx, pTrack, *associate, 1,1, hsimInfo3x3_debug, 150.0, true);
1012 
1013  }
1014  */
1015 
1016 
1017  } // if loosely isolated track
1018  } // check p1/eta
1019  } // loop over track collection
1020 
1021  //if (doMC) delete associate;
1022 
1023  tree->Fill();
1024 
1025 }
1026 
1027 // ----- method called once each job just before starting event loop ----
1029 
1030  nEventProc=0;
1031 
1032  // double tempgen_TH[21] = { 1.0, 2.0, 3.0, 4.0, 5.0,
1033  double tempgen_TH[16] = { 0.0, 1.0, 2.0, 3.0, 4.0,
1034  5.0, 6.0, 7.0, 9.0, 11.0,
1035  15.0, 20.0, 30.0, 50.0, 75.0, 100.0};
1036 
1037  for(int i=0; i<16; i++) genPartPBins[i] = tempgen_TH[i];
1038 
1039  double tempgen_Eta[4] = {0.0, 1.131, 1.653, 2.172};
1040 
1041  for(int i=0; i<4; i++) genPartEtaBins[i] = tempgen_Eta[i];
1042 
1043  BookHistograms();
1044 }
1045 
1046 // ----- method called once each job just after ending the event loop ----
1048 
1049  std::cout << "Number of Events Processed " << nEventProc << std::endl;
1050  if( h_L1AlgoNames ){
1051  int nbins=h_L1AlgoNames->GetNbinsX();
1052  for (int ibin=0; ibin<nbins; ++ibin){
1053  double cont = (double)h_L1AlgoNames->GetBinContent(ibin+1);
1054  if( cont>0 ) {
1055  trig_iter=l1TriggerMap.find(algoBitToName[ibin]);
1056  const char* trigName = trig_iter->first.c_str();
1057  h_L1AlgoNames->GetXaxis()->SetBinLabel(ibin+1,trigName);
1058  std::cout<<"===============> "<<ibin+1<<" "<<trigName<<" "<<(int)cont<< std::endl;
1059  }
1060  }
1061  }
1062 }
1063 
1064 //===========================================================================================================
1065 
1066 
1067 //===========================================================================================================
1068 
1069 
1070 
1071 
1072 //---
1074 
1075  t_PVx ->clear();
1076  t_PVy ->clear();
1077  t_PVz ->clear();
1078  t_PVisValid ->clear();
1079  t_PVndof ->clear();
1080  t_PVNTracks ->clear();
1081  t_PVNTracksWt ->clear();
1082  t_PVTracksSumPt ->clear();
1083  t_PVTracksSumPtWt ->clear();
1084  t_PVNTracksHP ->clear();
1085  t_PVNTracksHPWt ->clear();
1086  t_PVTracksSumPtHP ->clear();
1087  t_PVTracksSumPtHPWt ->clear();
1088 
1089  t_L1Decision ->clear();
1090  t_L1CenJetPt ->clear();
1091  t_L1CenJetEta ->clear();
1092  t_L1CenJetPhi ->clear();
1093  t_L1FwdJetPt ->clear();
1094  t_L1FwdJetEta ->clear();
1095  t_L1FwdJetPhi ->clear();
1096  t_L1TauJetPt ->clear();
1097  t_L1TauJetEta ->clear();
1098  t_L1TauJetPhi ->clear();
1099  t_L1MuonPt ->clear();
1100  t_L1MuonEta ->clear();
1101  t_L1MuonPhi ->clear();
1102  t_L1IsoEMPt ->clear();
1103  t_L1IsoEMEta ->clear();
1104  t_L1IsoEMPhi ->clear();
1105  t_L1NonIsoEMPt ->clear();
1106  t_L1NonIsoEMEta ->clear();
1107  t_L1NonIsoEMPhi ->clear();
1108  t_L1METPt ->clear();
1109  t_L1METEta ->clear();
1110  t_L1METPhi ->clear();
1111 
1112  t_jetPt ->clear();
1113  t_jetEta ->clear();
1114  t_jetPhi ->clear();
1115  t_nTrksJetCalo ->clear();
1116  t_nTrksJetVtx ->clear();
1117 
1118  t_trackPAll ->clear();
1119  t_trackEtaAll ->clear();
1120  t_trackPhiAll ->clear();
1121  t_trackPdgIdAll ->clear();
1122  t_trackPtAll ->clear();
1123  t_trackDxyAll ->clear();
1124  t_trackDzAll ->clear();
1125  t_trackDxyPVAll ->clear();
1126  t_trackDzPVAll ->clear();
1127  t_trackChiSqAll ->clear();
1128 
1129  t_trackP ->clear();
1130  t_trackPt ->clear();
1131  t_trackEta ->clear();
1132  t_trackPhi ->clear();
1133  t_trackEcalEta ->clear();
1134  t_trackEcalPhi ->clear();
1135  t_trackHcalEta ->clear();
1136  t_trackHcalPhi ->clear();
1137  t_NLayersCrossed ->clear();
1138  t_trackNOuterHits ->clear();
1139  t_trackDxy ->clear();
1140  t_trackDxyBS ->clear();
1141  t_trackDz ->clear();
1142  t_trackDzBS ->clear();
1143  t_trackDxyPV ->clear();
1144  t_trackDzPV ->clear();
1145  t_trackChiSq ->clear();
1146  t_trackPVIdx ->clear();
1147  t_trackHitsTOB ->clear();
1148  t_trackHitsTEC ->clear();
1149  t_trackHitInMissTOB ->clear();
1150  t_trackHitInMissTEC ->clear();
1151  t_trackHitInMissTIB ->clear();
1152  t_trackHitInMissTID ->clear();
1153  t_trackHitInMissTIBTID ->clear();
1154  t_trackHitOutMissTOB ->clear();
1155  t_trackHitOutMissTEC ->clear();
1156  t_trackHitOutMissTIB ->clear();
1157  t_trackHitOutMissTID ->clear();
1158  t_trackHitOutMissTOBTEC ->clear();
1159 
1160  t_trackHitInMeasTOB ->clear();
1161  t_trackHitInMeasTEC ->clear();
1162  t_trackHitInMeasTIB ->clear();
1163  t_trackHitInMeasTID ->clear();
1164  t_trackHitOutMeasTOB ->clear();
1165  t_trackHitOutMeasTEC ->clear();
1166  t_trackHitOutMeasTIB ->clear();
1167  t_trackHitOutMeasTID ->clear();
1168  t_trackOutPosOutHitDr ->clear();
1169  t_trackL ->clear();
1170 
1171  t_maxNearP31x31 ->clear();
1172  t_maxNearP25x25 ->clear();
1173  t_maxNearP21x21 ->clear();
1174  t_maxNearP15x15 ->clear();
1175  t_maxNearP13x13 ->clear();
1176  t_maxNearP11x11 ->clear();
1177  t_maxNearP9x9 ->clear();
1178  t_maxNearP7x7 ->clear();
1179 
1180  t_ecalSpike11x11 ->clear();
1181  t_e3x3 ->clear();
1182  t_e5x5 ->clear();
1183  t_e7x7 ->clear();
1184  t_e9x9 ->clear();
1185  t_e11x11 ->clear();
1186  t_e13x13 ->clear();
1187  t_e15x15 ->clear();
1188  t_e21x21 ->clear();
1189  t_e25x25 ->clear();
1190  t_e31x31 ->clear();
1191  // t_e11x11Xtals ->clear();
1192 
1193  t_e7x7_10Sig ->clear();
1194  t_e9x9_10Sig ->clear();
1195  t_e11x11_10Sig ->clear();
1196  t_e15x15_10Sig ->clear();
1197  t_e7x7_15Sig ->clear();
1198  t_e9x9_15Sig ->clear();
1199  t_e11x11_15Sig ->clear();
1200  t_e15x15_15Sig ->clear();
1201  t_e7x7_20Sig ->clear();
1202  t_e9x9_20Sig ->clear();
1203  t_e11x11_20Sig ->clear();
1204  t_e15x15_20Sig ->clear();
1205  t_e7x7_25Sig ->clear();
1206  t_e9x9_25Sig ->clear();
1207  t_e11x11_25Sig ->clear();
1208  t_e15x15_25Sig ->clear();
1209  t_e7x7_30Sig ->clear();
1210  t_e9x9_30Sig ->clear();
1211  t_e11x11_30Sig ->clear();
1212  t_e15x15_30Sig ->clear();
1213 
1214  if (doMC) {
1215  t_simTrackP ->clear();
1216  t_esimPdgId ->clear();
1217  t_trkEcalEne ->clear();
1218 
1219  t_esim3x3 ->clear();
1220  t_esim5x5 ->clear();
1221  t_esim7x7 ->clear();
1222  t_esim9x9 ->clear();
1223  t_esim11x11 ->clear();
1224  t_esim13x13 ->clear();
1225  t_esim15x15 ->clear();
1226  t_esim21x21 ->clear();
1227  t_esim25x25 ->clear();
1228  t_esim31x31 ->clear();
1229 
1230  t_esim3x3Matched ->clear();
1231  t_esim5x5Matched ->clear();
1232  t_esim7x7Matched ->clear();
1233  t_esim9x9Matched ->clear();
1234  t_esim11x11Matched ->clear();
1235  t_esim13x13Matched ->clear();
1236  t_esim15x15Matched ->clear();
1237  t_esim21x21Matched ->clear();
1238  t_esim25x25Matched ->clear();
1239  t_esim31x31Matched ->clear();
1240 
1241  t_esim3x3Rest ->clear();
1242  t_esim5x5Rest ->clear();
1243  t_esim7x7Rest ->clear();
1244  t_esim9x9Rest ->clear();
1245  t_esim11x11Rest ->clear();
1246  t_esim13x13Rest ->clear();
1247  t_esim15x15Rest ->clear();
1248  t_esim21x21Rest ->clear();
1249  t_esim25x25Rest ->clear();
1250  t_esim31x31Rest ->clear();
1251 
1252  t_esim3x3Photon ->clear();
1253  t_esim5x5Photon ->clear();
1254  t_esim7x7Photon ->clear();
1255  t_esim9x9Photon ->clear();
1256  t_esim11x11Photon ->clear();
1257  t_esim13x13Photon ->clear();
1258  t_esim15x15Photon ->clear();
1259  t_esim21x21Photon ->clear();
1260  t_esim25x25Photon ->clear();
1261  t_esim31x31Photon ->clear();
1262 
1263  t_esim3x3NeutHad ->clear();
1264  t_esim5x5NeutHad ->clear();
1265  t_esim7x7NeutHad ->clear();
1266  t_esim9x9NeutHad ->clear();
1267  t_esim11x11NeutHad ->clear();
1268  t_esim13x13NeutHad ->clear();
1269  t_esim15x15NeutHad ->clear();
1270  t_esim21x21NeutHad ->clear();
1271  t_esim25x25NeutHad ->clear();
1272  t_esim31x31NeutHad ->clear();
1273 
1274  t_esim3x3CharHad ->clear();
1275  t_esim5x5CharHad ->clear();
1276  t_esim7x7CharHad ->clear();
1277  t_esim9x9CharHad ->clear();
1278  t_esim11x11CharHad ->clear();
1279  t_esim13x13CharHad ->clear();
1280  t_esim15x15CharHad ->clear();
1281  t_esim21x21CharHad ->clear();
1282  t_esim25x25CharHad ->clear();
1283  t_esim31x31CharHad ->clear();
1284  }
1285 
1286  t_maxNearHcalP3x3 ->clear();
1287  t_maxNearHcalP5x5 ->clear();
1288  t_maxNearHcalP7x7 ->clear();
1289 
1290  t_h3x3 ->clear();
1291  t_h5x5 ->clear();
1292  t_h7x7 ->clear();
1293  t_h3x3Sig ->clear();
1294  t_h5x5Sig ->clear();
1295  t_h7x7Sig ->clear();
1296 
1297  t_infoHcal ->clear();
1298 
1299  if (doMC) {
1300  t_trkHcalEne ->clear();
1301 
1302  t_hsim3x3 ->clear();
1303  t_hsim5x5 ->clear();
1304  t_hsim7x7 ->clear();
1305  t_hsim3x3Matched ->clear();
1306  t_hsim5x5Matched ->clear();
1307  t_hsim7x7Matched ->clear();
1308  t_hsim3x3Rest ->clear();
1309  t_hsim5x5Rest ->clear();
1310  t_hsim7x7Rest ->clear();
1311  t_hsim3x3Photon ->clear();
1312  t_hsim5x5Photon ->clear();
1313  t_hsim7x7Photon ->clear();
1314  t_hsim3x3NeutHad ->clear();
1315  t_hsim5x5NeutHad ->clear();
1316  t_hsim7x7NeutHad ->clear();
1317  t_hsim3x3CharHad ->clear();
1318  t_hsim5x5CharHad ->clear();
1319  t_hsim7x7CharHad ->clear();
1320  }
1321 }
1322 
1324 
1325  char hname[100], htit[100];
1326 
1327  TFileDirectory dir = fs->mkdir("nearMaxTrackP");
1328 
1329  for(unsigned int ieta=0; ieta<NEtaBins; ieta++) {
1330  double lowEta=-5.0, highEta= 5.0;
1331  lowEta = genPartEtaBins[ieta];
1332  highEta = genPartEtaBins[ieta+1];
1333 
1334  for(unsigned int ipt=0; ipt<NPBins; ipt++) {
1335  double lowP=0.0, highP=300.0;
1336  lowP = genPartPBins[ipt];
1337  highP = genPartPBins[ipt+1];
1338  sprintf(hname, "h_maxNearP31x31_ptBin%i_etaBin%i",ipt, ieta);
1339  sprintf(htit, "maxNearP in 31x31 (%3.2f<|#eta|<%3.2f), (%2.0f<trkP<%3.0f)", lowEta, highEta, lowP, highP );
1340  h_maxNearP31x31[ipt][ieta] = dir.make<TH1F>(hname, htit, 220, -2.0, 20.0);
1341  h_maxNearP31x31[ipt][ieta] ->Sumw2();
1342  sprintf(hname, "h_maxNearP25x25_ptBin%i_etaBin%i",ipt, ieta);
1343  sprintf(htit, "maxNearP in 25x25 (%3.2f<|#eta|<%3.2f), (%2.0f<trkP<%3.0f)", lowEta, highEta, lowP, highP );
1344  h_maxNearP25x25[ipt][ieta] = dir.make<TH1F>(hname, htit, 220, -2.0, 20.0);
1345  h_maxNearP25x25[ipt][ieta] ->Sumw2();
1346  sprintf(hname, "h_maxNearP21x21_ptBin%i_etaBin%i",ipt, ieta);
1347  sprintf(htit, "maxNearP in 21x21 (%3.2f<|#eta|<%3.2f), (%2.0f<trkP<%3.0f)", lowEta, highEta, lowP, highP );
1348  h_maxNearP21x21[ipt][ieta] = dir.make<TH1F>(hname, htit, 220, -2.0, 20.0);
1349  h_maxNearP21x21[ipt][ieta] ->Sumw2();
1350  sprintf(hname, "h_maxNearP15x15_ptBin%i_etaBin%i",ipt, ieta);
1351  sprintf(htit, "maxNearP in 15x15 (%3.2f<|#eta|<%3.2f), (%2.0f<trkP<%3.0f)", lowEta, highEta, lowP, highP );
1352  h_maxNearP15x15[ipt][ieta] = dir.make<TH1F>(hname, htit, 220, -2.0, 20.0);
1353  h_maxNearP15x15[ipt][ieta] ->Sumw2();
1354  }
1355  }
1356 
1357  h_L1AlgoNames = fs->make<TH1I>("h_L1AlgoNames", "h_L1AlgoNames:Bin Labels", 128, -0.5, 127.5);
1358 
1359  // Reconstructed Tracks
1360 
1361  h_PVTracksWt = fs->make<TH1F>("h_PVTracksWt", "h_PVTracksWt", 600, -0.1, 1.1);
1362 
1363  h_nTracks = fs->make<TH1F>("h_nTracks", "h_nTracks", 1000, -0.5, 999.5);
1364 
1365  sprintf(hname, "h_recEtaPt_0");
1366  sprintf(htit, "h_recEtaPt (all tracks Eta vs pT)");
1367  h_recEtaPt_0 = fs->make<TH2F>(hname, htit, 30, -3.0,3.0, 15, genPartPBins);
1368 
1369  sprintf(hname, "h_recEtaP_0");
1370  sprintf(htit, "h_recEtaP (all tracks Eta vs pT)");
1371  h_recEtaP_0 = fs->make<TH2F>(hname, htit, 30, -3.0,3.0, 15, genPartPBins);
1372 
1373  h_recPt_0 = fs->make<TH1F>("h_recPt_0", "Pt (all tracks)", 15, genPartPBins);
1374  h_recP_0 = fs->make<TH1F>("h_recP_0", "P (all tracks)", 15, genPartPBins);
1375  h_recEta_0 = fs->make<TH1F>("h_recEta_0", "Eta (all tracks)", 60, -3.0, 3.0);
1376  h_recPhi_0 = fs->make<TH1F>("h_recPhi_0", "Phi (all tracks)", 100, -3.2, 3.2);
1377  //-------------------------
1378  sprintf(hname, "h_recEtaPt_1");
1379  sprintf(htit, "h_recEtaPt (all good tracks Eta vs pT)");
1380  h_recEtaPt_1 = fs->make<TH2F>(hname, htit, 30, -3.0,3.0, 15, genPartPBins);
1381 
1382  sprintf(hname, "h_recEtaP_1");
1383  sprintf(htit, "h_recEtaP (all good tracks Eta vs pT)");
1384  h_recEtaP_1 = fs->make<TH2F>(hname, htit, 30, -3.0, 3.0, 15, genPartPBins);
1385 
1386  h_recPt_1 = fs->make<TH1F>("h_recPt_1", "Pt (all good tracks)", 15, genPartPBins);
1387  h_recP_1 = fs->make<TH1F>("h_recP_1", "P (all good tracks)", 15, genPartPBins);
1388  h_recEta_1 = fs->make<TH1F>("h_recEta_1", "Eta (all good tracks)", 60, -3.0, 3.0);
1389  h_recPhi_1 = fs->make<TH1F>("h_recPhi_1", "Phi (all good tracks)", 100, -3.2, 3.2);
1390  //-------------------------
1391  sprintf(hname, "h_recEtaPt_2");
1392  sprintf(htit, "h_recEtaPt (charge isolation Eta vs pT)");
1393  h_recEtaPt_2 = fs->make<TH2F>(hname, htit, 30, -3.0, 3.0, 15, genPartPBins);
1394 
1395  sprintf(hname, "h_recEtaP_2");
1396  sprintf(htit, "h_recEtaP (charge isolation Eta vs pT)");
1397  h_recEtaP_2 = fs->make<TH2F>(hname, htit, 30, -3.0, 3.0, 15, genPartPBins);
1398 
1399  h_recPt_2 = fs->make<TH1F>("h_recPt_2", "Pt (charge isolation)", 15, genPartPBins);
1400  h_recP_2 = fs->make<TH1F>("h_recP_2", "P (charge isolation)", 15, genPartPBins);
1401  h_recEta_2 = fs->make<TH1F>("h_recEta_2", "Eta (charge isolation)", 60, -3.0, 3.0);
1402  h_recPhi_2 = fs->make<TH1F>("h_recPhi_2", "Phi (charge isolation)", 100, -3.2, 3.2);
1403 
1404 
1405  tree = fs->make<TTree>("tree", "tree");
1406  tree->SetAutoSave(10000);
1407 
1408 
1409  tree->Branch("t_EvtNo" ,&t_EvtNo ,"t_EvtNo/I");
1410  tree->Branch("t_RunNo" ,&t_RunNo ,"t_RunNo/I");
1411  tree->Branch("t_Lumi" ,&t_Lumi ,"t_Lumi/I");
1412  tree->Branch("t_Bunch" ,&t_Bunch ,"t_Bunch/I");
1413 
1414 
1415  t_PVx = new std::vector<double>();
1416  t_PVy = new std::vector<double>();
1417  t_PVz = new std::vector<double>();
1418  t_PVisValid = new std::vector<double>();
1419  t_PVndof = new std::vector<double>();
1420  t_PVNTracks = new std::vector<double>();
1421  t_PVNTracksWt = new std::vector<double>();
1422  t_PVTracksSumPt = new std::vector<double>();
1423  t_PVTracksSumPtWt = new std::vector<double>();
1424  t_PVNTracksHP = new std::vector<double>();
1425  t_PVNTracksHPWt = new std::vector<double>();
1426  t_PVTracksSumPtHP = new std::vector<double>();
1427  t_PVTracksSumPtHPWt = new std::vector<double>();
1428 
1429  tree->Branch("PVx" ,"vector<double>" ,&t_PVx);
1430  tree->Branch("PVy" ,"vector<double>" ,&t_PVy);
1431  tree->Branch("PVz" ,"vector<double>" ,&t_PVz);
1432  tree->Branch("PVisValid" ,"vector<double>" ,&t_PVisValid);
1433  tree->Branch("PVndof" ,"vector<double>" ,&t_PVndof);
1434  tree->Branch("PVNTracks" ,"vector<double>" ,&t_PVNTracks);
1435  tree->Branch("PVNTracksWt" ,"vector<double>" ,&t_PVNTracksWt);
1436  tree->Branch("t_PVTracksSumPt" ,"vector<double>" ,&t_PVTracksSumPt);
1437  tree->Branch("t_PVTracksSumPtWt" ,"vector<double>" ,&t_PVTracksSumPtWt);
1438  tree->Branch("PVNTracksHP" ,"vector<double>" ,&t_PVNTracksHP);
1439  tree->Branch("PVNTracksHPWt" ,"vector<double>" ,&t_PVNTracksHPWt);
1440  tree->Branch("t_PVTracksSumPtHP" ,"vector<double>" ,&t_PVTracksSumPtHP);
1441  tree->Branch("t_PVTracksSumPtHPWt" ,"vector<double>" ,&t_PVTracksSumPtHPWt);
1442 
1443  //----- L1Trigger information
1444  t_L1Decision = new std::vector<int>();
1445  t_L1CenJetPt = new std::vector<double>();
1446  t_L1CenJetEta = new std::vector<double>();
1447  t_L1CenJetPhi = new std::vector<double>();
1448  t_L1FwdJetPt = new std::vector<double>();
1449  t_L1FwdJetEta = new std::vector<double>();
1450  t_L1FwdJetPhi = new std::vector<double>();
1451  t_L1TauJetPt = new std::vector<double>();
1452  t_L1TauJetEta = new std::vector<double>();
1453  t_L1TauJetPhi = new std::vector<double>();
1454  t_L1MuonPt = new std::vector<double>();
1455  t_L1MuonEta = new std::vector<double>();
1456  t_L1MuonPhi = new std::vector<double>();
1457  t_L1IsoEMPt = new std::vector<double>();
1458  t_L1IsoEMEta = new std::vector<double>();
1459  t_L1IsoEMPhi = new std::vector<double>();
1460  t_L1NonIsoEMPt = new std::vector<double>();
1461  t_L1NonIsoEMEta = new std::vector<double>();
1462  t_L1NonIsoEMPhi = new std::vector<double>();
1463  t_L1METPt = new std::vector<double>();
1464  t_L1METEta = new std::vector<double>();
1465  t_L1METPhi = new std::vector<double>();
1466 
1467  tree->Branch("t_L1Decision", "vector<int>", &t_L1Decision);
1468  tree->Branch("t_L1CenJetPt", "vector<double>", &t_L1CenJetPt);
1469  tree->Branch("t_L1CenJetEta", "vector<double>", &t_L1CenJetEta);
1470  tree->Branch("t_L1CenJetPhi", "vector<double>", &t_L1CenJetPhi);
1471  tree->Branch("t_L1FwdJetPt", "vector<double>", &t_L1FwdJetPt);
1472  tree->Branch("t_L1FwdJetEta", "vector<double>", &t_L1FwdJetEta);
1473  tree->Branch("t_L1FwdJetPhi", "vector<double>", &t_L1FwdJetPhi);
1474  tree->Branch("t_L1TauJetPt", "vector<double>", &t_L1TauJetPt);
1475  tree->Branch("t_L1TauJetEta", "vector<double>", &t_L1TauJetEta);
1476  tree->Branch("t_L1TauJetPhi", "vector<double>", &t_L1TauJetPhi);
1477  tree->Branch("t_L1MuonPt", "vector<double>", &t_L1MuonPt);
1478  tree->Branch("t_L1MuonEta", "vector<double>", &t_L1MuonEta);
1479  tree->Branch("t_L1MuonPhi", "vector<double>", &t_L1MuonPhi);
1480  tree->Branch("t_L1IsoEMPt", "vector<double>", &t_L1IsoEMPt);
1481  tree->Branch("t_L1IsoEMEta", "vector<double>", &t_L1IsoEMEta);
1482  tree->Branch("t_L1IsoEMPhi", "vector<double>", &t_L1IsoEMPhi);
1483  tree->Branch("t_L1NonIsoEMPt", "vector<double>", &t_L1NonIsoEMPt);
1484  tree->Branch("t_L1NonIsoEMEta", "vector<double>", &t_L1NonIsoEMEta);
1485  tree->Branch("t_L1NonIsoEMPhi", "vector<double>", &t_L1NonIsoEMPhi);
1486  tree->Branch("t_L1METPt", "vector<double>", &t_L1METPt);
1487  tree->Branch("t_L1METEta", "vector<double>", &t_L1METEta);
1488  tree->Branch("t_L1METPhi", "vector<double>", &t_L1METPhi);
1489 
1490  t_jetPt = new std::vector<double>();
1491  t_jetEta = new std::vector<double>();
1492  t_jetPhi = new std::vector<double>();
1493  t_nTrksJetCalo = new std::vector<double>();
1494  t_nTrksJetVtx = new std::vector<double>();
1495  tree->Branch("t_jetPt", "vector<double>",&t_jetPt);
1496  tree->Branch("t_jetEta", "vector<double>",&t_jetEta);
1497  tree->Branch("t_jetPhi", "vector<double>",&t_jetPhi);
1498  tree->Branch("t_nTrksJetCalo", "vector<double>",&t_nTrksJetCalo);
1499  tree->Branch("t_nTrksJetVtx", "vector<double>",&t_nTrksJetVtx);
1500 
1501  t_trackPAll = new std::vector<double>();
1502  t_trackEtaAll = new std::vector<double>();
1503  t_trackPhiAll = new std::vector<double>();
1504  t_trackPdgIdAll = new std::vector<double>();
1505  t_trackPtAll = new std::vector<double>();
1506  t_trackDxyAll = new std::vector<double>();
1507  t_trackDzAll = new std::vector<double>();
1508  t_trackDxyPVAll = new std::vector<double>();
1509  t_trackDzPVAll = new std::vector<double>();
1510  t_trackChiSqAll = new std::vector<double>();
1511  tree->Branch("t_trackPAll", "vector<double>", &t_trackPAll );
1512  tree->Branch("t_trackPhiAll", "vector<double>", &t_trackPhiAll );
1513  tree->Branch("t_trackEtaAll", "vector<double>", &t_trackEtaAll );
1514  tree->Branch("t_trackPtAll", "vector<double>", &t_trackPtAll );
1515  tree->Branch("t_trackDxyAll", "vector<double>", &t_trackDxyAll );
1516  tree->Branch("t_trackDzAll", "vector<double>", &t_trackDzAll );
1517  tree->Branch("t_trackDxyPVAll", "vector<double>", &t_trackDxyPVAll );
1518  tree->Branch("t_trackDzPVAll", "vector<double>", &t_trackDzPVAll );
1519  tree->Branch("t_trackChiSqAll", "vector<double>", &t_trackChiSqAll );
1520  //tree->Branch("t_trackPdgIdAll", "vector<double>", &t_trackPdgIdAll);
1521 
1522  t_trackP = new std::vector<double>();
1523  t_trackPt = new std::vector<double>();
1524  t_trackEta = new std::vector<double>();
1525  t_trackPhi = new std::vector<double>();
1526  t_trackEcalEta = new std::vector<double>();
1527  t_trackEcalPhi = new std::vector<double>();
1528  t_trackHcalEta = new std::vector<double>();
1529  t_trackHcalPhi = new std::vector<double>();
1530  t_trackNOuterHits = new std::vector<int>();
1531  t_NLayersCrossed = new std::vector<int>();
1532  t_trackDxy = new std::vector<double>();
1533  t_trackDxyBS = new std::vector<double>();
1534  t_trackDz = new std::vector<double>();
1535  t_trackDzBS = new std::vector<double>();
1536  t_trackDxyPV = new std::vector<double>();
1537  t_trackDzPV = new std::vector<double>();
1538  t_trackPVIdx = new std::vector<int>();
1539  t_trackChiSq = new std::vector<double>();
1540  t_trackHitsTOB = new std::vector<int>();
1541  t_trackHitsTEC = new std::vector<int>();
1542  t_trackHitInMissTOB = new std::vector<int>();
1543  t_trackHitInMissTEC = new std::vector<int>();
1544  t_trackHitInMissTIB = new std::vector<int>();
1545  t_trackHitInMissTID = new std::vector<int>();
1546  t_trackHitInMissTIBTID= new std::vector<int>();
1547 
1548  t_trackHitOutMissTOB = new std::vector<int>();
1549  t_trackHitOutMissTEC = new std::vector<int>();
1550  t_trackHitOutMissTIB = new std::vector<int>();
1551  t_trackHitOutMissTID = new std::vector<int>();
1552  t_trackHitOutMissTOBTEC= new std::vector<int>();
1553  t_trackHitInMeasTOB = new std::vector<int>();
1554  t_trackHitInMeasTEC = new std::vector<int>();
1555  t_trackHitInMeasTIB = new std::vector<int>();
1556  t_trackHitInMeasTID = new std::vector<int>();
1557  t_trackHitOutMeasTOB = new std::vector<int>();
1558  t_trackHitOutMeasTEC = new std::vector<int>();
1559  t_trackHitOutMeasTIB = new std::vector<int>();
1560  t_trackHitOutMeasTID = new std::vector<int>();
1561  t_trackOutPosOutHitDr =new std::vector<double>();
1562  t_trackL =new std::vector<double>();
1563 
1564  tree->Branch("t_trackP", "vector<double>", &t_trackP );
1565  tree->Branch("t_trackPt", "vector<double>", &t_trackPt );
1566  tree->Branch("t_trackEta", "vector<double>", &t_trackEta );
1567  tree->Branch("t_trackPhi", "vector<double>", &t_trackPhi );
1568  tree->Branch("t_trackEcalEta", "vector<double>", &t_trackEcalEta );
1569  tree->Branch("t_trackEcalPhi", "vector<double>", &t_trackEcalPhi );
1570  tree->Branch("t_trackHcalEta", "vector<double>", &t_trackHcalEta );
1571  tree->Branch("t_trackHcalPhi", "vector<double>", &t_trackHcalPhi );
1572 
1573  tree->Branch("t_trackNOuterHits", "vector<int>", &t_trackNOuterHits );
1574  tree->Branch("t_NLayersCrossed", "vector<int>", &t_NLayersCrossed );
1575  tree->Branch("t_trackHitsTOB", "vector<int>", &t_trackHitsTOB );
1576  tree->Branch("t_trackHitsTEC", "vector<int>", &t_trackHitsTEC );
1577  tree->Branch("t_trackHitInMissTOB", "vector<int>", &t_trackHitInMissTOB );
1578  tree->Branch("t_trackHitInMissTEC", "vector<int>", &t_trackHitInMissTEC );
1579  tree->Branch("t_trackHitInMissTIB", "vector<int>", &t_trackHitInMissTIB );
1580  tree->Branch("t_trackHitInMissTID", "vector<int>", &t_trackHitInMissTID );
1581  tree->Branch("t_trackHitInMissTIBTID", "vector<int>", &t_trackHitInMissTIBTID );
1582  tree->Branch("t_trackHitOutMissTOB", "vector<int>", &t_trackHitOutMissTOB);
1583  tree->Branch("t_trackHitOutMissTEC", "vector<int>", &t_trackHitOutMissTEC);
1584  tree->Branch("t_trackHitOutMissTIB", "vector<int>", &t_trackHitOutMissTIB);
1585  tree->Branch("t_trackHitOutMissTID", "vector<int>", &t_trackHitOutMissTID);
1586  tree->Branch("t_trackHitOutMissTOBTEC","vector<int>", &t_trackHitOutMissTOBTEC);
1587  tree->Branch("t_trackHitInMeasTOB", "vector<int>", &t_trackHitInMeasTOB );
1588  tree->Branch("t_trackHitInMeasTEC", "vector<int>", &t_trackHitInMeasTEC );
1589  tree->Branch("t_trackHitInMeasTIB", "vector<int>", &t_trackHitInMeasTIB );
1590  tree->Branch("t_trackHitInMeasTID", "vector<int>", &t_trackHitInMeasTID );
1591  tree->Branch("t_trackHitOutMeasTOB", "vector<int>", &t_trackHitOutMeasTOB);
1592  tree->Branch("t_trackHitOutMeasTEC", "vector<int>", &t_trackHitOutMeasTEC);
1593  tree->Branch("t_trackHitOutMeasTIB", "vector<int>", &t_trackHitOutMeasTIB);
1594  tree->Branch("t_trackHitOutMeasTID", "vector<int>", &t_trackHitOutMeasTID);
1595  tree->Branch("t_trackOutPosOutHitDr", "vector<double>", &t_trackOutPosOutHitDr);
1596  tree->Branch("t_trackL", "vector<double>", &t_trackL);
1597 
1598  tree->Branch("t_trackDxy", "vector<double>", &t_trackDxy );
1599  tree->Branch("t_trackDxyBS", "vector<double>", &t_trackDxyBS );
1600  tree->Branch("t_trackDz", "vector<double>", &t_trackDz );
1601  tree->Branch("t_trackDzBS", "vector<double>", &t_trackDzBS );
1602  tree->Branch("t_trackDxyPV", "vector<double>", &t_trackDxyPV );
1603  tree->Branch("t_trackDzPV", "vector<double>", &t_trackDzPV );
1604  tree->Branch("t_trackChiSq", "vector<double>", &t_trackChiSq );
1605  tree->Branch("t_trackPVIdx", "vector<int>", &t_trackPVIdx );
1606 
1607  t_maxNearP31x31 = new std::vector<double>();
1608  t_maxNearP25x25 = new std::vector<double>();
1609  t_maxNearP21x21 = new std::vector<double>();
1610  t_maxNearP15x15 = new std::vector<double>();
1611  t_maxNearP13x13 = new std::vector<double>();
1612  t_maxNearP11x11 = new std::vector<double>();
1613  t_maxNearP9x9 = new std::vector<double>();
1614  t_maxNearP7x7 = new std::vector<double>();
1615 
1616  tree->Branch("t_maxNearP31x31", "vector<double>", &t_maxNearP31x31);
1617  //tree->Branch("t_maxNearP25x25", "vector<double>", &t_maxNearP25x25);
1618  tree->Branch("t_maxNearP21x21", "vector<double>", &t_maxNearP21x21);
1619  //tree->Branch("t_maxNearP15x15", "vector<double>", &t_maxNearP15x15);
1620  //tree->Branch("t_maxNearP13x13", "vector<double>", &t_maxNearP13x13);
1621  //tree->Branch("t_maxNearP11x11", "vector<double>", &t_maxNearP11x11);
1622  //tree->Branch("t_maxNearP9x9", "vector<double>", &t_maxNearP9x9);
1623  //tree->Branch("t_maxNearP7x7", "vector<double>", &t_maxNearP7x7);
1624 
1625  t_ecalSpike11x11 = new std::vector<int>();
1626  t_e3x3 = new std::vector<double>();
1627  t_e5x5 = new std::vector<double>();
1628  t_e7x7 = new std::vector<double>();
1629  t_e9x9 = new std::vector<double>();
1630  t_e11x11 = new std::vector<double>();
1631  t_e13x13 = new std::vector<double>();
1632  t_e15x15 = new std::vector<double>();
1633  t_e21x21 = new std::vector<double>();
1634  t_e25x25 = new std::vector<double>();
1635  t_e31x31 = new std::vector<double>();
1636  //t_e11x11Xtals = new std::vector<std::vector<double> >();
1637 
1638  tree->Branch("t_ecalSpike11x11", "vector<int>", &t_ecalSpike11x11);
1639  //tree->Branch("t_e3x3", "vector<double>", &t_e3x3);
1640  //tree->Branch("t_e5x5", "vector<double>", &t_e5x5);
1641  tree->Branch("t_e7x7", "vector<double>", &t_e7x7);
1642  tree->Branch("t_e9x9", "vector<double>", &t_e9x9);
1643  tree->Branch("t_e11x11", "vector<double>", &t_e11x11);
1644  //tree->Branch("t_e13x13", "vector<double>", &t_e13x13);
1645  tree->Branch("t_e15x15", "vector<double>", &t_e15x15);
1646  //tree->Branch("t_e21x21", "vector<double>", &t_e21x21);
1647  //tree->Branch("t_e25x25", "vector<double>", &t_e25x25);
1648  //tree->Branch("t_e31x31", "vector<double>", &t_e31x31);
1649  //tree->Branch("t_e11x11Xtals", "vector<vector<double> >", &t_e11x11Xtals);
1650 
1651  t_e7x7_10Sig = new std::vector<double>();
1652  t_e9x9_10Sig = new std::vector<double>();
1653  t_e11x11_10Sig = new std::vector<double>();
1654  t_e15x15_10Sig = new std::vector<double>();
1655  t_e7x7_15Sig = new std::vector<double>();
1656  t_e9x9_15Sig = new std::vector<double>();
1657  t_e11x11_15Sig = new std::vector<double>();
1658  t_e15x15_15Sig = new std::vector<double>();
1659  t_e7x7_20Sig = new std::vector<double>();
1660  t_e9x9_20Sig = new std::vector<double>();
1661  t_e11x11_20Sig = new std::vector<double>();
1662  t_e15x15_20Sig = new std::vector<double>();
1663  t_e7x7_25Sig = new std::vector<double>();
1664  t_e9x9_25Sig = new std::vector<double>();
1665  t_e11x11_25Sig = new std::vector<double>();
1666  t_e15x15_25Sig = new std::vector<double>();
1667  t_e7x7_30Sig = new std::vector<double>();
1668  t_e9x9_30Sig = new std::vector<double>();
1669  t_e11x11_30Sig = new std::vector<double>();
1670  t_e15x15_30Sig = new std::vector<double>();
1671 
1672  tree->Branch("t_e7x7_10Sig" ,"vector<double>", &t_e7x7_10Sig);
1673  tree->Branch("t_e9x9_10Sig" ,"vector<double>", &t_e9x9_10Sig);
1674  tree->Branch("t_e11x11_10Sig" ,"vector<double>", &t_e11x11_10Sig);
1675  tree->Branch("t_e15x15_10Sig" ,"vector<double>", &t_e15x15_10Sig);
1676  tree->Branch("t_e7x7_15Sig" ,"vector<double>", &t_e7x7_15Sig);
1677  tree->Branch("t_e9x9_15Sig" ,"vector<double>", &t_e9x9_15Sig);
1678  tree->Branch("t_e11x11_15Sig" ,"vector<double>", &t_e11x11_15Sig);
1679  tree->Branch("t_e15x15_15Sig" ,"vector<double>", &t_e15x15_15Sig);
1680  tree->Branch("t_e7x7_20Sig" ,"vector<double>", &t_e7x7_20Sig);
1681  tree->Branch("t_e9x9_20Sig" ,"vector<double>", &t_e9x9_20Sig);
1682  tree->Branch("t_e11x11_20Sig" ,"vector<double>", &t_e11x11_20Sig);
1683  tree->Branch("t_e15x15_20Sig" ,"vector<double>", &t_e15x15_20Sig);
1684  tree->Branch("t_e7x7_25Sig" ,"vector<double>", &t_e7x7_25Sig);
1685  tree->Branch("t_e9x9_25Sig" ,"vector<double>", &t_e9x9_25Sig);
1686  tree->Branch("t_e11x11_25Sig" ,"vector<double>", &t_e11x11_25Sig);
1687  tree->Branch("t_e15x15_25Sig" ,"vector<double>", &t_e15x15_25Sig);
1688  tree->Branch("t_e7x7_30Sig" ,"vector<double>", &t_e7x7_30Sig);
1689  tree->Branch("t_e9x9_30Sig" ,"vector<double>", &t_e9x9_30Sig);
1690  tree->Branch("t_e11x11_30Sig" ,"vector<double>", &t_e11x11_30Sig);
1691  tree->Branch("t_e15x15_30Sig" ,"vector<double>", &t_e15x15_30Sig);
1692 
1693  if (doMC) {
1694  t_esim3x3 = new std::vector<double>();
1695  t_esim5x5 = new std::vector<double>();
1696  t_esim7x7 = new std::vector<double>();
1697  t_esim9x9 = new std::vector<double>();
1698  t_esim11x11 = new std::vector<double>();
1699  t_esim13x13 = new std::vector<double>();
1700  t_esim15x15 = new std::vector<double>();
1701  t_esim21x21 = new std::vector<double>();
1702  t_esim25x25 = new std::vector<double>();
1703  t_esim31x31 = new std::vector<double>();
1704 
1705  t_esim3x3Matched = new std::vector<double>();
1706  t_esim5x5Matched = new std::vector<double>();
1707  t_esim7x7Matched = new std::vector<double>();
1708  t_esim9x9Matched = new std::vector<double>();
1709  t_esim11x11Matched = new std::vector<double>();
1710  t_esim13x13Matched = new std::vector<double>();
1711  t_esim15x15Matched = new std::vector<double>();
1712  t_esim21x21Matched = new std::vector<double>();
1713  t_esim25x25Matched = new std::vector<double>();
1714  t_esim31x31Matched = new std::vector<double>();
1715 
1716  t_esim3x3Rest = new std::vector<double>();
1717  t_esim5x5Rest = new std::vector<double>();
1718  t_esim7x7Rest = new std::vector<double>();
1719  t_esim9x9Rest = new std::vector<double>();
1720  t_esim11x11Rest = new std::vector<double>();
1721  t_esim13x13Rest = new std::vector<double>();
1722  t_esim15x15Rest = new std::vector<double>();
1723  t_esim21x21Rest = new std::vector<double>();
1724  t_esim25x25Rest = new std::vector<double>();
1725  t_esim31x31Rest = new std::vector<double>();
1726 
1727  t_esim3x3Photon = new std::vector<double>();
1728  t_esim5x5Photon = new std::vector<double>();
1729  t_esim7x7Photon = new std::vector<double>();
1730  t_esim9x9Photon = new std::vector<double>();
1731  t_esim11x11Photon = new std::vector<double>();
1732  t_esim13x13Photon = new std::vector<double>();
1733  t_esim15x15Photon = new std::vector<double>();
1734  t_esim21x21Photon = new std::vector<double>();
1735  t_esim25x25Photon = new std::vector<double>();
1736  t_esim31x31Photon = new std::vector<double>();
1737 
1738  t_esim3x3NeutHad = new std::vector<double>();
1739  t_esim5x5NeutHad = new std::vector<double>();
1740  t_esim7x7NeutHad = new std::vector<double>();
1741  t_esim9x9NeutHad = new std::vector<double>();
1742  t_esim11x11NeutHad = new std::vector<double>();
1743  t_esim13x13NeutHad = new std::vector<double>();
1744  t_esim15x15NeutHad = new std::vector<double>();
1745  t_esim21x21NeutHad = new std::vector<double>();
1746  t_esim25x25NeutHad = new std::vector<double>();
1747  t_esim31x31NeutHad = new std::vector<double>();
1748 
1749  t_esim3x3CharHad = new std::vector<double>();
1750  t_esim5x5CharHad = new std::vector<double>();
1751  t_esim7x7CharHad = new std::vector<double>();
1752  t_esim9x9CharHad = new std::vector<double>();
1753  t_esim11x11CharHad = new std::vector<double>();
1754  t_esim13x13CharHad = new std::vector<double>();
1755  t_esim15x15CharHad = new std::vector<double>();
1756  t_esim21x21CharHad = new std::vector<double>();
1757  t_esim25x25CharHad = new std::vector<double>();
1758  t_esim31x31CharHad = new std::vector<double>();
1759 
1760  t_trkEcalEne = new std::vector<double>();
1761  t_simTrackP = new std::vector<double>();
1762  t_esimPdgId = new std::vector<double>();
1763 
1764  //tree->Branch("t_esim3x3", "vector<double>", &t_esim3x3);
1765  //tree->Branch("t_esim5x5", "vector<double>", &t_esim5x5);
1766  tree->Branch("t_esim7x7", "vector<double>", &t_esim7x7);
1767  tree->Branch("t_esim9x9", "vector<double>", &t_esim9x9);
1768  tree->Branch("t_esim11x11", "vector<double>", &t_esim11x11);
1769  //tree->Branch("t_esim13x13", "vector<double>", &t_esim13x13);
1770  tree->Branch("t_esim15x15", "vector<double>", &t_esim15x15);
1771  //tree->Branch("t_esim21x21", "vector<double>", &t_esim21x21);
1772  //tree->Branch("t_esim25x25", "vector<double>", &t_esim25x25);
1773  //tree->Branch("t_esim31x31", "vector<double>", &t_esim31x31);
1774 
1775  //tree->Branch("t_esim3x3Matched", "vector<double>", &t_esim3x3Matched);
1776  //tree->Branch("t_esim5x5Matched", "vector<double>", &t_esim5x5Matched);
1777  tree->Branch("t_esim7x7Matched", "vector<double>", &t_esim7x7Matched);
1778  tree->Branch("t_esim9x9Matched", "vector<double>", &t_esim9x9Matched);
1779  tree->Branch("t_esim11x11Matched", "vector<double>", &t_esim11x11Matched);
1780  //tree->Branch("t_esim13x13Matched", "vector<double>", &t_esim13x13Matched);
1781  tree->Branch("t_esim15x15Matched", "vector<double>", &t_esim15x15Matched);
1782  //tree->Branch("t_esim21x21Matched", "vector<double>", &t_esim21x21Matched);
1783  //tree->Branch("t_esim25x25Matched", "vector<double>", &t_esim25x25Matched);
1784  //tree->Branch("t_esim31x31Matched", "vector<double>", &t_esim31x31Matched);
1785 
1786  //tree->Branch("t_esim3x3Rest", "vector<double>", &t_esim3x3Rest);
1787  //tree->Branch("t_esim5x5Rest", "vector<double>", &t_esim5x5Rest);
1788  tree->Branch("t_esim7x7Rest", "vector<double>", &t_esim7x7Rest);
1789  tree->Branch("t_esim9x9Rest", "vector<double>", &t_esim9x9Rest);
1790  tree->Branch("t_esim11x11Rest", "vector<double>", &t_esim11x11Rest);
1791  //tree->Branch("t_esim13x13Rest", "vector<double>", &t_esim13x13Rest);
1792  tree->Branch("t_esim15x15Rest", "vector<double>", &t_esim15x15Rest);
1793  //tree->Branch("t_esim21x21Rest", "vector<double>", &t_esim21x21Rest);
1794  //tree->Branch("t_esim25x25Rest", "vector<double>", &t_esim25x25Rest);
1795  //tree->Branch("t_esim31x31Rest", "vector<double>", &t_esim31x31Rest);
1796 
1797  //tree->Branch("t_esim3x3Photon", "vector<double>", &t_esim3x3Photon);
1798  //tree->Branch("t_esim5x5Photon", "vector<double>", &t_esim5x5Photon);
1799  tree->Branch("t_esim7x7Photon", "vector<double>", &t_esim7x7Photon);
1800  tree->Branch("t_esim9x9Photon", "vector<double>", &t_esim9x9Photon);
1801  tree->Branch("t_esim11x11Photon", "vector<double>", &t_esim11x11Photon);
1802  //tree->Branch("t_esim13x13Photon", "vector<double>", &t_esim13x13Photon);
1803  tree->Branch("t_esim15x15Photon", "vector<double>", &t_esim15x15Photon);
1804  //tree->Branch("t_esim21x21Photon", "vector<double>", &t_esim21x21Photon);
1805  //tree->Branch("t_esim25x25Photon", "vector<double>", &t_esim25x25Photon);
1806  //tree->Branch("t_esim31x31Photon", "vector<double>", &t_esim31x31Photon);
1807 
1808  //tree->Branch("t_esim3x3NeutHad", "vector<double>", &t_esim3x3NeutHad);
1809  //tree->Branch("t_esim5x5NeutHad", "vector<double>", &t_esim5x5NeutHad);
1810  tree->Branch("t_esim7x7NeutHad", "vector<double>", &t_esim7x7NeutHad);
1811  tree->Branch("t_esim9x9NeutHad", "vector<double>", &t_esim9x9NeutHad);
1812  tree->Branch("t_esim11x11NeutHad", "vector<double>", &t_esim11x11NeutHad);
1813  //tree->Branch("t_esim13x13NeutHad", "vector<double>", &t_esim13x13NeutHad);
1814  tree->Branch("t_esim15x15NeutHad", "vector<double>", &t_esim15x15NeutHad);
1815  //tree->Branch("t_esim21x21NeutHad", "vector<double>", &t_esim21x21NeutHad);
1816  //tree->Branch("t_esim25x25NeutHad", "vector<double>", &t_esim25x25NeutHad);
1817  //tree->Branch("t_esim31x31NeutHad", "vector<double>", &t_esim31x31NeutHad);
1818 
1819  //tree->Branch("t_esim3x3CharHad", "vector<double>", &t_esim3x3CharHad);
1820  //tree->Branch("t_esim5x5CharHad", "vector<double>", &t_esim5x5CharHad);
1821  tree->Branch("t_esim7x7CharHad", "vector<double>", &t_esim7x7CharHad);
1822  tree->Branch("t_esim9x9CharHad", "vector<double>", &t_esim9x9CharHad);
1823  tree->Branch("t_esim11x11CharHad", "vector<double>", &t_esim11x11CharHad);
1824  //tree->Branch("t_esim13x13CharHad", "vector<double>", &t_esim13x13CharHad);
1825  tree->Branch("t_esim15x15CharHad", "vector<double>", &t_esim15x15CharHad);
1826  //tree->Branch("t_esim21x21CharHad", "vector<double>", &t_esim21x21CharHad);
1827  //tree->Branch("t_esim25x25CharHad", "vector<double>", &t_esim25x25CharHad);
1828  //tree->Branch("t_esim31x31CharHad", "vector<double>", &t_esim31x31CharHad);
1829 
1830  tree->Branch("t_trkEcalEne", "vector<double>", &t_trkEcalEne);
1831  tree->Branch("t_simTrackP", "vector<double>", &t_simTrackP);
1832  tree->Branch("t_esimPdgId", "vector<double>", &t_esimPdgId);
1833  }
1834 
1835  t_maxNearHcalP3x3 = new std::vector<double>();
1836  t_maxNearHcalP5x5 = new std::vector<double>();
1837  t_maxNearHcalP7x7 = new std::vector<double>();
1838  t_h3x3 = new std::vector<double>();
1839  t_h5x5 = new std::vector<double>();
1840  t_h7x7 = new std::vector<double>();
1841  t_h3x3Sig = new std::vector<double>();
1842  t_h5x5Sig = new std::vector<double>();
1843  t_h7x7Sig = new std::vector<double>();
1844  t_infoHcal = new std::vector<int>();
1845 
1846  if (doMC) {
1847  t_trkHcalEne = new std::vector<double>();
1848  t_hsim3x3 = new std::vector<double>();
1849  t_hsim5x5 = new std::vector<double>();
1850  t_hsim7x7 = new std::vector<double>();
1851  t_hsim3x3Matched = new std::vector<double>();
1852  t_hsim5x5Matched = new std::vector<double>();
1853  t_hsim7x7Matched = new std::vector<double>();
1854  t_hsim3x3Rest = new std::vector<double>();
1855  t_hsim5x5Rest = new std::vector<double>();
1856  t_hsim7x7Rest = new std::vector<double>();
1857  t_hsim3x3Photon = new std::vector<double>();
1858  t_hsim5x5Photon = new std::vector<double>();
1859  t_hsim7x7Photon = new std::vector<double>();
1860  t_hsim3x3NeutHad = new std::vector<double>();
1861  t_hsim5x5NeutHad = new std::vector<double>();
1862  t_hsim7x7NeutHad = new std::vector<double>();
1863  t_hsim3x3CharHad = new std::vector<double>();
1864  t_hsim5x5CharHad = new std::vector<double>();
1865  t_hsim7x7CharHad = new std::vector<double>();
1866  }
1867 
1868  tree->Branch("t_maxNearHcalP3x3", "vector<double>", &t_maxNearHcalP3x3);
1869  tree->Branch("t_maxNearHcalP5x5", "vector<double>", &t_maxNearHcalP5x5);
1870  tree->Branch("t_maxNearHcalP7x7", "vector<double>", &t_maxNearHcalP7x7);
1871  tree->Branch("t_h3x3", "vector<double>", &t_h3x3);
1872  tree->Branch("t_h5x5", "vector<double>", &t_h5x5);
1873  tree->Branch("t_h7x7", "vector<double>", &t_h7x7);
1874  tree->Branch("t_h3x3Sig", "vector<double>", &t_h3x3Sig);
1875  tree->Branch("t_h5x5Sig", "vector<double>", &t_h5x5Sig);
1876  tree->Branch("t_h7x7Sig", "vector<double>", &t_h7x7Sig);
1877  tree->Branch("t_infoHcal", "vector<int>", &t_infoHcal);
1878 
1879  if (doMC) {
1880  tree->Branch("t_trkHcalEne", "vector<double>", &t_trkHcalEne);
1881  tree->Branch("t_hsim3x3", "vector<double>", &t_hsim3x3);
1882  tree->Branch("t_hsim5x5", "vector<double>", &t_hsim5x5);
1883  tree->Branch("t_hsim7x7", "vector<double>", &t_hsim7x7);
1884  tree->Branch("t_hsim3x3Matched", "vector<double>", &t_hsim3x3Matched);
1885  tree->Branch("t_hsim5x5Matched", "vector<double>", &t_hsim5x5Matched);
1886  tree->Branch("t_hsim7x7Matched", "vector<double>", &t_hsim7x7Matched);
1887  tree->Branch("t_hsim3x3Rest", "vector<double>", &t_hsim3x3Rest);
1888  tree->Branch("t_hsim5x5Rest", "vector<double>", &t_hsim5x5Rest);
1889  tree->Branch("t_hsim7x7Rest", "vector<double>", &t_hsim7x7Rest);
1890  tree->Branch("t_hsim3x3Photon", "vector<double>", &t_hsim3x3Photon);
1891  tree->Branch("t_hsim5x5Photon", "vector<double>", &t_hsim5x5Photon);
1892  tree->Branch("t_hsim7x7Photon", "vector<double>", &t_hsim7x7Photon);
1893  tree->Branch("t_hsim3x3NeutHad", "vector<double>", &t_hsim3x3NeutHad);
1894  tree->Branch("t_hsim5x5NeutHad", "vector<double>", &t_hsim5x5NeutHad);
1895  tree->Branch("t_hsim7x7NeutHad", "vector<double>", &t_hsim7x7NeutHad);
1896  tree->Branch("t_hsim3x3CharHad", "vector<double>", &t_hsim3x3CharHad);
1897  tree->Branch("t_hsim5x5CharHad", "vector<double>", &t_hsim5x5CharHad);
1898  tree->Branch("t_hsim7x7CharHad", "vector<double>", &t_hsim7x7CharHad);
1899  }
1900  tree->Branch("t_nTracks", &t_nTracks, "t_nTracks/I");
1901 
1902 }
1903 
1904 
1905 double IsolatedTracksNxN::DeltaPhi(double v1, double v2) {
1906  // Computes the correctly normalized phi difference
1907  // v1, v2 = phi of object 1 and 2
1908 
1909  double pi = 3.141592654;
1910  double twopi = 6.283185307;
1911 
1912  double diff = std::abs(v2 - v1);
1913  double corr = twopi - diff;
1914  if (diff < pi){ return diff;} else { return corr;}
1915 }
1916 
1917 double IsolatedTracksNxN::DeltaR(double eta1, double phi1, double eta2, double phi2) {
1918  double deta = eta1 - eta2;
1919  double dphi = DeltaPhi(phi1, phi2);
1920  return std::sqrt(deta*deta + dphi*dphi);
1921 }
1922 
1924 
1925  std::string theTrackQuality = "highPurity";
1926  reco::TrackBase::TrackQuality trackQuality_ = reco::TrackBase::qualityByName(theTrackQuality);
1927 
1928  std::cout << " Reference Point " << pTrack->referencePoint() <<"\n"
1929  << " TrackMmentum " << pTrack->momentum()
1930  << " (pt,eta,phi)(" << pTrack->pt()<<","<<pTrack->eta()<<","<<pTrack->phi()<<")"
1931  << " p " << pTrack->p() << "\n"
1932  << " Normalized chi2 " << pTrack->normalizedChi2() <<" charge " << pTrack->charge()
1933  << " qoverp() " << pTrack->qoverp() <<"+-" << pTrack->qoverpError()
1934  << " d0 " << pTrack->d0() << "\n"
1935  << " NValidHits " << pTrack->numberOfValidHits() << " NLostHits " << pTrack->numberOfLostHits()
1936  << " TrackQuality " << pTrack->qualityName(trackQuality_) << " " << pTrack->quality(trackQuality_)
1937  << std::endl;
1938 
1939  if( printTrkHitPattern_ ) {
1940  const reco::HitPattern& p = pTrack->hitPattern();
1941  const reco::HitPattern& p1 = pTrack->trackerExpectedHitsInner();
1942  const reco::HitPattern& p2 = pTrack->trackerExpectedHitsOuter();
1943 
1944  std::cout<<"default " << std::endl;
1945  for (int i=0; i<p.numberOfHits(); i++) {
1947  }
1948  std::cout<<"trackerExpectedHitsInner() " << std::endl;
1949  for (int i=0; i<p1.numberOfHits(); i++) {
1951  }
1952  std::cout<<"trackerExpectedHitsOuter() " << std::endl;
1953  for (int i=0; i<p2.numberOfHits(); i++) {
1955  }
1956 
1957 
1958  std::cout << "\n \t trackerLayersWithMeasurement() " << p.trackerLayersWithMeasurement()
1959  << "\n \t pixelLayersWithMeasurement() " << p.pixelLayersWithMeasurement()
1960  << "\n \t stripLayersWithMeasurement() " << p.stripLayersWithMeasurement()
1961  << "\n \t pixelBarrelLayersWithMeasurement() " << p.pixelBarrelLayersWithMeasurement()
1962  << "\n \t pixelEndcapLayersWithMeasurement() " << p.pixelEndcapLayersWithMeasurement()
1963  << "\n \t stripTIBLayersWithMeasurement() " << p.stripTIBLayersWithMeasurement()
1964  << "\n \t stripTIDLayersWithMeasurement() " << p.stripTIDLayersWithMeasurement()
1965  << "\n \t stripTOBLayersWithMeasurement() " << p.stripTOBLayersWithMeasurement()
1966  << "\n \t stripTECLayersWithMeasurement() " << p.stripTECLayersWithMeasurement()
1967  << std::endl;
1968 
1969  }
1970 }
1971 
1972 //define this as a plug-in
RunNumber_t run() const
Definition: EventID.h:42
std::vector< double > * t_hsim7x7CharHad
std::vector< double > * t_PVTracksSumPtWt
double qoverp() const
q/p
Definition: TrackBase.h:115
double DeltaPhi(double v1, double v2)
double p() const
momentum vector magnitude
Definition: TrackBase.h:129
std::vector< double > * t_hsim3x3Matched
int stripTOBLayersWithMeasurement() const
Definition: HitPattern.cc:936
std::vector< double > * t_e15x15
std::vector< double > * t_esim25x25Photon
std::vector< double > * t_nTrksJetCalo
std::vector< double > * t_esim31x31NeutHad
T getParameter(std::string const &) const
EventNumber_t event() const
Definition: EventID.h:44
std::vector< double > * t_maxNearHcalP7x7
T getUntrackedParameter(std::string const &, T const &) const
std::vector< double > * t_esim21x21Matched
std::vector< double > * t_trackPt
std::vector< double > * t_esim25x25CharHad
int i
Definition: DBlmapReader.cc:9
std::vector< double > * t_trackPAll
std::vector< double > * t_trackHcalPhi
std::vector< double > * t_trackDxyPVAll
std::vector< double > * t_esim5x5Photon
static std::string qualityName(TrackQuality)
Definition: TrackBase.h:393
std::vector< int > * t_trackHitOutMeasTEC
std::vector< double > * t_trackPdgIdAll
edm::InputTag JetExtender_
std::vector< double > * t_esim7x7NeutHad
std::vector< spr::propagatedTrackID > propagateCALO(edm::Handle< reco::TrackCollection > &trkCollection, const CaloGeometry *geo, const MagneticField *bField, std::string &theTrackQuality, bool debug=false)
void eCaloSimInfo(std::vector< DetId > vdets, const CaloGeometry *geo, edm::Handle< T > &hitsEB, edm::Handle< T > &hitsEE, edm::Handle< edm::SimTrackContainer > &SimTk, edm::Handle< edm::SimVertexContainer > &SimVtx, edm::SimTrackContainer::const_iterator trkInfo, caloSimInfo &info, double timeCut=150, bool debug=false)
std::map< std::string, bool > l1TriggerMap
edm::InputTag L1extraCenJetSource_
std::vector< double > * t_trackOutPosOutHitDr
const Vector & momentum() const
track momentum vector
Definition: TrackBase.h:150
std::vector< double > * t_maxNearHcalP5x5
std::vector< double > * t_L1NonIsoEMPt
std::vector< int > * t_trackHitOutMeasTIB
std::vector< int > * t_trackHitInMissTOB
std::vector< double > * t_trackDz
double d0() const
dxy parameter in perigee convention (d0 = - dxy)
Definition: TrackBase.h:123
std::vector< double > * t_maxNearP11x11
std::map< std::string, double > eHCALSimInfo(const edm::Event &, const HcalTopology *topology, const DetId &det, const CaloGeometry *geo, edm::Handle< T > &hits, edm::Handle< edm::SimTrackContainer > &SimTk, edm::Handle< edm::SimVertexContainer > &SimVtx, const reco::Track *pTrack, TrackerHitAssociator &associate, int ieta, int iphi, double timeCut=150, bool includeHO=false, bool debug=false)
std::vector< double > * t_trackEcalEta
int stripTIBLayersWithMeasurement() const
Definition: HitPattern.cc:918
double normalizedChi2() const
chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
Definition: TrackBase.h:111
std::vector< double > * t_trackEtaAll
std::vector< double > * t_esim31x31Photon
std::vector< double > * t_esim11x11Matched
std::vector< double > * t_L1IsoEMEta
std::vector< double > * t_PVTracksSumPt
std::vector< double > * t_e9x9_10Sig
std::vector< double > * t_esim3x3CharHad
std::vector< double > * t_esim31x31Rest
TH1F * h_maxNearP25x25[NPBins][NEtaBins]
TrackQuality
track quality
Definition: TrackBase.h:95
std::vector< double > * t_esim21x21Photon
std::vector< double > * t_hsim3x3CharHad
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
std::vector< double > * t_maxNearP7x7
std::vector< double > * t_hsim7x7Rest
std::vector< double > * t_L1TauJetPhi
std::vector< double > * t_esim25x25Rest
std::vector< int > * t_infoHcal
std::vector< double > * t_e11x11_15Sig
static const size_t NEtaBins
std::vector< double > * t_L1TauJetPt
std::vector< double > * t_esim25x25
std::vector< double > * t_trackEcalPhi
std::vector< double > * t_esim11x11NeutHad
std::vector< double > * t_L1TauJetEta
std::vector< double > * t_e15x15_15Sig
std::vector< double > * t_esim5x5Matched
std::vector< double > * t_L1MuonEta
std::vector< double > * t_L1MuonPt
std::vector< double > * t_esim3x3Rest
int bunchCrossing() const
Definition: EventBase.h:62
std::vector< double > * t_h3x3
#define abs(x)
Definition: mlp_lapack.h:159
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:59
std::vector< double > * t_L1MuonPhi
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:139
unsigned short numberOfLostHits() const
number of cases where track crossed a layer without getting a hit.
Definition: TrackBase.h:234
int stripTIDLayersWithoutMeasurement() const
Definition: HitPattern.cc:998
std::vector< double > * t_esim3x3Matched
std::vector< double > * t_trackDxyAll
std::vector< double > * t_maxNearP13x13
std::vector< double > * t_maxNearHcalP3x3
edm::InputTag L1extraIsoEmSource_
IsolatedTracksNxN(const edm::ParameterSet &)
std::vector< double > * t_hsim3x3Photon
int pixelLayersWithMeasurement() const
Definition: HitPattern.cc:888
T eta() const
std::vector< double > * t_esim31x31
std::vector< double > * t_PVTracksSumPtHP
std::vector< double > * t_e25x25
std::vector< double > * t_esim5x5
const math::XYZPoint & outerPosition() const
position of the outermost hit
Definition: Track.h:47
const Point & referencePoint() const
Reference point on the track.
Definition: TrackBase.h:153
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:21
std::vector< double > * t_esim11x11Rest
int trackerLayersWithMeasurement() const
Definition: HitPattern.cc:883
int pixelEndcapLayersWithMeasurement() const
Definition: HitPattern.cc:909
edm::InputTag L1GTReadoutRcdSource_
double double double z
std::vector< int > * t_trackNOuterHits
std::vector< double > * t_h7x7Sig
std::vector< double > * t_e15x15_30Sig
std::vector< double > * t_trackPhiAll
std::vector< double > * t_e7x7_25Sig
std::vector< double > * t_trkHcalEne
std::vector< double > * t_esim7x7Rest
edm::InputTag L1extraFwdJetSource_
std::vector< double > * t_e7x7_20Sig
std::vector< double > * t_e11x11_10Sig
AlgorithmMap::const_iterator CItAlgo
iterators through map containing the algorithms
std::vector< double > * t_trackPtAll
std::vector< double > * t_h3x3Sig
std::vector< double > * t_esim13x13
edm::Service< TFileService > fs
std::vector< double > * t_e13x13
double eHCALmatrix(const HcalTopology *topology, const DetId &det, edm::Handle< T > &hits, int ieta, int iphi, bool includeHO=false, bool algoNew=true, double hbThr=-100, double heThr=-100, double hfThr=-100, double hoThr=-100, double tMin=-500, double tMax=500, bool debug=false)
std::vector< double > * t_esimPdgId
double eNeutralHad
Definition: CaloSimInfo.h:48
std::map< std::string, bool >::iterator trig_iter
double eChargedHad
Definition: CaloSimInfo.h:49
std::vector< double > * t_esim5x5NeutHad
std::vector< double > * t_maxNearP9x9
std::vector< double > * t_e11x11_20Sig
std::vector< double > * t_jetEta
std::vector< double > * t_maxNearP31x31
std::vector< double > * t_esim7x7CharHad
std::vector< int > * t_trackHitInMissTEC
double chargeIsolationEcal(unsigned int trkIndex, std::vector< spr::propagatedTrackID > &vdetIds, const CaloGeometry *geo, const CaloTopology *caloTopology, int ieta, int iphi, bool debug=false)
int iEvent
Definition: GenABIO.cc:243
std::vector< double > * t_trackEta
const HitPattern & trackerExpectedHitsOuter() const
Access the hit pattern counting (in the Tracker) the number of expected crossed layers after the last...
Definition: TrackBase.h:227
std::vector< double > * t_esim21x21Rest
std::vector< double > * t_esim9x9Photon
std::vector< int > * t_trackHitInMeasTID
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:141
std::vector< double > * t_esim5x5Rest
std::vector< double > * t_hsim5x5Rest
std::vector< double > * t_e11x11
std::vector< double > * t_esim15x15
std::vector< double > * t_esim13x13CharHad
std::vector< double > * t_L1CenJetPt
std::vector< double > * t_trackChiSqAll
std::vector< int > * t_L1Decision
edm::InputTag L1extraTauJetSource_
std::vector< double > * t_esim21x21CharHad
std::vector< double > * t_e15x15_25Sig
std::vector< int > * t_trackHitOutMissTIB
std::vector< double > * t_esim15x15Rest
std::vector< double > * t_esim11x11
std::vector< double > * t_hsim7x7
std::vector< bool > DecisionWord
typedefs
int stripTIDLayersWithMeasurement() const
Definition: HitPattern.cc:927
T sqrt(T t)
Definition: SSEVec.h:28
std::vector< int > * t_trackHitOutMissTID
std::vector< double > * t_esim31x31CharHad
std::vector< int > * t_trackHitOutMissTOBTEC
double pt() const
track transverse momentum
Definition: TrackBase.h:131
std::vector< int > * t_trackHitsTEC
std::vector< double > * t_e9x9_30Sig
const MagneticField * bField
std::vector< double > * t_maxNearP25x25
std::vector< double > * t_L1CenJetPhi
std::vector< double > * t_L1FwdJetEta
std::vector< double > * t_h7x7
std::vector< int > * t_ecalSpike11x11
int numberOfHits() const
Definition: HitPattern.cc:312
std::vector< double > * t_esim15x15NeutHad
int stripTIBLayersWithoutMeasurement() const
Definition: HitPattern.cc:989
std::vector< double > * t_e9x9_20Sig
std::vector< int > * t_trackHitOutMeasTOB
std::vector< int > * t_trackHitInMeasTIB
const HitPattern & trackerExpectedHitsInner() const
Access the hit pattern counting (in the Tracker) the number of expected crossed layers before the fir...
Definition: TrackBase.h:225
edm::SimTrackContainer::const_iterator matchedSimTrack(const edm::Event &iEvent, edm::Handle< edm::SimTrackContainer > &SimTk, edm::Handle< edm::SimVertexContainer > &SimVtx, const reco::Track *pTrack, TrackerHitAssociator &associate, bool debug=false)
unsigned short numberOfValidHits() const
number of valid hits found
Definition: TrackBase.h:232
std::vector< double > * t_trackDzPV
std::vector< double > * t_L1FwdJetPhi
std::vector< double > * t_esim13x13NeutHad
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
Definition: TrackBase.h:223
std::vector< double > * t_nTrksJetVtx
bool isValid() const
Definition: HandleBase.h:76
Container::value_type value_type
std::vector< double > * t_esim7x7Photon
std::vector< double > * t_e5x5
double p2[4]
Definition: TauolaWrapper.h:90
std::vector< double > * t_hsim3x3NeutHad
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:355
std::vector< double > * t_L1NonIsoEMPhi
std::vector< double > * t_trackDzBS
void analyze(const edm::Event &, const edm::EventSetup &)
std::vector< int > * t_trackHitOutMissTOB
std::vector< double > * t_L1CenJetEta
std::vector< double > * t_trackDzPVAll
JetCorrectorParameters corr
Definition: classes.h:9
std::vector< double > * t_esim9x9
std::vector< double > * t_hsim5x5
std::vector< double > * t_h5x5
double qoverpError() const
error on signed transverse curvature
Definition: TrackBase.h:192
std::vector< double > * t_trackDxyPV
std::vector< double > * t_hsim5x5NeutHad
std::vector< double > * t_trackChiSq
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
Definition: TrackBase.h:127
std::vector< double > * t_maxNearP15x15
std::vector< double > * t_hsim5x5Photon
std::vector< double > * t_PVy
std::vector< double > * t_PVNTracksHP
std::vector< double > * t_hsim3x3Rest
Definition: DetId.h:20
edm::InputTag L1extraNonIsoEmSource_
std::vector< double > * t_esim13x13Photon
std::vector< double > * t_e7x7
static TrackQuality qualityByName(const std::string &name)
Definition: TrackBase.cc:46
std::vector< double > * t_L1METPhi
std::vector< double > * t_esim9x9Rest
std::vector< double > * t_esim7x7
std::vector< int > * t_trackHitInMissTIB
std::vector< double > * t_e9x9_15Sig
std::vector< double > * t_e7x7_15Sig
std::vector< double > * t_trackPhi
std::vector< double > * t_e7x7_10Sig
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
std::vector< double > * t_PVisValid
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:13
std::vector< double > * t_trkEcalEne
std::vector< double > * t_trackDzAll
TH1F * h_maxNearP31x31[NPBins][NEtaBins]
std::vector< double > * t_esim11x11CharHad
const T & get() const
Definition: EventSetup.h:55
int pixelBarrelLayersWithMeasurement() const
Definition: HitPattern.cc:900
T const * product() const
Definition: ESHandle.h:62
std::vector< double > * t_esim31x31Matched
TH1F * h_maxNearP15x15[NPBins][NEtaBins]
std::vector< double > * t_e9x9_25Sig
void eECALSimInfo(const edm::Event &, const DetId &det, const CaloGeometry *geo, const CaloTopology *caloTopology, edm::Handle< T > &hitsEB, edm::Handle< T > &hitsEE, edm::Handle< edm::SimTrackContainer > &SimTk, edm::Handle< edm::SimVertexContainer > &SimVtx, const reco::Track *pTrack, TrackerHitAssociator &associate, int ieta, int iphi, caloSimInfo &info, double timeCut=150, bool debug=false)
std::vector< double > * t_esim13x13Rest
std::vector< double > * t_esim9x9NeutHad
std::vector< double > * t_L1FwdJetPt
std::vector< double > * t_simTrackP
std::vector< double > * t_hsim7x7Matched
T const * product() const
Definition: Handle.h:74
std::vector< int > * t_trackPVIdx
bool quality(const TrackQuality) const
Track quality.
Definition: TrackBase.h:364
int cont
std::vector< double > * t_PVNTracks
int stripLayersWithMeasurement() const
Definition: HitPattern.cc:893
std::vector< int > * t_trackHitsTOB
std::vector< double > * t_PVndof
std::vector< double > * t_esim9x9Matched
std::vector< double > * t_hsim7x7NeutHad
std::vector< double > * t_L1IsoEMPhi
std::vector< double > * t_esim13x13Matched
std::vector< double > * t_esim3x3Photon
std::vector< double > * t_maxNearP21x21
edm::EventID id() const
Definition: EventBase.h:56
std::vector< double > * t_PVNTracksWt
std::vector< double > * t_esim25x25NeutHad
std::vector< double > * t_L1NonIsoEMEta
std::vector< double > * t_e31x31
std::vector< double > * t_PVNTracksHPWt
double p1[4]
Definition: TauolaWrapper.h:89
std::vector< double > * t_PVz
std::vector< double > * t_e3x3
std::pair< math::XYZPoint, double > propagateTrackerEnd(const reco::Track *, const MagneticField *, bool debug=false)
void printTrack(const reco::Track *pTrack)
int stripTECLayersWithoutMeasurement() const
Definition: HitPattern.cc:1016
std::vector< double > * t_e15x15_20Sig
std::vector< double > * t_PVTracksSumPtHPWt
std::vector< double > * t_trackDxy
std::vector< double > * t_hsim5x5CharHad
std::vector< double > * t_e15x15_10Sig
int stripTECLayersWithMeasurement() const
Definition: HitPattern.cc:945
std::vector< TrackBaseRef >::const_iterator trackRef_iterator
The iteratator for the vector&lt;TrackRef&gt;
Definition: Vertex.h:38
TH1F * h_maxNearP21x21[NPBins][NEtaBins]
T * make() const
make new ROOT object
int stripTOBLayersWithoutMeasurement() const
Definition: HitPattern.cc:1007
std::vector< double > * t_jetPhi
std::vector< double > * t_trackL
std::vector< double > * t_esim3x3
std::vector< double > * t_trackDxyBS
double eECALmatrix(const DetId &detId, edm::Handle< T > &hitsEB, edm::Handle< T > &hitsEE, const CaloGeometry *geo, const CaloTopology *caloTopology, const EcalSeverityLevelAlgo *sevlv, int ieta, int iphi, double ebThr=-100, double eeThr=-100, double tMin=-500, double tMax=500, bool debug=false)
tuple cout
Definition: gather_cfg.py:41
int charge() const
track electric charge
Definition: TrackBase.h:113
std::vector< double > * t_trackHcalEta
std::vector< double > * t_L1METPt
void printHitPattern(int position, std::ostream &stream) const
Definition: HitPattern.cc:1167
edm::InputTag L1extraMuonSource_
std::vector< double > * t_esim3x3NeutHad
dbl *** dir
Definition: mlp_gen.cc:35
std::vector< int > * t_NLayersCrossed
double pi
Definition: DDAxes.h:10
double DeltaR(double eta1, double phi1, double eta2, double phi2)
edm::InputTag JetSrc_
std::vector< std::pair< DetId, double > > eHCALmatrixCell(const HcalTopology *topology, const DetId &det, edm::Handle< T > &hits, int ieta, int iphi, bool includeHO=false, double hbThr=-100, double heThr=-100, double hfThr=-100, double hoThr=-100, bool debug=false)
std::vector< int > * t_trackHitInMeasTOB
std::vector< double > * t_PVx
std::vector< int > * t_trackHitInMeasTEC
std::vector< double > * t_esim15x15Photon
std::vector< double > * t_e9x9
std::vector< double > * t_hsim5x5Matched
std::vector< double > * t_esim7x7Matched
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
Definition: TrackBase.h:121
std::string algoBitToName[nL1BitsMax]
std::vector< double > * t_esim15x15Matched
double chargeIsolationHcal(unsigned int trkIndex, std::vector< spr::propagatedTrackID > &vdetIds, const HcalTopology *topology, int ieta, int iphi, bool debug=false)
std::vector< int > * t_trackHitOutMeasTID
std::vector< double > * t_L1METEta
std::vector< double > * t_esim21x21NeutHad
std::vector< double > * t_e7x7_30Sig
std::vector< double > * t_esim25x25Matched
std::vector< int > * t_trackHitOutMissTEC
std::vector< double > * t_e11x11_25Sig
std::vector< double > * t_hsim3x3
std::vector< double > * t_trackP
static const size_t NPBins
std::vector< double > * t_hsim7x7Photon
std::vector< double > * t_jetPt
std::vector< double > * t_L1IsoEMPt
std::vector< double > * t_e21x21
std::vector< double > * t_esim11x11Photon
edm::InputTag L1GTObjectMapRcdSource_
std::vector< double > * t_h5x5Sig
std::vector< double > * t_esim21x21
std::vector< int > * t_trackHitInMissTID
std::vector< double > * t_e11x11_30Sig
std::vector< int > * t_trackHitInMissTIBTID
std::vector< double > * t_esim9x9CharHad
std::vector< double > * t_esim5x5CharHad
Definition: DDAxes.h:10
std::vector< double > * t_esim15x15CharHad