00001 #ifndef ECALDDIGIPRODUCER_H 00002 #define ECALDDIGIPRODUCER_H 00003 00004 #include "FWCore/Framework/interface/EDProducer.h" 00005 #include "FWCore/Framework/interface/Event.h" 00006 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00007 #include "FWCore/Framework/interface/EventSetup.h" 00008 #include "SimCalorimetry/CaloSimAlgos/interface/CaloHitResponse.h" 00009 #include "SimCalorimetry/CaloSimAlgos/interface/CaloTDigitizer.h" 00010 #include "SimCalorimetry/EcalSimAlgos/interface/EcalTDigitizer.h" 00011 #include "SimGeneral/NoiseGenerators/interface/CorrelatedNoisifier.h" 00012 #include "SimCalorimetry/EcalSimAlgos/interface/EcalSimParameterMap.h" 00013 #include "SimCalorimetry/EcalSimAlgos/interface/EcalShape.h" 00014 #include "SimCalorimetry/EcalSimAlgos/interface/EcalCorrelatedNoiseMatrix.h" 00015 #include "SimCalorimetry/EcalSimAlgos/interface/ESShape.h" 00016 #include "DataFormats/EcalDigi/interface/EcalDigiCollections.h" 00017 #include "SimCalorimetry/EcalSimAlgos/interface/EcalCoder.h" 00018 #include "SimCalorimetry/EcalSimAlgos/interface/EcalElectronicsSim.h" 00019 #include "SimCalorimetry/EcalSimAlgos/interface/ESElectronicsSimFast.h" 00020 #include "SimCalorimetry/EcalSimAlgos/interface/ESElectronicsSim.h" 00021 #include "SimCalorimetry/EcalSimAlgos/interface/EcalDigitizerTraits.h" 00022 #include "SimCalorimetry/EcalSimAlgos/interface/ESFastTDigitizer.h" 00023 #include "Geometry/CaloGeometry/interface/CaloGeometry.h" 00024 00025 #include "DataFormats/Math/interface/Error.h" 00026 #include "CalibFormats/CaloObjects/interface/CaloSamples.h" 00027 00028 class EcalDigiProducer : public edm::EDProducer 00029 { 00030 public: 00031 00032 // The following is not yet used, but will be the primary 00033 // constructor when the parameter set system is available. 00034 // 00035 explicit EcalDigiProducer(const edm::ParameterSet& params); 00036 virtual ~EcalDigiProducer(); 00037 00039 virtual void produce(edm::Event& event, const edm::EventSetup& eventSetup); 00040 00041 private: 00042 00043 void checkGeometry(const edm::EventSetup & eventSetup); 00044 00045 void updateGeometry(); 00046 00047 void checkCalibrations(const edm::EventSetup & eventSetup); 00048 00050 typedef EcalTDigitizer<EBDigitizerTraits> EBDigitizer; 00051 typedef EcalTDigitizer<EEDigitizerTraits> EEDigitizer; 00052 typedef CaloTDigitizer<ESDigitizerTraits> ESDigitizer; 00053 00054 EBDigitizer * theBarrelDigitizer; 00055 EEDigitizer * theEndcapDigitizer; 00056 ESDigitizer * theESDigitizer; 00057 ESFastTDigitizer * theESDigitizerFast; 00058 00059 const EcalSimParameterMap * theParameterMap; 00060 const CaloVShape * theEcalShape; 00061 const ESShape * theESShape; 00062 00063 CaloHitResponse * theEcalResponse; 00064 CaloHitResponse * theESResponse; 00065 00066 CorrelatedNoisifier<EcalCorrMatrix> * theCorrNoise; 00067 EcalCorrelatedNoiseMatrix * theNoiseMatrix; 00068 00069 EcalElectronicsSim * theElectronicsSim; 00070 ESElectronicsSim * theESElectronicsSim; 00071 ESElectronicsSimFast * theESElectronicsSimFast; 00072 EcalCoder * theCoder; 00073 00074 const CaloGeometry * theGeometry; 00075 00076 std::string EBdigiCollection_; 00077 std::string EEdigiCollection_; 00078 std::string ESdigiCollection_; 00079 00080 std::string hitsProducer_; 00081 00082 double EBs25notCont; 00083 double EEs25notCont; 00084 00085 bool cosmicsPhase; 00086 double cosmicsShift; 00087 00088 bool doFast; 00089 }; 00090 00091 #endif