Go to the documentation of this file.00001
00007 #ifndef SiStripDigitizer_h
00008 #define SiStripDigitizer_h
00009
00010 #include <map>
00011 #include <memory>
00012 #include <string>
00013 #include <vector>
00014
00015 #include "SimGeneral/MixingModule/interface/DigiAccumulatorMixMod.h"
00016 #include "FWCore/Framework/interface/ESHandle.h"
00017
00018 class TrackerTopology;
00019
00020 namespace CLHEP {
00021 class HepRandomEngine;
00022 }
00023
00024 namespace edm {
00025 class EDProducer;
00026 class Event;
00027 class EventSetup;
00028 class ParameterSet;
00029 template<typename T> class Handle;
00030 }
00031
00032 class MagneticField;
00033 class PileUpEventPrincipal;
00034 class PSimHit;
00035 class SiStripDigitizerAlgorithm;
00036 class StripGeomDetUnit;
00037 class TrackerGeometry;
00038
00039 class SiStripDigitizer : public DigiAccumulatorMixMod {
00040 public:
00041 explicit SiStripDigitizer(const edm::ParameterSet& conf, edm::EDProducer& mixMod);
00042
00043 virtual ~SiStripDigitizer();
00044
00045 virtual void initializeEvent(edm::Event const& e, edm::EventSetup const& c);
00046 virtual void accumulate(edm::Event const& e, edm::EventSetup const& c);
00047 virtual void accumulate(PileUpEventPrincipal const& e, edm::EventSetup const& c);
00048 virtual void finalizeEvent(edm::Event& e, edm::EventSetup const& c);
00049
00050 private:
00051 void accumulateStripHits(edm::Handle<std::vector<PSimHit> >, const TrackerTopology *tTopo);
00052
00053 typedef std::vector<std::string> vstring;
00054 typedef std::map<unsigned int, std::vector<std::pair<const PSimHit*, int> >,std::less<unsigned int> > simhit_map;
00055 typedef simhit_map::iterator simhit_map_iterator;
00056
00057 const std::string gainLabel;
00058 const std::string hitsProducer;
00059 const vstring trackerContainers;
00060 const std::string ZSDigi;
00061 const std::string SCDigi;
00062 const std::string VRDigi;
00063 const std::string PRDigi;
00064 const std::string geometryType;
00065 const bool useConfFromDB;
00066 const bool zeroSuppression;
00067
00068 std::unique_ptr<SiStripDigitizerAlgorithm> theDigiAlgo;
00069 std::map<uint32_t, std::vector<int> > theDetIdList;
00070 edm::ESHandle<TrackerGeometry> pDD;
00071 edm::ESHandle<MagneticField> pSetup;
00072 std::map<unsigned int, StripGeomDetUnit*> detectorUnits;
00073
00074 CLHEP::HepRandomEngine* rndEngine;
00075 };
00076
00077 #endif