#ifndef PNDSDSCHARGECONVERSION_H #define PNDSDSCHARGECONVERSION_H //! base class for energy loss <-> digi value conversion //! @author D.-L.Pohl #include #include "TObject.h" #include "TString.h" #include "PndSdsDigi.h" enum ConvType{kUndefined,kIdeal,kToT,kADC}; class PndSdsChargeConversion : public TObject { public : PndSdsChargeConversion(ConvType type){fConvType = type;}; virtual ~PndSdsChargeConversion(){}; virtual void StartExecute(){}; virtual void EndExecute(){}; virtual Double_t ChargeToDigiValue(Double_t Charge) = 0; virtual Double_t DigiValueToCharge(Double_t digi) = 0; virtual Double_t DigiValueToCharge(PndSdsDigi &digi); virtual Double_t GetRelativeError(Double_t Charge) = 0; virtual Double_t GetTimeStamp(Double_t tof, Double_t charge, Double_t MCEventTime) = 0; virtual Double_t GetTimeWalk(Double_t charge){return 0;}; Double_t GetParameter(TString param){ it=fParams.find(param); if (it == fParams.end()){ Error("GetParameter(TString param)","No parameter named: %s",param.Data()); return -1; } return it->second; }; void SetParameter(TString param, Double_t value){ if (value < 0 ) Error("SetParameter(TString param, Double_t value)","invalid value for param: %s", param.Data()); fParams.insert(std::pair(param, value)); }; private : std::map fParams; std::map::iterator it; ConvType fConvType; ClassDef(PndSdsChargeConversion,2); }; #endif /* PNDSDSCHARGECONVERSION_H */