BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
BmnZDCEventData.cxx
Go to the documentation of this file.
1/*
2 * File: BmnZDCEventData.cxx
3 * Author: pnaleks
4 *
5 * Created on 5 июня 2020 г., 13:43
6 */
7
8#include "BmnZDCEventData.h"
9
10#include <iostream>
11using namespace std;
12
14{
15 fE = fEc = fEn = fEp = 0.;
16 fH = fHc = fHn = fHp = 0;
17 fX = fY = 0.;
18 fAsymmetry = fMoment = 0.;
19}
20
22
23void BmnZDCEventData::Set(TClonesArray* pArrayOfBmnZDCDigits, Float_t* pModuleScale, Float_t* pModuleThreshold)
24{
25 fE = fEc = fEn = fEp = 0.;
26 fH = fHc = fHn = fHp = 0;
27 fX = fY = 0.;
28 fAsymmetry = fMoment = 0.;
29
30 Double_t SEx = 0, SEy = 0, SExx = 0, SEyy = 0;
31 Int_t N = pArrayOfBmnZDCDigits->GetEntries();
32 for (Int_t i = 0; i < N; i++) {
33 BmnZDCDigit* p = (BmnZDCDigit*)pArrayOfBmnZDCDigits->At(i);
34
35 Int_t ch = p->GetChannel();
36 if (ch < 1 || ch > 104)
37 continue;
38
39 Float_t e = p->GetAmp() * 1e-3; // MeV -> GeV
40 if (pModuleScale)
41 e *= pModuleScale[ch];
42
43 if (pModuleThreshold && e < pModuleThreshold[ch])
44 continue;
45
46 fH++;
47 fE += e;
48
49 switch (ch) {
50 case 3:
51 case 4:
52 case 5:
53 case 10:
54 case 11:
55 case 12:
56 case 17:
57 case 18:
58 case 19:
59 case 24:
60 case 25:
61 case 26:
62 fHn++;
63 fEn += e;
64 break;
65 case 43:
66 case 44:
67 case 45:
68 case 50:
69 case 51:
70 case 52:
71 case 57:
72 case 58:
73 case 59:
74 case 64:
75 case 65:
76 case 66:
77 fHp++;
78 fEp += e;
79 break;
80 default:
81 if (ch > 68) {
82 fHc++;
83 fEc += e;
84 }
85 }
86
87 SEx += e * p->GetX();
88 SEy += e * p->GetY();
89 SExx += e * p->GetX() * p->GetX();
90 SEyy += e * p->GetY() * p->GetY();
91 }
92
93 if (fE > 0.) {
94 fX = SEx / fE / 10.; // mm -> cm
95 fY = SEy / fE / 10.; // mm -> cm
96 fMoment = (SExx + SEyy) / fE / 100.; // mm^2 -> cm^2
97 fAsymmetry = 2. * fEc / fE - 1.;
98 }
99}
100
102{
103 switch (op) {
104 case 'c':
105 case 'C':
106 return fEc;
107 case 'n':
108 case 'N':
109 return fEn;
110 case 'p':
111 case 'P':
112 return fEp;
113 }
114
115 return fE;
116}
117
119{
120 switch (op) {
121 case 'c':
122 case 'C':
123 return fHc;
124 case 'n':
125 case 'N':
126 return fHn;
127 case 'p':
128 case 'P':
129 return fHp;
130 }
131
132 return fH;
133}
134
136{
137 cout << "BmnZDCEventData:";
138 if (fH) {
139 cout << endl;
140 cout << " Hits: " << fH << endl;
141 cout << " Energy: " << fE << " GeV" << endl;
142 cout << " Asym.: " << fAsymmetry << endl;
143 cout << " Moment: " << fMoment << " cm^2" << endl;
144 } else {
145 cout << " is empty" << endl;
146 }
147}
int i
Definition P4_F32vec4.h:22
int Int_t
float Float_t
double Double_t
const char Option_t
Float_t GetX() const
UShort_t GetChannel() const
Float_t GetY() const
Float_t GetAmp() const
virtual ~BmnZDCEventData()
void Set(TClonesArray *pArrayOfBmnZDCDigits, Float_t *pModuleScale=0, Float_t *pModuleThreshold=0)
Calculate all parameters values from BmnZDCDigits passed.
virtual void Print(Option_t *option="") const
Int_t GetEntries() const override
TObject * At(Int_t idx) const override
friend friend class TClonesArray
Definition json.hpp:4446