| 283 | 
   // | 
   // | 
| 284 | 
   suf = ""; | 
   suf = ""; | 
| 285 | 
   debug = false; | 
   debug = false; | 
| 286 | 
  | 
   usepl18x = false; | 
| 287 | 
   // | 
   // | 
| 288 | 
 }; | 
 }; | 
| 289 | 
  | 
  | 
| 301 | 
   // | 
   // | 
| 302 | 
   suf = ""; | 
   suf = ""; | 
| 303 | 
   debug = false; | 
   debug = false; | 
| 304 | 
  | 
   usepl18x = false; | 
| 305 | 
   // | 
   // | 
| 306 | 
 }; | 
 }; | 
| 307 | 
  | 
  | 
| 529 | 
   // | 
   // | 
| 530 | 
   for (Int_t i=0; i<L2->GetCaloLevel1()->istrip ; i++){ | 
   for (Int_t i=0; i<L2->GetCaloLevel1()->istrip ; i++){ | 
| 531 | 
     mip1 = L2->GetCaloLevel1()->DecodeEstrip(i,view1,plane1,strip1); | 
     mip1 = L2->GetCaloLevel1()->DecodeEstrip(i,view1,plane1,strip1); | 
| 532 | 
  | 
     // | 
| 533 | 
  | 
     if ( !usepl18x && view1==0 && plane1==18 ) mip1 = 0.; | 
| 534 | 
  | 
     // | 
| 535 | 
     estrip[view1][plane1][strip1] = mip1; | 
     estrip[view1][plane1][strip1] = mip1; | 
| 536 | 
   }; | 
   }; | 
| 537 | 
   // | 
   // | 
| 579 | 
   // | 
   // | 
| 580 | 
   for (Int_t i=0; i<L2->GetCaloLevel1()->istrip ; i++){ | 
   for (Int_t i=0; i<L2->GetCaloLevel1()->istrip ; i++){ | 
| 581 | 
     mip1 = L2->GetCaloLevel1()->DecodeEstrip(i,view1,plane1,strip1); | 
     mip1 = L2->GetCaloLevel1()->DecodeEstrip(i,view1,plane1,strip1); | 
| 582 | 
  | 
     // | 
| 583 | 
  | 
     if ( !usepl18x && view1==0 && plane1==18 ) mip1 = 0.; | 
| 584 | 
  | 
     // | 
| 585 | 
     es[view1][plane1][strip1] = mip1; | 
     es[view1][plane1][strip1] = mip1; | 
| 586 | 
   }; | 
   }; | 
| 587 | 
   // | 
   // | 
| 671 | 
   mask18b = -1; | 
   mask18b = -1; | 
| 672 | 
   // | 
   // | 
| 673 | 
   no18x = true; | 
   no18x = true; | 
| 674 | 
  | 
   usepl18x = !no18x; | 
| 675 | 
   debug = false; | 
   debug = false; | 
| 676 | 
   maskXE = false; | 
   maskXE = false; | 
| 677 | 
   maskXO = false; | 
   maskXO = false; | 
| 685 | 
   suf = ""; | 
   suf = ""; | 
| 686 | 
   xyaverage = true; | 
   xyaverage = true; | 
| 687 | 
   // | 
   // | 
| 688 | 
  | 
   letmax = -1; | 
| 689 | 
  | 
   heavytail = false; | 
| 690 | 
  | 
   //  lmipth = 100.; | 
| 691 | 
  | 
   lmipth = 0.; | 
| 692 | 
  | 
   // | 
| 693 | 
 }; | 
 }; | 
| 694 | 
  | 
  | 
| 695 | 
  | 
 TF1 *CaloLong::GetFit(){ | 
| 696 | 
  | 
   TString fnam=Form("lfit%s",suf.Data()); | 
| 697 | 
  | 
   TF1 *lfit  = dynamic_cast<TF1*>(gDirectory->FindObject(fnam)); | 
| 698 | 
  | 
   if ( lfit ) return lfit; | 
| 699 | 
  | 
   return NULL; | 
| 700 | 
  | 
 } | 
| 701 | 
  | 
  | 
| 702 | 
 void CaloLong::MaskSection(TString sec){ | 
 void CaloLong::MaskSection(TString sec){ | 
| 703 | 
   sec.ToUpper(); | 
   sec.ToUpper(); | 
| 704 | 
   if ( sec.Contains("XO") ) maskXO = true; | 
   if ( sec.Contains("XO") ) maskXO = true; | 
| 721 | 
  | 
  | 
| 722 | 
 void CaloLong::Clear(){ | 
 void CaloLong::Clear(){ | 
| 723 | 
   // | 
   // | 
| 724 | 
  | 
   if ( debug ) printf(" Clear called \n"); | 
| 725 | 
  | 
   // | 
| 726 | 
   memset(eplane,0, 2*22*sizeof(Float_t)); | 
   memset(eplane,0, 2*22*sizeof(Float_t)); | 
| 727 | 
   // | 
   // | 
| 728 | 
   chi2 = 0.; | 
   chi2 = 0.; | 
| 865 | 
   Bool_t gof = true; | 
   Bool_t gof = true; | 
| 866 | 
   for (Int_t i=0; i < L2->GetCaloLevel1()->istrip; i++){ | 
   for (Int_t i=0; i < L2->GetCaloLevel1()->istrip; i++){ | 
| 867 | 
     mip = L2->GetCaloLevel1()->DecodeEstrip(i,view,plane,strip); | 
     mip = L2->GetCaloLevel1()->DecodeEstrip(i,view,plane,strip); | 
| 868 | 
  | 
     // | 
| 869 | 
  | 
     if ( !usepl18x && view==0 && plane==18 ) mip = 0.; | 
| 870 | 
  | 
     // | 
| 871 | 
     gof = true; | 
     gof = true; | 
| 872 | 
     if ( maskXE && (plane%2)==0 && view==1 ) gof = false; | 
     if ( maskXE && (plane%2)==0 && view==1 ) gof = false; | 
| 873 | 
     if ( maskXO && (plane%2)!=0 && view==1 ) gof = false; | 
     if ( maskXO && (plane%2)!=0 && view==1 ) gof = false; | 
| 878 | 
   // | 
   // | 
| 879 | 
   // inclination factor (stolen from Daniele's code) | 
   // inclination factor (stolen from Daniele's code) | 
| 880 | 
   // | 
   // | 
| 881 | 
   Float_t ytgx = 0; | 
   Float_t ytgx = 0.; | 
| 882 | 
   Float_t ytgy = 0; | 
   Float_t ytgy = 0.; | 
| 883 | 
   ytgx = 0.76 * clp->tanx[0]; | 
   ytgx = 0.76 * clp->tanx[0]; | 
| 884 | 
   ytgy = 0.76 * clp->tany[0];   | 
   ytgy = 0.76 * clp->tany[0];   | 
| 885 | 
   X0pl = sqrt( pow(0.76,2.) + pow(ytgx,2.) + pow(ytgy,2.) ); | 
   X0pl = sqrt( pow(0.76,2.) + pow(ytgx,2.) + pow(ytgy,2.) ); | 
| 973 | 
     }; | 
     }; | 
| 974 | 
   }; | 
   }; | 
| 975 | 
   // | 
   // | 
| 976 | 
  | 
   if ( !clp && debug ) printf(" ERROR!! no CaloLevel2 obj!!\n"); | 
| 977 | 
  | 
   // | 
| 978 | 
   // inclination factor (stolen from Daniele's code) | 
   // inclination factor (stolen from Daniele's code) | 
| 979 | 
   // | 
   // | 
| 980 | 
   Float_t ytgx = 0; | 
   Float_t ytgx = 0.; | 
| 981 | 
   Float_t ytgy = 0; | 
   Float_t ytgy = 0.; | 
| 982 | 
   ytgx = 0.76 * clp->tanx[0]; | 
   ytgx = 0.76 * clp->tanx[0]; | 
| 983 | 
   ytgy = 0.76 * clp->tany[0];   | 
   ytgy = 0.76 * clp->tany[0];   | 
| 984 | 
   X0pl = sqrt( pow(0.76,2.) + pow(ytgx,2.) + pow(ytgy,2.) ); | 
   X0pl = sqrt( pow(0.76,2.) + pow(ytgx,2.) + pow(ytgy,2.) ); | 
| 985 | 
  | 
   if ( debug ) printf(" X0pl %f tanx %f tany %f \n",X0pl,ytgx,ytgy); | 
| 986 | 
   // | 
   // | 
| 987 | 
   // Find experimental plane of maximum | 
   // Find experimental plane of maximum | 
| 988 | 
   // | 
   // | 
| 1003 | 
   // | 
   // | 
| 1004 | 
   if ( vmax == 0 ) pmax++; | 
   if ( vmax == 0 ) pmax++; | 
| 1005 | 
   etmax = pmax * X0pl; | 
   etmax = pmax * X0pl; | 
| 1006 | 
  | 
   letmax = etmax; | 
| 1007 | 
   // | 
   // | 
| 1008 | 
   if ( debug ) this->Print(); | 
   if ( debug ) this->Print(); | 
| 1009 | 
   if ( debug ) printf(" exit \n"); | 
   if ( debug ) printf(" exit \n"); | 
| 1185 | 
         exx[numpo] = 0.1; | 
         exx[numpo] = 0.1; | 
| 1186 | 
         yyy[numpo] = enemip; | 
         yyy[numpo] = enemip; | 
| 1187 | 
         eyy[numpo] = sqrt(enemip*3.)+sqrt(5.); | 
         eyy[numpo] = sqrt(enemip*3.)+sqrt(5.); | 
| 1188 | 
  | 
         //if ( xpos > letmax && enemip > lmipth && heavytail) eyy[numpo] = (sqrt(enemip*3.)+sqrt(5.))/numpo; | 
| 1189 | 
  | 
         if ( xpos > letmax && enemip > lmipth && heavytail) eyy[numpo] = sqrt(enemip)/5.; | 
| 1190 | 
  | 
         if ( xpos > letmax-1 && xpos < letmax+1 && heavytail ) eyy[numpo] /= 5.; | 
| 1191 | 
  | 
         //if ( xpos > letmax-2 && xpos < letmax+1 && heavytail ) eyy[numpo] /= 7.; | 
| 1192 | 
  | 
         if ( xpos < 3. && heavytail ) eyy[numpo] /= 5.; | 
| 1193 | 
         numpo++; | 
         numpo++; | 
| 1194 | 
         //      th->Fill(xpos,enemip); | 
         //      th->Fill(xpos,enemip); | 
| 1195 | 
         if ( debug ) printf(" AVE Filling: st %i xpos %f energy %f \n",st,xpos,enemip); | 
         if ( debug ) printf(" AVE Filling: st %i xpos %f energy %f error %f letmax %f lmpith %f \n",st,xpos,enemip,eyy[numpo-1],letmax,lmipth); | 
| 1196 | 
       }; | 
       }; | 
| 1197 | 
     } else { | 
     } else { | 
| 1198 | 
       for (Int_t jj=0; jj<2; jj++){ | 
       for (Int_t jj=0; jj<2; jj++){ | 
| 1222 | 
           exx[numpo] = 0.1; | 
           exx[numpo] = 0.1; | 
| 1223 | 
           yyy[numpo] = enemip; | 
           yyy[numpo] = enemip; | 
| 1224 | 
           eyy[numpo] = sqrt(enemip*3.)+sqrt(5.); | 
           eyy[numpo] = sqrt(enemip*3.)+sqrt(5.); | 
| 1225 | 
  | 
           //if ( xpos > letmax && enemip > lmipth && heavytail) eyy[numpo] = (sqrt(enemip*3.)+sqrt(5.))/numpo; | 
| 1226 | 
  | 
           //if ( xpos > letmax && enemip > lmipth && heavytail ) eyy[numpo] = (sqrt(enemip*3.)+sqrt(5.))/numpo; | 
| 1227 | 
  | 
           if ( xpos > letmax && enemip > lmipth && heavytail) eyy[numpo] = sqrt(enemip)/5.; | 
| 1228 | 
  | 
           if ( xpos > letmax-1 && xpos < letmax+1 && heavytail ) eyy[numpo] /= 5.; | 
| 1229 | 
  | 
         //if ( xpos > letmax-2 && xpos < letmax+1 && heavytail ) eyy[numpo] /= 7.; | 
| 1230 | 
  | 
           if ( xpos < 3. && heavytail ) eyy[numpo] /= 5.;         | 
| 1231 | 
           //      eyy[numpo] = sqrt(enemip)/(st*0.95); | 
           //      eyy[numpo] = sqrt(enemip)/(st*0.95); | 
| 1232 | 
           numpo++; | 
           numpo++; | 
| 1233 | 
           //      th->Fill(xpos,enemip); | 
           //      th->Fill(xpos,enemip); | 
| 1268 | 
   TF1 *lfit  = dynamic_cast<TF1*>(gDirectory->FindObject(fnam)); | 
   TF1 *lfit  = dynamic_cast<TF1*>(gDirectory->FindObject(fnam)); | 
| 1269 | 
   if ( lfit ) lfit->Delete(); | 
   if ( lfit ) lfit->Delete(); | 
| 1270 | 
   lfit = new TF1(fnam,ccurve,0.,xmax,3); | 
   lfit = new TF1(fnam,ccurve,0.,xmax,3); | 
| 1271 | 
  | 
 //   if ( !lfit ){ | 
| 1272 | 
  | 
 //     lfit = new TF1(fnam,ccurve,0.,xmax,3); | 
| 1273 | 
  | 
 //   }; | 
| 1274 | 
  | 
 //   lfit->Clear(); | 
| 1275 | 
  | 
 //   lfit->SetName(fnam); | 
| 1276 | 
  | 
 //   lfit->SetRange(0.,xmax); | 
| 1277 | 
  | 
 //  lfit->Print(); | 
| 1278 | 
  | 
   // | 
| 1279 | 
   if ( debug ) printf("qtot %f qtotparz %f \n",clp->qtot,qtotparz);  | 
   if ( debug ) printf("qtot %f qtotparz %f \n",clp->qtot,qtotparz);  | 
| 1280 | 
   E0 = qtotparz; | 
   E0 = qtotparz; | 
| 1281 | 
   //  E0 = clp->qtot; | 
   //  E0 = clp->qtot; | 
| 1286 | 
   //  lfit->SetParLimits(0,0.,1000.); | 
   //  lfit->SetParLimits(0,0.,1000.); | 
| 1287 | 
   //  lfit->SetParLimits(1,-1.,80.); | 
   //  lfit->SetParLimits(1,-1.,80.); | 
| 1288 | 
   //  lfit->SetParLimits(2,-1.,10.); | 
   //  lfit->SetParLimits(2,-1.,10.); | 
| 1289 | 
   //  TString optio = "ROW"; // "RO" | 
   // TString optio = "ROW"; // "RO" | 
| 1290 | 
   TString optio = "RO"; // "RO" | 
   TString optio = "RO"; // "RO" | 
| 1291 | 
   if ( debug ){ | 
   if ( debug ){ | 
| 1292 | 
     optio += "NV"; | 
     optio += "NV"; | 
| 1296 | 
     if ( draw ) optio += "Q"; | 
     if ( draw ) optio += "Q"; | 
| 1297 | 
   }; | 
   }; | 
| 1298 | 
   // | 
   // | 
| 1299 | 
   if ( debug ) printf(" OK, start the fitting procedure...\n"); | 
   if ( debug ) printf(" OK, start the fitting procedure... options: %s \n",optio.Data()); | 
| 1300 | 
   // | 
   // | 
| 1301 | 
   //  fitresult = th->Fit("lfit",optio); | 
   //  fitresult = th->Fit("lfit",optio); | 
| 1302 | 
  | 
   //  lfit->Update(); | 
| 1303 | 
   fitresult = gh->Fit("lfit",optio); | 
   fitresult = gh->Fit("lfit",optio); | 
| 1304 | 
  | 
   //  fitresult = gh->Fit("lfit","ROQW"); | 
| 1305 | 
   // | 
   // | 
| 1306 | 
   if ( debug ) printf(" the fit is done! result: %i \n",fitresult); | 
   if ( debug ) printf(" the fit is done! result: %i \n",fitresult); | 
| 1307 | 
   // | 
   // | 
| 1345 | 
     delete w; | 
     delete w; | 
| 1346 | 
     delete xp; | 
     delete xp; | 
| 1347 | 
     delete wp; | 
     delete wp; | 
| 1348 | 
  | 
     delete xpp; | 
| 1349 | 
  | 
     delete wpp; | 
| 1350 | 
     //    Float_t i10max = lfit->Integral(0.,10.*tmax); | 
     //    Float_t i10max = lfit->Integral(0.,10.*tmax); | 
| 1351 | 
     if ( debug ) printf(" Integral: %f \n",i10max);  | 
     if ( debug ) printf(" Integral: %f \n",i10max);  | 
| 1352 | 
     // | 
     // | 
| 1397 | 
     if ( th ) th->Delete(); | 
     if ( th ) th->Delete(); | 
| 1398 | 
   }; | 
   }; | 
| 1399 | 
   // | 
   // | 
| 1400 | 
  | 
 //   gMinuit->SetPrintLevel(1); | 
| 1401 | 
  | 
 //   gMinuit->mnamin(); | 
| 1402 | 
  | 
 //   //  gMinuit->mnfree(0); | 
| 1403 | 
  | 
 //   gMinuit->mncler(); | 
| 1404 | 
  | 
 //   gMinuit->mnrset(1); | 
| 1405 | 
  | 
   //  gMinuit->Delete(); | 
| 1406 | 
  | 
   //ROOT::Math::Minimizer::Clear(); | 
| 1407 | 
  | 
   //  gMinuit->mnhelp("*"); | 
| 1408 | 
  | 
   // | 
| 1409 | 
   //  delete lfit; | 
   //  delete lfit; | 
| 1410 | 
   // | 
   // | 
| 1411 | 
 }; | 
 }; |