#ifndef ALIITSPLANEEFF_H
#define ALIITSPLANEEFF_H
#include <TString.h>
#include "AliPlaneEff.h"
class AliITSsegmentation;
class TF1;
class AliITSgeom;
class AliLog;
class AliITSPlaneEff : public AliPlaneEff {
public:
AliITSPlaneEff();
virtual ~AliITSPlaneEff(){;};
AliITSPlaneEff(const AliITSPlaneEff &source);
AliITSPlaneEff& operator=(const AliITSPlaneEff &source);
Int_t GetRunNumber() const {return fRunNumber;}
void SetRunNumber(Int_t n) {fRunNumber=n;}
Double_t PlaneEff(Int_t nfound,Int_t ntried) const;
Double_t ErrPlaneEff(Int_t nfound,Int_t ntried) const;
virtual void GetPlaneEff(Int_t nfound,Int_t ntried,Double_t &eff, Double_t &err) const
{eff=PlaneEff(nfound,ntried); err=ErrPlaneEff(nfound,ntried); return;};
virtual Double_t PlaneEff(const UInt_t key) const=0;
virtual Double_t LivePlaneEff(UInt_t) const
{AliWarning("This method gives just a rough estimate of the live-Det Efficiency!");
return -1.;};
virtual Double_t ErrLivePlaneEff(UInt_t) const
{AliError("This method must be implemented in a derived class"); return -1.;};
virtual Double_t GetFracLive(const UInt_t) const
{AliError("This method must be implemented in a derived class"); return -1.;};
virtual Double_t GetFracBad(const UInt_t) const
{AliError("This method must be implemented in a derived class"); return -1.;};
virtual Bool_t UpDatePlaneEff(const Bool_t, const UInt_t)
{AliError("This method must be implemented in a derived class"); return kFALSE;};
virtual Int_t GetNTracksForGivenEff(Double_t eff, Double_t RelErr) const;
void SetDefaultStorage(const char* uri);
virtual Bool_t WriteIntoCDB() const
{AliError("This method must be implemented in a derived class"); return kFALSE;};
virtual Bool_t ReadFromCDB()
{AliError("This method must be implemented in a derived class"); return kFALSE;};
virtual Bool_t AddFromCDB()
{AliError("This method must be implemented in a derived class"); return kFALSE;};
virtual UInt_t GetKeyFromDetLocCoord(Int_t, Int_t, Float_t, Float_t) const
{AliError("This method must be implemented in a derived class"); return 999999;};
virtual UInt_t Nblock() const
{AliError("This method must be implemented in a derived class"); return 999999;};
virtual Bool_t GetBlockBoundaries(const UInt_t,Float_t&,Float_t&,Float_t&,Float_t&) const
{AliError("This method must be implemented in a derived class"); return kFALSE;};
virtual void SetCreateHistos(Bool_t)
{AliError("This method must be implemented in a derived class"); return; }
virtual Bool_t GetCreateHistos() const {return fHis;};
virtual Bool_t FillHistos(UInt_t, Bool_t, Float_t*, Float_t*, Int_t*, Float_t*)
{AliError("This method must be implemented in a derived class"); return kFALSE; }
virtual Bool_t WriteHistosToFile(TString ,Option_t*)
{AliError("This method must be implemented in a derived class"); return kFALSE; }
virtual Bool_t ReadHistosFromFile(TString )
{AliError("This method must be implemented in a derived class"); return kFALSE; }
void InitCDB();
protected:
virtual void Copy(TObject &obj) const;
void NotImplemented(const char *method) const {if(gDebug>0)
Warning(method,"This method is not implemented for this sub-class");}
Int_t fRunNumber;
TString fCDBUri;
Bool_t fInitCDBCalled;
Bool_t fHis;
private:
ClassDef(AliITSPlaneEff,2)
};
#endif