CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ME0DigiModel.h
Go to the documentation of this file.
1 #ifndef SimMuon_GEMDigitizer_ME0DigiModel_h
2 #define SimMuon_GEMDigitizer_ME0DigiModel_h
3 
20 
21 #include <map>
22 #include <set>
23 
24 namespace CLHEP {
25  class HepRandomEngine;
26 }
27 
28 class ME0EtaPartition;
29 class ME0Geometry;
30 class PSimHit;
31 
32 class ME0DigiModel {
33 public:
36 
37  virtual ~ME0DigiModel() {}
38 
40 
41  const ME0Geometry* getGeometry() { return geometry_; }
42 
43  virtual void simulateSignal(const ME0EtaPartition*, const edm::PSimHitContainer&, CLHEP::HepRandomEngine* engine) = 0;
44 
45  virtual void simulateNoise(const ME0EtaPartition*, CLHEP::HepRandomEngine* engine) = 0;
46 
47  virtual std::vector<std::pair<int, int> > simulateClustering(const ME0EtaPartition*,
48  const PSimHit*,
49  const int,
50  CLHEP::HepRandomEngine* engine) = 0;
51 
52  void fillDigis(int rollDetId, ME0DigiCollection&);
53 
54  virtual void setup() = 0;
55 
58 
59 protected:
61 
63 
64  std::set<std::pair<int, int> > strips_;
65 
67  void addLinks(unsigned int strip, int bx);
68  void addLinksWithPartId(unsigned int strip, int bx);
69 
70  // keeps track of which hits contribute to which channels
71  typedef std::multimap<std::pair<unsigned int, int>, const PSimHit*, std::less<std::pair<unsigned int, int> > >
73 
77 };
78 #endif
void fillDigis(int rollDetId, ME0DigiCollection &)
Definition: ME0DigiModel.cc:4
edm::DetSet< ME0DigiSimLink > ME0DigiSimLinks
Definition: ME0DigiModel.h:35
virtual ~ME0DigiModel()
Definition: ME0DigiModel.h:37
StripDigiSimLinks stripDigiSimLinks_
Definition: ME0DigiModel.h:75
void addLinks(unsigned int strip, int bx)
creates links from Digi to SimTrack
Definition: ME0DigiModel.cc:18
const ME0Geometry * geometry_
Definition: ME0DigiModel.h:62
virtual void setup()=0
void setGeometry(const ME0Geometry *geom)
Definition: ME0DigiModel.h:39
virtual void simulateNoise(const ME0EtaPartition *, CLHEP::HepRandomEngine *engine)=0
void addLinksWithPartId(unsigned int strip, int bx)
Definition: ME0DigiModel.cc:52
ME0DigiSimLinks theME0DigiSimLinks_
Definition: ME0DigiModel.h:76
std::set< std::pair< int, int > > strips_
Definition: ME0DigiModel.h:64
ME0DigiModel(const edm::ParameterSet &)
Definition: ME0DigiModel.h:60
const StripDigiSimLinks & stripDigiSimLinks() const
Definition: ME0DigiModel.h:56
const ME0DigiSimLinks & me0DigiSimLinks() const
Definition: ME0DigiModel.h:57
std::multimap< std::pair< unsigned int, int >, const PSimHit *, std::less< std::pair< unsigned int, int > > > DetectorHitMap
Definition: ME0DigiModel.h:72
const ME0Geometry * getGeometry()
Definition: ME0DigiModel.h:41
DetectorHitMap detectorHitMap_
Definition: ME0DigiModel.h:74
edm::DetSet< StripDigiSimLink > StripDigiSimLinks
Definition: ME0DigiModel.h:34
std::vector< PSimHit > PSimHitContainer
virtual std::vector< std::pair< int, int > > simulateClustering(const ME0EtaPartition *, const PSimHit *, const int, CLHEP::HepRandomEngine *engine)=0
virtual void simulateSignal(const ME0EtaPartition *, const edm::PSimHitContainer &, CLHEP::HepRandomEngine *engine)=0