CMS 3D CMS Logo

IsolatedTracksHcalScale.cc
Go to the documentation of this file.
1 
5 
16 
18  trackerHitAssociatorConfig_(consumesCollector()) {
19 
20  //now do what ever initialization is needed
21  doMC = iConfig.getUntrackedParameter<bool>("DoMC", false);
22  myverbose = iConfig.getUntrackedParameter<int>("Verbosity", 5 );
23  theTrackQuality = iConfig.getUntrackedParameter<std::string>("TrackQuality","highPurity");
25  selectionParameters.minPt = iConfig.getUntrackedParameter<double>("MinTrackPt", 10.0);
26  selectionParameters.minQuality = trackQuality_;
27  selectionParameters.maxDxyPV = iConfig.getUntrackedParameter<double>("MaxDxyPV", 0.2);
28  selectionParameters.maxDzPV = iConfig.getUntrackedParameter<double>("MaxDzPV", 5.0);
29  selectionParameters.maxChi2 = iConfig.getUntrackedParameter<double>("MaxChi2", 5.0);
30  selectionParameters.maxDpOverP = iConfig.getUntrackedParameter<double>("MaxDpOverP", 0.1);
31  selectionParameters.minOuterHit = iConfig.getUntrackedParameter<int>("MinOuterHit", 4);
32  selectionParameters.minLayerCrossed = iConfig.getUntrackedParameter<int>("MinLayerCrossed", 8);
33  selectionParameters.maxInMiss = iConfig.getUntrackedParameter<int>("MaxInMiss", 0);
34  selectionParameters.maxOutMiss = iConfig.getUntrackedParameter<int>("MaxOutMiss", 0);
35  a_coneR = iConfig.getUntrackedParameter<double>("ConeRadius",34.98);
36  a_charIsoR = a_coneR + 28.9;
37  a_neutIsoR = a_charIsoR*0.726;
38  a_mipR = iConfig.getUntrackedParameter<double>("ConeRadiusMIP",14.0);
39  tMinE_ = iConfig.getUntrackedParameter<double>("TimeMinCutECAL", -500.);
40  tMaxE_ = iConfig.getUntrackedParameter<double>("TimeMaxCutECAL", 500.);
41 
42  tok_genTrack_ = consumes<reco::TrackCollection>(edm::InputTag("generalTracks"));
43  tok_recVtx_ = consumes<reco::VertexCollection>(edm::InputTag("offlinePrimaryVertices"));
44  tok_bs_ = consumes<reco::BeamSpot>(edm::InputTag("offlineBeamSpot"));
45  tok_EB_ = consumes<EcalRecHitCollection>(edm::InputTag("ecalRecHit","EcalRecHitsEB"));
46  tok_EE_ = consumes<EcalRecHitCollection>(edm::InputTag("ecalRecHit","EcalRecHitsEE"));
47  tok_hbhe_ = consumes<HBHERecHitCollection>(edm::InputTag("hbhereco"));
48  tok_simTk_ = consumes<edm::SimTrackContainer>(edm::InputTag("g4SimHits"));
49  tok_simVtx_ = consumes<edm::SimVertexContainer>(edm::InputTag("g4SimHits"));
50  tok_caloEB_ = consumes<edm::PCaloHitContainer>(edm::InputTag("g4SimHits", "EcalHitsEB"));
51  tok_caloEE_ = consumes<edm::PCaloHitContainer>(edm::InputTag("g4SimHits", "EcalHitsEE"));
52  tok_caloHH_ = consumes<edm::PCaloHitContainer>(edm::InputTag("g4SimHits", "HcalHits"));
53 
54  if (myverbose>=0) {
55  std::cout <<"Parameters read from config file \n"
56  <<" doMC " << doMC
57  <<"\t myverbose " << myverbose
58  <<"\t minPt " << selectionParameters.minPt
59  <<"\t theTrackQuality " << theTrackQuality
60  <<"\t minQuality " << selectionParameters.minQuality
61  <<"\t maxDxyPV " << selectionParameters.maxDxyPV
62  <<"\t maxDzPV " << selectionParameters.maxDzPV
63  <<"\t maxChi2 " << selectionParameters.maxChi2
64  <<"\t maxDpOverP " << selectionParameters.maxDpOverP
65  <<"\t minOuterHit " << selectionParameters.minOuterHit
66  <<"\t minLayerCrossed " << selectionParameters.minLayerCrossed
67  <<"\t maxInMiss " << selectionParameters.maxInMiss
68  <<"\t maxOutMiss " << selectionParameters.maxOutMiss
69  <<"\t a_coneR " << a_coneR
70  <<"\t a_charIsoR " << a_charIsoR
71  <<"\t a_neutIsoR " << a_neutIsoR
72  <<"\t a_mipR " << a_mipR
73  <<"\t time Range (" << tMinE_ << ":" << tMaxE_ << ")"
74  << std::endl;
75  }
76  initL1 = false;
77 
78 }
79 
81 
83 
85  iSetup.get<IdealMagneticFieldRecord>().get(bFieldH);
86  bField = bFieldH.product();
87 
88  // get handles to calogeometry and calotopology
90  iSetup.get<CaloGeometryRecord>().get(pG);
91  const CaloGeometry* geo = pG.product();
92 
93  edm::ESHandle<CaloTopology> theCaloTopology;
94  iSetup.get<CaloTopologyRecord>().get(theCaloTopology);
95  const CaloTopology *caloTopology = theCaloTopology.product();
96 
97  // Retrieve the good/bad ECAL channels from the DB
99  iSetup.get<EcalChannelStatusRcd>().get(ecalChStatus);
100  const EcalChannelStatus* theEcalChStatus = ecalChStatus.product();
101 
103 
104  nEventProc++;
105 
106  t_RunNo = iEvent.id().run();
107  t_EvtNo = iEvent.id().event();
108  t_Lumi = iEvent.luminosityBlock();
109  t_Bunch = iEvent.bunchCrossing();
110  if (myverbose>0) std::cout << nEventProc << " Run " << t_RunNo << " Event " << t_EvtNo << " Lumi " << t_Lumi << " Bunch " << t_Bunch << std::endl;
111 
113  iEvent.getByToken(tok_genTrack_, trkCollection);
114 
116  iEvent.getByToken(tok_recVtx_,recVtxs);
117 
118  // Get the beamspot
119  edm::Handle<reco::BeamSpot> beamSpotH;
120  iEvent.getByToken(tok_bs_, beamSpotH);
121 
122  math::XYZPoint leadPV(0,0,0);
123  if (recVtxs->size()>0 && !((*recVtxs)[0].isFake())) {
124  leadPV = math::XYZPoint( (*recVtxs)[0].x(),(*recVtxs)[0].y(), (*recVtxs)[0].z() );
125  } else if (beamSpotH.isValid()) {
126  leadPV = beamSpotH->position();
127  }
128 
129  if (myverbose>0) {
130  std::cout << "Primary Vertex " << leadPV;
131  if (beamSpotH.isValid()) std::cout << " Beam Spot " << beamSpotH->position();
132  std::cout << std::endl;
133  }
134 
135  std::vector<spr::propagatedTrackDirection> trkCaloDirections;
136  spr::propagateCALO(trkCollection, geo, bField, theTrackQuality, trkCaloDirections, (myverbose>2));
137  std::vector<spr::propagatedTrackDirection>::const_iterator trkDetItr;
138 
139  edm::Handle<EcalRecHitCollection> barrelRecHitsHandle;
140  edm::Handle<EcalRecHitCollection> endcapRecHitsHandle;
141  iEvent.getByToken(tok_EB_,barrelRecHitsHandle);
142  iEvent.getByToken(tok_EE_,endcapRecHitsHandle);
143 
145  iEvent.getByToken(tok_hbhe_, hbhe);
146  const HBHERecHitCollection Hithbhe = *(hbhe.product());
147 
148  //get Handles to SimTracks and SimHits
150  edm::SimTrackContainer::const_iterator simTrkItr;
152 
153  //get Handles to PCaloHitContainers of eb/ee/hbhe
157 
158  //associates tracker rechits/simhits to a track
159  std::unique_ptr<TrackerHitAssociator> associate;
160 
161  if (doMC) {
162  iEvent.getByToken(tok_simTk_,SimTk);
163  iEvent.getByToken(tok_simVtx_,SimVtx);
164  iEvent.getByToken(tok_caloEB_, pcaloeb);
165  iEvent.getByToken(tok_caloEE_, pcaloee);
166  iEvent.getByToken(tok_caloHH_, pcalohh);
167  associate.reset(new TrackerHitAssociator(iEvent, trackerHitAssociatorConfig_));
168  }
169 
170  unsigned int nTracks=0;
171  for (trkDetItr = trkCaloDirections.begin(),nTracks=0; trkDetItr != trkCaloDirections.end(); trkDetItr++,nTracks++){
172  const reco::Track* pTrack = &(*(trkDetItr->trkItr));
173  if (spr::goodTrack(pTrack,leadPV,selectionParameters,(myverbose>2)) && trkDetItr->okECAL && trkDetItr->okHCAL) {
174  int nRH_eMipDR=0, nRH_eDR=0, nNearTRKs=0, nRecHitsCone=-99;
175  double distFromHotCell=-99.0, distFromHotCell2=-99.0;
176  int ietaHotCell=-99, iphiHotCell=-99;
177  int ietaHotCell2=-99, iphiHotCell2=-99;
178  GlobalPoint gposHotCell(0.,0.,0.), gposHotCell2(0.,0.,0.);
179  std::vector<DetId> coneRecHitDetIds, coneRecHitDetIds2;
180  std::pair<double, bool> e11x11_20SigP, e15x15_20SigP;
181  double hCone = spr::eCone_hcal(geo, hbhe, trkDetItr->pointHCAL,
182  trkDetItr->pointECAL,
183  a_coneR, trkDetItr->directionHCAL,
184  nRecHitsCone, coneRecHitDetIds,
185  distFromHotCell, ietaHotCell, iphiHotCell,
186  gposHotCell, -1);
187  double hConeHB = spr::eCone_hcal(geo, hbhe, trkDetItr->pointHCAL,
188  trkDetItr->pointECAL,
189  a_coneR, trkDetItr->directionHCAL,
190  nRecHitsCone, coneRecHitDetIds,
191  distFromHotCell, ietaHotCell,
192  iphiHotCell, gposHotCell,
193  (int)(HcalBarrel));
194  double eHCALDR = spr::eCone_hcal(geo, hbhe, trkDetItr->pointHCAL,
195  trkDetItr->pointECAL, a_charIsoR,
196  trkDetItr->directionHCAL, nRecHitsCone,
197  coneRecHitDetIds2, distFromHotCell2,
198  ietaHotCell2, iphiHotCell2, gposHotCell2,
199  -1);
200  double eHCALDRHB = spr::eCone_hcal(geo, hbhe, trkDetItr->pointHCAL,
201  trkDetItr->pointECAL, a_charIsoR,
202  trkDetItr->directionHCAL, nRecHitsCone,
203  coneRecHitDetIds2, distFromHotCell2,
204  ietaHotCell2, iphiHotCell2,
205  gposHotCell2, (int)(HcalBarrel));
206 
207  double conehmaxNearP = spr::chargeIsolationCone(nTracks, trkCaloDirections, a_charIsoR, nNearTRKs, (myverbose>3));
208 
209  double eMipDR = spr::eCone_ecal(geo, barrelRecHitsHandle,
210  endcapRecHitsHandle,trkDetItr->pointHCAL,
211  trkDetItr->pointECAL, a_mipR,
212  trkDetItr->directionECAL, nRH_eMipDR);
213  double eECALDR = spr::eCone_ecal(geo, barrelRecHitsHandle,
214  endcapRecHitsHandle,trkDetItr->pointHCAL,
215  trkDetItr->pointECAL, a_neutIsoR,
216  trkDetItr->directionECAL, nRH_eDR);
217  double eMipDR_1= spr::eCone_ecal(geo, barrelRecHitsHandle,
218  endcapRecHitsHandle,trkDetItr->pointHCAL,
219  trkDetItr->pointECAL, a_mipR,
220  trkDetItr->directionECAL, nRH_eMipDR,
221  0.030, 0.150);
222  double eECALDR_1=spr::eCone_ecal(geo, barrelRecHitsHandle,
223  endcapRecHitsHandle,trkDetItr->pointHCAL,
224  trkDetItr->pointECAL, a_neutIsoR,
225  trkDetItr->directionECAL, nRH_eDR,
226  0.030, 0.150);
227  double eMipDR_2= spr::eCone_ecal(geo, barrelRecHitsHandle,
228  endcapRecHitsHandle,trkDetItr->pointHCAL,
229  trkDetItr->pointECAL, a_mipR,
230  trkDetItr->directionECAL, nRH_eMipDR,
231  0.060, 0.300);
232  double eECALDR_2=spr::eCone_ecal(geo, barrelRecHitsHandle,
233  endcapRecHitsHandle,trkDetItr->pointHCAL,
234  trkDetItr->pointECAL, a_neutIsoR,
235  trkDetItr->directionECAL, nRH_eDR,
236  0.060, 0.300);
237 
238  HcalDetId closestCell = (HcalDetId)(trkDetItr->detIdHCAL);
239 
241  iSetup.get<EcalSeverityLevelAlgoRcd>().get(sevlv);
242 
243  e11x11_20SigP = spr::eECALmatrix(trkDetItr->detIdECAL,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),5,5, 0.060, 0.300, tMinE_,tMaxE_);
244  e15x15_20SigP = spr::eECALmatrix(trkDetItr->detIdECAL,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),7,7, 0.060, 0.300, tMinE_,tMaxE_);
245 
246  // Fill the tree Branches here
247  t_trackP ->push_back( pTrack->p() );
248  t_trackPt ->push_back( pTrack->pt() );
249  t_trackEta ->push_back( pTrack->momentum().eta() );
250  t_trackPhi ->push_back( pTrack->momentum().phi() );
251  t_trackHcalEta ->push_back( closestCell.ieta() );
252  t_trackHcalPhi ->push_back( closestCell.iphi() );
253  t_hCone ->push_back( hCone);
254  t_conehmaxNearP ->push_back( conehmaxNearP);
255  t_eMipDR ->push_back( eMipDR);
256  t_eECALDR ->push_back( eECALDR);
257  t_eHCALDR ->push_back( eHCALDR);
258  t_e11x11_20Sig ->push_back( e11x11_20SigP.first );
259  t_e15x15_20Sig ->push_back( e15x15_20SigP.first );
260  t_eMipDR_1 ->push_back( eMipDR_1);
261  t_eECALDR_1 ->push_back( eECALDR_1);
262  t_eMipDR_2 ->push_back( eMipDR_2);
263  t_eECALDR_2 ->push_back( eECALDR_2);
264  t_hConeHB ->push_back( hConeHB);
265  t_eHCALDRHB ->push_back( eHCALDRHB);
266 
267  if (myverbose > 0) {
268  std::cout << "Track p " << pTrack->p() << " pt " << pTrack->pt()
269  << " eta " << pTrack->momentum().eta() << " phi "
270  << pTrack->momentum().phi() << " ieta/iphi ("
271  << closestCell.ieta() << ", " << closestCell.iphi()
272  << ") Energy in cone " << hCone << " Charge Isolation "
273  << conehmaxNearP << " eMIP (" << eMipDR << ", "
274  << eMipDR_1 << ", " << eMipDR_2 << ")"
275  << " Neutral isolation (ECAL) (" << eECALDR-eMipDR << ", "
276  << eECALDR_1-eMipDR_1 << ", " << eECALDR_2-eMipDR_2 << ")"
277  << " (ECAL NxN) " << e15x15_20SigP.first-e11x11_20SigP.first
278  << " (HCAL) " << eHCALDR-hCone << std::endl;
279  }
280 
281  if (doMC) {
282  int nSimHits = -999;
283  double hsim;
284  std::map<std::string, double> hsimInfo;
285  std::vector<int> multiplicity;
286  hsim = spr::eCone_hcal(geo, pcalohh, trkDetItr->pointHCAL,
287  trkDetItr->pointECAL, a_coneR,
288  trkDetItr->directionHCAL, nSimHits);
289  hsimInfo = spr::eHCALSimInfoCone(iEvent, pcalohh, SimTk, SimVtx,
290  pTrack, *associate, geo,
291  trkDetItr->pointHCAL,
292  trkDetItr->pointECAL, a_coneR,
293  trkDetItr->directionHCAL,
294  multiplicity);
295 
296  t_hsimInfoMatched ->push_back(hsimInfo["eMatched" ]);
297  t_hsimInfoRest ->push_back(hsimInfo["eRest" ]);
298  t_hsimInfoPhoton ->push_back(hsimInfo["eGamma" ]);
299  t_hsimInfoNeutHad ->push_back(hsimInfo["eNeutralHad"]);
300  t_hsimInfoCharHad ->push_back(hsimInfo["eChargedHad"]);
301  t_hsimInfoPdgMatched->push_back(hsimInfo["pdgMatched" ]);
302  t_hsimInfoTotal ->push_back(hsimInfo["eTotal" ]);
303 
304  t_hsimInfoNMatched ->push_back(multiplicity.at(0));
305  t_hsimInfoNTotal ->push_back(multiplicity.at(1));
306  t_hsimInfoNNeutHad ->push_back(multiplicity.at(2));
307  t_hsimInfoNCharHad ->push_back(multiplicity.at(3));
308  t_hsimInfoNPhoton ->push_back(multiplicity.at(4));
309  t_hsimInfoNRest ->push_back(multiplicity.at(5));
310 
311  t_hsim ->push_back(hsim );
312  t_nSimHits ->push_back(nSimHits );
313 
314  if (myverbose > 0) {
315  std::cout << "Matched (E) " << hsimInfo["eMatched"] << " (N) "
316  << multiplicity.at(0) << " Rest (E) " << hsimInfo["eRest"]
317  << " (N) " << multiplicity.at(1) << " Gamma (E) "
318  << hsimInfo["eGamma"] << " (N) " << multiplicity.at(2)
319  << " Neutral Had (E) " << hsimInfo["eNeutralHad"]
320  << " (N) " << multiplicity.at(3) << " Charged Had (E) "
321  << hsimInfo["eChargedHad"] << " (N) " << multiplicity.at(4)
322  << " Total (E) " << hsimInfo["eTotal"] << " (N) "
323  << multiplicity.at(5) << " PDG " << hsimInfo["pdgMatched"]
324  << " Total E " << hsim << " NHit " << nSimHits <<std::endl;
325  }
326  }
327  }
328  }
329 
330  tree->Fill();
331 }
332 
334 
335  nEventProc=0;
336 
337 
339  tree = fs->make<TTree>("tree", "tree");
340  tree->SetAutoSave(10000);
341 
342  tree->Branch("t_RunNo" ,&t_RunNo ,"t_RunNo/I");
343  tree->Branch("t_Lumi" ,&t_Lumi ,"t_Lumi/I");
344  tree->Branch("t_Bunch" ,&t_Bunch ,"t_Bunch/I");
345 
346  t_trackP = new std::vector<double>();
347  t_trackPt = new std::vector<double>();
348  t_trackEta = new std::vector<double>();
349  t_trackPhi = new std::vector<double>();
350  t_trackHcalEta = new std::vector<double>();
351  t_trackHcalPhi = new std::vector<double>();
352  t_hCone = new std::vector<double>();
353  t_conehmaxNearP = new std::vector<double>();
354  t_eMipDR = new std::vector<double>();
355  t_eECALDR = new std::vector<double>();
356  t_eHCALDR = new std::vector<double>();
357  t_e11x11_20Sig = new std::vector<double>();
358  t_e15x15_20Sig = new std::vector<double>();
359  t_eMipDR_1 = new std::vector<double>();
360  t_eECALDR_1 = new std::vector<double>();
361  t_eMipDR_2 = new std::vector<double>();
362  t_eECALDR_2 = new std::vector<double>();
363  t_hConeHB = new std::vector<double>();
364  t_eHCALDRHB = new std::vector<double>();
365 
366  tree->Branch("t_trackP", "vector<double>", &t_trackP );
367  tree->Branch("t_trackPt", "vector<double>", &t_trackPt );
368  tree->Branch("t_trackEta", "vector<double>", &t_trackEta );
369  tree->Branch("t_trackPhi", "vector<double>", &t_trackPhi );
370  tree->Branch("t_trackHcalEta", "vector<double>", &t_trackHcalEta );
371  tree->Branch("t_trackHcalPhi", "vector<double>", &t_trackHcalPhi );
372  tree->Branch("t_hCone", "vector<double>", &t_hCone );
373  tree->Branch("t_conehmaxNearP", "vector<double>", &t_conehmaxNearP );
374  tree->Branch("t_eMipDR", "vector<double>", &t_eMipDR );
375  tree->Branch("t_eECALDR", "vector<double>", &t_eECALDR );
376  tree->Branch("t_eHCALDR", "vector<double>", &t_eHCALDR );
377  tree->Branch("t_e11x11_20Sig", "vector<double>", &t_e11x11_20Sig );
378  tree->Branch("t_e15x15_20Sig", "vector<double>", &t_e15x15_20Sig );
379  tree->Branch("t_eMipDR_1", "vector<double>", &t_eMipDR_1 );
380  tree->Branch("t_eECALDR_1", "vector<double>", &t_eECALDR_1 );
381  tree->Branch("t_eMipDR_2", "vector<double>", &t_eMipDR_2 );
382  tree->Branch("t_eECALDR_2", "vector<double>", &t_eECALDR_2 );
383  tree->Branch("t_hConeHB", "vector<double>", &t_hConeHB );
384  tree->Branch("t_eHCALDRHB", "vector<double>", &t_eHCALDRHB );
385 
386  if (doMC) {
387  t_hsimInfoMatched = new std::vector<double>();
388  t_hsimInfoRest = new std::vector<double>();
389  t_hsimInfoPhoton = new std::vector<double>();
390  t_hsimInfoNeutHad = new std::vector<double>();
391  t_hsimInfoCharHad = new std::vector<double>();
392  t_hsimInfoPdgMatched = new std::vector<double>();
393  t_hsimInfoTotal = new std::vector<double>();
394  t_hsimInfoNMatched = new std::vector<int>();
395  t_hsimInfoNTotal = new std::vector<int>();
396  t_hsimInfoNNeutHad = new std::vector<int>();
397  t_hsimInfoNCharHad = new std::vector<int>();
398  t_hsimInfoNPhoton = new std::vector<int>();
399  t_hsimInfoNRest = new std::vector<int>();
400  t_hsim = new std::vector<double>();
401  t_nSimHits = new std::vector<int>();
402 
403  tree->Branch("t_hsimInfoMatched", "vector<double>", &t_hsimInfoMatched );
404  tree->Branch("t_hsimInfoRest", "vector<double>", &t_hsimInfoRest );
405  tree->Branch("t_hsimInfoPhoton", "vector<double>", &t_hsimInfoPhoton );
406  tree->Branch("t_hsimInfoNeutHad", "vector<double>", &t_hsimInfoNeutHad );
407  tree->Branch("t_hsimInfoCharHad", "vector<double>", &t_hsimInfoCharHad );
408  tree->Branch("t_hsimInfoPdgMatched", "vector<double>", &t_hsimInfoPdgMatched );
409  tree->Branch("t_hsimInfoTotal", "vector<double>", &t_hsimInfoTotal );
410  tree->Branch("t_hsimInfoNMatched", "vector<int>", &t_hsimInfoNMatched );
411  tree->Branch("t_hsimInfoNTotal", "vector<int>", &t_hsimInfoNTotal );
412  tree->Branch("t_hsimInfoNNeutHad", "vector<int>", &t_hsimInfoNNeutHad );
413  tree->Branch("t_hsimInfoNCharHad", "vector<int>", &t_hsimInfoNCharHad );
414  tree->Branch("t_hsimInfoNPhoton", "vector<int>", &t_hsimInfoNPhoton );
415  tree->Branch("t_hsimInfoNRest", "vector<int>", &t_hsimInfoNRest );
416  tree->Branch("t_hsim", "vector<double>", &t_hsim );
417  tree->Branch("t_nSimHits", "vector<int>", &t_nSimHits );
418  }
419 }
420 
422 
423  std::cout << "Number of Events Processed " << nEventProc << std::endl;
424 }
425 
427 
428  t_trackP ->clear();
429  t_trackPt ->clear();
430  t_trackEta ->clear();
431  t_trackPhi ->clear();
432  t_trackHcalEta ->clear();
433  t_trackHcalPhi ->clear();
434  t_hCone ->clear();
435  t_conehmaxNearP ->clear();
436  t_eMipDR ->clear();
437  t_eECALDR ->clear();
438  t_eHCALDR ->clear();
439  t_e11x11_20Sig ->clear();
440  t_e15x15_20Sig ->clear();
441  t_eMipDR_1 ->clear();
442  t_eECALDR_1 ->clear();
443  t_eMipDR_2 ->clear();
444  t_eECALDR_2 ->clear();
445  t_hConeHB ->clear();
446  t_eHCALDRHB ->clear();
447 
448  if (doMC) {
449  t_hsimInfoMatched ->clear();
450  t_hsimInfoRest ->clear();
451  t_hsimInfoPhoton ->clear();
452  t_hsimInfoNeutHad ->clear();
453  t_hsimInfoCharHad ->clear();
454  t_hsimInfoPdgMatched ->clear();
455  t_hsimInfoTotal ->clear();
456  t_hsimInfoNMatched ->clear();
457  t_hsimInfoNTotal ->clear();
458  t_hsimInfoNNeutHad ->clear();
459  t_hsimInfoNCharHad ->clear();
460  t_hsimInfoNPhoton ->clear();
461  t_hsimInfoNRest ->clear();
462  t_hsim ->clear();
463  t_nSimHits ->clear();
464  }
465 }
466 
467 
468 //define this as a plug-in
RunNumber_t run() const
Definition: EventID.h:39
double p() const
momentum vector magnitude
Definition: TrackBase.h:610
std::vector< double > * t_hsimInfoMatched
edm::Service< TFileService > fs
EventNumber_t event() const
Definition: EventID.h:41
T getUntrackedParameter(std::string const &, T const &) const
std::vector< double > * t_eHCALDR
const unsigned int nTracks(const reco::Vertex &sv)
std::vector< int > * t_hsimInfoNRest
std::vector< double > * t_hCone
std::vector< spr::propagatedTrackID > propagateCALO(edm::Handle< reco::TrackCollection > &trkCollection, const CaloGeometry *geo, const MagneticField *bField, std::string &theTrackQuality, bool debug=false)
IsolatedTracksHcalScale(const edm::ParameterSet &)
edm::EDGetTokenT< HBHERecHitCollection > tok_hbhe_
std::vector< int > * t_hsimInfoNTotal
std::vector< int > * t_hsimInfoNCharHad
edm::EDGetTokenT< edm::PCaloHitContainer > tok_caloEE_
TrackerHitAssociator::Config trackerHitAssociatorConfig_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:457
std::vector< int > * t_hsimInfoNMatched
TrackQuality
track quality
Definition: TrackBase.h:151
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
edm::EDGetTokenT< EcalRecHitCollection > tok_EE_
std::vector< double > * t_hsim
int bunchCrossing() const
Definition: EventBase.h:64
std::vector< double > * t_hsimInfoNeutHad
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:61
T * make(const Args &...args) const
make new ROOT object
Definition: TFileService.h:64
std::vector< double > * t_eMipDR_2
std::vector< int > * t_hsimInfoNPhoton
double chargeIsolationCone(unsigned int trkIndex, std::vector< spr::propagatedTrackDirection > &trkDirs, double dR, int &nNearTRKs, bool debug=false)
const Vector & momentum() const
track momentum vector
Definition: TrackBase.h:670
int iEvent
Definition: GenABIO.cc:230
edm::EDGetTokenT< EcalRecHitCollection > tok_EB_
std::vector< double > * t_e11x11_20Sig
std::vector< int > * t_hsimInfoNNeutHad
bool goodTrack(const reco::Track *pTrack, math::XYZPoint leadPV, trackSelectionParameters parameters, bool debug=false)
edm::EDGetTokenT< edm::PCaloHitContainer > tok_caloEB_
double pt() const
track transverse momentum
Definition: TrackBase.h:616
void analyze(const edm::Event &, const edm::EventSetup &)
edm::EDGetTokenT< reco::VertexCollection > tok_recVtx_
std::vector< double > * t_trackEta
int ieta() const
get the cell ieta
Definition: HcalDetId.h:56
std::vector< double > * t_eECALDR_2
edm::EDGetTokenT< edm::SimTrackContainer > tok_simTk_
std::vector< double > * t_eECALDR
spr::trackSelectionParameters selectionParameters
double eCone_ecal(const CaloGeometry *geo, edm::Handle< T > &barrelhits, edm::Handle< T > &endcaphits, const GlobalPoint &hpoint1, const GlobalPoint &point1, double dR, const GlobalVector &trackMom, int &nRecHits, double ebThr=-100, double eeThr=-100, double tMin=-500, double tMax=500, bool debug=false)
bool isValid() const
Definition: HandleBase.h:74
std::vector< double > * t_eMipDR_1
int iphi() const
get the cell iphi
Definition: HcalDetId.cc:103
std::vector< double > * t_trackPt
static TrackQuality qualityByName(const std::string &name)
Definition: TrackBase.cc:125
const MagneticField * bField
T const * product() const
Definition: Handle.h:81
std::vector< double > * t_trackHcalEta
std::vector< double > * t_trackP
std::vector< double > * t_eECALDR_1
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
const T & get() const
Definition: EventSetup.h:56
std::vector< double > * t_trackHcalPhi
std::vector< double > * t_hsimInfoPhoton
std::vector< double > * t_hsimInfoTotal
edm::EventID id() const
Definition: EventBase.h:58
edm::EDGetTokenT< edm::PCaloHitContainer > tok_caloHH_
std::vector< double > * t_hsimInfoCharHad
reco::TrackBase::TrackQuality minQuality
edm::EDGetTokenT< reco::TrackCollection > tok_genTrack_
std::vector< double > * t_trackPhi
const Point & position() const
position
Definition: BeamSpot.h:62
std::vector< double > * t_eHCALDRHB
std::vector< double > * t_hsimInfoPdgMatched
Definition: tree.py:1
edm::EDGetTokenT< reco::BeamSpot > tok_bs_
edm::EDGetTokenT< edm::SimVertexContainer > tok_simVtx_
T const * product() const
Definition: ESHandle.h:86
std::vector< int > * t_nSimHits
std::vector< double > * t_hConeHB
std::vector< double > * t_hsimInfoRest
std::vector< double > * t_conehmaxNearP
std::vector< double > * t_e15x15_20Sig
double eCone_hcal(const CaloGeometry *geo, edm::Handle< T > &hits, const GlobalPoint &hpoint1, const GlobalPoint &point1, double dR, const GlobalVector &trackMom, int &nRecHits, double hbThr=-100, double heThr=-100, double hfThr=-100, double hoThr=-100, double tMin=-500, double tMax=500, int detOnly=-1, bool useRaw=false, bool debug=false)
std::vector< double > * t_eMipDR
double eECALmatrix(const DetId &detId, edm::Handle< T > &hitsEB, edm::Handle< T > &hitsEE, const CaloGeometry *geo, const CaloTopology *caloTopology, int ieta, int iphi, double ebThr=-100, double eeThr=-100, double tMin=-500, double tMax=500, bool debug=false)