8 #ifndef __RAT_DS_PMTInfo__
9 #define __RAT_DS_PMTInfo__
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) {
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());
38 models.push_back(_model);
39 modeltype.push_back(models.size() - 1);
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);
47 virtual Int_t GetPMTCount()
const {
return pos.size(); }
49 virtual TVector3 GetPosition(
int id)
const {
return pos.at(
id); }
50 virtual void SetPosition(
int id,
const TVector3& _pos) { pos.at(
id) = _pos; }
52 virtual TVector3 GetDirection(
int id)
const {
return dir.at(
id); }
53 virtual void SetDirection(
int id,
const TVector3& _dir) { dir.at(
id) = _dir; }
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; }
58 virtual int GetType(
int id)
const {
return type.at(
id); }
59 virtual void SetType(
int id,
int _type) { type.at(
id) = _type; }
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;
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; }
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; }
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);
76 if (which != models.end()) {
77 _modeltype = which - models.begin();
79 models.push_back(_model);
80 _modeltype = models.size() - 1;
82 modeltype.at(
id) = _modeltype;
85 virtual std::string GetModelName(
int _modeltype)
const {
return models.at(_modeltype); }
86 virtual int GetModelCount()
const {
return models.size(); }
88 virtual std::string GetModelNameByID(
int id)
const {
return GetModelName(GetModel(
id)); }
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;
Definition: PMTInfo.hh:19
Definition: CCCrossSecMessenger.hh:29