/[PAMELA software]/tof/flight/ToFNuclei/src/ToFNuclei.cpp
ViewVC logotype

Diff of /tof/flight/ToFNuclei/src/ToFNuclei.cpp

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

revision 1.5 by pamelats, Wed May 6 09:21:42 2009 UTC revision 1.8 by mocchiut, Fri Jan 17 15:12:38 2014 UTC
# Line 19  Line 19 
19  // For PMTs 4,8,39,41 (counting 0..47) no charge was calculated  // For PMTs 4,8,39,41 (counting 0..47) no charge was calculated
20  // calibration arrays now including correct brackets to avoid  // calibration arrays now including correct brackets to avoid
21  // compiler warnings    // compiler warnings  
22    //06-aug-2009: charge_layer_trk_raw  and charge_layer_std_raw
23    // added: These are the "raw" values before doing the 2nd-order
24    // correction
25  //*****************************************************  //*****************************************************
26  #include <ToFNuclei.h>  #include <ToFNuclei.h>
27    
# Line 51  ToFNuclei::ToFNuclei(PamLevel2 *l2p){   Line 54  ToFNuclei::ToFNuclei(PamLevel2 *l2p){  
54    
55  void ToFNuclei::Clear(){  void ToFNuclei::Clear(){
56    //    //
57    ncount_trk = 0.;    ncount_trk = 0;
58    charge_trk = 0.;    charge_trk = 0.;
59    memset (charge_layer_trk,0,6*sizeof(Float_t));  //    memset (charge_layer_trk,0,6*sizeof(Float_t));  //
60      memset (charge_layer_trk_raw,0,6*sizeof(Float_t));  //
61    memset (charge_PMT_trk,0,48*sizeof(Float_t));  //    memset (charge_PMT_trk,0,48*sizeof(Float_t));  //
62    memset (layerinfo_trk,0,6*sizeof(Int_t));  //    memset (layerinfo_trk,0,6*sizeof(Int_t));  //
63    ncount_std = 0.;    ncount_std = 0;
64    charge_std = 0.;    charge_std = 0.;
65    memset (charge_layer_std,0,6*sizeof(Float_t));  //    memset (charge_layer_std,0,6*sizeof(Float_t));  //
66      memset (charge_layer_std_raw,0,6*sizeof(Float_t));  //
67    memset (charge_PMT_std,0,48*sizeof(Float_t));  //    memset (charge_PMT_std,0,48*sizeof(Float_t));  //
68    memset (layerinfo_std,0,6*sizeof(Int_t));  //    memset (layerinfo_std,0,6*sizeof(Int_t));  //
69  };  };
# Line 396  Float_t  Layercharge[6] = {1005., 1005., Line 401  Float_t  Layercharge[6] = {1005., 1005.,
401    
402  Int_t  Layerinfo[6] = {0, 0, 0, 0, 0, 0 };  Int_t  Layerinfo[6] = {0, 0, 0, 0, 0, 0 };
403    
404  Float_t adc[48],adc_c[48],PMTcharge_arr[48];  //Float_t adc[48],adc_c[48],PMTcharge_arr[48];
405    Float_t adc[48],PMTcharge_arr[48];
406    
407  //------------------------------------------------------------------  //------------------------------------------------------------------
408    
# Line 407  Float_t beta_mean = fabs(track->GetToFTr Line 413  Float_t beta_mean = fabs(track->GetToFTr
413  // New!! If "beta_in" != 100. then overwrite beta_mean with beta_in  // New!! If "beta_in" != 100. then overwrite beta_mean with beta_in
414  if (beta_in != 100.) beta_mean=beta_in;  if (beta_in != 100.) beta_mean=beta_in;
415    
416  Float_t def = track->GetTrkTrack()->al[4];  //Float_t def = track->GetTrkTrack()->al[4];
417  Float_t rig = 1./def;  //Float_t rig = 1./def;
418    
419  Int_t ncount=0;  Int_t ncount=0;
420  Float_t charge_chi=1000.;  Float_t charge_chi=1000.;
# Line 422  Float_t charge_chi=1000.; Line 428  Float_t charge_chi=1000.;
428     Int_t ich,jj,kk;     Int_t ich,jj,kk;
429    
430     for (ich=0; ich<48; ich++)   adc[ich]   = 4095.;     for (ich=0; ich<48; ich++)   adc[ich]   = 4095.;
431     for (ich=0; ich<48; ich++)   adc_c[ich] = 1000.;     //   for (ich=0; ich<48; ich++)   adc_c[ich] = 1000.;
432     for (ich=0; ich<48; ich++)   PMTcharge_arr[ich] = 1000.;     for (ich=0; ich<48; ich++)   PMTcharge_arr[ich] = 1000.;
433    
434    
# Line 430  Float_t charge_chi=1000.; Line 436  Float_t charge_chi=1000.;
436  if ((beta_mean < 0.05)  || (beta_mean > 2.0)) {  if ((beta_mean < 0.05)  || (beta_mean > 2.0)) {
437    for (Int_t jj=0; jj<48;jj++) charge_PMT_trk[jj] = 1001.;    for (Int_t jj=0; jj<48;jj++) charge_PMT_trk[jj] = 1001.;
438    for (Int_t jj=0; jj<6;jj++) charge_layer_trk[jj] = 1001.;    for (Int_t jj=0; jj<6;jj++) charge_layer_trk[jj] = 1001.;
439    for (Int_t jj=0; jj<6;jj++) layerinfo_trk[jj] = 1001.;    for (Int_t jj=0; jj<6;jj++) charge_layer_trk_raw[jj] = 1001.;
440      for (Int_t jj=0; jj<6;jj++) layerinfo_trk[jj] = 1001;
441    charge_trk = 1001.;    charge_trk = 1001.;
442    ncount_trk = 0;    ncount_trk = 0;
443                                                }                                                }
# Line 455  if ((beta_mean > 0.05)  && (beta_mean < Line 462  if ((beta_mean > 0.05)  && (beta_mean <
462            Float_t dEdx = track->GetToFTrack()->dedx[ipmt];            Float_t dEdx = track->GetToFTrack()->dedx[ipmt];
463            ym = dEdx*betahelp;            ym = dEdx*betahelp;
464            Int_t pmtadc = track->GetToFTrack()->pmtadc[ipmt];            Int_t pmtadc = track->GetToFTrack()->pmtadc[ipmt];
465            Int_t adcflag = track->GetToFTrack()->adcflag[ipmt];            //          Int_t adcflag = track->GetToFTrack()->adcflag[ipmt];
466            L2->GetToFLevel2()->GetPMTIndex(pmtadc,jj,kk);            L2->GetToFLevel2()->GetPMTIndex(pmtadc,jj,kk);
467            if (adcflag==0) adc_c[pmtadc] = dEdx;            //          if (adcflag==0) adc_c[pmtadc] = dEdx;
468    
469    
470           if (adc[pmtadc] == 4095) adc_c[pmtadc] = 0.;            //         if (adc[pmtadc] == 4095) adc_c[pmtadc] = 0.;
471           if (adc[pmtadc] == 4095) PMTcharge_arr[pmtadc] = 0.;           if (adc[pmtadc] == 4095) PMTcharge_arr[pmtadc] = 0.;
472    
473           if ((adc[pmtadc]>PMTsat[pmtadc]) && (adc[pmtadc]<4095)) adc_c[pmtadc] = 1000.;           //         if ((adc[pmtadc]>PMTsat[pmtadc]) && (adc[pmtadc]<4095)) adc_c[pmtadc] = 1000.;
474    
475           if (adc[pmtadc] < PMTsat[pmtadc]) {           if (adc[pmtadc] < PMTsat[pmtadc]) {
476  //----------------------------------------------------------------------------------------  //----------------------------------------------------------------------------------------
# Line 566  Layercharge[ilay] = xhelp; Line 573  Layercharge[ilay] = xhelp;
573    
574    
575  //==========================================================================  //==========================================================================
576    //============= Layercharge without 2nd-order correction   =================
577    //==========================================================================
578    
579      for (Int_t jj=0; jj<6;jj++) charge_layer_trk_raw[jj] = Layercharge[jj];
580    
581    //==========================================================================
582  //=========================   2nd-order correction   =======================  //=========================   2nd-order correction   =======================
583  //==========================================================================  //==========================================================================
584    
# Line 583  Float_t c_corr = corr[0]+corr[1]*xb+corr Line 596  Float_t c_corr = corr[0]+corr[1]*xb+corr
596  if ((ic>0)&&(ic<=5)) c_corr = c_corr/(1.*ic) ;  if ((ic>0)&&(ic<=5)) c_corr = c_corr/(1.*ic) ;
597  if (ic>5) c_corr = c_corr/6. ;  if (ic>5) c_corr = c_corr/6. ;
598    
599    //cout<<"beta "<<xb<<" layer "<<ii<<" ic "<<ic<<" => "<<c_corr<<endl;
600    //cout<<xb<<"  "<<ic<<"  "<<c_corr<<endl;
601    
602  Layercharge[ii] = Layercharge[ii]/c_corr;  Layercharge[ii] = Layercharge[ii]/c_corr;
603    
604                              }                              }
# Line 934  Float_t corr_a[6][4] = {   Line 950  Float_t corr_a[6][4] = {  
950    
951  //---------------------------------------------------------------------  //---------------------------------------------------------------------
952    
953  Float_t xv[6],yv[6];  //Float_t xv[6],yv[6];
954  Int_t  iz;  Int_t  iz;
955    
956  Float_t x1[9],y1[9];  Float_t x1[9],y1[9];
# Line 944  Float_t  Layercharge[6] = {1005., 1005., Line 960  Float_t  Layercharge[6] = {1005., 1005.,
960    
961  Int_t  Layerinfo[6] = {0, 0, 0, 0, 0, 0 };  Int_t  Layerinfo[6] = {0, 0, 0, 0, 0, 0 };
962    
963  Float_t adc[48],adc_c[48],PMTcharge_arr[48];  //Float_t adc[48],adc_c[48],PMTcharge_arr[48];
964    Float_t adc[48],PMTcharge_arr[48];
965    
966  Float_t beta_mean = fabs(track->beta[12]);  Float_t beta_mean = fabs(track->beta[12]);
967    
# Line 962  if (beta_in != 100.) beta_mean=beta_in; Line 979  if (beta_in != 100.) beta_mean=beta_in;
979     Int_t ich,jj,kk;     Int_t ich,jj,kk;
980    
981     for (ich=0; ich<48; ich++)   adc[ich]   = 4095.;     for (ich=0; ich<48; ich++)   adc[ich]   = 4095.;
982     for (ich=0; ich<48; ich++)   adc_c[ich] = 1000.;     //   for (ich=0; ich<48; ich++)   adc_c[ich] = 1000.;
983     for (ich=0; ich<48; ich++)   PMTcharge_arr[ich] = 1000.;     for (ich=0; ich<48; ich++)   PMTcharge_arr[ich] = 1000.;
984    
985    
986  if ((beta_mean < 0.05)  || (beta_mean > 2.0)) {  if ((beta_mean < 0.05)  || (beta_mean > 2.0)) {
987    for (Int_t jj=0; jj<48;jj++) charge_PMT_std[jj] = 1001.;    for (Int_t jj=0; jj<48;jj++) charge_PMT_std[jj] = 1001.;
988    for (Int_t jj=0; jj<6;jj++) charge_layer_std[jj] = 1001.;    for (Int_t jj=0; jj<6;jj++) charge_layer_std[jj] = 1001.;
989    for (Int_t jj=0; jj<6;jj++) layerinfo_std[jj] = 1001.;    for (Int_t jj=0; jj<6;jj++) charge_layer_std_raw[jj] = 1001.;
990      for (Int_t jj=0; jj<6;jj++) layerinfo_std[jj] = 1001;
991    charge_std = 1001.;    charge_std = 1001.;
992    ncount_std = 0;    ncount_std = 0;
993                                                }                                                }
# Line 996  if ((beta_mean < 0.05)  || (beta_mean > Line 1014  if ((beta_mean < 0.05)  || (beta_mean >
1014            Float_t dEdx = track->dedx[ipmt];            Float_t dEdx = track->dedx[ipmt];
1015            ym = dEdx*betahelp;            ym = dEdx*betahelp;
1016            Int_t pmtadc = track->pmtadc[ipmt];            Int_t pmtadc = track->pmtadc[ipmt];
1017            Int_t adcflag = track->adcflag[ipmt];            //          Int_t adcflag = track->adcflag[ipmt];
1018            L2->GetToFLevel2()->GetPMTIndex(pmtadc,jj,kk);            L2->GetToFLevel2()->GetPMTIndex(pmtadc,jj,kk);
1019            if (adcflag==0) adc_c[pmtadc] = dEdx;            //          if (adcflag==0) adc_c[pmtadc] = dEdx;
1020    
1021           if (adc[pmtadc] == 4095) adc_c[pmtadc] = 0.;            //         if (adc[pmtadc] == 4095) adc_c[pmtadc] = 0.;
1022           if (adc[pmtadc] == 4095) PMTcharge_arr[pmtadc] = 0.;           if (adc[pmtadc] == 4095) PMTcharge_arr[pmtadc] = 0.;
1023    
1024           if ((adc[pmtadc]>PMTsat[pmtadc]) && (adc[pmtadc]<4095)) adc_c[pmtadc] = 1000.;           //         if ((adc[pmtadc]>PMTsat[pmtadc]) && (adc[pmtadc]<4095)) adc_c[pmtadc] = 1000.;
1025                                                                                    
1026           if (adc[pmtadc] < PMTsat[pmtadc]) {           if (adc[pmtadc] < PMTsat[pmtadc]) {
1027    
# Line 1129  Layercharge[ilay] = xhelp; Line 1147  Layercharge[ilay] = xhelp;
1147  //for (Int_t ilay=0; ilay<6; ilay ++) cout<<Layercharge[ilay]<<" ";  //for (Int_t ilay=0; ilay<6; ilay ++) cout<<Layercharge[ilay]<<" ";
1148    
1149  //==========================================================================  //==========================================================================
1150    //============= Layercharge without 2nd-order correction   =================
1151    //==========================================================================
1152    
1153      for (Int_t jj=0; jj<6;jj++) charge_layer_std_raw[jj] = Layercharge[jj];
1154    
1155    //==========================================================================
1156  //=========================   2nd-order correction   =======================  //=========================   2nd-order correction   =======================
1157  //==========================================================================  //==========================================================================
1158    

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.8

  ViewVC Help
Powered by ViewVC 1.1.23