#ifndef ALIITSCORRMAPSDD_H
#define ALIITSCORRMAPSDD_H
#include<TNamed.h>
#include "AliLog.h"
class TH1F;
class TH2F;
class AliITSsegmentationSDD;
class AliITSCorrMapSDD : public TNamed {
public:
enum {kLeftInvBit = BIT(14)};
AliITSCorrMapSDD();
AliITSCorrMapSDD(Char_t *mapname);
virtual ~AliITSCorrMapSDD(){};
void SetInversionBit(Bool_t v=kTRUE) {SetBit(kLeftInvBit,v);}
Bool_t GetInversionBit() const {return TestBit(kLeftInvBit);}
Int_t GetNBinsAnode() const {return fNAnodePts;}
Int_t GetNBinsDrift() const {return fNDriftPts;}
void SetNBinsAnode(Int_t nbins) {
if(nbins<=kMaxNAnodePts) fNAnodePts=nbins;
else AliError(Form("Max. number of anode bins = %d",kMaxNAnodePts));
}
void SetNBinsDrift(Int_t nbins) {
if(nbins<=kMaxNDriftPts) fNDriftPts=nbins;
else AliError(Form("Max. number of drift bins = %d",kMaxNDriftPts));
}
Bool_t CheckAnodeBounds(Int_t iAn) const {
if(iAn<0 || iAn>=fNAnodePts)return kFALSE;
else return kTRUE;
}
Bool_t CheckDriftBounds(Int_t iTb) const {
if(iTb<0 || iTb >= fNDriftPts)return kFALSE;
else return kTRUE;
}
virtual void Set1DMap(TH1F* ){
AliError("Not implemented");
}
virtual void Set2DMap(TH2F* ){
AliError("Not implemented");
}
virtual void ResetMap(){
AliError("Not implemented");
}
virtual void SetCellContent(Int_t , Int_t , Float_t ){
AliError("Not implemented");
}
virtual Float_t GetCellContent(Int_t , Int_t ) const {
AliError("Not implemented");
return -99999.;
}
void ComputeGridPoints(Float_t z, Float_t x, AliITSsegmentationSDD *seg, Bool_t isReco=kTRUE);
Float_t GetCorrection(Float_t z, Float_t x, AliITSsegmentationSDD *seg);
Float_t GetShiftForSimulation(Float_t z, Float_t x, AliITSsegmentationSDD *seg);
TH2F* GetMapHisto() const;
TH1F* GetMapProfile() const;
TH1F* GetResidualDistr(Float_t dmin=-300., Float_t dmax=300.) const;
protected:
enum {kMaxNAnodePts=256};
enum {kMaxNDriftPts=291};
static const Int_t fgkNAnodePtsDefault;
static const Int_t fgkNDriftPtsDefault;
Int_t fNAnodePts;
Int_t fNDriftPts;
Float_t fXt1;
Float_t fXt2;
Float_t fXm1;
Float_t fXm2;
Float_t fDrLen;
ClassDef(AliITSCorrMapSDD,2);
};
#endif