EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PHHepMCGenEvent.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file PHHepMCGenEvent.h
1 #ifndef PHHEPMC_PHHEPMCGENEVENT_H
2 #define PHHEPMC_PHHEPMCGENEVENT_H
3 
4 #include <phool/PHObject.h>
5 
6 #include <phool/phool.h>
7 
8 #include <HepMC/SimpleVector.h>
9 
10 #include <CLHEP/Vector/LorentzRotation.h>
11 
12 #include <iostream> // for cout, ostream
13 
14 namespace HepMC
15 {
16  class GenEvent;
17 }
18 
19 class PHHepMCGenEvent : public PHObject
20 {
21  public:
23 
24  PHHepMCGenEvent(const PHHepMCGenEvent& event);
26  ~PHHepMCGenEvent() override;
27 
28  void identify(std::ostream& os = std::cout) const override;
29  void Reset() override;
30  int isValid() const override
31  {
32  return (getEvent() != nullptr) ? 1 : 0;
33  }
34  PHObject* CloneMe() const override { return new PHHepMCGenEvent(*this); }
35 
36  HepMC::GenEvent* getEvent();
37  const HepMC::GenEvent* getEvent() const;
38 
43  int get_embedding_id() const { return _embedding_id; }
44 
49  void set_embedding_id(int id) { _embedding_id = id; }
50 
52  bool is_simulated() const { return _isSimulated; }
53 
55  void is_simulated(bool v) { _isSimulated = v; }
56 
58  const HepMC::FourVector& get_collision_vertex() const { return _collisionVertex; }
59 
61  void set_collision_vertex(const HepMC::FourVector& v) { _collisionVertex = v; }
62 
64  virtual const HepMC::ThreeVector& get_boost_beta_vector() const
65  {
67  static HepMC::ThreeVector dummy_vec(0, 0, 0);
68  return dummy_vec;
69  }
70 
72  virtual void set_boost_beta_vector(const HepMC::ThreeVector&) { PHOOL_VIRTUAL_WARNING; }
73 
75  virtual const HepMC::ThreeVector& get_rotation_vector() const
76  {
78  static HepMC::ThreeVector dummy_vec(0, 0, 1);
79  return dummy_vec;
80  }
81 
83  virtual void set_rotation_vector(const HepMC::ThreeVector&) { PHOOL_VIRTUAL_WARNING; }
84 
86  virtual double get_rotation_angle() const
87  {
89  return 0;
90  }
91 
93  virtual void set_rotation_angle(const double) { PHOOL_VIRTUAL_WARNING; }
94 
96  virtual CLHEP::HepLorentzRotation get_LorentzRotation_EvtGen2Lab() const { return CLHEP::HepLorentzRotation::IDENTITY; }
97 
99  virtual CLHEP::HepLorentzRotation get_LorentzRotation_Lab2EvtGen() const { return CLHEP::HepLorentzRotation::IDENTITY; }
100 
102  bool addEvent(HepMC::GenEvent* evt);
103  bool addEvent(HepMC::GenEvent& evt);
104  bool swapEvent(HepMC::GenEvent*& evt);
105  void clearEvent();
106 
108  virtual void moveVertex(double x, double y, double z, double t = 0);
109 
110  // the number of entries in the array of particles
111  virtual int size(void) const;
112  virtual int vertexSize(void) const;
113 
114  void print(std::ostream& os = std::cout) const;
115 
116  void PrintEvent();
117 
118  protected:
124 
127 
129  HepMC::FourVector _collisionVertex;
130 
132  HepMC::GenEvent* _theEvt;
133 
134  ClassDefOverride(PHHepMCGenEvent, 5)
135 };
136 
137 #endif // PHHEPMC_PHHEPMCEVENT_H