#ifndef ALIPERFORMANCEDEdx_H
#define ALIPERFORMANCEDEdx_H
class TCanvas;
class TH1F;
class TH2F;
class TNamed;
class TString;
class AliESDEvent;
class AliESDfriend;
class AliMCEvent;
class AliESDtrack;
class AliStack;
class AliRecInfoCuts;
class AliMCInfoCuts;
#include "THnSparse.h"
#include "AliPerformanceObject.h"
class AliPerformanceDEdx : public AliPerformanceObject {
public :
AliPerformanceDEdx(const Char_t* name="AliPerformanceDEdx", const Char_t* title="AliPerformanceDEdx",Int_t analysisMode=0, Bool_t hptGenerator=kFALSE);
virtual ~AliPerformanceDEdx();
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;}
static Bool_t GetMergeTHnSparse() { return fgMergeTHnSparse; }
static void SetMergeTHnSparse(Bool_t mergeTHnSparse) {fgUseMergeTHnSparse = kTRUE; fgMergeTHnSparse = mergeTHnSparse; }
TFolder *CreateFolder(TString folder = "folderDEdx",TString title = "Analysed DEdx histograms");
TFolder *ExportToFolder(TObjArray * array=0);
void ProcessTPC(AliStack* const stack, AliESDtrack *const esdTrack);
void ProcessInnerTPC(AliStack* const stack, AliESDtrack *const esdTrack, AliESDEvent *const esdEvent);
void ProcessTPCITS(AliStack* const stack, AliESDtrack *const esdTrack);
void ProcessConstrained(AliStack* const stack, AliESDtrack *const esdTrack);
virtual TTree* CreateSummary();
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* GetDeDxHisto() const {return fDeDxHisto;}
TObjArray* GetHistos() const { return fFolderObj; }
private:
static Bool_t fgMergeTHnSparse;
static Bool_t fgUseMergeTHnSparse;
THnSparseF *fDeDxHisto;
TObjArray* fFolderObj;
AliRecInfoCuts* fCutsRC;
AliMCInfoCuts* fCutsMC;
TFolder *fAnalysisFolder;
AliPerformanceDEdx(const AliPerformanceDEdx&);
AliPerformanceDEdx& operator=(const AliPerformanceDEdx&);
ClassDef(AliPerformanceDEdx,4);
};
#endif