CMS 3D CMS Logo

/afs/cern.ch/work/c/cnuttens/private/SiStripDev/DocumentationProduction/CMSSW_6_1_0/src/SimTracker/SiStripDigitizer/plugins/SiStripDigitizer.h

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