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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.12 by mocchiut, Tue Aug 18 09:24:51 2009 UTC revision 1.17 by mocchiut, Fri Nov 27 10:31:08 2009 UTC
# Line 35  CaloEnergy::CaloEnergy(PamLevel2 *l2p, B Line 35  CaloEnergy::CaloEnergy(PamLevel2 *l2p, B
35    //    //
36  }  }
37    
38    void CaloEnergy::Delete(){
39      Clear();
40      delete this;
41    }
42    
43    void CaloEnergy::UseLevel2(){
44      if ( clong ){
45        delete clong;
46        clong = new CaloLong(L2);
47        clong->SplitInto(0,22);
48        clong->HeavyTail(true);
49      };
50      if ( cp ) delete cp;
51      cp = NULL;
52    }
53    
54  void CaloEnergy::UseCaloPreSampler(){  void CaloEnergy::UseCaloPreSampler(){
55    //    //
56    // use the presampler setting forcefitmode to 1000 means to force the DV routine to find the track inside the calorimeter using the "shower" approach developed for electrons    // use the presampler setting forcefitmode to 1000 means to force the DV routine to find the track inside the calorimeter using the "shower" approach developed for electrons
# Line 46  void CaloEnergy::UseCaloPreSampler(){ Line 62  void CaloEnergy::UseCaloPreSampler(){
62  //   cp->ForceCaloFit();  //   cp->ForceCaloFit();
63  //   cp->SetDebug(true);  //   cp->SetDebug(true);
64  //   cp->Process();  //   cp->Process();
65    if ( clong ) clong->SetCaloLevel2Pointer(cp->GetLevel2Pointer());    if ( clong ) clong->SetCaloLevel2Pointer(cp->GetCaloLevel2Pointer());
66  }  }
67    
68    
# Line 55  void CaloEnergy::UseLongFit(){ Line 71  void CaloEnergy::UseLongFit(){
71    fLong = true;    fLong = true;
72    if ( !clong ){    if ( !clong ){
73      clong = new CaloLong(L2);      clong = new CaloLong(L2);
74      if ( cp ) clong->SetCaloLevel2Pointer(cp->GetLevel2Pointer());      if ( cp ) clong->SetCaloLevel2Pointer(cp->GetCaloLevel2Pointer());
75      clong->SplitInto(0,22);      clong->SplitInto(0,22);
76        clong->HeavyTail(true);
77    };    };
78    //    //
79  }  }
# Line 79  void CaloEnergy::Set(){ Line 96  void CaloEnergy::Set(){
96    //    //
97    indep = false;    indep = false;
98    //    //
99      fAllpl = true;
100    fLong = false;    fLong = false;
101    fPl = 1;    fPl = 1;
102    fRad = -1;    fRad = -1;
# Line 86  void CaloEnergy::Set(){ Line 104  void CaloEnergy::Set(){
104    clong = NULL;    clong = NULL;
105    x0max = -1.;    x0max = -1.;
106    //    //
107      multicol = false;
108      //
109    this->DefineGeometry();    this->DefineGeometry();
110    fXosel =true;    fXosel =true;
111    fXesel = true;    fXesel = true;
# Line 100  void CaloEnergy::Set(){ Line 120  void CaloEnergy::Set(){
120    fYomin = 1000;    fYomin = 1000;
121    fYemin = 1000;    fYemin = 1000;
122    //    //
123      this->UseCaloPreSampler(); // use it by default, to go back to "standard" mode use CaloEnergy::UseLevel2().
124      //
125  }  }
   
 void CaloEnergy::SetMinimumContainment(TString section, Int_t plane){  
   section.ToUpper();  
   if ( section.Contains("XO") ) fXomin = plane;  
   if ( section.Contains("XE") ) fXemin = plane;  
   if ( section.Contains("YO") ) fYomin = plane;  
   if ( section.Contains("YE") ) fYemin = plane;  
 }  
   
 void CaloEnergy::SetMinimumContainment(Int_t plane){  
   this->SetMinimumContainment("XEXOYEYO",plane);  
 }  
   
 Int_t CaloEnergy::GetMinimumContainment(TString section){  
   section.ToUpper();  
   if ( section.Contains("XO") ) return(fXomin);  
   if ( section.Contains("XE") ) return(fXemin);  
   if ( section.Contains("YE") ) return(fYemin);  
   if ( section.Contains("YO") ) return(fYomin);  
   printf(" ERROR: section not recognized \n");  
   return(-1000);  
 }  
   
 void CaloEnergy::SetConversionFactor(TString section, Float_t conv){  
   section.ToUpper();  
   if ( section.Contains("XO") ) fConv_rxo = conv;  
   if ( section.Contains("XE") ) fConv_rxe = conv;  
   if ( section.Contains("YO") ) fConv_ryo = conv;  
   if ( section.Contains("YE") ) fConv_rye = conv;  
 }  
   
 void CaloEnergy::SetConversionFactor(Float_t conv){  
   this->SetConversionFactor("XEXOYEYO",conv);  
 }  
   
 Float_t CaloEnergy::GetConversionFactor(TString section){  
   section.ToUpper();  
   if ( section.Contains("XO") ) return(fConv_rxo);  
   if ( section.Contains("XE") ) return(fConv_rxe);  
   if ( section.Contains("YO") ) return(fConv_ryo);  
   if ( section.Contains("YE") ) return(fConv_rye);  
   printf(" ERROR: section not recognized \n");  
   return(-1000.);  
 }  
   
 Int_t CaloEnergy::GetMaxplane(TString section){  
   section.ToUpper();  
   if ( section.Contains("XO") ) return fMax_planexo;  
   if ( section.Contains("XE") ) return fMax_planexe;  
   if ( section.Contains("YO") ) return fMax_planeyo;  
   if ( section.Contains("YE") ) return fMax_planeye;  
   return(-1);  
 }  
   
 Float_t CaloEnergy::GetEnergyAtMaxplane(TString section){  
   section.ToUpper();  
   if ( section.Contains("XO") ) return xomax_en;  
   if ( section.Contains("XE") ) return xemax_en;  
   if ( section.Contains("YO") ) return yomax_en;  
   if ( section.Contains("YE") ) return yemax_en;  
   return(-1);  
 }  
   
 Float_t CaloEnergy::GetMaxEnergy(TString section){  
   section.ToUpper();  
   if ( fLong ){  
     this->Process(section);      
     return fXOen_maxplane;  
   } else {  
     if ( section.Contains("XO") ) return fXOen_maxplane;  
     if ( section.Contains("XE") ) return fXEen_maxplane;  
     if ( section.Contains("YO") ) return fYOen_maxplane;  
     if ( section.Contains("YE") ) return fYEen_maxplane;  
   };  
   return(-1);  
 }  
   
 Float_t CaloEnergy::GetMaxEnergy(){    
   if ( fLong ){  
     if ( debug ) printf(" oh! call process! with asntr %s and sntr %s \n",asntr.Data(),sntr.Data());  
     this->Process(asntr);  
   };  
   return((fXEen_maxplane+fYOen_maxplane+fYEen_maxplane+fXOen_maxplane));  
 }  
   
126  void CaloEnergy::DefineGeometry(){  void CaloEnergy::DefineGeometry(){
127    //    //
128    // Use CaloStrip to determine once the position of border strips for each section    // Use CaloStrip to determine once the position of border strips for each section
129    //    //
   //  
130    //  fM = 2. + 0.096; // real position from cbar BUG the 0.096 is already taken into account in the border calculation made by Giovanna    //  fM = 2. + 0.096; // real position from cbar BUG the 0.096 is already taken into account in the border calculation made by Giovanna
131    fM = 2. ; // real position from cbar    fM = 2. ; // real position from cbar
132    //  fM1 = 2. - 0.122 - 0.096; // due to calculation of xe1 etc. BUG! this way we count from the silicon border not from the silicon sensitive area    //  fM1 = 2. - 0.122 - 0.096; // due to calculation of xe1 etc. BUG! this way we count from the silicon border not from the silicon sensitive area
# Line 202  void CaloEnergy::DefineGeometry(){ Line 138  void CaloEnergy::DefineGeometry(){
138    // view y plane 0 strip 0    // view y plane 0 strip 0
139    cs->Set(1,0,0);    cs->Set(1,0,0);
140    xe1= cs->GetY();    xe1= cs->GetY();
   //  z1= cs->GetZ();  
141    // view y plane 0 strip 31    // view y plane 0 strip 31
142    cs->Set(1,0,31);    cs->Set(1,0,31);
143    xe2= cs->GetY();    xe2= cs->GetY();
# Line 218  void CaloEnergy::DefineGeometry(){ Line 153  void CaloEnergy::DefineGeometry(){
153    // view y plane 0 strip 95    // view y plane 0 strip 95
154    cs->Set(1,0,95);    cs->Set(1,0,95);
155    xe6= cs->GetY();    xe6= cs->GetY();
   
   //  printf(" xe1 %f xe2 %f xe3 %f xe4 %f xe5 %f xe6 %f \n",xe1,xe2,xe3,xe4,xe5,xe6);  
   
156    // view x plane 0 strip 0    // view x plane 0 strip 0
157    cs->Set(0,0,0);    cs->Set(0,0,0);
158    yo1= cs->GetX();    yo1= cs->GetX();
   //  z2= cs->GetZ();  
159    // view x plane 0 strip 31    // view x plane 0 strip 31
160    cs->Set(0,0,31);    cs->Set(0,0,31);
161    yo2= cs->GetX();    yo2= cs->GetX();
# Line 240  void CaloEnergy::DefineGeometry(){ Line 171  void CaloEnergy::DefineGeometry(){
171    // view x plane 0 strip 95    // view x plane 0 strip 95
172    cs->Set(0,0,95);    cs->Set(0,0,95);
173    yo6= cs->GetX();    yo6= cs->GetX();
   
174    // view y plane 1 strip 0    // view y plane 1 strip 0
175    cs->Set(1,1,0);    cs->Set(1,1,0);
176    xo1= cs->GetY();    xo1= cs->GetY();
   //  z3= cs->GetZ();  
177    // view y plane 1 strip 31    // view y plane 1 strip 31
178    cs->Set(1,1,31);    cs->Set(1,1,31);
179    xo2= cs->GetY();    xo2= cs->GetY();
# Line 259  void CaloEnergy::DefineGeometry(){ Line 188  void CaloEnergy::DefineGeometry(){
188    xo5= cs->GetY();    xo5= cs->GetY();
189    // view y plane 1 strip 95    // view y plane 1 strip 95
190    cs->Set(1,1,95);    cs->Set(1,1,95);
191    xo6= cs->GetY();    xo6= cs->GetY();  
     
192    // view x plane 1 strip 0    // view x plane 1 strip 0
193    cs->Set(0,1,0);    cs->Set(0,1,0);
194    ye1= cs->GetX();    ye1= cs->GetX();
   //  z4= cs->GetZ();  
195    // view x plane 1 strip 31    // view x plane 1 strip 31
196    cs->Set(0,1,31);    cs->Set(0,1,31);
197    ye2= cs->GetX();    ye2= cs->GetX();
# Line 280  void CaloEnergy::DefineGeometry(){ Line 207  void CaloEnergy::DefineGeometry(){
207    // view x plane 1 strip 95    // view x plane 1 strip 95
208    cs->Set(0,1,95);    cs->Set(0,1,95);
209    ye6= cs->GetX();    ye6= cs->GetX();
   
   //printf(" ye1 %f ye2 %f ye3 %f ye4 %f ye5 %f ye6 %f \n",ye1,ye2,ye3,ye4,ye5,ye6);  
     
210    //    //
211    for (Int_t p = 0; p<22; p ++){    for (Int_t p = 0; p<22; p ++){
212      for (Int_t v = 0; v<2; v++ ){        for (Int_t v = 0; v<2; v++ ){  
# Line 344  void CaloEnergy::Clear(){ Line 268  void CaloEnergy::Clear(){
268    memset(en_yop,0,11*sizeof(Float_t));    memset(en_yop,0,11*sizeof(Float_t));
269    //    //
270    fColumn = -1;    fColumn = -1;
271      fColXE = -1;
272      fColXO = -1;
273      fColYE = -1;
274      fColYO = -1;
275    memset(encol,0,2*3*sizeof(Float_t));    memset(encol,0,2*3*sizeof(Float_t));
276      entot[0] = 0.;
277      entot[1] = 0.;
278      //
279      X0pl = 0.76;
280    //    //
281  }  }
282    
# Line 379  void CaloEnergy::Print(){ Line 311  void CaloEnergy::Print(){
311    printf(" fRad    :.............. %i \n",fRad);    printf(" fRad    :.............. %i \n",fRad);
312    printf(" fPl     :.............. %i \n",fPl);    printf(" fPl     :.............. %i \n",fPl);
313    printf(" fColumn :.............. %i \n",fColumn);    printf(" fColumn :.............. %i \n",fColumn);
314      printf(" multicol:.............. %i \n",multicol);
315      printf(" encol x :.............. %f \n",this->GetEncol(0));
316      printf(" encol y :.............. %f \n",this->GetEncol(1));
317      printf(" entot x :.............. %f \n",this->GetEntot(0));
318      printf(" entot y :.............. %f \n",this->GetEntot(1));
319      printf(" fColXE  :.............. %i \n",fColXE);
320      printf(" fColXO  :.............. %i \n",fColXO);
321      printf(" fColYE  :.............. %i \n",fColYE);
322      printf(" fColYO  :.............. %i \n",fColYO);
323    printf(" fConv_rxe ............. %f \n",fConv_rxe);    printf(" fConv_rxe ............. %f \n",fConv_rxe);
324    printf(" fConv_rxo ............. %f \n",fConv_rxo);    printf(" fConv_rxo ............. %f \n",fConv_rxo);
325    printf(" fConv_ryo ............. %f \n",fConv_ryo);    printf(" fConv_ryo ............. %f \n",fConv_ryo);
# Line 393  void CaloEnergy::Print(){ Line 334  void CaloEnergy::Print(){
334    printf(" fYEen_maxplane:........ %f \n",fYEen_maxplane);    printf(" fYEen_maxplane:........ %f \n",fYEen_maxplane);
335    printf(" fYOen_maxplane:........ %f \n",fYOen_maxplane);    printf(" fYOen_maxplane:........ %f \n",fYOen_maxplane);
336    printf(" x0max   :.............. %f \n",x0max);    printf(" x0max   :.............. %f \n",x0max);
337      printf(" X0pl    :.............. %f \n",X0pl);
338    printf(" debug   :.............. %i \n",debug);    printf(" debug   :.............. %i \n",debug);
339    
340    printf("========================================================================\n");    printf("========================================================================\n");
341    //    //
342  }  }
343    
344  void CaloEnergy::Delete(){  void CaloEnergy::SetMinimumContainment(TString section, Int_t plane){
345    Clear();    section.ToUpper();
346    delete this;    if ( section.Contains("XO") ) fXomin = plane;
347      if ( section.Contains("XE") ) fXemin = plane;
348      if ( section.Contains("YO") ) fYomin = plane;
349      if ( section.Contains("YE") ) fYemin = plane;
350    }
351    
352    void CaloEnergy::SetMinimumContainment(Int_t plane){
353      this->SetMinimumContainment("XEXOYEYO",plane);
354    }
355    
356    void CaloEnergy::SetConversionFactor(TString section, Float_t conv){
357      section.ToUpper();
358      if ( section.Contains("XO") ) fConv_rxo = conv;
359      if ( section.Contains("XE") ) fConv_rxe = conv;
360      if ( section.Contains("YO") ) fConv_ryo = conv;
361      if ( section.Contains("YE") ) fConv_rye = conv;
362    }
363    
364    void CaloEnergy::SetConversionFactor(Float_t conv){
365      this->SetConversionFactor("XEXOYEYO",conv);
366    }
367    
368    Int_t CaloEnergy::GetMinimumContainment(TString section){
369      section.ToUpper();
370      if ( section.Contains("XO") ) return(fXomin);
371      if ( section.Contains("XE") ) return(fXemin);
372      if ( section.Contains("YE") ) return(fYemin);
373      if ( section.Contains("YO") ) return(fYomin);
374      printf(" ERROR: section not recognized \n");
375      return(-1000);
376    }
377    
378    Float_t CaloEnergy::GetConversionFactor(TString section){
379      section.ToUpper();
380      if ( section.Contains("XO") ) return(fConv_rxo);
381      if ( section.Contains("XE") ) return(fConv_rxe);
382      if ( section.Contains("YO") ) return(fConv_ryo);
383      if ( section.Contains("YE") ) return(fConv_rye);
384      printf(" ERROR: section not recognized \n");
385      return(-1000.);
386    }
387    
388    Int_t CaloEnergy::GetMaxplane(TString section){
389      section.ToUpper();
390      if ( section.Contains("XO") ) return fMax_planexo;
391      if ( section.Contains("XE") ) return fMax_planexe;
392      if ( section.Contains("YO") ) return fMax_planeyo;
393      if ( section.Contains("YE") ) return fMax_planeye;
394      return(-1);
395    }
396    
397    Int_t CaloEnergy::GetColumn(TString section){
398      section.ToUpper();
399      if ( section.Contains("XO") ) return fColXO;
400      if ( section.Contains("XE") ) return fColXE;
401      if ( section.Contains("YO") ) return fColYO;
402      if ( section.Contains("YE") ) return fColYE;
403      return(-1);
404    }
405    
406    Float_t CaloEnergy::GetMipEnergyAtMaxplane(TString section){
407      printf(" WARNING: OBSOLETE METHOD, use GetMipEnergyAtMaxplane(TString) instead! \n");
408      return (this->GetEnergyAtMaxplane(section));
409    }
410    
411    Float_t CaloEnergy::GetEnergyAtMaxplane(TString section){
412      section.ToUpper();
413      if ( section.Contains("XO") ) return xomax_en;
414      if ( section.Contains("XE") ) return xemax_en;
415      if ( section.Contains("YO") ) return yomax_en;
416      if ( section.Contains("YE") ) return yemax_en;
417      return(-1);
418    }
419    
420    Float_t CaloEnergy::GetMaxEnergy(TString section){
421      printf(" WARNING: OBSOLETE METHOD, use GetMipEnergy(TString) instead! \n");
422      return (this->GetMipEnergy(section));
423    }
424    
425    Float_t CaloEnergy::GetMipEnergy(TString section){
426      section.ToUpper();
427      if ( fLong ){
428        this->Process(section);    
429        return fXOen_maxplane;
430      } else {
431        if ( section.Contains("XO") ) return fXOen_maxplane;
432        if ( section.Contains("XE") ) return fXEen_maxplane;
433        if ( section.Contains("YO") ) return fYOen_maxplane;
434        if ( section.Contains("YE") ) return fYEen_maxplane;
435      };
436      return(-1);
437    }
438    
439    Float_t CaloEnergy::GetEncol(Int_t i){  
440      if ( fColumn > -1 && (((fXesel || fXosel)&&i==1) || ((fYesel || fYosel)&&i==0)) ){
441        Int_t t = -1;
442        if ( i == 0 ){
443          if ( fColumn == 0 || fColumn == 3 || fColumn == 6 ) t = 0;
444          if ( fColumn == 1 || fColumn == 4 || fColumn == 7 ) t = 1;
445          if ( fColumn == 2 || fColumn == 5 || fColumn == 8 ) t = 2;
446        } else {
447          if ( fColumn == 0 || fColumn == 1 || fColumn == 2 ) t = 0;
448          if ( fColumn == 3 || fColumn == 4 || fColumn == 5 ) t = 1;
449          if ( fColumn == 6 || fColumn == 7 || fColumn == 8 ) t = 2;
450        };
451        if ( debug ) printf(" encol: i %i t %i encol %f \n",i,t,encol[i][t]);
452        return encol[i][t];
453      };
454      return(-1.);
455    }
456    
457    Float_t CaloEnergy::GetMaxEnergy(){  
458      printf(" WARNING: OBSOLETE METHOD, use GetMipEnergy() instead! \n");
459      return (this->GetMipEnergy());
460    }
461    
462    Float_t CaloEnergy::GetMipEnergy(){  
463      if ( fLong ){
464        if ( debug ) printf(" oh! call process! with asntr %s and sntr %s \n",asntr.Data(),sntr.Data());
465        this->Process(asntr);
466      };
467      return((fXEen_maxplane+fYOen_maxplane+fYEen_maxplane+fXOen_maxplane));
468  }  }
469    
470    
# Line 470  Bool_t CaloEnergy::IsInsideAcceptance(TS Line 533  Bool_t CaloEnergy::IsInsideAcceptance(TS
533    //    //
534    if ( debug && ((fM1+0.122-0.244*(Float_t)fRad) < 0.) ) printf("Error: (fM1+0.122-0.244*(Float_t)fRad) < 0. fM1 %f fRad %i %f \n",fM1,fRad,(fM1+0.122-0.244*(Float_t)fRad));    if ( debug && ((fM1+0.122-0.244*(Float_t)fRad) < 0.) ) printf("Error: (fM1+0.122-0.244*(Float_t)fRad) < 0. fM1 %f fRad %i %f \n",fM1,fRad,(fM1+0.122-0.244*(Float_t)fRad));
535    //    //
536      // inclination factor (stolen from Daniele's code)
537      //
538      Float_t ytgx = 0;
539      Float_t ytgy = 0;
540      ytgx = 0.76 * cl2->tanx[0];
541      ytgy = 0.76 * cl2->tany[0];  
542      X0pl = sqrt( pow(0.76,2.) + pow(ytgx,2.) + pow(ytgy,2.) );
543      //
544    // sum energy plane by plane for each sections    // sum energy plane by plane for each sections
545    //    //
546      Float_t fen_xep[11];
547      Float_t fen_xop[11];
548      Float_t fen_yep[11];
549      Float_t fen_yop[11];
550      memset(fen_xep,0,11*sizeof(Float_t));
551      memset(fen_xop,0,11*sizeof(Float_t));
552      memset(fen_yep,0,11*sizeof(Float_t));
553      memset(fen_yop,0,11*sizeof(Float_t));
554      //
555    for (Int_t i=0;i<11;i++){    for (Int_t i=0;i<11;i++){
556      for(strip=0; strip<96; strip++) {      for(strip=0; strip<96; strip++) {
557          fen_xep[i] += enstrip[1][2*i][strip];
558          fen_yop[i] += enstrip[0][2*i][strip];
559          fen_xop[i] += enstrip[1][(2*i)+1][strip];
560          fen_yep[i] += enstrip[0][(2*i)+1][strip];
561        if ( fRad < 0 ){        if ( fRad < 0 ){
562          //          //
563          // run over all the strips of the plane          // run over all the strips of the plane
# Line 486  Bool_t CaloEnergy::IsInsideAcceptance(TS Line 570  Bool_t CaloEnergy::IsInsideAcceptance(TS
570          //          //
571          // use only the strips inside a cylinder of given radius fRad          // use only the strips inside a cylinder of given radius fRad
572          //          //
573          if ( cl2->cibar[2*i][1] >= 1 && cl2->cibar[2*i][1] <= 96 && (strip >= (cl2->cibar[2*i][1]-1-fRad)) &&  (strip <= (cl2->cibar[2*i][1]-1+fRad)) ) en_xep[i] += enstrip[1][2*i][strip];          if ( cl2->cibar[2*i][1] >= 1 && cl2->cibar[2*i][1] <= 96 &&
574          if ( cl2->cibar[2*i][0] >= 1 && cl2->cibar[2*i][0] <= 96 && (strip >= (cl2->cibar[2*i][0]-1-fRad)) &&  (strip <= (cl2->cibar[2*i][0]-1+fRad)) ) en_yop[i] += enstrip[0][2*i][strip];               (strip >= (cl2->cibar[2*i][1]-1-fRad)) &&  (strip <= (cl2->cibar[2*i][1]-1+fRad)) ) en_xep[i] += enstrip[1][2*i][strip];
575          if ( cl2->cibar[(2*i)+1][1] >= 1 && cl2->cibar[(2*i)+1][1] <= 96 && (strip >= (cl2->cibar[(2*i)+1][1]-1-fRad)) &&  (strip <= (cl2->cibar[(2*i)+1][1]-1+fRad)) ) en_xop[i] += enstrip[1][(2*i)+1][strip];  
576          if ( cl2->cibar[(2*i)+1][0] >= 1 && cl2->cibar[(2*i)+1][0] <= 96 && (strip >= (cl2->cibar[(2*i)+1][0]-1-fRad)) &&  (strip <= (cl2->cibar[(2*i)+1][0]-1+fRad)) ) en_yep[i] += enstrip[0][(2*i)+1][strip];          if ( cl2->cibar[2*i][0] >= 1 && cl2->cibar[2*i][0] <= 96 &&
577                 (strip >= (cl2->cibar[2*i][0]-1-fRad)) &&  (strip <= (cl2->cibar[2*i][0]-1+fRad)) ) en_yop[i] += enstrip[0][2*i][strip];
578    
579            if ( cl2->cibar[(2*i)+1][1] >= 1 && cl2->cibar[(2*i)+1][1] <= 96 &&
580                 (strip >= (cl2->cibar[(2*i)+1][1]-1-fRad)) &&  (strip <= (cl2->cibar[(2*i)+1][1]-1+fRad)) ) en_xop[i] += enstrip[1][(2*i)+1][strip];
581    
582            if ( cl2->cibar[(2*i)+1][0] >= 1 && cl2->cibar[(2*i)+1][0] <= 96 &&
583                 (strip >= (cl2->cibar[(2*i)+1][0]-1-fRad)) &&  (strip <= (cl2->cibar[(2*i)+1][0]-1+fRad)) ) en_yep[i] += enstrip[0][(2*i)+1][strip];
584        };        };
585      };      };
586        if ( debug ) printf(" ex_xep[%i] %f cibar %i \n",i,en_xep[i],cl2->cibar[2*i][1]);
587        if ( debug ) printf(" ex_xop[%i] %f cibar %i \n",i,en_xop[i],cl2->cibar[(2*i)+1][1]);
588        if ( debug ) printf(" ex_yep[%i] %f cibar %i \n",i,en_yep[i],cl2->cibar[(2*i)+1][0]);
589        if ( debug ) printf(" ex_yop[%i] %f cibar %i \n",i,en_yop[i],cl2->cibar[2*i][0]);
590      energyxe += en_xep[i];      energyxe += en_xep[i];
591      energyyo += en_yop[i];      energyyo += en_yop[i];
592      energyxo += en_xop[i];      energyxo += en_xop[i];
# Line 505  Bool_t CaloEnergy::IsInsideAcceptance(TS Line 600  Bool_t CaloEnergy::IsInsideAcceptance(TS
600    Int_t yon = 0;    Int_t yon = 0;
601    Int_t xon = 0;    Int_t xon = 0;
602    Int_t yen = 0;    Int_t yen = 0;
603      Float_t en = 0.;
604    //    //
605    if ( section.Contains("XE") ){    if ( section.Contains("XE") ){
606      yon++;      yon++;
607      xon++;      xon++;
608      yen++;      yen++;
609      for (Int_t ipl =0; ipl < 11; ipl ++) {      for (Int_t ipl =0; ipl < 11; ipl ++) {
610        if(en_xep[ipl] > xemax_en) {        en = fen_xep[ipl];
611          xemax_en = en_xep[ipl];        if ( !fAllpl ) en = en_xep[ipl];
612          if(en > xemax_en) {
613            xemax_en = en;
614          fMax_planexe = ipl;          fMax_planexe = ipl;
615        };        };
616      };      };
# Line 522  Bool_t CaloEnergy::IsInsideAcceptance(TS Line 620  Bool_t CaloEnergy::IsInsideAcceptance(TS
620      xon++;      xon++;
621      yen++;      yen++;
622      for (Int_t ipl =0; ipl < 11; ipl ++) {      for (Int_t ipl =0; ipl < 11; ipl ++) {
623        if(en_yop[ipl] > yomax_en) {        en = fen_yop[ipl];
624          yomax_en = en_yop[ipl];        if ( !fAllpl ) en = en_yop[ipl];
625          if(en > yomax_en) {
626            yomax_en = en;
627          fMax_planeyo = ipl;          fMax_planeyo = ipl;
628        };        };
629      };      };
# Line 532  Bool_t CaloEnergy::IsInsideAcceptance(TS Line 632  Bool_t CaloEnergy::IsInsideAcceptance(TS
632    if ( section.Contains("XO") ){    if ( section.Contains("XO") ){
633      yen++;      yen++;
634      for (Int_t ipl =0; ipl < 11; ipl ++) {      for (Int_t ipl =0; ipl < 11; ipl ++) {
635        if(en_xop[ipl] > xomax_en) {        en = fen_xop[ipl];
636          xomax_en = en_xop[ipl];        if ( !fAllpl ) en = en_xop[ipl];
637          if(en > xomax_en) {
638            xomax_en = en;
639          fMax_planexo = ipl;          fMax_planexo = ipl;
640        };        };
641      };      };
# Line 541  Bool_t CaloEnergy::IsInsideAcceptance(TS Line 643  Bool_t CaloEnergy::IsInsideAcceptance(TS
643    //    //
644    if ( section.Contains("YE") ){    if ( section.Contains("YE") ){
645      for (Int_t ipl =0; ipl < 11; ipl ++) {      for (Int_t ipl =0; ipl < 11; ipl ++) {
646        if(en_yep[ipl] > yemax_en) {        en = fen_yep[ipl];
647          yemax_en = en_yep[ipl];        if ( !fAllpl ) en = en_yep[ipl];
648          if(en > yemax_en) {
649            yemax_en = en;
650          fMax_planeye = ipl;          fMax_planeye = ipl;
651        };        };
652      };      };
# Line 552  Bool_t CaloEnergy::IsInsideAcceptance(TS Line 656  Bool_t CaloEnergy::IsInsideAcceptance(TS
656    //    //
657    if ( x0max > 0. ){    if ( x0max > 0. ){
658      if ( debug ) printf(" CALCULATE MAX PLANE GIVEN X0 ASSUMING PERPENDICULAR TRACK \n");      if ( debug ) printf(" CALCULATE MAX PLANE GIVEN X0 ASSUMING PERPENDICULAR TRACK \n");
659      Int_t wpl = (Int_t)roundf(x0max/0.76);      //    Int_t wpl = (Int_t)roundf(x0max/0.76);
660        Int_t wpl = (Int_t)roundf(x0max/X0pl);
661      Bool_t isY = false;      Bool_t isY = false;
662      if ( ((x0max/0.76)-(Float_t)wpl) > 0. ) isY = true;      //    if ( ((x0max/0.76)-(Float_t)wpl) > 0. ) isY = true;
663        if ( ((x0max/X0pl)-(Float_t)wpl) > 0. ) isY = true;
664      xomax_en = 0.;      xomax_en = 0.;
665      yemax_en = 0.;      yemax_en = 0.;
666      xemax_en = 0.;      xemax_en = 0.;
# Line 595  Bool_t CaloEnergy::IsInsideAcceptance(TS Line 701  Bool_t CaloEnergy::IsInsideAcceptance(TS
701          if ( section.Contains("YO") ) yomax_en = 10.;          if ( section.Contains("YO") ) yomax_en = 10.;
702        };        };
703      };      };
704      if ( debug ) printf(" x0max %f x0max/0.76 %f wpl %i isY %i yomax_en %f xemax_en %f yemax_en %f xomax_en %f fMaxplane %i %i %i %i\n",x0max,(x0max/0.76),wpl,isY,yomax_en,xemax_en,yemax_en,xomax_en,fMax_planeyo,fMax_planexe,fMax_planeye,fMax_planexo);      //    if ( debug ) printf(" x0max %f x0max/0.76 %f wpl %i isY %i yomax_en %f xemax_en %f yemax_en %f xomax_en %f fMaxplane %i %i %i %i\n",x0max,(x0max/0.76),wpl,isY,yomax_en,xemax_en,yemax_en,xomax_en,fMax_planeyo,fMax_planexe,fMax_planeye,fMax_planexo);
705        if ( debug ) printf(" x0max %f x0max/X0pl %f X0pl %f wpl %i isY %i yomax_en %f xemax_en %f yemax_en %f xomax_en %f fMaxplane %i %i %i %i\n",x0max,(x0max/X0pl),X0pl,wpl,isY,yomax_en,xemax_en,yemax_en,xomax_en,fMax_planeyo,fMax_planexe,fMax_planeye,fMax_planexo);
706    };    };
707    //    //
708    Int_t nPl = fPl;    Int_t nPl = fPl;
# Line 687  Bool_t CaloEnergy::IsInsideAcceptance(TS Line 794  Bool_t CaloEnergy::IsInsideAcceptance(TS
794    //    //
795    if ( section.Contains("XO") ){    if ( section.Contains("XO") ){
796      //      //
797      // check event is inside XO acceptance      // find the column hit in the first plane
798        //
799        Int_t ix = -1;
800        Int_t iy = -1;
801        if ( track_coordx[(2*0)+1][1] >= (-12.054+fM) && track_coordx[(2*0)+1][1] <= (-4.246-fM) ) ix = 0;
802        if ( track_coordx[(2*0)+1][1] >= ( -4.004+fM) && track_coordx[(2*0)+1][1] <= ( 3.804-fM) ) ix = 1;
803        if ( track_coordx[(2*0)+1][1] >= (  4.046+fM) && track_coordx[(2*0)+1][1] <= (11.854-fM) ) ix = 2;
804        if ( cl2->cbar[(2*0)+1][1] >= (xo1 + fM1) && cl2->cbar[(2*0)+1][1] <= (xo2 - fM1) ) iy = 0;
805        if ( cl2->cbar[(2*0)+1][1] >= (xo3 + fM1) && cl2->cbar[(2*0)+1][1] <= (xo4 - fM1) ) iy = 1;
806        if ( cl2->cbar[(2*0)+1][1] >= (xo5 + fM1) && cl2->cbar[(2*0)+1][1] <= (xo6 - fM1) ) iy = 2;
807        if ( ix > -1 && iy > -1 ) fColXO = ix + iy*3;
808        //
809        // check event is inside XO acceptance, if multicol is false (SingleColumn mode) then the track must be contained in a column.
810      //      //
811      for (Int_t i=0; i<11; i++) {      for (Int_t i=0; i<11; i++) {
812        if        if ((
813          (             ( track_coordx[(2*i)+1][1] >= (-12.054+fM) && track_coordx[(2*i)+1][1] <= (-4.246-fM) && (ix == 0 || multicol) ) ||
814           (((track_coordx[(2*i)+1][1]>=(-12.054+fM))&&             ( track_coordx[(2*i)+1][1] >= ( -4.004+fM) && track_coordx[(2*i)+1][1] <= ( 3.804-fM) && (ix == 1 || multicol) ) ||
815             (track_coordx[(2*i)+1][1]<=(-4.246-fM)))&&             ( track_coordx[(2*i)+1][1] >= (  4.046+fM) && track_coordx[(2*i)+1][1] <= (11.854-fM) && (ix == 2 || multicol) )
816            (((cl2->cbar[(2*i)+1][1]>=xo1 + fM1)&&             ) && (
817              (cl2->cbar[(2*i)+1][1]<=xo2 - fM1 ))||                   ( cl2->cbar[(2*i)+1][1] >= (xo1 + fM1) && cl2->cbar[(2*i)+1][1] <= (xo2 - fM1) && (iy == 0 || multicol) ) ||
818             ((cl2->cbar[(2*i)+1][1]>=xo3 + fM1)&&                   ( cl2->cbar[(2*i)+1][1] >= (xo3 + fM1) && cl2->cbar[(2*i)+1][1] <= (xo4 - fM1) && (iy == 1 || multicol) ) ||      
819              (cl2->cbar[(2*i)+1][1]<=xo4 - fM1 ))||                   ( cl2->cbar[(2*i)+1][1] >= (xo5 + fM1) && cl2->cbar[(2*i)+1][1] <= (xo6 - fM1) && (iy == 2 || multicol) )
820             ((cl2->cbar[(2*i)+1][1]>=xo5 + fM1)&&                   )){
             (cl2->cbar[(2*i)+1][1]<=xo6 - fM1 ))))||  
           
          (((track_coordx[(2*i)+1][1]>=(-4.004+fM))&&  
            (track_coordx[(2*i)+1][1]<=(3.804-fM)))&&  
           (((cl2->cbar[(2*i)+1][1]>=xo1 + fM1)&&  
             (cl2->cbar[(2*i)+1][1]<=xo2 - fM1 ))||  
            ((cl2->cbar[(2*i)+1][1]>=xo3 + fM1)&&  
             (cl2->cbar[(2*i)+1][1]<=xo4 - fM1))||  
            ((cl2->cbar[(2*i)+1][1]>=xo5 + fM1)&&  
             (cl2->cbar[(2*i)+1][1]<=xo6 - fM1 ))))||  
           
          (((track_coordx[(2*i)+1][1]>=(4.046+fM))&&  
            (track_coordx[(2*i)+1][1]<=(11.854-fM)))&&  
           (((cl2->cbar[(2*i)+1][1]>=xo1 + fM1)&&  
             (cl2->cbar[(2*i)+1][1]<=xo2 - fM1))||  
            ((cl2->cbar[(2*i)+1][1]>=xo3 + fM1)&&  
             (cl2->cbar[(2*i)+1][1]<=xo4 - fM1 ))||  
            ((cl2->cbar[(2*i)+1][1]>=xo5 + fM1)&&  
             (cl2->cbar[(2*i)+1][1]<=xo6 - fM1 ))))  
          ){  
821          fXosel = true;          fXosel = true;
822          fXoout = i;          fXoout = i;
823        } else {        } else {
# Line 738  Bool_t CaloEnergy::IsInsideAcceptance(TS Line 837  Bool_t CaloEnergy::IsInsideAcceptance(TS
837      // event is contained (or partially contained) hence we can integrate energy up to the maximum and calculate the energy as measured by this section      // event is contained (or partially contained) hence we can integrate energy up to the maximum and calculate the energy as measured by this section
838      //      //
839      if ( fXosel ){      if ( fXosel ){
840        for (Int_t iplm=0;iplm<=TMath::Min(10,(Int_t)(fMax_planexo+nPl)) ;iplm++){                for (Int_t iplm=0; iplm<=TMath::Min(10,(Int_t)(fMax_planexo+nPl)); iplm++){      
841          fXOen_maxplane += en_xop[iplm];          fXOen_maxplane += en_xop[iplm];
842          if ( debug ) printf(" XO iplm %i fXOen_maxplane %f  en_xop[iplm] %f\n",iplm,fXOen_maxplane,en_xop[iplm]);          if ( debug ) printf(" XO iplm %i fXOen_maxplane %f  en_xop[iplm] %f\n",iplm,fXOen_maxplane,en_xop[iplm]);
843        };        };
844        fEnergyxo = fXOen_maxplane/fConv_rxo;        fEnergyxo = fXOen_maxplane/fConv_rxo;
845          //
846          for (Int_t i=0;i<11;i++){
847            for(strip=0; strip<96; strip++) {
848              //
849              // run over all the strips of the plane
850              //
851              if ( strip >=  0 && strip < 32 ) encol[1][0] += enstrip[1][(2*i)+1][strip];
852              if ( strip >= 32 && strip < 64 ) encol[1][1] += enstrip[1][(2*i)+1][strip];
853              if ( strip >= 64 && strip < 96 ) encol[1][2] += enstrip[1][(2*i)+1][strip];
854              entot[1] += enstrip[1][(2*i)+1][strip];
855              //
856            };
857          };
858      };      };
859    };    };
860    //    //
861    if ( section.Contains("XE") ){    if ( section.Contains("XE") ){
862        //
863        // find the column hit in the first plane
864        //
865        Int_t ix = -1;
866        Int_t iy = -1;
867        if ( track_coordx[(2*0)][1] >= (-11.854+fM) && track_coordx[(2*0)][1] <= (-4.046-fM) ) ix = 0;
868        if ( track_coordx[(2*0)][1] >= ( -3.804+fM) && track_coordx[(2*0)][1] <= ( 4.004-fM) ) ix = 1;
869        if ( track_coordx[(2*0)][1] >= (  4.246+fM) && track_coordx[(2*0)][1] <= (12.054-fM) ) ix = 2;
870        if ( cl2->cbar[(2*0)][1] >= (xe1 + fM1) && cl2->cbar[(2*0)][1] <= (xe2 - fM1) ) iy = 0;
871        if ( cl2->cbar[(2*0)][1] >= (xe3 + fM1) && cl2->cbar[(2*0)][1] <= (xe4 - fM1) ) iy = 1;
872        if ( cl2->cbar[(2*0)][1] >= (xe5 + fM1) && cl2->cbar[(2*0)][1] <= (xe6 - fM1) ) iy = 2;
873        if ( ix > -1 && iy > -1 ) fColXE = ix + iy*3;
874        //
875        // check event is inside XO acceptance
876        //
877      for (Int_t i=0; i<11; i++) {      for (Int_t i=0; i<11; i++) {
878        if        if ((
879          (             ( track_coordx[(2*i)][1] >= (-11.854+fM) && track_coordx[(2*i)][1] <= (-4.046-fM) && (ix == 0 || multicol) ) ||
880           (((track_coordx[2*i][1]>=(-11.854+fM))&&             ( track_coordx[(2*i)][1] >= ( -3.804+fM) && track_coordx[(2*i)][1] <= ( 4.004-fM) && (ix == 1 || multicol) ) ||
881             (track_coordx[2*i][1]<=(-4.046-fM)))&&             ( track_coordx[(2*i)][1] >= (  4.246+fM) && track_coordx[(2*i)][1] <= (12.054-fM) && (ix == 2 || multicol) )
882            (((cl2->cbar[2*i][1]>=xe1 + fM1)&&             ) && (
883              (cl2->cbar[2*i][1]<=xe2 - fM1 ))||                   ( cl2->cbar[(2*i)][1] >= (xe1 + fM1) && cl2->cbar[(2*i)][1] <= (xe2 - fM1) && (iy == 0 || multicol) ) ||
884             ((cl2->cbar[2*i][1]>=xe3 + fM1)&&                   ( cl2->cbar[(2*i)][1] >= (xe3 + fM1) && cl2->cbar[(2*i)][1] <= (xe4 - fM1) && (iy == 1 || multicol) ) ||          
885              (cl2->cbar[2*i][1]<=xe4 - fM1 ))||                   ( cl2->cbar[(2*i)][1] >= (xe5 + fM1) && cl2->cbar[(2*i)][1] <= (xe6 - fM1) && (iy == 2 || multicol) )
886             ((cl2->cbar[2*i][1]>=xe5 + fM1)&&                   )){
             (cl2->cbar[2*i][1]<=xe6 - fM1 ))))||  
           
          (((track_coordx[2*i][1]>=(-3.804+fM))&&  
            (track_coordx[2*i][1]<=(4.004-fM)))&&  
           (((cl2->cbar[2*i][1]>=xe1 + fM1)&&  
             (cl2->cbar[2*i][1]<=xe2 - fM1 ))||  
            ((cl2->cbar[2*i][1]>=xe3 + fM1)&&  
             (cl2->cbar[2*i][1]<=xe4 - fM1))||  
            ((cl2->cbar[2*i][1]>=xe5 + fM1)&&  
             (cl2->cbar[2*i][1]<=xe6 - fM1 ))))||  
           
          (((track_coordx[2*i][1]>=(4.246+fM))&&  
            (track_coordx[2*i][1]<=(12.054-fM)))&&  
           (((cl2->cbar[2*i][1]>=xe1 + fM1)&&  
             (cl2->cbar[2*i][1]<=xe2 - fM1))||  
            ((cl2->cbar[2*i][1]>=xe3 + fM1)&&  
             (cl2->cbar[2*i][1]<=xe4 - fM1 ))||  
            ((cl2->cbar[2*i][1]>=xe5 + fM1)&&  
             (cl2->cbar[2*i][1]<=xe6 - fM1 ))))  
          ){  
887          fXesel = true;          fXesel = true;
888          fXeout = i;          fXeout = i;
889        } else {        } else {
# Line 784  Bool_t CaloEnergy::IsInsideAcceptance(TS Line 891  Bool_t CaloEnergy::IsInsideAcceptance(TS
891          break;          break;
892        };        };
893      };      };
894        //
895      if ( !fXesel && fXeout >= fXemin && fXeout >= (Int_t)(fMax_planexe+nPl) ){      if ( !fXesel && fXeout >= fXemin && fXeout >= (Int_t)(fMax_planexe+nPl) ){
896        if ( debug ) printf(" XE: this event is only partially contained: fXeout %i fXemin %i fMax_planexe + nPl %i \n",fXeout,fXemin,(Int_t)(fMax_planexe+nPl));        if ( debug ) printf(" XE: this event is only partially contained: fXeout %i fXemin %i fMax_planexe + nPl %i \n",fXeout,fXemin,(Int_t)(fMax_planexe+nPl));
897        fPartsel = true;        fPartsel = true;
# Line 795  Bool_t CaloEnergy::IsInsideAcceptance(TS Line 903  Bool_t CaloEnergy::IsInsideAcceptance(TS
903          if ( debug ) printf(" XE iplm %i fXOen_maxplane %f  en_xop[iplm] %f\n",iplm,fXEen_maxplane,en_xep[iplm]);          if ( debug ) printf(" XE iplm %i fXOen_maxplane %f  en_xop[iplm] %f\n",iplm,fXEen_maxplane,en_xep[iplm]);
904        };        };
905        fEnergyxe = fXEen_maxplane/fConv_rxe;        fEnergyxe = fXEen_maxplane/fConv_rxe;
906          //
907          for (Int_t i=0;i<11;i++){
908            for(strip=0; strip<96; strip++) {
909              //
910              // run over all the strips of the plane
911              //
912              if ( strip >=  0 && strip < 32 ) encol[1][0] += enstrip[1][(2*i)][strip];
913              if ( strip >= 32 && strip < 64 ) encol[1][1] += enstrip[1][(2*i)][strip];
914              if ( strip >= 64 && strip < 96 ) encol[1][2] += enstrip[1][(2*i)][strip];
915              entot[1] += enstrip[1][(2*i)][strip];
916              //
917            };
918          };
919      };      };
920    };      };  
921    //    //
922    if ( section.Contains("YE") ){    if ( section.Contains("YE") ){
923        //
924        // find the column hit in the first plane
925        //
926        Int_t ix = -1;
927        Int_t iy = -1;
928        if ( track_coordy[(2*0)+1][0] >= (-12.154+fM) && track_coordy[(2*0)+1][0] <= (-4.346-fM) ) iy = 0;
929        if ( track_coordy[(2*0)+1][0] >= ( -4.104+fM) && track_coordy[(2*0)+1][0] <= ( 3.704-fM) ) iy = 1;
930        if ( track_coordy[(2*0)+1][0] >= (  3.946+fM) && track_coordy[(2*0)+1][0] <= (11.754-fM) ) iy = 2;
931        if ( cl2->cbar[(2*0)+1][0] >= (ye1 + fM1) && cl2->cbar[(2*0)+1][0] <= (ye2 - fM1) ) ix = 0;
932        if ( cl2->cbar[(2*0)+1][0] >= (ye3 + fM1) && cl2->cbar[(2*0)+1][0] <= (ye4 - fM1) ) ix = 1;
933        if ( cl2->cbar[(2*0)+1][0] >= (ye5 + fM1) && cl2->cbar[(2*0)+1][0] <= (ye6 - fM1) ) ix = 2;
934        if ( ix > -1 && iy > -1 ) fColYE = ix + iy*3;
935        //
936        // check event is inside XO acceptance
937        //
938      for (Int_t i=0; i<11; i++) {      for (Int_t i=0; i<11; i++) {
939        if        if ((
940          (             ( track_coordy[(2*i)+1][0] >= (-12.154+fM) && track_coordy[(2*i)+1][0] <= (-4.346-fM) && (iy == 0 || multicol) ) ||
941           (((track_coordy[(2*i)+1][0]>=(-12.154+fM))&&             ( track_coordy[(2*i)+1][0] >= ( -4.104+fM) && track_coordy[(2*i)+1][0] <= ( 3.704-fM) && (iy == 1 || multicol) ) ||
942             (track_coordy[(2*i)+1][0]<=(-4.346-fM)))&&             ( track_coordy[(2*i)+1][0] >= (  3.946+fM) && track_coordy[(2*i)+1][0] <= (11.754-fM) && (iy == 2 || multicol) )
943            (((cl2->cbar[(2*i)+1][0]>=ye1 + fM1)&&             ) && (
944              (cl2->cbar[(2*i)+1][0]<=ye2 - fM1 ))||                   ( cl2->cbar[(2*i)+1][0] >= (ye1 + fM1) && cl2->cbar[(2*i)+1][0] <= (ye2 - fM1) && (ix == 0 || multicol) ) ||
945             ((cl2->cbar[(2*i)+1][0]>=ye3 + fM1)&&                   ( cl2->cbar[(2*i)+1][0] >= (ye3 + fM1) && cl2->cbar[(2*i)+1][0] <= (ye4 - fM1) && (ix == 1 || multicol) ) ||      
946              (cl2->cbar[(2*i)+1][0]<=ye4 - fM1 ))||                   ( cl2->cbar[(2*i)+1][0] >= (ye5 + fM1) && cl2->cbar[(2*i)+1][0] <= (ye6 - fM1) && (ix == 2 || multicol) )
947             ((cl2->cbar[(2*i)+1][0]>=ye5 + fM1)&&                   )){
             (cl2->cbar[(2*i)+1][0]<=ye6 - fM1 ))))||  
           
          (((track_coordy[(2*i)+1][0]>=(-4.104+fM))&&  
            (track_coordy[(2*i)+1][0]<=(3.704-fM)))&&  
           (((cl2->cbar[(2*i)+1][0]>=ye1 + fM1)&&  
             (cl2->cbar[(2*i)+1][0]<=ye2 - fM1 ))||  
            ((cl2->cbar[(2*i)+1][0]>=ye3 + fM1)&&  
             (cl2->cbar[(2*i)+1][0]<=ye4 - fM1))||  
            ((cl2->cbar[(2*i)+1][0]>=ye5 + fM1)&&  
             (cl2->cbar[(2*i)+1][0]<=ye6 - fM1 ))))||  
           
          (((track_coordy[(2*i)+1][0]>=(3.946+fM))&&  
            (track_coordy[(2*i)+1][0]<=(11.754-fM)))&&  
           (((cl2->cbar[(2*i)+1][0]>=ye1 + fM1)&&  
             (cl2->cbar[(2*i)+1][0]<=ye2 - fM1))||  
            ((cl2->cbar[(2*i)+1][0]>=ye3 + fM1)&&  
             (cl2->cbar[(2*i)+1][0]<=ye4 - fM1 ))||  
            ((cl2->cbar[(2*i)+1][0]>=ye5 + fM1)&&  
             (cl2->cbar[(2*i)+1][0]<=ye6 - fM1 ))))  
          ){  
948          fYesel = true;          fYesel = true;
949          fYeout = i;          fYeout = i;
950        } else {        } else {
# Line 836  Bool_t CaloEnergy::IsInsideAcceptance(TS Line 952  Bool_t CaloEnergy::IsInsideAcceptance(TS
952          break;          break;
953        };        };
954      };      };
955        //
956      if ( !fYesel && fYeout >= fYemin && fYeout >= (Int_t)(fMax_planeye+nPl) ){      if ( !fYesel && fYeout >= fYemin && fYeout >= (Int_t)(fMax_planeye+nPl) ){
957        if ( debug ) printf(" YE: this event is only partially contained: fYeout %i fYemin %i fMax_planeye + nPl %i \n",fYeout,fYemin,(Int_t)(fMax_planeye+nPl));        if ( debug ) printf(" YE: this event is only partially contained: fYeout %i fYemin %i fMax_planeye + nPl %i \n",fYeout,fYemin,(Int_t)(fMax_planeye+nPl));
958        fPartsel = true;        fPartsel = true;
# Line 844  Bool_t CaloEnergy::IsInsideAcceptance(TS Line 961  Bool_t CaloEnergy::IsInsideAcceptance(TS
961      if ( fYesel ){      if ( fYesel ){
962        for (Int_t iplm=0;iplm<=TMath::Min(10,(Int_t)(fMax_planeye+nPl)) ;iplm++) fYEen_maxplane += en_yep[iplm];        for (Int_t iplm=0;iplm<=TMath::Min(10,(Int_t)(fMax_planeye+nPl)) ;iplm++) fYEen_maxplane += en_yep[iplm];
963        fEnergyye = fYEen_maxplane/fConv_rye;        fEnergyye = fYEen_maxplane/fConv_rye;
964          //
965          for (Int_t i=0;i<11;i++){
966            for(strip=0; strip<96; strip++) {
967              //
968              // run over all the strips of the plane
969              //
970              if ( strip >=  0 && strip < 32 ) encol[0][0] += enstrip[0][(2*i)+1][strip];
971              if ( strip >= 32 && strip < 64 ) encol[0][1] += enstrip[0][(2*i)+1][strip];
972              if ( strip >= 64 && strip < 96 ) encol[0][2] += enstrip[0][(2*i)+1][strip];
973              entot[0] += enstrip[0][(2*i)+1][strip];
974              //
975            };
976          };
977          //
978      };      };
979    };      };  
980    //    //
981    if ( section.Contains("YO") ){    if ( section.Contains("YO") ){
982        //
983        // find the column hit in the first plane
984        //
985        Int_t ix = -1;
986        Int_t iy = -1;
987        if ( track_coordy[(2*0)][0] >= (-11.954+fM) && track_coordy[(2*0)][0] <= (-4.146-fM) ) iy = 0;
988        if ( track_coordy[(2*0)][0] >= ( -3.904+fM) && track_coordy[(2*0)][0] <= ( 3.904-fM) ) iy = 1;
989        if ( track_coordy[(2*0)][0] >= (  4.146+fM) && track_coordy[(2*0)][0] <= (11.954-fM) ) iy = 2;
990        if ( cl2->cbar[(2*0)][0] >= (yo1 + fM1) && cl2->cbar[(2*0)][0] <= (yo2 - fM1) ) ix = 0;
991        if ( cl2->cbar[(2*0)][0] >= (yo3 + fM1) && cl2->cbar[(2*0)][0] <= (yo4 - fM1) ) ix = 1;
992        if ( cl2->cbar[(2*0)][0] >= (yo5 + fM1) && cl2->cbar[(2*0)][0] <= (yo6 - fM1) ) ix = 2;
993        if ( ix > -1 && iy > -1 ) fColYO = ix + iy*3;
994        //
995        // check event is inside XO acceptance
996        //
997      for (Int_t i=0; i<11; i++) {      for (Int_t i=0; i<11; i++) {
998        if ( debug ) printf(" i %i track_coordy[2*i][0] %f cl2->cbar[2*i][0] %f \n",i,track_coordy[2*i][0],cl2->cbar[2*i][0]);        if ((
999        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);             ( track_coordy[(2*i)][0] >= (-11.954+fM) && track_coordy[(2*i)][0] <= (-4.146-fM) && (iy == 0 || multicol) ) ||
1000        if             ( track_coordy[(2*i)][0] >= ( -3.904+fM) && track_coordy[(2*i)][0] <= ( 3.904-fM) && (iy == 1 || multicol) ) ||
1001          (             ( track_coordy[(2*i)][0] >= (  4.146+fM) && track_coordy[(2*i)][0] <= (11.954-fM) && (iy == 2 || multicol) )
1002           (((track_coordy[2*i][0]>=(-11.954+fM))&&             ) && (
1003             (track_coordy[2*i][0]<=(-4.146-fM)))&&                   ( cl2->cbar[(2*i)][0] >= (yo1 + fM1) && cl2->cbar[(2*i)][0] <= (yo2 - fM1) && (ix == 0 || multicol) ) ||
1004            (((cl2->cbar[2*i][0]>=yo1 + fM1)&&                   ( cl2->cbar[(2*i)][0] >= (yo3 + fM1) && cl2->cbar[(2*i)][0] <= (yo4 - fM1) && (ix == 1 || multicol) ) ||          
1005              (cl2->cbar[2*i][0]<=yo2 - fM1 ))||                   ( cl2->cbar[(2*i)][0] >= (yo5 + fM1) && cl2->cbar[(2*i)][0] <= (yo6 - fM1) && (ix == 2 || multicol) )
1006             ((cl2->cbar[2*i][0]>=yo3 + fM1)&&                   )){
             (cl2->cbar[2*i][0]<=yo4 - fM1 ))||  
            ((cl2->cbar[2*i][0]>=yo5 + fM1)&&  
             (cl2->cbar[2*i][0]<=yo6 - fM1 ))))||  
           
          (((track_coordy[2*i][0]>=(-3.904+fM))&&  
            (track_coordy[2*i][0]<=(+3.904-fM)))&&  
           (((cl2->cbar[2*i][0]>=yo1 + fM1)&&  
             (cl2->cbar[2*i][0]<=yo2 - fM1 ))||  
            ((cl2->cbar[2*i][0]>=yo3 + fM1)&&  
             (cl2->cbar[2*i][0]<=yo4 - fM1))||  
            ((cl2->cbar[2*i][0]>=yo5 + fM1)&&  
             (cl2->cbar[2*i][0]<=yo6 - fM1 ))))||  
           
          (((track_coordy[2*i][0]>=(4.146+fM))&&  
            (track_coordy[2*i][0]<=(11.954-fM)))&&  
           (((cl2->cbar[2*i][0]>=yo1 + fM1)&&  
             (cl2->cbar[2*i][0]<=yo2 - fM1))||  
            ((cl2->cbar[2*i][0]>=yo3 + fM1)&&  
             (cl2->cbar[2*i][0]<=yo4 - fM1 ))||  
            ((cl2->cbar[2*i][0]>=yo5 + fM1)&&  
             (cl2->cbar[2*i][0]<=yo6 - fM1 ))))  
          ){  
1007          fYosel = true;          fYosel = true;
1008          fYoout = i;          fYoout = i;
1009        } else {        } else {
# Line 887  Bool_t CaloEnergy::IsInsideAcceptance(TS Line 1011  Bool_t CaloEnergy::IsInsideAcceptance(TS
1011          break;          break;
1012        };        };
1013      };      };
1014        //
1015      if ( !fYosel && fYoout >= fYomin && fYoout >= (Int_t)(fMax_planeyo+nPl) ){      if ( !fYosel && fYoout >= fYomin && fYoout >= (Int_t)(fMax_planeyo+nPl) ){
1016        if ( debug ) printf(" YO: this event is only partially contained: fYoout %i fYomin %i fMax_planeyo + nPl %i \n",fYoout,fYomin,(Int_t)(fMax_planeyo+nPl));        if ( debug ) printf(" YO: this event is only partially contained: fYoout %i fYomin %i fMax_planeyo + nPl %i \n",fYoout,fYomin,(Int_t)(fMax_planeyo+nPl));
1017        fPartsel = true;        fPartsel = true;
# Line 895  Bool_t CaloEnergy::IsInsideAcceptance(TS Line 1020  Bool_t CaloEnergy::IsInsideAcceptance(TS
1020      if ( fYosel ){      if ( fYosel ){
1021        for (Int_t iplm=0;iplm<=TMath::Min(10,(Int_t)(fMax_planeyo+nPl)) ;iplm++) fYOen_maxplane += en_yop[iplm];        for (Int_t iplm=0;iplm<=TMath::Min(10,(Int_t)(fMax_planeyo+nPl)) ;iplm++) fYOen_maxplane += en_yop[iplm];
1022        fEnergyyo = fYOen_maxplane/fConv_ryo;        fEnergyyo = fYOen_maxplane/fConv_ryo;
1023          //
1024          for (Int_t i=0;i<11;i++){
1025            for(strip=0; strip<96; strip++) {
1026              //
1027              // run over all the strips of the plane
1028              //
1029              if ( strip >=  0 && strip < 32 ) encol[0][0] += enstrip[0][(2*i)][strip];
1030              if ( strip >= 32 && strip < 64 ) encol[0][1] += enstrip[0][(2*i)][strip];
1031              if ( strip >= 64 && strip < 96 ) encol[0][2] += enstrip[0][(2*i)][strip];
1032              entot[0] += enstrip[0][(2*i)][strip];
1033              //
1034            };
1035          };
1036      };      };
1037    };      };  
1038    //    //
# Line 920  Bool_t CaloEnergy::IsInsideAcceptance(TS Line 1058  Bool_t CaloEnergy::IsInsideAcceptance(TS
1058        fSel = true;        fSel = true;
1059      };      };
1060      fEnergy = (fXEen_maxplane+fYOen_maxplane+fYEen_maxplane+fXOen_maxplane)/fConv_rxo;      fEnergy = (fXEen_maxplane+fYOen_maxplane+fYEen_maxplane+fXOen_maxplane)/fConv_rxo;
1061        if ( fSel ){
1062          if ( fXesel ) fColumn = fColXE;
1063          if ( fXosel ){
1064            if ( fColXO != fColumn && fColumn > -1 ){
1065              printf(" ERROR! mismatch in column number between different sections! fColumn %i fColXO %i \n",fColumn,fColXO);
1066            } else {
1067              fColumn = fColXO;
1068            };
1069          };
1070          if ( fYesel ){
1071            if ( fColYE != fColumn && fColumn > -1 ){
1072              printf(" ERROR! mismatch in column number between different sections! fColumn %i fColYE %i \n",fColumn,fColYE);
1073            } else {
1074              fColumn = fColYE;
1075            };
1076          };
1077          if ( fYosel ){
1078            if ( fColYO != fColumn && fColumn > -1 ){
1079              printf(" ERROR! mismatch in column number between different sections! fColumn %i fColYO %i \n",fColumn,fColYO);
1080            } else {
1081              fColumn = fColYO;
1082            };
1083          };
1084        };
1085    };    };
1086    //    //
1087    if ( debug ) printf("sel %i indep %i fMax_plane %f conv_r %f en_maxplane %f encalo %f  \n",fSel,indep,fMax_plane,fConv_rxo,fXOen_maxplane,fEnergy);    if ( debug ) printf("sel %i indep %i fMax_plane %f conv_r %f en_maxplane %f encalo %f  \n",fSel,indep,fMax_plane,fConv_rxo,fXOen_maxplane,fEnergy);

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.17

  ViewVC Help
Powered by ViewVC 1.1.23