-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathHiRAIdentification.cpp
87 lines (75 loc) · 2.07 KB
/
HiRAIdentification.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <HiRAIdentification.h>
//________________________________________________
HiRAIdentification::HiRAIdentification() :
fpar(0),
fIdentificationLoaded(false),
fNumLines(0)
{}
//________________________________________________
HiRAIdentification::~HiRAIdentification()
{
if(fpar) {
for(int i=0; i<fNumLines; i++) {
delete fpar[i];
}
delete [] fpar;
}
}
//________________________________________________
int HiRAIdentification::LoadIdentification(const char * name)
{
ifstream ifile(name);
if (!ifile.is_open()){
return -1;
}
ifile >> fNumLines;
fpar = new ZApar*[fNumLines];
for (int i=0;i<fNumLines;i++)
{
fpar[i] = new ZApar(ifile);
}
ifile.close();
fIdentificationLoaded=true;
return fNumLines;
}
//________________________________________________
int HiRAIdentification::PerformIdentification(HiRACalibratedData * pCalibratedEvent)
{
int NIdParticles=0;
for(int i=0; i<pCalibratedEvent->fmulti; i++)
{
pCalibratedEvent->fZ[i]=-9999;
pCalibratedEvent->fA[i]=-9999;
pCalibratedEvent->fIdCode[i]=0;
for(int line=0; line<fNumLines; line++) {
if(fIdentificationLoaded && fpar[line]->inBanana(pCalibratedEvent->fEnergycsiCal[i],pCalibratedEvent->fEnergySifCal[i])) {
pCalibratedEvent->fZ[i]=fpar[line]->Z;
pCalibratedEvent->fA[i]=fpar[line]->A;
pCalibratedEvent->fIdCode[i]=1;
NIdParticles++;
break;
}
}
}
return NIdParticles;
}
//________________________________________________
int HiRAIdentification::GetIdentifiedZ(double ERes, double DE)
{
for(int line=0; line<fNumLines; line++) {
if(fIdentificationLoaded && fpar[line]->inBanana(ERes,DE)) {
return fpar[line]->Z;
}
}
return -1;
}
//________________________________________________
int HiRAIdentification::GetIdentifiedA(double ERes, double DE)
{
for(int line=0; line<fNumLines; line++) {
if(fIdentificationLoaded && fpar[line]->inBanana(ERes,DE)) {
return fpar[line]->A;
}
}
return -1;
}