00001
00002
00003
00004
00005 #ifndef LCDG4LumSD_h
00006 #define LCDG4LumSD_h 1
00007
00008 #include "LCDG4CalHit.hh"
00009
00010 #include "G4VSensitiveDetector.hh"
00011 #include <map>
00012 #include "G4LogicalVolume.hh"
00013
00014 class G4Step;
00015 class G4HCofThisEvent;
00016 class G4TouchableHistory;
00017
00018 class LCDG4LumSD : public G4VSensitiveDetector {
00019
00020 public:
00021 LCDG4LumSD(G4String name);
00022 ~LCDG4LumSD();
00023
00024 void Initialize(G4HCofThisEvent*HCE);
00025 G4bool ProcessHits(G4Step* aStep,G4TouchableHistory* ROhist);
00026 void EndOfEvent(G4HCofThisEvent*HCE);
00027 void clear();
00028 void DrawAll();
00029 void PrintAll();
00030
00031 public:
00032 G4int AddLogVolInfo
00033 (G4LogicalVolume* g4vxdlog,G4int startlayerNo,G4int sysNo,G4int be,G4int ns,
00034 G4int fsens);
00035 void SetSegmentation(G4int phiseg, G4int thetaseg, G4int barend)
00036 { m_phiseg[barend] = phiseg; m_thetaseg[barend] = thetaseg; }
00037
00038 private:
00039 LCDG4CalHitsCollection *m_lumCollection;
00040 std::map<G4LogicalVolume*,G4int> m_maplayer;
00041 std::map<G4LogicalVolume*,G4int> m_mapsys;
00042 std::map<G4LogicalVolume*,G4int> m_mapbe;
00043 std::map<G4LogicalVolume*,G4int> m_mapns;
00044 std::map<G4LogicalVolume*,G4int> m_mapsens;
00045 std::map<G4int,LCDG4CalHit*> m_cellhitb;
00046 std::map<G4int,LCDG4CalHit*> m_cellhite;
00047 G4int m_phiseg[2];
00048 G4int m_thetaseg[2];
00049
00050 };
00051
00052 #endif