WCSim
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
WCSimTrajectory.hh
Go to the documentation of this file.
1 class WCSimTrajectory;
2 
3 #ifndef WCSimTrajectory_h
4 #define WCSimTrajectory_h 1
5 
6 #include "G4VTrajectory.hh"
7 #include "G4Allocator.hh"
8 #include <stdlib.h> // Include from 'system'
9 #include "G4ios.hh" // Include from 'system'
10 #include <vector> // G4RWTValOrderedVector
11 #include "globals.hh" // Include from 'global'
12 #include "G4ParticleDefinition.hh" // Include from 'particle+matter'
13 #include "G4TrajectoryPoint.hh" // Include from 'tracking'
14 #include "G4Track.hh"
15 #include "G4Step.hh"
16 
17 class G4Polyline; // Forward declaration.
18 
19 typedef std::vector<G4VTrajectoryPoint*> TrajectoryPointContainer;
21 class WCSimTrajectory : public G4VTrajectory
23 {
24 
25 //--------
26 public: // with description
27 //--------
28 
29 // Constructor/Destrcutor
30 
32 
33  WCSimTrajectory(const G4Track* aTrack);
35  virtual ~WCSimTrajectory();
36 
37 // Operators
38  inline void* operator new(size_t);
39  inline void operator delete(void*);
40  inline int operator == (const WCSimTrajectory& right) const
41  {return (this==&right);}
42 
43 // Get/Set functions
44  inline G4int GetTrackID() const
45  { return fTrackID; }
46  inline G4int GetParentID() const
47  { return fParentID; }
48  inline G4String GetParticleName() const
49  { return ParticleName; }
50  inline G4double GetCharge() const
51  { return PDGCharge; }
52  inline G4int GetPDGEncoding() const
53  { return PDGEncoding; }
54  inline G4ThreeVector GetInitialMomentum() const
55  { return initialMomentum; }
56  inline G4String GetCreatorProcessName() const {
57  return creatorProcess;
58  }
59 
60  inline G4double GetGlobalTime() const
61  { return globalTime; }
62  inline G4bool GetSaveFlag() const { return SaveIt; }
63  inline void SetSaveFlag(G4bool value) { SaveIt = value; }
64 
65 // New function we have added
66  inline G4ThreeVector GetStoppingPoint() const
67  { return stoppingPoint; }
68  inline G4VPhysicalVolume* GetStoppingVolume() const
69  { return stoppingVolume;}
70  inline void SetStoppingPoint(G4ThreeVector& currentPosition)
71  { stoppingPoint = currentPosition;}
72  inline void SetStoppingVolume(G4VPhysicalVolume* currentVolume)
73  { stoppingVolume = currentVolume;}
74 
75 
76 // Other member functions
77  virtual void ShowTrajectory(std::ostream& os=G4cout) const;
78  virtual void DrawTrajectory(G4int i_mode=0) const;
79  virtual void AppendStep(const G4Step* aStep);
80  virtual int GetPointEntries() const { return positionRecord->size(); }
81  virtual G4VTrajectoryPoint* GetPoint(G4int i) const
82  { return (*positionRecord)[i]; }
83  virtual void MergeTrajectory(G4VTrajectory* secondTrajectory);
84 
85  G4ParticleDefinition* GetParticleDefinition();
86 
87  virtual const std::map<G4String,G4AttDef>* GetAttDefs() const;
88  virtual std::vector<G4AttValue>* CreateAttValues() const;
89 
90 //---------
91  private:
92 //---------
93 
95  G4int fTrackID;
96  G4int fParentID;
97  G4int PDGEncoding;
98  G4double PDGCharge;
99  G4String ParticleName;
100  G4ThreeVector initialMomentum;
101 
102  // These are new variables
103  G4ThreeVector stoppingPoint;
104  G4VPhysicalVolume *stoppingVolume;
105 
106  // M Fechner : new saving mechanism
107  G4bool SaveIt;
108  G4String creatorProcess;
109  G4double globalTime;
110 };
111 
112 /*** TEMP : M FECHNER ***********
113 ** modification by Chris Walter that works for geant4 >= 4.6.2p01
114 ** does not compile with 4.6.1
115 #if defined G4TRACKING_ALLOC_EXPORT
116  extern G4DLLEXPORT G4Allocator<WCSimTrajectory> myTrajectoryAllocator;
117 #else
118  extern G4DLLIMPORT G4Allocator<WCSimTrajectory> myTrajectoryAllocator;
119 #endif
120 */
121 
122 extern G4Allocator<WCSimTrajectory> myTrajectoryAllocator;
123 
124 inline void* WCSimTrajectory::operator new(size_t)
125 {
126  void* aTrajectory;
127  aTrajectory = (void*)myTrajectoryAllocator.MallocSingle();
128  return aTrajectory;
129 }
130 
131 inline void WCSimTrajectory::operator delete(void* aTrajectory)
132 {
133  myTrajectoryAllocator.FreeSingle((WCSimTrajectory*)aTrajectory);
134 }
135 
136 #endif
137 
G4VPhysicalVolume * stoppingVolume
G4ThreeVector GetInitialMomentum() const
virtual G4VTrajectoryPoint * GetPoint(G4int i) const
void SetStoppingVolume(G4VPhysicalVolume *currentVolume)
virtual void AppendStep(const G4Step *aStep)
virtual int GetPointEntries() const
G4Allocator< WCSimTrajectory > myTrajectoryAllocator
G4int GetTrackID() const
G4bool GetSaveFlag() const
virtual void MergeTrajectory(G4VTrajectory *secondTrajectory)
virtual void DrawTrajectory(G4int i_mode=0) const
G4int GetPDGEncoding() const
G4String GetCreatorProcessName() const
G4ThreeVector GetStoppingPoint() const
virtual void ShowTrajectory(std::ostream &os=G4cout) const
G4double GetGlobalTime() const
TrajectoryPointContainer * positionRecord
void SetStoppingPoint(G4ThreeVector &currentPosition)
void SetSaveFlag(G4bool value)
G4ParticleDefinition * GetParticleDefinition()
virtual std::vector< G4AttValue > * CreateAttValues() const
G4int GetParentID() const
G4ThreeVector stoppingPoint
virtual ~WCSimTrajectory()
G4VPhysicalVolume * GetStoppingVolume() const
G4String GetParticleName() const
int operator==(const WCSimTrajectory &right) const
G4double GetCharge() const
virtual const std::map< G4String, G4AttDef > * GetAttDefs() const
std::vector< G4VTrajectoryPoint * > TrajectoryPointContainer
G4ThreeVector initialMomentum