00001 #ifndef Forward_CastorSD_h 00002 #define Forward_CastorSD_h 00003 // -*- C++ -*- 00004 // 00005 // Package: Forward 00006 // Class : CastorSD 00007 // 00016 // 00017 // Original Author: 00018 // Created: Tue May 16 10:14:34 CEST 2006 00019 00020 // system include files 00021 00022 // user include files 00023 00024 #include "SimG4CMS/Calo/interface/CaloSD.h" 00025 #include "SimG4CMS/Forward/interface/CastorShowerLibrary.h" 00026 #include "SimG4CMS/Forward/interface/CastorNumberingScheme.h" 00027 #include "SimDataFormats/CaloHit/interface/CastorShowerEvent.h" 00028 #include "G4LogicalVolume.hh" 00029 00030 class CastorSD : public CaloSD { 00031 00032 public: 00033 00034 CastorSD(G4String, const DDCompactView &, SensitiveDetectorCatalog & clg, 00035 edm::ParameterSet const &, const SimTrackManager*); 00036 virtual ~CastorSD(); 00037 virtual double getEnergyDeposit(G4Step* ); 00038 virtual uint32_t setDetUnitId(G4Step* step); 00039 void setNumberingScheme(CastorNumberingScheme* scheme); 00040 00041 private: 00042 00043 void getFromLibrary(G4Step*); 00044 int setTrackID(G4Step*); 00045 uint32_t rotateUnitID(uint32_t, G4Track*, CastorShowerEvent); 00046 CastorNumberingScheme * numberingScheme; 00047 CastorShowerLibrary * showerLibrary; 00048 G4LogicalVolume *lvC3EF, *lvC3HF, *lvC4EF, *lvC4HF; 00049 G4LogicalVolume *lvCAST; // Pointer for CAST sensitive volume (SL trigger) 00050 00051 bool useShowerLibrary; 00052 double energyThresholdSL; 00053 double non_compensation_factor; 00054 00055 protected: 00056 00057 virtual void initRun(); 00058 00059 }; 00060 00061 #endif // CastorSD_h