![]() |
![]() |
00001 // -*- C++ -*- 00002 #ifndef HcalSimAlgos_HcalSiPMHitResponse_h 00003 #define HcalSimAlgos_HcalSiPMHitResponse_h 00004 00005 #include "SimCalorimetry/CaloSimAlgos/interface/CaloHitResponse.h" 00006 #include "SimCalorimetry/HcalSimAlgos/interface/HcalSiPMRecovery.h" 00007 00008 #include <map> 00009 #include <set> 00010 00011 class HcalSiPM; 00012 00013 class PCaloHitCompareTimes { 00014 public: 00015 bool operator()(const PCaloHit * a, 00016 const PCaloHit * b) const { 00017 return a->time()<b->time(); 00018 } 00019 }; 00020 00021 class HcalSiPMHitResponse : public CaloHitResponse { 00022 00023 public: 00024 HcalSiPMHitResponse(const CaloVSimParameterMap * parameterMap, 00025 const CaloShapes * shapes); 00026 00027 virtual ~HcalSiPMHitResponse(); 00028 00029 virtual void initializeHits(); 00030 00031 virtual void finalizeHits(); 00032 00033 virtual void add(const PCaloHit& hit); 00034 00035 using CaloHitResponse::add; 00036 00037 virtual void run(MixCollection<PCaloHit> & hits); 00038 00039 virtual void setRandomEngine(CLHEP::HepRandomEngine & engine); 00040 00041 private: 00042 typedef std::multiset <PCaloHit, PCaloHitCompareTimes> SortedHitSet; 00043 00044 virtual CaloSamples makeSiPMSignal(const DetId& id, const PCaloHit& hit, int & integral) const; 00045 00046 HcalSiPM * theSiPM; 00047 double theRecoveryTime; 00048 00049 std::map< DetId, HcalSiPMRecovery > pixelHistory; 00050 }; 00051 00052 #endif //HcalSimAlgos_HcalSiPMHitResponse_h