00001 #ifndef EcalSimAlgos_EBHitResponse_h 00002 #define EcalSimAlgos_EBHitResponse_h 00003 00004 #include "SimCalorimetry/CaloSimAlgos/interface/CaloHitRespoNew.h" 00005 #include "CondFormats/EcalObjects/interface/EcalIntercalibConstantsMC.h" 00006 00015 class APDSimParameters ; 00016 00017 class EBHitResponse : public CaloHitRespoNew 00018 { 00019 public: 00020 00021 typedef CaloHitRespoNew CaloHitResponse ; 00022 00023 typedef std::vector<double> VecD ; 00024 00025 enum { kNOffsets = 2000 } ; 00026 00027 EBHitResponse( const CaloVSimParameterMap* parameterMap , 00028 const CaloVShape* shape , 00029 bool apdOnly , 00030 const APDSimParameters* apdPars , 00031 const CaloVShape* apdShape ) ; 00032 00033 virtual ~EBHitResponse() ; 00034 00035 virtual bool keepBlank() const { return false ; } 00036 00037 void setIntercal( const EcalIntercalibConstantsMC* ical ) ; 00038 00039 const VecD& offsets() const { return m_timeOffVec ; } 00040 00041 protected: 00042 00043 virtual void putAnalogSignal( const PCaloHit & inputHit ) ; 00044 00045 private: 00046 00047 const APDSimParameters* apdParameters() const ; 00048 const CaloVShape* apdShape() const ; 00049 00050 double apdSignalAmplitude( const PCaloHit& hit ) const ; 00051 00052 void findIntercalibConstant( const DetId& detId, 00053 double& icalconst ) const ; 00054 00055 const bool m_apdOnly ; 00056 const APDSimParameters* m_apdPars ; 00057 const CaloVShape* m_apdShape ; 00058 const EcalIntercalibConstantsMC* m_intercal ; 00059 00060 std::vector<double> m_timeOffVec ; 00061 }; 00062 #endif 00063 00064