/[PAMELA software]/PamelaDigitizer/DigitizeTOF.cxx
ViewVC logotype

Diff of /PamelaDigitizer/DigitizeTOF.cxx

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

revision 1.4 by mocchiut, Thu Dec 18 17:11:47 2008 UTC revision 1.8 by mocchiut, Fri Jan 17 13:08:40 2014 UTC
# Line 101  void Digitizer::DigitizeTOF(int np,float Line 101  void Digitizer::DigitizeTOF(int np,float
101        pmtleft=0;        pmtleft=0;
102        pmtright=0;        pmtright=0;
103  // WM: S12 paddles are "reversed" (Nov'07)  // WM: S12 paddles are "reversed" (Nov'07)
104        if (ip==2)        if (ip==2){
105          if (ipad==0)          if (ipad==0)
106            ipad=1;            ipad=1;
107          else          else
108            ipad=0;            ipad=0;
109          }
110        if ((ip>-1)&&(ip<6)) {  //ToF paddles only, not S4        if ((ip>-1)&&(ip<6)) {  //ToF paddles only, not S4
111          Paddle2Pmt(ip, ipad, &pmtleft, &pmtright);          Paddle2Pmt(ip, ipad, &pmtleft, &pmtright);
112  // DC: evaluates mean position and path inside the paddle  // DC: evaluates mean position and path inside the paddle
# Line 188  void Digitizer::DigitizeTOF(int np,float Line 189  void Digitizer::DigitizeTOF(int np,float
189    } // NTHTOF < 200    } // NTHTOF < 200
190  // ======  ADC ======  // ======  ADC ======
191    for(Int_t i=0; i<48; i++){    for(Int_t i=0; i<48; i++){
192      if (QevePmt_pC[i] < 800.)  ADCtof[i]= (Int_t)(ADC_pC0A + ADC_pC1A*QevePmt_pC[i] + ADC_pC2A*pow(QevePmt_pC[i],2) + ADC_pC3A*pow(QevePmt_pC[i],3));      if (QevePmt_pC[i] <= 800.)  ADCtof[i]= (Int_t)(ADC_pC0A + ADC_pC1A*QevePmt_pC[i] + ADC_pC2A*pow(QevePmt_pC[i],2) + ADC_pC3A*pow(QevePmt_pC[i],3));
193      if (QevePmt_pC[i] > 800.)  ADCtof[i]= (Int_t)(ADC_pC0B + ADC_pC1B*QevePmt_pC[i] + ADC_pC2B*pow(QevePmt_pC[i],2) + ADC_pC3B*pow(QevePmt_pC[i],3));      if (QevePmt_pC[i] > 800.)  ADCtof[i]= (Int_t)(ADC_pC0B + ADC_pC1B*QevePmt_pC[i] + ADC_pC2B*pow(QevePmt_pC[i],2) + ADC_pC3B*pow(QevePmt_pC[i],3));
194      if (QevePmt_pC[i] > 2485.) ADCtof[i]= (Int_t)(1758. + 0.54*QevePmt_pC[i]);  //assuming a fictional 0.54 ch/pC above ADCsat      if (QevePmt_pC[i] > 2485.) ADCtof[i]= (Int_t)(1758. + 0.54*QevePmt_pC[i]);  //assuming a fictional 0.54 ch/pC above ADCsat
195      if (ADCtof[i]>ADCsat) ADCtof[i]=ADCsat;      if (ADCtof[i]>ADCsat) ADCtof[i]=ADCsat;
# Line 202  void Digitizer::DigitizeTOF(int np,float Line 203  void Digitizer::DigitizeTOF(int np,float
203    
204  // ======  build  TDC coincidence  ======  // ======  build  TDC coincidence  ======
205    
206      //
207      for(Int_t i=0; i<48; i++) {
208        if((tdcpmt[i] - c1_S[i]) > 1e-7) {
209          tdcpmt[i] = 0.;
210          tdc[i] = 0.;
211        }
212      }// cycle to introduce a window for tdc
213    
214    
215    Float_t t_coinc = 0;    Float_t t_coinc = 0;
216    Int_t ilast = 100;    //  Int_t ilast = 100;
217    for (Int_t ii=0; ii<48;ii++)    for (Int_t ii=0; ii<48;ii++)
218      if (tdc[ii] > t_coinc) {      if (tdc[ii] > t_coinc) {
219        t_coinc = tdc[ii];        t_coinc = tdc[ii];
220        ilast = ii;        //      ilast = ii;
221      }      }
222        
223    //     cout<<ilast<<" "<<t_coinc<<endl;    //     cout<<ilast<<" "<<t_coinc<<endl;
# Line 372  UChar_t Digitizer::EvaluateCrcTof(UChar_ Line 382  UChar_t Digitizer::EvaluateCrcTof(UChar_
382    UChar_t crcTof=0x00;    UChar_t crcTof=0x00;
383    UChar_t *pc=&crcTof, *pc2;    UChar_t *pc=&crcTof, *pc2;
384    pc2=pTof;    pc2=pTof;
385    for (Int_t jp=0; jp < 23; jp++){    for (Int_t jp=0; jp < 22; jp++){ // cecilia: fixed 23->22
386      //crcTof = crc8(...)      //crcTof = crc8(...)
387      Crc8Tof(pc2++,pc);      Crc8Tof(pc2++,pc);
388      //    printf("%2i --- %x\n",jp,crcTof);      //    printf("%2i --- %x\n",jp,crcTof);
# Line 463  void Digitizer::LoadTOFCalib(int np,floa Line 473  void Digitizer::LoadTOFCalib(int np,floa
473    Int_t error = 0,temp=0;    Int_t error = 0,temp=0;
474    GL_PARAM *glparam = new GL_PARAM();    GL_PARAM *glparam = new GL_PARAM();
475    error = glparam->Query_GL_PARAM(3,202,fDbc);    error = glparam->Query_GL_PARAM(3,202,fDbc);
476    calfile.str("");    if(!error){
477    calfile << glparam->PATH.Data() << "/";      calfile.str("");
478    calfile << glparam->NAME.Data();      calfile << glparam->PATH.Data() << "/";
479    printf("\n Using TOF calibration file: \n %s\n",calfile.str().c_str());      calfile << glparam->NAME.Data();
480    ifstream fileTriggerCalib;      printf("\n Using TOF calibration file: \n %s\n",calfile.str().c_str());
481    fileTriggerCalib.open(calfile.str().c_str());      ifstream fileTriggerCalib;
482    if(!fileTriggerCalib)printf("debug: no trigger calib file!\n");      fileTriggerCalib.open(calfile.str().c_str());
483    // correct readout WM Oct '07      for(Int_t i=0; i<np; i++){
484    for(Int_t i=0; i<np; i++){        fileTriggerCalib >> temp;
485      fileTriggerCalib >> temp;        fileTriggerCalib >> atte1[i];
486      fileTriggerCalib >> atte1[i];        fileTriggerCalib >> lambda1[i];
487      fileTriggerCalib >> lambda1[i];        fileTriggerCalib >> atte2[i];
488      fileTriggerCalib >> atte2[i];        fileTriggerCalib >> lambda2[i];
489      fileTriggerCalib >> lambda2[i];        fileTriggerCalib >> temp;
490      fileTriggerCalib >> temp;      }
491        fileTriggerCalib.close();
492      }
493      else{
494        cout<<endl<<"                        *********** ATTENTION ***********"<<endl;
495        cout<<endl<<"                           TOF: NO trigger calib file!"<<endl<<endl;
496        cout<<endl<<"                        TOF digitized data will be wrong!"<<endl<<endl;
497        for(Int_t i=0; i<np; i++){
498          atte1[i]=0.;
499          lambda1[i]=0.;
500          atte2[i]=0.;
501          lambda2[i]=0.;
502        }
503    }    }
   fileTriggerCalib.close();  
504    //end tof calib    //end tof calib
505  }  }

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

  ViewVC Help
Powered by ViewVC 1.1.23