File indexing completed on 2026-09-12 08:30:39
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 WLSPhotonDetHit_h
0030 #define WLSPhotonDetHit_h 1
0031
0032 #include "G4Allocator.hh"
0033 #include "G4LogicalVolume.hh"
0034 #include "G4THitsCollection.hh"
0035 #include "G4ThreeVector.hh"
0036 #include "G4VHit.hh"
0037 #include "G4VPhysicalVolume.hh"
0038
0039 class WLSPhotonDetHit : public G4VHit
0040 {
0041 public:
0042 WLSPhotonDetHit();
0043 WLSPhotonDetHit(G4ThreeVector pExit, G4ThreeVector pArrive, G4double pTime, G4double pEnergy);
0044 ~WLSPhotonDetHit() override = default;
0045
0046 WLSPhotonDetHit(const WLSPhotonDetHit& right);
0047 const WLSPhotonDetHit& operator=(const WLSPhotonDetHit& right);
0048
0049 G4bool operator==(const WLSPhotonDetHit& right) const;
0050
0051 inline void* operator new(size_t);
0052 inline void operator delete(void* aHit);
0053
0054 inline void SetArrivalPos(G4ThreeVector xyz) { fPosArrive = xyz; }
0055 inline G4ThreeVector GetArrivalPos() { return fPosArrive; }
0056
0057 inline void SetExitPos(G4ThreeVector xyz) { fPosExit = xyz; }
0058 inline G4ThreeVector GetExitPos() { return fPosExit; }
0059
0060 inline void SetArrivalTime(G4double t) { fArrivalTime = t; }
0061 inline G4double GetArrivalTime() { return fArrivalTime; }
0062
0063 inline void SetEnergy(G4double en) { fEnergy = en; }
0064 inline G4double GetEnergy() { return fEnergy; }
0065
0066 void Print() override;
0067
0068 private:
0069
0070 G4double fArrivalTime = 0.;
0071
0072 G4ThreeVector fPosArrive;
0073
0074 G4ThreeVector fPosExit;
0075
0076 G4double fEnergy = 0.;
0077 };
0078
0079
0080
0081
0082
0083 typedef G4THitsCollection<WLSPhotonDetHit> WLSPhotonDetHitsCollection;
0084
0085 extern G4ThreadLocal G4Allocator<WLSPhotonDetHit>* WLSPhotonDetHitAllocator;
0086
0087
0088
0089
0090
0091 inline void* WLSPhotonDetHit::operator new(size_t)
0092 {
0093 if (!WLSPhotonDetHitAllocator) WLSPhotonDetHitAllocator = new G4Allocator<WLSPhotonDetHit>;
0094 return (void*)WLSPhotonDetHitAllocator->MallocSingle();
0095 }
0096
0097 inline void WLSPhotonDetHit::operator delete(void* aHit)
0098 {
0099 WLSPhotonDetHitAllocator->FreeSingle((WLSPhotonDetHit*)aHit);
0100 }
0101
0102 #endif