Geant4 Cross Reference |
1 // 2 // ******************************************************************** 3 // * License and Disclaimer * 4 // * * 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. * 10 // * * 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitation of liability. * 17 // * * 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************************************** 25 // 26 // Authors: Susanna Guatelli and Francesco Romano 27 // susanna@uow.edu.au, francesco.romano@ct.infn.it 28 // 29 // Code based on the basic example B02 30 31 #ifndef SensitiveDetectorHit_h 32 #define SensitiveDetectorHit_h 1 33 34 #include "G4VHit.hh" 35 #include "G4THitsCollection.hh" 36 #include "G4Allocator.hh" 37 #include "G4ThreeVector.hh" 38 #include "tls.hh" // FOR MT 39 40 class SensitiveDetectorHit : public G4VHit 41 { 42 public: 43 SensitiveDetectorHit(); 44 SensitiveDetectorHit(const SensitiveDetectorHit&); 45 virtual ~SensitiveDetectorHit(); 46 47 // operators 48 const SensitiveDetectorHit& operator=(const SensitiveDetectorHit&); 49 G4bool operator==(const SensitiveDetectorHit&) const; 50 51 inline void* operator new(size_t); 52 inline void operator delete(void*); 53 54 // methods from base class 55 virtual void Draw(); 56 virtual void Print(); 57 58 // Set methods 59 void SetEdep (G4double de) { fEdep = de; }; 60 G4double GetEdep() const { return fEdep; }; 61 62 void SetPath(G4double len) { fPath = len; }; 63 G4double GetPath() const { return fPath; }; 64 65 private: 66 67 G4double fEdep; 68 G4double fPath; 69 }; 70 71 typedef G4THitsCollection<SensitiveDetectorHit> SensitiveDetectorHitsCollection; 72 73 extern G4ThreadLocal G4Allocator<SensitiveDetectorHit>* SensitiveDetectorHitAllocator; 74 75 inline void* SensitiveDetectorHit::operator new(size_t) 76 { 77 if(!SensitiveDetectorHitAllocator) 78 SensitiveDetectorHitAllocator = new G4Allocator<SensitiveDetectorHit>; 79 return (void *) SensitiveDetectorHitAllocator->MallocSingle(); 80 } 81 82 inline void SensitiveDetectorHit::operator delete(void *hit) 83 { 84 SensitiveDetectorHitAllocator->FreeSingle((SensitiveDetectorHit*) hit); 85 } 86 87 #endif 88