]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG1/AliComparisonRes.h
macro to run AliPerformanceMC (Jacek)
[u/mrichter/AliRoot.git] / PWG1 / AliComparisonRes.h
index 64f2f8fcc71cf2718aade29f73e4f6be5891667d..78ece0e183f47d1060d370c3d497c3ebac44fa84 100644 (file)
@@ -8,48 +8,48 @@
 // 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;
-class TString;
-class AliESDVertex;
 
-#include "TNamed.h"
+#include "THnSparse.h"
 #include "AliComparisonObject.h"
 
 class AliComparisonRes : public AliComparisonObject {
 public :
   AliComparisonRes(); 
+  AliComparisonRes(Char_t* name, Char_t* title, Int_t analysisMode, Bool_t hptGenerator);
   virtual ~AliComparisonRes();
 
   // Init data members
-  virtual void     Init();
+  virtual void  Init();
 
   // Execute analysis
-  virtual void      Exec(AliMCInfo* infoMC, AliESDRecInfo *infoRC);
+  virtual void  Exec(AliMCInfo* const infoMC, AliESDRecInfo *const infoRC);
 
   // Merge output objects (needed by PROOF) 
-  virtual Long64_t Merge(TCollection* list);
+  virtual Long64_t Merge(TCollection* const list);
 
   // Analyse output histograms
   virtual void Analyse();
 
   // Get analysis folder
-  virtual TFolder* GetAnalysisFolder() {return fAnalysisFolder;}
+  virtual TFolder* GetAnalysisFolder() const {return fAnalysisFolder;}
 
   // Process events
-  void      ProcessConstrained(AliMCInfo* infoMC, AliESDRecInfo *infoRC);
-  void      Process(AliMCInfo* infoMC, AliESDRecInfo *infoRC);
+  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");
@@ -58,135 +58,30 @@ public :
   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;}  
 
-  static TH1F*       MakeResol(TH2F * his, Int_t integ, Bool_t type); 
+  static TH1F*     MakeResol(TH2F * his, Int_t integ, Bool_t type); 
 
   // getters
-  TH3F *GetMCVertex()  { return fMCVertex; }
-  TH3F *GetRecVertex() { return fRecVertex; } 
-
-  TH3F *GetPhiTanPtTPC() { return fPhiTanPtTPC; } 
-  TH3F *GetPhiTanPtTPCITS() { return fPhiTanPtTPCITS; } 
-
-  TH2F *GetPtResolTPC()     { return fPtResolTPC; } 
-  TH2F *GetPtPullTPC()      { return fPtPullTPC; } 
-  TH2F *GetPhiResolTanTPC() { return fPhiResolTanTPC; } 
-  TH2F *GetTanResolTanTPC() { return fTanResolTanTPC; } 
-  TH2F *GetPhiPullTanTPC()  { return fPhiPullTanTPC; } 
-  TH2F *GetTanPullTanTPC()  { return fTanPullTanTPC; } 
-
-  TH2F *GetPtResolTPCITS()     { return fPtResolTPCITS; } 
-  TH2F *GetPtPullTPCITS()      { return fPtPullTPCITS; } 
-  TH2F *GetPhiResolTanTPCITS() { return fPhiResolTanTPCITS; } 
-  TH2F *GetTanResolTanTPCITS() { return fTanResolTanTPCITS; } 
-  TH2F *GetPhiPullTanTPCITS()  { return fPhiPullTanTPCITS; } 
-  TH2F *GetTanPullTanTPCITS()  { return fTanPullTanTPCITS; } 
-
-  //
-  // Resolution constrained param
-  //
-  TH2F *GetCPhiResolTan() { return fCPhiResolTan; } 
-  TH2F *GetCTanResolTan() { return fCTanResolTan; } 
-  TH2F *GetCPtResolTan()  { return fCPtResolTan; } 
-  TH2F *GetCPhiPullTan()  { return fCPhiPullTan; } 
-  TH2F *GetCTanPullTan()  { return fCTanPullTan; } 
-  TH2F *GetCPtPullTan()   { return fCPtPullTan; } 
-
-  //
-  // Histograms for track resolution parameterisation
   //
-  TH2F *Get1Pt2ResolS1PtTPC()    { return f1Pt2ResolS1PtTPC; } 
-  TH2F *Get1Pt2ResolS1PtTPCITS() { return f1Pt2ResolS1PtTPCITS; } 
-  TH2F *GetYResolS1PtTPC()       { return fYResolS1PtTPC; } 
-  TH2F *GetYResolS1PtTPCITS()    { return fYResolS1PtTPCITS; } 
-  TH2F *GetZResolS1PtTPC()       { return fZResolS1PtTPC; } 
-  TH2F *GetZResolS1PtTPCITS()    { return fZResolS1PtTPCITS; } 
-  TH2F *GetPhiResolS1PtTPC()     { return fPhiResolS1PtTPC; } 
-  TH2F *GetPhiResolS1PtTPCITS()  { return fPhiResolS1PtTPCITS; } 
-  TH2F *GetThetaResolS1PtTPC()   { return fThetaResolS1PtTPC; } 
-  TH2F *GetThetaResolS1PtTPCITS(){ return fThetaResolS1PtTPCITS; } 
-
-  // constrained
-  //
-  TH2F *GetC1Pt2ResolS1PtTPC()    { return fC1Pt2ResolS1PtTPC; } 
-  TH2F *GetC1Pt2ResolS1PtTPCITS() { return fC1Pt2ResolS1PtTPCITS; } 
-  TH2F *GetCYResolS1PtTPC()       { return fCYResolS1PtTPC; } 
-  TH2F *GetCYResolS1PtTPCITS()    { return fCYResolS1PtTPCITS; } 
-  TH2F *GetCZResolS1PtTPC()       { return fCZResolS1PtTPC; } 
-  TH2F *GetCZResolS1PtTPCITS()    { return fCZResolS1PtTPCITS; } 
-  TH2F *GetCPhiResolS1PtTPC()     { return fCPhiResolS1PtTPC; } 
-  TH2F *GetCPhiResolS1PtTPCITS()  { return fCPhiResolS1PtTPCITS; } 
-  TH2F *GetCThetaResolS1PtTPC()   { return fCThetaResolS1PtTPC; } 
-  TH2F *GetCThetaResolS1PtTPCITS(){ return fCThetaResolS1PtTPCITS; } 
+  THnSparse *GetResolHisto() const  { return fResolHisto; }
+  THnSparse *GetPullHisto()  const  { return fPullHisto; }
 
 private:
   //
   // Control histograms
+  // 5 track parameters (details in STEER/AliExternalTrackParam.h)
   //
 
-  TH3F *fMCVertex;  //-> MC primary vertex 
-  TH3F *fRecVertex; //-> Reconstructed primary vertex
-
-  TH3F *fPhiTanPtTPC; //-> phi vs tantheta vs pt
-  TH3F *fPhiTanPtTPCITS; //-> phi vs tantheta vs pt
-
-  // TPC only
-  TH2F *fPtResolTPC;        //-> pt resolution
-  TH2F *fPtPullTPC;         //-> pt pull
-  TH2F *fPhiResolTanTPC;       //-> angular resolution 
-  TH2F *fTanResolTanTPC;       //-> angular resolution
-  TH2F *fPhiPullTanTPC;        //-> angular resolution
-  TH2F *fTanPullTanTPC;        //-> angular resolution
-
-  // TPC+ITS
-  TH2F *fPtResolTPCITS;        //-> pt resolution
-  TH2F *fPtPullTPCITS;         //-> pt pull
-  TH2F *fPhiResolTanTPCITS;       //-> angular resolution 
-  TH2F *fTanResolTanTPCITS;       //-> angular resolution
-  TH2F *fPhiPullTanTPCITS;        //-> angular resolution
-  TH2F *fTanPullTanTPCITS;        //-> angular resolution
-
-  //
-  // 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
-
-  //
-  // Histograms for track resolution parameterisation
-  //
+  // resolution histogram
+  THnSparseF *fResolHisto; //-> res_y:res_z:res_phi:res_lambda:res_1pt:y:z:eta:phi:pt
 
-  TH2F* f1Pt2ResolS1PtTPC;      //-> (1/mcpt-1/pt)/(1+1/pt)^2 vs sqrt(1/pt) (TPC)
-  TH2F* f1Pt2ResolS1PtTPCITS;   //-> (1/mcpt-1/pt)/(1+1/pt)^2 vs sqrt(1/pt) (TPC+ITS)
-  TH2F* fYResolS1PtTPC;         //-> (mcy-y)/(0.2+1/pt) vs sqrt(1/pt) (TPC) 
-  TH2F* fYResolS1PtTPCITS;      //-> (mcy-y)/(0.2+1/pt) vs sqrt(1/pt) (TPC + ITS) 
-  TH2F* fZResolS1PtTPC;         //-> (mcz-z)/(0.2+1/pt) vs sqrt(1/pt) (TPC)
-  TH2F* fZResolS1PtTPCITS;      //-> (mcz-z)/(0.2+1/pt) vs sqrt(1/pt) (TPC+ITS)
-  TH2F* fPhiResolS1PtTPC;       //-> (mcphi-phi)/(0.1+1/pt) vs sqrt(1/pt) (TPC)
-  TH2F* fPhiResolS1PtTPCITS;    //-> (mcphi-phi)/(0.1+1/pt) vs sqrt(1/pt) (TPC+ITS)
-  TH2F* fThetaResolS1PtTPC;     //-> (mctheta-theta)/(0.1+1/pt) vs sqrt(1/pt) (TPC)
-  TH2F* fThetaResolS1PtTPCITS;  //-> (mctheta-theta)/(0.1+1/pt) vs sqrt(1/pt) (TPC+ITS)
-  
-  // constrained
-  TH2F* fC1Pt2ResolS1PtTPC;      //-> (1/mcpt-1/pt)/(1+1/pt)^2 vs sqrt(1/pt) (TPC)
-  TH2F* fC1Pt2ResolS1PtTPCITS;   //-> (1/mcpt-1/pt)/(1+1/pt)^2 vs sqrt(1/pt) (TPC+ITS)
-  TH2F* fCYResolS1PtTPC;         //-> (mcy-y)/(0.2+1/pt) vs sqrt(1/pt) (TPC) 
-  TH2F* fCYResolS1PtTPCITS;      //-> (mcy-y)/(0.2+1/pt) vs sqrt(1/pt) (TPC + ITS) 
-  TH2F* fCZResolS1PtTPC;         //-> (mcz-z)/(0.2+1/pt) vs sqrt(1/pt) (TPC)
-  TH2F* fCZResolS1PtTPCITS;      //-> (mcz-z)/(0.2+1/pt) vs sqrt(1/pt) (TPC+ITS)
-  TH2F* fCPhiResolS1PtTPC;       //-> (mcphi-phi)/(0.1+1/pt) vs sqrt(1/pt) (TPC)
-  TH2F* fCPhiResolS1PtTPCITS;    //-> (mcphi-phi)/(0.1+1/pt) vs sqrt(1/pt) (TPC+ITS)
-  TH2F* fCThetaResolS1PtTPC;     //-> (mctheta-theta)/(0.1+1/pt) vs sqrt(1/pt) (TPC)
-  TH2F* fCThetaResolS1PtTPCITS;  //-> (mctheta-theta)/(0.1+1/pt) vs sqrt(1/pt) (TPC+ITS)
+  // 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