File indexing completed on 2025-02-23 09:22:44
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030 #ifndef RE04Trajectory_h
0031 #define RE04Trajectory_h 1
0032
0033 #include "RE04TrajectoryPoint.hh" // Include from 'tracking'
0034
0035 #include "G4Allocator.hh"
0036 #include "G4ParticleDefinition.hh" // Include from 'particle+matter'
0037 #include "G4Step.hh"
0038 #include "G4Track.hh"
0039 #include "G4VTrajectory.hh"
0040 #include "G4ios.hh" // Include from 'system'
0041 #include "globals.hh" // Include from 'global'
0042
0043 #include <stdlib.h> // Include from 'system'
0044 #include <vector> // G4RWTValOrderedVector
0045
0046 class G4Polyline;
0047
0048 typedef std::vector<G4VTrajectoryPoint*> TrajectoryPointContainer;
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091 class RE04Trajectory : public G4VTrajectory
0092
0093 {
0094
0095 public:
0096
0097
0098
0099
0100 RE04Trajectory();
0101
0102 RE04Trajectory(const G4Track* aTrack);
0103 RE04Trajectory(RE04Trajectory&);
0104 virtual ~RE04Trajectory();
0105
0106
0107 inline void* operator new(size_t);
0108 inline void operator delete(void*);
0109 inline int operator==(const RE04Trajectory& right) const { return (this == &right); }
0110
0111
0112 inline virtual G4int GetTrackID() const { return fTrackID; }
0113 inline virtual G4int GetParentID() const { return fParentID; }
0114 inline virtual G4String GetParticleName() const { return fParticleName; }
0115 inline virtual G4double GetCharge() const { return fPDGCharge; }
0116 inline virtual G4int GetPDGEncoding() const { return fPDGEncoding; }
0117 inline virtual G4double GetInitialKineticEnergy() const { return fInitialKineticEnergy; }
0118 inline virtual G4ThreeVector GetInitialMomentum() const { return fInitialMomentum; }
0119
0120
0121 virtual void ShowTrajectory(std::ostream& os = G4cout) const;
0122
0123 virtual void DrawTrajectory() const;
0124 virtual void AppendStep(const G4Step* aStep);
0125 virtual int GetPointEntries() const { return fPositionRecord->size(); }
0126 virtual G4VTrajectoryPoint* GetPoint(G4int i) const { return (*fPositionRecord)[i]; }
0127 virtual void MergeTrajectory(G4VTrajectory* secondTrajectory);
0128
0129 G4ParticleDefinition* GetParticleDefinition();
0130
0131 virtual const std::map<G4String, G4AttDef>* GetAttDefs() const;
0132 virtual std::vector<G4AttValue>* CreateAttValues() const;
0133
0134
0135 private:
0136
0137
0138 TrajectoryPointContainer* fPositionRecord;
0139 G4int fTrackID;
0140 G4int fParentID;
0141 G4int fPDGEncoding;
0142 G4double fPDGCharge;
0143 G4String fParticleName;
0144 G4double fInitialKineticEnergy;
0145 G4ThreeVector fInitialMomentum;
0146 };
0147
0148 extern G4ThreadLocal G4Allocator<RE04Trajectory>* faTrajAllocator;
0149
0150 inline void* RE04Trajectory::operator new(size_t)
0151 {
0152 if (!faTrajAllocator) faTrajAllocator = new G4Allocator<RE04Trajectory>;
0153 return (void*)faTrajAllocator->MallocSingle();
0154 }
0155
0156 inline void RE04Trajectory::operator delete(void* aTrajectory)
0157 {
0158 faTrajAllocator->FreeSingle((RE04Trajectory*)aTrajectory);
0159 }
0160
0161 #endif