CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC4_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 #include "SimCalorimetry/HcalSimAlgos/interface/HcalTDCParameters.h"
00008 
00009 #include <map>
00010 #include <set>
00011 #include <vector>
00012 
00013 #include "CLHEP/Random/RandFlat.h"
00014 
00015 class HcalSiPM;
00016 
00017 class PCaloHitCompareTimes {
00018 public:
00019   bool operator()(const PCaloHit * a, 
00020                   const PCaloHit * b) const {
00021     return a->time()<b->time();
00022   }
00023 };
00024 
00025 class HcalSiPMHitResponse : public CaloHitResponse {
00026 
00027 public:
00028   HcalSiPMHitResponse(const CaloVSimParameterMap * parameterMap, 
00029                       const CaloShapes * shapes);
00030 
00031   virtual ~HcalSiPMHitResponse();
00032 
00033   typedef std::vector<unsigned int> photonTimeHist;
00034   typedef std::map< DetId, photonTimeHist > photonTimeMap;
00035 
00036   virtual void initializeHits();
00037 
00038   virtual void finalizeHits();
00039 
00040   virtual void add(const PCaloHit& hit);
00041 
00042   virtual void add(const CaloSamples& signal);
00043 
00044   virtual void run(MixCollection<PCaloHit> & hits);
00045 
00046   virtual void setRandomEngine(CLHEP::HepRandomEngine & engine);
00047 
00048   virtual CaloSamples makeBlankSignal(const DetId & detId) const;
00049 
00050   static double Y11TimePDF( double t );
00051 
00052  private:
00053   typedef std::multiset <PCaloHit, PCaloHitCompareTimes> SortedHitSet;
00054 
00055   virtual CaloSamples makeSiPMSignal(const DetId& id, const PCaloHit& hit, int & integral) const;
00056   virtual CaloSamples makeSiPMSignal(DetId const& id, photonTimeHist const& photons) const;
00057 
00058   double generatePhotonTime() const;
00059 
00060   HcalSiPM * theSiPM;
00061   double theRecoveryTime;
00062   int const TIMEMULT;
00063   float const Y11RANGE;
00064   float const Y11MAX;
00065   float const Y11TIMETORISE;
00066 
00067   photonTimeMap precisionTimedPhotons;
00068   HcalTDCParameters theTDCParams;
00069 
00070   CLHEP::RandFlat * theRndFlat;
00071 
00072 };
00073 
00074 #endif //HcalSimAlgos_HcalSiPMHitResponse_h