diff --git a/src/THcScalerEvtHandler.cxx b/src/THcScalerEvtHandler.cxx index 8b332fe56276e07c7a03176abf4f864d45156da5..ebafb21d941e389644319e2a92c526c6f0becc7a 100644 --- a/src/THcScalerEvtHandler.cxx +++ b/src/THcScalerEvtHandler.cxx @@ -139,6 +139,7 @@ Int_t THcScalerEvtHandler::ReadDatabase(const TDatime& date ) for(Int_t i=0;i<fNumBCMs;i++) { fBCM_Name[i] = new char[bcm_names[i].length()+1]; strcpy(fBCM_Name[i], bcm_names[i].c_str()); + strcat(fBCM_Name[i],".scal"); // cout << fBCM_Gain[i] << " " << fBCM_Offset[i] << " " << fBCM_Name[i] << endl; } for(Int_t i=0;i<fNumBCMs;i++) { @@ -347,7 +348,7 @@ Int_t THcScalerEvtHandler::AnalyzeBuffer(UInt_t* rdata) //printf("%s %f\n",scalerloc[ivar]->name.Data(),scalers[isca]->GetRate(ichan)); //checks } if(scalerloc[ivar]->ikind == ICURRENT || scalerloc[ivar]->ikind == ICHARGE){ - Int_t bcm_ind=0; + Int_t bcm_ind=-1; for(Int_t itemp =0; itemp<fNumBCMs;itemp++) { size_t match = string(scalerloc[ivar]->name.Data()).find(string(fBCM_Name[itemp])); @@ -357,12 +358,13 @@ Int_t THcScalerEvtHandler::AnalyzeBuffer(UInt_t* rdata) } } if (scalerloc[ivar]->ikind == ICURRENT) { - dvars[ivar]=((scalers[isca]->GetData(ichan))/fDeltaTime-fBCM_Offset[bcm_ind])/fBCM_Gain[bcm_ind]; + dvars[ivar]=0.; + if (bcm_ind != -1) dvars[ivar]=((scalers[isca]->GetData(ichan))/fDeltaTime-fBCM_Offset[bcm_ind])/fBCM_Gain[bcm_ind]; if (bcm_ind == fbcm_Current_Threshold_Index) scal_current= dvars[ivar]; } if (scalerloc[ivar]->ikind == ICHARGE) { - fBCM_delta_charge[bcm_ind]=fDeltaTime*((scalers[isca]->GetData(ichan))/fDeltaTime-fBCM_Offset[bcm_ind])/fBCM_Gain[bcm_ind]; - dvars[ivar]+=fBCM_delta_charge[bcm_ind]; + if (bcm_ind != -1) fBCM_delta_charge[bcm_ind]=fDeltaTime*((scalers[isca]->GetData(ichan))/fDeltaTime-fBCM_Offset[bcm_ind])/fBCM_Gain[bcm_ind]; + if (bcm_ind != -1) dvars[ivar]+=fBCM_delta_charge[bcm_ind]; } // printf("1st event %i index %i fBCMname %s scalerloc %s offset %f gain %f computed %f\n",evcount, bcm_ind, fBCM_Name[bcm_ind],scalerloc[ivar]->name.Data(),fBCM_Offset[bcm_ind],fBCM_Gain[bcm_ind],dvars[ivar]); } @@ -384,7 +386,7 @@ Int_t THcScalerEvtHandler::AnalyzeBuffer(UInt_t* rdata) } if(scalerloc[ivar]->ikind == ICURRENT || scalerloc[ivar]->ikind == ICHARGE) { - Int_t bcm_ind=0; + Int_t bcm_ind=-1; for(Int_t itemp =0; itemp<fNumBCMs;itemp++) { size_t match = string(scalerloc[ivar]->name.Data()).find(string(fBCM_Name[itemp])); @@ -394,14 +396,14 @@ Int_t THcScalerEvtHandler::AnalyzeBuffer(UInt_t* rdata) } } if (scalerloc[ivar]->ikind == ICURRENT) { - dvarsFirst[ivar]=((scalers[isca]->GetData(ichan))/fDeltaTime-fBCM_Offset[bcm_ind])/fBCM_Gain[bcm_ind]; - if (bcm_ind == fbcm_Current_Threshold_Index) scal_current= dvars[ivar]; + dvarsFirst[ivar]=0.0; + if (bcm_ind != -1) dvarsFirst[ivar]=((scalers[isca]->GetData(ichan))/fDeltaTime-fBCM_Offset[bcm_ind])/fBCM_Gain[bcm_ind]; + if (bcm_ind == fbcm_Current_Threshold_Index) scal_current= dvarsFirst[ivar]; } if (scalerloc[ivar]->ikind == ICHARGE) { - fBCM_delta_charge[bcm_ind]=fDeltaTime*((scalers[isca]->GetData(ichan))/fDeltaTime-fBCM_Offset[bcm_ind])/fBCM_Gain[bcm_ind]; - dvarsFirst[ivar]+=fBCM_delta_charge[bcm_ind]; + if (bcm_ind != -1) fBCM_delta_charge[bcm_ind]=fDeltaTime*((scalers[isca]->GetData(ichan))/fDeltaTime-fBCM_Offset[bcm_ind])/fBCM_Gain[bcm_ind]; + if (bcm_ind != -1) dvarsFirst[ivar]+=fBCM_delta_charge[bcm_ind]; } - printf("1st event %i index %i fBCM name %s scalerloc %s offset %f gain %f getrate%f\n", evcount, bcm_ind, fBCM_Name[bcm_ind],scalerloc[ivar]->name.Data(),fBCM_Offset[bcm_ind],fBCM_Gain[bcm_ind],dvarsFirst[ivar]); } if (fDebugFile) *fDebugFile << " dvarsFirst "<<scalerloc[ivar]->ikind<<" "<<dvarsFirst[ivar]<<endl; } @@ -428,7 +430,7 @@ Int_t THcScalerEvtHandler::AnalyzeBuffer(UInt_t* rdata) } if(scalerloc[ivar]->ikind == ICURRENT || scalerloc[ivar]->ikind == ICHARGE) { - Int_t bcm_ind=0; + Int_t bcm_ind=-1; for(Int_t itemp =0; itemp<fNumBCMs;itemp++) { size_t match = string(scalerloc[ivar]->name.Data()).find(string(fBCM_Name[itemp])); @@ -438,12 +440,13 @@ Int_t THcScalerEvtHandler::AnalyzeBuffer(UInt_t* rdata) } } if (scalerloc[ivar]->ikind == ICURRENT) { - dvars[ivar]=((scalers[isca]->GetData(ichan)-scal_prev_read[nscal-1])/fDeltaTime-fBCM_Offset[bcm_ind])/fBCM_Gain[bcm_ind]; + dvars[ivar]=0; + if (bcm_ind != -1) dvars[ivar]=((scalers[isca]->GetData(ichan)-scal_prev_read[nscal-1])/fDeltaTime-fBCM_Offset[bcm_ind])/fBCM_Gain[bcm_ind]; if (bcm_ind == fbcm_Current_Threshold_Index) scal_current= dvars[ivar]; } if (scalerloc[ivar]->ikind == ICHARGE) { - fBCM_delta_charge[bcm_ind]=fDeltaTime*((scalers[isca]->GetData(ichan)-scal_prev_read[nscal-1])/fDeltaTime-fBCM_Offset[bcm_ind])/fBCM_Gain[bcm_ind]; - dvars[ivar]+=fBCM_delta_charge[bcm_ind]; + if (bcm_ind != -1) fBCM_delta_charge[bcm_ind]=fDeltaTime*((scalers[isca]->GetData(ichan)-scal_prev_read[nscal-1])/fDeltaTime-fBCM_Offset[bcm_ind])/fBCM_Gain[bcm_ind]; + if (bcm_ind != -1) dvars[ivar]+=fBCM_delta_charge[bcm_ind]; } // printf("event %i index %i fBCMname %s scalerloc %s offset %f gain %f computed %f\n",evcount, bcm_ind, fBCM_Name[bcm_ind],scalerloc[ivar]->name.Data(),fBCM_Offset[bcm_ind],fBCM_Gain[bcm_ind],dvars[ivar]); } @@ -466,7 +469,7 @@ Int_t THcScalerEvtHandler::AnalyzeBuffer(UInt_t* rdata) dvars_prev_read[ivar] = scalers[isca]->GetData(ichan); } if (scalerloc[ivar]->ikind == ICUT+ICHARGE){ - Int_t bcm_ind=0; + Int_t bcm_ind=-1; for(Int_t itemp =0; itemp<fNumBCMs;itemp++) { size_t match = string(scalerloc[ivar]->name.Data()).find(string(fBCM_Name[itemp])); @@ -475,9 +478,9 @@ Int_t THcScalerEvtHandler::AnalyzeBuffer(UInt_t* rdata) bcm_ind=itemp; } } - if ( scal_current > fbcm_Current_Threshold) { + if ( scal_current > fbcm_Current_Threshold && bcm_ind != -1) { dvars[ivar] += fBCM_delta_charge[bcm_ind]; - } + } } if (scalerloc[ivar]->ikind == ICUT+ITIME){ if ( scal_current > fbcm_Current_Threshold) {