CMS 3D CMS Logo

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