4 |
// by "Set_Beta" (ToFNuclei.h), the code is used as before. |
// by "Set_Beta" (ToFNuclei.h), the code is used as before. |
5 |
// If beta_in was set by the user using "Set_Beta", this beta |
// If beta_in was set by the user using "Set_Beta", this beta |
6 |
// is taken for the calculations. |
// is taken for the calculations. |
|
//26-feb-2009: Inserted S115B calibartions from Lucia |
|
7 |
// |
// |
8 |
|
//26-feb-2009: Inserted S115B calibrations from Lucia |
9 |
|
// |
10 |
|
//02-apr-2009: bug found in some "if" statements for the |
11 |
|
// "Layercharge" definition, but only important if ADC=4095 |
12 |
|
// |
13 |
|
//15-apr-2009: small bug found in the calculation of the PMT |
14 |
|
// charge, the charge for the PMTs 1,9,28.. was calculated |
15 |
|
// twice, but the final result was OK |
16 |
|
// |
17 |
//***************************************************** |
//***************************************************** |
18 |
#include <ToFNuclei.h> |
#include <ToFNuclei.h> |
19 |
|
|
458 |
|
|
459 |
if (adc[pmtadc] < PMTsat[pmtadc]) { |
if (adc[pmtadc] < PMTsat[pmtadc]) { |
460 |
//---------------------------------------------------------------------------------------- |
//---------------------------------------------------------------------------------------- |
461 |
if ((pmtadc!=1) && (pmtadc!=9) || (pmtadc!=28) || (pmtadc!=29) || (pmtadc!=34)) { |
if ((pmtadc!=1) && (pmtadc!=9) && (pmtadc!=28) && (pmtadc!=29) && (pmtadc!=34)) { |
462 |
|
|
463 |
for ( Int_t jj=0; jj<9; jj++ ){ |
for ( Int_t jj=0; jj<9; jj++ ){ |
464 |
x1[jj] = A0t[pmtadc][jj]+A1t[pmtadc][jj]*beta_mean+A2t[pmtadc][jj]*beta_mean*beta_mean; |
x1[jj] = A0t[pmtadc][jj]+A1t[pmtadc][jj]*beta_mean+A2t[pmtadc][jj]*beta_mean*beta_mean; |
468 |
TGraph *gr2 = new TGraph(n1,x1,y1); |
TGraph *gr2 = new TGraph(n1,x1,y1); |
469 |
TSpline3 *spl2 = new TSpline3("grs",gr2); // use a cubic spline |
TSpline3 *spl2 = new TSpline3("grs",gr2); // use a cubic spline |
470 |
chelp = spl2->Eval(ym); |
chelp = spl2->Eval(ym); |
471 |
|
if (chelp<0.) chelp=0.0001; //WM new |
472 |
charge = TMath::Sqrt(chelp); |
charge = TMath::Sqrt(chelp); |
473 |
gr2->Delete(); |
gr2->Delete(); |
474 |
spl2->Delete(); |
spl2->Delete(); |
485 |
m = (C0t[pmtadc][jj+1]*C0t[pmtadc][jj+1] - C0t[pmtadc][jj]*C0t[pmtadc][jj]) / (yh - yl); |
m = (C0t[pmtadc][jj+1]*C0t[pmtadc][jj+1] - C0t[pmtadc][jj]*C0t[pmtadc][jj]) / (yh - yl); |
486 |
b = (C0t[pmtadc][jj]*C0t[pmtadc][jj]) - m*yl; |
b = (C0t[pmtadc][jj]*C0t[pmtadc][jj]) - m*yl; |
487 |
chelp = m*ym + b; |
chelp = m*ym + b; |
488 |
|
if (chelp<0.) chelp=0.0001; //WM new |
489 |
charge= TMath::Sqrt(chelp); |
charge= TMath::Sqrt(chelp); |
490 |
PMTcharge_arr[pmtadc] = charge; |
PMTcharge_arr[pmtadc] = charge; |
491 |
} |
} |
528 |
|
|
529 |
if (jj != -1) { |
if (jj != -1) { |
530 |
Int_t ih = ihelp_a[ilay] + 2*jj; |
Int_t ih = ihelp_a[ilay] + 2*jj; |
531 |
|
|
532 |
|
// New WM |
533 |
|
Int_t igood1=0; |
534 |
|
Int_t igood2=0; |
535 |
|
if ((PMTcharge_arr[ih] < 1000.) && (PMTcharge_arr[ih] > 0.)) igood1=1; |
536 |
|
if ((PMTcharge_arr[ih+1] < 1000.) && (PMTcharge_arr[ih+1] > 0.)) igood2=1; |
537 |
|
|
538 |
|
if ((PMTcharge_arr[ih]==0.) && (PMTcharge_arr[ih+1]==0.)) xhelp = 0.; |
539 |
|
if ((igood1==1)&&(igood2==1)) xhelp = 0.5*(PMTcharge_arr[ih]+PMTcharge_arr[ih+1]) ; |
540 |
|
if ((igood1==1)&&(igood2==0)) xhelp = PMTcharge_arr[ih]; |
541 |
|
if ((igood2==1)&&(igood1==0)) xhelp = PMTcharge_arr[ih+1]; |
542 |
|
|
543 |
|
|
544 |
|
/* |
545 |
if ((PMTcharge_arr[ih] < 1000.) && (PMTcharge_arr[ih+1] < 1000.)) xhelp = 0.5*(PMTcharge_arr[ih]+PMTcharge_arr[ih+1]) ; |
if ((PMTcharge_arr[ih] < 1000.) && (PMTcharge_arr[ih+1] < 1000.)) xhelp = 0.5*(PMTcharge_arr[ih]+PMTcharge_arr[ih+1]) ; |
546 |
if ((PMTcharge_arr[ih] < 1000.) && (PMTcharge_arr[ih+1]==1000.)) xhelp = PMTcharge_arr[ih] ; |
if ((PMTcharge_arr[ih] < 1000.) && (PMTcharge_arr[ih+1]==1000.)) xhelp = PMTcharge_arr[ih] ; |
547 |
if ((PMTcharge_arr[ih]==1000.) && (PMTcharge_arr[ih+1] < 1000.)) xhelp = PMTcharge_arr[ih+1] ; |
if ((PMTcharge_arr[ih]==1000.) && (PMTcharge_arr[ih+1] < 1000.)) xhelp = PMTcharge_arr[ih+1] ; |
548 |
|
*/ |
549 |
if (adc[ih] == 4095) Layerinfo[ilay] = Layerinfo[ilay] + 1; |
if (adc[ih] == 4095) Layerinfo[ilay] = Layerinfo[ilay] + 1; |
550 |
if (adc[ih+1] == 4095) Layerinfo[ilay] = Layerinfo[ilay] + 1; |
if (adc[ih+1] == 4095) Layerinfo[ilay] = Layerinfo[ilay] + 1; |
551 |
if ((adc[ih] > PMTsat[ih]) && (adc[ih] < 4095)) Layerinfo[ilay] = Layerinfo[ilay] + 10; |
if ((adc[ih] > PMTsat[ih]) && (adc[ih] < 4095)) Layerinfo[ilay] = Layerinfo[ilay] + 10; |
917 |
|
|
918 |
if (adc[pmtadc] < PMTsat[pmtadc]) { |
if (adc[pmtadc] < PMTsat[pmtadc]) { |
919 |
|
|
920 |
if ((pmtadc!=4) && (pmtadc!=8) || (pmtadc!=28) || (pmtadc!=31) || (pmtadc!=34) || (pmtadc!=39) && (pmtadc!=41) || (pmtadc!=46)) { |
if ((pmtadc!=4) && (pmtadc!=8) && (pmtadc!=28) && (pmtadc!=31) && (pmtadc!=34) && (pmtadc!=39) && (pmtadc!=41) && (pmtadc!=46)) { |
921 |
|
|
922 |
for ( Int_t jj=0; jj<9; jj++ ){ |
for ( Int_t jj=0; jj<9; jj++ ){ |
923 |
x1[jj] = A0t[pmtadc][jj]+A1t[pmtadc][jj]*beta_mean+A2t[pmtadc][jj]*beta_mean*beta_mean; |
x1[jj] = A0t[pmtadc][jj]+A1t[pmtadc][jj]*beta_mean+A2t[pmtadc][jj]*beta_mean*beta_mean; |
930 |
TGraph *gr2 = new TGraph(n1,x1,y1); |
TGraph *gr2 = new TGraph(n1,x1,y1); |
931 |
TSpline3 *spl2 = new TSpline3("grs",gr2); // use a cubic spline |
TSpline3 *spl2 = new TSpline3("grs",gr2); // use a cubic spline |
932 |
chelp = spl2->Eval(ym); |
chelp = spl2->Eval(ym); |
933 |
|
if (chelp<0.) chelp=0.0001; //WM new |
934 |
charge = TMath::Sqrt(chelp); |
charge = TMath::Sqrt(chelp); |
935 |
|
|
936 |
gr2->Delete(); |
gr2->Delete(); |
946 |
m = (C0t[pmtadc][jj+1]*C0t[pmtadc][jj+1] - C0t[pmtadc][jj]*C0t[pmtadc][jj]) / (yh - yl); |
m = (C0t[pmtadc][jj+1]*C0t[pmtadc][jj+1] - C0t[pmtadc][jj]*C0t[pmtadc][jj]) / (yh - yl); |
947 |
b = (C0t[pmtadc][jj]*C0t[pmtadc][jj]) - m*yl; |
b = (C0t[pmtadc][jj]*C0t[pmtadc][jj]) - m*yl; |
948 |
chelp = m*ym + b; |
chelp = m*ym + b; |
949 |
|
if (chelp<0.) chelp=0.0001; //WM new |
950 |
charge= TMath::Sqrt(chelp); |
charge= TMath::Sqrt(chelp); |
951 |
PMTcharge_arr[pmtadc] = charge; |
PMTcharge_arr[pmtadc] = charge; |
952 |
} |
} |
1005 |
|
|
1006 |
if (jj != -1) { |
if (jj != -1) { |
1007 |
Int_t ih = ihelp_a[ilay] + 2*jj; |
Int_t ih = ihelp_a[ilay] + 2*jj; |
1008 |
|
|
1009 |
|
// New WM |
1010 |
|
Int_t igood1=0; |
1011 |
|
Int_t igood2=0; |
1012 |
|
if ((PMTcharge_arr[ih] < 1000.) && (PMTcharge_arr[ih] > 0.)) igood1=1; |
1013 |
|
if ((PMTcharge_arr[ih+1] < 1000.) && (PMTcharge_arr[ih+1] > 0.)) igood2=1; |
1014 |
|
|
1015 |
|
if ((PMTcharge_arr[ih]==0.) && (PMTcharge_arr[ih+1]==0.)) xhelp = 0.; |
1016 |
|
if ((igood1==1)&&(igood2==1)) xhelp = 0.5*(PMTcharge_arr[ih]+PMTcharge_arr[ih+1]) ; |
1017 |
|
if ((igood1==1)&&(igood2==0)) xhelp = PMTcharge_arr[ih]; |
1018 |
|
if ((igood2==1)&&(igood1==0)) xhelp = PMTcharge_arr[ih+1]; |
1019 |
|
|
1020 |
|
|
1021 |
|
/* |
1022 |
if ((PMTcharge_arr[ih] < 1000.) && (PMTcharge_arr[ih+1] < 1000.)) xhelp = 0.5*(PMTcharge_arr[ih]+PMTcharge_arr[ih+1]) ; |
if ((PMTcharge_arr[ih] < 1000.) && (PMTcharge_arr[ih+1] < 1000.)) xhelp = 0.5*(PMTcharge_arr[ih]+PMTcharge_arr[ih+1]) ; |
1023 |
if ((PMTcharge_arr[ih] < 1000.) && (PMTcharge_arr[ih+1]==1000.)) xhelp = PMTcharge_arr[ih] ; |
if ((PMTcharge_arr[ih] < 1000.) && (PMTcharge_arr[ih+1]==1000.)) xhelp = PMTcharge_arr[ih] ; |
1024 |
if ((PMTcharge_arr[ih]==1000.) && (PMTcharge_arr[ih+1] < 1000.)) xhelp = PMTcharge_arr[ih+1] ; |
if ((PMTcharge_arr[ih]==1000.) && (PMTcharge_arr[ih+1] < 1000.)) xhelp = PMTcharge_arr[ih+1] ; |
1025 |
|
*/ |
1026 |
|
|
1027 |
if (adc[ih] == 4095) Layerinfo[ilay] = Layerinfo[ilay] + 1; |
if (adc[ih] == 4095) Layerinfo[ilay] = Layerinfo[ilay] + 1; |
1028 |
if (adc[ih+1] == 4095) Layerinfo[ilay] = Layerinfo[ilay] + 1; |
if (adc[ih+1] == 4095) Layerinfo[ilay] = Layerinfo[ilay] + 1; |