Separate libraries for MUONdep and MUONlite
[u/mrichter/AliRoot.git] / PWGUD / dNdPt / AlidNdPt.h
1 #ifndef ALIDNDPT_H
2 #define ALIDNDPT_H
3
4 //------------------------------------------------------------------------------
5 // Abstract class for dNdPt analysis. All dNdPt components should derive from it.   
6 // 
7 // Author: J.Otwinowski 03/11/2008 
8 // last change: 2011-04-04 by M.Knichel
9 //------------------------------------------------------------------------------
10
11 class AliESDEvent; 
12 class AliMCEvent; 
13 class AliESDtrackCuts; 
14 class AlidNdPtEventCuts;
15 class AlidNdPtAcceptanceCuts;
16 class AliPhysicsSelection;
17 class AlidNdPtBackgroundCuts;
18
19 #include "TNamed.h"
20 #include "TFolder.h"
21 #include "AliTriggerAnalysis.h"
22 #include "AlidNdPtHelper.h"
23
24 class AlidNdPt : public TNamed {
25 public:
26   AlidNdPt(); 
27   AlidNdPt(Char_t* name, Char_t* title);
28   ~AlidNdPt();
29
30   // Init data members
31   virtual void Init() = 0;
32
33   // Process events
34   virtual void Process(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0) = 0;
35
36   // Merge output objects (needed by PROOF) 
37   virtual Long64_t Merge(TCollection* const list=0) = 0;
38
39   // Analyse output histograms 
40   virtual void Analyse() = 0;
41
42   // Export analysed output objects to folder
43   virtual TFolder *ExportToFolder(TObjArray * const array=0) = 0;
44
45   //
46
47   //
48   void SetEventCuts(AlidNdPtEventCuts* const cuts)              { fdNdPtEventCuts = cuts; }
49   void SetAcceptanceCuts(AlidNdPtAcceptanceCuts* const cuts)    { fdNdPtAcceptanceCuts = cuts; }
50   void SetRecAcceptanceCuts(AlidNdPtAcceptanceCuts* const cuts) { fdNdPtRecAcceptanceCuts = cuts; }
51   void SetTrackCuts(AliESDtrackCuts* const cuts)                { fEsdTrackCuts = cuts; }
52   void SetUseMCInfo(const Bool_t info)                          { fUseMCInfo = info; }
53   void SetAnalysisMode(const AlidNdPtHelper::AnalysisMode mode) { fAnalysisMode = mode; }
54   void SetTrigger(const AliTriggerAnalysis::Trigger trigger)    { fTrigger = trigger; }
55   void SetTriggerClass(const Char_t *triggerClass)              { fTriggerClass = triggerClass; }
56   void SetParticleMode(const AlidNdPtHelper::ParticleMode mode) { fParticleMode = mode; }
57   void SetPhysicsTriggerSelection(AliPhysicsSelection* const selection)  { fPhysicsSelection = selection; }
58   void SetBackgroundCuts(AlidNdPtBackgroundCuts* const cuts)    { fdNdPtBackgroundCuts = cuts; }
59
60   AlidNdPtEventCuts* GetEventCuts() const                       { return fdNdPtEventCuts; }
61   AlidNdPtAcceptanceCuts* GetAcceptanceCuts() const             { return fdNdPtAcceptanceCuts; }
62   AlidNdPtAcceptanceCuts* GetRecAcceptanceCuts() const          { return fdNdPtRecAcceptanceCuts; }  
63   AliESDtrackCuts* GetTrackCuts() const                         { return fEsdTrackCuts; }
64   Bool_t IsUseMCInfo() const                                    { return fUseMCInfo; }
65   AlidNdPtHelper::AnalysisMode GetAnalysisMode() const          { return fAnalysisMode; }
66   AliTriggerAnalysis::Trigger GetTrigger() const                { return fTrigger; }
67   const Char_t* GetTriggerClass() const                         { return fTriggerClass; }
68   AlidNdPtHelper::ParticleMode GetParticleMode() const          { return fParticleMode; }
69   AliPhysicsSelection* GetPhysicsTriggerSelection() const       { return fPhysicsSelection; }
70   AlidNdPtBackgroundCuts* GetBackgroundCuts() const             { return fdNdPtBackgroundCuts; }
71   Double_t* CreateLogAxis(Int_t nbins, Double_t xmin, Double_t xmax);
72
73   void SetAnalyseOutput(Bool_t analyseoutput)  { fAnalyseOutput = analyseoutput; }
74   Bool_t GetAnalyseOutput() const { return fAnalyseOutput; }
75
76   void SetMergeTHnSparse(Bool_t mergethnsparse)  { fMergeTHnSparse = mergethnsparse; }
77   Bool_t GetMergeTHnSparse() const { return fMergeTHnSparse; }
78
79   void SetTriggerMask(UInt_t triggermask)  { fTriggerMask = triggermask; }
80   UInt_t GetTriggerMask()  { return fTriggerMask; }
81
82
83 protected:
84    static Double_t* CloneArray(Int_t n, Double_t* source);
85
86 private:
87
88   AlidNdPt(const AlidNdPt&); // not implemented
89   AlidNdPt& operator=(const AlidNdPt&); // not implemented
90
91   AlidNdPtEventCuts      *fdNdPtEventCuts;      // event cuts
92   AlidNdPtAcceptanceCuts *fdNdPtAcceptanceCuts; // acceptance cuts  
93   AlidNdPtAcceptanceCuts *fdNdPtRecAcceptanceCuts; // additional recontruction acceptance cuts (not used for MC truth)
94   AliESDtrackCuts *fEsdTrackCuts;               // esd track cuts
95
96   Bool_t fUseMCInfo;                            // use MC information
97   AlidNdPtHelper::AnalysisMode fAnalysisMode;   // analysis mode TPC only, TPC + ITS
98   AliTriggerAnalysis::Trigger fTrigger;         // trigger definition MB1, MB2 ...
99   const Char_t * fTriggerClass;                 // trigger class
100   AlidNdPtHelper::ParticleMode fParticleMode;   // selected particle (pion, kaon, ...)
101
102   AliPhysicsSelection* fPhysicsSelection; // physics trigger selection class
103   AlidNdPtBackgroundCuts *fdNdPtBackgroundCuts; // background cuts (cosmics and splitted tracks)
104   
105   Bool_t fAnalyseOutput;  // call Analyse() function in the FinishTaskOutput
106   Bool_t fMergeTHnSparse; // merge THnSparse histograms in Merge() function
107
108   UInt_t fTriggerMask;    // trigger mask
109
110   ClassDef(AlidNdPt,5);
111 };
112
113 #endif