/[PAMELA software]/calo/flight/CaloEnergy/src/CaloEnergy.cpp
ViewVC logotype

Contents of /calo/flight/CaloEnergy/src/CaloEnergy.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (show annotations) (download) (vendor branch)
Mon Jun 29 09:42:10 2009 UTC (15 years, 5 months ago) by mocchiut
Branch: CaloEnergy
CVS Tags: start, v1r00
Changes since 1.1: +0 -0 lines
Imported sources

1 #include <CaloEnergy.h>
2 #include <PamLevel2.h>
3
4 //--------------------------------------
5 /**
6 * Default constructor
7 */
8 CaloEnergy::CaloEnergy(){
9 Clear();
10 }
11
12 CaloEnergy::CaloEnergy(PamLevel2 *l2p){
13 //
14 Clear();
15 //
16 L2 = l2p;
17 //
18 if ( !L2->IsORB() ) printf(" WARNING: OrbitalInfo Tree is needed, the plugin could not work properly without it \n");
19 //
20 OBT = 0;
21 PKT = 0;
22 atime = 0;
23 sntr = "start";
24 AOBT = 0;
25 APKT = 0;
26 aatime = 0;
27 asntr = "start";
28 //
29 debug = false;
30 //
31 fLong = false;
32 fSimu = false;
33 fPl = 1;
34 //
35 this->DefineGeometry();
36 fXosel = true;
37 fXesel = true;
38 fYosel = true;
39 fYesel = true;
40 fConv_r = 44.4;
41 //
42 }
43
44 CaloEnergy::CaloEnergy(PamLevel2 *l2p, Bool_t simulation){
45 //
46 Clear();
47 //
48 L2 = l2p;
49 //
50 if ( !L2->IsORB() ) printf(" WARNING: OrbitalInfo Tree is needed, the plugin could not work properly without it \n");
51 //
52 OBT = 0;
53 PKT = 0;
54 atime = 0;
55 sntr = "start";
56 //
57 AOBT = 0;
58 APKT = 0;
59 aatime = 0;
60 asntr = "start";
61 //
62 debug = false;
63 //
64 fLong = false;
65 fSimu = simulation;
66 fPl = 1;
67 //
68 this->DefineGeometry();
69 fXosel =true;
70 fXesel = true;
71 fYosel = true;
72 fYesel = true;
73 fConv_r = 44.4;
74 //
75 }
76
77 void CaloEnergy::DefineGeometry(){
78 //
79 fM = 2.;
80 fM1 = fM - 0.122 -0.096;
81 if ( fM1 < 0. ) fM1 = 0.;
82 //
83 CaloStrip *cs = new CaloStrip(fSimu);
84
85 // vista y piano 0 striscia 0
86 cs->Set(1,0,0);
87 xe1= cs->GetY();
88 z1= cs->GetZ();
89 // vista y piano 0 striscia 31
90 cs->Set(1,0,31);
91 xe2= cs->GetY();
92 // vista y piano 0 striscia 32
93 cs->Set(1,0,32);
94 xe3= cs->GetY();
95 // vista y piano 0 striscia 63
96 cs->Set(1,0,63);
97 xe4= cs->GetY();
98 // vista y piano 0 striscia 64
99 cs->Set(1,0,64);
100 xe5= cs->GetY();
101 // vista y piano 0 striscia 95
102 cs->Set(1,0,95);
103 xe6= cs->GetY();
104
105 // vista x piano 0 striscia 0
106 cs->Set(0,0,0);
107 yo1= cs->GetX();
108 z2= cs->GetZ();
109 // vista x piano 0 striscia 31
110 cs->Set(0,0,31);
111 yo2= cs->GetX();
112 // vista x piano 0 striscia 32
113 cs->Set(0,0,32);
114 yo3= cs->GetX();
115 // vista x piano 0 striscia 63
116 cs->Set(0,0,63);
117 yo4= cs->GetX();
118 // vista x piano 0 striscia 64
119 cs->Set(0,0,64);
120 yo5= cs->GetX();
121 // vista x piano 0 striscia 95
122 cs->Set(0,0,95);
123 yo6= cs->GetX();
124
125
126 // vista y piano 1 striscia 0
127 cs->Set(1,1,0);
128 xo1= cs->GetY();
129 z3= cs->GetZ();
130 // vista y piano 1 striscia 31
131 cs->Set(1,1,31);
132 xo2= cs->GetY();
133 // vista y piano 1 striscia 32
134 cs->Set(1,1,32);
135 xo3= cs->GetY();
136 // vista y piano 1 striscia 63
137 cs->Set(1,1,63);
138 xo4= cs->GetY();
139 // vista y piano 1 striscia 64
140 cs->Set(1,1,64);
141 xo5= cs->GetY();
142 // vista y piano 1 striscia 95
143 cs->Set(1,1,95);
144 xo6= cs->GetY();
145
146 // vista x piano 1 striscia 0
147 cs->Set(0,1,0);
148 ye1= cs->GetX();
149 z4= cs->GetZ();
150 // vista x piano 1 striscia 31
151 cs->Set(0,1,31);
152 ye2= cs->GetX();
153 // vista x piano 1 striscia 32
154 cs->Set(0,1,32);
155 ye3= cs->GetX();
156 // vista x piano 1 striscia 63
157 cs->Set(0,1,63);
158 ye4= cs->GetX();
159 // vista x piano 1 striscia 64
160 cs->Set(0,1,64);
161 ye5= cs->GetX();
162 // vista x piano 1 striscia 95
163 cs->Set(0,1,95);
164 ye6= cs->GetX();
165
166 //
167 for (Int_t p = 0; p<22; p ++){
168 for (Int_t v = 0; v<2; v++ ){
169 cs->Set(v,p,0);
170 trk_z[p][v]= cs->GetZ(); // << cooordinata Z piano
171 };
172 };
173 //
174 delete cs;
175 //
176 }
177
178 void CaloEnergy::Clear(){
179 //
180 fEnergy = 0.;
181 memset(enstrip,0,2*22*96*(sizeof(Float_t)));
182 en = 0.;
183 view = 0;
184 plane = 0;
185 strip = 0;
186 energyxe = 0.;
187 energyyo = 0.;
188 energyxo = 0.;
189 energyye = 0.;
190 memset(en_xep,0,11*sizeof(Float_t));
191 memset(en_yep,0,11*sizeof(Float_t));
192 memset(en_xop,0,11*sizeof(Float_t));
193 memset(en_yop,0,11*sizeof(Float_t));
194 //
195 }
196
197 void CaloEnergy::Print(){
198 //
199 printf("========================================================================\n");
200 printf(" OBT: %u PKT: %u ATIME: %u \n",OBT,PKT,atime);
201 printf(" fEnergy :.............. %f \n",fEnergy);
202 printf(" fMax_plane :........... %i \n",fMax_plane);
203 printf(" fCount :.............. %f \n",fCount);
204 printf(" fXesel :.............. %i \n",fXesel);
205 printf(" fXosel :.............. %i \n",fXosel);
206 printf(" fYesel :.............. %i \n",fYesel);
207 printf(" fYosel :.............. %i \n",fYosel);
208 printf(" fSimu :.............. %i \n",fSimu);
209 printf(" fM :.............. %f \n",fM);
210 printf(" fM1 :.............. %f \n",fM1);
211 printf(" fPl :.............. %f \n",fPl);
212 printf(" fConv_r :.............. %f \n",fConv_r);
213 printf(" fLong :.............. %i \n",fLong);
214 printf(" energyxe:.............. %f \n",energyxe);
215 printf(" energyxo:.............. %f \n",energyxo);
216 printf(" energyye:.............. %f \n",energyye);
217 printf(" energyyo:.............. %f \n",energyyo);
218 printf(" debug :.............. %i \n",debug);
219
220 printf("========================================================================\n");
221 //
222 }
223
224 void CaloEnergy::Delete(){
225 Clear();
226 }
227
228
229 Bool_t CaloEnergy::IsInsideAcceptance(TString section){
230 return(this->IsInsideAcceptance(section,true));
231 }
232
233 Bool_t CaloEnergy::IsInsideAcceptance(TString section, Bool_t fast){
234 //
235 //
236 TString ntr = section;
237 if ( !L2 ){
238 printf(" ERROR: cannot find PamLevel2 object, use the correct constructor or check your program!\n");
239 printf(" ERROR: CaloEnergy variables not filled \n");
240 return false;
241 };
242 //
243 Bool_t newentry = false;
244 //
245 if ( L2->IsORB() ){
246 if ( L2->GetOrbitalInfo()->pkt_num != APKT || L2->GetOrbitalInfo()->OBT != AOBT || L2->GetOrbitalInfo()->absTime != aatime || strcmp(ntr.Data(),asntr.Data()) ){
247 newentry = true;
248 AOBT = L2->GetOrbitalInfo()->OBT;
249 APKT = L2->GetOrbitalInfo()->pkt_num;
250 aatime = L2->GetOrbitalInfo()->absTime;
251 asntr = ntr;
252 };
253 } else {
254 newentry = true;
255 };
256 //
257 if ( !newentry ) return fSel;
258 //
259 if ( debug ) printf(" ########## IsInsideAcceptance ######### \n");
260 //
261 fSel = false;
262 section.ToUpper();
263 fXosel = false;
264 fXesel = false;
265 fYosel = false;
266 fYesel = false;
267 fCount = 0.;
268 //
269 Int_t ss = Int_t(section.Contains("XO"))+Int_t(section.Contains("XE"))+Int_t(section.Contains("YO"))+Int_t(section.Contains("YE"));
270 if ( ss > 1 ) fast = false;
271 if ( !ss ){
272 printf(" ERROR: section must be XO or XE or YO or YE while it is %s \n",section.Data());
273 };
274 //
275 Float_t track_coordx[22][2];
276 Float_t track_coordy[22][2];
277 //
278 Float_t tgx_cl2;
279 Float_t tgy_cl2;
280 tgx_cl2 = L2->GetCaloLevel2()->tanx[0];
281 tgy_cl2 = L2->GetCaloLevel2()->tany[0];
282 //
283 for (Int_t p=0; p<22; p++){
284 track_coordy[p][1] = L2->GetCaloLevel2()->cbar[p][1];
285 track_coordx[p][1] = L2->GetCaloLevel2()->cbar[p][0] - fabs(trk_z[p][1]-trk_z[p][0])*tgx_cl2;
286 track_coordx[p][0] = L2->GetCaloLevel2()->cbar[p][0];
287 track_coordy[p][0] = L2->GetCaloLevel2()->cbar[p][1] - fabs(trk_z[p][1]-trk_z[p][0])*tgy_cl2;
288 if ( debug ) printf(" p %i track_coordy[p][1] %f track_coordx[p][1] %f track_coordx[p][0] %f track_coordy[p][0] %f \n",p,track_coordy[p][1],track_coordx[p][1],track_coordx[p][0],track_coordy[p][0]);
289 };
290 //
291 if ( debug ) printf(" acceptance fast %i ss %i tgx %f tgy %f\n",fast,ss,tgx_cl2,tgy_cl2);
292 //
293 if ( section.Contains("XO") ){
294 for (Int_t i=0; i<11; i++) {
295 if
296 (
297 (((track_coordx[2*i+1][1]>=(-12.054+fM))&&
298 (track_coordx[2*i+1][1]<=(-4.246-fM)))&&
299 (((L2->GetCaloLevel2()->cbar[2*i+1][1]>=xo1 + fM1)&&
300 (L2->GetCaloLevel2()->cbar[2*i+1][1]<=xo2 - fM1 ))||
301 ((L2->GetCaloLevel2()->cbar[2*i+1][1]>=xo3 + fM1)&&
302 (L2->GetCaloLevel2()->cbar[2*i+1][1]<=xo4 - fM1 ))||
303 ((L2->GetCaloLevel2()->cbar[2*i+1][1]>=xo5 + fM1)&&
304 (L2->GetCaloLevel2()->cbar[2*i+1][1]<=xo6 - fM1 ))))||
305
306 (((track_coordx[2*i+1][1]>=(-4.004+fM))&&
307 (track_coordx[2*i+1][1]<=(3.804-fM)))&&
308 (((L2->GetCaloLevel2()->cbar[2*i+1][1]>=xo1 + fM1)&&
309 (L2->GetCaloLevel2()->cbar[2*i+1][1]<=xo2 - fM1 ))||
310 ((L2->GetCaloLevel2()->cbar[2*i+1][1]>=xo3 + fM1)&&
311 (L2->GetCaloLevel2()->cbar[2*i+1][1]<=xo4 - fM1))||
312 ((L2->GetCaloLevel2()->cbar[2*i+1][1]>=xo5 + fM1)&&
313 (L2->GetCaloLevel2()->cbar[2*i+1][1]<=xo6 - fM1 ))))||
314
315 (((track_coordx[2*i+1][1]>=(4.046+fM))&&
316 (track_coordx[2*i+1][1]<=(11.854-fM)))&&
317 (((L2->GetCaloLevel2()->cbar[2*i+1][1]>=xo1 + fM1)&&
318 (L2->GetCaloLevel2()->cbar[2*i+1][1]<=xo2 - fM1))||
319 ((L2->GetCaloLevel2()->cbar[2*i+1][1]>=xo3 + fM1)&&
320 (L2->GetCaloLevel2()->cbar[2*i+1][1]<=xo4 - fM1 ))||
321 ((L2->GetCaloLevel2()->cbar[2*i+1][1]>=xo5 + fM1)&&
322 (L2->GetCaloLevel2()->cbar[2*i+1][1]<=xo6 - fM1 ))))
323 ){
324 fXosel = true;
325 } else {
326 if ( fast ) return false;
327 fXosel = false;
328 break;
329 };
330 };
331 };
332 //
333 if ( section.Contains("XE") ){
334 for (Int_t i=0; i<11; i++) {
335 if
336 (
337 (((track_coordx[2*i][1]>=(-11.854+fM))&&
338 (track_coordx[2*i][1]<=(-4.046-fM)))&&
339 (((L2->GetCaloLevel2()->cbar[2*i][1]>=xe1 + fM1)&&
340 (L2->GetCaloLevel2()->cbar[2*i][1]<=xe2 - fM1 ))||
341 ((L2->GetCaloLevel2()->cbar[2*i][1]>=xe3 + fM1)&&
342 (L2->GetCaloLevel2()->cbar[2*i][1]<=xe4 - fM1 ))||
343 ((L2->GetCaloLevel2()->cbar[2*i][1]>=xe5 + fM1)&&
344 (L2->GetCaloLevel2()->cbar[2*i][1]<=xe6 - fM1 ))))||
345
346 (((track_coordx[2*i][1]>=(-3.804+fM))&&
347 (track_coordx[2*i][1]<=(4.004-fM)))&&
348 (((L2->GetCaloLevel2()->cbar[2*i][1]>=xe1 + fM1)&&
349 (L2->GetCaloLevel2()->cbar[2*i][1]<=xe2 - fM1 ))||
350 ((L2->GetCaloLevel2()->cbar[2*i][1]>=xe3 + fM1)&&
351 (L2->GetCaloLevel2()->cbar[2*i][1]<=xe4 - fM1))||
352 ((L2->GetCaloLevel2()->cbar[2*i][1]>=xe5 + fM1)&&
353 (L2->GetCaloLevel2()->cbar[2*i][1]<=xe6 - fM1 ))))||
354
355 (((track_coordx[2*i][1]>=(4.246+fM))&&
356 (track_coordx[2*i][1]<=(12.054-fM)))&&
357 (((L2->GetCaloLevel2()->cbar[2*i][1]>=xe1 + fM1)&&
358 (L2->GetCaloLevel2()->cbar[2*i][1]<=xe2 - fM1))||
359 ((L2->GetCaloLevel2()->cbar[2*i][1]>=xe3 + fM1)&&
360 (L2->GetCaloLevel2()->cbar[2*i][1]<=xe4 - fM1 ))||
361 ((L2->GetCaloLevel2()->cbar[2*i][1]>=xe5 + fM1)&&
362 (L2->GetCaloLevel2()->cbar[2*i][1]<=xe6 - fM1 ))))
363 ){
364 fXesel = true;
365 } else {
366 if ( fast ) return false;
367 fXesel = false;
368 break;
369 };
370 };
371 };
372 //
373 if ( section.Contains("YE") ){
374 for (Int_t i=0; i<11; i++) {
375 if
376 (
377 (((track_coordy[2*i+1][0]>=(-12.154+fM))&&
378 (track_coordy[2*i+1][0]<=(-4.346-fM)))&&
379 (((L2->GetCaloLevel2()->cbar[2*i+1][0]>=ye1 + fM1)&&
380 (L2->GetCaloLevel2()->cbar[2*i+1][0]<=ye2 - fM1 ))||
381 ((L2->GetCaloLevel2()->cbar[2*i+1][0]>=ye3 + fM1)&&
382 (L2->GetCaloLevel2()->cbar[2*i+1][0]<=ye4 - fM1 ))||
383 ((L2->GetCaloLevel2()->cbar[2*i+1][0]>=ye5 + fM1)&&
384 (L2->GetCaloLevel2()->cbar[2*i+1][0]<=ye6 - fM1 ))))||
385
386 (((track_coordy[2*i+1][0]>=(-4.104+fM))&&
387 (track_coordy[2*i+1][0]<=(3.704-fM)))&&
388 (((L2->GetCaloLevel2()->cbar[2*i+1][0]>=ye1 + fM1)&&
389 (L2->GetCaloLevel2()->cbar[2*i+1][0]<=ye2 - fM1 ))||
390 ((L2->GetCaloLevel2()->cbar[2*i+1][0]>=ye3 + fM1)&&
391 (L2->GetCaloLevel2()->cbar[2*i+1][0]<=ye4 - fM1))||
392 ((L2->GetCaloLevel2()->cbar[2*i+1][0]>=ye5 + fM1)&&
393 (L2->GetCaloLevel2()->cbar[2*i+1][0]<=ye6 - fM1 ))))||
394
395 (((track_coordy[2*i+1][0]>=(3.946+fM))&&
396 (track_coordy[2*i+1][0]<=(11.754-fM)))&&
397 (((L2->GetCaloLevel2()->cbar[2*i+1][0]>=ye1 + fM1)&&
398 (L2->GetCaloLevel2()->cbar[2*i+1][0]<=ye2 - fM1))||
399 ((L2->GetCaloLevel2()->cbar[2*i+1][0]>=ye3 + fM1)&&
400 (L2->GetCaloLevel2()->cbar[2*i+1][0]<=ye4 - fM1 ))||
401 ((L2->GetCaloLevel2()->cbar[2*i+1][0]>=ye5 + fM1)&&
402 (L2->GetCaloLevel2()->cbar[2*i+1][0]<=ye6 - fM1 ))))
403 ){
404 fYesel = true;
405 } else {
406 if ( fast ) return false;
407 fYesel = false;
408 break;
409 };
410 };
411 };
412 //
413 if ( section.Contains("YO") ){
414 for (Int_t i=0; i<11; i++) {
415 if ( debug ) printf(" i %i track_coordy[2*i][0] %f L2->GetCaloLevel2()->cbar[2*i][0] %f \n",i,track_coordy[2*i][0],L2->GetCaloLevel2()->cbar[2*i][0]);
416 if ( debug ) printf(" i %i fm %f fm1 %f yo1 %g yo2 %f yo3 %f yo4 %f yo5 %f yo6 %f \n",i,fM,fM1,yo1,yo2,yo3,yo4,yo5,yo6);
417 if
418 (
419 (((track_coordy[2*i][0]>=(-11.954+fM))&&
420 (track_coordy[2*i][0]<=(-4.146-fM)))&&
421 (((L2->GetCaloLevel2()->cbar[2*i][0]>=yo1 + fM1)&&
422 (L2->GetCaloLevel2()->cbar[2*i][0]<=yo2 - fM1 ))||
423 ((L2->GetCaloLevel2()->cbar[2*i][0]>=yo3 + fM1)&&
424 (L2->GetCaloLevel2()->cbar[2*i][0]<=yo4 - fM1 ))||
425 ((L2->GetCaloLevel2()->cbar[2*i][0]>=yo5 + fM1)&&
426 (L2->GetCaloLevel2()->cbar[2*i][0]<=yo6 - fM1 ))))||
427
428 (((track_coordy[2*i][0]>=(-3.904+fM))&&
429 (track_coordy[2*i][0]<=(+3.904-fM)))&&
430 (((L2->GetCaloLevel2()->cbar[2*i][0]>=yo1 + fM1)&&
431 (L2->GetCaloLevel2()->cbar[2*i][0]<=yo2 - fM1 ))||
432 ((L2->GetCaloLevel2()->cbar[2*i][0]>=yo3 + fM1)&&
433 (L2->GetCaloLevel2()->cbar[2*i][0]<=yo4 - fM1))||
434 ((L2->GetCaloLevel2()->cbar[2*i][0]>=yo5 + fM1)&&
435 (L2->GetCaloLevel2()->cbar[2*i][0]<=yo6 - fM1 ))))||
436
437 (((track_coordy[2*i][0]>=(4.146+fM))&&
438 (track_coordy[2*i][0]<=(11.954-fM)))&&
439 (((L2->GetCaloLevel2()->cbar[2*i][0]>=yo1 + fM1)&&
440 (L2->GetCaloLevel2()->cbar[2*i][0]<=yo2 - fM1))||
441 ((L2->GetCaloLevel2()->cbar[2*i][0]>=yo3 + fM1)&&
442 (L2->GetCaloLevel2()->cbar[2*i][0]<=yo4 - fM1 ))||
443 ((L2->GetCaloLevel2()->cbar[2*i][0]>=yo5 + fM1)&&
444 (L2->GetCaloLevel2()->cbar[2*i][0]<=yo6 - fM1 ))))
445 ){
446 fYosel = true;
447 } else {
448 if ( fast ) return false;
449 fYosel = false;
450 break;
451 };
452 };
453 };
454 //
455 fSel = ( fXesel || fYesel || fXosel || fYosel );
456 fCount = (Float_t)((Int_t)fXesel+(Int_t)fXosel+(Int_t)fYesel+(Int_t)fYosel);
457 if ( debug ) printf(" IsInside XE %i XO %i YE %i YO %i => SEL %i \n",fXesel,fXosel,fYesel,fYosel,fSel);
458 //
459 return fSel;
460 //
461 }
462
463 void CaloEnergy::Process(){
464 TString xo = "XO";
465 this->Process(xo);
466 }
467
468
469 void CaloEnergy::Process(TString section){
470 //
471 TString ntr = section;
472 if ( !L2 ){
473 printf(" ERROR: cannot find PamLevel2 object, use the correct constructor or check your program!\n");
474 printf(" ERROR: CaloEnergy variables not filled \n");
475 return;
476 };
477 //
478 Bool_t newentry = false;
479 //
480 if ( L2->IsORB() ){
481 if ( L2->GetOrbitalInfo()->pkt_num != PKT || L2->GetOrbitalInfo()->OBT != OBT || L2->GetOrbitalInfo()->absTime != atime || strcmp(ntr.Data(),sntr.Data()) ){
482 newentry = true;
483 OBT = L2->GetOrbitalInfo()->OBT;
484 PKT = L2->GetOrbitalInfo()->pkt_num;
485 atime = L2->GetOrbitalInfo()->absTime;
486 sntr = ntr;
487 };
488 } else {
489 newentry = true;
490 };
491 //
492 if ( !newentry ) return;
493 //
494 if ( debug ) printf(" Processing event at OBT %u PKT %u time %u section %s\n",OBT,PKT,atime,section.Data());
495 //
496 Clear();
497 //
498 if ( fLong ){
499 // use long fit to measure energy
500 } else {
501 //
502 if ( this->IsInsideAcceptance(section) ){
503 //
504 for (Int_t ch=0; ch< L2->GetCaloLevel1()->istrip; ch++){
505 en = L2->GetCaloLevel1()->DecodeEstrip(ch,view,plane,strip);
506 enstrip[view][plane][strip]=en;
507 };
508 for (Int_t i=0;i<11;i++){
509 for(strip=0; strip<96; strip++) {
510 en_xep[i] += enstrip[1][2*i][strip];
511 en_yop[i] += enstrip[0][2*i][strip];
512 en_xop[i] += enstrip[1][2*i+1][strip];
513 en_yep[i] += enstrip[0][2*i+1][strip];
514 };
515 energyxe += en_xep[i];
516 energyyo += en_yop[i];
517 energyxo += en_xop[i];
518 energyye += en_yep[i];
519 };
520 fMax_plane = 0;
521 Float_t en_maxplane = 0.;
522 Float_t max_en= 0.;
523 if ( fXosel ){
524 max_en = 0.;
525 for (Int_t ipl =0; ipl < 11; ipl ++) {
526 if(en_xop[ipl] > max_en) {
527 max_en = en_xop[ipl];
528 fMax_plane = ipl;
529 };
530 };
531 //
532 for (Int_t iplm=0;iplm<=(fMax_plane+fPl) ;iplm++) en_maxplane += en_xop[iplm];
533 };
534 if ( fXesel ){
535 max_en = 0.;
536 for (Int_t ipl =0; ipl < 11; ipl ++) {
537 if(en_xep[ipl] > max_en) {
538 max_en = en_xep[ipl];
539 fMax_plane = ipl;
540 };
541 };
542 //
543 for (Int_t iplm=0;iplm<=(fMax_plane+fPl) ;iplm++) en_maxplane += en_xep[iplm];
544 };
545 if ( fYosel ){
546 max_en = 0.;
547 for (Int_t ipl =0; ipl < 11; ipl ++) {
548 if(en_yop[ipl] > max_en) {
549 max_en = en_yop[ipl];
550 fMax_plane = ipl;
551 };
552 };
553 //
554 for (Int_t iplm=0;iplm<=(fMax_plane+fPl) ;iplm++) en_maxplane += en_yop[iplm];
555 };
556 if ( fYesel ){
557 max_en = 0.;
558 for (Int_t ipl =0; ipl < 11; ipl ++) {
559 if(en_yep[ipl] > max_en) {
560 max_en = en_yep[ipl];
561 fMax_plane = ipl;
562 };
563 };
564 //
565 for (Int_t iplm=0;iplm<=(fMax_plane+fPl) ;iplm++) en_maxplane += en_yep[iplm];
566 };
567 //
568 fEnergy = en_maxplane/fCount/fConv_r;
569 //
570 if ( debug ) printf(" fMax_plane %i conv_r %f en_maxplane %f encalo %f \n",fMax_plane,fConv_r,en_maxplane,fEnergy);
571 if ( debug ) printf(" XE %i XO %i YE %i YO %i \n",fXesel,fXosel,fYesel,fYosel);
572 //
573 } else {
574 if ( debug ) printf(" Outside acceptance \n");
575 fEnergy = -1.;
576 };
577 };
578 //
579 }

  ViewVC Help
Powered by ViewVC 1.1.23