// This code implementation is the intellectual property of // the RD44 GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // // $Id: G4THitsCollection.hh,v 2.1 1998/07/12 02:53:42 urbi Exp $ // GEANT4 tag $Name: geant4-00 $ // #ifndef G4THitsCollection_h #define G4THitsCollection_h 1 #include "G4VHitsCollection.hh" #include "G4Allocator.hh" #include "globals.hh" #include class G4HitsCollection : public G4VHitsCollection { public: G4HitsCollection(); G4HitsCollection(G4String detName,G4String colNam); virtual ~G4HitsCollection(); int operator==(const G4HitsCollection &right) const; protected: void* theCollection; }; extern G4Allocator anHCAllocator; template class G4THitsCollection : public G4HitsCollection { public: G4THitsCollection(); G4THitsCollection(G4String detName,G4String colNam); virtual ~G4THitsCollection(); int operator==(const G4THitsCollection &right) const; inline void *operator new(size_t); inline void operator delete(void* anHC); virtual void DrawAllHits(); virtual void PrintAllHits(); public: inline T* operator[](size_t i) { return (*((RWTPtrOrderedVector*)theCollection))[i]; } inline RWTPtrOrderedVector* GetVector() { return (RWTPtrOrderedVector*)theCollection; } inline int insert(T* aHit) { RWTPtrOrderedVector*theHitsCollection = (RWTPtrOrderedVector*)theCollection; theHitsCollection->insert(aHit); return theHitsCollection->entries(); } inline int entries() { RWTPtrOrderedVector*theHitsCollection = (RWTPtrOrderedVector*)theCollection; return theHitsCollection->entries(); } }; template inline void* G4THitsCollection::operator new(size_t) { void* anHC; anHC = (void*)anHCAllocator.MallocSingle(); return anHC; } template inline void G4THitsCollection::operator delete(void* anHC) { anHCAllocator.FreeSingle((G4HitsCollection*)anHC); } template G4THitsCollection::G4THitsCollection() { RWTPtrOrderedVector * theHitsCollection = new RWTPtrOrderedVector; theCollection = (void*)theHitsCollection; } template G4THitsCollection::G4THitsCollection(G4String detName,G4String colNam) : G4HitsCollection(detName,colNam) { RWTPtrOrderedVector * theHitsCollection = new RWTPtrOrderedVector; theCollection = (void*)theHitsCollection; } template G4THitsCollection::~G4THitsCollection() { RWTPtrOrderedVector * theHitsCollection = (RWTPtrOrderedVector*)theCollection; theHitsCollection->clearAndDestroy(); delete theHitsCollection; } template int G4THitsCollection::operator==(const G4THitsCollection &right) const { return (collectionName==right.collectionName); } template void G4THitsCollection::DrawAllHits() { RWTPtrOrderedVector * theHitsCollection = (RWTPtrOrderedVector*)theCollection; int n = theHitsCollection->entries(); for(int i=0;iDraw(); } } template void G4THitsCollection::PrintAllHits() { RWTPtrOrderedVector * theHitsCollection = (RWTPtrOrderedVector*)theCollection; int n = theHitsCollection->entries(); for(int i=0;iPrint(); } } #endif