Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-10 10:18:06

0001 #pragma once
0002 
0003 #include <TObject.h>
0004 #include <TVector3.h>
0005 
0006 namespace IRT2 {
0007 
0008 // Need a separate class because do not want to deal with G4VUserTrackInformation serialization;
0009 class TransientParticle: public TObject {
0010  public:
0011  TransientParticle(int pdg, bool primary = true): m_PDG(pdg), m_VertexTime(0.0), 
0012     m_PrimaryParticle(primary) {};
0013   ~TransientParticle() {};
0014 
0015   virtual bool IsCharged( void ) const = 0;
0016   int GetPDG( void ) const { return m_PDG; };
0017 
0018   inline void SetVertexPosition(const TVector3 &position)      { m_VertexPosition = position; };
0019   inline void SetVertexMomentum(const TVector3 &momentum)      { m_VertexMomentum = momentum; };
0020   inline void SetVertexTime(double value)                      { m_VertexTime = value; };
0021   inline const TVector3 &GetVertexPosition( void )       const { return m_VertexPosition; };
0022   inline const TVector3 &GetVertexMomentum( void )       const { return m_VertexMomentum; };
0023   inline double GetVertexTime( void )                    const { return m_VertexTime; };
0024   inline bool IsPrimary( void )                          const { return m_PrimaryParticle; };
0025 
0026  private:
0027   int m_PDG;
0028   // Vertex and 3D at birth as given by GEANT; 
0029   TVector3 m_VertexPosition, m_VertexMomentum;
0030 
0031   // Global time at birth;
0032   double m_VertexTime;
0033 
0034   bool m_PrimaryParticle;
0035 
0036 #ifndef DISABLE_ROOT_IO
0037   ClassDef(TransientParticle, 4);
0038 #endif
0039 };
0040 
0041 } // namespace IRT2