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

Ratpac-two: /home/docs/checkouts/readthedocs.org/user_builds/ratpac/checkouts/latest/src/ds/include/RAT/DS/PMTInfo.hh Source File
Ratpac-two
PMTInfo.hh
1 
8 #ifndef __RAT_DS_PMTInfo__
9 #define __RAT_DS_PMTInfo__
10 
11 #include <TObject.h>
12 #include <TVector3.h>
13 
14 #include <algorithm>
15 
16 namespace RAT {
17 namespace DS {
18 
19 class PMTInfo : public TObject {
20  public:
21  PMTInfo() : TObject() {}
22  virtual ~PMTInfo() {}
23 
24  virtual void AddPMT(const TVector3& _pos, const TVector3& _dir, const int _type, const int _ch,
25  const std::string _model, const double _individual_efficiency_corr,
26  const double _individual_noise_rate, const double _individual_afterpulse_fraction) {
27  pos.push_back(_pos);
28  dir.push_back(_dir);
29  type.push_back(_type);
30  individual_efficiency_corr.push_back(_individual_efficiency_corr);
31  individual_noise_rate.push_back(_individual_noise_rate);
32  individual_afterpulse_fraction.push_back(_individual_afterpulse_fraction);
33  channel_num.push_back(_ch);
34  std::vector<std::string>::iterator which = std::find(models.begin(), models.end(), _model);
35  if (which != models.end()) {
36  modeltype.push_back(which - models.begin());
37  } else {
38  models.push_back(_model);
39  modeltype.push_back(models.size() - 1);
40  }
41  }
42 
43  virtual void AddPMT(const TVector3& _pos, const TVector3& _dir, const int _type) {
44  AddPMT(_pos, _dir, _type, -1, "", 1.0, 0.0, 0.0);
45  }
46 
47  virtual Int_t GetPMTCount() const { return pos.size(); }
48 
49  virtual TVector3 GetPosition(int id) const { return pos.at(id); }
50  virtual void SetPosition(int id, const TVector3& _pos) { pos.at(id) = _pos; }
51 
52  virtual TVector3 GetDirection(int id) const { return dir.at(id); }
53  virtual void SetDirection(int id, const TVector3& _dir) { dir.at(id) = _dir; }
54 
55  virtual int GetChannelNumber(int id) const { return channel_num.at(id); }
56  virtual void SetChannelNumber(int id, int _ch) { channel_num.at(id) = _ch; }
57 
58  virtual int GetType(int id) const { return type.at(id); }
59  virtual void SetType(int id, int _type) { type.at(id) = _type; }
60 
61  virtual double GetEfficiencyCorr(int id) const { return individual_efficiency_corr.at(id); }
62  virtual void SetEfficiencyCorr(int id, double _individual_efficiency_corr) {
63  individual_efficiency_corr.at(id) = _individual_efficiency_corr;
64  }
65 
66  virtual double GetNoiseRate(int id) const { return individual_noise_rate.at(id); }
67  virtual void SetNoiseRate(int id, double _rate) { individual_noise_rate.at(id) = _rate; }
68 
69  virtual double GetAfterPulseFraction(int id) const { return individual_afterpulse_fraction.at(id); }
70  virtual void SetAfterPulseFraction(int id, double _frac) { individual_afterpulse_fraction.at(id) = _frac; }
71 
72  virtual int GetModel(int id) const { return modeltype.at(id); }
73  virtual int SetModel(int id, std::string _model) {
74  std::vector<std::string>::iterator which = std::find(models.begin(), models.end(), _model);
75  int _modeltype;
76  if (which != models.end()) {
77  _modeltype = which - models.begin();
78  } else {
79  models.push_back(_model);
80  _modeltype = models.size() - 1;
81  }
82  modeltype.at(id) = _modeltype;
83  return _modeltype;
84  }
85  virtual std::string GetModelName(int _modeltype) const { return models.at(_modeltype); }
86  virtual int GetModelCount() const { return models.size(); }
87 
88  virtual std::string GetModelNameByID(int id) const { return GetModelName(GetModel(id)); }
89 
90  ClassDef(PMTInfo, 3);
91 
92  protected:
93  std::vector<TVector3> pos;
94  std::vector<TVector3> dir;
95  std::vector<int> type;
96  std::vector<int> channel_num;
97  std::vector<int> modeltype;
98  std::vector<std::string> models;
99  std::vector<double> individual_efficiency_corr;
100  std::vector<double> individual_noise_rate;
101  std::vector<double> individual_afterpulse_fraction;
102 };
103 
104 } // namespace DS
105 } // namespace RAT
106 
107 #endif
Definition: PMTInfo.hh:19
Definition: CCCrossSecMessenger.hh:29