#ifndef Hit_h #define Hit_h 1 #include "G4VHit.hh" #include "G4THitsCollection.hh" #include "G4Allocator.hh" #include "G4ThreeVector.hh" #include "G4Step.hh" #include "G4Track.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... class Hit : public G4VHit { public: Hit(); ~Hit(); Hit(const Hit&); const Hit& operator=(const Hit&); int operator==(const Hit&) const; inline void* operator new(size_t); inline void operator delete(void*); void Draw(); void Print(); private: G4double edep; //New code: G4ThreeVector pos; G4double time; G4int pmt; G4String particle; G4int trackid; G4int parentid; public: void SetEdep (G4double de) { edep = de; }; G4double GetEdep() { return edep; }; //New code: inline void SetPos(G4ThreeVector xyz) { pos = xyz; }; inline G4ThreeVector GetPos() const { return pos; }; inline void SetTime(G4double t) { time = t; }; inline G4double GetTime() const { return time; }; inline void SetPMT(G4int p) { pmt = p; }; inline G4int GetPMT() const { return pmt; }; inline void SetParticle(G4String part) { particle = part; }; inline G4String GetParticle() const { return particle; }; inline void SetTrackID(G4int TrackID) { trackid = TrackID; }; inline G4int GetTrackID() const { return trackid; }; inline void SetParentID(G4int ParentID) { parentid = ParentID; }; inline G4int GetParentID() const { return parentid; }; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... typedef G4THitsCollection HitsCollection; extern G4Allocator HitAllocator; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... inline void* Hit::operator new(size_t) { void* aHit; aHit = (void*) HitAllocator.MallocSingle(); return aHit; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... inline void Hit::operator delete(void* aHit) { HitAllocator.FreeSingle((Hit*) aHit); } #endif