]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG1/TPC/AliPerformanceDCA.h
prtotect against missing QA projections in mass production
[u/mrichter/AliRoot.git] / PWG1 / TPC / AliPerformanceDCA.h
1 #ifndef ALIPERFORMANCEDCA_H
2 #define ALIPERFORMANCEDCA_H
3
4 //------------------------------------------------------------------------------
5 // Class to keep information from comparison of 
6 // reconstructed and MC particle tracks (DCA - Distance of Closest Approach 
7 // to the vertex).   
8 // 
9 // Author: J.Otwinowski 04/02/2008 
10 //------------------------------------------------------------------------------
11
12 class AliESDEvent; 
13 class AliESDfriend; 
14 class AliStack; 
15 class AliRecInfoCuts;
16 class AliMCInfoCuts;
17 class AliESDVertex;
18 class AliESDtrack;
19 class TH3;
20 class TH2;
21 class TH1;
22 class TString;
23 class TNamed;
24
25 #include "THnSparse.h"
26 #include "AliPerformanceObject.h"
27
28 class AliPerformanceDCA : public AliPerformanceObject {
29 public :
30   AliPerformanceDCA(); 
31   AliPerformanceDCA(Char_t* name, Char_t* title, Int_t analysisMode, Bool_t hptGenerator);
32   ~AliPerformanceDCA();
33
34   // Init data members
35   virtual void Init();
36
37   // Execute analysis
38   virtual void  Exec(AliMCEvent* const mcEvent, AliESDEvent *const esdEvent, AliESDfriend *const esdFriend, const Bool_t bUseMC, const Bool_t bUseESDfriend);
39
40   // Merge output objects (needed by PROOF) 
41   virtual Long64_t Merge(TCollection* const list);
42
43   // Analyse output histograms
44   virtual void Analyse();
45
46   // Get analysis folder
47   virtual TFolder* GetAnalysisFolder() const {return fAnalysisFolder;}
48
49   // Create folder for analysed histograms
50   TFolder *CreateFolder(TString folder = "folderDCA",TString title = "Analysed DCA histograms");
51
52   // Export objects to folder
53   TFolder *ExportToFolder(TObjArray * array=0);
54
55   void ProcessConstrained(AliStack* const stack, AliESDtrack *const esdTrack);
56   void ProcessTPC(AliStack* const stack, AliESDtrack *const esdTrack, AliESDEvent* const esdEvent);
57   void ProcessTPCITS(AliStack* const stack, AliESDtrack *const esdTrack, AliESDEvent* const esdEvent);
58
59   // Selection cuts
60   void SetAliRecInfoCuts(AliRecInfoCuts* const cuts=0) {fCutsRC = cuts;}
61   void SetAliMCInfoCuts(AliMCInfoCuts* const cuts=0) {fCutsMC = cuts;}  
62
63   AliRecInfoCuts*  GetAliRecInfoCuts() const {return fCutsRC;}
64   AliMCInfoCuts*   GetAliMCInfoCuts()  const {return fCutsMC;}
65
66   // getters
67   THnSparse* GetDCAHisto() const {return fDCAHisto;}
68
69   // Make stat histograms
70   TH1F* MakeStat1D(TH2 *hist, Int_t delta1, Int_t type);
71   TH2F* MakeStat2D(TH3 *hist, Int_t delta0, Int_t delta1, Int_t type);
72
73 private:
74
75   // DCA histograms
76   THnSparseF *fDCAHisto; //-> dca_r:dca_z:eta:pt:phi 
77  
78   // Global cuts objects
79   AliRecInfoCuts* fCutsRC; // selection cuts for reconstructed tracks
80   AliMCInfoCuts*  fCutsMC;  // selection cuts for MC tracks
81
82   // analysis folder 
83   TFolder *fAnalysisFolder; // folder for analysed histograms
84
85   AliPerformanceDCA(const AliPerformanceDCA&); // not implemented
86   AliPerformanceDCA& operator=(const AliPerformanceDCA&); // not implemented
87
88   ClassDef(AliPerformanceDCA,1);
89 };
90
91 #endif