]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGDQ/dielectron/AliAnalysisTaskMultiDielectron.h
o update dielectron package
[u/mrichter/AliRoot.git] / PWGDQ / 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   enum ETriggerLogig {kAny, kExact};
37
38   virtual void UserExec(Option_t *option);
39   virtual void UserCreateOutputObjects();
40   virtual void FinishTaskOutput();
41   //temporary
42 //   virtual void NotifyRun(){AliDielectronPID::SetCorrVal((Double_t)fCurrentRunNumber);}
43   
44   void UsePhysicsSelection(Bool_t phy=kTRUE) {fSelectPhysics=phy;}
45   void SetTriggerMask(ULong64_t mask) {fTriggerMask=mask;}
46   UInt_t GetTriggerMask() const { return fTriggerMask; }
47   void SetExcludeTriggerMask(ULong64_t mask) {fExcludeTriggerMask=mask;}
48   UInt_t GetExcludeTriggerMask() const { return fExcludeTriggerMask; }
49   void SetTriggerLogic(ETriggerLogig log) {fTriggerLogic=log;}
50   ETriggerLogig GetTriggerLogic() const {return fTriggerLogic;}
51
52   void SetEventFilter(AliAnalysisCuts * const filter) {fEventFilter=filter;}
53   void SetTriggerOnV0AND(Bool_t v0and=kTRUE)    { fTriggerOnV0AND=v0and;    }
54   void SetRejectPileup(Bool_t pileup=kTRUE)     { fRejectPileup=pileup;     }
55   void AddDielectron(AliDielectron * const die) { fListDielectron.Add(die); }
56   
57 protected:
58   enum {kAllEvents=0, kSelectedEvents, kV0andEvents, kFilteredEvents, kPileupEvents, kNbinsEvent};
59   TList fListDielectron;             // List of dielectron framework instances
60   TList fListHistos;                 //! List of histogram manager lists in the framework classes
61   TList fListCF;                     //! List with CF Managers
62
63   Bool_t fSelectPhysics;             // Whether to use physics selection
64   UInt_t fTriggerMask;               // Event trigger mask
65   UInt_t fExcludeTriggerMask;        // Triggers to exclude from the analysis
66   Bool_t fTriggerOnV0AND;            // if to trigger on V0and
67   Bool_t fRejectPileup;              // pileup rejection wanted
68
69   ETriggerLogig fTriggerLogic;       // trigger logic: any or all bits need to be matching
70   
71   AliTriggerAnalysis *fTriggerAnalysis; //! trigger analysis class
72
73   AliAnalysisCuts *fEventFilter;     // event filter
74   
75   TH1D *fEventStat;                  //! Histogram with event statistics
76   
77   AliAnalysisTaskMultiDielectron(const AliAnalysisTaskMultiDielectron &c);
78   AliAnalysisTaskMultiDielectron& operator= (const AliAnalysisTaskMultiDielectron &c);
79   
80   ClassDef(AliAnalysisTaskMultiDielectron, 2); //Analysis Task handling multiple instances of AliDielectron
81 };
82 #endif