]> 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 df1e3fcb96edd571a7c38003e0118d20af0b3a0f..78ece0e183f47d1060d370c3d497c3ebac44fa84 100644 (file)
@@ -8,69 +8,88 @@
 // 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