CGEM BOSS 6.6.5.f
BESIII Offline Software System
Loading...
Searching...
No Matches
EmcBhabhaEvent.cxx
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2// File and Version Information:
3//
4// Description:
5// Class EmcBhabhaEvent
6//
7// Environment:
8// Software developed for the BESIII Detector at the BEPCII.
9//
10// Author List:
11// ChunXiu Liu IHEP
12//
13//------------------------------------------------------------------------
14//-----------------------
15// This Class's Header --
16//-----------------------
17
18#include "EmcBhaCalib/EmcBhabhaEvent.h"
19#include "CLHEP/Vector/ThreeVector.h"
20#include "CLHEP/Vector/LorentzVector.h"
21#include "CLHEP/Vector/TwoVector.h"
22using CLHEP::Hep3Vector;
23using CLHEP::Hep2Vector;
24using CLHEP::HepLorentzVector;
25//---------------
26// C Headers --
27//---------------
28#include <cassert>
29//---------------
30// C++ Headers --
31//---------------
32#include <fstream>
33//-------------------------------
34// Collaborating Class Headers --
35//-------------------------------
36
37//static elements
38bool EmcBhabhaEvent::m_initialized = true;
39int EmcBhabhaEvent::m_selectedMDCType = -1;
40int EmcBhabhaEvent::m_selectedEmcType = -1;
41//double EmcBhabhaEvent::m_eBeamEnergy = 1.548;
42//double EmcBhabhaEvent::m_pBeamEnergy = 1.548;
43
44//----------------
45// Constructors --
46//----------------
48{
49 m_positron = new EmcBhabha();
50 assert( 0 != m_positron );
51 m_electron = new EmcBhabha();
52 assert( 0 != m_electron );
53 /*
54 if (m_bhaEvList.empty()) {
55
56 m_bhaEvList.push_back(*m_positron);
57 m_bhaEvList.push_back(*m_electron);
58
59 }
60 else {
61 if (m_bhaEvList.size() != 2) {
62 cout<<"error " << "ERROR EmcBhabhaEvent: Length of event list != 2 !"
63 << endl
64 << " EmcBhabhaEvent: Length = "
65 << m_bhaEvList.size()
66 << endl;
67 }
68 }
69 */
70 initData();
71}
72
73//--------------
74// Destructor --
75//--------------
77
78 delete m_positron;
79 delete m_electron;
80
81}
82
83//Modifiers
84void
86{
87 m_initialized = true;
88}
89
90void
92{
93}
94
95//Accessor
96void
98
99 if ( positron()->found() )
100 {
101 cout << "Positron: " << endl;
102 positron()->print( );
103 }
104 else
105 {
106 cout<<"routine "<< "No positron found ! " << endl;
107 }
108
109 if ( electron()->found() )
110 {
111 cout << "Electron: " << endl;
112 electron()->print( );
113 }
114 else
115 {
116 cout<<"routine "<< "No electron found ! " << endl;
117 }
118}
119
120
121/*
122double
123EmcBhabhaEvent::getDepExpShowerEnergy(unsigned int thetaIndex,
124 unsigned int phiIndex,
125 double ePeakEne) const {
126
127 if ( ! m_initialized )
128 {
129 cout<<"error "<< " EmcBhabhaEvent not initialized ! " << endl
130 << " Is EmcLoadBhabhaData included in the path ? "
131 << endl;
132 return 0;
133 }
134
135 //the deposited energy
136 double depoEne = 0.;
137
138 EmcStructure* theEmcStruc=new EmcStructure();
139
140
141 if (theEmcStruc->isOutofAccep(thetaIndex, phiIndex ))
142 {
143 cout<<"warning "<< "EmcBhabhaEvent: Theta " << thetaIndex
144 << " or phi " << phiIndex
145 << " out of the calorimeter acceptance !"
146 << "Return 0 !"
147 << endl;
148 delete theEmcStruc;
149 return 0;
150
151 }
152 else
153 {
154 depoEne =ePeakEne;
155
156
157 delete theEmcStruc;
158 return depoEne;
159
160 }
161
162}
163
164*/
165
166double
168 unsigned int phiIndex,
169 double ePeak,
170 double beamEnergy) const {
171
172 if ( ! m_initialized )
173 {
174 cout<<"error "<< " EmcBhabhaEvent not initialized ! " << endl
175 << " Is EmcLoadBhabhaData included in the path ? "
176 << endl;
177 return 0;
178 }
179
180 //the deposited energy
181 double depoEne = 0.;
182
183 EmcStructure* theEmcStruc=new EmcStructure();
184
185
186 if (theEmcStruc->isOutofAccep(thetaIndex, phiIndex ))
187 {
188 cout<<"warning "<< "EmcBhabhaEvent: Theta " << thetaIndex
189 << " or phi " << phiIndex
190 << " out of the calorimeter acceptance !"
191 << "Return 0 !"
192 << endl;
193 delete theEmcStruc;
194 return 0;
195
196 }
197 else
198 {
199 depoEne =ePeak*beamEnergy;
200
201
202 delete theEmcStruc;
203 return depoEne;
204
205 }
206
207}
208
209
210double
212 double phi,
213 unsigned int thetaIndex,
214 unsigned int phiIndex,
215 double ePeak,
216 double beamEnergy) const {
217
218 if ( ! m_initialized )
219 {
220 cout<<"error "<< " EmcBhabhaEvent not initialized ! " << endl
221 << " Is EmcLoadBhabhaData included in the path ? "
222 << endl;
223 return 0;
224 }
225
226 //the deposited energy
227 double depoEne = 0.;
228
229 EmcStructure* theEmcStruc=new EmcStructure();
230
231
232 if (theEmcStruc->isOutofAccep(thetaIndex, phiIndex ))
233 {
234 cout<<"warning "<< "EmcBhabhaEvent: Theta " << thetaIndex
235 << " or phi " << phiIndex
236 << " out of the calorimeter acceptance !"
237 << "Return 0 !"
238 << endl;
239 delete theEmcStruc;
240 return 0;
241
242 }
243 else
244 {
245
246 HepLorentzVector ptrk;
247 ptrk.setPx(beamEnergy*sin(theta)*cos(phi));
248 ptrk.setPy(beamEnergy*sin(theta)*sin(phi));
249 ptrk.setPz(beamEnergy*cos(theta));
250 ptrk.setE(beamEnergy);
251
252 ptrk=ptrk.boost(0.011,0,0); //boost from cms to lab
253 //double the_lab = ptrk.theta();
254 //double phi_lab = ptrk.phi();
255 double depoEne_lab =ePeak*ptrk.e();
256 delete theEmcStruc;
257 return depoEne_lab;
258
259 }
260
261}
262
263double
265 unsigned int phiIndex,
266 double eSigma) const {
267
268 if ( ! m_initialized )
269 {
270 cout<<"error "<< " EmcBhabhaEvent not initialized ! " << endl
271 << " Is EmcLoadBhabhaData included in the path ? "
272 << endl;
273 return 0;
274 }
275
276 double sig=0.;
277 EmcStructure* theEmcStruc=new EmcStructure();
278
279 if (theEmcStruc->isOutofAccep(thetaIndex, phiIndex ))
280 {
281 cout<<"warning "<< "EmcBhabhaEvent: Theta " << thetaIndex
282 << " or phi " << phiIndex
283 << " out of the calorimeter acceptance !"
284 << "Return 0 !"
285 << endl;
286
287 delete theEmcStruc;
288 return 0;
289
290 }
291 else
292 {
293 sig=eSigma;
294 delete theEmcStruc;
295 return sig;
296
297 }
298
299}
300
301double
303{
304 return 1.0;
305}
306
307double
309{
310 return 0.0;
311}
312
313Hep3Vector
315{
316 Hep3Vector theShowerVector(1,1,1);
317 theShowerVector.setTheta(theShower.theta());
318 theShowerVector.setPhi(theShower.phi());
319 theShowerVector.setMag(theShower.energy());
320
321 return theShowerVector;
322}
double sin(const BesAngle a)
double cos(const BesAngle a)
double getDepoMCShowerEnergy(unsigned int thetaIndex, unsigned int phiIndex, double ePeak, double beamEnergy) const
double getErrorDepoMCShowerEnergy(unsigned int thetaIndex, unsigned int phiIndex, double eSigma) const
double enLeakageTheta(double theta)
double getDepoMCShowerEnergy_lab(double theta, double phi, unsigned int thetaIndex, unsigned int phiIndex, double ePeak, double beamEnergy) const
Hep3Vector showerVector(EmcShower theShower)
double enLeakageThetaErr(double theta)
void print()
Definition: EmcBhabha.cxx:95
bool isOutofAccep(unsigned int thetaIndex, unsigned int phiIndex) const