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 GEMDigitizer_GEMDigiModel_h
2 #define GEMDigitizer_GEMDigiModel_h
3 
19 
20 #include <map>
21 #include <set>
22 
23 namespace CLHEP {
24  class HepRandomEngine;
25 }
26 
27 class GEMEtaPartition;
28 class GEMGeometry;
29 class PSimHit;
30 
32 {
33 public:
34 
36 
37  virtual ~GEMDigiModel() {}
38 
40 
41  const GEMGeometry* getGeometry() {return geometry_;}
42 
43  virtual void simulateSignal(const GEMEtaPartition*, const edm::PSimHitContainer&, CLHEP::HepRandomEngine* engine) = 0;
44 
45  virtual void simulateNoise(const GEMEtaPartition*, CLHEP::HepRandomEngine* engine) = 0;
46 
47  virtual std::vector<std::pair<int,int> >
48  simulateClustering(const GEMEtaPartition*, const PSimHit*, const int, CLHEP::HepRandomEngine* engine) = 0;
49 
50  void fillDigis(int rollDetId, GEMDigiCollection&);
51 
52  virtual void setup() = 0;
53 
55 
56 protected:
57 
59 
61 
62  std::set< std::pair<int, int> > strips_;
63 
65  void addLinks(unsigned int strip,int bx);
66 
67  // keeps track of which hits contribute to which channels
68  typedef std::multimap<
69  std::pair<unsigned int, int>,
70  const PSimHit*,
71  std::less<std::pair<unsigned int, int> >
73 
76 };
77 #endif
void setGeometry(const GEMGeometry *geom)
Definition: GEMDigiModel.h:39
const GEMGeometry * getGeometry()
Definition: GEMDigiModel.h:41
virtual void simulateNoise(const GEMEtaPartition *, CLHEP::HepRandomEngine *engine)=0
virtual void simulateSignal(const GEMEtaPartition *, const edm::PSimHitContainer &, CLHEP::HepRandomEngine *engine)=0
const StripDigiSimLinks & stripDigiSimLinks() const
Definition: GEMDigiModel.h:54
virtual void setup()=0
void addLinks(unsigned int strip, int bx)
creates links from Digi to SimTrack
Definition: GEMDigiModel.cc:20
GEMDigiModel(const edm::ParameterSet &)
Definition: GEMDigiModel.h:58
virtual std::vector< std::pair< int, int > > simulateClustering(const GEMEtaPartition *, const PSimHit *, const int, CLHEP::HepRandomEngine *engine)=0
const GEMGeometry * geometry_
Definition: GEMDigiModel.h:60
virtual ~GEMDigiModel()
Definition: GEMDigiModel.h:37
std::set< std::pair< int, int > > strips_
Definition: GEMDigiModel.h:62
void fillDigis(int rollDetId, GEMDigiCollection &)
Definition: GEMDigiModel.cc:5
DetectorHitMap detectorHitMap_
Definition: GEMDigiModel.h:74
std::vector< PSimHit > PSimHitContainer
StripDigiSimLinks stripDigiSimLinks_
Definition: GEMDigiModel.h:75
std::multimap< std::pair< unsigned int, int >, const PSimHit *, std::less< std::pair< unsigned int, int > > > DetectorHitMap
Definition: GEMDigiModel.h:72
edm::DetSet< StripDigiSimLink > StripDigiSimLinks
Definition: GEMDigiModel.h:35