CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/SimTracker/SiStripDigitizer/plugins/SiStripDigitizer.h

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