00001 #ifndef SimG4CMS_ShowerLibraryProducer_HFChamberSD_h 00002 #define SimG4CMS_ShowerLibraryProducer_HFChamberSD_h 00003 00004 #include "SimG4Core/SensitiveDetector/interface/SensitiveCaloDetector.h" 00005 #include "SimG4Core/Application/interface/SimTrackManager.h" 00006 00007 #include "SimG4CMS/ShowerLibraryProducer/interface/HFShowerG4Hit.h" 00008 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00009 00010 #include "G4Track.hh" 00011 00012 #include <iostream> 00013 #include <fstream> 00014 #include <vector> 00015 00016 class G4Step; 00017 class G4HCofThisEvent; 00018 00019 class HFChamberSD : public SensitiveCaloDetector { 00020 00021 public: 00022 00023 HFChamberSD(std::string, const DDCompactView&, SensitiveDetectorCatalog&, 00024 edm::ParameterSet const &, const SimTrackManager*); 00025 virtual ~HFChamberSD(); 00026 00027 virtual void Initialize(G4HCofThisEvent*HCE); 00028 virtual G4bool ProcessHits(G4Step* aStep,G4TouchableHistory* ROhist); 00029 virtual void EndOfEvent(G4HCofThisEvent* HCE); 00030 virtual void clear(); 00031 virtual void DrawAll(); 00032 virtual void PrintAll(); 00033 00034 protected: 00035 00036 virtual void clearHits(); 00037 virtual uint32_t setDetUnitId(G4Step*); 00038 virtual void fillHits(edm::PCaloHitContainer&, std::string); 00039 00040 private: 00041 00042 std::string theName; 00043 const SimTrackManager* m_trackManager; 00044 00045 G4int theHCID; 00046 HFShowerG4HitsCollection* theHC; 00047 int theNSteps; 00048 }; 00049 00050 #endif 00051