Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 /// \file radiobiology/include/Hit.hh 27 /// \brief Definition of the RadioBio::Hit cla 28 29 #ifndef RadiobiologyHit_h 30 #define RadiobiologyHit_h 1 31 32 #include "G4Allocator.hh" 33 #include "G4THitsCollection.hh" 34 #include "G4ThreeVector.hh" 35 #include "G4TouchableHandle.hh" 36 #include "G4VHit.hh" 37 #include "G4VPhysicalVolume.hh" 38 39 #include "tls.hh" 40 41 class G4ParticleDefinition; 42 43 namespace RadioBio 44 { 45 46 /// Detector hit class 47 /// 48 /// It defines data members to store the track 49 /// mean kinetic energy, energy deposit, initi 50 /// electronic energy, physical volume and vox 51 52 class Hit : public G4VHit 53 { 54 public: 55 Hit(); 56 Hit(const Hit&); 57 ~Hit() override = default; 58 59 // Operators 60 const Hit& operator=(const Hit&); 61 G4int operator==(const Hit&) const; 62 63 inline void* operator new(size_t); 64 inline void operator delete(void*); 65 66 // Methods from base class 67 void Draw() override; 68 void Print() override; 69 70 // Set methods 71 void SetTrackID(G4int track) { fTrackID = 72 void SetPartType(const G4ParticleDefinitio 73 void SetEkinMean(double EkinMean) { fEkinM 74 void SetDeltaE(double DeltaE) { fDeltaE = 75 void SetEinit(G4double e) { fEinit = e; } 76 void SetTrackLength(G4double x) { fTrackLe 77 void SetElectronEnergy(G4double elEnergy) 78 void SetPhysicalVolume(G4VPhysicalVolume* 79 void SetVoxelIndexes(const G4TouchableHand 80 81 // Get methods 82 G4int GetTrackID() const { return fTrackID 83 const G4ParticleDefinition* GetPartType() 84 G4double GetEkinMean() { return fEkinMean; 85 G4double GetDeltaE() { return fDeltaE; } 86 G4double GetEinit() const { return fEinit; 87 G4double GetTrackLength() const { return f 88 G4double GetElectronEnergy() const { retur 89 G4VPhysicalVolume* GetPhysicalVolume() con 90 G4int GetXindex() { return fxIndex; } 91 G4int GetYindex() { return fyIndex; } 92 G4int GetZindex() { return fzIndex; } 93 94 private: 95 // Variables 96 G4int fTrackID = -1; 97 const G4ParticleDefinition* fParticleType 98 G4double fEkinMean = 0.; 99 G4double fDeltaE = 0.; 100 G4double fEinit = 0.; 101 G4double fTrackLength = 0.; 102 G4double fElectronEnergy = 0.; 103 G4VPhysicalVolume* fPhysicalVolume = nullp 104 G4int fxIndex = -1; 105 G4int fyIndex = -1; 106 G4int fzIndex = -1; 107 }; 108 109 // Definition of a HitColletion 110 typedef G4THitsCollection<Hit> RadioBioHitsCol 111 112 // Definition of the Allocator 113 extern G4ThreadLocal G4Allocator<Hit>* RadioBi 114 115 inline void* Hit::operator new(size_t) 116 { 117 if (!RadioBioHitAllocator) RadioBioHitAlloca 118 return (void*)RadioBioHitAllocator->MallocSi 119 } 120 121 inline void Hit::operator delete(void* hit) 122 { 123 RadioBioHitAllocator->FreeSingle((Hit*)hit); 124 } 125 126 } // namespace RadioBio 127 128 #endif // RadioBioHit_h 129