new functionality and data memebers added
[u/mrichter/AliRoot.git] / PWG0 / 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 //------------------------------------------------------------------------------
9
10 class AliESDEvent; 
11 class AliMCEvent; 
12 class AliESDtrackCuts; 
13 class AlidNdPtEventCuts;
14 class AlidNdPtAcceptanceCuts;
15 class AliPhysicsSelection;
16
17 #include "TNamed.h"
18 #include "TFolder.h"
19 #include "AliTriggerAnalysis.h"
20 #include "AlidNdPtHelper.h"
21
22 class AlidNdPt : public TNamed {
23 public:
24   AlidNdPt(); 
25   AlidNdPt(Char_t* name, Char_t* title);
26   ~AlidNdPt();
27
28   // Init data members
29   virtual void Init() = 0;
30
31   // Process events
32   virtual void Process(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0) = 0;
33
34   // Merge output objects (needed by PROOF) 
35   virtual Long64_t Merge(TCollection* const list=0) = 0;
36
37   // Analyse output histograms 
38   virtual void Analyse() = 0;
39
40   // Export analysed output objects to folder
41   virtual TFolder *ExportToFolder(TObjArray * const array=0) = 0;
42
43   //
44   AlidNdPt(const AlidNdPt&); // not implemented
45   AlidNdPt& operator=(const AlidNdPt&); // not implemented
46
47   //
48   void SetEventCuts(AlidNdPtEventCuts* const cuts)              { fdNdPtEventCuts = cuts; }
49   void SetAcceptanceCuts(AlidNdPtAcceptanceCuts* const cuts)    { fdNdPtAcceptanceCuts = cuts; }
50   void SetTrackCuts(AliESDtrackCuts* const cuts)                { fEsdTrackCuts = cuts; }
51   void SetUseMCInfo(const Bool_t info)                          { fUseMCInfo = info; }
52   void SetAnalysisMode(const AlidNdPtHelper::AnalysisMode mode) { fAnalysisMode = mode; }
53   void SetTrigger(const AliTriggerAnalysis::Trigger trigger)    { fTrigger = trigger; }
54   void SetTriggerClass(const Char_t *triggerClass)              { fTriggerClass = triggerClass; }
55   void SetParticleMode(const AlidNdPtHelper::ParticleMode mode) { fParticleMode = mode; }
56   void SetPhysicsTriggerSelection(AliPhysicsSelection* const selection)  { fPhysicsSelection = selection; }
57
58   AlidNdPtEventCuts* GetEventCuts() const                       { return fdNdPtEventCuts; }
59   AlidNdPtAcceptanceCuts* GetAcceptanceCuts() const             { return fdNdPtAcceptanceCuts; }
60   AliESDtrackCuts* GetTrackCuts() const                         { return fEsdTrackCuts; }
61   Bool_t IsUseMCInfo() const                                    { return fUseMCInfo; }
62   AlidNdPtHelper::AnalysisMode GetAnalysisMode() const          { return fAnalysisMode; }
63   AliTriggerAnalysis::Trigger GetTrigger() const                { return fTrigger; }
64   const Char_t* GetTriggerClass() const                         { return fTriggerClass; }
65   AlidNdPtHelper::ParticleMode GetParticleMode() const          { return fParticleMode; }
66   AliPhysicsSelection* GetPhysicsTriggerSelection() const       { return fPhysicsSelection; }
67
68 private:
69
70   AlidNdPtEventCuts      *fdNdPtEventCuts;      // event cuts
71   AlidNdPtAcceptanceCuts *fdNdPtAcceptanceCuts; // acceptance cuts
72   AliESDtrackCuts *fEsdTrackCuts;               // esd track cuts
73
74   Bool_t fUseMCInfo;                            // use MC information
75   AlidNdPtHelper::AnalysisMode fAnalysisMode;   // analysis mode TPC only, TPC + ITS
76   AliTriggerAnalysis::Trigger fTrigger;         // trigger definition MB1, MB2 ...
77   const Char_t * fTriggerClass;                 // trigger class
78   AlidNdPtHelper::ParticleMode fParticleMode;   // selected particle (pion, kaon, ...)
79
80   AliPhysicsSelection* fPhysicsSelection; // physics trigger selection class
81
82   ClassDef(AlidNdPt,1);
83 };
84
85 #endif