BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EmcRecShowerPosLogShMax Class Reference

#include <EmcRecShowerPosLogShMax.h>

Inheritance diagram for EmcRecShowerPosLogShMax:

Public Member Functions

 EmcRecShowerPosLogShMax ()
virtual ~EmcRecShowerPosLogShMax ()
virtual void Position (RecEmcShower &aShower)
 EmcRecShowerPosLogShMax ()
virtual ~EmcRecShowerPosLogShMax ()
virtual void Position (RecEmcShower &aShower)
 EmcRecShowerPosLogShMax ()
virtual ~EmcRecShowerPosLogShMax ()
virtual void Position (RecEmcShower &aShower)
Public Member Functions inherited from EmcRecShowerPosAbs
 EmcRecShowerPosAbs ()
virtual ~EmcRecShowerPosAbs ()
 EmcRecShowerPosAbs ()
virtual ~EmcRecShowerPosAbs ()
 EmcRecShowerPosAbs ()
virtual ~EmcRecShowerPosAbs ()

Detailed Description

Constructor & Destructor Documentation

◆ EmcRecShowerPosLogShMax() [1/3]

EmcRecShowerPosLogShMax::EmcRecShowerPosLogShMax ( )
inline

◆ ~EmcRecShowerPosLogShMax() [1/3]

virtual EmcRecShowerPosLogShMax::~EmcRecShowerPosLogShMax ( )
inlinevirtual

◆ EmcRecShowerPosLogShMax() [2/3]

EmcRecShowerPosLogShMax::EmcRecShowerPosLogShMax ( )
inline

◆ ~EmcRecShowerPosLogShMax() [2/3]

virtual EmcRecShowerPosLogShMax::~EmcRecShowerPosLogShMax ( )
inlinevirtual

◆ EmcRecShowerPosLogShMax() [3/3]

EmcRecShowerPosLogShMax::EmcRecShowerPosLogShMax ( )
inline

◆ ~EmcRecShowerPosLogShMax() [3/3]

virtual EmcRecShowerPosLogShMax::~EmcRecShowerPosLogShMax ( )
inlinevirtual

Member Function Documentation

◆ Position() [1/3]

void EmcRecShowerPosLogShMax::Position ( RecEmcShower & aShower)
virtual

Implements EmcRecShowerPosAbs.

Definition at line 19 of file EmcRecShowerPosLogShMax.cxx.

19 {
20 RecEmcFractionMap::const_iterator cit;
21 HepPoint3D pos( 0, 0, 0 );
22 HepPoint3D possum( 0, 0, 0 );
23 double w, wsum = 0;
24
25 // cout<<"EmcRecShowerPosLog::Position Begin"<<endl;
26
27 IEmcRecGeoSvc* iGeoSvc;
28 ISvcLocator* svcLocator = Gaudi::svcLocator();
29 StatusCode sc = svcLocator->service( "EmcRecGeoSvc", iGeoSvc );
30 if ( sc != StatusCode::SUCCESS )
31 {
32 // cout<<"Error: Can't get EmcRecGeoSvc"<<endl;
33 }
34
35 EmcRecParameter& Para = EmcRecParameter::GetInstance();
36
37 double offset = Para.LogPosOffset();
38 // int NX0=Para.DepthOfShowerMax(); //unit X_0=1.86
39 // cout<<offset<<endl;
40
41 double e5x5 = -99999;
42 if ( Para.PositionMode2() == "all" )
43 {
44 double etot = aShower.getEAll();
45 for ( cit = aShower.Begin(); cit != aShower.End(); cit++ )
46 {
47 w = offset + log( ( cit->second.getEnergy() / etot ) * cit->second.getFraction() );
48 if ( w > 0 )
49 {
50 wsum += w;
51 pos = iGeoSvc->GetCFrontCenter( cit->second.getCellId() );
52 possum += pos * w;
53 }
54 }
55 }
56 else if ( Para.PositionMode2() == "3x3" )
57 {
58 double e3x3 = aShower.e3x3();
59 RecEmcFractionMap fracMap3x3 = aShower.getFractionMap3x3();
60 for ( cit = fracMap3x3.begin(); cit != fracMap3x3.end(); cit++ )
61 {
62 w = offset + log( ( cit->second.getEnergy() / e3x3 ) * cit->second.getFraction() );
63 if ( w > 0 )
64 {
65 wsum += w;
66 pos = iGeoSvc->GetCFrontCenter( cit->second.getCellId() );
67 possum += pos * w;
68 }
69 }
70 }
71 else
72 {
73 e5x5 = aShower.e5x5();
74 RecEmcFractionMap fracMap5x5 = aShower.getFractionMap5x5();
75 for ( cit = fracMap5x5.begin(); cit != fracMap5x5.end(); cit++ )
76 {
77 w = offset + log( ( cit->second.getEnergy() / e5x5 ) * cit->second.getFraction() );
78 if ( w > 0 )
79 {
80 wsum += w;
81 // pos=iGeoSvc->GetCFrontCenter(cit->second.getCellId());
82
83 HepPoint3D Rc, R;
84 R = iGeoSvc->GetCFrontCenter( cit->second.getCellId() );
85 Rc = iGeoSvc->GetCCenter( cit->second.getCellId() );
86 int NX0 = 6;
87 pos = R + ( Rc - R ) / ( Rc - R ).mag() * NX0 * 1.86; // X_CsI=1.86cm
88
89 possum += pos * w;
90 }
91 }
92 }
93 if ( wsum <= 0 )
94 {
95 // cout<<"[[[[[[[[[[[[[[["<<wsum<<endl;
96 }
97 pos = possum / wsum;
98
99 int NX0 = 6;
100 HepPoint3D posFront = pos - pos / pos.mag() * NX0 * 1.86; // X_CsI=1.86cm
101
102 // aShower.setPositionNoCor(pos);
103 //----------------------------------------------------------------------
104 // position correction
105 RecEmcID id = aShower.getShowerId();
106 const unsigned int module = EmcID::barrel_ec( id );
107 const unsigned int thetaModule = EmcID::theta_module( id );
108 const unsigned int phiModule = EmcID::phi_module( id );
109 // HepPoint3D posCorr(pos);
110
111 HepPoint3D posCorr( posFront );
112
113 if ( module == 1 )
114 { // barrel
115
116 double IRShift, parTheta[5], parPhi[5];
117
118 for ( int i = 0; i < 5; i++ )
119 {
120
121 if ( e5x5 > 1.0 ) parTheta[i] = Para.BarrLogShMaxThetaPara( thetaModule, i );
122 else if ( e5x5 <= 1.0 && e5x5 > 0.5 )
123 parTheta[i] = Para.BarrLogShMaxThetaPara( thetaModule + 44, i );
124 else if ( e5x5 <= 0.5 ) parTheta[i] = Para.BarrLogShMaxThetaPara( thetaModule + 88, i );
125
126 if ( e5x5 > 1.0 ) parPhi[i] = Para.BarrLogShMaxPhiPara( thetaModule, i );
127 else if ( e5x5 <= 1.0 && e5x5 > 0.5 )
128 parPhi[i] = Para.BarrLogShMaxPhiPara( thetaModule + 44, i );
129 else if ( e5x5 <= 0.5 ) parPhi[i] = Para.BarrLogShMaxPhiPara( thetaModule + 88, i );
130 }
131
132 HepPoint3D center01, center23, center12,
133 center03; // center of point0,1 and point2,3 in crystal
134 center01 = ( iGeoSvc->GetCrystalPoint( id, 0 ) + iGeoSvc->GetCrystalPoint( id, 1 ) ) / 2;
135 center23 = ( iGeoSvc->GetCrystalPoint( id, 2 ) + iGeoSvc->GetCrystalPoint( id, 3 ) ) / 2;
136 center03 = ( iGeoSvc->GetCrystalPoint( id, 0 ) + iGeoSvc->GetCrystalPoint( id, 3 ) ) / 2.0;
137 center12 = ( iGeoSvc->GetCrystalPoint( id, 1 ) + iGeoSvc->GetCrystalPoint( id, 2 ) ) / 2.0;
138
139 double theta01, theta23, dtheta;
140
141 theta01 = ( center01 ).theta();
142 theta23 = ( center23 ).theta();
143
144 dtheta = theta01 - theta23; // length in x direction
145 double xIn, xOut, deltaTheta, deltaX;
146 xIn = ( ( ( posCorr ).theta() - theta23 ) - dtheta / 2 ) / dtheta;
147 // emcX-extX=deltaX ==> extX=emcX-deltaX,Xout=xin-deltaX
148 deltaX = parTheta[0] * atan( xIn * parTheta[1] - parTheta[4] ) + parTheta[2] * xIn +
149 parTheta[3];
150 deltaTheta = deltaX * dtheta;
151
152 // obtained by photon, not used, just for comparison
153 // double parPhi[5] = { 51.1, -0.1499, 7.62, 0.1301, 0.005581 };
154
155 double phi12 = -9999, phi03 = -9999, deltaphi = -9999;
156
157 phi03 = center03.phi();
158 phi12 = center12.phi();
159
160 double posPhi;
161 posPhi = posCorr.phi();
162
163 if ( phiModule == 0 )
164 {
165 posPhi = posPhi;
166 phi03 = phi03;
167 phi12 = phi12;
168 }
169 else if ( phiModule == 119 )
170 {
171 posPhi = posPhi + 2 * CLHEP::pi;
172 phi03 = phi03 + 2 * CLHEP::pi;
173 phi12 = phi12 + 2 * CLHEP::pi;
174 }
175 else
176 {
177 posPhi = posPhi < 0 ? posPhi + 2 * CLHEP::pi : posPhi;
178 phi03 = phi03 < 0 ? phi03 + 2 * CLHEP::pi : phi03;
179 phi12 = phi12 < 0 ? phi12 + 2 * CLHEP::pi : phi12;
180 }
181
182 deltaphi = phi12 - phi03;
183
184 double yIn, deltaY, deltaPhi;
185 yIn = ( ( posPhi - phi03 ) - deltaphi * 0.5 ) / deltaphi;
186 // deltaY=yIn-Ymc => Ymc=yIn-deltaY
187 deltaY = parPhi[0] * atan( yIn * parPhi[1] - parPhi[4] ) + parPhi[2] * yIn + parPhi[3];
188 deltaPhi = deltaY * deltaphi;
189
190 // deltaPhi = deltaY*CLHEP::pi/180.;
191 /*
192 HepPoint3D rotateVector(0,1,0); //y axis
193 rotateVector.rotateZ(center01.phi());
194 posCorr.setZ(posCorr.z()-IRShift);
195 posCorr.rotate(-deltaTheta,rotateVector);
196 posCorr.setZ(posCorr.z()+IRShift);
197 */
198 /*
199 HepPoint3D possh;
200 possh=posCorr;//-IRShift;
201 //possh.setTheta(possh.theta()-deltaTheta);
202 // posCorr=possh+IRShift;
203 posCorr.setTheta(possh.theta()-deltaTheta);
204 */
205
206 HepPoint3D rotateVector( 0, 1, 0 ); // y axis
207 // rotateVector.rotateZ(center01.phi());
208 rotateVector.rotateZ( center23.phi() );
209
210 posCorr.rotate( -deltaTheta, rotateVector );
211 posCorr.rotateZ( -deltaPhi );
212
213 /*
214 double lengthemc;
215 lengthemc = abs(posCorr.z()/cos(posCorr.theta()));
216 // for Data
217 double posDataCorPar;
218 if(Para.DataMode()==1) {
219 posDataCorPar=Para.BarrPosDataCor(thetaModule,phiModule);
220 posCorr.setTheta(posCorr.theta()-posDataCorPar/lengthemc);
221 }
222 */
223 /* //for MC
224 double posMCCorPar;
225 if(Para.DataMode()==0) {
226 posMCCorPar=Para.BarrPosMCCor(thetaModule,phiModule);
227 posCorr.setTheta(posCorr.theta()-posMCCorPar/lengthemc);
228 }
229 */
230 }
231 else
232 { // endcap position corretion
233 // if(Para.MethodMode()==1){
234
235 double IRShift = 0, parTheta[5], parPhi[5];
236
237 if ( module == 0 )
238 { // east endcap
239
240 IRShift = 10;
241
242 for ( int i = 0; i < 5; i++ )
243 {
244
245 if ( e5x5 > 1.0 ) parTheta[i] = Para.EastLogShMaxThetaPara( thetaModule, i );
246 else if ( e5x5 <= 1.0 && e5x5 > 0.5 )
247 parTheta[i] = Para.EastLogShMaxThetaPara( thetaModule + 6, i );
248 else if ( e5x5 <= 0.5 ) parTheta[i] = Para.EastLogShMaxThetaPara( thetaModule + 6, i );
249
250 if ( e5x5 > 1.0 ) parPhi[i] = Para.EastLogShMaxPhiPara( 0, i );
251 else if ( e5x5 <= 1.0 && e5x5 > 0.5 ) parPhi[i] = Para.EastLogShMaxPhiPara( 1, i );
252 else if ( e5x5 <= 0.5 ) parPhi[i] = Para.EastLogShMaxPhiPara( 2, i );
253 }
254 }
255 else if ( module == 2 )
256 { // west endcap
257 IRShift = -10;
258 for ( int i = 0; i < 5; i++ )
259 {
260
261 if ( e5x5 > 1.0 ) parTheta[i] = Para.WestLogShMaxThetaPara( thetaModule, i );
262 else if ( e5x5 <= 1.0 && e5x5 > 0.5 )
263 parTheta[i] = Para.WestLogShMaxThetaPara( thetaModule + 6, i );
264 else if ( e5x5 <= 0.5 ) parTheta[i] = Para.WestLogShMaxThetaPara( thetaModule + 6, i );
265
266 if ( e5x5 > 1.0 ) parPhi[i] = Para.WestLogShMaxPhiPara( 0, i );
267 else if ( e5x5 <= 1.0 && e5x5 > 0.5 ) parPhi[i] = Para.WestLogShMaxPhiPara( 1, i );
268 else if ( e5x5 <= 0.5 ) parPhi[i] = Para.WestLogShMaxPhiPara( 2, i );
269 }
270 }
271
272 HepPoint3D IR( 0, 0, IRShift );
273
274 double theta12 = -9999, theta03 = -9999, theta23 = -9999, theta14 = -9999, delta = -9999;
275 double phi01 = -9999, phi23 = -9999, phi12 = -9999, phi34 = -9999, deltaphi = -9999;
276 double xIn, deltaX, deltaTheta, yIn, deltaY, deltaPhi;
277
278 double posphi = posCorr.phi();
279 if ( phiModule == 0 ) { posphi = posphi; }
280 else if ( ( ( thetaModule == 0 || thetaModule == 1 ) && phiModule == 63 ) ||
281 ( ( thetaModule == 2 || thetaModule == 3 ) && phiModule == 79 ) ||
282 ( ( thetaModule == 4 || thetaModule == 5 ) && phiModule == 95 ) )
283 { posphi = posphi + 2 * CLHEP::pi; }
284 else { posphi = posphi < 0 ? posphi + 2 * CLHEP::pi : posphi; }
285
286 HepPoint3D center, center01, center23, center12, center03, center34, center14;
287
288 if ( ( thetaModule == 1 &&
289 ( ( phiModule + 3 ) % 4 == 0 || ( phiModule + 2 ) % 4 == 0 ) ) ||
290 ( thetaModule == 3 && ( ( phiModule + 4 ) % 5 == 0 || ( phiModule + 3 ) % 5 == 0 ||
291 ( phiModule + 2 ) % 5 == 0 ) ) ) // pentagon
292 {
293
294 center23 =
295 ( iGeoSvc->GetCrystalPoint( id, 2 ) + iGeoSvc->GetCrystalPoint( id, 3 ) ) / 2.0;
296 center14 =
297 ( iGeoSvc->GetCrystalPoint( id, 1 ) + iGeoSvc->GetCrystalPoint( id, 4 ) ) / 2.0;
298 center = center23;
299 theta23 = ( center23 - IR ).theta();
300 theta14 = ( center14 - IR ).theta();
301 delta = theta14 - theta23;
302 xIn = ( ( ( posCorr - IR ).theta() - theta23 ) - delta * 0.5 ) / delta;
303
304 center12 =
305 ( iGeoSvc->GetCrystalPoint( id, 1 ) + iGeoSvc->GetCrystalPoint( id, 2 ) ) / 2.0;
306 center34 =
307 ( iGeoSvc->GetCrystalPoint( id, 3 ) + iGeoSvc->GetCrystalPoint( id, 4 ) ) / 2.0;
308 phi12 = center12.phi();
309 phi34 = center34.phi();
310
311 if ( phiModule == 0 )
312 {
313 phi12 = phi12;
314 phi34 = phi34;
315 }
316 else if ( ( ( thetaModule == 0 || thetaModule == 1 ) && phiModule == 63 ) ||
317 ( ( thetaModule == 2 || thetaModule == 3 ) && phiModule == 79 ) ||
318 ( ( thetaModule == 4 || thetaModule == 5 ) && phiModule == 95 ) )
319 {
320 phi12 = phi12 + 2 * CLHEP::pi;
321 phi34 = phi34 + 2 * CLHEP::pi;
322 }
323 else
324 {
325 phi12 = phi12 < 0 ? phi12 + 2 * CLHEP::pi : phi12;
326 phi34 = phi34 < 0 ? phi34 + 2 * CLHEP::pi : phi34;
327 }
328
329 deltaphi = phi34 - phi12;
330 yIn = ( ( posphi - phi12 ) - deltaphi * 0.5 ) / deltaphi;
331 }
332 else
333 {
334
335 center12 =
336 ( iGeoSvc->GetCrystalPoint( id, 1 ) + iGeoSvc->GetCrystalPoint( id, 2 ) ) / 2.0;
337 center03 =
338 ( iGeoSvc->GetCrystalPoint( id, 0 ) + iGeoSvc->GetCrystalPoint( id, 3 ) ) / 2.0;
339 center = center12;
340
341 theta12 = ( center12 - IR ).theta();
342 theta03 = ( center03 - IR ).theta();
343 delta = theta03 - theta12;
344 xIn = ( ( ( posCorr - IR ).theta() - theta12 ) - delta * 0.5 ) / delta;
345
346 center01 =
347 ( iGeoSvc->GetCrystalPoint( id, 0 ) + iGeoSvc->GetCrystalPoint( id, 1 ) ) / 2.0;
348 center23 =
349 ( iGeoSvc->GetCrystalPoint( id, 2 ) + iGeoSvc->GetCrystalPoint( id, 3 ) ) / 2.0;
350 phi01 = center01.phi();
351 phi23 = center23.phi();
352
353 if ( phiModule == 0 )
354 {
355 phi01 = phi01;
356 phi23 = phi23;
357 }
358 else if ( ( ( thetaModule == 0 || thetaModule == 1 ) && phiModule == 63 ) ||
359 ( ( thetaModule == 2 || thetaModule == 3 ) && phiModule == 79 ) ||
360 ( ( thetaModule == 4 || thetaModule == 5 ) && phiModule == 95 ) )
361 {
362 phi01 = phi01 + 2 * CLHEP::pi;
363 phi23 = phi23 + 2 * CLHEP::pi;
364 }
365 else
366 {
367 phi01 = phi01 < 0 ? phi01 + 2 * CLHEP::pi : phi01;
368 phi23 = phi23 < 0 ? phi23 + 2 * CLHEP::pi : phi23;
369 }
370
371 deltaphi = phi23 - phi01;
372 yIn = ( ( posphi - phi01 ) - deltaphi * 0.5 ) / deltaphi;
373 }
374 // deltaX=xIn-Xext => Xext=xIn-deltaX
375 deltaX = parTheta[0] * atan( xIn * parTheta[1] - parTheta[4] ) + parTheta[2] * xIn +
376 parTheta[3];
377 deltaTheta = deltaX * delta;
378 // deltaY=yIn-Ymc => Ymc=yIn-deltaY
379 deltaY = parPhi[0] * atan( yIn * parPhi[1] - parPhi[4] ) + parPhi[2] * yIn + parPhi[3];
380 deltaPhi = deltaY * deltaphi;
381
382 HepPoint3D rotateVector( 0, 1, 0 ); // y axis
383 rotateVector.rotateZ( center.phi() );
384 posCorr.setZ( posCorr.z() - IRShift );
385 posCorr.rotate( -deltaTheta, rotateVector );
386 posCorr.setZ( posCorr.z() + IRShift );
387 posCorr.rotateZ( -deltaPhi );
388 /*
389 double lengthemc;
390 lengthemc = abs(posCorr.z()/cos(posCorr.theta()));
391 double posDataCorPar;
392 if(Para.DataMode()==1) {
393 if(module==0) posDataCorPar=Para.EastPosDataCor(thetaModule,phiModule);
394 if(module==2) posDataCorPar=Para.WestPosDataCor(thetaModule,phiModule);
395 posCorr.setTheta(posCorr.theta()-posDataCorPar/lengthemc);
396 }
397 */
398 //}
399 }
400
401 // PosCorr=0 without position correction
402 // PosCorr=1 with position correction
403 if ( Para.PosCorr() == 0 )
404 {
405 // int NX0=6;
406 // HepPoint3D posFront=pos-pos/pos.mag()*NX0*1.86; //X_CsI=1.86cm
407 aShower.setPosition( posFront );
408 // aShower.setPosition(pos);
409 }
410
411 if ( Para.PosCorr() == 1 )
412 {
413
414 // pos from the shmax to the front endface of crystal
415 // int NX0=6;
416 // HepPoint3D posCorrFront=posCorr-posCorr/posCorr.mag()*NX0*1.86; //X_CsI=1.86cm
417 // aShower.setPosition(posCorrFront);
418 ////////////
419
420 aShower.setPosition( posCorr );
421 }
422 ////////////////////////////
423 if ( aShower.energy() < 1e-5 ) return;
424
425 double r, theta, phi;
426 double dtheta, dphi, dx, dy, dz;
427
428 r = posCorr.mag();
429 theta = posCorr.theta();
430 phi = posCorr.phi();
431 // cout<<"energy: "<<aShower.energy()<<" theta: "<<theta<<" phi: "<<phi<<endl;
432
433 if ( aShower.energy() > 0 )
434 {
435 dtheta = Para.SigTheta( 0 ) / sqrt( aShower.energy() ) + Para.SigTheta( 1 );
436 dphi = Para.SigPhi( 0 ) / sqrt( aShower.energy() ) + Para.SigPhi( 1 );
437 }
438 else
439 {
440 dtheta = 0;
441 dphi = 0;
442 }
443 // cout<<"dtheta: "<<dtheta<<" dphi: "<<dphi<<endl;
444
445 dx = fabs( iGeoSvc->GetBarrelR() * sin( phi ) * dphi );
446 dy = fabs( iGeoSvc->GetBarrelR() * cos( phi ) * dphi );
447 if ( theta > 0 )
448 dz = fabs( iGeoSvc->GetBarrelR() * dtheta / ( sin( theta ) * sin( theta ) ) );
449 else dz = 0;
450 // cout<<" dx: "<<dx<<" dy: "<<dy<<" dz: "<<dz<<endl;
451
452 aShower.setDtheta( dtheta );
453 aShower.setDphi( dphi );
454
455 //----------------------------------------------------------------------
456 // Error matrix
457 HepSymMatrix matrix( 3 ); // error matrix of r, theta, phi
458 matrix[0][0] = 0;
459 matrix[1][1] = dtheta * dtheta;
460 matrix[2][2] = dphi * dphi;
461 matrix[0][1] = 0;
462 matrix[0][2] = 0;
463 matrix[1][2] = 0;
464 // cout<<"matrix:\n"<<matrix<<endl;
465
466 HepMatrix matrix1( 3, 3 ), matrix2( 3, 3 );
467 matrix1[0][0] = sin( theta ) * cos( phi );
468 matrix1[0][1] = r * cos( theta ) * cos( phi );
469 matrix1[0][2] = -r * sin( theta ) * sin( phi );
470 matrix1[1][0] = sin( theta ) * sin( phi );
471 matrix1[1][1] = r * cos( theta ) * sin( phi );
472 matrix1[1][2] = r * sin( theta ) * cos( phi );
473 matrix1[2][0] = cos( theta );
474 matrix1[2][1] = -r * sin( theta );
475 matrix1[2][2] = 0;
476 // cout<<"matrix1:\n"<<matrix1<<endl;
477
478 for ( int i = 0; i < 3; i++ )
479 {
480 for ( int j = 0; j < 3; j++ ) { matrix2[i][j] = matrix1[j][i]; }
481 }
482 // cout<<"matrix2:\n"<<matrix2<<endl;
483
484 HepMatrix matrix4( 3, 3 );
485 matrix4 = matrix1 * matrix * matrix2;
486 // cout<<"matrix4:\n"<<matrix4<<endl;
487
488 HepSymMatrix matrix5( 3 ); // error matrix of x, y, z
489 for ( int i = 0; i < 3; i++ )
490 {
491 for ( int j = 0; j <= i; j++ ) { matrix5[i][j] = matrix4[i][j]; }
492 }
493 // cout<<"matrix5:\n"<<matrix5<<endl;
494
495 aShower.setErrorMatrix( matrix5 );
496
497 if ( matrix5[0][0] > 0 ) dx = sqrt( matrix5[0][0] );
498 if ( matrix5[1][1] > 0 ) dy = sqrt( matrix5[1][1] );
499 if ( matrix5[2][2] > 0 ) dz = sqrt( matrix5[2][2] );
500}
HepGeom::Point3D< double > HepPoint3D
Double_t etot
map< RecEmcID, RecEmcFraction, less< RecEmcID > > RecEmcFractionMap
double w
void setPosition(const HepPoint3D &pos)
void setErrorMatrix(const HepSymMatrix &error)
static unsigned int barrel_ec(const Identifier &id)
Values of different levels (failure returns 0).
Definition EmcID.cxx:36
static unsigned int theta_module(const Identifier &id)
Definition EmcID.cxx:41
static unsigned int phi_module(const Identifier &id)
Definition EmcID.cxx:46
double LogPosOffset() const
double WestLogShMaxPhiPara(int n, int m) const
double BarrLogShMaxPhiPara(int n, int m) const
static EmcRecParameter & GetInstance()
double EastLogShMaxPhiPara(int n, int m) const
double EastLogShMaxThetaPara(int n, int m) const
double PosCorr() const
double SigTheta(int n) const
double WestLogShMaxThetaPara(int n, int m) const
double SigPhi(int n) const
double BarrLogShMaxThetaPara(int n, int m) const
virtual double GetBarrelR() const =0
virtual HepPoint3D GetCFrontCenter(const Identifier &id) const =0
virtual HepPoint3D GetCrystalPoint(const Identifier &id, const int i) const =0
virtual HepPoint3D GetCCenter(const Identifier &id) const =0
RecEmcFractionMap::const_iterator End() const
RecEmcFractionMap getFractionMap5x5() const
RecEmcFractionMap::const_iterator Begin() const
RecEmcFractionMap getFractionMap3x3() const
complex_t R(double Q2, double M2, double G, double Mp2, double Mm2)
Definition TUtil.h:22

◆ Position() [2/3]

virtual void EmcRecShowerPosLogShMax::Position ( RecEmcShower & aShower)
virtual

Implements EmcRecShowerPosAbs.

◆ Position() [3/3]

virtual void EmcRecShowerPosLogShMax::Position ( RecEmcShower & aShower)
virtual

Implements EmcRecShowerPosAbs.


The documentation for this class was generated from the following files: