#ifndef ALIPERFORMANCETPC_H
#define ALIPERFORMANCETPC_H
class TString;
class TNamed;
class TCanvas;
class TH1;
class TH2;
class TH3;
class AliESDVertex;
class AliESDtrack;
class AliMCEvent;
class AliStack;
class AliESDEvent;
class AliESDfriend;
class AliMCInfoCuts;
class AliRecInfoCuts;
#include "THnSparse.h"
#include "AliPerformanceObject.h"
class AliPerformanceTPC : public AliPerformanceObject {
public :
AliPerformanceTPC(const Char_t* name="AliPerformanceTPC", const Char_t* title="AliPerformanceTPC",Int_t analysisMode=0,Bool_t hptGenerator=kFALSE, Int_t run=-1, Bool_t highMult = kFALSE);
virtual ~AliPerformanceTPC();
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;}
virtual TTree* CreateSummary();
void ProcessConstrained(AliStack* const stack, AliESDtrack *const esdTrack, AliESDEvent *const esdEvent);
void ProcessTPC(AliStack* const stack, AliESDtrack *const esdTrack, AliESDEvent *const esdEvent, Bool_t vertStatus);
void ProcessTPCITS(AliStack* const stack, AliESDtrack *const esdTrack, AliESDEvent *const esdEvent, Bool_t vertStatus);
TFolder *CreateFolder(TString folder = "folderTPC",TString title = "Analysed TPC performance histograms");
TFolder *ExportToFolder(TObjArray * array=0);
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;}
THnSparse *GetTPCClustHisto() const { return fTPCClustHisto; }
THnSparse *GetTPCEventHisto() const { return fTPCEventHisto; }
THnSparse *GetTPCTrackHisto() const { return fTPCTrackHisto; }
TObjArray* GetHistos() const { return fFolderObj; }
static Bool_t GetMergeTHnSparse() { return fgMergeTHnSparse; }
static void SetMergeTHnSparse(Bool_t mergeTHnSparse) {fgUseMergeTHnSparse = kTRUE; fgMergeTHnSparse = mergeTHnSparse; }
void SetUseHLT(Bool_t useHLT = kTRUE) {fUseHLT = useHLT;}
Bool_t GetUseHLT() { return fUseHLT; }
private:
static Bool_t fgMergeTHnSparse;
static Bool_t fgUseMergeTHnSparse;
THnSparseF *fTPCClustHisto;
THnSparseF *fTPCEventHisto;
THnSparseF *fTPCTrackHisto;
TObjArray* fFolderObj;
AliRecInfoCuts* fCutsRC;
AliMCInfoCuts* fCutsMC;
TFolder *fAnalysisFolder;
Bool_t fUseHLT;
AliPerformanceTPC(const AliPerformanceTPC&);
AliPerformanceTPC& operator=(const AliPerformanceTPC&);
ClassDef(AliPerformanceTPC,11);
};
#endif