File indexing completed on 2026-09-19 08:38:30
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 #ifndef LXeTrajectory_h
0030 #define LXeTrajectory_h 1
0031
0032 #include "G4Allocator.hh"
0033 #include "G4Track.hh"
0034 #include "G4Trajectory.hh"
0035
0036 class G4Polyline;
0037 class G4ParticleDefinition;
0038
0039 class LXeTrajectory : public G4Trajectory
0040 {
0041 public:
0042 LXeTrajectory() = default;
0043 LXeTrajectory(const G4Track* aTrack);
0044 LXeTrajectory(LXeTrajectory&);
0045 ~LXeTrajectory() = default;
0046
0047 void DrawTrajectory() const override;
0048
0049 inline void* operator new(size_t);
0050 inline void operator delete(void*);
0051
0052 void SetDrawTrajectory(G4bool b) { fDrawit = b; }
0053 void WLS() { fWls = true; }
0054 void SetForceDrawTrajectory(G4bool b) { fForceDraw = b; }
0055 void SetForceNoDrawTrajectory(G4bool b) { fForceNoDraw = b; }
0056
0057 private:
0058 G4bool fWls = false;
0059 G4bool fDrawit = false;
0060 G4bool fForceNoDraw = false;
0061 G4bool fForceDraw = false;
0062 G4ParticleDefinition* fParticleDefinition = nullptr;
0063 };
0064
0065 extern G4ThreadLocal G4Allocator<LXeTrajectory>* LXeTrajectoryAllocator;
0066
0067 inline void* LXeTrajectory::operator new(size_t)
0068 {
0069 if (!LXeTrajectoryAllocator) LXeTrajectoryAllocator = new G4Allocator<LXeTrajectory>;
0070 return (void*)LXeTrajectoryAllocator->MallocSingle();
0071 }
0072
0073 inline void LXeTrajectory::operator delete(void* aTrajectory)
0074 {
0075 LXeTrajectoryAllocator->FreeSingle((LXeTrajectory*)aTrajectory);
0076 }
0077
0078 #endif