CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC2_patch1/src/SimCalorimetry/HcalSimAlgos/interface/HcalSiPMHitResponse.h

Go to the documentation of this file.
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