diff --git a/src/THcHelicityScaler.cxx b/src/THcHelicityScaler.cxx index 2ce79bdfc1c702e5b38f2d0d4f178c819df2e666..32db496db3daf42578c0e6ac7a34bc12ee607541 100644 --- a/src/THcHelicityScaler.cxx +++ b/src/THcHelicityScaler.cxx @@ -51,11 +51,10 @@ static const UInt_t MAXCHAN = 32; static const UInt_t defaultDT = 4; THcHelicityScaler::THcHelicityScaler(const char *name, const char* description) - : THaEvtTypeHandler(name,description), + : THaEvtTypeHandler(name, description), fBankID(9801), fUseFirstEvent(kTRUE), - fDelayedType(-1), - fBCM_Gain(0), fBCM_Offset(0) + fDelayedType(-1) { fROC=-1; fNScalerChannels = 32; @@ -72,9 +71,6 @@ THcHelicityScaler::THcHelicityScaler(const char *name, const char* description) THcHelicityScaler::~THcHelicityScaler() { - delete [] fBCM_Gain; - delete [] fBCM_Offset; - for( vector<UInt_t*>::iterator it = fDelayedEvents.begin(); it != fDelayedEvents.end(); ++it ) delete [] *it; @@ -180,11 +176,11 @@ Int_t THcHelicityScaler::ReadDatabase(const TDatime& date ) }; gHcParms->LoadParmValues((DBRequest*)&list, prefix); if(fNumBCMs > 0) { - fBCM_Gain = new Double_t[fNumBCMs]; - fBCM_Offset = new Double_t[fNumBCMs]; + fBCM_Gain.resize(fNumBCMs); + fBCM_Offset.resize(fNumBCMs); DBRequest list2[]={ - {"BCM_Gain", fBCM_Gain, kDouble, (UInt_t) fNumBCMs}, - {"BCM_Offset", fBCM_Offset, kDouble,(UInt_t) fNumBCMs}, + {"BCM_Gain", &fBCM_Gain[0], kDouble, (UInt_t) fNumBCMs}, + {"BCM_Offset", &fBCM_Offset[0], kDouble, (UInt_t) fNumBCMs}, {0} }; gHcParms->LoadParmValues((DBRequest*)&list2, prefix); @@ -470,11 +466,11 @@ THaAnalysisObject::EStatus THcHelicityScaler::Init(const TDatime& date) fRingSeed_actual = 0; fNBits = 0; fNTriggersPlus = fNTriggersMinus = 0; - fHScalers[0] = new Double_t[fNScalerChannels]; - fHScalers[1] = new Double_t[fNScalerChannels]; - fScalerSums = new Double_t[fNScalerChannels]; - fAsymmetry = new Double_t[fNScalerChannels]; - fAsymmetryError = new Double_t[fNScalerChannels]; + fHScalers[0].resize(fNScalerChannels); + fHScalers[1].resize(fNScalerChannels); + fScalerSums.resize(fNScalerChannels); + fAsymmetry.resize(fNScalerChannels); + fAsymmetryError.resize(fNScalerChannels); for(Int_t i=0;i<fNScalerChannels;i++) { fHScalers[0][i] = 0.0; fHScalers[1][i] = 0.0; @@ -483,8 +479,8 @@ THaAnalysisObject::EStatus THcHelicityScaler::Init(const TDatime& date) fAsymmetryError[0] = 0.0; } - fCharge = new Double_t[fNumBCMs]; - fChargeAsymmetry = new Double_t[fNumBCMs]; + fCharge.resize(fNumBCMs); + fChargeAsymmetry.resize(fNumBCMs); fTime = fTimeAsymmetry = 0; fTriggerAsymmetry = 0.0; @@ -500,15 +496,15 @@ void THcHelicityScaler::MakeParms() Put Various helicity scaler results in gHcParms so they can be included in results. */ gHcParms->Define(Form("g%s_hscaler_plus[%d]",fName.Data(),fNScalerChannels), - "Plus Helcity Scalers",*(fHScalers[0])); + "Plus Helcity Scalers", fHScalers[0][0]); gHcParms->Define(Form("g%s_hscaler_minus[%d]",fName.Data(),fNScalerChannels), - "Minus Helcity Scalers",*(fHScalers[1])); + "Minus Helcity Scalers", fHScalers[1][0]); gHcParms->Define(Form("g%s_hscaler_sum[%d]",fName.Data(),fNScalerChannels), - "Helcity Scalers Sum",*fScalerSums); + "Helcity Scalers Sum", fScalerSums[0]); gHcParms->Define(Form("g%s_hscaler_asy[%d]",fName.Data(),fNScalerChannels), - "Helicity Scaler Asymmetry[%d]",*fAsymmetry); + "Helicity Scaler Asymmetry[%d]", fAsymmetry[0]); gHcParms->Define(Form("g%s_hscaler_asyerr[%d]",fName.Data(),fNScalerChannels), - "Helicity Scaler Asymmetry Error[%d]",*fAsymmetryError); + "Helicity Scaler Asymmetry Error[%d]", fAsymmetryError[0]); gHcParms->Define(Form("g%s_hscaler_triggers",fName.Data()), "Total Helicity Scaler Triggers",fNTriggers); gHcParms->Define(Form("g%s_hscaler_triggers_plus",fName.Data()), @@ -516,9 +512,9 @@ void THcHelicityScaler::MakeParms() gHcParms->Define(Form("g%s_hscaler_triggers_minus",fName.Data()), "Negative Helicity Scaler Triggers",fNTriggersMinus); gHcParms->Define(Form("g%s_hscaler_charge[%d]",fName.Data(),fNumBCMs), - "Helicity Gated Charge",*fCharge); + "Helicity Gated Charge", fCharge[0]); gHcParms->Define(Form("g%s_hscaler_charge_asy[%d]",fName.Data(),fNumBCMs), - "Helicity Gated Charge Asymmetry",*fChargeAsymmetry); + "Helicity Gated Charge Asymmetry", fChargeAsymmetry[0]); gHcParms->Define(Form("g%s_hscaler_time",fName.Data()), "Helicity Gated Time (sec)",fTime); gHcParms->Define(Form("g%s_hscaler_time_asy",fName.Data()), diff --git a/src/THcHelicityScaler.h b/src/THcHelicityScaler.h index fff1b69f5319a3b250d39c5d245ce9e8fe592157..c01ba1d4c31f1fe3be7e2b3b046d0ef091300a27 100644 --- a/src/THcHelicityScaler.h +++ b/src/THcHelicityScaler.h @@ -69,13 +69,10 @@ private: Int_t fNTriggersPlus; Int_t fNTriggersMinus; - Double_t* fHScalers[2]; + std::vector<Double_t> fHScalers[2]; Int_t fGateCount[2]; - Double_t *fScalerSums; - Double_t *fAsymmetry; - Double_t *fAsymmetryError; - Double_t *fCharge; - Double_t *fChargeAsymmetry; + std::vector<Double_t> fScalerSums, fAsymmetry, fAsymmetryError; + std::vector<Double_t> fCharge, fChargeAsymmetry; Double_t fTime; Double_t fTimeAsymmetry; Double_t fTriggerAsymmetry; @@ -85,8 +82,7 @@ private: Int_t fNScalerChannels; // Number of scaler channels/event Int_t fNumBCMs; - Double_t *fBCM_Gain; - Double_t *fBCM_Offset; + std::vector<Double_t> fBCM_Gain, fBCM_Offset; std::vector <std::string> fBCM_Name; THcHelicityScaler(const THcHelicityScaler& fh);