]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGDQ/dielectron/AliAnalysisTaskReducedTree.h
-updates to reduced events (ionut)
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / AliAnalysisTaskReducedTree.h
1 // Analysis task for creating a reduced tree containing event, track and resonance candidate information 
2 // Author: Ionut-Cristian Arsene (i.c.arsene@gsi.de,i.c.arsene@cern.ch)                                 
3 // 2012/06/21
4
5 #ifndef ALIANALYSISTASKREDUCEDTREE_H
6 #define ALIANALYSISTASKREDUCEDTREE_H 
7
8 #include "TList.h"
9
10 #include "AliAnalysisTaskSE.h"
11
12 class AliAnalysisCuts;
13 class TTree;
14 class TFile;
15 class AliESDv0Cuts;
16 class AliKFVertex;
17 class AliReducedEvent;
18 class AliReducedEventFriend;
19 class AliReducedPair;
20 class AliDielectron;
21
22 //_________________________________________________________________________
23 class AliAnalysisTaskReducedTree : public AliAnalysisTaskSE {
24   
25 public:
26   AliAnalysisTaskReducedTree();
27   AliAnalysisTaskReducedTree(const char *name);
28   virtual ~AliAnalysisTaskReducedTree(){  }
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   // Toggle on/off information branches
57   void SetFillTrackInfo(Bool_t flag=kTRUE)       {fFillTrackInfo = flag;}
58   void SetFillDielectronInfo(Bool_t flag=kTRUE)  {fFillDielectronInfo = flag;}
59   void SetFillV0Info(Bool_t flag=kTRUE)          {fFillV0Info = flag;}
60   void SetFillCaloClusterInfo(Bool_t flag=kTRUE) {fFillCaloClusterInfo = flag;}
61   void SetFillFriendInfo(Bool_t flag=kTRUE)      {fFillFriendInfo = flag;}
62   
63   // Add dielectron objects to the list. These contain cuts and histogram definitions
64   void AddDielectron(AliDielectron * const die) { fListDielectron.Add(die); }
65  
66  private:
67
68   TList fListDielectron;             // List of dielectron framework instances
69   TList fListHistos;                 //! List of histogram managers in the dielectron framework classes
70   
71   Bool_t fSelectPhysics;             // Whether to use physics selection
72   UInt_t fTriggerMask;               // Event trigger mask
73   Bool_t fRejectPileup;              // pileup rejection wanted
74
75   Bool_t fFillTrackInfo;             // fill track information
76   Bool_t fFillDielectronInfo;        // fill dielectrons
77   Bool_t fFillV0Info;                // fill the V0 information
78   Bool_t fFillCaloClusterInfo;       // fill the calorimeter clusters
79   Bool_t fFillFriendInfo;            // fill friend tree information
80
81   AliAnalysisCuts *fEventFilter;     // event filter
82   AliAnalysisCuts *fTrackFilter;     // filter for the hadrons to be correlated with the dielectrons
83   AliAnalysisCuts *fFlowTrackFilter; // filter for the barrel tracks to be used for the Q-vector
84   
85   AliESDv0Cuts *fK0sCuts;            // v0 standard filter for K0s->pi+pi-
86   AliESDv0Cuts *fLambdaCuts;         // v0 standard filter for Lambda0->p + pi
87   AliAnalysisCuts *fK0sPionCuts;     // filter for pions from K0s
88   AliAnalysisCuts *fLambdaProtonCuts;// filter for protons from Lambda
89   AliAnalysisCuts *fLambdaPionCuts;  // filter for pions from Lambda
90   Double_t fK0sMassRange[2];           // mass range for allowed K0s pairs
91   Double_t fLambdaMassRange[2];        // mass range for allowed Lambda pairs
92   AliDielectronHistos* fV0Histos;    // histogram manager for V0s
93
94   TFile *fTreeFile;                  //! output file containing the tree
95   TTree *fTree;                      //! Reduced event tree
96   TTree *fFriendTreeFile;            //! output file containing the friend tree
97   TTree *fFriendTree;                //! Reduced event tree with friend info (event plane, etc.)
98   AliReducedEvent *fReducedEvent;    //! reduced event wise information
99   AliReducedEventFriend *fReducedEventFriend;    //! friend reduced event wise information
100   
101   void FillEventInfo();                     // fill reduced event information
102   void FillFriendEventInfo();               // fill reduced event friend information
103   void FillTrackInfo();                     // fill reduced track information
104   void FillDielectronPairInfo(AliDielectron* die, Short_t iDie);  // fill dielectron reduced pair information
105   void FillV0PairInfo();                    // fill V0 reduced pair information
106   AliReducedPair* FillV0PairInfo(AliESDv0* v0, Int_t id, AliESDtrack* legPos, AliESDtrack* legNeg, AliKFVertex* vtxKF, Bool_t chargesAreCorrect);
107   UChar_t EncodeTPCClusterMap(AliESDtrack* track);
108   void FillCaloClusters();
109   
110   AliAnalysisTaskReducedTree(const AliAnalysisTaskReducedTree &c);
111   AliAnalysisTaskReducedTree& operator= (const AliAnalysisTaskReducedTree &c);
112
113   ClassDef(AliAnalysisTaskReducedTree, 1); //Analysis Task for creating a reduced event information tree 
114 };
115 #endif