CMS 3D CMS Logo

HGCalTriggerNtupleGen.cc
Go to the documentation of this file.
5 
8 
15 
20 
21 // NOTE: most of this code is borrowed by https://github.com/CMS-HGCAL/reco-ntuples
22 // kudos goes to the original authors. Ideally the 2 repos should be merged since they share part of the use case
23 #include <memory>
24 
25 namespace HGCal_helpers {
26 
27  class Coordinates {
28  public:
29  Coordinates() : x(0), y(0), z(0), eta(0), phi(0) {}
30  float x, y, z, eta, phi;
32  };
33 
35  public:
37  ROOT::Math::SMatrixIdentity id;
39  const float uncert = 0.001;
40  C *= uncert;
42  }
43  void setPropagationTargetZ(const float &z);
44 
45  bool propagate(const double px,
46  const double py,
47  const double pz,
48  const double x,
49  const double y,
50  const double z,
51  const float charge,
52  Coordinates &coords) const;
53 
54  bool propagate(const math::XYZTLorentzVectorD &momentum,
56  const float charge,
57  Coordinates &coords) const;
58 
59  private:
61  const RKPropagatorInS &RKProp() const { return prod_.propagator; }
66  float absz_target_;
67  };
68 
73  }
75  const double py,
76  const double pz,
77  const double x,
78  const double y,
79  const double z,
80  const float charge,
81  Coordinates &output) const {
82  output = Coordinates();
83 
85  GlobalPoint startingPosition(x, y, z);
86  GlobalVector startingMomentum(px, py, pz);
88  TSOS startingStateP(
89  GlobalTrajectoryParameters(startingPosition, startingMomentum, charge, field_), err_, *startingPlane);
90 
91  TSOS trackStateP;
92  if (pz > 0) {
93  trackStateP = RKProp().propagate(startingStateP, *targetPlaneForward_);
94  } else {
95  trackStateP = RKProp().propagate(startingStateP, *targetPlaneBackward_);
96  }
97  if (trackStateP.isValid()) {
98  output.x = trackStateP.globalPosition().x();
99  output.y = trackStateP.globalPosition().y();
100  output.z = trackStateP.globalPosition().z();
101  output.phi = trackStateP.globalPosition().phi();
102  output.eta = trackStateP.globalPosition().eta();
103  return true;
104  }
105  return false;
106  }
107 
110  const float charge,
111  Coordinates &output) const {
112  return propagate(
113  momentum.px(), momentum.py(), momentum.pz(), position.x(), position.y(), position.z(), charge, output);
114  }
115 
116 } // namespace HGCal_helpers
117 
119 public:
121 
122  void initialize(TTree &, const edm::ParameterSet &, edm::ConsumesCollector &&) final;
123  void fill(const edm::Event &, const edm::EventSetup &) final;
124 
126 
127 private:
128  void clear() final;
129 
132 
133  int gen_n_;
136 
137  float vtx_x_;
138  float vtx_y_;
139  float vtx_z_;
140 
142  // GenParticles
143  //
144  std::vector<float> genpart_eta_;
145  std::vector<float> genpart_phi_;
146  std::vector<float> genpart_pt_;
147  std::vector<float> genpart_energy_;
148  std::vector<float> genpart_dvx_;
149  std::vector<float> genpart_dvy_;
150  std::vector<float> genpart_dvz_;
151  std::vector<float> genpart_ovx_;
152  std::vector<float> genpart_ovy_;
153  std::vector<float> genpart_ovz_;
154  std::vector<float> genpart_exx_;
155  std::vector<float> genpart_exy_;
156  std::vector<int> genpart_mother_;
157  std::vector<float> genpart_exphi_;
158  std::vector<float> genpart_exeta_;
159  std::vector<float> genpart_fbrem_;
160  std::vector<int> genpart_pid_;
161  std::vector<int> genpart_gen_;
162  std::vector<int> genpart_reachedEE_;
163  std::vector<bool> genpart_fromBeamPipe_;
164  std::vector<std::vector<float>> genpart_posx_;
165  std::vector<std::vector<float>> genpart_posy_;
166  std::vector<std::vector<float>> genpart_posz_;
167 
169  // reco::GenParticles
170  //
171  std::vector<float> gen_eta_;
172  std::vector<float> gen_phi_;
173  std::vector<float> gen_pt_;
174  std::vector<float> gen_energy_;
175  std::vector<int> gen_charge_;
176  std::vector<int> gen_pdgid_;
177  std::vector<int> gen_status_;
178  std::vector<std::vector<int>> gen_daughters_;
179 
180  // -------convenient tool to deal with simulated tracks
182 
183  // and also the magnetic field
185 
187 
188  // edm::EDGetTokenT<std::vector<reco::GenParticle> > genParticles_;
192 
195 };
196 
198 
200 
202  edm::ParameterSet particleFilter_(conf.getParameter<edm::ParameterSet>("particleFilter"));
203  mySimEvent_ = std::make_unique<FSimEvent>(particleFilter_);
204 
205  gen_token_ = collector.consumes<reco::GenParticleCollection>(conf.getParameter<edm::InputTag>("GenParticles"));
206  gen_PU_token_ = collector.consumes<std::vector<PileupSummaryInfo>>(conf.getParameter<edm::InputTag>("GenPU"));
207  tree.Branch("gen_n", &gen_n_, "gen_n/I");
208  tree.Branch("gen_PUNumInt", &gen_PUNumInt_, "gen_PUNumInt/I");
209  tree.Branch("gen_TrueNumInt", &gen_TrueNumInt_, "gen_TrueNumInt/F");
210 
211  hepmcev_token_ = collector.consumes<edm::HepMCProduct>(conf.getParameter<edm::InputTag>("MCEvent"));
212 
213  simTracks_token_ = collector.consumes<std::vector<SimTrack>>(conf.getParameter<edm::InputTag>("SimTracks"));
214  simVertices_token_ = collector.consumes<std::vector<SimVertex>>(conf.getParameter<edm::InputTag>("SimVertices"));
215 
216  tree.Branch("vtx_x", &vtx_x_);
217  tree.Branch("vtx_y", &vtx_y_);
218  tree.Branch("vtx_z", &vtx_z_);
219 
220  tree.Branch("gen_eta", &gen_eta_);
221  tree.Branch("gen_phi", &gen_phi_);
222  tree.Branch("gen_pt", &gen_pt_);
223  tree.Branch("gen_energy", &gen_energy_);
224  tree.Branch("gen_charge", &gen_charge_);
225  tree.Branch("gen_pdgid", &gen_pdgid_);
226  tree.Branch("gen_status", &gen_status_);
227  tree.Branch("gen_daughters", &gen_daughters_);
228 
229  tree.Branch("genpart_eta", &genpart_eta_);
230  tree.Branch("genpart_phi", &genpart_phi_);
231  tree.Branch("genpart_pt", &genpart_pt_);
232  tree.Branch("genpart_energy", &genpart_energy_);
233  tree.Branch("genpart_dvx", &genpart_dvx_);
234  tree.Branch("genpart_dvy", &genpart_dvy_);
235  tree.Branch("genpart_dvz", &genpart_dvz_);
236  tree.Branch("genpart_ovx", &genpart_ovx_);
237  tree.Branch("genpart_ovy", &genpart_ovy_);
238  tree.Branch("genpart_ovz", &genpart_ovz_);
239  tree.Branch("genpart_mother", &genpart_mother_);
240  tree.Branch("genpart_exphi", &genpart_exphi_);
241  tree.Branch("genpart_exeta", &genpart_exeta_);
242  tree.Branch("genpart_exx", &genpart_exx_);
243  tree.Branch("genpart_exy", &genpart_exy_);
244  tree.Branch("genpart_fbrem", &genpart_fbrem_);
245  tree.Branch("genpart_pid", &genpart_pid_);
246  tree.Branch("genpart_gen", &genpart_gen_);
247  tree.Branch("genpart_reachedEE", &genpart_reachedEE_);
248  tree.Branch("genpart_fromBeamPipe", &genpart_fromBeamPipe_);
249  tree.Branch("genpart_posx", &genpart_posx_);
250  tree.Branch("genpart_posy", &genpart_posy_);
251  tree.Branch("genpart_posz", &genpart_posz_);
252 }
253 
255  clear();
256 
258  iEvent.getByToken(gen_PU_token_, PupInfo_h);
259  const std::vector<PileupSummaryInfo> &PupInfo = *PupInfo_h;
260 
261  if (pdt_watcher_.check(es)) {
263  es.get<PDTRecord>().get(pdt);
264  mySimEvent_->initializePdt(&(*pdt));
265  }
266 
267  if (magfield_watcher_.check(es)) {
270  aField_ = &(*magfield);
271  }
272 
274 
275  // This balck magic is needed to use the mySimEvent_
277  edm::Handle<std::vector<SimTrack>> simTracksHandle;
278  edm::Handle<std::vector<SimVertex>> simVerticesHandle;
279 
280  iEvent.getByToken(hepmcev_token_, hevH);
281  iEvent.getByToken(simTracks_token_, simTracksHandle);
282  iEvent.getByToken(simVertices_token_, simVerticesHandle);
283  mySimEvent_->fill(*simTracksHandle, *simVerticesHandle);
284 
285  HepMC::GenVertex *primaryVertex = *(hevH)->GetEvent()->vertices_begin();
286  const float mm2cm = 0.1;
287  vtx_x_ = primaryVertex->position().x() * mm2cm; // to put in official units
288  vtx_y_ = primaryVertex->position().y() * mm2cm;
289  vtx_z_ = primaryVertex->position().z() * mm2cm;
290 
292  toHGCalPropagator.setPropagationTargetZ(triggerTools_.getLayerZ(1));
293  std::vector<FSimTrack *> allselectedgentracks;
294  const float eeInnerRadius = 25.;
295  const float eeOuterRadius = 160.;
296  unsigned int npart = mySimEvent_->nTracks();
297  for (unsigned int i = 0; i < npart; ++i) {
298  std::vector<float> xp, yp, zp;
299  FSimTrack &myTrack(mySimEvent_->track(i));
300  math::XYZTLorentzVectorD vtx(0, 0, 0, 0);
301 
302  int reachedEE = ReachHGCal::notReach; // compute the extrapolations for the particles reaching EE
303  // and for the gen particles
304  double fbrem = -1;
305 
306  if (std::abs(myTrack.vertex().position().z()) >= triggerTools_.getLayerZ(1))
307  continue;
308 
309  const unsigned nlayers = triggerTools_.lastLayerBH();
310  if (myTrack.noEndVertex()) // || myTrack.genpartIndex()>=0)
311  {
312  HGCal_helpers::Coordinates propcoords;
313  bool reachesHGCal =
314  toHGCalPropagator.propagate(myTrack.momentum(), myTrack.vertex().position(), myTrack.charge(), propcoords);
315  vtx = propcoords.toVector();
316 
317  if (reachesHGCal && vtx.Rho() < eeOuterRadius && vtx.Rho() > eeInnerRadius) {
318  reachedEE = ReachHGCal::onEESurface;
319  double dpt = 0;
320 
321  for (int i = 0; i < myTrack.nDaughters(); ++i)
322  dpt += myTrack.daughter(i).momentum().pt();
323  if (abs(myTrack.type()) == 11)
324  fbrem = dpt / myTrack.momentum().pt();
325  } else if (reachesHGCal && vtx.Rho() > eeOuterRadius)
326  reachedEE = ReachHGCal::outsideEESurface;
327 
328  HGCal_helpers::SimpleTrackPropagator indiv_particleProp(aField_);
329  for (unsigned il = 1; il <= nlayers; ++il) {
330  const float charge = myTrack.charge();
331  indiv_particleProp.setPropagationTargetZ(triggerTools_.getLayerZ(il));
332  HGCal_helpers::Coordinates propCoords;
333  indiv_particleProp.propagate(myTrack.momentum(), myTrack.vertex().position(), charge, propCoords);
334 
335  xp.push_back(propCoords.x);
336  yp.push_back(propCoords.y);
337  zp.push_back(propCoords.z);
338  }
339  } else {
340  vtx = myTrack.endVertex().position();
341  }
342  auto orig_vtx = myTrack.vertex().position();
343 
344  allselectedgentracks.push_back(&mySimEvent_->track(i));
345  // fill branches
346  genpart_eta_.push_back(myTrack.momentum().eta());
347  genpart_phi_.push_back(myTrack.momentum().phi());
348  genpart_pt_.push_back(myTrack.momentum().pt());
349  genpart_energy_.push_back(myTrack.momentum().energy());
350  genpart_dvx_.push_back(vtx.x());
351  genpart_dvy_.push_back(vtx.y());
352  genpart_dvz_.push_back(vtx.z());
353 
354  genpart_ovx_.push_back(orig_vtx.x());
355  genpart_ovy_.push_back(orig_vtx.y());
356  genpart_ovz_.push_back(orig_vtx.z());
357 
358  HGCal_helpers::Coordinates hitsHGCal;
359  toHGCalPropagator.propagate(myTrack.momentum(), orig_vtx, myTrack.charge(), hitsHGCal);
360 
361  genpart_exphi_.push_back(hitsHGCal.phi);
362  genpart_exeta_.push_back(hitsHGCal.eta);
363  genpart_exx_.push_back(hitsHGCal.x);
364  genpart_exy_.push_back(hitsHGCal.y);
365 
366  genpart_fbrem_.push_back(fbrem);
367  genpart_pid_.push_back(myTrack.type());
368  genpart_gen_.push_back(myTrack.genpartIndex());
369  genpart_reachedEE_.push_back(reachedEE);
370  genpart_fromBeamPipe_.push_back(true);
371 
372  genpart_posx_.push_back(xp);
373  genpart_posy_.push_back(yp);
374  genpart_posz_.push_back(zp);
375  }
376 
377  edm::Handle<std::vector<reco::GenParticle>> genParticlesHandle;
378  iEvent.getByToken(gen_token_, genParticlesHandle);
379  gen_n_ = genParticlesHandle->size();
380 
381  for (const auto &particle : *genParticlesHandle) {
382  gen_eta_.push_back(particle.eta());
383  gen_phi_.push_back(particle.phi());
384  gen_pt_.push_back(particle.pt());
385  gen_energy_.push_back(particle.energy());
386  gen_charge_.push_back(particle.charge());
387  gen_pdgid_.push_back(particle.pdgId());
388  gen_status_.push_back(particle.status());
389  std::vector<int> daughters(particle.daughterRefVector().size(), 0);
390  for (unsigned j = 0; j < particle.daughterRefVector().size(); ++j) {
391  daughters[j] = static_cast<int>(particle.daughterRefVector().at(j).key());
392  }
393  gen_daughters_.push_back(daughters);
394  }
395 
396  // associate gen particles to mothers
397  genpart_mother_.resize(genpart_posz_.size(), -1);
398  for (size_t i = 0; i < allselectedgentracks.size(); i++) {
399  const auto tracki = allselectedgentracks.at(i);
400 
401  for (size_t j = i + 1; j < allselectedgentracks.size(); j++) {
402  const auto trackj = allselectedgentracks.at(j);
403 
404  if (!tracki->noMother()) {
405  if (&tracki->mother() == trackj)
406  genpart_mother_.at(i) = j;
407  }
408  if (!trackj->noMother()) {
409  if (&trackj->mother() == tracki)
410  genpart_mother_.at(j) = i;
411  }
412  }
413  }
414 
415  for (const auto &PVI : PupInfo) {
416  if (PVI.getBunchCrossing() == 0) {
417  gen_PUNumInt_ = PVI.getPU_NumInteractions();
418  gen_TrueNumInt_ = PVI.getTrueNumInteractions();
419  }
420  }
421 }
422 
424  gen_n_ = 0;
425  gen_PUNumInt_ = 0;
426  gen_TrueNumInt_ = 0.;
427 
428  vtx_x_ = 0;
429  vtx_y_ = 0;
430  vtx_z_ = 0;
431 
432  //
433  genpart_eta_.clear();
434  genpart_phi_.clear();
435  genpart_pt_.clear();
436  genpart_energy_.clear();
437  genpart_dvx_.clear();
438  genpart_dvy_.clear();
439  genpart_dvz_.clear();
440  genpart_ovx_.clear();
441  genpart_ovy_.clear();
442  genpart_ovz_.clear();
443  genpart_exx_.clear();
444  genpart_exy_.clear();
445  genpart_mother_.clear();
446  genpart_exphi_.clear();
447  genpart_exeta_.clear();
448  genpart_fbrem_.clear();
449  genpart_pid_.clear();
450  genpart_gen_.clear();
451  genpart_reachedEE_.clear();
452  genpart_fromBeamPipe_.clear();
453  genpart_posx_.clear();
454  genpart_posy_.clear();
455  genpart_posz_.clear();
456 
458  // reco::GenParticles
459  //
460  gen_eta_.clear();
461  gen_phi_.clear();
462  gen_pt_.clear();
463  gen_energy_.clear();
464  gen_charge_.clear();
465  gen_pdgid_.clear();
466  gen_status_.clear();
467  gen_daughters_.clear();
468 }
Vector3DBase
Definition: Vector3DBase.h:8
HGCalTriggerNtupleGen::mySimEvent_
std::unique_ptr< FSimEvent > mySimEvent_
Definition: HGCalTriggerNtupleGen.cc:181
edm::ESWatcher::check
bool check(const edm::EventSetup &iSetup)
Definition: ESWatcher.h:52
HGCalTriggerNtupleGen::genpart_posz_
std::vector< std::vector< float > > genpart_posz_
Definition: HGCalTriggerNtupleGen.cc:166
HGCalTriggerNtupleGen::genpart_dvx_
std::vector< float > genpart_dvx_
Definition: HGCalTriggerNtupleGen.cc:148
HGCalTriggerTools.h
TkRotation< float >
RKPropagatorInS
Definition: RKPropagatorInS.h:19
HGCalTriggerTools::eventSetup
void eventSetup(const edm::EventSetup &)
Definition: HGCalTriggerTools.cc:35
PileupSummaryInfo.h
mps_fire.i
i
Definition: mps_fire.py:355
FSimEvent
Definition: FSimEvent.h:29
defaultRKPropagator::Product
Definition: defaultRKPropagator.h:41
HGCal_helpers::SimpleTrackPropagator::SimpleTrackPropagator
SimpleTrackPropagator()
Definition: HGCalTriggerNtupleGen.cc:60
ESHandle.h
HGCalTriggerNtupleGen::genpart_exy_
std::vector< float > genpart_exy_
Definition: HGCalTriggerNtupleGen.cc:155
RKPropagatorInS::propagate
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
Definition: Propagator.h:50
f
double f[11][100]
Definition: MuScleFitUtils.cc:78
HGCalTriggerNtupleGen::gen_eta_
std::vector< float > gen_eta_
Definition: HGCalTriggerNtupleGen.cc:171
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
convertSQLitetoXML_cfg.output
output
Definition: convertSQLitetoXML_cfg.py:32
multPhiCorr_741_25nsDY_cfi.py
py
Definition: multPhiCorr_741_25nsDY_cfi.py:12
edm
HLT enums.
Definition: AlignableModifier.h:19
tree
Definition: tree.py:1
HGCal_helpers::SimpleTrackPropagator::prod_
defaultRKPropagator::Product prod_
Definition: HGCalTriggerNtupleGen.cc:65
math::XYZTLorentzVectorD
ROOT::Math::LorentzVector< ROOT::Math::PxPyPzE4D< double > > XYZTLorentzVectorD
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:14
HGCalTriggerNtupleGen::genpart_posx_
std::vector< std::vector< float > > genpart_posx_
Definition: HGCalTriggerNtupleGen.cc:164
TrajectoryStateOnSurface::globalPosition
GlobalPoint globalPosition() const
Definition: TrajectoryStateOnSurface.h:65
reco::GenParticleCollection
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
Definition: GenParticleFwd.h:13
HGCal_helpers::SimpleTrackPropagator::absz_target_
float absz_target_
Definition: HGCalTriggerNtupleGen.cc:66
HGCalTriggerNtupleGen::pdt_watcher_
edm::ESWatcher< PDTRecord > pdt_watcher_
Definition: HGCalTriggerNtupleGen.cc:193
HGCal_helpers::Coordinates::phi
float phi
Definition: HGCalTriggerNtupleGen.cc:30
HGCalTriggerNtupleGen::genpart_ovy_
std::vector< float > genpart_ovy_
Definition: HGCalTriggerNtupleGen.cc:152
HGCalTriggerNtupleGen::gen_pt_
std::vector< float > gen_pt_
Definition: HGCalTriggerNtupleGen.cc:173
ReferenceCountingPointer< Plane >
HGCalTriggerNtupleGen::genpart_pt_
std::vector< float > genpart_pt_
Definition: HGCalTriggerNtupleGen.cc:146
HGCalTriggerNtupleGen::genpart_exphi_
std::vector< float > genpart_exphi_
Definition: HGCalTriggerNtupleGen.cc:157
HGCalTriggerNtupleGen::initialize
void initialize(TTree &, const edm::ParameterSet &, edm::ConsumesCollector &&) final
Definition: HGCalTriggerNtupleGen.cc:201
HGCalTriggerNtupleGen::vtx_z_
float vtx_z_
Definition: HGCalTriggerNtupleGen.cc:139
RKPropagatorInS.h
HGCal_helpers::Coordinates::Coordinates
Coordinates()
Definition: HGCalTriggerNtupleGen.cc:29
watchdog.const
const
Definition: watchdog.py:83
edm::Handle
Definition: AssociativeIterator.h:50
HGCal_helpers::SimpleTrackPropagator::SimpleTrackPropagator
SimpleTrackPropagator(const MagneticField *f)
Definition: HGCalTriggerNtupleGen.cc:36
HGCalTriggerNtupleGen::gen_energy_
std::vector< float > gen_energy_
Definition: HGCalTriggerNtupleGen.cc:174
npart
double npart
Definition: HydjetWrapper.h:46
HGCalTriggerNtupleGen::magfield_watcher_
edm::ESWatcher< IdealMagneticFieldRecord > magfield_watcher_
Definition: HGCalTriggerNtupleGen.cc:194
GenParticle.h
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
HGCalTriggerNtupleGen::genpart_exeta_
std::vector< float > genpart_exeta_
Definition: HGCalTriggerNtupleGen.cc:158
HGCal_helpers::Coordinates::x
float x
Definition: HGCalTriggerNtupleGen.cc:30
BeamMonitor_cff.primaryVertex
primaryVertex
hltOfflineBeamSpot for HLTMON
Definition: BeamMonitor_cff.py:7
IdealMagneticFieldRecord
Definition: IdealMagneticFieldRecord.h:11
HGCal_helpers::SimpleTrackPropagator::propagate
bool propagate(const double px, const double py, const double pz, const double x, const double y, const double z, const float charge, Coordinates &coords) const
Definition: HGCalTriggerNtupleGen.cc:74
HGCalTriggerNtupleBase
Definition: HGCalTriggerNtupleBase.h:10
FSimEvent.h
Plane.h
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
HGCalTriggerNtupleGen::ReachHGCal
ReachHGCal
Definition: HGCalTriggerNtupleGen.cc:125
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
CurvilinearTrajectoryError
Definition: CurvilinearTrajectoryError.h:27
HGCalTriggerNtupleGen::notReach
Definition: HGCalTriggerNtupleGen.cc:125
BPhysicsValidation_cfi.daughters
daughters
Definition: BPhysicsValidation_cfi.py:11
HGCalTriggerGeometryBase.h
HGCalTriggerTools::lastLayerBH
unsigned lastLayerBH() const
Definition: HGCalTriggerTools.h:56
HGCalTriggerNtupleGen
Definition: HGCalTriggerNtupleGen.cc:118
HGCalTriggerNtupleGen::fill
void fill(const edm::Event &, const edm::EventSetup &) final
Definition: HGCalTriggerNtupleGen.cc:254
IdealMagneticFieldRecord.h
edm::ESHandle< HepPDT::ParticleDataTable >
HGCal_helpers::SimpleTrackPropagator::targetPlaneForward_
Plane::PlanePointer targetPlaneForward_
Definition: HGCalTriggerNtupleGen.cc:62
HGCal_helpers::Coordinates::eta
float eta
Definition: HGCalTriggerNtupleGen.cc:30
GlobalTrajectoryParameters
Definition: GlobalTrajectoryParameters.h:15
HGCalTriggerNtupleGen::genpart_eta_
std::vector< float > genpart_eta_
Definition: HGCalTriggerNtupleGen.cc:144
Point3DBase< float, GlobalTag >
DEFINE_EDM_PLUGIN
#define DEFINE_EDM_PLUGIN(factory, type, name)
Definition: PluginFactory.h:124
HGCal_helpers::SimpleTrackPropagator
Definition: HGCalTriggerNtupleGen.cc:34
HGCal_helpers::SimpleTrackPropagator::field_
const MagneticField * field_
Definition: HGCalTriggerNtupleGen.cc:63
badGlobalMuonTaggersAOD_cff.vtx
vtx
Definition: badGlobalMuonTaggersAOD_cff.py:5
HGCal_helpers::SimpleTrackPropagator::targetPlaneBackward_
Plane::PlanePointer targetPlaneBackward_
Definition: HGCalTriggerNtupleGen.cc:62
HGCalTriggerNtupleGen::gen_PU_token_
edm::EDGetToken gen_PU_token_
Definition: HGCalTriggerNtupleGen.cc:131
Plane::build
static PlanePointer build(Args &&... args)
Definition: Plane.h:33
ALCARECOTkAlJpsiMuMu_cff.charge
charge
Definition: ALCARECOTkAlJpsiMuMu_cff.py:47
HGCal_helpers::Coordinates::y
float y
Definition: HGCalTriggerNtupleGen.cc:30
HGCalTriggerNtupleGen::outsideEESurface
Definition: HGCalTriggerNtupleGen.cc:125
edm::ParameterSet
Definition: ParameterSet.h:36
HGCalTriggerNtupleGen::clear
void clear() final
Definition: HGCalTriggerNtupleGen.cc:423
HGCalTriggerNtupleGen::genpart_dvz_
std::vector< float > genpart_dvz_
Definition: HGCalTriggerNtupleGen.cc:150
ParameterSet
Definition: Functions.h:16
HGCalTriggerNtupleGen::genpart_mother_
std::vector< int > genpart_mother_
Definition: HGCalTriggerNtupleGen.cc:156
HGCalTriggerNtupleGen::gen_pdgid_
std::vector< int > gen_pdgid_
Definition: HGCalTriggerNtupleGen.cc:176
edmplugin::PluginFactory
Definition: PluginFactory.h:34
HGCal_helpers
Definition: HGCalTriggerNtupleGen.cc:25
HcalDetId.h
HGCalTriggerNtupleGen::genpart_fromBeamPipe_
std::vector< bool > genpart_fromBeamPipe_
Definition: HGCalTriggerNtupleGen.cc:163
HGCalTriggerNtupleGen::gen_daughters_
std::vector< std::vector< int > > gen_daughters_
Definition: HGCalTriggerNtupleGen.cc:178
HGCalTriggerNtupleBase.h
HGCalTriggerNtupleGen::hepmcev_token_
edm::EDGetToken hepmcev_token_
Definition: HGCalTriggerNtupleGen.cc:191
position
static int position[264][3]
Definition: ReadPGInfo.cc:289
PV3DBase::eta
T eta() const
Definition: PV3DBase.h:73
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
iEvent
int iEvent
Definition: GenABIO.cc:224
HGCalTriggerNtupleGen::genpart_phi_
std::vector< float > genpart_phi_
Definition: HGCalTriggerNtupleGen.cc:145
HGCalTriggerNtupleGen::gen_charge_
std::vector< int > gen_charge_
Definition: HGCalTriggerNtupleGen.cc:175
MagneticField.h
edm::EventSetup
Definition: EventSetup.h:57
defaultRKPropagator.h
HGCalTriggerNtupleGen::genpart_gen_
std::vector< int > genpart_gen_
Definition: HGCalTriggerNtupleGen.cc:161
HGCal_helpers::Coordinates::z
float z
Definition: HGCalTriggerNtupleGen.cc:30
get
#define get
ESWatcher
HGCal_helpers::SimpleTrackPropagator::RKProp
const RKPropagatorInS & RKProp() const
Definition: HGCalTriggerNtupleGen.cc:61
EDGetToken
cms::cuda::device::unique_ptr
std::unique_ptr< T, impl::DeviceDeleter > unique_ptr
Definition: device_unique_ptr.h:33
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
multPhiCorr_741_25nsDY_cfi.px
px
Definition: multPhiCorr_741_25nsDY_cfi.py:10
HGCalTriggerNtupleGen::aField_
const MagneticField * aField_
Definition: HGCalTriggerNtupleGen.cc:184
std
Definition: JetResolutionObject.h:76
HGCalTriggerNtupleGen::genpart_ovx_
std::vector< float > genpart_ovx_
Definition: HGCalTriggerNtupleGen.cc:151
HGCal_helpers::SimpleTrackPropagator::err_
CurvilinearTrajectoryError err_
Definition: HGCalTriggerNtupleGen.cc:64
gen::C
C
Definition: PomwigHadronizer.cc:76
HGCalTriggerNtupleGen::vtx_x_
float vtx_x_
Definition: HGCalTriggerNtupleGen.cc:137
HGCalTriggerNtupleGen::simTracks_token_
edm::EDGetToken simTracks_token_
Definition: HGCalTriggerNtupleGen.cc:189
ESWatcher.h
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:31
HGCalTriggerNtupleGen::genpart_fbrem_
std::vector< float > genpart_fbrem_
Definition: HGCalTriggerNtupleGen.cc:159
HGCalTriggerNtupleGen::simVertices_token_
edm::EDGetToken simVertices_token_
Definition: HGCalTriggerNtupleGen.cc:190
HGCalTriggerNtupleGen::genpart_exx_
std::vector< float > genpart_exx_
Definition: HGCalTriggerNtupleGen.cc:154
HGCalTriggerNtupleGen::genpart_ovz_
std::vector< float > genpart_ovz_
Definition: HGCalTriggerNtupleGen.cc:153
defaultRKPropagator::Product::propagator
RKPropagator propagator
Definition: defaultRKPropagator.h:48
HGCalTriggerNtupleGen::HGCalTriggerNtupleGen
HGCalTriggerNtupleGen(const edm::ParameterSet &)
Definition: HGCalTriggerNtupleGen.cc:199
HGCalTriggerTools
Definition: HGCalTriggerTools.h:32
HGCalTriggerNtupleGen::genpart_posy_
std::vector< std::vector< float > > genpart_posy_
Definition: HGCalTriggerNtupleGen.cc:165
HGCal_helpers::Coordinates::toVector
math::XYZTLorentzVectorD toVector()
Definition: HGCalTriggerNtupleGen.cc:31
HGCalTriggerNtupleGen::triggerTools_
HGCalTriggerTools triggerTools_
Definition: HGCalTriggerNtupleGen.cc:186
FSimTrack
Definition: FSimTrack.h:30
PDTRecord.h
HGCal_helpers::SimpleTrackPropagator::setPropagationTargetZ
void setPropagationTargetZ(const float &z)
Definition: HGCalTriggerNtupleGen.cc:69
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
HGCalTriggerNtupleGen::gen_status_
std::vector< int > gen_status_
Definition: HGCalTriggerNtupleGen.cc:177
HGCalTriggerNtupleGen::genpart_dvy_
std::vector< float > genpart_dvy_
Definition: HGCalTriggerNtupleGen.cc:149
edm::HepMCProduct
Definition: HepMCProduct.h:18
HGCalTriggerNtupleGen::onEESurface
Definition: HGCalTriggerNtupleGen.cc:125
HGCal_helpers::Coordinates
Definition: HGCalTriggerNtupleGen.cc:27
HepMCProduct.h
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
HGCalTriggerNtupleGen::gen_n_
int gen_n_
Definition: HGCalTriggerNtupleGen.cc:133
HGCalTriggerNtupleGen::vtx_y_
float vtx_y_
Definition: HGCalTriggerNtupleGen.cc:138
edm::Event
Definition: Event.h:73
HGCalTriggerNtupleGen::genpart_energy_
std::vector< float > genpart_energy_
Definition: HGCalTriggerNtupleGen.cc:147
HGCalTriggerNtupleGen::gen_TrueNumInt_
float gen_TrueNumInt_
Definition: HGCalTriggerNtupleGen.cc:135
MagneticField
Definition: MagneticField.h:19
AlgebraicSymMatrix55
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
Definition: AlgebraicROOTObjects.h:23
HGCalTriggerNtupleGen::gen_PUNumInt_
int gen_PUNumInt_
Definition: HGCalTriggerNtupleGen.cc:134
volumeBasedMagneticField_160812_cfi.magfield
magfield
Definition: volumeBasedMagneticField_160812_cfi.py:11
HGCalTriggerTools::getLayerZ
float getLayerZ(const unsigned &layerWithOffset) const
Definition: HGCalTriggerTools.cc:312
PDTRecord
Definition: PDTRecord.h:14
TSOS
TrajectoryStateOnSurface TSOS
Definition: TestHits.cc:19
edm::InputTag
Definition: InputTag.h:15
edm::ConsumesCollector
Definition: ConsumesCollector.h:39
alongMomentum
Definition: PropagationDirection.h:4
PV3DBase::phi
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
TrajectoryStateOnSurface::isValid
bool isValid() const
Definition: TrajectoryStateOnSurface.h:54
HGCalTriggerNtupleGen::gen_phi_
std::vector< float > gen_phi_
Definition: HGCalTriggerNtupleGen.cc:172
HGCalTriggerNtupleGen::gen_token_
edm::EDGetToken gen_token_
Definition: HGCalTriggerNtupleGen.cc:130
HGCalTriggerNtupleGen::genpart_pid_
std::vector< int > genpart_pid_
Definition: HGCalTriggerNtupleGen.cc:160
nlayers
Definition: HIMultiTrackSelector.h:48
HGCalTriggerNtupleGen::genpart_reachedEE_
std::vector< int > genpart_reachedEE_
Definition: HGCalTriggerNtupleGen.cc:162