#ifndef ALIPERFORMANCEEFF_H
#define ALIPERFORMANCEEFF_H
class TFile;
class TParticle;
class TString;
class TNamed;
class THnSparse;
class AliMCInfo;
class AliESDRecInfo;
class AliESDEvent;
class AliESDfriend;
class AliMCEvent;
class AliESDEvent;
class AliMCParticle;
class AliESDtrack;
class AliESD;
class AliRecInfoCuts;
class AliMCInfoCuts;
class AliESDVertex;
#include "AliPerformanceObject.h"
class AliPerformanceEff : public AliPerformanceObject {
public :
AliPerformanceEff(const Char_t* name="AliPerformanceEff",const Char_t*title="AliPerformanceEff",Int_t analysisMode=0, Bool_t hptGenerator=kFALSE);
virtual ~AliPerformanceEff();
virtual void Init();
virtual void Exec(AliMCEvent* const mcEvent, AliESDEvent *const esdEvent, AliESDfriend *const esdFriend, const Bool_t bUseMC, const Bool_t bUseESDfriend);
virtual Long64_t Merge(TCollection* const list);
virtual void Analyse();
virtual TFolder* GetAnalysisFolder() const {return fAnalysisFolder;}
TFolder *CreateFolder(TString folder = "folderEff",TString title = "Analysed Efficiency histograms");
TFolder *ExportToFolder(TObjArray *array=0);
void ProcessTPC(AliMCEvent* const mcEvent, AliESDEvent *const esdEvent);
void ProcessTPCITS(AliMCEvent* const mcEvent, AliESDEvent *const esdEvent);
void ProcessConstrained(AliMCEvent* const mcEvent, AliESDEvent *const esdEvent);
void ProcessTPCSec(AliMCEvent* const mcEvent, AliESDEvent *const esdEvent);
Bool_t IsRecTPC(AliESDtrack *track);
Bool_t IsRecTPCITS(AliESDtrack *track);
Bool_t IsRecConstrained(AliESDtrack *track);
Bool_t IsFindable(const AliMCEvent *mcEvent, Int_t label);
Int_t TransformToPID(TParticle *particle);
void SetAliRecInfoCuts(AliRecInfoCuts* const cuts=0) {fCutsRC = cuts;}
void SetAliMCInfoCuts(AliMCInfoCuts* const cuts=0) {fCutsMC = cuts;}
AliRecInfoCuts* GetAliRecInfoCuts() const {return fCutsRC;}
AliMCInfoCuts* GetAliMCInfoCuts() const {return fCutsMC;}
THnSparseF* GetEffHisto() const {return fEffHisto;}
THnSparseF* GetEffSecHisto() const {return fEffSecHisto;}
private:
static const Int_t fgkMaxClones = 3, fgkMaxFakes = 3;
TH1D* AddHistoEff(Int_t axis, const Char_t *name, const Char_t* vsTitle, const Int_t type, const Int_t secondary = 0);
THnSparseF *fEffHisto;
THnSparseF *fEffSecHisto;
AliRecInfoCuts* fCutsRC;
AliMCInfoCuts* fCutsMC;
TFolder *fAnalysisFolder;
AliPerformanceEff(const AliPerformanceEff&);
AliPerformanceEff& operator=(const AliPerformanceEff&);
ClassDef(AliPerformanceEff,2);
};
#endif