Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-17 11:25:22

0001 #ifndef SimMuon_GEMDigitizer_GEMDigiModel_h
0002 #define SimMuon_GEMDigitizer_GEMDigiModel_h
0003 
0004 /** 
0005  *  \class GEMDigiModel
0006  *
0007  *  Base Class for the GEM strip response simulation 
0008  *  
0009  *  \author Sven Dildick
0010  *  \modified by Yechan Kang
0011  */
0012 
0013 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0014 #include "FWCore/Framework/interface/EventSetup.h"
0015 #include "DataFormats/GEMDigi/interface/GEMDigiCollection.h"
0016 #include "DataFormats/Common/interface/DetSet.h"
0017 #include "SimDataFormats/TrackingHit/interface/PSimHitContainer.h"
0018 #include "SimDataFormats/TrackerDigiSimLink/interface/StripDigiSimLink.h"
0019 #include "SimDataFormats/GEMDigiSimLink/interface/GEMDigiSimLink.h"
0020 #include "SimDataFormats/CrossingFrame/interface/MixCollection.h"
0021 
0022 #include <map>
0023 #include <set>
0024 
0025 namespace CLHEP {
0026   class HepRandomEngine;
0027 }
0028 
0029 class PSimHit;
0030 class GEMEtaPartition;
0031 class GEMGeometry;
0032 
0033 typedef std::set<std::pair<int, int> > Strips;
0034 typedef std::multimap<std::pair<unsigned int, int>, const PSimHit *, std::less<std::pair<unsigned int, int> > >
0035     DetectorHitMap;
0036 
0037 class GEMDigiModel {
0038 public:
0039   virtual ~GEMDigiModel() {}
0040 
0041   virtual void simulate(
0042       const GEMEtaPartition *, const edm::PSimHitContainer &, CLHEP::HepRandomEngine *, Strips &, DetectorHitMap &) = 0;
0043 
0044   void setGeometry(const GEMGeometry *geom) { geometry_ = geom; }
0045 
0046 protected:
0047   const GEMGeometry *geometry_;
0048   GEMDigiModel(const edm::ParameterSet &) {}
0049 };
0050 #endif