#ifndef HRPCCHARGEOFFSETPAR_H
#define HRPCCHARGEOFFSETPAR_H
#include "TArrayF.h"
#include "hparcond.h"
class HParamList;
class HRpcChargeOffsetPar : public HParCond {
protected:
TArrayI fRunIDs;
TArrayF fChargeCorrPar;
Int_t fCurrent;
Int_t fNRuns;
public:
HRpcChargeOffsetPar(const Char_t* name ="RpcChargeOffsetPar",
const Char_t* title ="Correction of RPC charge offsets",
const Char_t* context="RpcChargeOffsetParProduction");
~HRpcChargeOffsetPar();
void addNewSet(Float_t* pars, Int_t startRunID);
void addFirstSet(Float_t* pars, Int_t startRunID);
void addLastSet(Float_t* pars, Int_t startRunID,Int_t endRunID);
void addLastRunId(Int_t runId);
Float_t getPar(Int_t sec, Int_t TRB, Int_t MBO, Int_t DBO) const { return fChargeCorrPar[fCurrent*64*6 + sec*64 + MBO*16 + TRB*4 + DBO/2]; }
Float_t getPar(Int_t regNum) const { return fChargeCorrPar[fCurrent*64*6 + regNum]; }
Int_t getFirstRunID() const { return fRunIDs[0]; }
Int_t getLastRunID() const { return fRunIDs[fNRuns]; }
Int_t getNextRunID() const { return fRunIDs[fCurrent+1]; }
Int_t getCurrentSet() { return fCurrent; }
Int_t getNSets() { return fNRuns; }
void setPars(Int_t nrun, Float_t* pars, Int_t startRunID) { for(Int_t i = 0; i < 64*6 ; i++) fChargeCorrPar.AddAt(pars[i], nrun*64*6); fRunIDs.AddAt(startRunID, nrun); }
Bool_t init(HParIo* inp, Int_t* set);
void putParams(HParamList*);
Bool_t getParams(HParamList*);
Int_t getSlot(Int_t runId);
void clear();
ClassDef(HRpcChargeOffsetPar,1)
};
#endif /*!HRPCCHARGEOFFSETPAR_H*/