Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-12-17 09:19:30

0001 #ifndef PHHEPMC_PHHEPMCEVENTv1_H
0002 #define PHHEPMC_PHHEPMCEVENTv1_H
0003 
0004 #include "PHHepMCGenEvent.h"
0005 
0006 class PHHepMCGenEventv1 : public PHHepMCGenEvent
0007 {
0008  public:
0009   PHHepMCGenEventv1();
0010 
0011   PHHepMCGenEventv1(const PHHepMCGenEventv1& event);
0012   PHHepMCGenEventv1& operator=(const PHHepMCGenEventv1& event);
0013   ~PHHepMCGenEventv1() override = default;
0014 
0015   void identify(std::ostream& os = std::cout) const override;
0016   void Reset() override;
0017   int isValid() const override
0018   {
0019     PHOOL_VIRTUAL_WARNING;
0020     return 0;
0021   }
0022   PHObject* CloneMe() const override { return new PHHepMCGenEventv1(*this); }
0023 
0024   //! boost beta vector for Lorentz Transform, part of composition of a LorentzRotation to translate from hepmc event frame to lab frame
0025   const HepMC::ThreeVector& get_boost_beta_vector() const final { return m_boost_beta_vector; }
0026 
0027   //! boost beta vector for Lorentz Transform, part of composition of a LorentzRotation to translate from hepmc event frame to lab frame
0028   void set_boost_beta_vector(const HepMC::ThreeVector& v) final { m_boost_beta_vector = v; }
0029 
0030   //! rotation axis vector, part of composition of a LorentzRotation to translate from hepmc event frame to lab frame
0031   const HepMC::ThreeVector& get_rotation_vector() const final { return m_rotation_vector; }
0032 
0033   //! rotation axis vector, part of composition of a LorentzRotation to translate from hepmc event frame to lab frame
0034   void set_rotation_vector(const HepMC::ThreeVector& v) final { m_rotation_vector = v; }
0035 
0036   //! rotation angle, part of composition of a LorentzRotation to translate from hepmc event frame to lab frame
0037   double get_rotation_angle() const final { return m_rotation_angle; }
0038 
0039   //! rotation angle, part of composition of a LorentzRotation to translate from hepmc event frame to lab frame
0040   void set_rotation_angle(const double a) final { m_rotation_angle = a; }
0041 
0042   //! LorentzRotation to translate from hepmc event frame to lab frame
0043   CLHEP::HepLorentzRotation get_LorentzRotation_EvtGen2Lab() const final;
0044 
0045   //! LorentzRotation to translate from lab frame to hepmc event frame
0046   CLHEP::HepLorentzRotation get_LorentzRotation_Lab2EvtGen() const final;
0047 
0048   //! reaction plane angles thrown by hijing flowAfterburner
0049   float get_flow_psi(unsigned int n) const final;
0050 
0051   // ! get the reaction plane angle psi_n[n] for all n
0052   const FlowAfterburner_PsiMap& get_flow_psi_map() const final { return m_psi_n; }
0053 
0054   // ! set the reaction plane angle psi_n[n]
0055   void set_flow_psi(unsigned int n, float psi) final { m_psi_n[n] = psi; }
0056 
0057   // ! set the reaction plane angle psi_n[n] for all n
0058   void set_flow_psi_map(const FlowAfterburner_PsiMap& psi_map) final { m_psi_n = psi_map; }
0059 
0060  protected:
0061   //! boost beta vector for Lorentz Transform, part of composition of a LorentzRotation to translate from hepmc event frame to lab frame
0062   HepMC::ThreeVector m_boost_beta_vector;
0063 
0064   //! rotation axis vector, part of composition of a LorentzRotation to translate from hepmc event frame to lab frame
0065   HepMC::ThreeVector m_rotation_vector;
0066 
0067   //! rotation angle, part of composition of a LorentzRotation to translate from hepmc event frame to lab frame
0068   double m_rotation_angle;
0069 
0070   //! reaction plane angles thrown by hijing flowAfterburner
0071   PHHepMCGenEvent::FlowAfterburner_PsiMap m_psi_n;  // only will be filled if the flowAfterburner enabled and input HepMC is from hijing
0072   // it is a map of n to psi_n[n]
0073 
0074   ClassDefOverride(PHHepMCGenEventv1, 2)
0075 };
0076 
0077 #endif  // PHHEPMC_PHHEPMCEVENTv1_H