MiniballSort
Loading...
Searching...
No Matches
MiniballEvts.hh
Go to the documentation of this file.
1#ifndef __MINIBALLEVTS_HH
2#define __MINIBALLEVTS_HH
3
4#include <iostream>
5#include <vector>
6#include <string>
7#include <memory>
8
9#include "TVector2.h"
10#include "TVector3.h"
11#include "TObject.h"
12
13class GammaRayEvt : public TObject {
14
15public:
16
17 // setup functions
20
21 // Event set functions
22 inline void SetEnergy( float e ){ energy = e; };
23 inline void SetSegmentSumEnergy( float e ){ seg_sum_energy = e; };
24 inline void SetSegmentMaxEnergy( float e ){ seg_max_energy = e; };
25 inline void SetSegmentMultiplicity( unsigned int m ){ seg_mult = m; };
26 inline void SetAddbackMultiplicity( unsigned int m ){ ab_mult = m; };
27 inline void SetTime( unsigned long long t ){ time = t; };
28 inline void SetCluster( unsigned char c ){ clu = c; };
29 inline void SetCrystal( unsigned char c ){ cry = c; };
30 inline void SetSegment( unsigned char s ){ seg = s; };
31
32 // Return functions
33 inline float GetEnergy(){ return energy; };
34 inline float GetSegmentSumEnergy(){ return seg_sum_energy; };
35 inline float GetSegmentMaxEnergy(){ return seg_max_energy; };
36 inline unsigned int GetSegmentMultiplicity(){ return seg_mult; };
37 inline unsigned int GetAddbackMultiplicity(){ return ab_mult; };
38 inline unsigned long long GetTime(){ return time; };
39 inline unsigned char GetCluster(){ return clu; };
40 inline unsigned char GetCrystal(){ return cry; };
41 inline unsigned char GetSegment(){ return seg; };
42
43private:
44
45 // variables for gamma-ray event
46 float energy;
49 unsigned long long time;
50 unsigned char seg_mult;
51 unsigned char ab_mult;
52 unsigned char clu;
53 unsigned char cry;
54 unsigned char seg;
55
56
57 ClassDef( GammaRayEvt, 2 )
58
59};
60
62
63public:
64
65 // setup functions
68
69private:
70
71 ClassDef( GammaRayAddbackEvt, 2 )
72
73};
74
75class ParticleEvt : public TObject {
76
77public:
78
79 // setup functions
82
83 // Event set functions
84 inline void SetEnergyP( float e ){ penergy = e; };
85 inline void SetEnergyN( float e ){ nenergy = e; };
86 inline void SetEnergyPad( float e ){ padenergy = e; };
87 inline void SetTimeP( unsigned long long t ){ ptime = t; };
88 inline void SetTimeN( unsigned long long t ){ ntime = t; };
89 inline void SetTimePad( unsigned long long t ){ rtime = t; };
90 inline void SetDetector( unsigned char d ){ det = d; };
91 inline void SetSector( unsigned char s ){ sec = s; };
92 inline void SetStripP( unsigned char s ){ pstrip = s; };
93 inline void SetStripN( unsigned char s ){ nstrip = s; };
94
95 // Return functions
96 inline float GetEnergy(){ return GetEnergyP() + GetEnergyPad(); };
97 inline float GetDeltaEnergy(){ return GetEnergyP(); };
98 inline float GetRestEnergy(){ return GetEnergyPad(); };
99 inline unsigned long long GetTime(){ return GetTimeP(); };
100 inline float GetEnergyP(){ return penergy; };
101 inline float GetEnergyN(){ return nenergy; };
102 inline float GetEnergyPad(){ return padenergy; };
103 inline unsigned long long GetTimeP(){ return ptime; };
104 inline unsigned long long GetTimeN(){ return ntime; };
105 inline unsigned long long GetTimePad(){ return rtime; };
106 inline unsigned char GetDetector(){ return det; };
107 inline unsigned char GetSector(){ return sec; };
108 inline unsigned char GetStripP(){ return pstrip; };
109 inline unsigned char GetStripN(){ return nstrip; };
110
111
112private:
113
114 // variables for particle event
115 float penergy;
116 float nenergy;
117 float padenergy;
118 unsigned long long ptime;
119 unsigned long long ntime;
120 unsigned long long rtime;
121 unsigned char det;
122 unsigned char sec;
123 unsigned char pstrip;
124 unsigned char nstrip;
125
126
127 ClassDef( ParticleEvt, 2 )
128
129};
130
131class BeamDumpEvt : public TObject {
132
133public:
134
135 // setup functions
138
139 // Event set functions
140 inline void SetEnergy( float e ){ energy = e; };
141 inline void SetTime( unsigned long long t ){ time = t; };
142 inline void SetDetector( unsigned char d ){ det = d; };
143
144 // Return functions
145 inline float GetEnergy(){ return energy; };
146 inline unsigned long long GetTime(){ return time; };
147 inline unsigned char GetDetector(){ return det; };
148
149private:
150
151 // variables for beam-dump event
152 float energy;
153 unsigned long long time;
154 unsigned char det;
155
156
157 ClassDef( BeamDumpEvt, 1 )
158
159};
160
161
162class SpedeEvt : public TObject {
163
164public:
165
166 // setup functions
169
170 // Event set functions
171 inline void SetEnergy( float e ){ energy = e; };
172 inline void SetTime( unsigned long long t ){ time = t; };
173 inline void SetSegment( unsigned char s ){ seg = s; };
174
175 // Return functions
176 inline float GetEnergy(){ return energy; };
177 inline unsigned long long GetTime(){ return time; };
178 inline unsigned char GetSegment(){ return seg; };
179
180private:
181
182 // variables for Spede event
183 float energy;
184 unsigned long long time;
185 unsigned char seg;
186
187
188 ClassDef( SpedeEvt, 1 )
189
190};
191
192class IonChamberEvt : public TObject {
193
194public:
195
196 // setup functions
199
200 inline void AddIonChamber( float myenergy, unsigned char myid ){
201 energy.push_back( myenergy );
202 id.push_back( myid );
203 };
204
205 void ClearEvt();
206
207 inline void SetdETime( unsigned long t ){ detime = t; };
208 inline void SetETime( unsigned long t ){ etime = t; };
209 inline void SetEnergies( std::vector<float> x ){ energy = x; };
210 inline void SetIDs( std::vector<unsigned char> x ){ id = x; };
211
212 inline unsigned long GetTime(){ return detime; };
213 inline unsigned long GetdETime(){ return detime; };
214 inline unsigned long GetETime(){ return etime; };
215 inline std::vector<float> GetEnergies(){ return energy; };
216 inline std::vector<unsigned char> GetIDs(){ return id; };
217
218 inline float GetEnergy( unsigned char i ){
219 if( i < energy.size() ) return energy.at(i);
220 else return 0;
221 };
222
223 inline float GetEnergyLoss( unsigned char start = 0, unsigned char stop = 0 ){
224 float total = 0;
225 for( unsigned int j = 0; j < energy.size(); ++j )
226 if( GetID(j) >= start && GetID(j) <= stop )
227 total += energy.at(j);
228 return total;
229 };
230
231 inline float GetEnergyRest( unsigned char start = 1, unsigned char stop = 1 ){
232 float total = 0;
233 for( unsigned int j = 0; j < energy.size(); ++j )
234 if( GetID(j) >= start && GetID(j) <= stop )
235 total += energy.at(j);
236 return total;
237 };
238
239 inline float GetEnergyTotal( unsigned char start = 0, unsigned char stop = 1 ){
240 float total = 0;
241 for( unsigned int j = 0; j < energy.size(); ++j )
242 if( GetID(j) >= start && GetID(j) <= stop )
243 total += energy.at(j);
244 return total;
245 };
246
247 inline int GetID( unsigned char i ){
248 if( i < id.size() ) return id.at(i);
249 else return -1;
250 };
251
252private:
253
254 std::vector<float> energy;
255 std::vector<unsigned char> id;
256 unsigned long detime;
257 unsigned long etime;
258
259 ClassDef( IonChamberEvt, 1 )
260
261};
262
263
264class MiniballEvts : public TObject {
265
266public:
267
268 // setup functions
271
272 void AddEvt( std::shared_ptr<GammaRayEvt> event );
273 void AddEvt( std::shared_ptr<GammaRayAddbackEvt> event );
274 void AddEvt( std::shared_ptr<ParticleEvt> event );
275 void AddEvt( std::shared_ptr<BeamDumpEvt> event );
276 void AddEvt( std::shared_ptr<SpedeEvt> event );
277 void AddEvt( std::shared_ptr<IonChamberEvt> event );
278
279 inline unsigned int GetGammaRayMultiplicity(){ return gamma_event.size(); };
280 inline unsigned int GetGammaRayAddbackMultiplicity(){ return gamma_ab_event.size(); };
281 inline unsigned int GetParticleMultiplicity(){ return particle_event.size(); };
282 inline unsigned int GetBeamDumpMultiplicity(){ return bd_event.size(); };
283 inline unsigned int GetSpedeMultiplicity(){ return spede_event.size(); };
284 inline unsigned int GetIonChamberMultiplicity(){ return ic_event.size(); };
285
286 inline std::shared_ptr<GammaRayEvt> GetGammaRayEvt( unsigned int i ){
287 if( i < gamma_event.size() ) return std::make_shared<GammaRayEvt>( gamma_event.at(i) );
288 else return nullptr;
289 };
290 inline std::shared_ptr<GammaRayAddbackEvt> GetGammaRayAddbackEvt( unsigned int i ){
291 if( i < gamma_ab_event.size() ) return std::make_shared<GammaRayAddbackEvt>( gamma_ab_event.at(i) );
292 else return nullptr;
293 };
294 inline std::shared_ptr<ParticleEvt> GetParticleEvt( unsigned int i ){
295 if( i < particle_event.size() ) return std::make_shared<ParticleEvt>( particle_event.at(i) );
296 else return nullptr;
297 };
298 inline std::shared_ptr<BeamDumpEvt> GetBeamDumpEvt( unsigned int i ){
299 if( i < bd_event.size() ) return std::make_shared<BeamDumpEvt>( bd_event.at(i) );
300 else return nullptr;
301 };
302 inline std::shared_ptr<SpedeEvt> GetSpedeEvt( unsigned int i ){
303 if( i < spede_event.size() ) return std::make_shared<SpedeEvt>( spede_event.at(i) );
304 else return nullptr;
305 };
306 inline std::shared_ptr<IonChamberEvt> GetIonChamberEvt( unsigned int i ){
307 if( i < ic_event.size() ) return std::make_shared<IonChamberEvt>( ic_event.at(i) );
308 else return nullptr;
309 };
310
311 void ClearEvt();
312
313 // ISOLDE timestamping
314 inline void SetEBIS( unsigned long t ){ ebis = t; return; };
315 inline void SetT1( unsigned long t ){ t1 = t; return; };
316 inline void SetSC( unsigned long t ){ sc = t; return; };
317 inline void SetLaserStatus( bool l ){ laser = l; return; };
318
319 inline unsigned long GetEBIS(){ return ebis; };
320 inline unsigned long GetT1(){ return t1; };
321 inline unsigned long GetSC(){ return sc; };
322 inline bool GetLaserStatus(){ return laser; };
323
324
325private:
326
327 // variables for timestamping
328 unsigned long ebis;
329 unsigned long t1;
330 unsigned long sc;
331 bool laser;
332
333 std::vector<GammaRayEvt> gamma_event;
334 std::vector<GammaRayAddbackEvt> gamma_ab_event;
335 std::vector<ParticleEvt> particle_event;
336 std::vector<BeamDumpEvt> bd_event;
337 std::vector<SpedeEvt> spede_event;
338 std::vector<IonChamberEvt> ic_event;
339
340 ClassDef( MiniballEvts, 3 )
341
342};
343
344#endif
345
void SetDetector(unsigned char d)
void SetTime(unsigned long long t)
float GetEnergy()
unsigned long long time
timestamp of event
void SetEnergy(float e)
unsigned long long GetTime()
unsigned char det
detector ID
float energy
energy in keV
unsigned char GetDetector()
unsigned int GetAddbackMultiplicity()
unsigned char ab_mult
add-back multiplicity
void SetAddbackMultiplicity(unsigned int m)
void SetCluster(unsigned char c)
unsigned long long GetTime()
unsigned char cry
crystal ID
void SetTime(unsigned long long t)
float seg_sum_energy
energy in keV for the hit segment
unsigned long long time
timestamp of event
unsigned int GetSegmentMultiplicity()
unsigned char GetSegment()
void SetSegmentMultiplicity(unsigned int m)
unsigned char GetCrystal()
float seg_max_energy
energy in keV for the hit segment
void SetSegmentMaxEnergy(float e)
unsigned char seg_mult
segment multiplicity
float GetEnergy()
void SetSegmentSumEnergy(float e)
float energy
energy in keV
float GetSegmentMaxEnergy()
unsigned char seg
segment ID
float GetSegmentSumEnergy()
void SetEnergy(float e)
void SetSegment(unsigned char s)
unsigned char clu
cluster ID
unsigned char GetCluster()
void SetCrystal(unsigned char c)
unsigned long detime
time stamp of gas event
std::vector< unsigned char > GetIDs()
unsigned long GetETime()
void SetETime(unsigned long t)
void SetdETime(unsigned long t)
float GetEnergy(unsigned char i)
std::vector< unsigned char > id
differential id list, i.e. dE = 0, E = 1, for example
float GetEnergyTotal(unsigned char start=0, unsigned char stop=1)
std::vector< float > GetEnergies()
unsigned long etime
time stamp of silicon event
unsigned long GetdETime()
int GetID(unsigned char i)
void SetIDs(std::vector< unsigned char > x)
float GetEnergyLoss(unsigned char start=0, unsigned char stop=0)
std::vector< float > energy
differential energy list
void AddIonChamber(float myenergy, unsigned char myid)
unsigned long GetTime()
float GetEnergyRest(unsigned char start=1, unsigned char stop=1)
void SetEnergies(std::vector< float > x)
unsigned int GetParticleMultiplicity()
unsigned long t1
absolute proton pulse time
void SetT1(unsigned long t)
unsigned int GetGammaRayAddbackMultiplicity()
std::vector< IonChamberEvt > ic_event
void SetEBIS(unsigned long t)
std::vector< GammaRayEvt > gamma_event
std::vector< SpedeEvt > spede_event
unsigned int GetSpedeMultiplicity()
std::shared_ptr< GammaRayEvt > GetGammaRayEvt(unsigned int i)
std::shared_ptr< SpedeEvt > GetSpedeEvt(unsigned int i)
unsigned int GetIonChamberMultiplicity()
unsigned long ebis
absolute EBIS pulse time
unsigned long GetT1()
bool laser
RILIS laser on (true) or off (false)
void SetLaserStatus(bool l)
unsigned long GetEBIS()
void ClearEvt()
unsigned int GetGammaRayMultiplicity()
bool GetLaserStatus()
void AddEvt(std::shared_ptr< GammaRayEvt > event)
std::shared_ptr< BeamDumpEvt > GetBeamDumpEvt(unsigned int i)
unsigned long GetSC()
std::vector< GammaRayAddbackEvt > gamma_ab_event
unsigned int GetBeamDumpMultiplicity()
std::shared_ptr< IonChamberEvt > GetIonChamberEvt(unsigned int i)
std::vector< ParticleEvt > particle_event
std::shared_ptr< GammaRayAddbackEvt > GetGammaRayAddbackEvt(unsigned int i)
void SetSC(unsigned long t)
std::vector< BeamDumpEvt > bd_event
std::shared_ptr< ParticleEvt > GetParticleEvt(unsigned int i)
unsigned long sc
absolute SuperCycle time
unsigned char det
detector ID (=0 for forward CD)
unsigned char GetSector()
void SetTimePad(unsigned long long t)
float GetDeltaEnergy()
unsigned long long GetTimePad()
unsigned char GetStripN()
unsigned long long GetTimeP()
float penergy
p-side energy in keV
void SetSector(unsigned char s)
float GetEnergyN()
void SetStripN(unsigned char s)
void SetEnergyP(float e)
unsigned long long ntime
n-side timestamp of event
void SetEnergyPad(float e)
unsigned char GetStripP()
void SetTimeP(unsigned long long t)
unsigned char sec
sector ID (0-3 for quadrants)
void SetTimeN(unsigned long long t)
unsigned long long GetTimeN()
void SetDetector(unsigned char d)
float GetRestEnergy()
unsigned long long GetTime()
float GetEnergyPad()
unsigned long long ptime
p-side timestamp of event
void SetStripP(unsigned char s)
unsigned long long rtime
pad timestamp of event
void SetEnergyN(float e)
float nenergy
n-side energy in keV
float GetEnergy()
float GetEnergyP()
unsigned char nstrip
n-side strip ID
unsigned char pstrip
p-side strip ID
unsigned char GetDetector()
float padenergy
pad energy in keV
unsigned char GetSegment()
unsigned long long GetTime()
void SetEnergy(float e)
void SetSegment(unsigned char s)
unsigned long long time
timestamp of event
float GetEnergy()
void SetTime(unsigned long long t)
float energy
energy in keV
unsigned char seg
segment ID within SPEDE