#ifndef DESCSS_HumanPhantomHit_h #define DESCSS_HumanPhantomHit_h 1 #include "G4Allocator.hh" #include "G4THitsCollection.hh" #include "G4ThreeVector.hh" #include "G4VHit.hh" #include "tls.hh" // FOR MT class G4HumanPhantomHit : public G4VHit { public: G4HumanPhantomHit(); ~G4HumanPhantomHit(); G4HumanPhantomHit(const G4HumanPhantomHit&); const G4HumanPhantomHit& operator=(const G4HumanPhantomHit&); G4bool operator==(const G4HumanPhantomHit&) const; inline void* operator new(size_t); inline void operator delete(void*); void Draw(); void Print(); public: void SetBodyPartID(G4String bodyPartName) { bodyPartID = bodyPartName; }; void SetEdep(G4double de) { edep = de; }; G4String GetBodyPartID() { return bodyPartID; }; G4double GetEdep() { return edep; }; private: G4String bodyPartID; G4double edep; }; typedef G4THitsCollection G4HumanPhantomHitsCollection; extern G4ThreadLocal G4Allocator* G4HumanPhantomHitAllocator; inline void* G4HumanPhantomHit::operator new(size_t) { if (!G4HumanPhantomHitAllocator) G4HumanPhantomHitAllocator = new G4Allocator; return (void*)G4HumanPhantomHitAllocator->MallocSingle(); } inline void G4HumanPhantomHit::operator delete(void* aHit) { G4HumanPhantomHitAllocator->FreeSingle((G4HumanPhantomHit*)aHit); } #endif