File indexing completed on 2026-09-20 08:31:09
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 ExTGTrackerHit_h
0030 #define ExTGTrackerHit_h 1
0031
0032 #include "G4Allocator.hh"
0033 #include "G4THitsCollection.hh"
0034 #include "G4ThreeVector.hh"
0035 #include "G4VHit.hh"
0036
0037
0038
0039 class ExTGTrackerHit : public G4VHit
0040 {
0041 public:
0042 ExTGTrackerHit();
0043 ~ExTGTrackerHit();
0044 ExTGTrackerHit(const ExTGTrackerHit&);
0045 const ExTGTrackerHit& operator=(const ExTGTrackerHit&);
0046 G4bool operator==(const ExTGTrackerHit&) const;
0047
0048 inline void* operator new(size_t);
0049 inline void operator delete(void*);
0050
0051 void Draw();
0052 void Print();
0053
0054 void SetTrackID(G4int track) { fTrackID = track; };
0055 void SetChamberNb(G4int chamb) { fChamberNb = chamb; };
0056 void SetEdep(G4double de) { fEdep = de; };
0057 void SetPos(G4ThreeVector xyz) { fPos = xyz; };
0058
0059 G4int GetTrackID() { return fTrackID; };
0060 G4int GetChamberNb() { return fChamberNb; };
0061 G4double GetEdep() { return fEdep; };
0062 G4ThreeVector GetPos() { return fPos; };
0063
0064 private:
0065 G4int fTrackID;
0066 G4int fChamberNb;
0067 G4double fEdep;
0068 G4ThreeVector fPos;
0069 };
0070
0071
0072
0073 typedef G4THitsCollection<ExTGTrackerHit> ExTGTrackerHitsCollection;
0074
0075 extern G4ThreadLocal G4Allocator<ExTGTrackerHit>* ExTGTrackerHitAllocator;
0076
0077
0078
0079 inline void* ExTGTrackerHit::operator new(size_t)
0080 {
0081 if (!ExTGTrackerHitAllocator) ExTGTrackerHitAllocator = new G4Allocator<ExTGTrackerHit>;
0082 return (void*)ExTGTrackerHitAllocator->MallocSingle();
0083 }
0084
0085
0086
0087 inline void ExTGTrackerHit::operator delete(void* hit)
0088 {
0089 ExTGTrackerHitAllocator->FreeSingle((ExTGTrackerHit*)hit);
0090 }
0091
0092
0093
0094 #endif