00001 //---------------------------------------------------------------------------// 00002 // BOOST --- BESIII Object_Oriented Simulation Tool // 00003 //---------------------------------------------------------------------------// 00004 //Description: Track type hit class for BESIII MDC 00005 //Author: Yuan Ye(yuany@mail.ihep.ac.cn) 00006 //Created: 4 Dec, 2003 00007 //Modified: 00008 //Comment: 00009 //---------------------------------------------------------------------------// 00010 00011 #ifndef BesMdcHit_h 00012 #define BesMdcHit_h 1 00013 00014 #include "G4VHit.hh" 00015 #include "G4THitsCollection.hh" 00016 #include "G4Allocator.hh" 00017 #include "G4ThreeVector.hh" 00018 00019 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 00020 00021 class BesMdcHit : public G4VHit 00022 { 00023 public: 00024 00025 BesMdcHit(); 00026 ~BesMdcHit(); 00027 BesMdcHit(const BesMdcHit&); 00028 const BesMdcHit& operator=(const BesMdcHit&); 00029 int operator==(const BesMdcHit&) const; 00030 00031 inline void* operator new(size_t); 00032 inline void operator delete(void*); 00033 00034 void Draw(); 00035 void Print(); 00036 00037 public: 00038 void SetTrackID (G4int track) { trackID = track; }; 00039 void SetLayerNo (G4int layer) { layerNo = layer; }; 00040 void SetCellNo (G4int cell) { cellNo =cell;}; 00041 void SetEdep (G4double de) { edep = de; }; 00042 void SetPos (G4ThreeVector xyz){ pos = xyz; }; 00043 void SetDriftD (G4double distance){ driftD = distance;}; 00044 void SetDriftT (G4double time) { driftT = time;}; 00045 void SetGlobalT (G4double time) { globalT = time;}; 00046 void SetTheta (G4double angle) { theta = angle;}; 00047 void SetEnterAngle (G4double angle) { enterAngle = angle;}; 00048 void SetPosFlag (G4int flag) { posFlag = flag;}; 00049 00050 G4int GetTrackID() { return trackID; }; 00051 G4int GetLayerNo() { return layerNo; }; 00052 G4int GetCellNo() { return cellNo;}; 00053 G4double GetEdep() { return edep; }; 00054 G4ThreeVector GetPos() { return pos; }; 00055 G4double GetDriftD() { return driftD;}; 00056 G4double GetDriftT() { return driftT;}; 00057 G4double GetGlobalT() { return globalT;}; 00058 G4double GetTheta() { return theta;}; 00059 G4double GetEnterAngle() { return enterAngle;}; 00060 G4int GetPosFlag() { return posFlag;}; 00061 00062 private: 00063 G4int trackID; 00064 G4int layerNo; 00065 G4int cellNo; 00066 G4double edep; 00067 G4ThreeVector pos; 00068 G4double driftD; 00069 G4double driftT; 00070 G4double globalT; 00071 G4double theta; 00072 G4double enterAngle; 00073 G4int posFlag; 00074 }; 00075 00076 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 00077 00078 typedef G4THitsCollection<BesMdcHit> BesMdcHitsCollection; 00079 00080 extern G4Allocator<BesMdcHit> BesMdcHitAllocator; 00081 00082 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 00083 00084 inline void* BesMdcHit::operator new(size_t) 00085 { 00086 void *aHit; 00087 aHit = (void *) BesMdcHitAllocator.MallocSingle(); 00088 return aHit; 00089 } 00090 00091 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 00092 00093 inline void BesMdcHit::operator delete(void *aHit) 00094 { 00095 BesMdcHitAllocator.FreeSingle((BesMdcHit*) aHit); 00096 } 00097 00098 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 00099 00100 #endif 00101 00102