![]() |
![]() |
00001 #ifndef SiPixelDigitizer_h 00002 #define SiPixelDigitizer_h 00003 00016 #include <map> 00017 #include <memory> 00018 #include <string> 00019 #include <vector> 00020 00021 #include "SimGeneral/MixingModule/interface/DigiAccumulatorMixMod.h" 00022 #include "FWCore/Framework/interface/ESHandle.h" 00023 00024 namespace CLHEP { 00025 class HepRandomEngine; 00026 } 00027 00028 namespace edm { 00029 class EDProducer; 00030 class Event; 00031 class EventSetup; 00032 class ParameterSet; 00033 template<typename T> class Handle; 00034 } 00035 00036 class MagneticField; 00037 class PileUpEventPrincipal; 00038 class PixelGeomDetUnit; 00039 class PSimHit; 00040 class SiPixelDigitizerAlgorithm; 00041 class TrackerGeometry; 00042 00043 namespace cms { 00044 class SiPixelDigitizer : public DigiAccumulatorMixMod { 00045 public: 00046 00047 explicit SiPixelDigitizer(const edm::ParameterSet& conf, edm::EDProducer& mixMod); 00048 00049 virtual ~SiPixelDigitizer(); 00050 00051 virtual void initializeEvent(edm::Event const& e, edm::EventSetup const& c) override; 00052 virtual void accumulate(edm::Event const& e, edm::EventSetup const& c) override; 00053 virtual void accumulate(PileUpEventPrincipal const& e, edm::EventSetup const& c) override; 00054 virtual void finalizeEvent(edm::Event& e, edm::EventSetup const& c) override; 00055 00056 virtual void beginJob() {} 00057 private: 00058 void accumulatePixelHits(edm::Handle<std::vector<PSimHit> >); 00059 bool first; 00060 std::unique_ptr<SiPixelDigitizerAlgorithm> _pixeldigialgo; 00061 typedef std::vector<std::string> vstring; 00062 const std::string hitsProducer; 00063 const vstring trackerContainers; 00064 const std::string geometryType; 00065 edm::ESHandle<TrackerGeometry> pDD; 00066 edm::ESHandle<MagneticField> pSetup; 00067 std::map<unsigned int, PixelGeomDetUnit*> detectorUnits; 00068 CLHEP::HepRandomEngine* rndEngine; 00069 00070 // infrastructure to reject dead pixels as defined in db (added by F.Blekman) 00071 }; 00072 } 00073 00074 00075 #endif