AliPhysics  c0d7b22 (c0d7b22)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliAnalysisTaskSELc2pK0sfromAODtracks.h
Go to the documentation of this file.
1 #ifndef ALIANALYSISTASKSELC2PK0SFROMAODTRACKS_H
2 #define ALIANALYSISTASKSELC2PK0SFROMAODTRACKS_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 "TVector.h"
23 #include "TSystem.h"
24 
25 #include "AliAnalysisTaskSE.h"
26 #include "AliAODEvent.h"
27 #include "AliPID.h"
29 
31 
32 class THnSparse;
33 class TH1F;
34 class TH2F;
35 class TH3F;
36 class TClonesArray;
38 class AliESDVertex;
39 class AliAODMCParticle;
40 class AliEventPoolManager;
42 
43 class AliAnalysisTaskSELc2pK0sfromAODtracks : public AliAnalysisTaskSE
44 {
45  public:
47  AliAnalysisTaskSELc2pK0sfromAODtracks(const Char_t* name, AliRDHFCutsLctopK0sfromAODtracks* cuts, Bool_t writeVariableTree=kTRUE);
49 
51  virtual void UserCreateOutputObjects();
52  virtual void Init();
53  virtual void LocalInit() {Init();}
54  virtual void UserExec(Option_t *option);
55  virtual void Terminate(Option_t *option);
56 
57  void FillROOTObjects(AliAODRecoCascadeHF *lcobj, AliAODv0 *v0, AliAODTrack *trk, AliAODTrack *trkpid, AliAODEvent *aod, TClonesArray *mcarray);
58  void FillMixROOTObjects(TLorentzVector *pt, TLorentzVector *ev, TVector *tinfo, TVector *vinfo);
59  Bool_t MakeMCAnalysis(TClonesArray *mcArray);
60  void MakeAnalysis(AliAODEvent *aod, TClonesArray *mcArray);
61  void FillProtonROOTObjects(AliAODTrack *trk, TClonesArray *mcArray);
62  void FillMCROOTObjects(AliAODMCParticle *part, AliAODMCParticle *mcepart, AliAODMCParticle *mcv0part, Int_t decaytype);
63  void FillV0ROOTObjects(AliAODv0 *v0, TClonesArray *mcArray);
64  void FillMCProtonROOTObjects(AliAODMCParticle *mcepart, TClonesArray *mcArray);
65  void FillMCV0ROOTObjects(AliAODMCParticle *mcv0part, TClonesArray *mcArray);
66  void SelectV0( const AliVEvent *event,Int_t nV0,Int_t &nSeleV0, Bool_t *seleV0Flags, TClonesArray *mcArray);
67  void SelectTrack( const AliVEvent *event, Int_t trkEntries, Int_t &nSeleTrks,Int_t *seleFlags, TClonesArray *mcArray);
68  Int_t MatchToMC(AliAODRecoCascadeHF *elobj, TClonesArray *mcArray, Int_t *pdgarray_pr, Int_t *pdgarray_v0, Int_t *labelarray_pr, Int_t *labelarray_v0, Int_t &ngen_pr, Int_t &ngen_v0);
69 
70 
72  void SetMC(Bool_t theMCon) {fUseMCInfo = theMCon;}
73  Bool_t GetMC() const {return fUseMCInfo;}
74  void SetUseCentralityV0M(Bool_t centon) {fUseCentralityV0M = centon;}
75  Bool_t GetUseCentralityV0M() const {return fUseCentralityV0M;}
76 
78 
79  AliAODRecoCascadeHF* MakeCascadeHF(AliAODv0 *casc, AliAODTrack *trk, AliAODTrack *trkpid, AliAODEvent *aod, AliAODVertex *vert);
80  AliAODVertex* ReconstructSecondaryVertex(AliAODv0 *casc, AliAODTrack *trk, AliAODEvent *aod);
81 
82  void StoreGlobalTrackReference(AliAODTrack *track, Int_t);
84 
89  void SetPoolPVzBinLimits(Int_t Nzvtxbins,const Double_t *ZvtxBins){
90  fNzVtxBins = Nzvtxbins;
91  for(int ix = 0;ix<fNzVtxBins+1;ix++){fZvtxBins[ix] = ZvtxBins[ix];}
92  }
93  void SetPoolCentBinLimits(Int_t Ncentbins,const Double_t *CentBins){
94  fNCentBins = Ncentbins;
95  for(int ix = 0;ix<fNCentBins+1;ix++){fCentBins[ix] = CentBins[ix];}
96  }
97  void SetPoolRPBinLimits(Int_t Nrpbins,const Double_t *rpbins){
98  fNRPBins = Nrpbins;
99  for(int ix = 0;ix<fNRPBins+1;ix++){fRPBins[ix] = rpbins[ix];}
100  }
101  void DoEventMixingWithPools(Int_t index);
102  void ResetPool(Int_t poolIndex);
103  Int_t GetPoolIndex(Double_t zvert, Double_t mult, Double_t rp);
104 
105  private:
106 
109 
110  void DefineTreeVariables();
112  void DefineV0TreeVariables();
113  void DefineMCTreeVariables();
118 
119  AliAODVertex *CallPrimaryVertex(AliAODv0 *v0, AliAODTrack *trk, AliAODEvent *evt);
120  AliAODVertex* PrimaryVertex(const TObjArray *trkArray,AliVEvent *event);
121 
122  Bool_t fUseMCInfo;
123  TList *fOutput;
124  TList *fOutputAll;
125  TList *fListCuts;
126  TH1F *fCEvents;
127  TH1F *fHTrigger;
128  TH1F *fHCentrality;
135  TTree *fVariablesTree;
142  Bool_t fIsMB;
143  Bool_t fIsSemi;
144  Bool_t fIsCent;
145  Bool_t fIsINT7;
146  Bool_t fIsEMC7;
153  AliAODVertex *fVtx1;
154  AliESDVertex *fV1;
155  Float_t fVtxZ;
156  Double_t fBzkG;
157  Float_t fCentrality;
158  Float_t fReactionPlane;
159  Int_t fRunNumber;
160  Float_t fTriggerCheck;
164 
165  //--------------------- My histograms ------------------
169 
170  THnSparse* fHistoLcMCGen;
171  THnSparse* fHistoLcK0SpMass;
172  THnSparse* fHistoLcK0SpMassMix;
178  THnSparse* fHistoLcK0SpMassMCS;
180  THnSparse* fHistoLcKPluspMass;
181  THnSparse* fHistoLcKMinuspMass;
184 
185  TH2F* fHistoBachPt;
188  TH2F* fHistoKaonPt;
194  TH1F* fHistod0Bach;
195  TH1F* fHistod0V0;
196  TH1F* fHistod0d0;
203 
207 
208  // Store pointers to global tracks for pid and dca
209  AliAODTrack **fGTI;
210  Int_t *fGTIndex;
211  const UShort_t fTrackBuffSize;
212 
213  //Mixing
216  Int_t fNzVtxBins;
217  Double_t fZvtxBins[100]; // [fNzVtxBinsDim]
218  Int_t fNCentBins;
219  Double_t fCentBins[100]; // [fNCentBinsDim]
220  Int_t fNRPBins;
221  Double_t fRPBins[100]; // [fNRPBinsDim]
222  Int_t fNOfPools;
223  TTree** fEventBuffer;
224  TObjString *fEventInfo;
225  TObjArray* fProtonTracks;
226  TObjArray* fV0Tracks;
227  TObjArray* fProtonCutVarsArray;
228  TObjArray* fV0CutVarsArray;
229 
230 
233 };
235 #endif
236 
TTree * fMCVariablesTree
! tree of the candidate variables after track selection on output slot 7
void FillProtonROOTObjects(AliAODTrack *trk, TClonesArray *mcArray)
Int_t MatchToMC(AliAODRecoCascadeHF *elobj, TClonesArray *mcArray, Int_t *pdgarray_pr, Int_t *pdgarray_v0, Int_t *labelarray_pr, Int_t *labelarray_v0, Int_t &ngen_pr, Int_t &ngen_v0)
TH2F * fHistoBachPtMCGen
! Bachelor pT histogram (efficiency denominator)
TObjArray * fProtonTracks
unique event id for mixed event check
void SelectTrack(const AliVEvent *event, Int_t trkEntries, Int_t &nSeleTrks, Int_t *seleFlags, TClonesArray *mcArray)
AliAODVertex * PrimaryVertex(const TObjArray *trkArray, AliVEvent *event)
TH1F * fHistoProbProton
! Probability to be proton histogram
TH1F * fHReactionPlane
! Histogram to check Reaction plane
Float_t * fCandidateProtonVariables
! variables to be written to the tree
void SetPoolPVzBinLimits(Int_t Nzvtxbins, const Double_t *ZvtxBins)
TTree * fVariablesTree
flag to decide whether to write the candidate variables on a tree variables
void SetPoolRPBinLimits(Int_t Nrpbins, const Double_t *rpbins)
TH2F * fHistoKaonPtMCGen
! Kaon pT histogram (efficiency denominator)
TH2F * fHistoKaonPtMCS
! Kaon pT histogram (efficiency numerator)
Float_t * fCandidateV0Variables
! variables to be written to the tree
AliAnalysisTaskSELc2pK0sfromAODtracks & operator=(const AliAnalysisTaskSELc2pK0sfromAODtracks &source)
TH1F * fHCentrality
! Histogram to check Centrality
TTree * fMCProtonVariablesTree
! tree of the candidate variables after track selection on output slot 9
TTree * fMCV0VariablesTree
! tree of the candidate variables after track selection on output slot 10
const UShort_t fTrackBuffSize
Array of integers to keep the index of tpc only track.
AliAODRecoCascadeHF * MakeCascadeHF(AliAODv0 *casc, AliAODTrack *trk, AliAODTrack *trkpid, AliAODEvent *aod, AliAODVertex *vert)
TTree * fProtonVariablesTree
! tree of the candidate variables after track selection on output slot 5
virtual void UserCreateOutputObjects()
Implementation of interface methods.
void MakeAnalysis(AliAODEvent *aod, TClonesArray *mcArray)
TH2F * fHistoBachPtMCS
! Bachelor pT histogram (efficiency numerator)
TObjArray * fV0CutVarsArray
array of RDHF cut information
void FillMCV0ROOTObjects(AliAODMCParticle *mcv0part, TClonesArray *mcArray)
Bool_t fWriteMCVariableTree
flag to decide whether to write the candidate variables on a tree variables
Bool_t fWriteEachVariableTree
flag to decide whether to write the candidate variables on a tree variables
Int_t GetPoolIndex(Double_t zvert, Double_t mult, Double_t rp)
void SelectV0(const AliVEvent *event, Int_t nV0, Int_t &nSeleV0, Bool_t *seleV0Flags, TClonesArray *mcArray)
void FillROOTObjects(AliAODRecoCascadeHF *lcobj, AliAODv0 *v0, AliAODTrack *trk, AliAODTrack *trkpid, AliAODEvent *aod, TClonesArray *mcarray)
TTree * fV0VariablesTree
! tree of the candidate variables after track selection on output slot 6
Int_t fNzVtxBins
maximum number of events to be used in event mixing
void FillV0ROOTObjects(AliAODv0 *v0, TClonesArray *mcArray)
Float_t * fCandidateMCVariables
! variables to be written to the tree
void FillMixROOTObjects(TLorentzVector *pt, TLorentzVector *ev, TVector *tinfo, TVector *vinfo)
void FillMCROOTObjects(AliAODMCParticle *part, AliAODMCParticle *mcepart, AliAODMCParticle *mcv0part, Int_t decaytype)
Bool_t fIsMB
Reconstruct primary vertex excluding candidate tracks.
TList * fOutputAll
! User Output slot 3 //analysis histograms
Float_t * fCandidateMCV0Variables
! variables to be written to the tree
TH1F * fCEvents
! Histogram to check selected events
Float_t * fCandidateMCProtonVariables
! variables to be written to the tree
void FillMCProtonROOTObjects(AliAODMCParticle *mcepart, TClonesArray *mcArray)
Double_t fCentBins[100]
number of centrality bins
AliNormalizationCounter * fCounter
EvNumber counter.
AliAODVertex * CallPrimaryVertex(AliAODv0 *v0, AliAODTrack *trk, AliAODEvent *evt)
TObjArray * fV0Tracks
array of electron-compatible tracks
Int_t * fGTIndex
Array of pointers, just nicely sorted according to the id.
void SetPoolCentBinLimits(Int_t Ncentbins, const Double_t *CentBins)
AliAODVertex * ReconstructSecondaryVertex(AliAODv0 *casc, AliAODTrack *trk, AliAODEvent *aod)
Int_t fDoEventMixing
Size of the above array, ~12000 for PbPb.
TH1F * fHistoV0CosPA
! V0 cosine pointing angle to primary vertex
TObjArray * fProtonCutVarsArray
array of lambda-compatible tracks