Change Mult binning scheme
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / AliAnalysisTaskDielectronFilter.h
1 #ifndef ALIANALYSISTASKDIELECTRONFILTER_H
2 #define ALIANALYSISTASKDIELECTRONFILTER_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 //#        Dielectron even filter task                #
9 //#                                                   #
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 Filter Event based on cuts provided in the AliDielectron class.
19
20 Write an AOD file containing events with Dielectron candidates.
21 Add a sattelite AOD with the array of candidates.
22 */
23
24
25
26 #include "AliAnalysisTaskSE.h"
27
28 #include "AliDielectronPID.h"
29
30 class AliDielectron;
31 class TH1D;
32 class AliTriggerAnalysis;
33 class AliAODCaloCluster;
34
35 class AliAnalysisTaskDielectronFilter : public AliAnalysisTaskSE {
36   
37 public:
38   AliAnalysisTaskDielectronFilter();
39   AliAnalysisTaskDielectronFilter(const char *name);
40   virtual ~AliAnalysisTaskDielectronFilter(){}
41
42   enum ETriggerLogig {kAny, kExact};
43
44   virtual void UserExec(Option_t *option);
45   virtual void Init();
46   virtual void UserCreateOutputObjects();
47   virtual void LocalInit() {Init();}
48   //temporary
49   virtual void NotifyRun(){AliDielectronPID::SetCorrVal((Double_t)fCurrentRunNumber);}
50   
51   void UsePhysicsSelection(Bool_t phy=kTRUE) {fSelectPhysics=phy;}
52   void SetTriggerMask(UInt_t mask) {fTriggerMask=mask;}
53   UInt_t GetTriggerMask() const { return fTriggerMask; }
54   void SetExcludeTriggerMask(ULong64_t mask) {fExcludeTriggerMask=mask;}
55   UInt_t GetExcludeTriggerMask() const { return fExcludeTriggerMask; }
56   void SetTriggerLogic(ETriggerLogig log) {fTriggerLogic=log;}
57   ETriggerLogig GetTriggerLogic() const {return fTriggerLogic;}
58   
59
60   void SetDielectron(AliDielectron * const die) { fDielectron = die; }
61
62   void SetStoreLikeSignCandidates(Bool_t storeLS) { fStoreLikeSign = storeLS; }
63   void SetStoreRotatedPairs(Bool_t storeTR) { fStoreRotatedPairs = storeTR; }
64   void SetStoreEventsWithSingleTracks(Bool_t storeSingleTrk) { fStoreEventsWithSingleTracks = storeSingleTrk; }
65   void SetCreateNanoAODs(Bool_t storeTrackRef) { fCreateNanoAOD = storeTrackRef; }
66   void SetStoreHeader(Bool_t storeHeader) { fStoreHeader = storeHeader; }
67
68   void SetEventFilter(AliAnalysisCuts * const filter) {fEventFilter=filter;}
69
70 private:
71   enum {kAllEvents=0, kSelectedEvents, kV0andEvents, kFilteredEvents, kPileupEvents, kNbinsEvent};  
72
73   AliDielectron *fDielectron;             // J/psi framework object
74
75   Bool_t fSelectPhysics;                  // Whether to use physics selection
76   UInt_t fTriggerMask;               // Event trigger mask
77   UInt_t fExcludeTriggerMask;        // Triggers to exclude from the analysis
78   Bool_t fTriggerOnV0AND;            // if to trigger on V0and
79   Bool_t fRejectPileup;              // pileup rejection wanted
80
81   TH1D *fEventStat;                  //! Histogram with event statistics
82
83   ETriggerLogig fTriggerLogic;       // trigger logic: any or all bits need to be matching
84
85   AliTriggerAnalysis *fTriggerAnalysis; //! trigger analysis class
86   
87   Bool_t fStoreLikeSign;        // flag to store like-sign candidates
88   Bool_t fStoreRotatedPairs;    // flag to store rotation
89   Bool_t fStoreEventsWithSingleTracks;    // flag to store events with a least one reconstructed track 
90   Bool_t fCreateNanoAOD;        // flag to create nanoAODs 
91   Bool_t fStoreHeader;          // flag to store header for all events 
92
93   AliAnalysisCuts *fEventFilter;     // event filter
94   
95   AliAnalysisTaskDielectronFilter(const AliAnalysisTaskDielectronFilter &c);
96   AliAnalysisTaskDielectronFilter& operator= (const AliAnalysisTaskDielectronFilter &c);
97   
98   ClassDef(AliAnalysisTaskDielectronFilter, 1);
99 };
100 #endif