]>
Commit | Line | Data |
---|---|---|
10eaad41 | 1 | /************************************************************************** |
2 | * Authors: Martha Spyropoulou-Stassinaki and the members | |
3 | * of the Greek group at Physics Department of Athens University | |
4 | * Paraskevi Ganoti, Anastasia Belogianni and Filimon Roukoutakis | |
5 | * Contributors are mentioned in the code where appropriate. * | |
6 | * * | |
7 | * Permission to use, copy, modify and distribute this software and its * | |
8 | * documentation strictly for non-commercial purposes is hereby granted * | |
9 | * without fee, provided that the above copyright notice appears in all * | |
10 | * copies and that both the copyright notice and this permission notice * | |
11 | * appear in the supporting documentation. The authors make no claims * | |
12 | * about the suitability of this software for any purpose. It is * | |
13 | * provided "as is" without express or implied warranty. * | |
14 | **************************************************************************/ | |
15 | ||
16 | //----------------------------------------------------------------- | |
17 | // AliAnalysisKinkESDMC class | |
18 | // Example of an analysis task for kink topology study | |
19 | // Kaons from kink topology are 'identified' in this code | |
b7e98ef4 | 20 | // Nominal Radius 120-210 cm, kaon Rap < 0.5 , eta < 0.8 |
10eaad41 | 21 | //----------------------------------------------------------------- |
22 | ||
a0271296 | 23 | #include "TChain.h" |
24 | #include "TTree.h" | |
10eaad41 | 25 | #include "TH1F.h" |
26 | #include "TH2F.h" | |
a0271296 | 27 | #include "TH3F.h" |
28 | #include "TH1D.h" | |
29 | #include "TH2D.h" | |
30 | #include "TParticle.h" | |
31 | #include <TVector3.h> | |
32 | #include "TF1.h" | |
33 | ||
34 | #include "AliAnalysisTask.h" | |
35 | #include "AliAnalysisManager.h" | |
36 | #include "AliTrackReference.h" | |
10eaad41 | 37 | |
a0271296 | 38 | #include "AliVEvent.h" |
10eaad41 | 39 | #include "AliESDEvent.h" |
10eaad41 | 40 | #include "AliMCEvent.h" |
a0271296 | 41 | #include "AliAnalysisKinkESDMC.h" |
10eaad41 | 42 | #include "AliStack.h" |
a0271296 | 43 | #include "AliESDpid.h" |
10eaad41 | 44 | #include "AliESDkink.h" |
a0271296 | 45 | #include "AliESDtrack.h" |
46 | #include "AliESDtrackCuts.h" | |
47 | #include "AliPhysicsSelectionTask.h" | |
48 | #include "AliInputEventHandler.h" | |
49 | #include "AliESDInputHandler.h" | |
50 | #include "AliAnalysisManager.h" | |
51 | #include "AliVEvent.h" | |
52 | #include "AliPIDResponse.h" | |
53 | ///#include "AliTPCpidESD.h" | |
10eaad41 | 54 | |
be1a7181 | 55 | ClassImp(AliAnalysisKinkESDMC) |
a0271296 | 56 | |
57 | ||
10eaad41 | 58 | //________________________________________________________________________ |
59 | AliAnalysisKinkESDMC::AliAnalysisKinkESDMC(const char *name) | |
92adf4f6 | 60 | : AliAnalysisTaskSE(name), fHistPtESD(0),fHistPt(0),fHistQtAll(0),fHistQt1(0),fHistQt2(0) |
a0271296 | 61 | , fHistPtKaon(0),fHistPtKPDG(0),fHistEta(0),fHistEtaK(0),fptKMC(0),fMultiplMC(0),fESDMult(0),frad(0), |
62 | fradMC(0), fKinkKaon(0), fKinkKaonBg(0), fM1kaon(0), fgenPtEtR(0),fPtKink(0), | |
92adf4f6 | 63 | fcodeH(0), fdcodeH(0), fAngMomK(0),fAngMomPi(0), fAngMomKC(0), fMultESDK(0), fMultMCK(0), |
a0271296 | 64 | fSignPtNcl(0), fSignPtEta(0), fSignPtEtaMC(0), fSignPtMC(0), fEtaNcl(0), fSignPt(0), fChi2NclTPC(0), fRatChi2Ncl(0), |
65 | fRadiusNcl(0), fTPCSgnlP(0), fTPCSgnlPa(0), fSignPtGen(0), | |
66 | fRpr(0),fZpr(0), fdcatoVxXY(0), fMCEtaKaon(0), | |
67 | fZvXv(0),fZvYv(0),fXvYv(0),fPtPrKink(0),fgenPtEtRP(0),fgenPtEtRN(0),fkinkKaonP(0),fkinkKaonN(0), | |
68 | frapidESDK(0), frapidKMC(0), fPtKPlMC(0), fPtKMnMC(0), | |
69 | fHistPtKaoP(0), fHistPtKaoN(0), fHiPtKPDGP(0), fHiPtKPDGN(0),fKinKBGP(0),fKinKBGN(0), | |
70 | fQtKMu(0),fQtKPi(0),fQtKEl(0),fFakepipi(0), fFakeKPi(0), | |
71 | fDCAkink(0), fDCAkinkBG(0), fPosiKink(0), fPosiKinkK(0), fPosiKinKXZ(0), fPosiKinKYZ(0), fPosiKinKBgZY(0), | |
72 | fcode2(0), fcode4(0), fZkinkZDau(0), | |
73 | fQtKMuMC(0), fQtKElMC(0), fQtKPiMC(0), fQtK3PiP(0),fQtK3PiM(0), fmaxAngMomKmu(0), | |
74 | fPosiKinKBgZX(0), fPosiKinKBgXY(0), fMinvPi(0),fMinvKa(0),fMinvPr(0), | |
75 | fTPCSgnlPtpc(0), | |
76 | fTPCMomNSgnl(0), fMothKinkMomSgnl(0), fNSigmTPC(0), fTPCSgnlKinkDau(0),fcodeDau1(0),fcodeDau2(0), fMothKinkMomSgnlD(0), | |
fda107c4 | 77 | fInvMassMuNuAll(0), fInvMassMuNuPt(0), fInvMassMuNuPtAll(0), fRatioCrossedRows(0), fRatioCrossedRowsKink(0), fRadiusPt(0), fRadiusPtcln(0), |
5220a87d | 78 | fRadiusPtKaon(0), fRadiusPtPion(0), fRadiusPtFake(0), fPtCut1(0), fPtCut2(0), fPtCut3(0), fAngMomKKinks(0), |
a0271296 | 79 | flengthMCK(0), flifetiMCK(0), flifetim2(0), fLHelESDK(0),flifeInt(0), flifeYuri(0), flenYuri(0), flenTrRef(0),flifeSmall(0), flifetime(0),flifTiESDK(0), |
80 | flifeKink(), flenHelx(0), fradPtRapMC(0), fradPtRapDC(0), fradPtRapESD(0), fRadNclcln(0), | |
81 | f1(0), f2(0), | |
2acbcadf | 82 | // fListOfHistos(0),fLowMulcut(-1),fUpMulcut(-1), fKinkRadUp(200),fKinkRadLow(130), fLowCluster(20), fLowQt(.12), fCutsMul(0),fMaxDCAtoVtxCut(0), fPIDResponse(0) |
60f5d945 | 83 | fListOfHistos(0),fLowMulcut(-1),fUpMulcut(-1), fKinkRadUp(210.),fKinkRadLow(120.), fLowCluster(20), fLowQt(.12), fRapiK(0.5), fCutsMul(0),fMaxDCAtoVtxCut(0), fPIDResponse(0) |
10eaad41 | 84 | |
85 | { | |
86 | // Constructor | |
87 | ||
88 | // Define input and output slots here | |
a0271296 | 89 | |
90 | DefineOutput(1, TList::Class()); | |
10eaad41 | 91 | } |
92 | ||
93 | //________________________________________________________________________ | |
92adf4f6 | 94 | void AliAnalysisKinkESDMC::UserCreateOutputObjects() |
10eaad41 | 95 | { |
a0271296 | 96 | |
97 | // Input slot #0 works with a TChain | |
98 | // DefineInput(0, TChain::Class());liESDtrackCuts("Mul","Mul"); | |
99 | fCutsMul=new AliESDtrackCuts("Mul","Mul"); | |
100 | fCutsMul->SetMinNClustersTPC(70); | |
101 | fCutsMul->SetMaxChi2PerClusterTPC(4); | |
102 | fCutsMul->SetAcceptKinkDaughters(kFALSE); | |
103 | fCutsMul->SetRequireTPCRefit(kTRUE); | |
104 | // ITS | |
105 | fCutsMul->SetRequireITSRefit(kTRUE); | |
106 | fCutsMul->SetClusterRequirementITS(AliESDtrackCuts::kSPD, | |
107 | AliESDtrackCuts::kAny); | |
108 | fCutsMul->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01"); | |
109 | ||
110 | fCutsMul->SetMaxDCAToVertexZ(2); | |
111 | fCutsMul->SetDCAToVertex2D(kFALSE); | |
112 | fCutsMul->SetRequireSigmaToVertex(kFALSE); | |
113 | ||
114 | fCutsMul->SetEtaRange(-0.8,+0.8); | |
115 | fCutsMul->SetPtRange(0.15, 1e10); | |
116 | // | |
117 | fMaxDCAtoVtxCut=new AliESDtrackCuts("fMaxDCA", "fMaxDCA"); | |
118 | fMaxDCAtoVtxCut->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01"); | |
119 | fMaxDCAtoVtxCut->SetMaxChi2TPCConstrainedGlobal(36); | |
120 | ||
121 | // Create histograms | |
122 | // Called once | |
123 | ||
124 | f1=new TF1("f1","((atan([0]*[1]*(1.0/(sqrt((x^2)*(1.0-([1]^2))-([0]^2)*([1]^2))))))*180.)/[2]",1.1,10.0); | |
125 | f1->SetParameter(0,0.493677); | |
126 | f1->SetParameter(1,0.9127037); | |
127 | f1->SetParameter(2,TMath::Pi()); | |
10eaad41 | 128 | |
10eaad41 | 129 | |
a0271296 | 130 | f2=new TF1("f2","((atan([0]*[1]*(1.0/(sqrt((x^2)*(1.0-([1]^2))-([0]^2)*([1]^2))))))*180.)/[2]",0.1,10.0); |
131 | f2->SetParameter(0,0.13957018); | |
132 | f2->SetParameter(1,0.2731374); | |
133 | f2->SetParameter(2,TMath::Pi()); | |
134 | // | |
2acbcadf | 135 | /* |
a0271296 | 136 | Double_t gPt7K0[45] = {0., 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8,0.9,1.0, |
137 | 1.1, 1.2, 1.3, 1.4, 1.5, 1.6,1.7,1.8,1.9, 2.0, | |
138 | 2.2, 2.4, 2.6, 2.8, 3.0, 3.3, 3.6, 3.9, | |
139 | 4.2, 4.6,5.0, 5.4, 5.9, 6.5, 7.0,7.5, 8.0,8.5, 9.2, 10., 11., 12., 13.5,15.0 }; // David K0 | |
2acbcadf | 140 | */ |
ab0877b8 | 141 | // |
b7e98ef4 | 142 | /* |
ab0877b8 | 143 | //! ! ! ! ! KINK FROM HERE ---------------> |
fa0ec057 | 144 | Double_t gPt7Comb[48] = { |
ab0877b8 | 145 | 0.25,0.30,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0, 1.1, 1.2, |
146 | 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, | |
fa0ec057 | 147 | 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4, 4.6, 4.8,5.0, 5.5, 6.0 |
ab0877b8 | 148 | }; // 25/11/2013 from Francesco |
b7e98ef4 | 149 | */ |
a0271296 | 150 | /* |
151 | Double_t gPt7TOF[47] = { 0.2,0.25, 0.3,0.35, 0.4,0.45, 0.5,0.55, 0.6,0.65, 0.7,0.75, 0.8, 0.85, 0.9, 0.95, 1.0, | |
152 | 1.1, 1.2, 1.3, 1.4, 1.5, 1.6,1.7,1.8,1.9, 2.0, | |
153 | 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7,2.8, 2.9, 3.0, | |
154 | 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4, 4.6, 4.8,5.0 }; // Barbara TOF Kch | |
155 | */ | |
156 | fHistPtESD = new TH1F("fHistPtESD", "P_{T} distribution",200, 0.0,10.0); | |
157 | fHistPt = new TH1F("fHistPt", "P_{T} distribution",200, 0.0,10.0); | |
158 | fHistQtAll = new TH1F("fHistQtAll", "Q_{T} distr All Kinks ",100, 0.0,.300); | |
159 | fHistQt1= new TH1F("fHistQt1", "Q_{T} distribution",100, 0.0,.300); | |
160 | fHistQt2= new TH1F("fHistQt2", "Q_{T} distribution",100, 0.0,.300); | |
2acbcadf | 161 | fHistPtKaon = new TH1F("fHistPtKaon", "P_{T}Kaon distribution",300, 0.0,15.0); |
162 | // fHistPtKaon = new TH1F("fHistPtKaon", "P_{T}Kaon distribution",47,gPt7Comb ); | |
163 | fHistPtKPDG = new TH1F("fHistPtKPDG", "P_{T}Kaon distribution",300,0.0,15.0 ); | |
a0271296 | 164 | fHistEta= new TH1F("fHistEta", "Eta distribution", 26,-1.3, 1.3); |
165 | fHistEtaK= new TH1F("fHistEtaK", "EtaK distribution", 26,-1.3, 1.3); | |
2acbcadf | 166 | fptKMC= new TH1F("fptKMC", "P_{T}Kaon generated",300, 0.0, 15.0 ); |
a0271296 | 167 | fMultiplMC= new TH1F("fMultiplMC", " charge particle multipl",100, 0.0,2500.); |
168 | fESDMult= new TH1F("fESDMult", "charge multipliESD",100, 0.0,100.); | |
169 | frad= new TH1F("frad", "radius K ESD recon",100,0.,1000.); | |
170 | fradMC= new TH1F("fradMC", "radius K generated",100,0.,1000.); | |
2acbcadf | 171 | fKinkKaon= new TH1F("fKinkKaon", "P_{T}Kaon kinks identi", 300, 0.0, 15.0 ); |
172 | fKinkKaonBg= new TH1F("fKinkKaonBg", "P_{T}Kaon kinks backgr",300, 0.0, 15.0 ); | |
fda107c4 | 173 | //fM1kaon= new TH1F("fM1kaon","Invar m(kaon) from kink->mu+netrino decay",180,0.1, 1.0); |
174 | fM1kaon= new TH1F("fM1kaon","Invar m(kaon) from kink->mu+netrino decay",600,0.1, 0.7); | |
2acbcadf | 175 | fgenPtEtR= new TH1F("fgenPtEtR", "P_{T}Kaon distribution", 300, 0.0, 15.0 ); |
176 | //fPtKink= new TH1F("fPtKink", "P_{T}Kaon Kink bution",47, gPt7Comb ); | |
177 | fPtKink= new TH1F("fPtKink", "P_{T}Kaon Kink bution",300, 0.0, 15.0 ); | |
a0271296 | 178 | fcodeH = new TH2F("fcodeH", "code vrs dcode dist. kinks,K",100,0.,2500.,100,0.,2500.); |
179 | fdcodeH = new TH2F("fdcodeH", "code vrs dcode dist. kinks,K",100,0.,2500.,100,0.,2500.); | |
180 | fAngMomK= new TH2F("fAngMomK","Decay angle vrs Mother Mom,K",100,0.0,10.0,80,0.,80.); | |
181 | fAngMomPi= new TH2F("fAngMomPi","Decay angle vrs Mother Mom,Pi",100,0.0,10.0,80,0.,80.); | |
182 | fAngMomKC= new TH2F("fAngMomKC","Decay angle vrs Mother Mom,K",100,0.0,10.0,80,0.,80.); | |
183 | fMultESDK=new TH1F("fMultESDK", "charge multipliESD kaons",100, 0.,2500.); | |
184 | fMultMCK=new TH1F("fMultMCK", "charge multipli MC kaons",100, 0.,2500.); | |
185 | fSignPtNcl= new TH2F("fSignPtNcl","SignPt vrs Ncl,K",80,-4.,4.0,70,20.,160.); | |
186 | fSignPtEta= new TH2F("fSignPtEta","SignPt vrs Eta,K",80,-4.0,4.0,30,-1.5,1.5); | |
187 | fSignPtEtaMC= new TH2F("fSignPtEtaMC","SignPt vrs Eta,K",80,-4.0,4.0,30,-1.5,1.5); | |
188 | fSignPtMC= new TH1F("fSignPtMC","SignPt ,K",100,-5.,5.0); | |
189 | fEtaNcl= new TH2F("fEtaNcl","Eta vrs Ncl,K",26,-1.3,1.3,70,20.,160.); | |
190 | fSignPt= new TH1F("fSignPt","SignPt ,K",100,-5.,5.0); | |
191 | fChi2NclTPC= new TH2F("fChi2NclTPC","Chi2vrs nclust,K",100,0.,500., 70,20, 160); | |
192 | fRatChi2Ncl= new TH1F("fRatChi2Ncl","Ratio chi2/nclusters in TPC,K",50,0.0,5.0); | |
193 | fRadiusNcl = new TH2F("fRadiusNcl","KinkRadius Ncl,K",75,100.,250., 80,0, 160); | |
194 | fTPCSgnlP = new TH2F("fTPCSgnlP","Kink TCP de/dx,K",300,0.,15.,150,0.,300); | |
195 | fTPCSgnlPa= new TH2F("fTPCSgnlPa","Kink TCP de/dx,a",300,0.,15.,150,0.,300); | |
196 | fSignPtGen= new TH1F("fSignPtGen","SignPtGen ,K",100,-5.0,5.0); | |
197 | fRpr = new TH1D("fRpr", "rad distribution PID pr",100,-1.0,1.0); | |
198 | fZpr = new TH1D("fZpr", "z distribution PID pr ",60,-15.,15.); | |
199 | fdcatoVxXY = new TH1D("fdcatoVxXY", "dca distribution PID ",20,-1.,1.); | |
200 | fMCEtaKaon = new TH1F("fMCEtaKaon"," Hist of Eta K -Kink Selecied",26,-1.3,1.3); | |
201 | fZvXv= new TH2F("fZvXv","Xv-Zv main vtx",60,-0.5,0.5, 60, -15., 15.); | |
202 | fZvYv= new TH2F("fZvYv","Yv-Zv main vtx",60,-0.5,0.5, 60, -15., 15.); | |
203 | fXvYv= new TH2F("fXvYv","Xv-Yv main vtx", 60,-1.5,1.5, 60, -1.5, 1.5); | |
204 | fPtPrKink=new TH1F("fPtPrKink","pt of ESD kaonKink tracks",300, 0.0,15.0); | |
2acbcadf | 205 | fgenPtEtRP= new TH1F("fgenPtEtRP", "P_{T}Kaon distribution positive", 300, 0.0, 15.0 ); |
206 | fgenPtEtRN= new TH1F("fgenPtEtRN", "P_{T}Kaon distribution negative", 300, 0.0, 15.0 ); | |
207 | fkinkKaonP= new TH1F("fKinkKaonP", "P_{T}Kaon distribution positive", 300, 0.0, 15.0 ); | |
208 | fkinkKaonN= new TH1F("fKinkKaonN", "P_{T}Kaon distribution negative", 300, 0.0, 15.0 ); | |
a0271296 | 209 | frapidESDK= new TH1F("frapidESDK", "rapidity distribution", 26,-1.3, 1.3); |
210 | frapidKMC = new TH1F("frapidKMC ", "rapidity distri MC ",26,-1.3, 1.3); | |
2acbcadf | 211 | fPtKPlMC= new TH1F("fPtKPlMC", "P_{T}Kaon Pos generated", 300, 0.0, 15.0 ); |
212 | fPtKMnMC= new TH1F("fPtKMnMC", "P_{T}Kaon Minusgenerated",300, 0.0, 15.0 ); | |
213 | fHistPtKaoP= new TH1F("fHistPtKaoP", "P_{T}Kaon Pos ESD", 300, 0.0, 15.0 ); | |
214 | fHistPtKaoN= new TH1F("fHistPtKaoN", "P_{T}Kaon Neg ESD", 300, 0.0, 15.0 ); | |
215 | fHiPtKPDGP= new TH1F("fHiPtKPDGP", "P_{T}Kaon Pos ESD", 300, 0.0, 15.0 ); | |
216 | fHiPtKPDGN= new TH1F("fHiPtKPDGN", "P_{T}Kaon neg ESD", 300, 0.0, 15.0 ); | |
217 | fKinKBGP = new TH1F("fKinKBGP ", "P_{T}Kaon Pos ESD", 300, 0.0, 15.0 ); | |
218 | //fKinKBGN= new TH1F("fKinKBGN", "P_{T}Kaon neg ESD", 47, gPt7Comb ); | |
219 | fKinKBGN= new TH1F("fKinKBGN", "P_{T}Kaon neg ESD",300, 0.0, 15.0 ); | |
a0271296 | 220 | fQtKMu= new TH1F("fQtKMu", "Q_{T} distribution K to mu ",100, 0.0,.300); |
221 | fQtKPi= new TH1F("fQtKPi", "Q_{T} distribution K to pi",100, 0.0,.300); | |
222 | fQtKEl= new TH1F("fQtKEl", "Q_{T} distribution K to elec",100, 0.0,.300); | |
2acbcadf | 223 | fFakepipi = new TH1F("fFakepipi", "P_{T}fake pipi ", 300, 0.0, 15.0 ); |
224 | fFakeKPi = new TH1F("fFakeKPi", "P_{T}fake Kpi ", 300, 0.0, 15.0 ); | |
a0271296 | 225 | fDCAkink = new TH1F("fDCAkink", "DCA kink vetrex ",50, 0.0,1.0); |
226 | fDCAkinkBG = new TH1F("fDCAkinkBG", "DCA kink vetrex ",50, 0.0,1.0); | |
227 | fPosiKink= new TH2F("fPosiKink", "Y vrx kink Vrex ",100, -300.0,300.0,100, -300, 300.); | |
228 | fPosiKinkK= new TH2F("fPosiKinkK", "Y vrx kink VrexK ",100, -300.0,300.0,100, -300, 300.); | |
229 | fPosiKinKXZ= new TH2F("fPosiKinKXZ", "Y vrx kink VrexK ",100, -300.0,300.0,100, -300, 300.); | |
230 | fPosiKinKYZ= new TH2F("fPosiKinKYZ", "Y vrx kink VrexK ",100, -300.0,300.0,100, -300, 300.); | |
231 | fPosiKinKBgZY= new TH2F("fPosiKinKBgZY", "Y vrx Z kink Vrexbg ",100, -300.0,300.0,100, -300, 300.); | |
232 | fcode2 = new TH2F("fcode2", "code vrs dcode dist. kinks,K",100,0.,2500.,100,0.,2500.); | |
233 | fcode4 = new TH2F("fcode4", "code vrs dcode dist. kinks,K",100,0.,2500.,100,0.,2500.); | |
234 | fZkinkZDau = new TH2F("fZkinkZDau", "Y vrx kink VrexK ",100, -300.0,300.0,100, -300, 300.); | |
235 | fQtKMuMC= new TH1F("fQtKMuMC", "Q_{T} distribution K to mu MC",100, 0.0,.300); | |
236 | fQtKPiMC= new TH1F("fQtKPiMC", "Q_{T} distribution K to pi MC",100, 0.0,.300); | |
237 | fQtKElMC= new TH1F("fQtKElMC", "Q_{T} distribution K to elec MC",100, 0.0,.300); | |
238 | fQtK3PiP= new TH1F("fQtK3PiP", "Q_{T} distribution K to 3pi ",100, 0.0,.300); | |
239 | fQtK3PiM= new TH1F("fQtK3PiM", "Q_{T} distribution K to 3pi ",100, 0.0,.300); | |
2acbcadf | 240 | fmaxAngMomKmu= new TH2F("fmaxAngMomKmu","Decay angle vrs Mother Mom,Kmu",100,0.0,10.0,120,0.,120.); |
a0271296 | 241 | fPosiKinKBgZX= new TH2F("fPosiKinKBgZX", "X vrx Z kink Vrexbg ",100, -20.0,20.0,100, 0., 300.); |
242 | fPosiKinKBgXY= new TH2F("fPosiKinKBgXY", "Y vrx X kink Vrexbg ",100, -300.0,300.0,100, -300, 300.); | |
243 | fMinvPi= new TH1F("fMinvPi","Invar m(kaon) from kink-> decay",100,0.0, 1.2); | |
244 | fMinvKa= new TH1F("fMinvKa","Invar m(kaon) from kink-> decay",100,0.0, 2.0); | |
245 | fMinvPr= new TH1F("fMinvPr","Invar m(kaon) from kink-> decay",100,0.0, 1.2); | |
246 | fTPCSgnlPtpc = new TH2F("fTPCSgnlPtpc","TPC signal de/dx Mom TPC,K ",100,0.0,8.0,100, 0., 250. ); | |
247 | fTPCMomNSgnl = new TH2F("fTPCMomNsgnl","TPC signal de/dx Mom TPC,K ",100,0.0,8.0,20 , -10., 10.); | |
248 | fMothKinkMomSgnl = new TH2F("fMothKinkMomSgnl","TPC signal de/dx Mom TPC,Kink ",100,0.0,250.,100, 0., 250. ); | |
249 | fNSigmTPC = new TH1F("fNSigmTPC","TPC Nsigma de/dx TPC,K ", 30 , -7.5, 7.5); | |
250 | fTPCSgnlKinkDau = new TH2F("fTPCSgnlKinkDau","TPC signal de/dx Mom,K",100,0.0,8.0,100,0.,250.); | |
251 | fcodeDau1 = new TH2F("fcodeDau1", "code vrs dcode dist. kinks,K",100,0.,500.,100,0.,500.); | |
252 | fcodeDau2 = new TH2F("fcodeDau2", "code vrs dcode dist. kinks,K",100,0.,500.,100,0.,500.); | |
253 | fMothKinkMomSgnlD = new TH2F("fMothKinkMomSgnlD","TPC signal de/dx Mom TPC,Kink ",100,0.0,250.,100, 0., 250. ); | |
fda107c4 | 254 | //fInvMassMuNuAll = new TH1F("fInvMassMuNuAll","Invar from kink->mu+netrino decay",180,0.1, 1.0); |
255 | fInvMassMuNuAll = new TH1F("fInvMassMuNuAll","Invar from kink->mu+netrino decay",600,0.1, 0.7); // 22/8/2013 | |
256 | //fInvMassMuNuPt = new TH2F("fInvMassMuNuPt","Invar from kink->mu+netrino decay vs Pt",180,0.1, 1.0, 100, 0. , 10.); | |
257 | fInvMassMuNuPt = new TH2F("fInvMassMuNuPt","Invar from kink->mu+netrino decay vs Pt",600,0.1, 0.7, 100, 0. , 10.); // 22/8/2013 | |
258 | fInvMassMuNuPtAll = new TH2F("fInvMassMuNuPtAll","Invar from kink->mu+netrino decay vs Pt",600,0.1, 0.7, 100, 0. , 10.); // 22/8/2013 | |
a0271296 | 259 | fRatioCrossedRows = new TH1F("fRatioCrossedRows","Ratio crossed rows in TPC",20,0.0,1.0); |
260 | fRatioCrossedRowsKink = new TH1F("fRatioCrossedRowsKink","Ratio crossed rows in TPC for kinks",20,0.0,1.0); | |
261 | fRadiusPt =new TH2F("fRadiusPt","radius vs pt ",80, 90.,250.,100, 0.,10. ); | |
262 | fRadiusPtcln =new TH2F("fRadiusPtcln","radius vs pt clean ",80, 90.,250.,100, 0.,10. ); | |
5220a87d | 263 | fRadiusPtKaon =new TH2F("fRadiusPtKaon","radius vs pt Kaon PDG ",80, 90.,250.,100, 0.,10. ); |
264 | fRadiusPtPion =new TH2F("fRadiusPtPion","radius vs pt Pion PDG ",80, 90.,250.,100, 0.,10. ); | |
265 | fRadiusPtFake =new TH2F("fRadiusPtFake","radius vs pt Pion Fake ",80, 90.,250.,100, 0.,10. ); | |
a0271296 | 266 | fPtCut1 = new TH1F("fPtCut1", "P_{T}Kaon distribution",300, 0.0,15.0); |
267 | fPtCut2 = new TH1F("fPtCut2", "P_{T}Kaon distribution",300, 0.0,15.0); | |
268 | fPtCut3 = new TH1F("fPtCut3", "P_{T}Kaon distribution",300, 0.0,15.0); | |
269 | fAngMomKKinks = new TH2F("fAngMomKKinks","Decay angle vrs Mother Mom,Kinks",300,0.0,15.0,100,0.,100.); | |
270 | flengthMCK=new TH1F("flengthMCK", "length of K MCref decay ",100,0.,1000.0); | |
271 | flifetiMCK=new TH1F("flifetiMCK", "lifetime ref K Decay ",100,0.,1000.0); | |
272 | flifetim2 =new TH1F("flifetim2", "lifetime ref K Decay ",100,0.,1000.0); | |
273 | fLHelESDK =new TH1F("fLHelESDK", "lifetime ref K Decay ",100,0.,1000.0); | |
274 | flifeInt =new TH1F("flifeInt", "lifetime ref K Decay ",100,0.,1000.0); | |
275 | flifeYuri=new TH1F("flifeYuri","lifetime ref K Decay ",100,0.,1000.0); | |
276 | flenYuri=new TH1F("flenYuri","lifetime ref K Decay ",100,0.,1000.0); | |
277 | flenTrRef =new TH1F("flenTrRef","lifetime ref K Decay ",100,0.,1000.0); | |
278 | flifeSmall=new TH1F("flifeSmall","lifetime ref K Decay ",100,0.,1000.0); | |
279 | flifetime =new TH1F("flifetime","lifetime ref K Decay ",100,0.,1000.0); | |
280 | flifTiESDK=new TH1F("flifTiESDK","lifetime ref K Decay ",100,0.,1000.0); | |
281 | flifeKink =new TH1F("flifeKink", "lifetime ref K Decay ",100,0.,1000.0); | |
282 | flenHelx =new TH1F("flenHelx", "lifetime ref K Decay ",100,0.,1000.0); | |
283 | fradPtRapMC=new TH3F("fradPtRapMC","rad pt rap dat",28,100.,240., 20, 0., 5., 20, -1., 1. ); | |
284 | fradPtRapDC=new TH3F("fradPtRapDC","rad pt rap dat",28,100.,240., 20, 0., 5., 20, -1., 1. ); | |
285 | fradPtRapESD=new TH3F("fradPtRapESD","rad pt rap dat",28,100.,240., 20, 0., 5., 20, -1., 1. ); | |
286 | fRadNclcln = new TH2F("fRadNclcln","KinkRadius Ncl,K",75,100.,250., 80,0, 160); | |
287 | ||
288 | ||
289 | ||
290 | ||
291 | fListOfHistos=new TList(); | |
292 | fListOfHistos->SetOwner(); | |
10eaad41 | 293 | fListOfHistos->Add(fHistPtESD); |
294 | fListOfHistos->Add(fHistPt); | |
295 | fListOfHistos->Add(fHistQtAll); | |
296 | fListOfHistos->Add(fHistQt1); | |
297 | fListOfHistos->Add(fHistQt2); | |
298 | fListOfHistos->Add(fHistPtKaon); | |
299 | fListOfHistos->Add(fHistPtKPDG); | |
300 | fListOfHistos->Add(fHistEta); | |
301 | fListOfHistos->Add(fHistEtaK); | |
302 | fListOfHistos->Add(fptKMC); | |
303 | fListOfHistos->Add(fMultiplMC); | |
304 | fListOfHistos->Add(fESDMult); | |
10eaad41 | 305 | fListOfHistos->Add(frad); |
a0271296 | 306 | fListOfHistos->Add(fradMC); |
10eaad41 | 307 | fListOfHistos->Add(fKinkKaon); |
308 | fListOfHistos->Add(fKinkKaonBg); | |
309 | fListOfHistos->Add(fM1kaon); | |
310 | fListOfHistos->Add(fgenPtEtR); | |
311 | fListOfHistos->Add(fPtKink); | |
10eaad41 | 312 | fListOfHistos->Add(fcodeH); |
313 | fListOfHistos->Add(fdcodeH); | |
10eaad41 | 314 | fListOfHistos->Add(fAngMomK); |
315 | fListOfHistos->Add(fAngMomPi); | |
92adf4f6 | 316 | fListOfHistos->Add(fAngMomKC); |
317 | fListOfHistos->Add(fMultESDK); | |
318 | fListOfHistos->Add(fMultMCK); | |
a0271296 | 319 | fListOfHistos->Add(fSignPtNcl); |
320 | fListOfHistos->Add(fSignPtEta); | |
321 | fListOfHistos->Add(fSignPtEtaMC); | |
322 | fListOfHistos->Add(fSignPtMC); | |
323 | fListOfHistos->Add(fEtaNcl); | |
324 | fListOfHistos->Add(fSignPt); | |
325 | fListOfHistos->Add(fChi2NclTPC); | |
326 | fListOfHistos->Add(fRatChi2Ncl); | |
327 | fListOfHistos->Add(fRadiusNcl); | |
328 | fListOfHistos->Add(fTPCSgnlP); | |
329 | fListOfHistos->Add(fTPCSgnlPa); | |
330 | fListOfHistos->Add(fSignPtGen); | |
10eaad41 | 331 | fListOfHistos->Add(fRpr); |
332 | fListOfHistos->Add(fZpr); | |
a0271296 | 333 | fListOfHistos->Add(fdcatoVxXY); |
334 | fListOfHistos->Add(fMCEtaKaon); | |
10eaad41 | 335 | fListOfHistos->Add(fZvXv); |
336 | fListOfHistos->Add(fZvYv); | |
337 | fListOfHistos->Add(fXvYv); | |
338 | fListOfHistos->Add(fPtPrKink); | |
a0271296 | 339 | fListOfHistos->Add(fgenPtEtRP); |
340 | fListOfHistos->Add(fgenPtEtRN); | |
341 | fListOfHistos->Add(fkinkKaonP); | |
342 | fListOfHistos->Add(fkinkKaonN); | |
343 | fListOfHistos->Add(frapidESDK); | |
344 | fListOfHistos->Add(frapidKMC); | |
345 | fListOfHistos->Add(fPtKPlMC); | |
346 | fListOfHistos->Add(fPtKMnMC); | |
347 | fListOfHistos->Add(fHistPtKaoP); | |
348 | fListOfHistos->Add(fHistPtKaoN); | |
349 | fListOfHistos->Add(fHiPtKPDGP); | |
350 | fListOfHistos->Add(fHiPtKPDGN); | |
351 | fListOfHistos->Add(fKinKBGP); | |
352 | fListOfHistos->Add(fKinKBGN); | |
353 | fListOfHistos->Add(fQtKMu); | |
354 | fListOfHistos->Add(fQtKPi); | |
355 | fListOfHistos->Add(fQtKEl); | |
356 | fListOfHistos->Add(fFakepipi); | |
357 | fListOfHistos->Add(fFakeKPi); | |
358 | fListOfHistos->Add(fDCAkink); | |
359 | fListOfHistos->Add(fDCAkinkBG); | |
360 | fListOfHistos->Add(fPosiKink); | |
361 | fListOfHistos->Add(fPosiKinkK); | |
362 | fListOfHistos->Add(fPosiKinKXZ); | |
363 | fListOfHistos->Add(fPosiKinKYZ); | |
364 | fListOfHistos->Add(fPosiKinKBgZY); | |
365 | fListOfHistos->Add(fcode2); | |
366 | fListOfHistos->Add(fcode4); | |
367 | fListOfHistos->Add(fZkinkZDau); | |
368 | fListOfHistos->Add(fQtKMuMC); | |
369 | fListOfHistos->Add(fQtKPiMC); | |
370 | fListOfHistos->Add(fQtKElMC); | |
371 | fListOfHistos->Add(fQtK3PiP); | |
372 | fListOfHistos->Add(fQtK3PiM); | |
373 | fListOfHistos->Add(fmaxAngMomKmu); | |
374 | fListOfHistos->Add(fPosiKinKBgZX); | |
375 | fListOfHistos->Add(fPosiKinKBgXY); | |
376 | fListOfHistos->Add(fMinvPi); | |
377 | fListOfHistos->Add(fMinvKa); | |
378 | fListOfHistos->Add(fMinvPr); | |
379 | fListOfHistos->Add(fTPCSgnlPtpc); | |
380 | fListOfHistos->Add(fTPCMomNSgnl); | |
381 | fListOfHistos->Add(fMothKinkMomSgnl); | |
382 | fListOfHistos->Add(fNSigmTPC); | |
383 | fListOfHistos->Add(fTPCSgnlKinkDau); | |
384 | fListOfHistos->Add(fcodeDau1); | |
385 | fListOfHistos->Add(fcodeDau2); | |
386 | fListOfHistos->Add(fMothKinkMomSgnlD); | |
387 | fListOfHistos->Add(fInvMassMuNuAll); | |
388 | fListOfHistos->Add(fInvMassMuNuPt); | |
fda107c4 | 389 | fListOfHistos->Add(fInvMassMuNuPtAll); |
a0271296 | 390 | fListOfHistos->Add(fRatioCrossedRows); |
391 | fListOfHistos->Add(fRatioCrossedRowsKink); | |
392 | fListOfHistos->Add(fRadiusPt); | |
393 | fListOfHistos->Add(fRadiusPtcln); | |
5220a87d | 394 | fListOfHistos->Add(fRadiusPtKaon); |
395 | fListOfHistos->Add(fRadiusPtPion); | |
396 | fListOfHistos->Add(fRadiusPtFake); | |
a0271296 | 397 | fListOfHistos->Add(fPtCut1); |
398 | fListOfHistos->Add(fPtCut2); | |
399 | fListOfHistos->Add(fPtCut3); | |
400 | fListOfHistos->Add(fAngMomKKinks); | |
401 | fListOfHistos->Add(flengthMCK); | |
402 | fListOfHistos->Add(flifetiMCK); | |
403 | fListOfHistos->Add(flifetim2); | |
404 | fListOfHistos->Add(fLHelESDK); | |
405 | fListOfHistos->Add(flifeInt); | |
406 | fListOfHistos->Add(flifeYuri); | |
407 | fListOfHistos->Add(flenYuri); | |
408 | fListOfHistos->Add(flenTrRef); | |
409 | fListOfHistos->Add(flifeSmall); | |
410 | fListOfHistos->Add(flifetime); | |
411 | fListOfHistos->Add(flifTiESDK); | |
412 | fListOfHistos->Add(flifeKink); | |
413 | fListOfHistos->Add(flenHelx); | |
414 | fListOfHistos->Add(fradPtRapMC); | |
415 | fListOfHistos->Add(fradPtRapDC); | |
416 | fListOfHistos->Add(fradPtRapESD); | |
417 | fListOfHistos->Add(fRadNclcln); | |
418 | ||
419 | PostData(1, fListOfHistos); | |
10eaad41 | 420 | } |
421 | ||
422 | //________________________________________________________________________ | |
92adf4f6 | 423 | void AliAnalysisKinkESDMC::UserExec(Option_t *) |
10eaad41 | 424 | { |
425 | // Main loop | |
426 | // Called for each event | |
427 | ||
428 | // Process MC truth, therefore we receive the AliAnalysisManager and ask it for the AliMCEventHandler | |
429 | // This handler can return the current MC event | |
92adf4f6 | 430 | |
431 | AliVEvent *event = InputEvent(); | |
432 | if (!event) { | |
433 | Printf("ERROR: Could not retrieve event"); | |
434 | return; | |
435 | } | |
436 | ||
437 | AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event); | |
438 | if (!esd) { | |
439 | Printf("ERROR: Could not retrieve esd"); | |
440 | return; | |
a0271296 | 441 | } |
10eaad41 | 442 | |
92adf4f6 | 443 | AliMCEvent* mcEvent = MCEvent(); |
10eaad41 | 444 | if (!mcEvent) { |
445 | Printf("ERROR: Could not retrieve MC event"); | |
446 | return; | |
447 | } | |
a0271296 | 448 | fMultMCK->Fill(mcEvent->GetNumberOfTracks() ); |
449 | // | |
450 | ||
451 | ||
452 | // multiplicity selection | |
453 | Float_t refmultiplicity=fCutsMul->CountAcceptedTracks(esd); | |
454 | if(fLowMulcut>-1) | |
455 | { | |
456 | if(refmultiplicity<fLowMulcut) | |
457 | return; | |
458 | } | |
459 | if(fUpMulcut>-1) | |
460 | { | |
461 | if(refmultiplicity>fUpMulcut) | |
462 | return; | |
463 | } | |
464 | ||
465 | ||
466 | fMultESDK->Fill(refmultiplicity); | |
467 | ||
468 | ||
469 | ||
10eaad41 | 470 | |
7ccf0419 | 471 | Printf("MC particles: %d", mcEvent->GetNumberOfTracks()); |
10eaad41 | 472 | |
10eaad41 | 473 | AliStack* stack=mcEvent->Stack(); |
474 | ||
475 | //primary tracks in MC | |
476 | Int_t nPrim = stack->GetNprimary(); | |
477 | // | |
a0271296 | 478 | |
479 | // loop over mc particles | |
480 | ||
481 | // variable to count tracks | |
482 | Int_t nMCTracks = 0; | |
483 | Int_t nMCKinkKs = 0; | |
484 | ||
485 | // 15/2/12 OK for (Int_t iMc = 0; iMc < nPrim; iMc++) | |
486 | //for (Int_t iMc = 0; iMc < stack->GetNtrack(); iMc++) | |
487 | for (Int_t iMc = 0; iMc < mcEvent->GetNumberOfTracks(); iMc++) | |
488 | { | |
489 | ||
490 | TParticle* particle = stack->Particle(iMc); | |
491 | ||
492 | if (!particle) | |
493 | { | |
494 | // AliDebug(AliLog::kError, Form("UNEXPECTED: particle with label %d not found in stack (mc loop).", iMc)); | |
495 | continue; | |
496 | } | |
497 | // keep only primaries | |
498 | if (!stack->IsPhysicalPrimary(iMc)) continue; | |
499 | ||
500 | // | |
501 | ||
502 | Double_t ptK = particle->Pt(); | |
503 | ||
504 | if( ptK <0.200) continue; // 12/2/2012 | |
505 | // | |
b7e98ef4 | 506 | Double_t EtaMC = particle->Eta(); |
507 | if ((TMath::Abs(EtaMC)) > 0.8) continue ; // 27/11/2014 | |
a0271296 | 508 | |
509 | Float_t charg=0; | |
510 | Float_t code = particle->GetPdgCode(); | |
511 | Int_t mcProcess=-1011; | |
512 | //---------------------------------------kaon selection | |
513 | if ((code==321)||(code==-321)){ | |
514 | ||
515 | ||
516 | Double_t etracKMC= TMath::Sqrt(particle->P() *particle->P() + 0.493677 *0.493677 ); | |
517 | Double_t rapidiKMC = 0.5 * (TMath::Log( (etracKMC +particle->Pz())/( etracKMC-particle->Pz() )) ) ; | |
518 | ||
2acbcadf | 519 | //if ( TMath::Abs( rapidiKMC) > 0.7) continue; // |
b7e98ef4 | 520 | if ( (TMath::Abs( rapidiKMC)) > fRapiK ) continue; // |
a0271296 | 521 | frapidKMC ->Fill(rapidiKMC) ; //18/feb rapiddistr of PDG kink ESD kaons |
522 | ||
523 | ||
524 | // maximum angle vrs momentum | |
525 | // Double_t maxDecAnKmu=f1->Eval(particle->P(), 0.,0.,0.); | |
526 | // fmaxAngMomKmu->Fill(particle->P() , maxDecAnKmu); | |
527 | ||
528 | if(code > 0 ) charg =1; | |
529 | if(code < 0 ) charg =-1; | |
530 | Float_t chargPt= charg*ptK; | |
531 | ||
532 | fptKMC->Fill(ptK); | |
533 | fSignPtGen->Fill(chargPt);// kaon gensign pt | |
534 | if (charg==1 ) fPtKPlMC->Fill( ptK ); | |
535 | if ( charg==-1) fPtKMnMC->Fill( ptK ); | |
536 | // primary vertex | |
537 | // Double_t mVx=particle->Vx(); | |
5220a87d | 538 | // Double_t mVy=particle->Vy(); |
a0271296 | 539 | Double_t mVz=particle->Vz(); |
540 | // 25/11/2012 ???????back 10/1/2013 | |
541 | TClonesArray* trArray=0; | |
542 | TParticle* tempParticle=0; | |
543 | ||
544 | TVector3 DecayMomentumK(0,0,0); | |
545 | Float_t lengthKMC=0; | |
546 | if (mcEvent->GetParticleAndTR(iMc, tempParticle, trArray) != -1) { | |
547 | AliTrackReference* MCtrackReference = static_cast<AliTrackReference*>(trArray->Last()); | |
548 | lengthKMC = MCtrackReference->GetLength(); | |
549 | ||
550 | // DecayMomentumK.SetXYZ(MCtrackReference->Px(), MCtrackReference->Py(), MCtrackReference->Pz()); | |
551 | } | |
552 | flenTrRef ->Fill(lengthKMC); | |
553 | flifetime ->Fill( (lengthKMC*0.493667 /particle->P())); // 19/7 | |
554 | if ((lengthKMC>100.)&& (lengthKMC<300.) ) flifeSmall->Fill( (lengthKMC*0.493667/particle->P() ) ); | |
555 | ||
556 | Int_t nMCKpi =0; | |
557 | Int_t mcProc4 =0; | |
558 | Int_t mcProc13=0; | |
60f5d945 | 559 | Float_t radiusD=0; |
a0271296 | 560 | // Double_t lengthK =0.; |
561 | Double_t LengthK =0.; | |
562 | Double_t lenYuri =0.; | |
60f5d945 | 563 | Float_t MCQt =0.; |
b7e98ef4 | 564 | // Double_t MCQt3[2]; |
a0271296 | 565 | Int_t firstD=particle->GetFirstDaughter(); |
566 | Int_t lastD=particle->GetLastDaughter(); | |
567 | ||
568 | if( (lastD<=0) || (firstD<=0) ) continue; | |
569 | ||
570 | if ( lastD > mcEvent->GetNumberOfTracks() ) continue; | |
571 | if (firstD > mcEvent->GetNumberOfTracks() ) continue; | |
572 | // 25/112012 | |
573 | // TClonesArray* trArray=0; | |
574 | // TParticle* tempParticle=0; | |
575 | // TVector3 DecayMomentumK(0,0,0); | |
576 | //loop on secondaries | |
577 | for (Int_t k=firstD;k<=lastD;k++) { | |
578 | if ( k > 0 ) { | |
579 | TParticle* daughter1=stack->Particle(k); // 27/8 | |
580 | Float_t dcode = daughter1->GetPdgCode(); | |
581 | ||
582 | // mother momentum trackrefs and QtMC // 17/9/2010, test Feb 2011 | |
583 | if (mcEvent->GetParticleAndTR(iMc, tempParticle, trArray) != -1) { | |
584 | AliTrackReference* MCtrackReference = static_cast<AliTrackReference*>(trArray->Last()); | |
585 | DecayMomentumK.SetXYZ(MCtrackReference->Px(), MCtrackReference->Py(), MCtrackReference->Pz()); | |
586 | } | |
587 | const TVector3 MCP3d(daughter1->Px(), daughter1->Py(), daughter1->Pz()); //MC daughter's momentum | |
588 | MCQt = MCP3d.Perp(DecayMomentumK); //MC daughter's transverse momentum in mother's frame | |
589 | // | |
590 | Double_t MCKinkAngle = TMath::ASin(MCQt/daughter1->P() ); | |
591 | Double_t MCKinkAngle2= TMath::RadToDeg() * MCKinkAngle; // in degrees | |
592 | // fmaxAngMomKmu->Fill(particle->P() , MCKinkAngle2);// MC | |
593 | // | |
594 | mcProcess=daughter1->GetUniqueID(); | |
595 | radiusD=daughter1->R(); | |
596 | // secondary vertex | |
5220a87d | 597 | // Double_t hVx=daughter1->Vx(); |
598 | // Double_t hVy=daughter1->Vy(); | |
a0271296 | 599 | Double_t hVz=daughter1->Vz(); |
600 | ||
601 | LengthK = TMath::Sqrt( radiusD*radiusD + ( mVz-hVz) * (mVz-hVz) ); // 19/7/2010 mss | |
602 | ||
603 | // lengthK = TMath::Sqrt( (mVx -hVx)*( mVx -hVx) + ( mVy -hVy)* (mVy -hVy ) + ( mVz -hVz ) * (mVz -hVz) ); | |
604 | lenYuri = (TMath::Abs( mVz-hVz))* (TMath::Sqrt( 1.+ ( ptK*ptK)/ (particle->Pz() * particle->Pz()) )) ; | |
605 | ||
606 | if(mcProcess==13) { | |
607 | mcProc13++; | |
608 | ||
609 | if(mcProc13==1) flifeInt ->Fill( (lengthKMC*0.493667 /particle->P())); // 19/7 | |
610 | ||
611 | // if( (charg==1)&&(mcProc13==1 )) fradIntKP->Fill(daughter1->R()); | |
612 | ||
613 | // if( ( charg ==-1)&&(mcProc13==1)) fradIntKM->Fill(daughter1->R()); | |
614 | } | |
615 | ||
616 | ||
617 | // | |
618 | if (mcProcess==4) { | |
619 | ||
620 | mcProc4++; | |
621 | if ( mcProc4==1) { | |
622 | // 10/1/13 if( (radiusD >120.)&&( radiusD< 210.) ) { | |
623 | flifeYuri ->Fill( (lenYuri *0.493667 /particle->P())); // 19/7 | |
624 | flifetiMCK->Fill(LengthK); | |
625 | flenYuri ->Fill(lenYuri); | |
626 | // 10/1/13 } | |
627 | ||
628 | // flengthMCK->Fill(lengthK); // | |
629 | // flifetime ->Fill( (lengthK*0.493667 /particle->P())); // 19/7 | |
630 | flengthMCK->Fill(lengthKMC); // | |
631 | flifetime ->Fill( (lengthKMC*0.493667 /particle->P())); // 19/7 | |
632 | fradPtRapMC->Fill( radiusD, 1./ptK, rapidiKMC); // systematics 26/8 | |
633 | } | |
634 | ||
5220a87d | 635 | |
a0271296 | 636 | // |
637 | if ( ( ( code==321 )&&( dcode ==-13 ))||( ( code ==-321)&&(dcode== 13) ) || ( ( code==321 )&&( dcode ==-11 )) || ( (code ==-321)&&(dcode== 11))) { | |
638 | flifetim2 ->Fill( (lengthKMC*0.493667 /particle->P())); | |
639 | // 8/2/2013allgh radius if( (radiusD >120.)&&( radiusD< 210.) ) | |
640 | // 14/2/13 if( (radiusD >130.)&&( radiusD< 200.) ) | |
641 | if( (radiusD >fKinkRadLow )&&( radiusD< fKinkRadUp) ) | |
642 | fmaxAngMomKmu->Fill(particle->P() , MCKinkAngle2);// MC | |
643 | } | |
644 | ||
645 | if (( (TMath::Abs(code)==321 )&&(TMath::Abs(dcode) ==211 ))&& ( mcProc4<2)) flifetim2->Fill( lengthKMC *0.493667 /particle->P()) ;//19/7 | |
646 | ||
5220a87d | 647 | // test feb 2013 if ((TMath::Abs(hVz)<0.5) || (TMath::Abs(hVz )>225)) continue; |
a0271296 | 648 | /// inside radius region ---------------------------------------------- |
649 | if(MCKinkAngle2 < 2.) continue; // as in ESD | |
650 | // ====== 8/2/13 if (((daughter1->R())>120)&&((daughter1->R())<210)&& (MCQt>0.120) ){ | |
886c7202 | 651 | if (((daughter1->R())> fKinkRadLow )&&((daughter1->R())< fKinkRadUp )&& (MCQt>fLowQt) ){ |
a0271296 | 652 | |
653 | if ( ( code==321 )&&( dcode ==-13 )) { | |
654 | fradPtRapDC->Fill( radiusD, 1./ptK, rapidiKMC); // systematics 26/8 | |
655 | fradMC->Fill(daughter1->R()); | |
656 | fQtKMuMC ->Fill(MCQt );//to muon | |
657 | fgenPtEtR->Fill( ptK );//to muon | |
658 | fgenPtEtRP->Fill( ptK );//to muon | |
659 | fMCEtaKaon ->Fill(rapidiKMC );//to muon | |
660 | fSignPtEtaMC->Fill(ptK,rapidiKMC );//to muon | |
661 | fSignPtMC->Fill(ptK);//to muon | |
662 | flifetiMCK->Fill( lenYuri*0.4933667/particle->P() ); | |
663 | // flifetiMCK->Fill( LengthK*0.4933667/ ptK | |
664 | } // positive kaon | |
665 | if ( ( code ==-321)&&(dcode== 13)){ | |
666 | fgenPtEtR->Fill( ptK );//to muon | |
667 | fQtKMuMC ->Fill(MCQt );//to muon | |
668 | fgenPtEtRN->Fill(ptK); // | |
669 | fSignPtEtaMC->Fill(chargPt,rapidiKMC );//to muon | |
670 | fMCEtaKaon ->Fill(rapidiKMC );//to muon | |
671 | fradPtRapDC->Fill( radiusD, 1./ptK, rapidiKMC); // systematics 26/8 | |
672 | fradMC->Fill(daughter1->R()); | |
673 | fSignPtMC->Fill(chargPt);//to muon | |
674 | flifetiMCK->Fill( lenYuri*0.4933667/particle->P() ) ; | |
675 | // flifetiMCK->Fill( LengthK*0.4933667/ ptK ) ; | |
676 | ||
677 | } // negative code | |
678 | // if (( ( code==321 )&& ( dcode ==211 ))|| (( code == -321 )&& ( dcode ==-211))) fgenPtEtR->Fill( ptK );//to pion | |
679 | if ( ( code==321 )&&( dcode ==-11 )) { | |
680 | fQtKElMC ->Fill(MCQt );//to muon | |
681 | fgenPtEtR->Fill( ptK );//to electron | |
682 | fgenPtEtRP->Fill( ptK );//to muon | |
683 | fMCEtaKaon ->Fill(rapidiKMC );//to electron | |
684 | fradPtRapDC->Fill( radiusD, 1./ptK, rapidiKMC); // systematics 26/8 | |
685 | fradMC->Fill(daughter1->R()); | |
686 | fSignPtEtaMC->Fill(ptK,rapidiKMC );//to electron | |
687 | fSignPtMC->Fill(ptK); | |
688 | flifetiMCK->Fill( lenYuri*0.4933667/particle->P() ); | |
689 | // flifetiMCK->Fill( LengthK*0.4933667/ ptK ); | |
690 | ||
691 | } // positive kaon | |
692 | if ( ( code ==-321)&&(dcode== 11)){ | |
693 | fgenPtEtR->Fill( ptK );//to electron | |
694 | fQtKElMC ->Fill(MCQt );//to muon | |
695 | fgenPtEtRN->Fill(ptK); // | |
696 | fSignPtEtaMC->Fill(chargPt,rapidiKMC );//to electron | |
697 | fMCEtaKaon ->Fill(rapidiKMC );//to electron | |
698 | fradPtRapDC->Fill( radiusD, 1./ptK, rapidiKMC); // systematics 26/8 | |
699 | fradMC->Fill(daughter1->R()); | |
700 | fSignPtMC->Fill(chargPt);//to electron | |
701 | flifetiMCK->Fill( lenYuri*0.4933667/particle->P() ); | |
702 | // flifetiMCK->Fill( LengthK*0.4933667/ ptK ); | |
703 | ||
704 | } // negative code | |
705 | ||
706 | if (( ( code==321 )&& ( dcode ==211 ))|| (( code == -321 )&& ( dcode ==-211))) nMCKpi++ ; | |
707 | if (( ( code==321 )&& ( dcode ==211 ))|| (( code == -321 )&& ( dcode ==-211))) { | |
708 | if ( nMCKpi > 0) { | |
b7e98ef4 | 709 | // MCQt3[nMCKpi-1] = MCQt ;// k to pipipi |
a0271296 | 710 | } |
711 | } | |
712 | nMCKinkKs++; | |
713 | } | |
714 | ||
715 | }// decay | |
716 | } // positive k | |
717 | }// daughters | |
718 | ||
719 | ||
720 | ||
721 | if ( code > 0) { | |
722 | if( nMCKpi == 1) fgenPtEtR->Fill(ptK); // k to pipi | |
723 | if( nMCKpi == 1) fgenPtEtRP->Fill(ptK); // k to pipi | |
724 | if( nMCKpi == 1) fSignPtEtaMC->Fill(ptK,rapidiKMC ); // k to pipi | |
725 | if( nMCKpi == 1) fSignPtMC->Fill(ptK); // k to pipi | |
726 | if( nMCKpi == 1) fMCEtaKaon->Fill(rapidiKMC ); // k to pipi | |
727 | if(nMCKpi==1) fradMC->Fill(radiusD ); | |
728 | if(nMCKpi==1) fQtKPiMC->Fill( MCQt ); | |
729 | if (nMCKpi==1) fradPtRapDC->Fill( radiusD, 1./ptK, rapidiKMC); // systematics 26/8 | |
730 | if(nMCKpi==1) flifetiMCK->Fill( lenYuri*0.4933667/particle->P() ); | |
731 | // if(nMCKpi==1) flifetiMCK->Fill( LengthK*0.4933667/ ptK ); | |
732 | } //positive kaon | |
733 | // | |
734 | if ( code < 0) { | |
735 | ||
736 | if( nMCKpi == 1) fgenPtEtR->Fill( ptK ); // k to pipi | |
737 | if( nMCKpi == 1) fgenPtEtRN->Fill(ptK); // k to pipi | |
738 | if( nMCKpi == 1) fSignPtEtaMC->Fill(chargPt,rapidiKMC ); // k to pipi | |
739 | if( nMCKpi == 1) fSignPtMC->Fill(chargPt); // k to pipi | |
740 | if( nMCKpi == 1) fMCEtaKaon->Fill(rapidiKMC ); // k to pipi | |
741 | if(nMCKpi==1) fradMC->Fill(radiusD ); | |
742 | if(nMCKpi==1) fQtKPiMC->Fill( MCQt ); | |
743 | if( nMCKpi== 1) fradPtRapDC->Fill( radiusD, 1./ptK, rapidiKMC); // systematics 26/8 | |
744 | if(nMCKpi==1) flifetiMCK->Fill( lenYuri*0.4933667/particle->P() ); | |
745 | // if(nMCKpi==1) flifetiMCK->Fill( LengthK*0.4933667/ ptK ); | |
746 | ||
747 | } //negative K | |
748 | ||
749 | } /// kaons loop | |
750 | ||
751 | ||
752 | ||
753 | nMCTracks++; | |
754 | }// end of mc particle | |
755 | ||
756 | // Phys sel 2012 EFF calculation | |
757 | Bool_t isSelected = | |
758 | ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kMB; | |
759 | ||
760 | if ( isSelected ==kFALSE) return; // 24/6/11 apo MF | |
761 | // | |
762 | fMultiplMC->Fill(nPrim); | |
763 | //======================================================================================= | |
764 | // main vertex selection | |
92adf4f6 | 765 | const AliESDVertex *vertex=GetEventVertex(esd); |
10eaad41 | 766 | if(!vertex) return; |
a0271296 | 767 | /// |
768 | // fMultiplMC->Fill(nPrim); | |
10eaad41 | 769 | // |
a0271296 | 770 | /* / apo Alexander Feb 2012 |
771 | AliESDpid *fESDpid = new AliESDpid(); | |
772 | if (!fESDpid) fESDpid = | |
773 | ((AliESDInputHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->GetESDpid(); | |
774 | */ ///======================================================================== | |
775 | // apo Eftihi | |
776 | if(!fPIDResponse) { | |
777 | AliAnalysisManager *man = AliAnalysisManager::GetAnalysisManager(); | |
778 | AliInputEventHandler* inputHandler = | |
779 | (AliInputEventHandler*)(man->GetInputEventHandler()); | |
780 | fPIDResponse = inputHandler->GetPIDResponse(); | |
781 | } | |
782 | ||
783 | ||
784 | Double_t vpos[3]; | |
785 | vertex->GetXYZ(vpos); | |
10eaad41 | 786 | fZpr->Fill(vpos[2]); |
a0271296 | 787 | if ( TMath::Abs( vpos[2]) > 10. ) return; /// it is applied on ESD and generation |
10eaad41 | 788 | |
789 | Double_t vtrack[3], ptrack[3]; | |
790 | ||
791 | ||
92adf4f6 | 792 | // Int_t nESDTracK = 0; |
10eaad41 | 793 | |
92adf4f6 | 794 | Int_t nGoodTracks = esd->GetNumberOfTracks(); |
a0271296 | 795 | // |
10eaad41 | 796 | fESDMult->Fill(nGoodTracks); |
92adf4f6 | 797 | |
10eaad41 | 798 | // |
a0271296 | 799 | Double_t nsigmall = 100.0; |
800 | Double_t nsigma = 100.0; | |
b7e98ef4 | 801 | // Double_t nsigmaPion =-100.0; |
a0271296 | 802 | Double_t nsigmaPi=-100.0; |
803 | // Double_t dEdxDauMC = 0.0; | |
804 | ||
805 | // | |
806 | for (Int_t iTrack = 0; iTrack < esd->GetNumberOfTracks(); iTrack++) { | |
807 | ||
808 | AliESDtrack* trackD = esd->GetTrack(iTrack); | |
809 | if (!trackD) { | |
810 | Printf("ERROR: Could not receive track %d", iTrack); | |
811 | continue; | |
812 | } | |
813 | ||
5220a87d | 814 | // Int_t indexKinkDau=trackD->GetKinkIndex(0); |
a0271296 | 815 | // daughter kink |
b7e98ef4 | 816 | // nsigmaPion = (fPIDResponse->NumberOfSigmasTPC(trackD , AliPID::kPion));// 26/10 eftihis |
a0271296 | 817 | // nsigmaPion= (fESDpid->NumberOfSigmasTPC(trackD,AliPID::kPion)); |
818 | // 22/11/12 if((indexKinkDau >0)&& (nsigmaPion>1.2)) fTPCSgnlKinkDau->Fill(trackD->P(), (trackD->GetTPCsignal() ) ) ; // daughter kink | |
819 | //if((indexKinkDau >0)) fTPCSgnlKinkDau->Fill(trackD->P(), (trackD->GetTPCsignal() ) ) ; // daughter kink | |
820 | // if((indexKinkDau >0)) dEdxDauMC = trackD->GetTPCsignal() ; // daughter kink | |
821 | } | |
822 | ||
823 | // loop on ESD tracks | |
824 | ||
825 | // | |
92adf4f6 | 826 | for (Int_t iTracks = 0; iTracks < esd->GetNumberOfTracks(); iTracks++) { |
92adf4f6 | 827 | |
828 | AliESDtrack* track = esd->GetTrack(iTracks); | |
10eaad41 | 829 | if (!track) { |
7ccf0419 | 830 | Printf("ERROR: Could not receive track %d", iTracks); |
10eaad41 | 831 | continue; |
832 | } | |
833 | ||
834 | ||
a0271296 | 835 | |
836 | // sigmas | |
837 | nsigmall = (fPIDResponse->NumberOfSigmasTPC(track, AliPID::kKaon)); | |
838 | // nsigma = TMath::Abs(fESDpid->NumberOfSigmasTPC(track,AliPID::kKaon)); | |
839 | // nsigmall = (fESDpid->NumberOfSigmasTPC(track,AliPID::kKaon)); | |
840 | nsigma = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(track, AliPID::kKaon)); | |
841 | ||
842 | //================================== | |
843 | Float_t nCrossedRowsTPC = track->GetTPCClusterInfo(2,1); | |
844 | Float_t ratioCrossedRowsOverFindableClustersTPC = 1.0; | |
845 | if (track->GetTPCNclsF()>0) { | |
846 | ratioCrossedRowsOverFindableClustersTPC = nCrossedRowsTPC / track->GetTPCNclsF(); | |
847 | fRatioCrossedRows->Fill(ratioCrossedRowsOverFindableClustersTPC); | |
848 | } | |
849 | ||
10eaad41 | 850 | fHistPt->Fill(track->Pt()); |
851 | ||
92adf4f6 | 852 | |
a0271296 | 853 | Double_t tpcNCl = track->GetTPCclusters(0); // |
854 | //Int_t tpcNCl = track->GetTPCclusters(0); // | |
855 | Double_t tpcSign = track->GetSign(); // | |
856 | ||
857 | Int_t label = track->GetLabel(); | |
858 | ||
92adf4f6 | 859 | label = TMath::Abs(label); |
a0271296 | 860 | |
861 | if(label > mcEvent->GetNumberOfTracks()) continue; // | |
862 | ||
92adf4f6 | 863 | TParticle * part = stack->Particle(label); |
864 | if (!part) continue; | |
865 | // loop only on Primary tracks | |
a0271296 | 866 | if (label > nPrim) continue; /// primary tracks only ,21/3/10 EFF study |
92adf4f6 | 867 | |
a0271296 | 868 | // pt cut |
869 | if ( (track->Pt())<.200)continue; //12/2/2012 ------------------------------------------- | |
10eaad41 | 870 | |
a0271296 | 871 | UInt_t status=track->GetStatus(); |
10eaad41 | 872 | |
a0271296 | 873 | if((status&AliESDtrack::kITSrefit)==0) continue; |
874 | if((status&AliESDtrack::kTPCrefit)==0) continue; //6 feb | |
875 | // if((track->GetTPCchi2()/track->GetTPCclusters(0))>3.8) continue; | |
876 | //if((track->GetTPCchi2()/track->GetTPCclusters(0))>4.5) continue; // test 10/3/2012 | |
877 | if((track->GetTPCchi2()/track->GetTPCclusters(0))>4.0) continue; // test 10/3/2012 | |
10eaad41 | 878 | |
879 | Double_t extCovPos[15]; | |
880 | track->GetExternalCovariance(extCovPos); | |
a0271296 | 881 | // |
10eaad41 | 882 | |
883 | ||
884 | track->GetXYZ(vtrack); | |
885 | fXvYv->Fill(vtrack[0],vtrack[1]); | |
92adf4f6 | 886 | fZvYv->Fill(vtrack[0],vtrack[2]); |
887 | fZvXv->Fill(vtrack[1],vtrack[2]); | |
10eaad41 | 888 | |
889 | // track momentum | |
890 | track->GetPxPyPz(ptrack); | |
891 | ||
892 | TVector3 trackMom(ptrack[0],ptrack[1],ptrack[2]); | |
893 | ||
a0271296 | 894 | Double_t etracK= TMath::Sqrt(trackMom.Mag()*trackMom.Mag() + 0.493677 *0.493677 ); |
895 | Double_t rapiditK = 0.5 * (TMath::Log( (etracK + ptrack[2] ) / ( etracK - ptrack[2]) )) ; | |
10eaad41 | 896 | Double_t trackEta=trackMom.Eta(); |
a0271296 | 897 | // Double_t trMoment= trackMom.Mag(); |
898 | Double_t trackPt = track->Pt(); | |
10eaad41 | 899 | |
10eaad41 | 900 | |
901 | Float_t bpos[2]; | |
902 | Float_t bCovpos[3]; | |
903 | track->GetImpactParameters(bpos,bCovpos); | |
904 | ||
905 | if (bCovpos[0]<=0 || bCovpos[2]<=0) { | |
7ccf0419 | 906 | Printf("Estimated b resolution lower or equal zero!"); |
10eaad41 | 907 | bCovpos[0]=0; bCovpos[2]=0; |
908 | } | |
909 | ||
910 | Float_t dcaToVertexXYpos = bpos[0]; | |
5220a87d | 911 | // Float_t dcaToVertexZpos = bpos[1]; |
10eaad41 | 912 | |
a0271296 | 913 | //fRpr->Fill(dcaToVertexZpos); |
914 | fRpr->Fill(dcaToVertexXYpos); | |
915 | ||
916 | //if((TMath::Abs(dcaToVertexXYpos) >0.3)||(TMath::Abs(dcaToVertexZpos)>2.5)) continue; // 22/7/11 | |
917 | // if((TMath::Abs(dcaToVertexXYpos) >0.24)||(TMath::Abs(dcaToVertexZpos)>2.5)) continue; // 12/2/13 | |
918 | if (!fMaxDCAtoVtxCut->AcceptTrack(track)) continue; | |
10eaad41 | 919 | |
10eaad41 | 920 | |
921 | // cut on eta | |
a0271296 | 922 | // if( (TMath::Abs(trackEta )) > 0.9 ) continue; |
b7e98ef4 | 923 | // if( (TMath::Abs(rapiditK )) > 0.7 ) continue; //// rapid K, Feb 20 |
924 | if( (TMath::Abs(rapiditK )) > fRapiK ) continue; //// rapid K, Feb 20 | |
10eaad41 | 925 | fHistPtESD->Fill(track->Pt()); |
b7e98ef4 | 926 | if( (TMath::Abs(trackEta )) > 0.8 ) continue; |
10eaad41 | 927 | |
928 | // Add Kink analysis | |
929 | ||
930 | Int_t indexKinkPos=track->GetKinkIndex(0); | |
a0271296 | 931 | // loop on mother kinks |
10eaad41 | 932 | if(indexKinkPos<0){ |
933 | fPtKink->Fill(track->Pt()); /// pt from track | |
934 | ||
a0271296 | 935 | fRatioCrossedRowsKink->Fill(ratioCrossedRowsOverFindableClustersTPC); |
936 | ||
10eaad41 | 937 | // select kink class |
938 | ||
92adf4f6 | 939 | AliESDkink *kink=esd->GetKink(TMath::Abs(indexKinkPos)-1); |
10eaad41 | 940 | // |
941 | ||
a0271296 | 942 | // DCA kink |
943 | Double_t Dist2 = kink->GetDistance(); | |
944 | // fDCAkink->Fill( Dist2 ); | |
945 | // | |
10eaad41 | 946 | Int_t eSDfLabel1=kink->GetLabel(0); |
947 | TParticle *particle1= stack->Particle(TMath::Abs(eSDfLabel1)); | |
948 | Int_t code1= particle1->GetPdgCode(); | |
a0271296 | 949 | // Int_t mcProcssMo= particle1->GetUniqueID(); |
10eaad41 | 950 | |
951 | Int_t eSDfLabeld=kink->GetLabel(1); | |
952 | TParticle *particled= stack->Particle(TMath::Abs(eSDfLabeld)); | |
953 | Int_t dcode1= particled->GetPdgCode(); | |
a0271296 | 954 | Int_t mcProcssDa= particled->GetUniqueID(); |
955 | // | |
956 | // loop on MC daugthres for 3Pi 24/9/2010 | |
957 | Int_t nESDKpi =0; | |
958 | if(mcProcssDa==4) { | |
959 | Int_t firstDa=particle1->GetFirstDaughter(); | |
960 | Int_t lastDa=particle1->GetLastDaughter(); | |
961 | ||
962 | if( (lastDa<=0) || (firstDa<=0) ) continue; | |
963 | ||
964 | if ( lastDa > mcEvent->GetNumberOfTracks() ) continue; | |
965 | if (firstDa > mcEvent->GetNumberOfTracks() ) continue; | |
966 | //loop on secondaries | |
967 | for (Int_t kk=firstDa;kk<=lastDa;kk++) { | |
968 | if ( kk > 0 ) { | |
969 | TParticle* daughter3=stack->Particle(kk); // 24/9 | |
970 | Float_t dcode3= daughter3->GetPdgCode(); | |
971 | if (( ( code1==321 )&& ( dcode3==211 ))|| (( code1 == -321 )&& ( dcode3==-211))) nESDKpi++ ; | |
972 | } | |
973 | } | |
974 | } | |
975 | //---------------------------edw telos 9/2010 | |
976 | Double_t hVzdau=particled->Vz(); | |
10eaad41 | 977 | |
978 | const TVector3 motherMfromKink(kink->GetMotherP()); | |
979 | const TVector3 daughterMKink(kink->GetDaughterP()); | |
980 | Float_t qT=kink->GetQt(); | |
a0271296 | 981 | // Float_t motherPt=motherMfromKink.Pt(); |
982 | // Kink mother momentum | |
5220a87d | 983 | // Double_t trMomTPCKink=motherMfromKink.Mag(); |
a0271296 | 984 | // TPC mother momentun |
5220a87d | 985 | // Double_t trMomTPC=track->GetTPCmomentum(); |
a0271296 | 986 | // Float_t etaMother=motherMfromKink.Eta(); |
987 | ||
10eaad41 | 988 | |
10eaad41 | 989 | fHistQtAll->Fill(qT) ; // Qt distr |
a0271296 | 990 | |
991 | const TVector3 vposKink(kink->GetPosition()); | |
992 | fPosiKink ->Fill( vposKink[0], vposKink[1] ); | |
993 | ||
994 | Double_t dxKink = vpos[0]-vposKink[0], dyKink=vpos[1]-vposKink[1], dzKink=vpos[2]-vposKink[2] ; | |
995 | // Double_t dzKink=vpos[2]-vposKink[2] ; /// ?? | |
996 | Double_t lifeKink= TMath::Sqrt( dxKink*dxKink + dyKink*dyKink + dzKink*dzKink ) ; | |
997 | ||
998 | Double_t tanLamda = track-> GetTgl() ;// ?? | |
999 | if (tanLamda ==0 ) continue;// ?? | |
1000 | Double_t lenHelx = (TMath::Abs(dzKink ) ) *(TMath::Sqrt( 1. + tanLamda *tanLamda ) ) / ( TMath::Abs( tanLamda)) ;// ?? | |
1001 | ||
1002 | ||
1003 | ||
10eaad41 | 1004 | |
92adf4f6 | 1005 | Float_t kinkAngle=TMath::RadToDeg()*kink->GetAngle(2); |
1006 | ||
10eaad41 | 1007 | // fake kinks, small Qt and small kink angle |
a0271296 | 1008 | if(( kinkAngle<1.)) fHistQt1 ->Fill(qT) ; // Qt distr |
1009 | // | |
1010 | if( ( (TMath::Abs(code1)==321)&&(TMath::Abs(dcode1)==321))) fFakeKPi->Fill(track->Pt()); | |
1011 | if( ( (TMath::Abs(code1)==211)&&(TMath::Abs(dcode1)==211))) fFakepipi->Fill(track->Pt()); | |
1012 | // | |
10eaad41 | 1013 | |
10eaad41 | 1014 | //remove the double taracks |
a0271296 | 1015 | if( (kinkAngle<2.) ) continue; // test 15/7 2010 , it removes 3 from 10000 good Kaons |
1016 | // BG ?????============== | |
1017 | if ( TMath::Abs(vposKink[2]) > 225. ) continue ; | |
1018 | if ( TMath::Abs(vposKink[2]) < 0.5 ) continue ; | |
7ccf0419 | 1019 | |
a0271296 | 1020 | fPtCut1 ->Fill(trackPt ); |
1021 | fChi2NclTPC->Fill( (track->GetTPCchi2() ) , tpcNCl ); | |
1022 | ||
1023 | Float_t signPt= tpcSign*trackPt; | |
10eaad41 | 1024 | // |
5220a87d | 1025 | if ( (TMath::Abs(code1)==211)&&(TMath::Abs(dcode1)==13)) |
1026 | fRadiusPtPion->Fill( kink->GetR(), track->Pt()); // | |
10eaad41 | 1027 | |
5220a87d | 1028 | if( ( (TMath::Abs(code1)==321)&&(TMath::Abs(dcode1)==13))|| |
1029 | ( (TMath::Abs(code1)==321)&&(TMath::Abs(dcode1)==11)) || | |
1030 | ( (TMath::Abs(code1)==321)&&(TMath::Abs(dcode1)==211)) ) { | |
1031 | fRadiusPtKaon->Fill( kink->GetR(), track->Pt()); // | |
1032 | } | |
1033 | // | |
a0271296 | 1034 | // ======8/1/13 if((kink->GetR()>120.)&&(kink->GetR()<210.)&&(TMath::Abs(rapiditK)<0.7)&&(label<nPrim)) { |
60f5d945 | 1035 | // allagh dec'14 if((kink->GetR()> fKinkRadLow )&&(kink->GetR()< fKinkRadUp )&&(TMath::Abs(rapiditK)<0.7)&&(label<nPrim)) { |
1036 | if((kink->GetR()> fKinkRadLow )&&(kink->GetR()< fKinkRadUp )&&(TMath::Abs(rapiditK)<fRapiK)&&(label<nPrim)) { | |
a0271296 | 1037 | if( ( (TMath::Abs(code1)==321)&&(TMath::Abs(dcode1)==13))) fQtKMu->Fill(qT); |
1038 | if ( (TMath::Abs(code1)==321)&&(TMath::Abs(dcode1)==11)) fQtKEl->Fill(qT); | |
1039 | if ( (TMath::Abs(code1)==321)&&(TMath::Abs(dcode1)==211)) fQtKPi->Fill(qT); | |
1040 | if (( nESDKpi>1) && ( ((code1)==321)&&((dcode1)==211)) ) fQtK3PiP->Fill(qT); | |
1041 | if (( nESDKpi>1) && ( ((code1)==-321)&&((dcode1)==-211)) ) fQtK3PiM->Fill(qT); | |
92adf4f6 | 1042 | if( ( (TMath::Abs(code1)==321)&&(TMath::Abs(dcode1)==13))|| |
1043 | ( (TMath::Abs(code1)==321)&&(TMath::Abs(dcode1)==11)) || | |
1044 | ( (TMath::Abs(code1)==321)&&(TMath::Abs(dcode1)==211)) ) { | |
5220a87d | 1045 | if(qT>fLowQt) fHistPtKPDG->Fill(track->Pt()); // ALL KAONS (pdg) inside ESD kink sample |
1046 | if(qT>fLowQt ) { | |
1047 | if(code1>0.) fHiPtKPDGP->Fill(trackPt ); // 26/feb // ALL KAONS (pdg) inside ESD kink sample | |
1048 | if(code1<0.) fHiPtKPDGN->Fill( trackPt ); // 26/feb // ALL KAONS (pdg) inside ESD kink sample | |
a0271296 | 1049 | } |
1050 | fHistEta->Fill(trackEta) ; // Eta distr of PDG kink ESD kaons | |
1051 | frapidESDK->Fill(rapiditK) ; //18/feb rapiddistr of PDG kink ESD kaons | |
5220a87d | 1052 | if( qT > fLowQt ) fHistQt2->Fill(qT); // PDG ESD kaons |
1053 | fRadiusPt->Fill( kink->GetR(), track->Pt()); // | |
92adf4f6 | 1054 | } |
1055 | } | |
10eaad41 | 1056 | |
a0271296 | 1057 | |
1058 | //Double_t maxDecAngKmu=f1->Eval(motherMfromKink.Mag(),0.,0.,0.); | |
1059 | Double_t maxDecAngKmu=f1->Eval(track->P(), 0.,0.,0.); | |
1060 | Double_t maxDecAngpimu=f2->Eval(track->P(), 0.,0.,0.); | |
10eaad41 | 1061 | // two dimensional plot |
a0271296 | 1062 | if(TMath::Abs(code1)==321) fAngMomK->Fill(track->P(), kinkAngle); |
1063 | if(TMath::Abs(code1)==211) fAngMomPi->Fill( track->P(), kinkAngle); | |
1064 | //_______ | |
1065 | ||
10eaad41 | 1066 | // |
1067 | // invariant mass of mother track decaying to mu | |
1068 | Float_t energyDaughterMu=TMath::Sqrt(daughterMKink.Mag()*daughterMKink.Mag()+0.105658*0.105658); | |
a0271296 | 1069 | Float_t energyDaughterPi=TMath::Sqrt(daughterMKink.Mag()*daughterMKink.Mag()+0.139570*0.139570); |
1070 | Float_t energyDaughterKa=TMath::Sqrt(daughterMKink.Mag()*daughterMKink.Mag()+0.493677*0.493677); | |
1071 | // Float_t energyDaughterPr=TMath::Sqrt(daughterMKink.Mag()*daughterMKink.Mag()+0.938658*0.938658); | |
10eaad41 | 1072 | Float_t p1XM= motherMfromKink.Px(); |
1073 | Float_t p1YM= motherMfromKink.Py(); | |
1074 | Float_t p1ZM= motherMfromKink.Pz(); | |
1075 | Float_t p2XM= daughterMKink.Px(); | |
1076 | Float_t p2YM= daughterMKink.Py(); | |
1077 | Float_t p2ZM= daughterMKink.Pz(); | |
1078 | Float_t p3Daughter=TMath::Sqrt(((p1XM-p2XM)*(p1XM-p2XM))+((p1YM-p2YM)*(p1YM-p2YM))+((p1ZM-p2ZM)*(p1ZM-p2ZM))); | |
1079 | Double_t invariantMassKmu= TMath::Sqrt((energyDaughterMu+p3Daughter)*(energyDaughterMu+p3Daughter)-motherMfromKink.Mag()*motherMfromKink.Mag()); | |
a0271296 | 1080 | Double_t invariantMassKpi= TMath::Sqrt((energyDaughterPi+p3Daughter)*(energyDaughterPi+p3Daughter)-motherMfromKink.Mag()*motherMfromKink.Mag()); |
1081 | Double_t invariantMassKK = TMath::Sqrt((energyDaughterKa+p3Daughter)*(energyDaughterKa+p3Daughter)-motherMfromKink.Mag()*motherMfromKink.Mag()); | |
1082 | fInvMassMuNuAll ->Fill(invariantMassKmu); | |
fda107c4 | 1083 | fInvMassMuNuPtAll ->Fill(invariantMassKmu, trackPt); |
5220a87d | 1084 | // 20/4 testRadiusPt->Fill( kink->GetR(), track->Pt()); // |
10eaad41 | 1085 | |
a0271296 | 1086 | |
5220a87d | 1087 | if (qT> fLowQt ) fSignPtNcl->Fill( signPt , tpcNCl ); |
a0271296 | 1088 | |
1089 | // | |
1090 | // if((qT>0.12)&&((kink->GetR()>120.)&&(kink->GetR()<210.))&&(TMath::Abs(rapiditK )<0.7)) { | |
60f5d945 | 1091 | // allagh Dec'14 if((qT> fLowQt )&&((kink->GetR()> fKinkRadLow )&&(kink->GetR()< fKinkRadUp ))&&(TMath::Abs(rapiditK )<0.7)) { |
1092 | if((qT> fLowQt )&&((kink->GetR()> fKinkRadLow )&&(kink->GetR()< fKinkRadUp ))&&(TMath::Abs(rapiditK )<fRapiK)) { | |
10eaad41 | 1093 | fM1kaon->Fill(invariantMassKmu); |
a0271296 | 1094 | fMinvPi->Fill(invariantMassKpi); |
1095 | fMinvKa->Fill(invariantMassKK); | |
1096 | fRadiusNcl->Fill( (kink->GetR()) ,(track->GetTPCclusters(0) ) ) ; | |
1097 | } | |
1098 | ||
1099 | // | |
1100 | // if ( tpcNCl<30 ) continue; | |
5220a87d | 1101 | // test for systematics , march 13 if ( tpcNCl<50. ) continue; |
1102 | if ( tpcNCl<fLowCluster ) continue; | |
1103 | // if ( ( tpcNCl<20. )|| ( tpcNCl > 100.) ) continue;// test , den edwse kati shmantiko | |
1104 | ||
a0271296 | 1105 | //if( ( ( track->GetTPCclusters(0) ) / (kink->GetR() ) ) > 0.63 ) continue; |
1106 | Double_t tpcNClHigh = -51.67+ (11./12.) *( kink->GetR() ) ; | |
5220a87d | 1107 | if (tpcNCl > tpcNClHigh ) fcodeH->Fill(TMath::Abs(code1), TMath::Abs(dcode1)); |
1108 | if ( tpcNCl >tpcNClHigh) fZkinkZDau->Fill( vposKink[2],hVzdau ); | |
1109 | if (tpcNCl > tpcNClHigh) fRadiusPtFake->Fill( kink->GetR(), track->Pt()); // | |
a0271296 | 1110 | |
1111 | Double_t tpcNClMin = -85.5 + (65./95.) *( kink->GetR() ) ; | |
1112 | // if ( tpcNClMin < tpcNCl ) continue; | |
5220a87d | 1113 | if ( tpcNCl > tpcNClHigh) continue; |
a0271296 | 1114 | if ( tpcNCl < tpcNClMin ) continue; |
a0271296 | 1115 | // |
10eaad41 | 1116 | |
1117 | // kaon selection from kinks | |
a0271296 | 1118 | |
1119 | //===== 8/2/13 if((kinkAngle>maxDecAngpimu)&&(qT>0.12)&&(qT<0.30)&&((kink->GetR()>120.)&&(kink->GetR()<210.))&&(TMath::Abs(rapiditK )<0.7)&&(invariantMassKmu<0.8)) { | |
60f5d945 | 1120 | // allagh Dec'14 if((kinkAngle>maxDecAngpimu)&&(qT>fLowQt )&&(qT<0.30)&&((kink->GetR()> fKinkRadLow )&&(kink->GetR()< fKinkRadUp ))&&(TMath::Abs(rapiditK )<0.7)&&(invariantMassKmu<0.8)) { |
1121 | if((kinkAngle>maxDecAngpimu)&&(qT>fLowQt )&&(qT<0.30)&&((kink->GetR()> fKinkRadLow )&&(kink->GetR()< fKinkRadUp ))&&(TMath::Abs(rapiditK )< fRapiK)&&(invariantMassKmu<0.8)) { | |
a0271296 | 1122 | // 29092010 if((kinkAngle>maxDecAngpimu)&&(qT>0.120)&&(qT<0.25)&&((kink->GetR()>120.)&&(kink->GetR()<210.))&&(TMath::Abs(rapiditK )<0.7)&&(invariantMassKmu<0.6)) { |
1123 | // if((kinkAngle>maxDecAngpimu)&&(qT>0.04)&&(qT<0.30)&&((kink->GetR()>133.)&&(kink->GetR()<179.))&&(TMath::Abs(rapiditK )<0.5)&&(invariantMassKmu<0.6)) { | |
1124 | ||
1125 | fAngMomKKinks->Fill(track->P(), kinkAngle); | |
1126 | fPtCut2 ->Fill(trackPt ); | |
1127 | ||
1128 | if ( (kinkAngle>maxDecAngKmu*0.98)&& ( track->P() > 1.2 ) ) continue; // maximum angle s | |
1129 | if ( (kinkAngle<maxDecAngpimu*1.20) ) continue; // maximum angle s | |
1130 | ||
1131 | fPtCut3 ->Fill(trackPt ); | |
1132 | //fTPCSgnlPa->Fill(track->P(),track->GetTPCsignal()); | |
1133 | fTPCSgnlPa->Fill(track->GetInnerParam()->GetP(),track->GetTPCsignal()); | |
1134 | // if( nsigma > 3.5 ) fcode2->Fill(TMath::Abs(code1), TMath::Abs(dcode1)); | |
5220a87d | 1135 | if(nsigma > 3.5) continue; // 1/11/12 |
1136 | // test 16/2/13 if(nsigma > 3.5) continue; // 15/2/13 | |
a0271296 | 1137 | // if(nsigma > 4.0) continue; // test 17/2/2011 4% or more ? bg? |
1138 | // | |
1139 | fTPCSgnlP->Fill(track->GetInnerParam()->GetP(), (track->GetTPCsignal() ) ) ; | |
1140 | ||
1141 | fInvMassMuNuPt ->Fill(invariantMassKmu, trackPt); | |
1142 | // loop on kink daughters inside mother's loop | |
1143 | Int_t ESDLabelM = 0. ; | |
1144 | Int_t ESDLabelD = 0. ; | |
1145 | Double_t dEdxDauMC = 0.0; | |
b7e98ef4 | 1146 | // Double_t raDAU=0.; |
a0271296 | 1147 | Int_t Ikink =0; |
1148 | Int_t IRkink =0; | |
1149 | for (Int_t jTrack = 0; jTrack < esd->GetNumberOfTracks(); jTrack++) { | |
1150 | ||
1151 | AliESDtrack* trackDau = esd->GetTrack(jTrack); | |
1152 | if (!trackDau) { | |
1153 | Printf("ERROR: Could not receive track %d", jTrack); | |
1154 | continue; | |
1155 | } | |
1156 | Int_t indexKinkDAU =trackDau->GetKinkIndex(0); | |
1157 | if (indexKinkDAU <0 ){ | |
1158 | AliESDkink *kinkDau=esd->GetKink(TMath::Abs(indexKinkDAU)-1); | |
b7e98ef4 | 1159 | // raDAU= kinkDau->GetR(); |
a0271296 | 1160 | ESDLabelM=kinkDau->GetLabel(0); // mothers's label |
1161 | ESDLabelM = TMath::Abs(ESDLabelM); | |
1162 | ESDLabelD=kinkDau->GetLabel(1); // Daughter'slabel | |
1163 | ESDLabelD = TMath::Abs(ESDLabelD); | |
1164 | if ( kink->GetR() == kinkDau->GetR() ) IRkink++; | |
1165 | if ( ESDLabelM == label ) Ikink++ ; | |
1166 | } | |
1167 | // if (( ESDLabelM== eSDfLabel1)) { | |
1168 | if ( (Ikink >0) && (IRkink>0 ) ) { | |
1169 | // daughter kink | |
1170 | //if(indexKinkDAU >0) nsigmaPi = (fPIDResponse->NumberOfSigmasTPC(trackDau,AliPID::kPion));// 26/10 eftihis | |
1171 | if(indexKinkDAU >0) nsigmaPi = (fPIDResponse->NumberOfSigmasTPC(trackDau,AliPID::kKaon));// 26/10 eftihis | |
1172 | // nsigmaPion= (fESDpid->NumberOfSigmasTPC(trackD,AliPID::kPion)); | |
1173 | // 22/11/12 if((indexKinkDau >0)&& (nsigmaPion>1.2)) fTPCSgnlKinkDau->Fill(trackD->P(), (trackD->GetTPCsignal() ) ) ; // daughter kink | |
1174 | //if((indexKinkDau >0)) fTPCSgnlKinkDau->Fill(trackD->P(), (trackD->GetTPCsignal() ) ) ; // daughter kink | |
1175 | if((indexKinkDAU >0)) dEdxDauMC = trackDau->GetTPCsignal() ; // daughter kink | |
1176 | } | |
1177 | } | |
1178 | // end internal loop for kink daughters | |
1179 | ||
1180 | // fTPCSgnlP->Fill(trMomTPC , (track->GetTPCsignal() ) ) ; | |
1181 | // fTPCSgnlPtpc->Fill(trMomTPC , (track->GetTPCsignal() ) ) ; | |
1182 | //fMothKinkMomSgnl ->Fill(trMomTPCKink , (track->GetTPCsignal() ) ) ; | |
1183 | // fMothKinkMomSgnl ->Fill( dEdxDauMC , (track->GetTPCsignal() ) ) ; | |
1184 | // fTPCMomNSgnl->Fill(trMomTPC ,pidResponse->NumberOfSigmasTPC(track, AliPID::kKaon) ); | |
1185 | fNSigmTPC ->Fill(nsigmall ); | |
1186 | // daughter selection | |
1187 | //fTPCSgnlKinkDau->Fill( daughterMKink.Mag() , dEdxDauMC ) ; // daughter kink | |
1188 | // if( nsigmaPion > 1.0 ) fcode4->Fill(TMath::Abs(code1), TMath::Abs(dcode1)); | |
1189 | // if( dEdxDauMC > 1.5 *(track->GetTPCsignal() ) ) fcode4->Fill(TMath::Abs(code1), TMath::Abs(dcode1)); | |
1190 | // | |
1191 | //fTPCMomNSgnl->Fill(trMomTPC ,nsigmall ); | |
1192 | fTPCMomNSgnl->Fill(track->GetInnerParam()->GetP() ,nsigmall ); | |
1193 | // | |
7ccf0419 | 1194 | |
a0271296 | 1195 | fRadNclcln->Fill( (kink->GetR()) ,(track->GetTPCclusters(0) ) ) ; |
1196 | fRadiusPtcln->Fill( kink->GetR(), trackPt); // | |
10eaad41 | 1197 | |
a0271296 | 1198 | fAngMomKC->Fill(track->P() , kinkAngle); |
1199 | fHistPtKaon->Fill(track->Pt() ); //all PID kink-kaon | |
1200 | if( code1>0.) fHistPtKaoP->Fill(track->Pt() ); //all PID kink-kaon | |
1201 | if( code1<0.) fHistPtKaoN->Fill(track->Pt() ); //all PID kink-kaon | |
1202 | // systematics | |
1203 | fradPtRapESD->Fill(kink->GetR(), 1./ track->Pt(), rapiditK); | |
1204 | // | |
1205 | fHistEtaK->Fill(rapiditK ); | |
1206 | frad->Fill( kink->GetR() ); | |
1207 | flenHelx->Fill( lenHelx ); //?? | |
1208 | flifeKink ->Fill(lifeKink );//?? | |
1209 | fLHelESDK ->Fill( ( lenHelx /track->P() )*0.493677);// for all 'PID' kaons 31/7/11// ?? | |
1210 | flifTiESDK->Fill( ( lifeKink /track->P() )*0.493677); // ?? | |
10eaad41 | 1211 | |
10eaad41 | 1212 | |
a0271296 | 1213 | |
1214 | fSignPtNcl->Fill( signPt , tpcNCl ); | |
1215 | fSignPtEta->Fill(signPt , rapiditK ); | |
1216 | fEtaNcl->Fill(rapiditK, tpcNCl ); | |
1217 | fSignPt->Fill( signPt ); | |
1218 | fRatChi2Ncl-> Fill((track->GetTPCchi2()/track->GetTPCclusters(0) )) ; | |
1219 | fdcatoVxXY->Fill(dcaToVertexXYpos); | |
10eaad41 | 1220 | |
92adf4f6 | 1221 | // kaons from k to mun and k to pipi and to e decay |
1222 | if( ( (TMath::Abs(code1)==321)&&(TMath::Abs(dcode1)==13))|| | |
1223 | ( (TMath::Abs(code1)==321)&&(TMath::Abs(dcode1)==11)) || | |
1224 | ( (TMath::Abs(code1)==321)&&(TMath::Abs(dcode1)==211)) ) { | |
10eaad41 | 1225 | |
7ccf0419 | 1226 | if ( label<=nPrim ) fPtPrKink->Fill(track->Pt()); |
a0271296 | 1227 | |
1228 | // flifetim2 ->Fill( ( lenHelx /track->P() )*0.493667); // to compare with fLHelESDK | |
1229 | flifTiESDK->Fill( ( lifeKink /track->P() )*0.493667); | |
1230 | ||
1231 | ||
1232 | ||
1233 | fKinkKaon->Fill(track->Pt()); | |
1234 | fDCAkink->Fill( Dist2 ); | |
1235 | fPosiKinkK->Fill( vposKink[0], vposKink[1] ); | |
1236 | fPosiKinKXZ->Fill( vposKink[0], vposKink[2] ); | |
1237 | fPosiKinKYZ->Fill( vposKink[1], vposKink[2] ); | |
1238 | if( code1>0.) fkinkKaonP->Fill(trackPt); // kPtPID kink-kaon | |
1239 | if( code1<0.) fkinkKaonN->Fill(trackPt); // PID kink-kaon | |
1240 | // daughters | |
1241 | if((((nsigmaPi) > 0.)&& ( dEdxDauMC > 70. ) )) fcode4->Fill(TMath::Abs(code1), TMath::Abs(dcode1)); | |
1242 | if ( TMath::Abs(dEdxDauMC - track->GetTPCsignal() ) < 2) fcode2->Fill( TMath::Abs(code1), TMath::Abs(dcode1)); | |
1243 | // fTPCSgnlPtpc->Fill(trMomTPC , (track->GetTPCsignal() ) ) ; | |
1244 | fTPCSgnlPtpc ->Fill( daughterMKink.Mag() , dEdxDauMC ) ; // daughter kink | |
1245 | fMothKinkMomSgnlD->Fill( dEdxDauMC , (track->GetTPCsignal() ) ) ; | |
92adf4f6 | 1246 | } |
10eaad41 | 1247 | else { |
a0271296 | 1248 | fKinkKaonBg->Fill(track->Pt()); |
1249 | fMothKinkMomSgnl ->Fill( dEdxDauMC , (track->GetTPCsignal() ) ) ; | |
1250 | // fTPCSgnlKinkDau->Fill( daughterMKink.Mag() , dEdxDauMC ) ; // daughter kink | |
1251 | // if( dEdxDauMC > 1.5 *(track->GetTPCsignal() ) ) fcode4->Fill(TMath::Abs(code1), TMath::Abs(dcode1)); | |
1252 | // if(( (track->P())<1. )&& ( dEdxDauMC > 1.5 *(track->GetTPCsignal() ) )) fcodeDau1 ->Fill(TMath::Abs(code1), TMath::Abs(dcode1)); | |
1253 | if( (( nsigmaPi) > 0. ) && (( dEdxDauMC > 70 ) )) fcodeDau1 ->Fill(TMath::Abs(code1), TMath::Abs(dcode1)); | |
1254 | if ( TMath::Abs(dEdxDauMC - track->GetTPCsignal() ) < 2) fcodeDau2->Fill( TMath::Abs(code1), TMath::Abs(dcode1)); | |
1255 | fTPCSgnlKinkDau->Fill( daughterMKink.Mag() , dEdxDauMC ) ; // daughter kink | |
1256 | // | |
1257 | fMinvPr->Fill(invariantMassKmu); | |
1258 | // | |
1259 | fDCAkinkBG->Fill( Dist2 ); | |
1260 | fPosiKinKBgXY->Fill( vposKink[0], vposKink[1] ); | |
1261 | fPosiKinKBgZY->Fill( vposKink[2], vposKink[1] ); | |
1262 | fPosiKinKBgZX->Fill( vposKink[2], kink->GetR() ); // 31/7/11 | |
1263 | if( code1>0.) fKinKBGP ->Fill( trackPt ); //all PID kink-kaon | |
1264 | if( code1<0.) fKinKBGN ->Fill( trackPt ); //all PID kink-kaonl | |
7ccf0419 | 1265 | fdcodeH->Fill( TMath::Abs(code1), TMath::Abs(dcode1)); // put it here, 22/10/2009 |
5220a87d | 1266 | // if (eSDfLabel1==eSDfLabeld) fcodeH->Fill(TMath::Abs(code1), TMath::Abs(dcode1)); |
1267 | // if (eSDfLabeld>nPrim ) fZkinkZDau->Fill( vposKink[2],hVzdau ); | |
a0271296 | 1268 | |
7ccf0419 | 1269 | } // primary and all +BG |
10eaad41 | 1270 | |
1271 | } // kink selection | |
1272 | ||
1273 | ||
1274 | } //End Kink Information | |
1275 | ||
1276 | ||
1277 | } //track loop | |
1278 | ||
a0271296 | 1279 | // } // vx 10 cm only on esd |
10eaad41 | 1280 | PostData(1, fListOfHistos); |
1281 | ||
1282 | } | |
1283 | ||
1284 | //________________________________________________________________________ | |
1285 | void AliAnalysisKinkESDMC::Terminate(Option_t *) | |
1286 | { | |
1287 | // Draw result to the screen | |
1288 | // Called once at the end of the query | |
1289 | ||
1290 | } | |
10eaad41 | 1291 | |
1292 | const AliESDVertex* AliAnalysisKinkESDMC::GetEventVertex(const AliESDEvent* esd) const | |
1293 | // Get the vertex from the ESD and returns it if the vertex is valid | |
1294 | ||
1295 | { | |
1296 | // Get the vertex | |
1297 | ||
a0271296 | 1298 | // 10/4 const AliESDVertex* vertex = esd->GetPrimaryVertex(); |
1299 | const AliESDVertex* vertex = esd->GetPrimaryVertexTracks(); | |
10eaad41 | 1300 | |
a0271296 | 1301 | //if((vertex->GetStatus()==kTRUE)&&(vertex->GetNContributors()>2)) return vertex; |
1302 | if((vertex->GetStatus()==kTRUE)) return vertex; | |
10eaad41 | 1303 | else |
1304 | { | |
1305 | vertex = esd->GetPrimaryVertexSPD(); | |
a0271296 | 1306 | if((vertex->GetStatus()==kTRUE)&&(vertex->GetNContributors()>0)) return vertex; |
1307 | // if((vertex->GetStatus()==kTRUE)) return vertex; | |
10eaad41 | 1308 | else |
1309 | return 0; | |
1310 | } | |
f92b626a | 1311 | } |