]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGDQ/dielectron/macrosJPSI/RaaPbPb2010/AliAnalysisTaskCorrelationTree.h
Merge remote-tracking branch 'origin/master' into mergingFlat
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosJPSI / RaaPbPb2010 / AliAnalysisTaskCorrelationTree.h
1 #ifndef ALIANALYSISTASKCORRELATIONTREE_H
2 #define ALIANALYSISTASKCORRELATIONTREE_H
3
4 // Analysis task for creating a reduced tree containing event, track and resonance candidate information
5 // Author: Ionut-Cristian Arsene (i.c.arsene@gsi.de)
6
7 #include "TList.h"
8
9 #include "AliAnalysisTaskSE.h"
10
11 class AliAnalysisCuts;
12 class TTree;
13 class TFile;
14 class AliESDv0Cuts;
15 class AliKFVertex;
16 class AliCorrelationReducedEvent;
17 class AliCorrelationReducedEventFriend;
18 class AliCorrelationReducedPair;
19 class AliDielectron;
20 class AliFlowTrackCuts;
21
22 //_________________________________________________________________________
23 class AliAnalysisTaskCorrelationTree : public AliAnalysisTaskSE {
24   
25 public:
26   AliAnalysisTaskCorrelationTree();
27   AliAnalysisTaskCorrelationTree(const char *name);
28   virtual ~AliAnalysisTaskCorrelationTree(){  }
29
30   virtual void UserExec(Option_t *option);
31   virtual void UserCreateOutputObjects();
32   virtual void FinishTaskOutput();
33   
34   void UsePhysicsSelection(Bool_t phy=kTRUE) {fSelectPhysics=phy;}
35   void SetTriggerMask(UInt_t mask) {fTriggerMask=mask;}
36   UInt_t GetTriggerMask() const { return fTriggerMask; }
37   void SetRejectPileup(Bool_t pileup=kTRUE)     { fRejectPileup=pileup;     }
38   
39   // Cuts for selection of event to be written to tree
40   void SetEventFilter(AliAnalysisCuts * const filter) {fEventFilter=filter;}
41   // Cuts for selecting tracks included in the tree
42   void SetTrackFilter(AliAnalysisCuts * const filter) {fTrackFilter=filter;}
43   // Cuts for selecting tracks to be used for Q vector calculation
44   void SetFlowTrackFilter(AliAnalysisCuts * const filter) {fFlowTrackFilter = filter;}
45   
46   // Cuts for selecting V0s
47   void SetK0sPionCuts(AliAnalysisCuts * const filter) {fK0sPionCuts=filter;}
48   void SetLambdaProtonCuts(AliAnalysisCuts * const filter) {fLambdaProtonCuts=filter;}
49   void SetLambdaPionCuts(AliAnalysisCuts * const filter) {fLambdaPionCuts=filter;}
50   void SetK0sCuts(AliESDv0Cuts* const cuts) {fK0sCuts = cuts;}
51   void SetLambdaCuts(AliESDv0Cuts* const cuts) {fLambdaCuts = cuts;}
52   void SetK0sMassRange(Double_t min=0.4, Double_t max=0.6) {fK0sMassRange[0]=min; fK0sMassRange[1]=max;}
53   void SetLambdaMassRange(Double_t min=1.08, Double_t max=1.15) {fLambdaMassRange[0]=min; fLambdaMassRange[1]=max;}
54   void SetV0Histograms(AliDielectronHistos * const histos) {fV0Histos=histos;}
55   
56   // Add dielectron objects to the list. These contain cuts and histogram definitions
57   void AddDielectron(AliDielectron * const die) { fListDielectron.Add(die); }
58  
59  private:
60
61   TList fListDielectron;             // List of dielectron framework instances
62   TList fListHistos;                 //! List of histogram managers in the dielectron framework classes
63   
64   Bool_t fSelectPhysics;             // Whether to use physics selection
65   UInt_t fTriggerMask;               // Event trigger mask
66   Bool_t fRejectPileup;              // pileup rejection wanted
67
68   AliAnalysisCuts *fEventFilter;     // event filter
69   AliAnalysisCuts *fTrackFilter;     // filter for the hadrons to be correlated with the dielectrons
70   AliAnalysisCuts *fFlowTrackFilter; // filter for the barrel tracks to be used for the Q-vector
71   
72   AliESDv0Cuts *fK0sCuts;            // v0 standard filter for K0s->pi+pi-
73   AliESDv0Cuts *fLambdaCuts;         // v0 standard filter for Lambda0->p + pi
74   AliAnalysisCuts *fK0sPionCuts;     // filter for pions from K0s
75   AliAnalysisCuts *fLambdaProtonCuts;// filter for protons from Lambda
76   AliAnalysisCuts *fLambdaPionCuts;  // filter for pions from Lambda
77   Double_t fK0sMassRange[2];           // mass range for allowed K0s pairs
78   Double_t fLambdaMassRange[2];        // mass range for allowed Lambda pairs
79   AliDielectronHistos* fV0Histos;    // histogram manager for V0s
80
81   TFile *fTreeFile;                  // output file containing the tree
82   TTree *fTree;                      //! Reduced event tree
83   TTree *fFriendTreeFile;            // output file containing the friend tree
84   TTree *fFriendTree;                //! Reduced event tree with friend info (event plane, etc.)
85   AliCorrelationReducedEvent *fReducedEvent;    // reduced event wise information
86   AliCorrelationReducedEventFriend *fReducedEventFriend;    // friend reduced event wise information
87   
88   AliFlowTrackCuts* fFlowTrackCuts;   // flow track cuts object
89   
90   void FillEventInfo();                     // fill reduced event information
91   void FillFriendEventInfo();               // fill reduced event friend information
92   void FillTrackInfo();                     // fill reduced track information
93   void FillDielectronPairInfo(AliDielectron* die, Short_t iDie);  // fill dielectron reduced pair information
94   void FillV0PairInfo();                    // fill V0 reduced pair information
95   AliCorrelationReducedPair* FillV0PairInfo(AliESDv0* v0, Int_t id, AliESDtrack* legPos, AliESDtrack* legNeg, AliKFVertex* vtxKF, Bool_t chargesAreCorrect);
96   UChar_t EncodeTPCClusterMap(AliESDtrack* track);
97   void FillCaloClusters();
98   
99   AliAnalysisTaskCorrelationTree(const AliAnalysisTaskCorrelationTree &c);
100   AliAnalysisTaskCorrelationTree& operator= (const AliAnalysisTaskCorrelationTree &c);
101
102   ClassDef(AliAnalysisTaskCorrelationTree, 1); //Analysis Task for creating a reduced event information tree 
103 };
104 #endif