major dielectron update (included also the data and plotting macros for paper)
[u/mrichter/AliRoot.git] / PWG3 / dielectron / AliAnalysisTaskMultiDielectron.h
1 #ifndef ALIANALYSISTASKMULTIDIELECTRON_H
2 #define ALIANALYSISTASKMULTIDIELECTRON_H
3 /* Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 //#####################################################
7 //#                                                   # 
8 //#        Basic Analysis task for Dielectron         #
9 //#          single event analysis                    #
10 //#                                                   #
11 //#  by WooJin J. Park, GSI / W.J.Park@gsi.de         #
12 //#     Ionut C. Arsene, GSI / I.C.Arsene@gsi.de      #
13 //#     Magnus Mager, CERN / Magnus.Mager@cern.ch     #
14 //#     Jens Wiechula, Uni HD / Jens.Wiechula@cern.ch #
15 //#                                                   #
16 //#####################################################
17
18 #include "TList.h"
19
20 #include "AliAnalysisTaskSE.h"
21
22 // #include "AliDielectronPID.h"
23
24 class AliDielectron;
25 class TH1D;
26 class AliAnalysisCuts;
27 class AliTriggerAnalysis;
28
29 class AliAnalysisTaskMultiDielectron : public AliAnalysisTaskSE {
30   
31 public:
32   AliAnalysisTaskMultiDielectron();
33   AliAnalysisTaskMultiDielectron(const char *name);
34   virtual ~AliAnalysisTaskMultiDielectron(){  }
35
36   virtual void UserExec(Option_t *option);
37   virtual void UserCreateOutputObjects();
38   virtual void FinishTaskOutput();
39   //temporary
40 //   virtual void NotifyRun(){AliDielectronPID::SetCorrVal((Double_t)fCurrentRunNumber);}
41   
42   void UsePhysicsSelection(Bool_t phy=kTRUE) {fSelectPhysics=phy;}
43   void SetTriggerMask(UInt_t mask) {fTriggerMask=mask;}
44   UInt_t GetTriggerMask() const { return fTriggerMask; }
45
46   void SetEventFilter(AliAnalysisCuts * const filter) {fEventFilter=filter;}
47   void SetTriggerOnV0AND(Bool_t v0and=kTRUE)    { fTriggerOnV0AND=v0and;    }
48   void SetRejectPileup(Bool_t pileup=kTRUE)     { fRejectPileup=pileup;     }
49   void AddDielectron(AliDielectron * const die) { fListDielectron.Add(die); }
50   
51 private:
52   enum {kAllEvents=0, kSelectedEvents, kV0andEvents, kFilteredEvents, kPileupEvents, kNbinsEvent};
53   TList fListDielectron;             // List of dielectron framework instances
54   TList fListHistos;                 //! List of histogram manager lists in the framework classes
55   TList fListCF;                     //! List with CF Managers
56
57   Bool_t fSelectPhysics;             // Whether to use physics selection
58   UInt_t fTriggerMask;               // Event trigger mask
59   Bool_t fTriggerOnV0AND;            // if to trigger on V0and
60   Bool_t fRejectPileup;              // pileup rejection wanted
61   
62   AliTriggerAnalysis *fTriggerAnalysis; //! trigger analysis class
63
64   AliAnalysisCuts *fEventFilter;     // event filter
65   
66   TH1D *fEventStat;                  //! Histogram with event statistics
67   
68   AliAnalysisTaskMultiDielectron(const AliAnalysisTaskMultiDielectron &c);
69   AliAnalysisTaskMultiDielectron& operator= (const AliAnalysisTaskMultiDielectron &c);
70   
71   ClassDef(AliAnalysisTaskMultiDielectron, 1); //Analysis Task handling multiple instances of AliDielectron
72 };
73 #endif