CMS 3D CMS Logo

TrackerHitProducer.cc
Go to the documentation of this file.
2 
8 
14 
15 // tracker info
19 
20 // data in edm::event
25 
26 // helper files
27 #include "CLHEP/Units/GlobalSystemOfUnits.h"
28 #include <CLHEP/Vector/LorentzVector.h>
29 
30 #include "TString.h"
31 
32 #include <cmath>
33 #include <cstdlib>
34 #include <memory>
35 
37  : getAllProvenances(iPSet.getParameter<edm::ParameterSet>("ProvenanceLookup")
38  .getUntrackedParameter<bool>("GetAllProvenances", false)),
39  printProvenanceInfo(iPSet.getParameter<edm::ParameterSet>("ProvenanceLookup")
40  .getUntrackedParameter<bool>("PrintProvenanceInfo", false)),
41  verbosity(iPSet.getUntrackedParameter<int>("Verbosity", 0)),
42  count(0),
43  nRawGenPart(0),
44  config_(iPSet),
45  edmHepMCProductToken_(consumes<edm::HepMCProduct>(
46  edm::InputTag(iPSet.getUntrackedParameter<std::string>("HepMCProductLabel", "source"),
47  iPSet.getUntrackedParameter<std::string>("HepMCInputInstance", "")))),
48  edmSimVertexContainerToken_(consumes<edm::SimVertexContainer>(iPSet.getParameter<edm::InputTag>("G4VtxSrc"))),
49  edmSimTrackContainerToken_(consumes<edm::SimTrackContainer>(iPSet.getParameter<edm::InputTag>("G4TrkSrc"))),
50  edmPSimHitContainer_pxlBrlLow_Token_(
51  consumes<edm::PSimHitContainer>(iPSet.getParameter<edm::InputTag>("PxlBrlLowSrc"))),
52  edmPSimHitContainer_pxlBrlHigh_Token_(
53  consumes<edm::PSimHitContainer>(iPSet.getParameter<edm::InputTag>("PxlBrlHighSrc"))),
54  edmPSimHitContainer_pxlFwdLow_Token_(
55  consumes<edm::PSimHitContainer>(iPSet.getParameter<edm::InputTag>("PxlFwdLowSrc"))),
56  edmPSimHitContainer_pxlFwdHigh_Token_(
57  consumes<edm::PSimHitContainer>(iPSet.getParameter<edm::InputTag>("PxlFwdHighSrc"))),
58  edmPSimHitContainer_siTIBLow_Token_(
59  consumes<edm::PSimHitContainer>(iPSet.getParameter<edm::InputTag>("SiTIBLowSrc"))),
60  edmPSimHitContainer_siTIBHigh_Token_(
61  consumes<edm::PSimHitContainer>(iPSet.getParameter<edm::InputTag>("SiTIBHighSrc"))),
62  edmPSimHitContainer_siTOBLow_Token_(
63  consumes<edm::PSimHitContainer>(iPSet.getParameter<edm::InputTag>("SiTOBLowSrc"))),
64  edmPSimHitContainer_siTOBHigh_Token_(
65  consumes<edm::PSimHitContainer>(iPSet.getParameter<edm::InputTag>("SiTOBHighSrc"))),
66  edmPSimHitContainer_siTIDLow_Token_(
67  consumes<edm::PSimHitContainer>(iPSet.getParameter<edm::InputTag>("SiTIDLowSrc"))),
68  edmPSimHitContainer_siTIDHigh_Token_(
69  consumes<edm::PSimHitContainer>(iPSet.getParameter<edm::InputTag>("SiTIDHighSrc"))),
70  edmPSimHitContainer_siTECLow_Token_(
71  consumes<edm::PSimHitContainer>(iPSet.getParameter<edm::InputTag>("SiTECLowSrc"))),
72  edmPSimHitContainer_siTECHigh_Token_(
73  consumes<edm::PSimHitContainer>(iPSet.getParameter<edm::InputTag>("SiTECHighSrc"))),
74  fName(iPSet.getUntrackedParameter<std::string>("Name", "")),
75  label(iPSet.getParameter<std::string>("Label")) {
76  // use value of first digit to determine default output level (inclusive)
77  // 0 is none, 1 is basic, 2 is fill output, 3 is gather output
78  verbosity %= 10;
79 
80  // create persistent object
81  produces<PTrackerSimHit>(label);
82 
83  // print out Parameter Set information being used
84  if (verbosity > 0) {
85  edm::LogInfo("TrackerHitProducer::TrackerHitProducer")
86  << "\n===============================\n"
87  << "Initialized as EDProducer with parameter values:\n"
88  << " Name =" << fName << "\n"
89  << " Verbosity =" << verbosity << "\n"
90  << " Label =" << label << "\n"
91  << " GetProv =" << getAllProvenances << "\n"
92  << " PrintProv =" << printProvenanceInfo << "\n"
93  << " PxlBrlLowSrc = " << iPSet.getParameter<edm::InputTag>("PxlBrlLowSrc").label() << ":"
94  << iPSet.getParameter<edm::InputTag>("PxlBrlLowSrc").instance() << "\n"
95  << " PxlBrlHighSrc = " << iPSet.getParameter<edm::InputTag>("PxlBrlHighSrc").label() << ":"
96  << iPSet.getParameter<edm::InputTag>("PxlBrlHighSrc").instance() << "\n"
97  << " PxlFwdLowSrc = " << iPSet.getParameter<edm::InputTag>("PxlFwdLowSrc").label() << ":"
98  << iPSet.getParameter<edm::InputTag>("PxlFwdLowSrc").instance() << "\n"
99  << " PxlFwdHighSrc = " << iPSet.getParameter<edm::InputTag>("PxlFwdHighSrc").label() << ":"
100  << iPSet.getParameter<edm::InputTag>("PxlFwdHighSrc").instance() << "\n"
101  << " SiTIBLowSrc = " << iPSet.getParameter<edm::InputTag>("SiTIBLowSrc").label() << ":"
102  << iPSet.getParameter<edm::InputTag>("SiTIBLowSrc").instance() << "\n"
103  << " SiTIBHighSrc = " << iPSet.getParameter<edm::InputTag>("SiTIBHighSrc").label() << ":"
104  << iPSet.getParameter<edm::InputTag>("SiTIBHighSrc").instance() << "\n"
105  << " SiTOBLowSrc = " << iPSet.getParameter<edm::InputTag>("SiTOBLowSrc").label() << ":"
106  << iPSet.getParameter<edm::InputTag>("SiTOBLowSrc").instance() << "\n"
107  << " SiTOBHighSrc = " << iPSet.getParameter<edm::InputTag>("SiTOBHighSrc").label() << ":"
108  << iPSet.getParameter<edm::InputTag>("SiTOBHighSrc").instance() << "\n"
109  << " SiTIDLowSrc = " << iPSet.getParameter<edm::InputTag>("SiTIDLowSrc").label() << ":"
110  << iPSet.getParameter<edm::InputTag>("SiTIDLowSrc").instance() << "\n"
111  << " SiTIDHighSrc = " << iPSet.getParameter<edm::InputTag>("SiTIDHighSrc").label() << ":"
112  << iPSet.getParameter<edm::InputTag>("SiTIDHighSrc").instance() << "\n"
113  << " SiTECLowSrc = " << iPSet.getParameter<edm::InputTag>("SiTECLowSrc").label() << ":"
114  << iPSet.getParameter<edm::InputTag>("SiTECLowSrc").instance() << "\n"
115  << " SiTECHighSrc = " << iPSet.getParameter<edm::InputTag>("SiTECHighSrc").label() << ":"
116  << iPSet.getParameter<edm::InputTag>("SiTECHighSrc").instance() << "\n"
117  << "===============================\n";
118  }
119 }
120 
122 
124  if (verbosity > 0)
125  edm::LogInfo("TrackerHitProducer::beginJob") << "Starting the job...";
126  clear();
127  return;
128 }
129 
131  if (verbosity > 0)
132  edm::LogInfo("TrackerHitProducer::endJob") << "Terminating having processed" << count << "events.";
133  return;
134 }
135 
137  // keep track of number of events processed
138  ++count;
139 
140  // get event id information
141  edm::RunNumber_t nrun = iEvent.id().run();
142  edm::EventNumber_t nevt = iEvent.id().event();
143 
144  // get event setup information
145  // edm::ESHandle<edm::SetupData> pSetup;
146  // iSetup.get<edm::SetupRecord>().get(pSetup);
147 
148  if (verbosity > 0) {
149  edm::LogInfo("TrackerHitProducer::produce") << "Processing run" << nrun << ","
150  << "event " << nevt;
151  }
152 
153  // clear event holders
154  clear();
155 
156  // look at information available in the event
157  if (getAllProvenances) {
158  std::vector<const edm::StableProvenance *> AllProv;
159  iEvent.getAllStableProvenance(AllProv);
160 
161  if (verbosity > 0)
162  edm::LogInfo("TrackerHitProducer::produce") << "Number of Provenances =" << AllProv.size();
163 
164  if (printProvenanceInfo && (verbosity > 0)) {
165  TString eventout("\nProvenance info:\n");
166 
167  for (unsigned int i = 0; i < AllProv.size(); ++i) {
168  eventout += "\n ******************************";
169  eventout += "\n Module : ";
170  eventout += AllProv[i]->moduleLabel();
171  eventout += "\n ProductID process index: ";
172  eventout += AllProv[i]->productID().processIndex();
173  eventout += "\n ProductID product index: ";
174  eventout += AllProv[i]->productID().productIndex();
175  eventout += "\n ClassName : ";
176  eventout += AllProv[i]->className();
177  eventout += "\n InstanceName : ";
178  eventout += AllProv[i]->productInstanceName();
179  eventout += "\n BranchName : ";
180  eventout += AllProv[i]->branchName();
181  }
182  eventout += " ******************************\n";
183  edm::LogInfo("TrackerHitProducer::produce") << eventout;
184  }
185  }
186 
187  // call fill functions
188  // gather G4MC information from event
189  fillG4MC(iEvent);
190  // gather Tracker information from event
191  fillTrk(iEvent, iSetup);
192 
193  if (verbosity > 0)
194  edm::LogInfo("TrackerHitProducer::produce") << "Done gathering data from event.";
195 
196  // produce object to put into event
197  std::unique_ptr<PTrackerSimHit> pOut(new PTrackerSimHit);
198 
199  if (verbosity > 2)
200  edm::LogInfo("TrackerHitProducer::produce") << "Saving event contents:";
201 
202  // call store functions
203  // store G4MC information in product
204  storeG4MC(*pOut);
205  // store Tracker information in produce
206  storeTrk(*pOut);
207 
208  // store information in event
209  iEvent.put(std::move(pOut), label);
210 
211  return;
212 }
213 
214 //==================fill and store functions================================
216  TString eventout;
217  if (verbosity > 0)
218  eventout = "\nGathering info:";
219 
221  // get MC information
224  iEvent.getByToken(edmHepMCProductToken_, HepMCEvt_);
225  if (!HepMCEvt_.isValid()) {
226  edm::LogError("TrackerHitProducer::fillG4MC") << "Unable to find HepMCProduct in event!";
227  return;
228  }
229  const HepMC::GenEvent *MCEvt = HepMCEvt_->GetEvent();
230  nRawGenPart = MCEvt->particles_size();
231 
232  if (verbosity > 1) {
233  eventout += "\n Number of Raw Particles collected: ";
234  eventout += nRawGenPart;
235  }
236 
238  // get G4Vertex information
241  iEvent.getByToken(edmSimVertexContainerToken_, G4VtxContainer);
242  if (!G4VtxContainer.isValid()) {
243  edm::LogError("TrackerHitProducer::fillG4MC") << "Unable to find SimVertex in event!";
244  return;
245  }
246  int i = 0;
247  edm::SimVertexContainer::const_iterator itVtx;
248  for (itVtx = G4VtxContainer->begin(); itVtx != G4VtxContainer->end(); ++itVtx) {
249  ++i;
250 
251  const CLHEP::HepLorentzVector &G4Vtx = CLHEP::HepLorentzVector(
252  itVtx->position().x(), itVtx->position().y(), itVtx->position().z(), itVtx->position().e());
253  G4VtxX.push_back(G4Vtx[0] / micrometer); // cm from code -> micrometer
254  // *10000
255  G4VtxY.push_back(G4Vtx[1] / micrometer); // cm from code -> micrometer
256  // *10000
257  G4VtxZ.push_back(G4Vtx[2] / millimeter); // cm from code -> millimeter *10
258  }
259 
260  if (verbosity > 1) {
261  eventout += "\n Number of G4Vertices collected: ";
262  eventout += i;
263  }
264 
266  // get G4Track information
269  iEvent.getByToken(edmSimTrackContainerToken_, G4TrkContainer);
270  if (!G4TrkContainer.isValid()) {
271  edm::LogError("TrackerHitProducer::fillG4MC") << "Unable to find SimTrack in event!";
272  return;
273  }
274  i = 0;
275  edm::SimTrackContainer::const_iterator itTrk;
276  for (itTrk = G4TrkContainer->begin(); itTrk != G4TrkContainer->end(); ++itTrk) {
277  ++i;
278 
279  double etaInit = 0, phiInit = 0, pInit = 0;
280  const CLHEP::HepLorentzVector &G4Trk = CLHEP::HepLorentzVector(
281  itTrk->momentum().x(), itTrk->momentum().y(), itTrk->momentum().z(), itTrk->momentum().e());
282  pInit = sqrt(G4Trk[0] * G4Trk[0] + G4Trk[1] * G4Trk[1] + G4Trk[2] * G4Trk[2]);
283  if (pInit == 0)
284  edm::LogError("TrackerHitProducer::fillG4MC") << "TrackerTest::INFO: Primary has p = 0 ";
285  else {
286  double costheta = G4Trk[2] / pInit;
287  double theta = acos(TMath::Min(TMath::Max(costheta, -1.), 1.));
288  etaInit = -log(tan(theta / 2));
289 
290  if (G4Trk[0] != 0 || G4Trk[1] != 0)
291  phiInit = atan2(G4Trk[1], G4Trk[0]);
292  }
293  G4TrkPt.push_back(sqrt(G4Trk[0] * G4Trk[0] + G4Trk[1] * G4Trk[1])); // GeV
294  G4TrkE.push_back(G4Trk[3]); // GeV
295  G4TrkEta.push_back(etaInit);
296  G4TrkPhi.push_back(phiInit);
297  }
298 
299  if (verbosity > 1) {
300  eventout += "\n Number of G4Tracks collected: ";
301  eventout += i;
302  }
303 
304  if (verbosity > 0)
305  edm::LogInfo("TrackerHitProducer::fillG4MC") << eventout;
306 
307  return;
308 }
309 
311  if (verbosity > 2) {
312  TString eventout("\nnRawGenPart = ");
313  eventout += nRawGenPart;
314  eventout += "\n nG4Vtx = ";
315  eventout += G4VtxX.size();
316  for (unsigned int i = 0; i < G4VtxX.size(); ++i) {
317  eventout += "\n (x,y,z) = (";
318  eventout += G4VtxX[i];
319  eventout += ", ";
320  eventout += G4VtxY[i];
321  eventout += ", ";
322  eventout += G4VtxZ[i];
323  eventout += ")";
324  }
325  eventout += "\n nG4Trk = ";
326  eventout += G4TrkPt.size();
327  for (unsigned int i = 0; i < G4TrkPt.size(); ++i) {
328  eventout += "\n (pt,e,eta,phi) = (";
329  eventout += G4TrkPt[i];
330  eventout += ", ";
331  eventout += G4TrkE[i];
332  eventout += ")";
333  eventout += G4TrkEta[i];
334  eventout += ")";
335  eventout += G4TrkPhi[i];
336  eventout += ")";
337  }
338  edm::LogInfo("TrackerHitProducer::storeG4MC") << eventout;
339  } // end verbose output
340 
341  product.putRawGenPart(nRawGenPart);
342  product.putG4Vtx(G4VtxX, G4VtxY, G4VtxZ);
344 
345  return;
346 }
347 
349  TString eventout;
350  int sysID = 0;
351  if (verbosity > 0)
352  eventout = "\nGathering info:";
354  // iterator to access containers
355  edm::PSimHitContainer::const_iterator itHit;
356  // edm::PSimHitContainer theHits;
357 
359  // get Pixel Barrel information
361 
362  // extract low container
363  edm::Handle<edm::PSimHitContainer> PxlBrlLowContainer;
364  iEvent.getByToken(edmPSimHitContainer_pxlBrlLow_Token_, PxlBrlLowContainer);
365  if (!PxlBrlLowContainer.isValid()) {
366  edm::LogError("TrackerHitProducer::fillTrk") << "Unable to find TrackerHitsPixelBarrelLowTof in event!";
367  return;
368  }
369 
370  // place both containers into new container
371  // theHits.insert(theHits.end(),PxlBrlLowContainer->begin(),
372  // PxlBrlLowContainer->end());
373 
374  sysID = 100; // TrackerHitsPixelBarrelLowTof
375  int j = 0;
376  for (itHit = PxlBrlLowContainer->begin(); itHit != PxlBrlLowContainer->end(); ++itHit) {
377  // for (itHit = theHits.begin(); itHit != theHits.end(); ++itHit) {
378 
379  // gather necessary information
380  ++j;
381  HitsSysID.push_back(sysID);
382  HitsDuID.push_back(itHit->detUnitId());
383  HitsTkID.push_back(itHit->trackId());
384  HitsProT.push_back(itHit->processType());
385  HitsParT.push_back(itHit->particleType());
386  HitsP.push_back(itHit->pabs());
387 
388  HitsLpX.push_back(itHit->localPosition().x());
389  HitsLpY.push_back(itHit->localPosition().y());
390  HitsLpZ.push_back(itHit->localPosition().z());
391 
392  HitsLdX.push_back(itHit->localDirection().x());
393  HitsLdY.push_back(itHit->localDirection().y());
394  HitsLdZ.push_back(itHit->localDirection().z());
395  HitsLdTheta.push_back(itHit->localDirection().theta());
396  HitsLdPhi.push_back(itHit->localDirection().phi());
397 
398  HitsExPx.push_back(itHit->exitPoint().x());
399  HitsExPy.push_back(itHit->exitPoint().y());
400  HitsExPz.push_back(itHit->exitPoint().z());
401 
402  HitsEnPx.push_back(itHit->entryPoint().x());
403  HitsEnPy.push_back(itHit->entryPoint().y());
404  HitsEnPz.push_back(itHit->entryPoint().z());
405 
406  HitsEloss.push_back(itHit->energyLoss());
407  HitsToF.push_back(itHit->tof());
408 
409  } // end loop through PxlBrl Hits
410 
411  if (verbosity > 1) {
412  eventout += "\n Number of Pixel Barrel Low TOF Hits collected: ";
413  eventout += j;
414  }
415 
416  // theHits.clear();
417 
418  // extract high container
419  edm::Handle<edm::PSimHitContainer> PxlBrlHighContainer;
420  iEvent.getByToken(edmPSimHitContainer_pxlBrlHigh_Token_, PxlBrlHighContainer);
421  if (!PxlBrlHighContainer.isValid()) {
422  edm::LogError("TrackerHitProducer::fillTrk") << "Unable to find TrackerHitsPixelBarrelHighTof in event!";
423  return;
424  }
425 
426  sysID = 200; // TrackerHitsPixelBarrelHighTof
427  j = 0;
428  for (itHit = PxlBrlHighContainer->begin(); itHit != PxlBrlHighContainer->end(); ++itHit) {
429  // gather necessary information
430  ++j;
431  HitsSysID.push_back(sysID);
432  HitsDuID.push_back(itHit->detUnitId());
433  HitsTkID.push_back(itHit->trackId());
434  HitsProT.push_back(itHit->processType());
435  HitsParT.push_back(itHit->particleType());
436  HitsP.push_back(itHit->pabs());
437 
438  HitsLpX.push_back(itHit->localPosition().x());
439  HitsLpY.push_back(itHit->localPosition().y());
440  HitsLpZ.push_back(itHit->localPosition().z());
441 
442  HitsLdX.push_back(itHit->localDirection().x());
443  HitsLdY.push_back(itHit->localDirection().y());
444  HitsLdZ.push_back(itHit->localDirection().z());
445  HitsLdTheta.push_back(itHit->localDirection().theta());
446  HitsLdPhi.push_back(itHit->localDirection().phi());
447 
448  HitsExPx.push_back(itHit->exitPoint().x());
449  HitsExPy.push_back(itHit->exitPoint().y());
450  HitsExPz.push_back(itHit->exitPoint().z());
451 
452  HitsEnPx.push_back(itHit->entryPoint().x());
453  HitsEnPy.push_back(itHit->entryPoint().y());
454  HitsEnPz.push_back(itHit->entryPoint().z());
455 
456  HitsEloss.push_back(itHit->energyLoss());
457  HitsToF.push_back(itHit->tof());
458 
459  } // end loop through PxlBrl Hits
460 
461  if (verbosity > 1) {
462  eventout += "\n Number of Pixel Barrel High TOF Hits collected: ";
463  eventout += j;
464  }
465 
467  // get Pixel Forward information
469  // extract low container
470  edm::Handle<edm::PSimHitContainer> PxlFwdLowContainer;
471  iEvent.getByToken(edmPSimHitContainer_pxlFwdLow_Token_, PxlFwdLowContainer);
472  if (!PxlFwdLowContainer.isValid()) {
473  edm::LogError("TrackerHitProducer::fillTrk") << "Unable to find TrackerHitsPixelEndcapLowTof in event!";
474  return;
475  }
476 
477  sysID = 300; // TrackerHitsPixelEndcapLowTof
478  j = 0;
479  for (itHit = PxlFwdLowContainer->begin(); itHit != PxlFwdLowContainer->end(); ++itHit) {
480  // gather necessary information
481  ++j;
482  HitsSysID.push_back(sysID);
483  HitsDuID.push_back(itHit->detUnitId());
484  HitsTkID.push_back(itHit->trackId());
485  HitsProT.push_back(itHit->processType());
486  HitsParT.push_back(itHit->particleType());
487  HitsP.push_back(itHit->pabs());
488 
489  HitsLpX.push_back(itHit->localPosition().x());
490  HitsLpY.push_back(itHit->localPosition().y());
491  HitsLpZ.push_back(itHit->localPosition().z());
492 
493  HitsLdX.push_back(itHit->localDirection().x());
494  HitsLdY.push_back(itHit->localDirection().y());
495  HitsLdZ.push_back(itHit->localDirection().z());
496  HitsLdTheta.push_back(itHit->localDirection().theta());
497  HitsLdPhi.push_back(itHit->localDirection().phi());
498 
499  HitsExPx.push_back(itHit->exitPoint().x());
500  HitsExPy.push_back(itHit->exitPoint().y());
501  HitsExPz.push_back(itHit->exitPoint().z());
502 
503  HitsEnPx.push_back(itHit->entryPoint().x());
504  HitsEnPy.push_back(itHit->entryPoint().y());
505  HitsEnPz.push_back(itHit->entryPoint().z());
506 
507  HitsEloss.push_back(itHit->energyLoss());
508  HitsToF.push_back(itHit->tof());
509 
510  } // end loop through PxlFwd Hits
511 
512  if (verbosity > 1) {
513  eventout += "\n Number of Pixel Forward Low TOF Hits collected: ";
514  eventout += j;
515  }
516 
517  // extract high container
518  edm::Handle<edm::PSimHitContainer> PxlFwdHighContainer;
519  iEvent.getByToken(edmPSimHitContainer_pxlFwdHigh_Token_, PxlFwdHighContainer);
520  if (!PxlFwdHighContainer.isValid()) {
521  edm::LogError("TrackerHitProducer::fillTrk") << "Unable to find TrackerHitsPixelEndcapHighTof in event!";
522  return;
523  }
524 
525  sysID = 400; // TrackerHitsPixelEndcapHighTof
526  j = 0;
527  for (itHit = PxlFwdHighContainer->begin(); itHit != PxlFwdHighContainer->end(); ++itHit) {
528  // gather necessary information
529  ++j;
530  HitsSysID.push_back(sysID);
531  HitsDuID.push_back(itHit->detUnitId());
532  HitsTkID.push_back(itHit->trackId());
533  HitsProT.push_back(itHit->processType());
534  HitsParT.push_back(itHit->particleType());
535  HitsP.push_back(itHit->pabs());
536 
537  HitsLpX.push_back(itHit->localPosition().x());
538  HitsLpY.push_back(itHit->localPosition().y());
539  HitsLpZ.push_back(itHit->localPosition().z());
540 
541  HitsLdX.push_back(itHit->localDirection().x());
542  HitsLdY.push_back(itHit->localDirection().y());
543  HitsLdZ.push_back(itHit->localDirection().z());
544  HitsLdTheta.push_back(itHit->localDirection().theta());
545  HitsLdPhi.push_back(itHit->localDirection().phi());
546 
547  HitsExPx.push_back(itHit->exitPoint().x());
548  HitsExPy.push_back(itHit->exitPoint().y());
549  HitsExPz.push_back(itHit->exitPoint().z());
550 
551  HitsEnPx.push_back(itHit->entryPoint().x());
552  HitsEnPy.push_back(itHit->entryPoint().y());
553  HitsEnPz.push_back(itHit->entryPoint().z());
554 
555  HitsEloss.push_back(itHit->energyLoss());
556  HitsToF.push_back(itHit->tof());
557 
558  } // end loop through PxlFwd Hits
559 
560  if (verbosity > 1) {
561  eventout += "\n Number of Pixel Forward High TOF Hits collected: ";
562  eventout += j;
563  }
564 
566  // get Silicon TIB information
568  // extract TIB low container
569  edm::Handle<edm::PSimHitContainer> SiTIBLowContainer;
570  iEvent.getByToken(edmPSimHitContainer_siTIBLow_Token_, SiTIBLowContainer);
571  if (!SiTIBLowContainer.isValid()) {
572  edm::LogError("TrackerHitProducer::fillTrk") << "Unable to find TrackerHitsTIBLowTof in event!";
573  return;
574  }
575 
576  sysID = 10; // TrackerHitsTIBLowTof
577  j = 0;
578  for (itHit = SiTIBLowContainer->begin(); itHit != SiTIBLowContainer->end(); ++itHit) {
579  // gather necessary information
580  ++j;
581  HitsSysID.push_back(sysID);
582  HitsDuID.push_back(itHit->detUnitId());
583  HitsTkID.push_back(itHit->trackId());
584  HitsProT.push_back(itHit->processType());
585  HitsParT.push_back(itHit->particleType());
586  HitsP.push_back(itHit->pabs());
587 
588  HitsLpX.push_back(itHit->localPosition().x());
589  HitsLpY.push_back(itHit->localPosition().y());
590  HitsLpZ.push_back(itHit->localPosition().z());
591 
592  HitsLdX.push_back(itHit->localDirection().x());
593  HitsLdY.push_back(itHit->localDirection().y());
594  HitsLdZ.push_back(itHit->localDirection().z());
595  HitsLdTheta.push_back(itHit->localDirection().theta());
596  HitsLdPhi.push_back(itHit->localDirection().phi());
597 
598  HitsExPx.push_back(itHit->exitPoint().x());
599  HitsExPy.push_back(itHit->exitPoint().y());
600  HitsExPz.push_back(itHit->exitPoint().z());
601 
602  HitsEnPx.push_back(itHit->entryPoint().x());
603  HitsEnPy.push_back(itHit->entryPoint().y());
604  HitsEnPz.push_back(itHit->entryPoint().z());
605 
606  HitsEloss.push_back(itHit->energyLoss());
607  HitsToF.push_back(itHit->tof());
608 
609  } // end loop through PxlFwd Hits
610 
611  if (verbosity > 1) {
612  eventout += "\n Number of TIB low TOF Hits collected: ";
613  eventout += j;
614  }
615 
616  // extract TIB high container
617  edm::Handle<edm::PSimHitContainer> SiTIBHighContainer;
618  iEvent.getByToken(edmPSimHitContainer_siTIBHigh_Token_, SiTIBHighContainer);
619  if (!SiTIBHighContainer.isValid()) {
620  edm::LogError("TrackerHitProducer::fillTrk") << "Unable to find TrackerHitsTIBHighTof in event!";
621  return;
622  }
623 
624  sysID = 20; // TrackerHitsTIBHighTof
625  j = 0;
626  for (itHit = SiTIBHighContainer->begin(); itHit != SiTIBHighContainer->end(); ++itHit) {
627  // gather necessary information
628  ++j;
629  HitsSysID.push_back(sysID);
630  HitsDuID.push_back(itHit->detUnitId());
631  HitsTkID.push_back(itHit->trackId());
632  HitsProT.push_back(itHit->processType());
633  HitsParT.push_back(itHit->particleType());
634  HitsP.push_back(itHit->pabs());
635 
636  HitsLpX.push_back(itHit->localPosition().x());
637  HitsLpY.push_back(itHit->localPosition().y());
638  HitsLpZ.push_back(itHit->localPosition().z());
639 
640  HitsLdX.push_back(itHit->localDirection().x());
641  HitsLdY.push_back(itHit->localDirection().y());
642  HitsLdZ.push_back(itHit->localDirection().z());
643  HitsLdTheta.push_back(itHit->localDirection().theta());
644  HitsLdPhi.push_back(itHit->localDirection().phi());
645 
646  HitsExPx.push_back(itHit->exitPoint().x());
647  HitsExPy.push_back(itHit->exitPoint().y());
648  HitsExPz.push_back(itHit->exitPoint().z());
649 
650  HitsEnPx.push_back(itHit->entryPoint().x());
651  HitsEnPy.push_back(itHit->entryPoint().y());
652  HitsEnPz.push_back(itHit->entryPoint().z());
653 
654  HitsEloss.push_back(itHit->energyLoss());
655  HitsToF.push_back(itHit->tof());
656 
657  } // end loop through PxlFwd Hits
658 
659  if (verbosity > 1) {
660  eventout += "\n Number of TIB high TOF Hits collected: ";
661  eventout += j;
662  }
663 
665  // get Silicon TOB information
667  // extract TOB low container
668  edm::Handle<edm::PSimHitContainer> SiTOBLowContainer;
669  iEvent.getByToken(edmPSimHitContainer_siTOBLow_Token_, SiTOBLowContainer);
670  if (!SiTOBLowContainer.isValid()) {
671  edm::LogError("TrackerHitProducer::fillTrk") << "Unable to find TrackerHitsTOBLowTof in event!";
672  return;
673  }
674 
675  sysID = 30; // TrackerHitsTOBLowTof
676  j = 0;
677  for (itHit = SiTOBLowContainer->begin(); itHit != SiTOBLowContainer->end(); ++itHit) {
678  // gather necessary information
679  ++j;
680  HitsSysID.push_back(sysID);
681  HitsDuID.push_back(itHit->detUnitId());
682  HitsTkID.push_back(itHit->trackId());
683  HitsProT.push_back(itHit->processType());
684  HitsParT.push_back(itHit->particleType());
685  HitsP.push_back(itHit->pabs());
686 
687  HitsLpX.push_back(itHit->localPosition().x());
688  HitsLpY.push_back(itHit->localPosition().y());
689  HitsLpZ.push_back(itHit->localPosition().z());
690 
691  HitsLdX.push_back(itHit->localDirection().x());
692  HitsLdY.push_back(itHit->localDirection().y());
693  HitsLdZ.push_back(itHit->localDirection().z());
694  HitsLdTheta.push_back(itHit->localDirection().theta());
695  HitsLdPhi.push_back(itHit->localDirection().phi());
696 
697  HitsExPx.push_back(itHit->exitPoint().x());
698  HitsExPy.push_back(itHit->exitPoint().y());
699  HitsExPz.push_back(itHit->exitPoint().z());
700 
701  HitsEnPx.push_back(itHit->entryPoint().x());
702  HitsEnPy.push_back(itHit->entryPoint().y());
703  HitsEnPz.push_back(itHit->entryPoint().z());
704 
705  HitsEloss.push_back(itHit->energyLoss());
706  HitsToF.push_back(itHit->tof());
707 
708  } // end loop through PxlFwd Hits
709 
710  if (verbosity > 1) {
711  eventout += "\n Number of TOB low TOF Hits collected: ";
712  eventout += j;
713  }
714 
715  // extract TOB high container
716  edm::Handle<edm::PSimHitContainer> SiTOBHighContainer;
717  iEvent.getByToken(edmPSimHitContainer_siTOBHigh_Token_, SiTOBHighContainer);
718  if (!SiTOBHighContainer.isValid()) {
719  edm::LogError("TrackerHitProducer::fillTrk") << "Unable to find TrackerHitsTOBHighTof in event!";
720  return;
721  }
722 
723  sysID = 40; // TrackerHitsTOBHighTof
724  j = 0;
725  for (itHit = SiTOBHighContainer->begin(); itHit != SiTOBHighContainer->end(); ++itHit) {
726  // gather necessary information
727  ++j;
728  HitsSysID.push_back(sysID);
729  HitsDuID.push_back(itHit->detUnitId());
730  HitsTkID.push_back(itHit->trackId());
731  HitsProT.push_back(itHit->processType());
732  HitsParT.push_back(itHit->particleType());
733  HitsP.push_back(itHit->pabs());
734 
735  HitsLpX.push_back(itHit->localPosition().x());
736  HitsLpY.push_back(itHit->localPosition().y());
737  HitsLpZ.push_back(itHit->localPosition().z());
738 
739  HitsLdX.push_back(itHit->localDirection().x());
740  HitsLdY.push_back(itHit->localDirection().y());
741  HitsLdZ.push_back(itHit->localDirection().z());
742  HitsLdTheta.push_back(itHit->localDirection().theta());
743  HitsLdPhi.push_back(itHit->localDirection().phi());
744 
745  HitsExPx.push_back(itHit->exitPoint().x());
746  HitsExPy.push_back(itHit->exitPoint().y());
747  HitsExPz.push_back(itHit->exitPoint().z());
748 
749  HitsEnPx.push_back(itHit->entryPoint().x());
750  HitsEnPy.push_back(itHit->entryPoint().y());
751  HitsEnPz.push_back(itHit->entryPoint().z());
752 
753  HitsEloss.push_back(itHit->energyLoss());
754  HitsToF.push_back(itHit->tof());
755 
756  } // end loop through SiTOB Hits
757 
758  if (verbosity > 1) {
759  eventout += "\n Number of TOB high TOF Hits collected: ";
760  eventout += j;
761  }
762 
764  // get Silicon TID information
766  // extract TID low container
767  edm::Handle<edm::PSimHitContainer> SiTIDLowContainer;
768  iEvent.getByToken(edmPSimHitContainer_siTIDLow_Token_, SiTIDLowContainer);
769  if (!SiTIDLowContainer.isValid()) {
770  edm::LogError("TrackerHitProducer::fillTrk") << "Unable to find TrackerHitsTIDLowTof in event!";
771  return;
772  }
773 
774  sysID = 50; // TrackerHitsTIDLowTof
775  j = 0;
776  for (itHit = SiTIDLowContainer->begin(); itHit != SiTIDLowContainer->end(); ++itHit) {
777  // gather necessary information
778  ++j;
779  HitsSysID.push_back(sysID);
780  HitsDuID.push_back(itHit->detUnitId());
781  HitsTkID.push_back(itHit->trackId());
782  HitsProT.push_back(itHit->processType());
783  HitsParT.push_back(itHit->particleType());
784  HitsP.push_back(itHit->pabs());
785 
786  HitsLpX.push_back(itHit->localPosition().x());
787  HitsLpY.push_back(itHit->localPosition().y());
788  HitsLpZ.push_back(itHit->localPosition().z());
789 
790  HitsLdX.push_back(itHit->localDirection().x());
791  HitsLdY.push_back(itHit->localDirection().y());
792  HitsLdZ.push_back(itHit->localDirection().z());
793  HitsLdTheta.push_back(itHit->localDirection().theta());
794  HitsLdPhi.push_back(itHit->localDirection().phi());
795 
796  HitsExPx.push_back(itHit->exitPoint().x());
797  HitsExPy.push_back(itHit->exitPoint().y());
798  HitsExPz.push_back(itHit->exitPoint().z());
799 
800  HitsEnPx.push_back(itHit->entryPoint().x());
801  HitsEnPy.push_back(itHit->entryPoint().y());
802  HitsEnPz.push_back(itHit->entryPoint().z());
803 
804  HitsEloss.push_back(itHit->energyLoss());
805  HitsToF.push_back(itHit->tof());
806 
807  } // end loop through SiTID Hits
808 
809  if (verbosity > 1) {
810  eventout += "\n Number of TID low TOF Hits collected: ";
811  eventout += j;
812  }
813 
814  // extract TID high container
815  edm::Handle<edm::PSimHitContainer> SiTIDHighContainer;
816  iEvent.getByToken(edmPSimHitContainer_siTIDHigh_Token_, SiTIDHighContainer);
817  if (!SiTIDHighContainer.isValid()) {
818  edm::LogError("TrackerHitProducer::fillTrk") << "Unable to find TrackerHitsTIDHighTof in event!";
819  return;
820  }
821 
822  sysID = 60; // TrackerHitsTIDHighTof
823  j = 0;
824  for (itHit = SiTIDHighContainer->begin(); itHit != SiTIDHighContainer->end(); ++itHit) {
825  // gather necessary information
826  ++j;
827  HitsSysID.push_back(sysID);
828  HitsDuID.push_back(itHit->detUnitId());
829  HitsTkID.push_back(itHit->trackId());
830  HitsProT.push_back(itHit->processType());
831  HitsParT.push_back(itHit->particleType());
832  HitsP.push_back(itHit->pabs());
833 
834  HitsLpX.push_back(itHit->localPosition().x());
835  HitsLpY.push_back(itHit->localPosition().y());
836  HitsLpZ.push_back(itHit->localPosition().z());
837 
838  HitsLdX.push_back(itHit->localDirection().x());
839  HitsLdY.push_back(itHit->localDirection().y());
840  HitsLdZ.push_back(itHit->localDirection().z());
841  HitsLdTheta.push_back(itHit->localDirection().theta());
842  HitsLdPhi.push_back(itHit->localDirection().phi());
843 
844  HitsExPx.push_back(itHit->exitPoint().x());
845  HitsExPy.push_back(itHit->exitPoint().y());
846  HitsExPz.push_back(itHit->exitPoint().z());
847 
848  HitsEnPx.push_back(itHit->entryPoint().x());
849  HitsEnPy.push_back(itHit->entryPoint().y());
850  HitsEnPz.push_back(itHit->entryPoint().z());
851 
852  HitsEloss.push_back(itHit->energyLoss());
853  HitsToF.push_back(itHit->tof());
854 
855  } // end loop through SiTID Hits
856 
857  if (verbosity > 1) {
858  eventout += "\n Number of TID high TOF Hits collected: ";
859  eventout += j;
860  }
861 
863  // get Silicon TEC information
865  // extract TEC low container
866  edm::Handle<edm::PSimHitContainer> SiTECLowContainer;
867  iEvent.getByToken(edmPSimHitContainer_siTECLow_Token_, SiTECLowContainer);
868  if (!SiTECLowContainer.isValid()) {
869  edm::LogError("TrackerHitProducer::fillTrk") << "Unable to find TrackerHitsTECLowTof in event!";
870  return;
871  }
872 
873  sysID = 70; // TrackerHitsTECLowTof
874  j = 0;
875  for (itHit = SiTECLowContainer->begin(); itHit != SiTECLowContainer->end(); ++itHit) {
876  // gather necessary information
877  ++j;
878  HitsSysID.push_back(sysID);
879  HitsDuID.push_back(itHit->detUnitId());
880  HitsTkID.push_back(itHit->trackId());
881  HitsProT.push_back(itHit->processType());
882  HitsParT.push_back(itHit->particleType());
883  HitsP.push_back(itHit->pabs());
884 
885  HitsLpX.push_back(itHit->localPosition().x());
886  HitsLpY.push_back(itHit->localPosition().y());
887  HitsLpZ.push_back(itHit->localPosition().z());
888 
889  HitsLdX.push_back(itHit->localDirection().x());
890  HitsLdY.push_back(itHit->localDirection().y());
891  HitsLdZ.push_back(itHit->localDirection().z());
892  HitsLdTheta.push_back(itHit->localDirection().theta());
893  HitsLdPhi.push_back(itHit->localDirection().phi());
894 
895  HitsExPx.push_back(itHit->exitPoint().x());
896  HitsExPy.push_back(itHit->exitPoint().y());
897  HitsExPz.push_back(itHit->exitPoint().z());
898 
899  HitsEnPx.push_back(itHit->entryPoint().x());
900  HitsEnPy.push_back(itHit->entryPoint().y());
901  HitsEnPz.push_back(itHit->entryPoint().z());
902 
903  HitsEloss.push_back(itHit->energyLoss());
904  HitsToF.push_back(itHit->tof());
905 
906  } // end loop through SiTEC Hits
907 
908  if (verbosity > 1) {
909  eventout += "\n Number of TEC low TOF Hits collected: ";
910  eventout += j;
911  }
912 
913  // extract TEC high container
914  edm::Handle<edm::PSimHitContainer> SiTECHighContainer;
915  iEvent.getByToken(edmPSimHitContainer_siTECHigh_Token_, SiTECHighContainer);
916  if (!SiTECHighContainer.isValid()) {
917  edm::LogError("TrackerHitProducer::fillTrk") << "Unable to find TrackerHitsTECHighTof in event!";
918  return;
919  }
920  sysID = 80; // TrackerHitsTECHighTof
921  j = 0;
922  for (itHit = SiTECHighContainer->begin(); itHit != SiTECHighContainer->end(); ++itHit) {
923  // gather necessary information
924  ++j;
925  HitsSysID.push_back(sysID);
926  HitsDuID.push_back(itHit->detUnitId());
927  HitsTkID.push_back(itHit->trackId());
928  HitsProT.push_back(itHit->processType());
929  HitsParT.push_back(itHit->particleType());
930  HitsP.push_back(itHit->pabs());
931 
932  HitsLpX.push_back(itHit->localPosition().x());
933  HitsLpY.push_back(itHit->localPosition().y());
934  HitsLpZ.push_back(itHit->localPosition().z());
935 
936  HitsLdX.push_back(itHit->localDirection().x());
937  HitsLdY.push_back(itHit->localDirection().y());
938  HitsLdZ.push_back(itHit->localDirection().z());
939  HitsLdTheta.push_back(itHit->localDirection().theta());
940  HitsLdPhi.push_back(itHit->localDirection().phi());
941 
942  HitsExPx.push_back(itHit->exitPoint().x());
943  HitsExPy.push_back(itHit->exitPoint().y());
944  HitsExPz.push_back(itHit->exitPoint().z());
945 
946  HitsEnPx.push_back(itHit->entryPoint().x());
947  HitsEnPy.push_back(itHit->entryPoint().y());
948  HitsEnPz.push_back(itHit->entryPoint().z());
949 
950  HitsEloss.push_back(itHit->energyLoss());
951  HitsToF.push_back(itHit->tof());
952 
953  } // end loop through SiTEC Hits
954 
955  if (verbosity > 1) {
956  eventout += "\n Number of TEC high TOF Hits collected: ";
957  eventout += j;
958  }
959 
960  if (verbosity > 0)
961  edm::LogInfo("TrackerHitProducer::fillTrk") << eventout;
962 
963  return;
964 }
965 
967  /*
968  if (verbosity > 2) {
969  TString eventout("\nnPxlBrlHits = ");
970  eventout += PxlBrlToF.size();
971  for (unsigned int i = 0; i < PxlBrlToF.size(); ++i) {
972  eventout += "\n (tof,r,phi,eta) = (";
973  eventout += PxlBrlToF[i];
974  eventout += ", ";
975  eventout += PxlBrlR[i];
976  eventout += ", ";
977  eventout += PxlBrlPhi[i];
978  eventout += ", ";
979  eventout += PxlBrlEta[i];
980  eventout += ")";
981  } // end PxlBrl output
982  eventout += "\n nPxlFwdHits = ";
983  eventout += PxlFwdToF.size();
984  for (unsigned int i = 0; i < PxlFwdToF.size(); ++i) {
985  eventout += "\n (tof,z,phi,eta) = (";
986  eventout += PxlFwdToF[i];
987  eventout += ", ";
988  eventout += PxlFwdZ[i];
989  eventout += ", ";
990  eventout += PxlFwdPhi[i];
991  eventout += ", ";
992  eventout += PxlFwdEta[i];
993  eventout += ")";
994  } // end PxlFwd output
995  eventout += "\n nSiBrlHits = ";
996  eventout += SiBrlToF.size();
997  for (unsigned int i = 0; i < SiBrlToF.size(); ++i) {
998  eventout += "\n (tof,r,phi,eta) = (";
999  eventout += SiBrlToF[i];
1000  eventout += ", ";
1001  eventout += SiBrlR[i];
1002  eventout += ", ";
1003  eventout += SiBrlPhi[i];
1004  eventout += ", ";
1005  eventout += SiBrlEta[i];
1006  eventout += ")";
1007  } // end SiBrl output
1008  eventout += "\n nSiFwdHits = ";
1009  eventout += SiFwdToF.size();
1010  for (unsigned int i = 0; i < SiFwdToF.size(); ++i) {
1011  eventout += "\n (tof,z,phi,eta) = (";
1012  eventout += SiFwdToF[i];
1013  eventout += ", ";
1014  eventout += SiFwdZ[i];
1015  eventout += ", ";
1016  eventout += SiFwdPhi[i];
1017  eventout += ", ";
1018  eventout += SiFwdEta[i];
1019  eventout += ")";
1020  } // end SiFwd output
1021  edm::LogInfo("TrackerHitProducer::storeTrk") << eventout;
1022  } // end verbose output
1023  */
1024  product.putHits(HitsSysID,
1025  HitsDuID,
1026  HitsTkID,
1027  HitsProT,
1028  HitsParT,
1029  HitsP,
1030  HitsLpX,
1031  HitsLpY,
1032  HitsLpZ,
1033  HitsLdX,
1034  HitsLdY,
1035  HitsLdZ,
1036  HitsLdTheta,
1037  HitsLdPhi,
1038  HitsExPx,
1039  HitsExPy,
1040  HitsExPz,
1041  HitsEnPx,
1042  HitsEnPy,
1043  HitsEnPz,
1044  HitsEloss,
1045  HitsToF);
1046 
1047  return;
1048 }
1049 
1051  if (verbosity > 0)
1052  edm::LogInfo("GlobalValProducer::clear") << "Clearing event holders";
1053 
1054  // reset G4MC info
1055  nRawGenPart = 0;
1056  G4VtxX.clear();
1057  G4VtxY.clear();
1058  G4VtxZ.clear();
1059  G4TrkPt.clear();
1060  G4TrkE.clear();
1061  G4TrkEta.clear();
1062  G4TrkPhi.clear();
1063  // reset tracker info
1064  HitsSysID.clear();
1065  HitsDuID.clear();
1066  HitsTkID.clear();
1067  HitsProT.clear();
1068  HitsParT.clear();
1069  HitsP.clear();
1070  HitsLpX.clear();
1071  HitsLpY.clear();
1072  HitsLpZ.clear();
1073  HitsLdX.clear();
1074  HitsLdY.clear();
1075  HitsLdZ.clear();
1076  HitsLdTheta.clear();
1077  HitsLdPhi.clear();
1078  HitsExPx.clear();
1079  HitsExPy.clear();
1080  HitsExPz.clear();
1081  HitsEnPx.clear();
1082  HitsEnPy.clear();
1083  HitsEnPz.clear();
1084  HitsEloss.clear();
1085  HitsToF.clear();
1086 
1087  return;
1088 }
1089 
1090 // define this as a plug-in
void fillG4MC(edm::Event &)
void storeTrk(PTrackerSimHit &)
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
void storeG4MC(PTrackerSimHit &)
static PFTauRenderPlugin instance
void putRawGenPart(int n)
unsigned long long EventNumber_t
void beginJob() override
Log< level::Error, false > LogError
void putHits(const std::vector< int > &_sysID, const std::vector< float > &_detUnitId, const std::vector< float > &_trackId, const std::vector< float > &_processType, const std::vector< float > &_particleType, const std::vector< float > &_pabs, const std::vector< float > &_lpx, const std::vector< float > &_lpy, const std::vector< float > &_lpz, const std::vector< float > &_ldx, const std::vector< float > &_ldy, const std::vector< float > &_ldz, const std::vector< float > &_ldtheta, const std::vector< float > &_ldphi, const std::vector< float > &_exx, const std::vector< float > &_exy, const std::vector< float > &_exz, const std::vector< float > &_enx, const std::vector< float > &_eny, const std::vector< float > &_enz, const std::vector< float > &_eloss, const std::vector< float > &_tof)
TrackerHitProducer(const edm::ParameterSet &)
edm::EDGetTokenT< edm::PSimHitContainer > edmPSimHitContainer_siTECHigh_Token_
edm::EDGetTokenT< edm::PSimHitContainer > edmPSimHitContainer_siTOBLow_Token_
char const * label
int iEvent
Definition: GenABIO.cc:224
edm::EDGetTokenT< edm::PSimHitContainer > edmPSimHitContainer_siTIBLow_Token_
T sqrt(T t)
Definition: SSEVec.h:19
edm::EDGetTokenT< edm::HepMCProduct > edmHepMCProductToken_
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
edm::EDGetTokenT< edm::PSimHitContainer > edmPSimHitContainer_pxlBrlHigh_Token_
edm::EDGetTokenT< edm::PSimHitContainer > edmPSimHitContainer_siTIDLow_Token_
edm::EDGetTokenT< edm::PSimHitContainer > edmPSimHitContainer_pxlFwdLow_Token_
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
void putG4Vtx(const std::vector< float > &x, const std::vector< float > &y, const std::vector< float > &z)
const HepMC::GenEvent * GetEvent() const
Definition: HepMCProduct.h:37
const int verbosity
edm::EDGetTokenT< edm::PSimHitContainer > edmPSimHitContainer_siTIBHigh_Token_
edm::EDGetTokenT< edm::PSimHitContainer > edmPSimHitContainer_siTIDHigh_Token_
Log< level::Info, false > LogInfo
std::vector< SimVertex > SimVertexContainer
bool isValid() const
Definition: HandleBase.h:70
IntegerVector HitsSysID
HLT enums.
void endJob() override
edm::EDGetTokenT< edm::SimVertexContainer > edmSimVertexContainerToken_
std::vector< PSimHit > PSimHitContainer
edm::EDGetTokenT< edm::PSimHitContainer > edmPSimHitContainer_siTOBHigh_Token_
unsigned int RunNumber_t
edm::EDGetTokenT< edm::PSimHitContainer > edmPSimHitContainer_siTECLow_Token_
Geom::Theta< T > theta() const
std::vector< SimTrack > SimTrackContainer
void putG4Trk(const std::vector< float > &pt, const std::vector< float > &e, const std::vector< float > &eta, const std::vector< float > &phi)
void fillTrk(edm::Event &, const edm::EventSetup &)
def move(src, dest)
Definition: eostools.py:511
edm::EDGetTokenT< edm::SimTrackContainer > edmSimTrackContainerToken_
void produce(edm::Event &, const edm::EventSetup &) override
edm::EDGetTokenT< edm::PSimHitContainer > edmPSimHitContainer_pxlFwdHigh_Token_
edm::EDGetTokenT< edm::PSimHitContainer > edmPSimHitContainer_pxlBrlLow_Token_