clas12root
Loading...
Searching...
No Matches
rich.h
Go to the documentation of this file.
1
2/*
3 * File: rich.h
4 * Author: dglazier
5 *
6 * Created on March 02, 2023
7 */
8
9#ifndef CLAS12_RICH_H
10#define CLAS12_RICH_H
11
12#include "particle_detector.h"
13
14
15namespace clas12 {
16
17 class rich;
18
19 //sub class for RICH::Ring banks
20 class richring : public hipo::bank {
21
22
23 public:
24
25
26 richring()=default;
27
28 richring(hipo::schema aschema);
29
30 ~richring() override=default;
31
32 void setBankEntry(short i){ _index=i;} //faster for BankHist
33 //getter funtions for items in rich bank
34
35 int getId() const noexcept{
36 if(_index>-1)return getShort(_id_order,_index);
37 return 0;
38 }
39 int getHindex() const noexcept{
40 if(_index>-1)return getShort(_hindex_order,_index);
41 return 0;
42 }
43 int getPindex() const noexcept{
44 if(_index>-1)return getByte(_pindex_order,_index);
45 return 0;
46 }
47 int getSector() const noexcept{
48 if(_index>-1)return getByte(_sector_order,_index);
49 return 0;
50 }
51 int getPmt() const noexcept{
52 if(_index>-1)return getShort(_pmt_order,_index);
53 return 0;
54 }
55 int getAnode() const noexcept{
56 if(_index>-1)return getByte(_anode_order,_index);
57 return 0;
58 }
59 int getHypo() const noexcept{
60 if(_index>-1)return getInt(_hypo_order,_index);
61 return 0;
62 }
63 double getDtime() const noexcept{
64 if(_index>-1)return getFloat(_dtime_order,_index);
65 return 0;
66 }
67 double getEtaC() const noexcept{
68 if(_index>-1)return getFloat(_etaC_order,_index);
69 return 0;
70 }
71 double getProb() const noexcept{
72 if(_index>-1)return getFloat(_prob_order,_index);
73 return 0;
74 }
75 int getUse() const noexcept{
76 if(_index>-1)return getByte(_use_order,_index);
77 return 0;
78 }
79 double getDangle() const noexcept{
80 if(_index>-1)return getFloat(_dangle_order,_index);
81 return 0;
82 }
83 int getCompos() const noexcept{
84 if(_index>-1)return getInt(_compos_order,_index);
85 return 0;
86 }
87 int getLayers() const noexcept{
88 if(_index>-1)return getInt(_layers_order,_index);
89 return 0;
90 }
91
92
93 private:
94
95 friend clas12::rich;
96
97 void setIndex(short i){ _index=i;}
98
99
100 int _id_order=-1;
101 int _hindex_order=-1;
102 int _pindex_order=-1;
103 int _sector_order=-1;
104 int _pmt_order=-1;
105 int _anode_order=-1;
106 int _hypo_order=-1;
107 int _dtime_order=-1;
108 int _etaC_order=-1;
109 int _prob_order=-1;
110 int _use_order=-1;
111 int _dangle_order=-1;
112 int _layers_order=-1;
113 int _compos_order=-1;
114
115 int _index=-1;
116
117 };
118
120 using richring_uptr=std::unique_ptr<clas12::richring>;
122
123 class rich : public particle_detector {
124
125
126 public:
127
128
129 rich()=default;
130
131 rich(hipo::schema __schema,hipo::schema ringschema);
132 rich(hipo::schema __schema);
133
134 ~rich() override=default;
135
136
137 int getId() const noexcept{
138 if(_index>-1)return getByte(_id_order,_index);
139 return 0;
140 }
141 int getHindex() const noexcept{
142 if(_index>-1)return getShort(_hindex_order,_index);
143 return 0;
144 }
145 int getEmilay() const noexcept{
146 if(_index>-1)return getByte(_emilay_order,_index);
147 return 0;
148 }
149 int getEmico() const noexcept{
150 if(_index>-1)return getByte(_emico_order,_index);
151 return 0;
152 }
153 int getEnico() const noexcept{
154 if(_index>-1)return getByte(_enico_order,_index);
155 return 0;
156 }
157 int getEmqua() const noexcept{
158 if(_index>-1)return getShort(_emqua_order,_index);
159 return 0;
160 }
161 double getMchi2() const noexcept{
162 if(_index>-1)return getFloat(_mchi2_order,_index);
163 return 0;
164 }
165 double getMass() const noexcept{
166 if(_index>-1)return getFloat(_mass_order,_index);
167 return 0;
168 }
169 int getBest_PID() const noexcept{
170 if(_index>-1)return getShort(_best_PID_order,_index);
171 return 0;
172 }
173 double getRQ() const noexcept{
174 if(_index>-1)return getFloat(_RQ_order,_index);
175 return 0;
176 }
177 double getReQ() const noexcept{
178 if(_index>-1)return getFloat(_ReQ_order,_index);
179 return 0;
180 }
181 double getEl_logl() const noexcept{
182 if(_index>-1)return getFloat(_el_logl_order,_index);
183 return 0;
184 }
185 double getPi_logl() const noexcept{
186 if(_index>-1)return getFloat(_pi_logl_order,_index);
187 return 0;
188 }
189 double getK_logl() const noexcept{
190 if(_index>-1)return getFloat(_k_logl_order,_index);
191 return 0;
192 }
193 double getPr_logl() const noexcept{
194 if(_index>-1)return getFloat(_pr_logl_order,_index);
195 return 0;
196 }
197 double getBest_ch() const noexcept{
198 if(_index>-1)return getFloat(_best_ch_order,_index);
199 return 0;
200 }
201 double getBest_c2() const noexcept{
202 if(_index>-1)return getFloat(_best_c2_order,_index);
203 return 0;
204 }
205 double getBest_RL() const noexcept{
206 if(_index>-1)return getFloat(_best_RL_order,_index);
207 return 0;
208 }
209 double getBest_ntot() const noexcept{
210 if(_index>-1)return getFloat(_best_ntot_order,_index);
211 return 0;
212 }
213 double getBest_mass() const noexcept{
214 if(_index>-1)return getFloat(_best_mass_order,_index);
215 return 0;
216 }
217
218
219
220
221 int getDetector(int index) const noexcept final{ return clas12::RICH;} //if the bank does not have a detector entry, you may inherit and chenge this getter.
222 int getDetector() const noexcept final{ return clas12::RICH;}
223
224 //RICH::Ring has many entries for each REC::Particle
225 richring_ptr const ring(uint index=0) {_ring->setIndex(index);return _ring.get();}
226 uint getNRing() const {return _ring->getRows();}
227 private:
228
229 int _id_order=-1;
230 int _hindex_order=-1;
231 int _emilay_order=-1;
232 int _emico_order=-1;
233 int _enico_order=-1;
234 int _emqua_order=-1;
235 int _mchi2_order=-1;
236 int _mass_order=-1;
237 int _best_PID_order=-1;
238 int _RQ_order=-1;
239 int _ReQ_order=-1;
240 int _el_logl_order=-1;
241 int _pi_logl_order=-1;
242 int _k_logl_order=-1;
243 int _pr_logl_order=-1;
244 int _best_ch_order=-1;
245 int _best_c2_order=-1;
246 int _best_RL_order=-1;
247 int _best_ntot_order=-1;
248 int _best_mass_order=-1;
249
250 richring_uptr _ring;
251
252
253 }; //class rich
254
256 using rich_uptr=std::unique_ptr<clas12::rich>;
257
258}//namespace clas12
259
260#endif /* UTILS_H */
int _index
Definition particle_detector.h:83
Definition rich.h:123
int getBest_PID() const noexcept
Definition rich.h:169
double getK_logl() const noexcept
Definition rich.h:189
double getBest_mass() const noexcept
Definition rich.h:213
int getId() const noexcept
Definition rich.h:137
~rich() override=default
richring_ptr const ring(uint index=0)
Definition rich.h:225
double getPr_logl() const noexcept
Definition rich.h:193
double getReQ() const noexcept
Definition rich.h:177
int getEmico() const noexcept
Definition rich.h:149
int getEnico() const noexcept
Definition rich.h:153
int getDetector(int index) const noexcept final
Definition rich.h:221
int getDetector() const noexcept final
Definition rich.h:222
double getPi_logl() const noexcept
Definition rich.h:185
double getMchi2() const noexcept
Definition rich.h:161
double getBest_ntot() const noexcept
Definition rich.h:209
int getEmqua() const noexcept
Definition rich.h:157
double getBest_RL() const noexcept
Definition rich.h:205
int getEmilay() const noexcept
Definition rich.h:145
double getRQ() const noexcept
Definition rich.h:173
double getMass() const noexcept
Definition rich.h:165
double getBest_ch() const noexcept
Definition rich.h:197
rich()=default
int getHindex() const noexcept
Definition rich.h:141
double getBest_c2() const noexcept
Definition rich.h:201
double getEl_logl() const noexcept
Definition rich.h:181
uint getNRing() const
Definition rich.h:226
Definition rich.h:20
int getHypo() const noexcept
Definition rich.h:59
~richring() override=default
int getSector() const noexcept
Definition rich.h:47
double getDangle() const noexcept
Definition rich.h:79
int getPmt() const noexcept
Definition rich.h:51
double getDtime() const noexcept
Definition rich.h:63
int getCompos() const noexcept
Definition rich.h:83
int getId() const noexcept
Definition rich.h:35
int getHindex() const noexcept
Definition rich.h:39
double getProb() const noexcept
Definition rich.h:71
int getPindex() const noexcept
Definition rich.h:43
int getLayers() const noexcept
Definition rich.h:87
richring()=default
int getAnode() const noexcept
Definition rich.h:55
int getUse() const noexcept
Definition rich.h:75
double getEtaC() const noexcept
Definition rich.h:67
void setBankEntry(short i)
Definition rich.h:32
Definition calextras.cpp:10
clas12::rich * rich_ptr
Definition rich.h:255
std::unique_ptr< clas12::rich > rich_uptr
Definition rich.h:256
clas12::richring * richring_ptr
Definition rich.h:119
std::unique_ptr< clas12::richring > richring_uptr
Definition rich.h:120