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)
5 #ifndef ALIANALYSISTASKREDUCEDTREE_H
6 #define ALIANALYSISTASKREDUCEDTREE_H
10 #include "AliAnalysisTaskSE.h"
12 class AliAnalysisCuts;
17 class AliReducedEvent;
18 class AliReducedEventFriend;
22 //_________________________________________________________________________
23 class AliAnalysisTaskReducedTree : public AliAnalysisTaskSE {
26 AliAnalysisTaskReducedTree();
27 AliAnalysisTaskReducedTree(const char *name);
28 virtual ~AliAnalysisTaskReducedTree(){ }
30 virtual void UserExec(Option_t *option);
31 virtual void UserCreateOutputObjects();
32 virtual void FinishTaskOutput();
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; }
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;}
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;}
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;}
63 // Add dielectron objects to the list. These contain cuts and histogram definitions
64 void AddDielectron(AliDielectron * const die) { fListDielectron.Add(die); }
68 TList fListDielectron; // List of dielectron framework instances
69 TList fListHistos; //! List of histogram managers in the dielectron framework classes
71 Bool_t fSelectPhysics; // Whether to use physics selection
72 UInt_t fTriggerMask; // Event trigger mask
73 Bool_t fRejectPileup; // pileup rejection wanted
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
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
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
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
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();
110 AliAnalysisTaskReducedTree(const AliAnalysisTaskReducedTree &c);
111 AliAnalysisTaskReducedTree& operator= (const AliAnalysisTaskReducedTree &c);
113 ClassDef(AliAnalysisTaskReducedTree, 1); //Analysis Task for creating a reduced event information tree