// Author: J.Otwinowski 04/02/2008
//------------------------------------------------------------------------------
-class TFile;
+class TString;
+class TNamed;
+class TCanvas;
+class TH1F;
+class TH2F;
+
+class AliESDVertex;
+class AliESDtrack;
class AliMCInfo;
class AliESDRecInfo;
class AliESDEvent;
-class AliESD;
-class AliESDfriend;
class AliMCInfoCuts;
class AliRecInfoCuts;
-class TH1I;
-class TH3F;
-class TH3;
-class TProfile;
-class TProfile2D;
-#include "TNamed.h"
+#include "THnSparse.h"
+#include "AliComparisonObject.h"
-class AliComparisonRes : public TNamed {
+class AliComparisonRes : public AliComparisonObject {
public :
AliComparisonRes();
+ AliComparisonRes(Char_t* name, Char_t* title, Int_t analysisMode, Bool_t hptGenerator);
virtual ~AliComparisonRes();
- void InitHisto();
- void InitCuts();
- void Exec(AliMCInfo* infoMC, AliESDRecInfo *infoRC);
- void ProcessConstrained(AliMCInfo* infoMC, AliESDRecInfo *infoRC);
- void Process(AliMCInfo* infoMC, AliESDRecInfo *infoRC);
+
+ // Init data members
+ virtual void Init();
+
+ // Execute analysis
+ virtual void Exec(AliMCInfo* const infoMC, AliESDRecInfo *const infoRC);
+
+ // Merge output objects (needed by PROOF)
+ virtual Long64_t Merge(TCollection* const list);
+
+ // Analyse output histograms
+ virtual void Analyse();
+
+ // Get analysis folder
+ virtual TFolder* GetAnalysisFolder() const {return fAnalysisFolder;}
+
+ // Process events
+ void ProcessConstrained(AliMCInfo* const infoMC, AliESDRecInfo* const infoRC);
+ void ProcessTPC(AliMCInfo* const infoMC, AliESDRecInfo* const infoRC);
+ void ProcessTPCITS(AliMCInfo* const infoMC, AliESDRecInfo* const infoRC);
+
+ // Create folder for analysed histograms
+ TFolder *CreateFolder(TString folder = "folderRes",TString title = "Analysed Resolution histograms");
+
+ // Export objects to folder
+ TFolder *ExportToFolder(TObjArray * array=0);
// Selection cuts
- void SetAliRecInfoCuts(AliRecInfoCuts* cuts=0) {fCutsRC = cuts;}
- void SetAliMCInfoCuts(AliMCInfoCuts* cuts=0) {fCutsMC = cuts;}
+ 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;}
- // Merge output objects (needed by PROOF)
- virtual Long64_t Merge(TCollection* list);
-
- // Analyse output histograms
- void Analyse();
- static TH1F* MakeResol(TH2F * his, Int_t integ, Bool_t type);
+ static TH1F* MakeResol(TH2F * his, Int_t integ, Bool_t type);
+ // getters
+ //
+ THnSparse *GetResolHisto() const { return fResolHisto; }
+ THnSparse *GetPullHisto() const { return fPullHisto; }
private:
//
// Control histograms
+ // 5 track parameters (details in STEER/AliExternalTrackParam.h)
//
- TH2F* fPtResolLPT; //-> pt resolution - low pt
- TH2F* fPtResolHPT; //-> pt resolution - high pt
- TH2F* fPtPullLPT; //-> pt resolution - low pt
- TH2F* fPtPullHPT; //-> pt resolution - high pt
- //
- // Resolution constrained param
- //
- TH2F *fCPhiResolTan; //-> angular resolution - constrained
- TH2F *fCTanResolTan; //-> angular resolution - constrained
- TH2F *fCPtResolTan; //-> pt resolution - constrained
- TH2F *fCPhiPullTan; //-> angular resolution - constrained
- TH2F *fCTanPullTan; //-> angular resolution - constrained
- TH2F *fCPtPullTan; //-> pt resolution - constrained
+
+ // resolution histogram
+ THnSparseF *fResolHisto; //-> res_y:res_z:res_phi:res_lambda:res_1pt:y:z:eta:phi:pt
+
+ // pull histogram
+ THnSparseF *fPullHisto; //-> pull_y:pull_z:pull_phi:pull_lambda:pull_1pt:y:z:eta:phi:pt
// Global cuts objects
AliRecInfoCuts* fCutsRC; // selection cuts for reconstructed tracks
AliMCInfoCuts* fCutsMC; // selection cuts for MC tracks
+ // analysis folder
+ TFolder *fAnalysisFolder; // folder for analysed histograms
+
AliComparisonRes(const AliComparisonRes&); // not implemented
AliComparisonRes& operator=(const AliComparisonRes&); // not implemented