diff --git a/src/THcShower.cxx b/src/THcShower.cxx index 88987ca51c2c5030b9ef14a771341723c0e018bf..ae23af024489e6cf8e2729c43a3dba4d17ed8210 100644 --- a/src/THcShower.cxx +++ b/src/THcShower.cxx @@ -372,8 +372,10 @@ Int_t THcShower::ReadDatabase( const TDatime& date ) Double_t hcal_neg_cal_const[fNTotBlocks]; Double_t hcal_neg_gain_cor[fNTotBlocks]; - fAdcTimeWindowMin = new Double_t [fNTotBlocks]; - fAdcTimeWindowMax = new Double_t [fNTotBlocks]; + fPosAdcTimeWindowMin = new Double_t [fNTotBlocks]; + fNegAdcTimeWindowMin = new Double_t [fNTotBlocks]; + fPosAdcTimeWindowMax = new Double_t [fNTotBlocks]; + fNegAdcTimeWindowMax = new Double_t [fNTotBlocks]; DBRequest list[]={ {"cal_pos_cal_const", hcal_pos_cal_const, kDouble, fNTotBlocks}, @@ -382,16 +384,20 @@ Int_t THcShower::ReadDatabase( const TDatime& date ) {"cal_neg_cal_const", hcal_neg_cal_const, kDouble, fNTotBlocks}, {"cal_neg_ped_limit", fShNegPedLimit, kInt, fNTotBlocks,1}, {"cal_neg_gain_cor", hcal_neg_gain_cor, kDouble, fNTotBlocks}, - {"cal_AdcTimeWindowMin", fAdcTimeWindowMin, kDouble, static_cast<UInt_t>(fNTotBlocks),1}, - {"cal_AdcTimeWindowMax", fAdcTimeWindowMax, kDouble, static_cast<UInt_t>(fNTotBlocks),1}, + {"cal_pos_AdcTimeWindowMin", fPosAdcTimeWindowMin, kDouble, static_cast<UInt_t>(fNTotBlocks),1}, + {"cal_neg_AdcTimeWindowMin", fNegAdcTimeWindowMin, kDouble, static_cast<UInt_t>(fNTotBlocks),1}, + {"cal_pos_AdcTimeWindowMax", fPosAdcTimeWindowMax, kDouble, static_cast<UInt_t>(fNTotBlocks),1}, + {"cal_neg_AdcTimeWindowMax", fNegAdcTimeWindowMax, kDouble, static_cast<UInt_t>(fNTotBlocks),1}, {"cal_min_peds", &fShMinPeds, kInt,0,1}, {0} }; fShMinPeds=0.; for(UInt_t ip=0;ip<fNTotBlocks;ip++) { - fAdcTimeWindowMin[ip] = -1000.; - fAdcTimeWindowMax[ip] = 1000.; + fPosAdcTimeWindowMin[ip] = -1000.; + fNegAdcTimeWindowMin[ip] = -1000.; + fPosAdcTimeWindowMax[ip] = 1000.; + fNegAdcTimeWindowMax[ip] = 1000.; } gHcParms->LoadParmValues((DBRequest*)&list, prefix); diff --git a/src/THcShower.h b/src/THcShower.h index 28f35ad316c3041079cde7f7bbdbc120ec23392f..e708818d4eca6e2878cdccb5c992d915c67d195f 100644 --- a/src/THcShower.h +++ b/src/THcShower.h @@ -74,11 +74,17 @@ public: Int_t GetADCMode() { return fADCMode; } - Double_t* GetAdcTimeWindowMin() { - return fAdcTimeWindowMin; + Double_t* GetPosAdcTimeWindowMin() { + return fPosAdcTimeWindowMin; } - Double_t* GetAdcTimeWindowMax() { - return fAdcTimeWindowMax; + Double_t* GetNegAdcTimeWindowMin() { + return fNegAdcTimeWindowMin; + } + Double_t* GetPosAdcTimeWindowMax() { + return fPosAdcTimeWindowMax; + } + Double_t* GetNegAdcTimeWindowMax() { + return fNegAdcTimeWindowMax; } Double_t GetAdcTdcOffset() { return fAdcTdcOffset; @@ -155,8 +161,10 @@ protected: static const Int_t kADCDynamicPedestal=1; static const Int_t kADCSampleIntegral=2; static const Int_t kADCSampIntDynPed=3; - Double_t* fAdcTimeWindowMin; - Double_t* fAdcTimeWindowMax; + Double_t* fPosAdcTimeWindowMin; + Double_t* fNegAdcTimeWindowMin; + Double_t* fPosAdcTimeWindowMax; + Double_t* fNegAdcTimeWindowMax; Double_t fAdcTdcOffset; Int_t fAnalyzePedestals; // Flag for pedestal analysis. diff --git a/src/THcShowerPlane.cxx b/src/THcShowerPlane.cxx index 9dafbafd135bbadf983f0845fea2999f2196f480..568a7f394d30763e6a4b577bb2293ce016ab3e46 100644 --- a/src/THcShowerPlane.cxx +++ b/src/THcShowerPlane.cxx @@ -738,10 +738,13 @@ void THcShowerPlane::FillADC_DynamicPedestal() { Double_t StartTime = 0.0; if( fglHod ) StartTime = fglHod->GetStartTime(); - Double_t* AdcTimeWindowMin=static_cast<THcShower*>(fParent)->GetAdcTimeWindowMin(); - Double_t* AdcTimeWindowMax=static_cast<THcShower*>(fParent)->GetAdcTimeWindowMax(); + Double_t* PosAdcTimeWindowMin=static_cast<THcShower*>(fParent)->GetPosAdcTimeWindowMin(); + Double_t* NegAdcTimeWindowMin=static_cast<THcShower*>(fParent)->GetNegAdcTimeWindowMin(); + Double_t* PosAdcTimeWindowMax=static_cast<THcShower*>(fParent)->GetPosAdcTimeWindowMax(); + Double_t* NegAdcTimeWindowMax=static_cast<THcShower*>(fParent)->GetNegAdcTimeWindowMax(); for (Int_t ielem=0;ielem<frNegAdcPulseInt->GetEntries();ielem++) { Int_t npad = ((THcSignalHit*) frNegAdcPulseInt->ConstructedAt(ielem))->GetPaddleNumber() - 1; + Int_t nblock = npad*(fLayerNum-1)+npad; Double_t pulseInt = ((THcSignalHit*) frNegAdcPulseInt->ConstructedAt(ielem))->GetData(); Double_t pulsePed = ((THcSignalHit*) frNegAdcPed->ConstructedAt(ielem))->GetData(); Double_t pulseAmp = ((THcSignalHit*) frNegAdcPulseAmp->ConstructedAt(ielem))->GetData(); @@ -750,7 +753,7 @@ void THcShowerPlane::FillADC_DynamicPedestal() Double_t adctdcdiffTime = StartTime-pulseTime; Double_t threshold = ((THcSignalHit*) frNegAdcThreshold->ConstructedAt(ielem))->GetData(); Bool_t errorflag = ((THcSignalHit*) frNegAdcErrorFlag->ConstructedAt(ielem))->GetData(); - Bool_t pulseTimeCut = (adctdcdiffTime > AdcTimeWindowMin[npad]) && (adctdcdiffTime < AdcTimeWindowMax[npad]); + Bool_t pulseTimeCut = (adctdcdiffTime > NegAdcTimeWindowMin[nblock]) && (adctdcdiffTime < NegAdcTimeWindowMax[nblock]); if (!errorflag && pulseTimeCut) { fGoodNegAdcPulseIntRaw.at(npad) =pulseIntRaw; @@ -776,6 +779,7 @@ void THcShowerPlane::FillADC_DynamicPedestal() // for (Int_t ielem=0;ielem<frPosAdcPulseInt->GetEntries();ielem++) { Int_t npad = ((THcSignalHit*) frPosAdcPulseInt->ConstructedAt(ielem))->GetPaddleNumber() - 1; + Int_t nblock = npad*(fLayerNum-1)+npad; Double_t pulsePed = ((THcSignalHit*) frPosAdcPed->ConstructedAt(ielem))->GetData(); Double_t threshold = ((THcSignalHit*) frPosAdcThreshold->ConstructedAt(ielem))->GetData(); Double_t pulseAmp = ((THcSignalHit*) frPosAdcPulseAmp->ConstructedAt(ielem))->GetData(); @@ -784,7 +788,7 @@ void THcShowerPlane::FillADC_DynamicPedestal() Double_t pulseTime = ((THcSignalHit*) frPosAdcPulseTime->ConstructedAt(ielem))->GetData(); Double_t adctdcdiffTime = StartTime-pulseTime; Bool_t errorflag = ((THcSignalHit*) frPosAdcErrorFlag->ConstructedAt(ielem))->GetData(); - Bool_t pulseTimeCut = (adctdcdiffTime > AdcTimeWindowMin[npad]) && (adctdcdiffTime < AdcTimeWindowMax[npad]); + Bool_t pulseTimeCut = (adctdcdiffTime > PosAdcTimeWindowMin[nblock]) && (adctdcdiffTime < PosAdcTimeWindowMax[nblock]); if (!errorflag && pulseTimeCut) { fGoodPosAdcPulseIntRaw.at(npad) = pulseIntRaw;