CMS 3D CMS Logo

ValidationMisalignedTracker.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: ValidationMisalignedTracker
4 // Class: ValidationMisalignedTracker
5 //
13 //
14 // Original Author: Nicola De Filippis
15 // Created: Thu Dec 14 13:13:32 CET 2006
16 // $Id: ValidationMisalignedTracker.cc,v 1.8 2013/01/07 20:46:23 wmtan Exp $
17 //
18 //
19 
21 
22 // user include files
23 
28 
38 
39 //
40 // constructors and destructor
41 //
43  //now do what ever initialization is needed
44  mzmu = 0., recmzmu = 0., ptzmu = 0., recptzmu = 0., etazmu = 0., recetazmu = 0., thetazmu = 0., recthetazmu = 0.,
45  phizmu = 0., recphizmu = 0.;
46  recenezmu = 0., enezmu = 0., pLzmu = 0., recpLzmu = 0., yzmu = 0., recyzmu = 0., mxptmu = 0., recmxptmu = 0.,
47  minptmu = 0., recminptmu = 0.;
48  // mzele=0.,recmzele=0.
49 
50  flag = 0, flagrec = 0, count = 0, countrec = 0;
51  nAssoc = 0;
52 
53  for (int i = 0; i < 2; i++) {
54  countpart[i] = 0;
55  countpartrec[i] = 0;
56  for (int j = 0; j < 2; j++) {
57  ene[i][j] = 0.;
58  p[i][j] = 0.;
59  px[i][j] = 0.;
60  py[i][j] = 0.;
61  pz[i][j] = 0.;
62  ptmu[i][j] = 0.;
63  recene[i][j] = 0.;
64  recp[i][j] = 0.;
65  recpx[i][j] = 0.;
66  recpy[i][j] = 0.;
67  recpz[i][j] = 0.;
68  recptmu[i][j] = 0.;
69  }
70  }
71 
72  eventCount_ = 0;
73 
74  selection_eff = iConfig.getUntrackedParameter<bool>("selection_eff", false);
75  selection_fake = iConfig.getUntrackedParameter<bool>("selection_fake", true);
76  ZmassSelection_ = iConfig.getUntrackedParameter<bool>("ZmassSelection", false);
77  simobject = iConfig.getUntrackedParameter<std::string>("simobject", "g4SimHits");
78  trackassociator = iConfig.getUntrackedParameter<std::string>("TrackAssociator", "ByHits");
79  associators = iConfig.getParameter<std::vector<std::string> >("associators");
80  label = iConfig.getParameter<std::vector<edm::InputTag> >("label");
81  label_tp_effic = iConfig.getParameter<edm::InputTag>("label_tp_effic");
82  label_tp_fake = iConfig.getParameter<edm::InputTag>("label_tp_fake");
83 
84  rootfile_ = iConfig.getUntrackedParameter<std::string>("rootfile", "myroot.root");
85  file_ = new TFile(rootfile_.c_str(), "RECREATE");
86 
87  // initialize the tree
88  tree_eff = new TTree("EffTracks", "Efficiency Tracks Tree");
89 
90  tree_eff->Branch("Run", &irun, "irun/i");
91  tree_eff->Branch("Event", &ievt, "ievt/i");
92 
93  // SimTrack
94  tree_eff->Branch("TrackID", &trackType, "trackType/i");
95  tree_eff->Branch("pt", &pt, "pt/F");
96  tree_eff->Branch("eta", &eta, "eta/F");
97  tree_eff->Branch("CotTheta", &cottheta, "cottheta/F");
98  tree_eff->Branch("phi", &phi, "phi/F");
99  tree_eff->Branch("d0", &d0, "d0/F");
100  tree_eff->Branch("z0", &z0, "z0/F");
101  tree_eff->Branch("nhit", &nhit, "nhit/i");
102 
103  // RecTrack
104  tree_eff->Branch("recpt", &recpt, "recpt/F");
105  tree_eff->Branch("receta", &receta, "receta/F");
106  tree_eff->Branch("CotRecTheta", &reccottheta, "reccottheta/F");
107  tree_eff->Branch("recphi", &recphi, "recphi/F");
108  tree_eff->Branch("recd0", &recd0, "recd0/F");
109  tree_eff->Branch("recz0", &recz0, "recz0/F");
110  tree_eff->Branch("nAssoc", &nAssoc, "nAssoc/i");
111  tree_eff->Branch("recnhit", &recnhit, "recnhit/i");
112  tree_eff->Branch("CHISQ", &recchiq, "recchiq/F");
113 
114  tree_eff->Branch("reseta", &reseta, "reseta/F");
115  tree_eff->Branch("respt", &respt, "respt/F");
116  tree_eff->Branch("resd0", &resd0, "resd0/F");
117  tree_eff->Branch("resz0", &resz0, "resz0/F");
118  tree_eff->Branch("resphi", &resphi, "resphi/F");
119  tree_eff->Branch("rescottheta", &rescottheta, "rescottheta/F");
120  tree_eff->Branch("eff", &eff, "eff/F");
121 
122  // Invariant masses, pt of Z
123  tree_eff->Branch("mzmu", &mzmu, "mzmu/F");
124  tree_eff->Branch("ptzmu", &ptzmu, "ptzmu/F");
125  tree_eff->Branch("pLzmu", &pLzmu, "pLzmu/F");
126  tree_eff->Branch("enezmu", &enezmu, "enezmu/F");
127  tree_eff->Branch("etazmu", &etazmu, "etazmu/F");
128  tree_eff->Branch("thetazmu", &thetazmu, "thetazmu/F");
129  tree_eff->Branch("phizmu", &phizmu, "phizmu/F");
130  tree_eff->Branch("yzmu", &yzmu, "yzmu/F");
131  tree_eff->Branch("mxptmu", &mxptmu, "mxptmu/F");
132  tree_eff->Branch("minptmu", &minptmu, "minptmu/F");
133 
134  tree_eff->Branch("recmzmu", &recmzmu, "recmzmu/F");
135  tree_eff->Branch("recptzmu", &recptzmu, "recptzmu/F");
136  tree_eff->Branch("recpLzmu", &recpLzmu, "recpLzmu/F");
137  tree_eff->Branch("recenezmu", &recenezmu, "recenezmu/F");
138  tree_eff->Branch("recetazmu", &recetazmu, "recetazmu/F");
139  tree_eff->Branch("recthetazmu", &recthetazmu, "recthetazmu/F");
140  tree_eff->Branch("recphizmu", &recphizmu, "recphizmu/F");
141  tree_eff->Branch("recyzmu", &recyzmu, "recyzmu/F");
142  tree_eff->Branch("recmxptmu", &recmxptmu, "recmxptmu/F");
143  tree_eff->Branch("recminptmu", &recminptmu, "recminptmu/F");
144 
145  //tree->Branch("mzele",&ntmzele,"ntmzele/F");
146  //tree->Branch("recmzele",&ntmzeleRec,"ntmzeleRec/F");
147  tree_eff->Branch("chi2Associator", &recchiq, "recchiq/F");
148 
149  // Fake
150 
151  tree_fake = new TTree("FakeTracks", "Fake Rate Tracks Tree");
152 
153  tree_fake->Branch("Run", &irun, "irun/i");
154  tree_fake->Branch("Event", &ievt, "ievt/i");
155 
156  // SimTrack
157  tree_fake->Branch("fakeTrackID", &faketrackType, "faketrackType/i");
158  tree_fake->Branch("fakept", &fakept, "fakept/F");
159  tree_fake->Branch("fakeeta", &fakeeta, "fakeeta/F");
160  tree_fake->Branch("fakeCotTheta", &fakecottheta, "fakecottheta/F");
161  tree_fake->Branch("fakephi", &fakephi, "fakephi/F");
162  tree_fake->Branch("faked0", &faked0, "faked0/F");
163  tree_fake->Branch("fakez0", &fakez0, "fakez0/F");
164  tree_fake->Branch("fakenhit", &fakenhit, "fakenhit/i");
165 
166  // RecTrack
167  tree_fake->Branch("fakerecpt", &fakerecpt, "fakerecpt/F");
168  tree_fake->Branch("fakereceta", &fakereceta, "fakereceta/F");
169  tree_fake->Branch("fakeCotRecTheta", &fakereccottheta, "fakereccottheta/F");
170  tree_fake->Branch("fakerecphi", &fakerecphi, "fakerecphi/F");
171  tree_fake->Branch("fakerecd0", &fakerecd0, "fakerecd0/F");
172  tree_fake->Branch("fakerecz0", &fakerecz0, "fakerecz0/F");
173  tree_fake->Branch("fakenAssoc", &fakenAssoc, "fakenAssoc/i");
174  tree_fake->Branch("fakerecnhit", &fakerecnhit, "fakerecnhit/i");
175  tree_fake->Branch("fakeCHISQ", &fakerecchiq, "fakerecchiq/F");
176 
177  tree_fake->Branch("fakereseta", &fakereseta, "fakereseta/F");
178  tree_fake->Branch("fakerespt", &fakerespt, "fakerespt/F");
179  tree_fake->Branch("fakeresd0", &fakeresd0, "fakeresd0/F");
180  tree_fake->Branch("fakeresz0", &fakeresz0, "fakeresz0/F");
181  tree_fake->Branch("fakeresphi", &fakeresphi, "fakeresphi/F");
182  tree_fake->Branch("fakerescottheta", &fakerescottheta, "fakerescottheta/F");
183  tree_fake->Branch("fake", &fake, "fake/F");
184 
185  // Invariant masses, pt of Z
186  tree_fake->Branch("fakemzmu", &fakemzmu, "fakemzmu/F");
187  tree_fake->Branch("fakeptzmu", &fakeptzmu, "fakeptzmu/F");
188  tree_fake->Branch("fakepLzmu", &fakepLzmu, "fakepLzmu/F");
189  tree_fake->Branch("fakeenezmu", &fakeenezmu, "fakeenezmu/F");
190  tree_fake->Branch("fakeetazmu", &fakeetazmu, "fakeetazmu/F");
191  tree_fake->Branch("fakethetazmu", &fakethetazmu, "fakethetazmu/F");
192  tree_fake->Branch("fakephizmu", &fakephizmu, "fakephizmu/F");
193  tree_fake->Branch("fakeyzmu", &fakeyzmu, "fakeyzmu/F");
194  tree_fake->Branch("fakemxptmu", &fakemxptmu, "fakemxptmu/F");
195  tree_fake->Branch("fakeminptmu", &fakeminptmu, "fakeminptmu/F");
196 
197  tree_fake->Branch("fakerecmzmu", &fakerecmzmu, "fakerecmzmu/F");
198  tree_fake->Branch("fakerecptzmu", &fakerecptzmu, "fakerecptzmu/F");
199  tree_fake->Branch("fakerecpLzmu", &fakerecpLzmu, "fakerecpLzmu/F");
200  tree_fake->Branch("fakerecenezmu", &fakerecenezmu, "fakerecenezmu/F");
201  tree_fake->Branch("fakerecetazmu", &fakerecetazmu, "fakerecetazmu/F");
202  tree_fake->Branch("fakerecthetazmu", &fakerecthetazmu, "fakerecthetazmu/F");
203  tree_fake->Branch("fakerecphizmu", &fakerecphizmu, "fakerecphizmu/F");
204  tree_fake->Branch("fakerecyzmu", &fakerecyzmu, "fakerecyzmu/F");
205  tree_fake->Branch("fakerecmxptmu", &fakerecmxptmu, "fakerecmxptmu/F");
206  tree_fake->Branch("fakerecminptmu", &fakerecminptmu, "fakerecminptmu/F");
207 
208  tree_fake->Branch("fakechi2Associator", &fakerecchiq, "fakerecchiq/F");
209 }
210 
212  std::cout << "ValidationMisalignedTracker::endJob Processed " << eventCount_ << " events" << std::endl;
213 
214  // store the tree in the output file
215  file_->Write();
216 
217  // Closing the file deletes the tree.
218  file_->Close();
219  tree_eff = nullptr;
220  tree_fake = nullptr;
221 }
222 
223 //
224 // member functions
225 //
226 
227 // ------------ method called to for each event ------------
229  std::vector<const reco::TrackToTrackingParticleAssociator*> associatore;
230 
231  {
233  for (unsigned int w = 0; w < associators.size(); w++) {
234  iEvent.getByLabel(associators[w], theAssociator);
235  associatore.push_back(theAssociator.product());
236  }
237  }
238 
239  edm::LogInfo("Tracker Misalignment Validation") << "\n Starting!";
240 
241  // Monte Carlo Z selection
242  skip = false;
243  std::vector<int> indmu;
244 
247  iEvent.getByLabel("source", evt);
248  bool accepted = false;
249  bool foundmuons = false;
250  HepMC::GenEvent* myGenEvent = new HepMC::GenEvent(*(evt->GetEvent()));
251 
252  for (HepMC::GenEvent::particle_iterator p = myGenEvent->particles_begin(); p != myGenEvent->particles_end(); ++p) {
253  if (!accepted && ((*p)->pdg_id() == 23) && (*p)->status() == 3) {
254  accepted = true;
255  for (HepMC::GenVertex::particle_iterator aDaughter = (*p)->end_vertex()->particles_begin(HepMC::descendants);
256  aDaughter != (*p)->end_vertex()->particles_end(HepMC::descendants);
257  aDaughter++) {
258  if (abs((*aDaughter)->pdg_id()) == 13) {
259  foundmuons = true;
260  if ((*aDaughter)->status() != 1) {
261  for (HepMC::GenVertex::particle_iterator byaDaughter =
262  (*aDaughter)->end_vertex()->particles_begin(HepMC::descendants);
263  byaDaughter != (*aDaughter)->end_vertex()->particles_end(HepMC::descendants);
264  byaDaughter++) {
265  if ((*byaDaughter)->status() == 1 && abs((*byaDaughter)->pdg_id()) == 13) {
266  indmu.push_back((*byaDaughter)->barcode());
267  std::cout << "Stable muon from Z with charge " << (*byaDaughter)->pdg_id() << " and index "
268  << (*byaDaughter)->barcode() << std::endl;
269  }
270  }
271  } else {
272  indmu.push_back((*aDaughter)->barcode());
273  std::cout << "Stable muon from Z with charge " << (*aDaughter)->pdg_id() << " and index "
274  << (*aDaughter)->barcode() << std::endl;
275  }
276  }
277  }
278  if (!foundmuons) {
279  std::cout << "No muons from Z ...skip event" << std::endl;
280  skip = true;
281  }
282  }
283  }
284  if (!accepted) {
285  std::cout << "No Z particles in the event ...skip event" << std::endl;
286  skip = true;
287  }
288  } else {
289  skip = false;
290  }
291 
292  //
293  // Retrieve tracker geometry from event setup
294  //
295  edm::ESHandle<TrackerGeometry> trackerGeometry;
296  iSetup.get<TrackerDigiGeometryRecord>().get(trackerGeometry);
297  auto testGeomDet = trackerGeometry->detsTOB().front();
298  std::cout << testGeomDet->position() << std::endl;
299 
300  //Dump Run and Event
301  irun = iEvent.id().run();
302  ievt = iEvent.id().event();
303 
304  // Reset tree variables
305  int countpart[2] = {0, 0}, countpartrec[2] = {0, 0}, flag = 0, flagrec = 0, count = 0, countrec = 0;
306  //int countsim=0;
307  float ene[2][2], px[2][2], py[2][2], pz[2][2], ptmu[2][2];
308  float recene[2][2], recp[2][2], recpx[2][2], recpy[2][2], recpz[2][2], recptmu[2][2];
309 
310  for (int i = 0; i < 2; i++) {
311  for (int j = 0; j < 2; j++) {
312  ene[i][j] = 0.;
313  px[i][j] = 0.;
314  py[i][j] = 0.;
315  pz[i][j] = 0.;
316  ptmu[i][j] = 0.;
317  recene[i][j] = 0.;
318  recp[i][j] = 0.;
319  recpx[i][j] = 0.;
320  recpy[i][j] = 0.;
321  recpz[i][j] = 0.;
322  recptmu[i][j] = 0.;
323  }
324  }
325 
327  iEvent.getByLabel(label_tp_effic, TPCollectionHeff);
328  const TrackingParticleCollection tPCeff = *(TPCollectionHeff.product());
329 
330  edm::Handle<TrackingParticleCollection> TPCollectionHfake;
331  iEvent.getByLabel(label_tp_fake, TPCollectionHfake);
332  const TrackingParticleCollection tPCfake = *(TPCollectionHfake.product());
333 
334  int w = 0;
335  for (unsigned int ww = 0; ww < associators.size(); ww++) {
336  //
337  //get collections from the event
338  //
339 
340  edm::InputTag algo = label[0];
341 
343  iEvent.getByLabel(algo, trackCollection);
344  const edm::View<reco::Track> tC = *(trackCollection.product());
345 
346  //associate tracks
347  LogTrace("TrackValidator") << "Calling associateRecoToSim method"
348  << "\n";
349  reco::RecoToSimCollection recSimColl = associatore[ww]->associateRecoToSim(trackCollection, TPCollectionHfake);
350 
351  LogTrace("TrackValidator") << "Calling associateSimToReco method"
352  << "\n";
353  reco::SimToRecoCollection simRecColl = associatore[ww]->associateSimToReco(trackCollection, TPCollectionHeff);
354 
355  //
356  //compute number of tracks per eta interval
357  //
358 
359  if (selection_eff && !skip) {
360  std::cout << "Computing Efficiency" << std::endl;
361 
362  edm::LogVerbatim("TrackValidator") << "\n# of TrackingParticles (before cuts): " << tPCeff.size() << "\n";
363  int ats = 0;
364  int st = 0;
365  for (TrackingParticleCollection::size_type i = 0; i < tPCeff.size(); i++) {
366  // Initialize variables
367  eta = 0., theta = 0., phi = 0., pt = 0., cottheta = 0., costheta = 0.;
368  d0 = 0., z0 = 0.;
369  nhit = 0;
370  receta = 0., rectheta = 0., recphi = 0., recpt = 0., reccottheta = 0., recd0 = 0., recz0 = 0.;
371  respt = 0., resd0 = 0., resz0 = 0., reseta = 0., resphi = 0., rescottheta = 0.;
372  recchiq = 0.;
373  recnhit = 0;
374  trackType = 0;
375  eff = 0;
376 
377  // typedef edm::Ref<TrackingParticleCollection> TrackingParticleRef;
378  TrackingParticleRef tp(TPCollectionHeff, i);
379  if (tp->charge() == 0)
380  continue;
381  st++;
382  //pt=sqrt(tp->momentum().perp2());
383  //eta=tp->momentum().eta();
384  //vpos=tp->vertex().perp2()));
385 
386  const SimTrack* simulatedTrack = &(*tp->g4Track_begin());
387 
390  FreeTrajectoryState ftsAtProduction(
391  GlobalPoint(tp->vertex().x(), tp->vertex().y(), tp->vertex().z()),
392  GlobalVector(
393  simulatedTrack->momentum().x(), simulatedTrack->momentum().y(), simulatedTrack->momentum().z()),
394  TrackCharge(tp->charge()),
395  theMF.product());
396  TSCPBuilderNoMaterial tscpBuilder;
397  TrajectoryStateClosestToPoint tsAtClosestApproach =
398  tscpBuilder(ftsAtProduction, GlobalPoint(0, 0, 0)); //as in TrackProducerAlgorithm
399  GlobalPoint v = tsAtClosestApproach.theState().position();
400  GlobalVector p = tsAtClosestApproach.theState().momentum();
401 
402  // double qoverpSim = tsAtClosestApproach.charge()/p.mag();
403  // double lambdaSim = M_PI/2-p.theta();
404  // double phiSim = p.phi();
405  double dxySim = (-v.x() * sin(p.phi()) + v.y() * cos(p.phi()));
406  double dszSim = v.z() * p.perp() / p.mag() - (v.x() * p.x() + v.y() * p.y()) / p.perp() * p.z() / p.mag();
407  d0 = float(-dxySim);
408  z0 = float(dszSim * p.mag() / p.perp());
409 
410  if (abs(simulatedTrack->type()) == 13 && simulatedTrack->genpartIndex() != -1) {
411  std::cout << " TRACCIA SIM DI MUONI " << std::endl;
412  std::cout << "Gen part " << simulatedTrack->genpartIndex() << std::endl;
413  trackType = simulatedTrack->type();
414  theta = simulatedTrack->momentum().theta();
415  costheta = cos(theta);
416  cottheta = 1. / tan(theta);
417 
418  eta = simulatedTrack->momentum().eta();
419  phi = simulatedTrack->momentum().phi();
420  pt = simulatedTrack->momentum().pt();
421  nhit = tp->matchedHit();
422 
423  std::cout << "3) Before assoc: SimTrack of type = " << simulatedTrack->type() << " ,at eta = " << eta
424  << " ,with pt at vertex = " << simulatedTrack->momentum().pt() << " GeV/c"
425  << " ,d0 =" << d0 << " ,z0 =" << z0 << " ,nhit=" << nhit << std::endl;
426 
427  if (ZmassSelection_) {
428  if (abs(trackType) == 13 &&
429  (simulatedTrack->genpartIndex() == indmu[0] || simulatedTrack->genpartIndex() == indmu[1])) {
430  std::cout << " TRACK sim of muons from Z " << std::endl;
431  flag = 0;
432  count = countpart[0];
433  countpart[0]++;
434  } else if (abs(trackType) == 11) {
435  //std::cout << " TRACCIA SIM DI ELETTRONI " << std::endl;
436  flag = 1;
437  count = countpart[1];
438  countpart[1]++;
439  }
440 
441  px[flag][count] = simulatedTrack->momentum().x();
442  py[flag][count] = simulatedTrack->momentum().y();
443  pz[flag][count] = simulatedTrack->momentum().z();
444  ptmu[flag][count] = simulatedTrack->momentum().pt();
445  ene[flag][count] = simulatedTrack->momentum().e();
446  }
447 
448  std::vector<std::pair<edm::RefToBase<reco::Track>, double> > rt;
449  if (simRecColl.find(tp) != simRecColl.end()) {
450  rt = simRecColl[tp];
451  if (!rt.empty()) {
452  edm::RefToBase<reco::Track> t = rt.begin()->first;
453  ats++;
454 
455  // bool flagptused=false;
456  // for (unsigned int j=0;j<ptused.size();j++){
457  // if (fabs(t->pt()-ptused[j])<0.001) {
458  // flagptused=true;
459  // }
460  // }
461 
462  edm::LogVerbatim("TrackValidator") << "TrackingParticle #" << st << " with pt=" << t->pt()
463  << " associated with quality:" << rt.begin()->second << "\n";
464  std::cout << "Reconstructed Track:" << t->pt() << std::endl;
465  std::cout << "\tpT: " << t->pt() << std::endl;
466  std::cout << "\timpact parameter:d0: " << t->d0() << std::endl;
467  std::cout << "\timpact parameter:z0: " << t->dz() << std::endl;
468  std::cout << "\tAzimuthal angle of point of closest approach:" << t->phi() << std::endl;
469  std::cout << "\tcharge: " << t->charge() << std::endl;
470  std::cout << "\teta: " << t->eta() << std::endl;
471  std::cout << "\tnormalizedChi2: " << t->normalizedChi2() << std::endl;
472 
473  recnhit = t->numberOfValidHits();
474  recchiq = t->normalizedChi2();
475  rectheta = t->theta();
476  reccottheta = 1. / tan(rectheta);
477  //receta=-log(tan(rectheta/2.));
478  receta = t->momentum().eta();
479  // reccostheta=cos(matchedrectrack->momentum().theta());
480  recphi = t->phi();
481  recpt = t->pt();
482  ptused.push_back(recpt);
483  recd0 = t->d0();
484  recz0 = t->dz();
485 
486  std::cout << "5) After call to associator: the best match has " << recnhit << " hits, Chi2 = " << recchiq
487  << ", pt at vertex = " << recpt << " GeV/c, "
488  << ", recd0 = " << recd0 << ", recz0= " << recz0 << std::endl;
489 
490  respt = recpt - pt;
491  resd0 = recd0 - d0;
492  resz0 = recz0 - z0;
493  reseta = receta - eta;
494  resphi = recphi - phi;
496  eff = 1;
497 
498  std::cout << "6) Transverse momentum residual=" << respt << " ,d0 residual=" << resd0
499  << " ,z0 residual=" << resz0 << " with eff=" << eff << std::endl;
500 
501  if (ZmassSelection_) {
502  if (abs(trackType) == 13) {
503  std::cout << " TRACCIA RECO DI MUONI " << std::endl;
504  flagrec = 0;
505  countrec = countpartrec[0];
506  countpartrec[0]++;
507  } else if (abs(trackType) == 11) {
508  std::cout << " TRACCIA RECO DI ELETTRONI " << std::endl;
509  flagrec = 1;
510  countrec = countpartrec[1];
511  countpartrec[1]++;
512  }
513 
514  recp[flagrec][countrec] = sqrt(t->momentum().mag2());
515  recpx[flagrec][countrec] = t->momentum().x();
516  recpy[flagrec][countrec] = t->momentum().y();
517  recpz[flagrec][countrec] = t->momentum().z();
519  sqrt((t->momentum().x() * t->momentum().x()) + (t->momentum().y() * t->momentum().y()));
520  if (abs(trackType) == 13)
521  recene[flagrec][countrec] = sqrt(recp[flagrec][countrec] * recp[flagrec][countrec] + 0.105 * 0.105);
522  if (abs(trackType) == 11)
523  recene[flagrec][countrec] = sqrt(recp[flagrec][countrec] * recp[flagrec][countrec] + 0.0005 * 0.0005);
524  }
525 
526  std::cout << "7) Transverse momentum reconstructed =" << recpt << " at eta= " << receta
527  << " and phi= " << recphi << std::endl;
528  }
529  } else {
530  edm::LogVerbatim("TrackValidator")
531  << "TrackingParticle #" << st << " with pt=" << sqrt(tp->momentum().perp2())
532  << " NOT associated to any reco::Track"
533  << "\n";
534  receta = -100.;
535  recphi = -100.;
536  recpt = -100.;
537  recd0 = -100.;
538  recz0 = -100;
539  respt = -100.;
540  resd0 = -100.;
541  resz0 = -100.;
542  resphi = -100.;
543  reseta = -100.;
544  rescottheta = -100.;
545  recnhit = 100;
546  recchiq = -100;
547  eff = 0;
548  flagrec = 100;
549  }
550 
551  std::cout << "Eff=" << eff << std::endl;
552 
553  // simulated muons
554 
555  std::cout << "Flag is" << flag << std::endl;
556  std::cout << "RecFlag is" << flagrec << std::endl;
557 
558  if (countpart[0] == 2 && flag == 0) {
559  mzmu =
560  sqrt((ene[0][0] + ene[0][1]) * (ene[0][0] + ene[0][1]) - (px[0][0] + px[0][1]) * (px[0][0] + px[0][1]) -
561  (py[0][0] + py[0][1]) * (py[0][0] + py[0][1]) - (pz[0][0] + pz[0][1]) * (pz[0][0] + pz[0][1]));
562  std::cout << "Mzmu " << mzmu << std::endl;
563  ptzmu = sqrt((px[0][0] + px[0][1]) * (px[0][0] + px[0][1]) + (py[0][0] + py[0][1]) * (py[0][0] + py[0][1]));
564 
565  pLzmu = pz[0][0] + pz[0][1];
566  enezmu = ene[0][0] + ene[0][1];
567  phizmu = atan2((py[0][0] + py[0][1]), (px[0][0] + px[0][1]));
568  thetazmu = atan2(ptzmu, (pz[0][0] + pz[0][1]));
569  etazmu = -log(tan(thetazmu * 3.14 / 360.));
570  yzmu = 0.5 * log((enezmu + pLzmu) / (enezmu - pLzmu));
571  mxptmu = std::max(ptmu[0][0], ptmu[0][1]);
572  minptmu = std::min(ptmu[0][0], ptmu[0][1]);
573  } else {
574  mzmu = -100.;
575  ptzmu = -100.;
576  pLzmu = -100.;
577  enezmu = -100.;
578  etazmu = -100.;
579  phizmu = -100.;
580  thetazmu = -100.;
581  yzmu = -100.;
582  mxptmu = -100.;
583  minptmu = -100.;
584  }
585 
586  // reconstructed muons
587  if (countpartrec[0] == 2 && flagrec == 0) {
588  recmzmu = sqrt((recene[0][0] + recene[0][1]) * (recene[0][0] + recene[0][1]) -
589  (recpx[0][0] + recpx[0][1]) * (recpx[0][0] + recpx[0][1]) -
590  (recpy[0][0] + recpy[0][1]) * (recpy[0][0] + recpy[0][1]) -
591  (recpz[0][0] + recpz[0][1]) * (recpz[0][0] + recpz[0][1]));
592  std::cout << "RecMzmu " << recmzmu << std::endl;
593  recptzmu = sqrt((recpx[0][0] + recpx[0][1]) * (recpx[0][0] + recpx[0][1]) +
594  (recpy[0][0] + recpy[0][1]) * (recpy[0][0] + recpy[0][1]));
595 
596  recpLzmu = recpz[0][0] + recpz[0][1];
597  recenezmu = recene[0][0] + recene[0][1];
598  recphizmu = atan2((recpy[0][0] + recpy[0][1]), (recpx[0][0] + recpx[0][1]));
599  recthetazmu = atan2(recptzmu, (recpz[0][0] + recpz[0][1]));
600  recetazmu = -log(tan(recthetazmu * 3.14 / 360.));
601  recyzmu = 0.5 * log((recenezmu + recpLzmu) / (recenezmu - recpLzmu));
602  recmxptmu = std::max(recptmu[0][0], recptmu[0][1]);
603  recminptmu = std::min(recptmu[0][0], recptmu[0][1]);
604  } else {
605  recmzmu = -100.;
606  recptzmu = -100.;
607  recpLzmu = -100.;
608  recenezmu = -100.;
609  recetazmu = -100.;
610  recphizmu = -100.;
611  recthetazmu = -100.;
612  recyzmu = -100.;
613  recmxptmu = -100;
614  recminptmu = -100.;
615  }
616 
617  tree_eff->Fill();
618 
619  } // end of loop on muons
620  } // end of loop for tracking particle
621  } // end of loop for efficiency
622 
623  //
624  // Fake Rate
625  //
626  if (selection_fake) {
627  std::cout << "Computing Fake Rate" << std::endl;
628 
629  fakeeta = 0., faketheta = 0., fakephi = 0., fakept = 0., fakecottheta = 0., fakecostheta = 0.;
630  faked0 = 0., fakez0 = 0.;
631  fakenhit = 0;
632  fakereceta = 0., fakerectheta = 0., fakerecphi = 0., fakerecpt = 0., fakereccottheta = 0., fakerecd0 = 0.,
633  fakerecz0 = 0.;
634  fakerespt = 0., fakeresd0 = 0., fakeresz0 = 0., fakereseta = 0., fakeresphi = 0., fakerescottheta = 0.;
635  fakerecchiq = 0.;
636  fakerecnhit = 0;
637  faketrackType = 0;
638  fake = 0;
639 
640  // int at=0;
641  int rT = 0;
642  for (reco::TrackCollection::size_type i = 0; i < tC.size(); ++i) {
644  rT++;
645 
646  fakeeta = 0., faketheta = 0., fakephi = 0., fakept = 0., fakecottheta = 0., fakecostheta = 0.;
647  faked0 = 0., fakez0 = 0.;
648  fakenhit = 0;
649  fakereceta = 0., fakerectheta = 0., fakerecphi = 0., fakerecpt = 0., fakereccottheta = 0., fakerecd0 = 0.,
650  fakerecz0 = 0.;
651  fakerespt = 0., fakeresd0 = 0., fakeresz0 = 0., fakereseta = 0., fakeresphi = 0., fakerescottheta = 0.;
652  fakerecchiq = 0.;
653  fakerecnhit = 0;
654  faketrackType = 0;
655  fake = 0;
656 
657  fakerecnhit = track->numberOfValidHits();
658  fakerecchiq = track->normalizedChi2();
659  fakerectheta = track->theta();
660  fakereccottheta = 1. / tan(rectheta);
661  //fakereceta=-log(tan(rectheta/2.));
662  fakereceta = track->momentum().eta();
663  // fakereccostheta=cos(track->momentum().theta());
664  fakerecphi = track->phi();
665  fakerecpt = track->pt();
666  fakerecd0 = track->d0();
667  fakerecz0 = track->dz();
668 
669  std::cout << "1) Before assoc: TkRecTrack at eta = " << fakereceta << std::endl;
670  std::cout << "Track number " << i << std::endl;
671  std::cout << "\tPT: " << track->pt() << std::endl;
672  std::cout << "\timpact parameter:d0: " << track->d0() << std::endl;
673  std::cout << "\timpact parameter:z0: " << track->dz() << std::endl;
674  std::cout << "\tAzimuthal angle of point of closest approach:" << track->phi() << std::endl;
675  std::cout << "\tcharge: " << track->charge() << std::endl;
676  std::cout << "\teta: " << track->eta() << std::endl;
677  std::cout << "\tnormalizedChi2: " << track->normalizedChi2() << std::endl;
678 
679  std::vector<std::pair<TrackingParticleRef, double> > tp;
680 
681  //Compute fake rate vs eta
682  if (recSimColl.find(track) != recSimColl.end()) {
683  tp = recSimColl[track];
684  if (!tp.empty()) {
685  edm::LogVerbatim("TrackValidator") << "reco::Track #" << rT << " with pt=" << track->pt()
686  << " associated with quality:" << tp.begin()->second << "\n";
687 
688  TrackingParticleRef tpr = tp.begin()->first;
689  const SimTrack* fakeassocTrack = &(*tpr->g4Track_begin());
690 
693  FreeTrajectoryState ftsAtProduction(
694  GlobalPoint(tpr->vertex().x(), tpr->vertex().y(), tpr->vertex().z()),
695  GlobalVector(
696  fakeassocTrack->momentum().x(), fakeassocTrack->momentum().y(), fakeassocTrack->momentum().z()),
697  TrackCharge(tpr->charge()),
698  theMF.product());
699  TSCPBuilderNoMaterial tscpBuilder;
700  TrajectoryStateClosestToPoint tsAtClosestApproach =
701  tscpBuilder(ftsAtProduction, GlobalPoint(0, 0, 0)); //as in TrackProducerAlgorithm
702  GlobalPoint v = tsAtClosestApproach.theState().position();
703  GlobalVector p = tsAtClosestApproach.theState().momentum();
704 
705  // double qoverpSim = tsAtClosestApproach.charge()/p.mag();
706  // double lambdaSim = M_PI/2-p.theta();
707  // double phiSim = p.phi();
708  double dxySim = (-v.x() * sin(p.phi()) + v.y() * cos(p.phi()));
709  double dszSim = v.z() * p.perp() / p.mag() - (v.x() * p.x() + v.y() * p.y()) / p.perp() * p.z() / p.mag();
710  faked0 = float(-dxySim);
711  fakez0 = float(dszSim * p.mag() / p.perp());
712 
713  faketrackType = fakeassocTrack->type();
714  faketheta = fakeassocTrack->momentum().theta();
715  fakecottheta = 1. / tan(faketheta);
716  fakeeta = fakeassocTrack->momentum().eta();
717  fakephi = fakeassocTrack->momentum().phi();
718  fakept = fakeassocTrack->momentum().pt();
719  fakenhit = tpr->matchedHit();
720 
721  std::cout << "4) After call to associator: the best SimTrack match is of type" << fakeassocTrack->type()
722  << " ,at eta = " << fakeeta << " and phi = " << fakephi << " ,with pt at vertex = " << fakept
723  << " GeV/c"
724  << " ,d0 global = " << faked0 << " ,z0 = " << fakez0 << std::endl;
725  fake = 1;
726 
730  fakereseta = -log(tan(fakerectheta / 2.)) - (-log(tan(faketheta / 2.)));
733  }
734  } else {
735  edm::LogVerbatim("TrackValidator")
736  << "reco::Track #" << rT << " with pt=" << track->pt() << " NOT associated to any TrackingParticle"
737  << "\n";
738 
739  fakeeta = -100.;
740  faketheta = -100;
741  fakephi = -100.;
742  fakept = -100.;
743  faked0 = -100.;
744  fakez0 = -100;
745  fakerespt = -100.;
746  fakeresd0 = -100.;
747  fakeresz0 = -100.;
748  fakeresphi = -100.;
749  fakereseta = -100.;
750  fakerescottheta = -100.;
751  fakenhit = 100;
752  fake = 0;
753  }
754 
755  tree_fake->Fill();
756  }
757 
758  } // End of loop on fakerate
759 
760  w++;
761 
762  } // End of loop on associators
763 }
764 
765 // ------------ method called once each job just after ending the event loop ------------
766 void ValidationMisalignedTracker::endJob() { std::cout << "\t Misalignment analysis completed \n" << std::endl; }
767 
Vector3DBase
Definition: Vector3DBase.h:8
ValidationMisalignedTracker::fakemxptmu
float fakemxptmu
Definition: ValidationMisalignedTracker.h:74
ValidationMisalignedTracker::z0
float z0
Definition: ValidationMisalignedTracker.h:65
ValidationMisalignedTracker::enezmu
float enezmu
Definition: ValidationMisalignedTracker.h:57
ValidationMisalignedTracker::fakerecptzmu
float fakerecptzmu
Definition: ValidationMisalignedTracker.h:72
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
ValidationMisalignedTracker::nAssoc
int nAssoc
Definition: ValidationMisalignedTracker.h:68
FreeTrajectoryState::momentum
GlobalVector momentum() const
Definition: FreeTrajectoryState.h:68
ValidationMisalignedTracker::ZmassSelection_
bool ZmassSelection_
Definition: ValidationMisalignedTracker.h:45
CoreSimTrack::momentum
const math::XYZTLorentzVectorD & momentum() const
Definition: CoreSimTrack.h:19
ValidationMisalignedTracker::cottheta
float cottheta
Definition: ValidationMisalignedTracker.h:65
edm::AssociationMap::find
const_iterator find(const key_type &k) const
find element with specified reference key
Definition: AssociationMap.h:173
mps_fire.i
i
Definition: mps_fire.py:355
FreeTrajectoryState.h
MessageLogger.h
dqmMemoryStats.float
float
Definition: dqmMemoryStats.py:127
ValidationMisalignedTracker::label_tp_fake
edm::InputTag label_tp_fake
Definition: ValidationMisalignedTracker.h:96
TrackCharge
int TrackCharge
Definition: TrackCharge.h:4
ValidationMisalignedTracker::fakerecz0
float fakerecz0
Definition: ValidationMisalignedTracker.h:83
TrackerGeometry.h
ValidationMisalignedTracker::recphizmu
float recphizmu
Definition: ValidationMisalignedTracker.h:56
edm::Handle::product
T const * product() const
Definition: Handle.h:70
ValidationMisalignedTracker::theta
float theta
Definition: ValidationMisalignedTracker.h:65
ValidationMisalignedTracker::mxptmu
float mxptmu
Definition: ValidationMisalignedTracker.h:57
ValidationMisalignedTracker::fakerecmxptmu
float fakerecmxptmu
Definition: ValidationMisalignedTracker.h:74
ValidationMisalignedTracker::yzmu
float yzmu
Definition: ValidationMisalignedTracker.h:57
ValidationMisalignedTracker::fakeminptmu
float fakeminptmu
Definition: ValidationMisalignedTracker.h:74
min
T min(T a, T b)
Definition: MathUtil.h:58
ValidationMisalignedTracker::fakeresphi
float fakeresphi
Definition: ValidationMisalignedTracker.h:86
ValidationMisalignedTracker::fakerecthetazmu
float fakerecthetazmu
Definition: ValidationMisalignedTracker.h:72
ValidationMisalignedTracker::reccottheta
float reccottheta
Definition: ValidationMisalignedTracker.h:67
ValidationMisalignedTracker::recz0
float recz0
Definition: ValidationMisalignedTracker.h:67
ValidationMisalignedTracker::irun
int irun
Definition: ValidationMisalignedTracker.h:54
ValidationMisalignedTracker::fakeresz0
float fakeresz0
Definition: ValidationMisalignedTracker.h:86
ValidationMisalignedTracker::fakerecpt
float fakerecpt
Definition: ValidationMisalignedTracker.h:83
gather_cfg.cout
cout
Definition: gather_cfg.py:144
hcal_runs.rt
rt
Definition: hcal_runs.py:76
ValidationMisalignedTracker::phizmu
float phizmu
Definition: ValidationMisalignedTracker.h:56
ValidationMisalignedTracker::countpartrec
int countpartrec[2]
Definition: ValidationMisalignedTracker.h:58
ValidationMisalignedTracker::associators
std::vector< std::string > associators
Definition: ValidationMisalignedTracker.h:92
edm::LogInfo
Definition: MessageLogger.h:254
ValidationMisalignedTracker::fakepLzmu
float fakepLzmu
Definition: ValidationMisalignedTracker.h:74
ValidationMisalignedTracker::fakerecnhit
int fakerecnhit
Definition: ValidationMisalignedTracker.h:84
ValidationMisalignedTracker::faketrackType
int faketrackType
Definition: ValidationMisalignedTracker.h:80
ValidationMisalignedTracker::mzmu
float mzmu
Definition: ValidationMisalignedTracker.h:56
ValidationMisalignedTracker::respt
float respt
Definition: ValidationMisalignedTracker.h:70
ValidationMisalignedTracker::theMF
edm::ESHandle< MagneticField > theMF
Definition: ValidationMisalignedTracker.h:91
ValidationMisalignedTracker::fakerecd0
float fakerecd0
Definition: ValidationMisalignedTracker.h:83
ValidationMisalignedTracker::fakecottheta
float fakecottheta
Definition: ValidationMisalignedTracker.h:81
ValidationMisalignedTracker::fakeetazmu
float fakeetazmu
Definition: ValidationMisalignedTracker.h:72
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
FreeTrajectoryState::position
GlobalPoint position() const
Definition: FreeTrajectoryState.h:67
GlobalVector
Global3DVector GlobalVector
Definition: GlobalVector.h:10
findQualityFiles.v
v
Definition: findQualityFiles.py:179
ValidationMisalignedTracker::recptmu
float recptmu[2][2]
Definition: ValidationMisalignedTracker.h:62
ValidationMisalignedTracker::fakerecchiq
float fakerecchiq
Definition: ValidationMisalignedTracker.h:85
ValidationMisalignedTracker::fakeptzmu
float fakeptzmu
Definition: ValidationMisalignedTracker.h:72
edm::Handle< reco::TrackToTrackingParticleAssociator >
ValidationMisalignedTracker::recyzmu
float recyzmu
Definition: ValidationMisalignedTracker.h:57
ValidationMisalignedTracker::rescottheta
float rescottheta
Definition: ValidationMisalignedTracker.h:70
ValidationMisalignedTracker::fakerecmzmu
float fakerecmzmu
Definition: ValidationMisalignedTracker.h:72
HepMC::GenEvent
Definition: hepmc_rootio.cc:9
ValidationMisalignedTracker.h
edm::Ref< TrackingParticleCollection >
funct::sin
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
ValidationMisalignedTracker::recmxptmu
float recmxptmu
Definition: ValidationMisalignedTracker.h:57
ValidationMisalignedTracker::fakeenezmu
float fakeenezmu
Definition: ValidationMisalignedTracker.h:74
IdealMagneticFieldRecord
Definition: IdealMagneticFieldRecord.h:11
ValidationMisalignedTracker::resphi
float resphi
Definition: ValidationMisalignedTracker.h:70
ValidationMisalignedTracker::recminptmu
float recminptmu
Definition: ValidationMisalignedTracker.h:57
ValidationMisalignedTracker::fakerecminptmu
float fakerecminptmu
Definition: ValidationMisalignedTracker.h:74
cmsdt::algo
algo
Definition: constants.h:164
edm::AssociationMap::end
const_iterator end() const
last iterator over the map (read only)
Definition: AssociationMap.h:171
MakerMacros.h
ValidationMisalignedTracker::tree_fake
TTree * tree_fake
Definition: ValidationMisalignedTracker.h:51
TrackerGeometry::detsTOB
const DetContainer & detsTOB() const
Definition: TrackerGeometry.cc:179
ValidationMisalignedTracker::recenezmu
float recenezmu
Definition: ValidationMisalignedTracker.h:57
ValidationMisalignedTracker::eta
float eta
Definition: ValidationMisalignedTracker.h:65
trigger::size_type
uint16_t size_type
Definition: TriggerTypeDefs.h:18
funct::cos
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
Track.h
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
ValidationMisalignedTracker::faked0
float faked0
Definition: ValidationMisalignedTracker.h:81
ValidationMisalignedTracker::pz
float pz[2][2]
Definition: ValidationMisalignedTracker.h:61
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
ValidationMisalignedTracker::fakerescottheta
float fakerescottheta
Definition: ValidationMisalignedTracker.h:86
ValidationMisalignedTracker::fakereseta
float fakereseta
Definition: ValidationMisalignedTracker.h:86
ValidationMisalignedTracker::trackType
int trackType
Definition: ValidationMisalignedTracker.h:64
w
const double w
Definition: UKUtility.cc:23
ValidationMisalignedTracker::phi
float phi
Definition: ValidationMisalignedTracker.h:65
TrackerDigiGeometryRecord
Definition: TrackerDigiGeometryRecord.h:15
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
ValidationMisalignedTracker::countpart
int countpart[2]
Definition: ValidationMisalignedTracker.h:58
cms::dd::accepted
bool accepted(std::vector< std::regex > const &, std::string_view)
ValidationMisalignedTracker::fakeeta
float fakeeta
Definition: ValidationMisalignedTracker.h:81
IdealMagneticFieldRecord.h
edm::ESHandle< TrackerGeometry >
ValidationMisalignedTracker::countrec
int countrec
Definition: ValidationMisalignedTracker.h:59
ValidationMisalignedTracker::simobject
std::string simobject
Definition: ValidationMisalignedTracker.h:44
ValidationMisalignedTracker::fakenAssoc
int fakenAssoc
Definition: ValidationMisalignedTracker.h:84
ValidationMisalignedTracker::fakerectheta
float fakerectheta
Definition: ValidationMisalignedTracker.h:83
ValidationMisalignedTracker::fakethetazmu
float fakethetazmu
Definition: ValidationMisalignedTracker.h:72
ValidationMisalignedTracker::fakephi
float fakephi
Definition: ValidationMisalignedTracker.h:81
ValidationMisalignedTracker::recnhit
int recnhit
Definition: ValidationMisalignedTracker.h:68
GlobalPoint
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
ValidationMisalignedTracker::flag
int flag
Definition: ValidationMisalignedTracker.h:59
Point3DBase< float, GlobalTag >
OrderedSet.t
t
Definition: OrderedSet.py:90
ValidationMisalignedTracker::fakeyzmu
float fakeyzmu
Definition: ValidationMisalignedTracker.h:74
cmsswSequenceInfo.tp
tp
Definition: cmsswSequenceInfo.py:17
ValidationMisalignedTracker::fakereceta
float fakereceta
Definition: ValidationMisalignedTracker.h:83
ValidationMisalignedTracker::faketheta
float faketheta
Definition: ValidationMisalignedTracker.h:81
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::View::size
size_type size() const
ValidationMisalignedTracker::fakereccottheta
float fakereccottheta
Definition: ValidationMisalignedTracker.h:83
ValidationMisalignedTracker::label
std::vector< edm::InputTag > label
Definition: ValidationMisalignedTracker.h:94
edm::View
Definition: CaloClusterFwd.h:14
TrackerDigiGeometryRecord.h
ValidationMisalignedTracker::selection_fake
bool selection_fake
Definition: ValidationMisalignedTracker.h:45
TrackToTrackingParticleAssociator.h
ValidationMisalignedTracker::receta
float receta
Definition: ValidationMisalignedTracker.h:67
ValidationMisalignedTracker::ene
float ene[2][2]
Definition: ValidationMisalignedTracker.h:61
edm::ParameterSet
Definition: ParameterSet.h:36
ValidationMisalignedTracker::fakept
float fakept
Definition: ValidationMisalignedTracker.h:81
ValidationMisalignedTracker::analyze
void analyze(const edm::Event &, const edm::EventSetup &) override
Definition: ValidationMisalignedTracker.cc:228
duplicaterechits_cfi.trackCollection
trackCollection
Definition: duplicaterechits_cfi.py:4
Event.h
ValidationMisalignedTracker::skip
bool skip
Definition: ValidationMisalignedTracker.h:48
ValidationMisalignedTracker::fakerecenezmu
float fakerecenezmu
Definition: ValidationMisalignedTracker.h:74
ValidationMisalignedTracker::rootfile_
std::string rootfile_
Definition: ValidationMisalignedTracker.h:46
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
edm::AssociationMap< edm::OneToManyWithQualityGeneric< edm::View< reco::Track >, TrackingParticleCollection, double > >
ValidationMisalignedTracker::count
int count
Definition: ValidationMisalignedTracker.h:59
funct::tan
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
ValidationMisalignedTracker::ievt
int ievt
Definition: ValidationMisalignedTracker.h:54
ValidationMisalignedTracker::fakemzmu
float fakemzmu
Definition: ValidationMisalignedTracker.h:72
iEvent
int iEvent
Definition: GenABIO.cc:224
ValidationMisalignedTracker::recpt
float recpt
Definition: ValidationMisalignedTracker.h:67
ValidationMisalignedTracker::pLzmu
float pLzmu
Definition: ValidationMisalignedTracker.h:57
edm::LogVerbatim
Definition: MessageLogger.h:297
ValidationMisalignedTracker::reseta
float reseta
Definition: ValidationMisalignedTracker.h:70
ValidationMisalignedTracker::recptzmu
float recptzmu
Definition: ValidationMisalignedTracker.h:56
ValidationMisalignedTracker::resz0
float resz0
Definition: ValidationMisalignedTracker.h:70
CoreSimTrack::type
int type() const
particle type (HEP PDT convension)
Definition: CoreSimTrack.h:22
edm::EventSetup
Definition: EventSetup.h:57
ValidationMisalignedTracker::fakerecphizmu
float fakerecphizmu
Definition: ValidationMisalignedTracker.h:72
edm::HepMCProduct::GetEvent
const HepMC::GenEvent * GetEvent() const
Definition: HepMCProduct.h:34
TrajectoryStateClosestToPoint
Definition: TrajectoryStateClosestToPoint.h:18
ValidationMisalignedTracker::endJob
void endJob() override
Definition: ValidationMisalignedTracker.cc:766
TSCPBuilderNoMaterial.h
ValidationMisalignedTracker::label_tp_effic
edm::InputTag label_tp_effic
Definition: ValidationMisalignedTracker.h:95
get
#define get
ValidationMisalignedTracker::eff
float eff
Definition: ValidationMisalignedTracker.h:70
ValidationMisalignedTracker::fake
float fake
Definition: ValidationMisalignedTracker.h:86
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
ValidationMisalignedTracker::recene
float recene[2][2]
Definition: ValidationMisalignedTracker.h:62
ValidationMisalignedTracker::trackassociator
std::string trackassociator
Definition: ValidationMisalignedTracker.h:44
TrackingParticle.h
GeomDet.h
ValidationMisalignedTracker::fakerecpLzmu
float fakerecpLzmu
Definition: ValidationMisalignedTracker.h:74
ValidationMisalignedTracker::nhit
int nhit
Definition: ValidationMisalignedTracker.h:66
ValidationMisalignedTracker::rectheta
float rectheta
Definition: ValidationMisalignedTracker.h:67
TSCPBuilderNoMaterial
Definition: TSCPBuilderNoMaterial.h:17
ValidationMisalignedTracker::recpy
float recpy[2][2]
Definition: ValidationMisalignedTracker.h:62
ValidationMisalignedTracker::resd0
float resd0
Definition: ValidationMisalignedTracker.h:70
ValidationMisalignedTracker::ptmu
float ptmu[2][2]
Definition: ValidationMisalignedTracker.h:61
ValidationMisalignedTracker::flagrec
int flagrec
Definition: ValidationMisalignedTracker.h:59
ValidationMisalignedTracker::d0
float d0
Definition: ValidationMisalignedTracker.h:65
FreeTrajectoryState
Definition: FreeTrajectoryState.h:27
ValidationMisalignedTracker::pt
float pt
Definition: ValidationMisalignedTracker.h:65
SimTrack
Definition: SimTrack.h:6
ValidationMisalignedTracker::ptzmu
float ptzmu
Definition: ValidationMisalignedTracker.h:56
ValidationMisalignedTracker::ValidationMisalignedTracker
ValidationMisalignedTracker(const edm::ParameterSet &)
Definition: ValidationMisalignedTracker.cc:42
TrackingParticleCollection
std::vector< TrackingParticle > TrackingParticleCollection
Definition: TrackingParticleFwd.h:8
edm::RefToBase< reco::Track >
ValidationMisalignedTracker::thetazmu
float thetazmu
Definition: ValidationMisalignedTracker.h:56
ValidationMisalignedTracker::recp
float recp[2][2]
Definition: ValidationMisalignedTracker.h:62
ValidationMisalignedTracker::fakeresd0
float fakeresd0
Definition: ValidationMisalignedTracker.h:86
ValidationMisalignedTracker::costheta
float costheta
Definition: ValidationMisalignedTracker.h:65
dqm-mbProfile.log
log
Definition: dqm-mbProfile.py:17
ValidationMisalignedTracker::etazmu
float etazmu
Definition: ValidationMisalignedTracker.h:56
ValidationMisalignedTracker::fakerecphi
float fakerecphi
Definition: ValidationMisalignedTracker.h:83
ValidationMisalignedTracker::ptused
std::vector< float > ptused
Definition: ValidationMisalignedTracker.h:99
ValidationMisalignedTracker::~ValidationMisalignedTracker
~ValidationMisalignedTracker() override
Definition: ValidationMisalignedTracker.cc:211
ValidationMisalignedTracker::fakecostheta
float fakecostheta
Definition: ValidationMisalignedTracker.h:81
ValidationMisalignedTracker::recmzmu
float recmzmu
Definition: ValidationMisalignedTracker.h:56
HLT_2018_cff.track
track
Definition: HLT_2018_cff.py:10352
ValidationMisalignedTracker::recetazmu
float recetazmu
Definition: ValidationMisalignedTracker.h:56
ValidationMisalignedTracker::selection_eff
bool selection_eff
Definition: ValidationMisalignedTracker.h:45
ValidationMisalignedTracker::eventCount_
int eventCount_
Definition: ValidationMisalignedTracker.h:49
ValidationMisalignedTracker::file_
TFile * file_
Definition: ValidationMisalignedTracker.h:52
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
ValidationMisalignedTracker::fakenhit
int fakenhit
Definition: ValidationMisalignedTracker.h:82
LogTrace
#define LogTrace(id)
Definition: MessageLogger.h:671
ValidationMisalignedTracker::fakez0
float fakez0
Definition: ValidationMisalignedTracker.h:81
ValidationMisalignedTracker
Definition: ValidationMisalignedTracker.h:33
ValidationMisalignedTracker::fakerecetazmu
float fakerecetazmu
Definition: ValidationMisalignedTracker.h:72
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
TrajectoryStateClosestToPoint::theState
const FreeTrajectoryState & theState() const
Definition: TrajectoryStateClosestToPoint.h:96
ValidationMisalignedTracker::fakerespt
float fakerespt
Definition: ValidationMisalignedTracker.h:86
ValidationMisalignedTracker::minptmu
float minptmu
Definition: ValidationMisalignedTracker.h:57
ValidationMisalignedTracker::recthetazmu
float recthetazmu
Definition: ValidationMisalignedTracker.h:56
ValidationMisalignedTracker::recd0
float recd0
Definition: ValidationMisalignedTracker.h:67
edm::Event
Definition: Event.h:73
SimTrack::genpartIndex
int genpartIndex() const
index of the corresponding Generator particle in the Event container (-1 if no Genpart)
Definition: SimTrack.h:34
ValidationMisalignedTracker::recpx
float recpx[2][2]
Definition: ValidationMisalignedTracker.h:62
ValidationMisalignedTracker::recpz
float recpz[2][2]
Definition: ValidationMisalignedTracker.h:62
ValidationMisalignedTracker::fakephizmu
float fakephizmu
Definition: ValidationMisalignedTracker.h:72
SimTrackContainer.h
ValidationMisalignedTracker::tree_eff
TTree * tree_eff
Definition: ValidationMisalignedTracker.h:50
edm::InputTag
Definition: InputTag.h:15
ValidationMisalignedTracker::recchiq
float recchiq
Definition: ValidationMisalignedTracker.h:69
ValidationMisalignedTracker::p
float p[2][2]
Definition: ValidationMisalignedTracker.h:61
ValidationMisalignedTracker::fakerecyzmu
float fakerecyzmu
Definition: ValidationMisalignedTracker.h:74
ValidationMisalignedTracker::recphi
float recphi
Definition: ValidationMisalignedTracker.h:67
ValidationMisalignedTracker::recpLzmu
float recpLzmu
Definition: ValidationMisalignedTracker.h:57
ValidationMisalignedTracker::px
float px[2][2]
Definition: ValidationMisalignedTracker.h:61
ValidationMisalignedTracker::py
float py[2][2]
Definition: ValidationMisalignedTracker.h:61