#ifndef ALIPERFORMANCEMC_H
#define ALIPERFORMANCEMC_H
class TString;
class TNamed;
class TCanvas;
class TH1F;
class TH2F;
class TParticle;
class AliESDVertex;
class AliESDtrack;
class AliMCEvent;
class AliStack;
class AliTrackReference;
class AliESDEvent;
class AliESDfriend;
class AliESDfriendTrack;
class AliMCEvent;
class AliMCParticle;
class AliMCInfoCuts;
class AliRecInfoCuts;
class AliExternalTrackParam;
#include "THnSparse.h"
#include "AliPerformanceObject.h"
class AliPerformanceMC : public AliPerformanceObject {
public :
AliPerformanceMC(const Char_t* name="AliPerformanceMC", const Char_t* title="AliPerformanceMC",Int_t analysisMode=0,Bool_t hptGenerator=kFALSE);
virtual ~AliPerformanceMC();
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;}
void ProcessTPC(AliTrackReference* const refIn, TParticle* const particle);
void ProcessInnerTPC(AliTrackReference* const refIn, AliTrackReference* const refOut, TParticle* const particle);
void ProcessOuterTPCExt(TParticle *const part, TClonesArray * const trefs);
AliExternalTrackParam * MakeTrack(const AliTrackReference* ref, TParticle *const part);
TFolder *CreateFolder(TString folder = "folderMC", TString title = "Analysed MC 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;}
TH1F* MakeResol(TH2F * his, Int_t integ=0, Bool_t type=kFALSE, Int_t cut=0);
THnSparse *GetResolHisto() const { return fResolHisto; }
THnSparse *GetPullHisto() const { return fPullHisto; }
private:
THnSparseF *fResolHisto;
THnSparseF *fPullHisto;
AliRecInfoCuts* fCutsRC;
AliMCInfoCuts* fCutsMC;
TFolder *fAnalysisFolder;
AliPerformanceMC(const AliPerformanceMC&);
AliPerformanceMC& operator=(const AliPerformanceMC&);
ClassDef(AliPerformanceMC,1);
};
#endif