]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/vertexingHF/AliAnalysisTaskSEXicPlus2XiPiPifromAODtracks.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / AliAnalysisTaskSEXicPlus2XiPiPifromAODtracks.h
1 #ifndef ALIANALYSISTASKSEXICPLUS2XIPIPIFROMAODTRACKS_H
2 #define ALIANALYSISTASKSEXICPLUS2XIPIPIFROMAODTRACKS_H
3
4 /**************************************************************************
5  * Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
6  *                                                                        *
7  * Author: The ALICE Off-line Project.                                    *
8  * Contributors are mentioned in the code where appropriate.              *
9  *                                                                        *
10  * Permission to use, copy, modify and distribute this software and its   *
11  * documentation strictly for non-commercial purposes is hereby granted   *
12  * without fee, provided that the above copyright notice appears in all   *
13  * copies and that both the copyright notice and this permission notice   *
14  * appear in the supporting documentation. The authors make no claims     *
15  * about the suitability of this software for any purpose. It is          *
16  * provided "as is" without express or implied warranty.                  *
17  **************************************************************************/
18
19 /* $Id$ */ 
20
21 #include "TROOT.h"
22 #include "TSystem.h"
23
24 #include "AliAnalysisTaskSE.h"
25 #include "AliAODEvent.h"
26 #include "AliPID.h"
27 #include "AliRDHFCutsXicPlustoXiPiPifromAODtracks.h"
28
29 class THnSparse;
30 class TH1F;
31 class TClonesArray;
32 class AliAODRecoCascadeHF3Prong;
33 class AliAODPidHF;
34 class AliESDtrackCuts;
35 class AliESDVertex;
36
37 class AliAnalysisTaskSEXicPlus2XiPiPifromAODtracks : public AliAnalysisTaskSE 
38 {
39  public:
40   AliAnalysisTaskSEXicPlus2XiPiPifromAODtracks();
41   AliAnalysisTaskSEXicPlus2XiPiPifromAODtracks(const Char_t* name, AliRDHFCutsXicPlustoXiPiPifromAODtracks* cuts, AliRDHFCutsXicPlustoXiPiPifromAODtracks* cuts2, Bool_t writeVariableTree=kTRUE);
42   virtual ~AliAnalysisTaskSEXicPlus2XiPiPifromAODtracks();
43
44   // Implementation of interface methods  
45   virtual void UserCreateOutputObjects();
46   virtual void Init();
47   virtual void LocalInit() {Init();}
48   virtual void UserExec(Option_t *option);
49   virtual void Terminate(Option_t *option);
50
51   void FillROOTObjects(AliAODRecoCascadeHF3Prong *xicobj);
52   void MakeAnalysis(AliAODEvent *aod);
53
54   
55   // set MC usage
56   void SetMC(Bool_t theMCon) {fUseMCInfo = theMCon;}
57   Bool_t GetMC() const {return fUseMCInfo;}
58   
59   void   SetIspp(Bool_t a) { fIspp=a; }
60   Bool_t GetIspp() { return fIspp; }
61   void   SetIspA(Bool_t a) { fIspA=a; }
62   Bool_t GetIspA() { return fIspA; }
63   void   SetIsAA(Bool_t a) { fIsAA=a; }
64   Bool_t GetIsAA() { return fIsAA; }
65   
66   void SelectCascade( const AliVEvent *event,Int_t nCascades,Int_t &nSeleCasc, Bool_t *seleCascFlags);
67   void SelectTrack( const AliVEvent *event, Int_t trkEntries, Int_t &nSeleTrks,Bool_t *seleFlags);
68   Bool_t SelectLikeSign(AliAODTrack *trk1, AliAODTrack *trk2);
69   AliAODRecoCascadeHF3Prong* MakeCascadeHF3Prong(AliAODcascade *casc, AliAODTrack *trk1, AliAODTrack *trk2, AliAODEvent *aod, AliAODVertex *secvert, Double_t dispersion);
70   
71  private:
72   
73   AliAnalysisTaskSEXicPlus2XiPiPifromAODtracks(const AliAnalysisTaskSEXicPlus2XiPiPifromAODtracks &source);
74   AliAnalysisTaskSEXicPlus2XiPiPifromAODtracks& operator=(const AliAnalysisTaskSEXicPlus2XiPiPifromAODtracks& source); 
75   
76   void DefineTreeVariables();
77   void DefineGeneralHistograms();
78   void DefineAnalysisHistograms();
79
80   AliAODVertex *CallPrimaryVertex(AliAODcascade *casc, AliAODTrack *trk1, AliAODTrack *trk2, AliAODEvent *evt);
81   AliAODVertex* PrimaryVertex(const TObjArray *trkArray,AliVEvent *event);
82   AliAODVertex* CallReconstructSecondaryVertex(AliAODTrack *trk1, AliAODTrack *trk2,Double_t &disp);
83   AliAODVertex* ReconstructSecondaryVertex(TObjArray *trkArray, Double_t &dispersion,Bool_t useTRefArray=kTRUE);
84   
85   Bool_t fUseMCInfo;          // Use MC info
86   TList *fOutput;             //! User output slot 1 // general histos
87   TList *fOutputAll;          //! User output slot 3 // Analysis histos
88   TList *fListCuts;           //! User output slot 2 // Cuts 
89   TH1F *fCEvents;             // Histogram to check selected events
90   TH1F *fHTrigger;            //Histograms to check trigger
91   TH1F *fHCentrality;         //histogram to check centrality
92   AliRDHFCutsXicPlustoXiPiPifromAODtracks *fProdCuts;      // Cuts - sent to output slot 2
93   AliRDHFCutsXicPlustoXiPiPifromAODtracks *fAnalCuts;      // Cuts - sent to output slot 2
94   Bool_t fIsEventSelected;           // flag for event selected
95   Bool_t    fWriteVariableTree;       // flag to decide whether to write the candidate variables on a tree variables
96   TTree    *fVariablesTree;           //! tree of the candidate variables after track selection on output slot 4
97   Bool_t fIspp;            //is pp run
98   Bool_t fIspA;            //is pA run
99   Bool_t fIsAA;            //is AA run
100   Bool_t fIsMB;            //Is MB event
101   Bool_t fIsSemi;          //is semi-central trigger event
102   Bool_t fIsCent;          //is central trigger event
103   Bool_t fIsINT7;          // is int7 trigger event
104   Bool_t fIsEMC7;          //is emc7 trigger event
105   Float_t *fCandidateVariables;     //! variables to be written to the tree
106   AliAODVertex *fVtx1;              // primary vertex
107   AliESDVertex *fV1;                // primary vertex
108   Double_t fBzkG;                   // magnetic field value [kG]
109   Float_t  fCentrality;             //centrality
110   Float_t  fTriggerCheck;           // Trigger information
111   
112   //--------------------- My histograms ------------------
113   std::vector<THnSparse* > fHistoXicMass;        //! xic mass spectra
114   
115   TH1F*  fHistoDcaPi1Pi2;                    //!  DCA between pions
116   TH1F*  fHistoDcaPiCasc;                    //! DCA between pi and cascade
117   TH1F*  fHistoLikeDecayLength;              //! Decay length
118   TH1F*  fHistoLikeDecayLengthXY;            //! Decay length in XY
119   TH1F*  fHistoXicCosPAXY;                   //! Xic cosine pointing angle
120   
121   TH1F*  fHistoXiMass;                       //! mass of xi
122   TH1F*  fHistoCascDcaXiDaughters;           //! DCA of xi daughgers
123   TH1F*  fHistoCascDcaV0Daughters;           //! DCA of v0 daughters
124   TH1F*  fHistoCascDcaV0ToPrimVertex;        //! DCA of v0 to primary vertex 
125   TH1F*  fHistoCascDcaPosToPrimVertex;       //! DCA of positive track to primary vertex 
126   TH1F*  fHistoCascDcaNegToPrimVertex;       //! DCA of negative track to primary vertex 
127   TH1F*  fHistoCascDcaBachToPrimVertex;      //! DCA of bachelor track to primary vertex 
128   TH1F*  fHistoCascCosPAXiPrim;              //! Cosine pointing angle of Xi to primary vertex
129   TH1F*  fHistoXiPt;                         //! Xi pt
130   
131   TH1F*  fHistoPiPt;                         //! Pion pT
132   TH1F*  fHistoPid0;                         //! pion d0
133   TH1F*  fHistonSigmaTPCpi;                  //! nSigma of TPC pion
134   TH1F*  fHistonSigmaTOFpi;                  //! nSigma of TOF pion
135   TH1F*  fHistoProbPion;                     //! Probability to be pion
136   
137   ClassDef(AliAnalysisTaskSEXicPlus2XiPiPifromAODtracks,1); // class for Xic->Xipipi
138 };
139 #endif
140