diff --git a/src/THcCherenkov.cxx b/src/THcCherenkov.cxx index 8486c0895d003db90ac76c96533175534e0b93c2..1ac7a343078de85affed50ac6d65365187902a0d 100644 --- a/src/THcCherenkov.cxx +++ b/src/THcCherenkov.cxx @@ -64,6 +64,8 @@ THcCherenkov::THcCherenkov( const char* name, const char* description, fNumTracksFired = vector<Int_t> (MaxNumCerPmt, 0.0); fNpe = vector<Double_t> (MaxNumCerPmt, 0.0); fGoodAdcPed = vector<Double_t> (MaxNumCerPmt, 0.0); + fGoodAdcMult = vector<Double_t> (MaxNumCerPmt, 0.0); + fGoodAdcHitUsed = vector<Double_t> (MaxNumCerPmt, 0.0); fGoodAdcPulseInt = vector<Double_t> (MaxNumCerPmt, 0.0); fGoodAdcPulseIntRaw = vector<Double_t> (MaxNumCerPmt, 0.0); fGoodAdcPulseAmp = vector<Double_t> (MaxNumCerPmt, 0.0); @@ -204,7 +206,8 @@ Int_t THcCherenkov::ReadDatabase( const TDatime& date ) fPedLimit = new Int_t[fNelem]; fGain = new Double_t[fNelem]; fPedMean = new Double_t[fNelem]; - + fAdcTimeWindowMin = new Double_t[fNelem]; + fAdcTimeWindowMax= new Double_t[fNelem]; // Region parameters fRegionsValueMax = fNRegions * 8; fRegionValue = new Double_t[fRegionsValueMax]; @@ -223,14 +226,17 @@ Int_t THcCherenkov::ReadDatabase( const TDatime& date ) {"_mirror_zpos", &fMirrorZPos, kDouble}, {"_npe_thresh", &fNpeThresh, kDouble}, {"_debug_adc", &fDebugAdc, kInt, 0, 1}, - {"_adcTimeWindowMin", &fAdcTimeWindowMin, kDouble}, - {"_adcTimeWindowMax", &fAdcTimeWindowMax, kDouble}, + {"_adcTimeWindowMin", fAdcTimeWindowMin, kDouble,(UInt_t) fNelem,1}, + {"_adcTimeWindowMax", fAdcTimeWindowMax, kDouble, (UInt_t) fNelem,1}, {"_adc_tdc_offset", &fAdcTdcOffset, kDouble, 0, 1}, {"_region", &fRegionValue[0], kDouble, (UInt_t) fRegionsValueMax}, {"_adcrefcut", &fADC_RefTimeCut, kInt, 0, 1}, {0} }; - + for (Int_t i=0;i<fNelem;i++) { + fAdcTimeWindowMin[i]=-1000.; + fAdcTimeWindowMax[i]=1000.; + } fDebugAdc = 0; // Set ADC debug parameter to false unless set in parameter file fAdcTdcOffset = 0.0; fADC_RefTimeCut = 0; @@ -302,6 +308,8 @@ Int_t THcCherenkov::DefineVariables( EMode mode ) {"npeSum", "Total Number of PEs", "fNpeSum"}, {"goodAdcPed", "Good ADC pedestals", "fGoodAdcPed"}, + {"goodAdcMult", "Good ADC Multiplicity", "fGoodAdcMult"}, + {"goodAdcHitUsed", "Good ADC Hit Used", "fGoodAdcHitUsed"}, {"goodAdcPulseInt", "Good ADC pulse integrals", "fGoodAdcPulseInt"}, {"goodAdcPulseIntRaw", "Good ADC raw pulse integrals", "fGoodAdcPulseIntRaw"}, {"goodAdcPulseAmp", "Good ADC pulse amplitudes", "fGoodAdcPulseAmp"}, @@ -349,6 +357,8 @@ void THcCherenkov::Clear(Option_t* opt) fNumTracksFired.at(ielem) = 0; for (UInt_t ielem = 0; ielem < fGoodAdcPed.size(); ielem++) { fGoodAdcPed.at(ielem) = 0.0; + fGoodAdcMult.at(ielem) = 0.0; + fGoodAdcHitUsed.at(ielem) = 0.0; fGoodAdcPulseInt.at(ielem) = 0.0; fGoodAdcPulseIntRaw.at(ielem) = 0.0; fGoodAdcPulseAmp.at(ielem) = 0.0; @@ -438,11 +448,13 @@ Int_t THcCherenkov::CoarseProcess( TClonesArray& ) Double_t pulseTime = ((THcSignalHit*) frAdcPulseTime->ConstructedAt(ielem))->GetData(); Double_t adctdcdiffTime = StartTime-pulseTime; Bool_t errorFlag = ((THcSignalHit*) fAdcErrorFlag->ConstructedAt(ielem))->GetData(); - Bool_t pulseTimeCut = adctdcdiffTime > fAdcTimeWindowMin && adctdcdiffTime < fAdcTimeWindowMax; + Bool_t pulseTimeCut = adctdcdiffTime > fAdcTimeWindowMin[npmt] && adctdcdiffTime < fAdcTimeWindowMax[npmt]; // By default, the last hit within the timing cut will be considered "good" if (!errorFlag && pulseTimeCut) { fGoodAdcPed.at(npmt) = pulsePed; + fGoodAdcHitUsed.at(npmt) = ielem+1; + fGoodAdcMult.at(npmt) =frAdcPulseInt->GetEntries() ; fGoodAdcPulseInt.at(npmt) = pulseInt; fGoodAdcPulseIntRaw.at(npmt) = pulseIntRaw; fGoodAdcPulseAmp.at(npmt) = pulseAmp; diff --git a/src/THcCherenkov.h b/src/THcCherenkov.h index 6b852ec9193e1990d5450294923999654007a9a1..47845c55575ec2d79630afbc8c667bd564d50be3 100644 --- a/src/THcCherenkov.h +++ b/src/THcCherenkov.h @@ -66,6 +66,8 @@ class THcCherenkov : public THaNonTrackingDetector, public THcHitList { vector<Int_t> fNumTracksMatched; vector<Int_t> fNumTracksFired; vector<Double_t> fGoodAdcPed; + vector<Double_t> fGoodAdcMult; + vector<Double_t> fGoodAdcHitUsed; vector<Double_t> fGoodAdcPulseInt; vector<Double_t> fGoodAdcPulseIntRaw; vector<Double_t> fGoodAdcPulseAmp; @@ -87,8 +89,8 @@ class THcCherenkov : public THaNonTrackingDetector, public THcHitList { Double_t fXAtCer; Double_t fYAtCer; Double_t fNpeThresh; - Double_t fAdcTimeWindowMin; - Double_t fAdcTimeWindowMax; + Double_t* fAdcTimeWindowMin; + Double_t* fAdcTimeWindowMax; Double_t fAdcTdcOffset; Double_t* fRegionValue;