00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef GIGA_GIGATRAJECTORYPOINT_H
00020 #define GIGA_GIGATRAJECTORYPOINT_H 1
00021
00022
00023 #include "CLHEP/Vector/LorentzVector.h"
00024
00025 #include "GiGa/GiGaUtil.h"
00026
00027 #include "G4TrajectoryPoint.hh"
00028 #include "G4VTrajectoryPoint.hh"
00029
00030 class G4VProcess ;
00031
00041 class GiGaTrajectoryPoint: public G4TrajectoryPoint
00042 {
00044 public:
00046
00048 GiGaTrajectoryPoint ();
00049
00056 GiGaTrajectoryPoint
00057 ( const CLHEP::Hep3Vector& Pos ,
00058 const double Time ,
00059 const CLHEP::HepLorentzVector& Mom = CLHEP::HepLorentzVector() ,
00060 const G4VProcess* Proc = 0 );
00061
00068 GiGaTrajectoryPoint
00069 ( const double Time ,
00070 const CLHEP::Hep3Vector& Pos ,
00071 const CLHEP::HepLorentzVector& Mom = CLHEP::HepLorentzVector() ,
00072 const G4VProcess* Proc = 0 );
00073
00079 GiGaTrajectoryPoint
00080 ( const CLHEP::HepLorentzVector& right ,
00081 const CLHEP::HepLorentzVector& Mom = CLHEP::HepLorentzVector() ,
00082 const G4VProcess* Proc = 0 );
00083
00090 GiGaTrajectoryPoint
00091 ( const G4TrajectoryPoint& Point ,
00092 const double Time ,
00093 const CLHEP::HepLorentzVector& Mom = CLHEP::HepLorentzVector() ,
00094 const G4VProcess* Proc = 0 );
00095
00102 GiGaTrajectoryPoint
00103 ( const G4VTrajectoryPoint& Point ,
00104 const double Time ,
00105 const CLHEP::HepLorentzVector& Mom = CLHEP::HepLorentzVector() ,
00106 const G4VProcess* Proc = 0 );
00107
00111 GiGaTrajectoryPoint ( const GiGaTrajectoryPoint& right );
00112
00114 virtual ~GiGaTrajectoryPoint();
00115
00119 GiGaTrajectoryPoint* clone () const ;
00120
00122 void* operator new ( size_t );
00123
00125 void operator delete ( void* );
00126
00128 bool operator==( const GiGaTrajectoryPoint& right )
00129 { return (&right) == this ; }
00130
00132 const double time () const { return m_time ; }
00134 const double GetTime () const { return time() ; }
00136 void setTime ( double Time ) { m_time = Time ; }
00138 const CLHEP::HepLorentzVector fourVector () const
00139 { return CLHEP::HepLorentzVector ( GetPosition() , GetTime() ) ; };
00140
00142 const CLHEP::HepLorentzVector GetFourVector () const { return fourVector () ; };
00143
00145 const CLHEP::HepLorentzVector& momentum() const { return m_momentum ; }
00146
00148 const CLHEP::HepLorentzVector& GetMomentum() const { return momentum () ; }
00149
00151 void setMomentum ( const CLHEP::HepLorentzVector& value ) { m_momentum = value ; }
00152
00154 void SetMomentum ( const CLHEP::HepLorentzVector& value ) { setMomentum ( value ) ; }
00155
00162 const G4VProcess* process() const { return m_process ; }
00163
00170 const G4VProcess* GetProcess() const { return process () ; }
00171
00173 void setProcess ( const G4VProcess* value ) { m_process = value ; }
00175 void SetProcess ( const G4VProcess* value ) { setProcess ( value ) ; }
00176
00177 private:
00178
00179
00180 GiGaTrajectoryPoint& operator=
00181 ( const GiGaTrajectoryPoint& right ) ;
00182
00183 private:
00185 double m_time;
00186 CLHEP::HepLorentzVector m_momentum ;
00187 const G4VProcess* m_process ;
00189 };
00190
00191
00192
00200
00201 inline GiGaTrajectoryPoint* gigaTrajectoryPoint( G4TrajectoryPoint* g4 )
00202 {
00203 GiGaUtil::FastCast<G4TrajectoryPoint,GiGaTrajectoryPoint> cast ;
00204 return cast( g4 );
00205 };
00206
00207
00208
00216
00217 inline GiGaTrajectoryPoint* gigaTrajectoryPoint( G4VTrajectoryPoint* g4 )
00218 {
00219 GiGaUtil::FastCast<G4VTrajectoryPoint,GiGaTrajectoryPoint> cast ;
00220 return cast( g4 );
00221 };
00222
00223
00224
00232
00233 inline const GiGaTrajectoryPoint* gigaTrajectoryPoint
00234 ( const G4TrajectoryPoint* g4 )
00235 {
00236 GiGaUtil::FastCast<const G4TrajectoryPoint,const GiGaTrajectoryPoint> cast ;
00237 return cast( g4 );
00238 };
00239
00240
00241
00249
00250 inline const GiGaTrajectoryPoint* gigaTrajectoryPoint
00251 ( const G4VTrajectoryPoint* g4 )
00252 {
00253 GiGaUtil::FastCast<const G4VTrajectoryPoint,const GiGaTrajectoryPoint> cast ;
00254 return cast( g4 );
00255 };
00256
00257
00258
00259
00260 #endif
00261 // ============================================================================
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273