CMS 3D CMS Logo

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