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

Ratpac-two: /home/docs/checkouts/readthedocs.org/user_builds/ratpac/checkouts/stable/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 const MCParticle *GetMCParticle(Int_t i) const { return &particle[i]; }
60  virtual int GetMCParticleCount() const { return particle.size(); }
61  virtual MCParticle *AddNewMCParticle() {
62  particle.resize(particle.size() + 1);
63  return &particle.back();
64  }
65  virtual void PruneMCParticle() { particle.resize(0); }
66 
68  virtual MCParticle *GetMCParent(Int_t i) { return &parent[i]; }
69  virtual int GetMCParentCount() const { return parent.size(); }
70  virtual MCParticle *AddNewMCParent() {
71  parent.resize(parent.size() + 1);
72  return &parent.back();
73  }
74  virtual void PruneMCParent() { parent.resize(0); }
75 
86  virtual MCTrack *GetMCTrack(int i) { return &track[i]; }
87  virtual int GetMCTrackCount() const { return track.size(); }
88  virtual MCTrack *AddNewMCTrack() {
89  track.resize(track.size() + 1);
90  return &track.back();
91  }
92  virtual void PruneMCTrack() { track.resize(0); };
93  virtual void PruneMCTrack(const std::string &particleName) {
94  ParticleNameEqualityFunctor pnef(particleName);
95  track.erase(std::remove_if(track.begin(), track.end(), pnef), track.end());
96  }
97 
99  virtual MCPMT *GetMCPMT(int i) { return &pmt[i]; }
100  virtual int GetMCPMTCount() const { return pmt.size(); }
101  virtual MCPMT *AddNewMCPMT() {
102  pmt.resize(pmt.size() + 1);
103  return &pmt.back();
104  };
105  virtual void PrunePMT() { pmt.resize(0); }
106 
108  virtual MCNestedTube *GetMCNestedTube(int i) { return &nt[i]; }
109  virtual int GetMCNestedTubeCount() const { return nt.size(); }
110  virtual MCNestedTube *AddNewMCNestedTube() {
111  nt.resize(nt.size() + 1);
112  return &nt.back();
113  };
114  virtual void PruneNestedTube() { nt.resize(0); }
115 
117  virtual int GetNumPE() const { return numPE; }
118  virtual void SetNumPE(int _numPE) { numPE = _numPE; }
119 
121  virtual int GetNumDark() const { return numDarkHits; }
122  virtual void SetNumDark(int _numDarkHits) { numDarkHits = _numDarkHits; }
123 
125  virtual MCSummary *GetMCSummary() {
126  if (summary.empty()) {
127  summary.resize(1);
128  }
129  return &summary[0];
130  }
131  virtual bool ExistMCSummary() const { return !summary.empty(); }
132  virtual void PruneMCSummary() { summary.resize(0); }
133 
134  ClassDef(MC, 1);
135 
136  protected:
137  int id;
138  int numPE;
139  int numDarkHits;
140  TTimeStamp utc;
141  std::vector<MCSummary> summary;
142  std::vector<MCParticle> particle;
143  std::vector<MCParticle> parent;
144  std::vector<MCTrack> track;
145  std::vector<MCPMT> pmt;
146  std::vector<MCNestedTube> nt;
147 };
148 
149 } // namespace DS
150 } // namespace RAT
151 
152 #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:121
virtual MCTrack * GetMCTrack(int i)
Definition: MC.hh:86
virtual MCParticle * GetMCParent(Int_t i)
Definition: MC.hh:68
virtual int GetNumPE() const
Definition: MC.hh:117
virtual TTimeStamp GetUTC() const
Definition: MC.hh:54
virtual MCNestedTube * GetMCNestedTube(int i)
Definition: MC.hh:108
virtual MCParticle * GetMCParticle(Int_t i)
Definition: MC.hh:58
virtual MCSummary * GetMCSummary()
Definition: MC.hh:125
virtual int GetID() const
Definition: MC.hh:50
virtual MCPMT * GetMCPMT(int i)
Definition: MC.hh:99
Definition: CCCrossSecMessenger.hh:29