CMS 3D CMS Logo

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 
39  void setGeometry(const ME0Geometry* geom) { geometry_ = geom; }
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 
56  const StripDigiSimLinks& stripDigiSimLinks() const { return stripDigiSimLinks_; }
57  const ME0DigiSimLinks& me0DigiSimLinks() const { return theME0DigiSimLinks_; }
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 
75  StripDigiSimLinks stripDigiSimLinks_;
76  ME0DigiSimLinks theME0DigiSimLinks_;
77 };
78 #endif
edm::DetSet< ME0DigiSimLink > ME0DigiSimLinks
Definition: ME0DigiModel.h:35
virtual ~ME0DigiModel()
Definition: ME0DigiModel.h:37
StripDigiSimLinks stripDigiSimLinks_
Definition: ME0DigiModel.h:75
const ME0Geometry * geometry_
Definition: ME0DigiModel.h:62
void setGeometry(const ME0Geometry *geom)
Definition: ME0DigiModel.h:39
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