#ifndef ALIEMCALRECPARAM_H
#define ALIEMCALRECPARAM_H
#include "AliDetectorRecoParam.h"
#include "AliLog.h"
class AliEMCALRecParam : public AliDetectorRecoParam
{
public:
enum AliEMCALClusterizerFlag
{
kClusterizerv1 = 0,
kClusterizerNxN = 1,
kClusterizerv2 = 2,
kClusterizerFW = 3
};
AliEMCALRecParam() ;
AliEMCALRecParam(const AliEMCALRecParam& recParam);
AliEMCALRecParam& operator = (const AliEMCALRecParam& recParam);
virtual ~AliEMCALRecParam() {}
Float_t GetClusteringThreshold() const {return fClusteringThreshold ;}
Float_t GetW0 () const {return fW0 ;}
Float_t GetMinECut () const {return fMinECut ;}
Float_t GetLocMaxCut () const {return fLocMaxCut ;}
Float_t GetTimeCut () const {return fTimeCut ;}
Float_t GetTimeMin () const {return fTimeMin ;}
Float_t GetTimeMax () const {return fTimeMax ;}
Bool_t GetUnfold () const {return fUnfold ;}
Int_t GetNRowDiff () const {return fNRowDiff ;}
Int_t GetNColDiff () const {return fNColDiff ;}
void SetClusteringThreshold(Float_t thrsh) {fClusteringThreshold = thrsh;}
void SetW0 (Float_t w0) {fW0 = w0 ;}
void SetMinECut (Float_t ecut) {fMinECut = ecut ;}
void SetLocMaxCut (Float_t locMaxCut) {fLocMaxCut = locMaxCut ;}
void SetTimeCut (Float_t t) {fTimeCut = t ;}
void SetTimeMin (Float_t t) {fTimeMin = t ;}
void SetTimeMax (Float_t t) {fTimeMax = t ;}
void SetUnfold (Bool_t unfold) {fUnfold = unfold ;}
void SetNxM(Int_t rdiff, Int_t cdiff) {fNRowDiff=rdiff; fNColDiff = cdiff; }
Double_t GetGamma(Int_t i, Int_t j) const {return fGamma[i][j];}
Double_t GetGammaEnergyProb(Int_t i) const {return fGammaEnergyProb[i];}
Double_t GetGamma1to10(Int_t i, Int_t j) const {return fGamma1to10[i][j];}
Double_t GetHadron(Int_t i, Int_t j) const {return fHadron[i][j];}
Double_t GetHadron1to10(Int_t i, Int_t j) const {return fHadron1to10[i][j];}
Double_t GetHadronEnergyProb(Int_t i) const {return fHadronEnergyProb[i];}
Double_t GetPiZero(Int_t i, Int_t j) const {return fPiZero[i][j];}
Double_t GetPiZeroEnergyProb(Int_t i) const {return fPiZeroEnergyProb[i];}
void SetGamma(Int_t i, Int_t j,Double_t param ) {fGamma[i][j]=param;}
void SetGammaEnergyProb(Int_t i, Double_t param ) {fGammaEnergyProb[i]=param;}
void SetGamma1to10(Int_t i, Int_t j,Double_t param ) {fGamma1to10[i][j]=param;}
void SetHadron(Int_t i, Int_t j,Double_t param ) {fHadron[i][j]=param;}
void SetHadron1to10(Int_t i, Int_t j,Double_t param ) {fHadron1to10[i][j]=param;}
void SetHadronEnergyProb(Int_t i,Double_t param ) {fHadronEnergyProb[i]=param;}
void SetPiZero(Int_t i, Int_t j,Double_t param) {fPiZero[i][j]=param;}
void SetPiZeroEnergyProb(Int_t i,Double_t param) {fPiZeroEnergyProb[i]=param;}
void SetMthCutEta(Double_t value) {fMthCutEta = value;}
void SetMthCutPhi(Double_t value) {fMthCutPhi = value;}
void SetExtrapolateStep(Double_t value) {fStep = value;}
void SetTrkCutPt(Double_t value) {fTrkCutPt = value;}
void SetTrkCutNITS(Double_t value) {fTrkCutNITS = value;}
void SetTrkCutNTPC(Double_t value) {fTrkCutNTPC = value;}
Double_t GetMthCutEta() const {return fMthCutEta;}
Double_t GetMthCutPhi() const {return fMthCutPhi;}
Double_t GetExtrapolateStep() const {return fStep;}
Double_t GetTrkCutPt() const {return fTrkCutPt;}
Double_t GetTrkCutNITS() const {return fTrkCutNITS;}
Double_t GetTrkCutNTPC() const {return fTrkCutNTPC;}
void SetHighLowGainFactor(Double_t value) {fHighLowGainFactor = value;}
void SetOrderParameter(Int_t value) {fOrderParameter = value;}
void SetTau(Double_t value) {fTau = value;}
void SetNoiseThreshold(Int_t value) {fNoiseThreshold = value;}
void SetNPedSamples(Int_t value) {fNPedSamples = value;}
void SetRemoveBadChannels(Bool_t val) {fRemoveBadChannels=val; }
void SetFittingAlgorithm(Int_t val) {fFittingAlgorithm=val; }
void SetFALTROUsage(Bool_t val) {fUseFALTRO=val; }
void SetLEDFit(Bool_t val) {fFitLEDEvents=val; }
Double_t GetHighLowGainFactor() const {return fHighLowGainFactor;}
Int_t GetOrderParameter() const {return fOrderParameter;}
Double_t GetTau() const {return fTau;}
Int_t GetNoiseThreshold() const {return fNoiseThreshold;}
Int_t GetNPedSamples() const {return fNPedSamples;}
Bool_t GetRemoveBadChannels() const {return fRemoveBadChannels;}
Int_t GetFittingAlgorithm() const {return fFittingAlgorithm; }
Bool_t UseFALTRO() const {return fUseFALTRO; }
Bool_t FitLEDEvents() const {return fFitLEDEvents; }
Double_t GetSSPars(Int_t i) const {return fSSPars[i];}
Double_t GetPar5(Int_t i) const {return fPar5[i];}
Double_t GetPar6(Int_t i) const {return fPar6[i];}
void SetSSPars(Int_t i, Double_t param ) {fSSPars[i]=param;}
void SetPar5(Int_t i, Double_t param ) {fPar5[i]=param;}
void SetPar6(Int_t i, Double_t param ) {fPar6[i]=param;}
Bool_t GetRejectBelowThreshold() const { return fRejectBelowThreshold; }
void SetRejectBelowThreshold(Bool_t reject) { fRejectBelowThreshold = reject; }
virtual void Print(Option_t * option="") const;
static AliEMCALRecParam* GetDefaultParameters();
static AliEMCALRecParam* GetLowFluxParam();
static AliEMCALRecParam* GetHighFluxParam();
static AliEMCALRecParam* GetCalibParam();
static AliEMCALRecParam* GetCosmicParam();
static const TObjArray* GetMappings();
void SetClusterizerFlag(Short_t val) { fClusterizerFlag = val; }
Short_t GetClusterizerFlag() const { return fClusterizerFlag; }
private:
Float_t fClusteringThreshold ;
Float_t fW0 ;
Float_t fMinECut;
Bool_t fUnfold;
Float_t fLocMaxCut;
Float_t fTimeCut ;
Float_t fTimeMin ;
Float_t fTimeMax ;
Short_t fClusterizerFlag ;
Int_t fNRowDiff;
Int_t fNColDiff;
Double_t fGamma[6][6];
Double_t fGamma1to10[6][6];
Double_t fHadron[6][6];
Double_t fHadron1to10[6][6];
Double_t fHadronEnergyProb[6];
Double_t fPiZeroEnergyProb[6];
Double_t fGammaEnergyProb[6];
Double_t fPiZero[6][6];
Double_t fMthCutEta;
Double_t fMthCutPhi;
Double_t fStep;
Double_t fTrkCutPt;
Double_t fTrkCutNITS;
Double_t fTrkCutNTPC;
Double_t fHighLowGainFactor;
Int_t fOrderParameter;
Double_t fTau;
Int_t fNoiseThreshold;
Int_t fNPedSamples;
Bool_t fRemoveBadChannels;
Int_t fFittingAlgorithm;
Bool_t fUseFALTRO;
Bool_t fFitLEDEvents;
Bool_t fRejectBelowThreshold;
Double_t fSSPars[8];
Double_t fPar5[3];
Double_t fPar6[3];
static TObjArray* fgkMaps;
ClassDef(AliEMCALRecParam,17)
};
#endif // ALIEMCALRECPARAM_H