//--------------------------------------------- // Go4 Tasca analysis // Author: Hans G. Essel // H.Essel@gsi.de // GSI, Experiment Electronics, Data Processing // modified by r.maendl // July 2021 - cleanup by JAM (j.adamczewski@gsi.de) //--------------------------------------------- #ifndef TascaCalibration_H #define TascaCalibration_H #include "TGo4Parameter.h" #include "TMath.h" #define TASCA_CALI_NUMGAMMA 8 #define TASCA_CALI_NUMSTOP 192 class TascaCalibration: public TGo4Parameter { public: TascaCalibration(); TascaCalibration(const char* name); virtual ~TascaCalibration(); Int_t PrintParameter(); Bool_t Preset(); void ReadCoefficients(); void ReadSingleCoefficients(const char * file, UInt_t size, Double_t *a0, Double_t *a1, Double_t *a2); inline Double_t CalibrateGammaE(UInt_t channel, UInt_t index) { if(index>=TASCA_CALI_NUMGAMMA) return -1.0; Double_t c = (Double_t) channel; if(!UseCalibration) return c; return (Float_t) (fdGammaE_a0[index] + (fdGammaE_a1[index] + fdGammaE_a2[index] * c) * c); } inline Double_t CalibrateGammaT(UInt_t channel, UInt_t index) { if(index>=TASCA_CALI_NUMGAMMA) return -1.0; Double_t c = (Double_t) channel; if(!UseCalibration) return c; return (Double_t) (fdGammaT_a0[index] + (fdGammaT_a1[index] + fdGammaT_a2[index] * c) * c); } inline Double_t CalibrateStopXL(UInt_t channel, UInt_t index) { if(index>=TASCA_CALI_NUMSTOP) return -1.0; Double_t c = (Double_t) channel; if(!UseCalibration) return c; return (Double_t) (fdStopXL_a0[index] + (fdStopXL_a1[index] + fdStopXL_a2[index] * c) * c); } inline Double_t CalibrateStopYL(UInt_t channel, UInt_t index) { Double_t c = (Double_t) channel; if(!UseCalibration) return c; return (Double_t) (fdStopYL_a0[index] + (fdStopYL_a1[index] + fdStopYL_a2[index] * c) * c); } void EnableCalibration(Bool_t on) { UseCalibration = on; } void SetPrefix(const char *pref) { prefix = pref; } Bool_t UseCalibration; TString prefix; /** Calibration polynom coeff */ Double_t fdGammaE_a0[TASCA_CALI_NUMGAMMA]; Double_t fdGammaE_a1[TASCA_CALI_NUMGAMMA]; Double_t fdGammaE_a2[TASCA_CALI_NUMGAMMA]; Double_t fdGammaT_a0[TASCA_CALI_NUMGAMMA]; Double_t fdGammaT_a1[TASCA_CALI_NUMGAMMA]; Double_t fdGammaT_a2[TASCA_CALI_NUMGAMMA]; Double_t fdStopXL_a0[TASCA_CALI_NUMSTOP]; Double_t fdStopXL_a1[TASCA_CALI_NUMSTOP]; Double_t fdStopXL_a2[TASCA_CALI_NUMSTOP]; Double_t fdStopYL_a0[TASCA_CALI_NUMSTOP]; Double_t fdStopYL_a1[TASCA_CALI_NUMSTOP]; Double_t fdStopYL_a2[TASCA_CALI_NUMSTOP]; ClassDef(TascaCalibration,2) }; #endif