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