/home/docs/checkouts/readthedocs.org/user_builds/ratpac/checkouts/latest/src/ds/include/RAT/DS/MC.hh Source File

Ratpac-two: /home/docs/checkouts/readthedocs.org/user_builds/ratpac/checkouts/latest/src/ds/include/RAT/DS/MC.hh Source File
Ratpac-two
MC.hh
1 
13 #ifndef __RAT_DS_MC__
14 #define __RAT_DS_MC__
15 
16 #include <TObject.h>
17 #include <TTimeStamp.h>
18 
19 #include <RAT/DS/MCNestedTube.hh>
20 #include <RAT/DS/MCPMT.hh>
21 #include <RAT/DS/MCParticle.hh>
22 #include <RAT/DS/MCSummary.hh>
23 #include <RAT/DS/MCTrack.hh>
24 #include <algorithm>
25 #include <vector>
26 
27 namespace RAT {
28 namespace DS {
29 
30 class MC : public TObject {
31  public:
32  MC() : TObject() {}
33  virtual ~MC() {}
34 
41  public:
42  ParticleNameEqualityFunctor(std::string _name) : name(_name) {}
43  bool operator()(MCTrack &_track) { return _track.GetParticleName() == this->name; }
44 
45  private:
46  std::string name;
47  };
48 
50  virtual int GetID() const { return id; }
51  virtual void SetID(int _id) { id = _id; }
52 
54  virtual TTimeStamp GetUTC() const { return utc; }
55  virtual void SetUTC(const TTimeStamp &_utc) { utc = _utc; }
56 
58  virtual MCParticle *GetMCParticle(Int_t i) { return &particle[i]; }
59  virtual int GetMCParticleCount() const { return particle.size(); }
60  virtual MCParticle *AddNewMCParticle() {
61  particle.resize(particle.size() + 1);
62  return &particle.back();
63  }
64  virtual void PruneMCParticle() { particle.resize(0); }
65 
67  virtual MCParticle *GetMCParent(Int_t i) { return &parent[i]; }
68  virtual int GetMCParentCount() const { return parent.size(); }
69  virtual MCParticle *AddNewMCParent() {
70  parent.resize(parent.size() + 1);
71  return &parent.back();
72  }
73  virtual void PruneMCParent() { parent.resize(0); }
74 
85  virtual MCTrack *GetMCTrack(int i) { return &track[i]; }
86  virtual int GetMCTrackCount() const { return track.size(); }
87  virtual MCTrack *AddNewMCTrack() {
88  track.resize(track.size() + 1);
89  return &track.back();
90  }
91  virtual void PruneMCTrack() { track.resize(0); };
92  virtual void PruneMCTrack(const std::string &particleName) {
93  ParticleNameEqualityFunctor pnef(particleName);
94  track.erase(std::remove_if(track.begin(), track.end(), pnef), track.end());
95  }
96 
98  virtual MCPMT *GetMCPMT(int i) { return &pmt[i]; }
99  virtual int GetMCPMTCount() const { return pmt.size(); }
100  virtual MCPMT *AddNewMCPMT() {
101  pmt.resize(pmt.size() + 1);
102  return &pmt.back();
103  };
104  virtual void PrunePMT() { pmt.resize(0); }
105 
107  virtual MCNestedTube *GetMCNestedTube(int i) { return &nt[i]; }
108  virtual int GetMCNestedTubeCount() const { return nt.size(); }
109  virtual MCNestedTube *AddNewMCNestedTube() {
110  nt.resize(nt.size() + 1);
111  return &nt.back();
112  };
113  virtual void PruneNestedTube() { nt.resize(0); }
114 
116  virtual int GetNumPE() const { return numPE; }
117  virtual void SetNumPE(int _numPE) { numPE = _numPE; }
118 
120  virtual int GetNumDark() const { return numDarkHits; }
121  virtual void SetNumDark(int _numDarkHits) { numDarkHits = _numDarkHits; }
122 
124  virtual MCSummary *GetMCSummary() {
125  if (summary.empty()) {
126  summary.resize(1);
127  }
128  return &summary[0];
129  }
130  virtual bool ExistMCSummary() const { return !summary.empty(); }
131  virtual void PruneMCSummary() { summary.resize(0); }
132 
133  ClassDef(MC, 1);
134 
135  protected:
136  int id;
137  int numPE;
138  int numDarkHits;
139  TTimeStamp utc;
140  std::vector<MCSummary> summary;
141  std::vector<MCParticle> particle;
142  std::vector<MCParticle> parent;
143  std::vector<MCTrack> track;
144  std::vector<MCPMT> pmt;
145  std::vector<MCNestedTube> nt;
146 };
147 
148 } // namespace DS
149 } // namespace RAT
150 
151 #endif
Definition: MCNestedTube.hh:20
Definition: MCPMT.hh:21
Definition: MCParticle.hh:22
Definition: MCSummary.hh:25
Definition: MCTrack.hh:22
virtual const std::string & GetParticleName() const
Definition: MCTrack.hh:54
Definition: MC.hh:30
virtual int GetNumDark() const
Definition: MC.hh:120
virtual MCTrack * GetMCTrack(int i)
Definition: MC.hh:85
virtual MCParticle * GetMCParent(Int_t i)
Definition: MC.hh:67
virtual int GetNumPE() const
Definition: MC.hh:116
virtual TTimeStamp GetUTC() const
Definition: MC.hh:54
virtual MCNestedTube * GetMCNestedTube(int i)
Definition: MC.hh:107
virtual MCParticle * GetMCParticle(Int_t i)
Definition: MC.hh:58
virtual MCSummary * GetMCSummary()
Definition: MC.hh:124
virtual int GetID() const
Definition: MC.hh:50
virtual MCPMT * GetMCPMT(int i)
Definition: MC.hh:98
Definition: CCCrossSecMessenger.hh:29