1 #ifndef ALIANALYSISTASKSEXICPLUS2XIPIPIFROMAODTRACKS_H
2 #define ALIANALYSISTASKSEXICPLUS2XIPIPIFROMAODTRACKS_H
4 /**************************************************************************
5 * Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
7 * Author: The ALICE Off-line Project. *
8 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
24 #include "AliAnalysisTaskSE.h"
25 #include "AliAODEvent.h"
27 #include "AliRDHFCutsXicPlustoXiPiPifromAODtracks.h"
32 class AliAODRecoCascadeHF3Prong;
34 class AliESDtrackCuts;
37 class AliAnalysisTaskSEXicPlus2XiPiPifromAODtracks : public AliAnalysisTaskSE
40 AliAnalysisTaskSEXicPlus2XiPiPifromAODtracks();
41 AliAnalysisTaskSEXicPlus2XiPiPifromAODtracks(const Char_t* name, AliRDHFCutsXicPlustoXiPiPifromAODtracks* cuts, AliRDHFCutsXicPlustoXiPiPifromAODtracks* cuts2, Bool_t writeVariableTree=kTRUE);
42 virtual ~AliAnalysisTaskSEXicPlus2XiPiPifromAODtracks();
44 // Implementation of interface methods
45 virtual void UserCreateOutputObjects();
47 virtual void LocalInit() {Init();}
48 virtual void UserExec(Option_t *option);
49 virtual void Terminate(Option_t *option);
51 void FillROOTObjects(AliAODRecoCascadeHF3Prong *xicobj);
52 void MakeAnalysis(AliAODEvent *aod);
56 void SetMC(Bool_t theMCon) {fUseMCInfo = theMCon;}
57 Bool_t GetMC() const {return fUseMCInfo;}
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; }
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);
73 AliAnalysisTaskSEXicPlus2XiPiPifromAODtracks(const AliAnalysisTaskSEXicPlus2XiPiPifromAODtracks &source);
74 AliAnalysisTaskSEXicPlus2XiPiPifromAODtracks& operator=(const AliAnalysisTaskSEXicPlus2XiPiPifromAODtracks& source);
76 void DefineTreeVariables();
77 void DefineGeneralHistograms();
78 void DefineAnalysisHistograms();
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);
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
112 //--------------------- My histograms ------------------
113 std::vector<THnSparse* > fHistoXicMass; //! xic mass spectra
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
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
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
137 ClassDef(AliAnalysisTaskSEXicPlus2XiPiPifromAODtracks,1); // class for Xic->Xipipi