00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef GLG4PMTSD_h
00017 #define GLG4PMTSD_h 1
00018
00019 #include "G4VSensitiveDetector.hh"
00020
00021 class G4Step;
00022 class G4HCofThisEvent;
00023 class G4TouchableHistory;
00024
00025 class GLG4PMTSD : public G4VSensitiveDetector
00026 {
00027 protected:
00028 int max_pmts;
00029 int pmt_no_offset;
00030 int my_id_pmt_size;
00031
00032
00033 public:
00034 G4int *hit_sum;
00035
00036
00037
00038 G4int n_pmt_hits;
00039 G4int n_hit_pmts;
00040
00041 public:
00042
00043 GLG4PMTSD(G4String name,
00044 int max_pmts=1920,
00045 int pmt_no_offset=0,
00046 int my_id_pmt_size= -1);
00047 virtual ~GLG4PMTSD();
00048
00049 virtual void Initialize(G4HCofThisEvent*HCE);
00050 virtual void EndOfEvent(G4HCofThisEvent*HCE);
00051 virtual void clear();
00052 virtual void DrawAll();
00053 virtual void PrintAll();
00054
00055 void SimpleHit( G4int ipmt,
00056 G4double time,
00057 G4double kineticEnergy,
00058 const G4ThreeVector & position,
00059 const G4ThreeVector & momentum,
00060 const G4ThreeVector & polarization,
00061 G4int iHitPhotonCount );
00062
00063 protected:
00064 virtual G4bool ProcessHits(G4Step*aStep,G4TouchableHistory*ROhist);
00065 };
00066
00067 #endif