00001 #ifndef ECALTBDIGIPRODUCER_H 00002 #define ECALTBDIGIPRODUCER_H 00003 00004 #include "SimCalorimetry/EcalSimProducers/interface/EcalDigiProducer.h" 00005 #include "Geometry/CaloTopology/interface/EcalTrigTowerConstituentsMap.h" 00006 #include "SimCalorimetry/EcalTestBeamAlgos/interface/EcalTBReadout.h" 00007 #include "RecoTBCalo/EcalTBTDCReconstructor/interface/EcalTBTDCRecInfoAlgo.h" 00008 #include "TBDataFormats/EcalTBObjects/interface/EcalTBTDCRawInfo.h" 00009 00010 class EcalTBDigiProducer : public EcalDigiProducer 00011 { 00012 public: 00013 00014 EcalTBDigiProducer( const edm::ParameterSet& params ) ; 00015 virtual ~EcalTBDigiProducer() ; 00016 00018 virtual void produce( edm::Event& event , 00019 const edm::EventSetup& eventSetup ) ; 00020 00021 virtual void cacheEBDigis( const EBDigiCollection* ebDigiPtr ) const ; 00022 virtual void cacheEEDigis( const EEDigiCollection* eeDigiPtr ) const ; 00023 00024 private: 00025 00026 void setPhaseShift( const DetId& detId ) ; 00027 00028 void fillTBTDCRawInfo( EcalTBTDCRawInfo& theTBTDCRawInfo ) ; 00029 00030 const EcalTrigTowerConstituentsMap m_theTTmap ; 00031 EcalTBReadout* m_theTBReadout ; 00032 00033 std::string m_ecalTBInfoLabel ; 00034 std::string m_EBdigiFinalTag ; 00035 std::string m_EBdigiTempTag ; 00036 00037 bool m_doPhaseShift ; 00038 double m_thisPhaseShift ; 00039 00040 bool m_doReadout ; 00041 00042 std::vector<EcalTBTDCRecInfoAlgo::EcalTBTDCRanges> m_tdcRanges ; 00043 bool m_use2004OffsetConvention ; 00044 00045 double m_tunePhaseShift ; 00046 00047 mutable std::auto_ptr<EBDigiCollection> m_ebDigis ; 00048 mutable std::auto_ptr<EEDigiCollection> m_eeDigis ; 00049 }; 00050 00051 #endif