31 #include <TDatabasePDG.h> 32 #include <Riostream.h> 36 #include "AliAODTrack.h" 37 #include "AliESDtrack.h" 38 #include "AliAODPid.h" 39 #include "AliTPCPIDResponse.h" 40 #include "AliAODVertex.h" 41 #include "AliESDVertex.h" 60 fnVarsD0forD0ptbin(0),
61 fnPtBinsD0forD0ptbin(1),
62 fGlobalIndexD0forD0ptbin(0),
63 fCutsRDD0forD0ptbin(0x0),
64 fnPtBinLimitsD0forD0ptbin(1),
65 fPtBinLimitsD0forD0ptbin(0x0),
66 fIsUpperCutD0forD0ptbin(0x0),
67 fIsCutUsedD0forD0ptbin(0x0),
68 fVarNamesD0forD0ptbin(0x0),
69 fnVarsD0forDStarptbin(0),
70 fnPtBinsD0forDStarptbin(0),
71 fGlobalIndexD0forDStarptbin(0),
72 fCutsRDD0forDStarptbin(0x0),
73 fnPtBinLimitsD0forDStarptbin(1),
74 fPtBinLimitsD0forDStarptbin(0x0),
75 fIsUpperCutD0forDStarptbin(0x0),
76 fIsCutUsedD0forDStarptbin(0x0),
77 fVarNamesD0forDStarptbin(0x0),
78 fnVarsDStarforDStarptbin(0),
79 fnPtBinsDStarforDStarptbin(1),
80 fGlobalIndexDStarforDStarptbin(0),
81 fCutsRDDStarforDStarptbin(0x0),
82 fnPtBinLimitsDStarforDStarptbin(1),
83 fPtBinLimitsDStarforDStarptbin(0x0),
84 fIsUpperCutDStarforDStarptbin(0x0),
85 fIsCutUsedDStarforDStarptbin(0x0),
86 fVarNamesDStarforDStarptbin(0x0),
87 fMinITSNclsD0FirstDaughter(0),
88 fMinTPCNclsD0FirstDaughter(0),
89 fUseITSRefitD0FirstDaughter(0),
90 fUseTPCRefitD0FirstDaughter(0),
91 fUseFilterBitD0FirstDaughter(0),
92 fFilterBitD0FirstDaughter(0),
93 fMinPtD0FirstDaughter(0),
94 fMinITSNclsD0SecondDaughter(0),
95 fMinTPCNclsD0SecondDaughter(0),
96 fUseITSRefitD0SecondDaughter(0),
97 fUseTPCRefitD0SecondDaughter(0),
98 fUseFilterBitD0SecondDaughter(0),
99 fFilterBitD0SecondDaughter(0),
100 fMinPtD0SecondDaughter(0),
101 fMinITSNclsDStarPion(0),
102 fMinTPCNclsDStarPion(0),
103 fUseITSRefitDStarPion(0),
104 fUseTPCRefitDStarPion(0),
105 fUseFilterBitDStarPion(0),
106 fFilterBitDStarPion(0),
108 fMinITSNclsB0Pion(0),
109 fMinTPCNclsB0Pion(0),
110 fUseITSRefitB0Pion(0),
111 fUseTPCRefitB0Pion(0),
112 fUseFilterBitB0Pion(0),
115 fMaxAbsEtaD0FirstDaughter(999.),
116 fHardSelectionArrayITSD0FirstDaughter(),
117 fSoftSelectionArrayITSD0FirstDaughter(),
118 fNSoftITSCutD0FirstDaughter(0),
119 fMaxAbsEtaD0SecondDaughter(999.),
120 fHardSelectionArrayITSD0SecondDaughter(),
121 fSoftSelectionArrayITSD0SecondDaughter(),
122 fNSoftITSCutD0SecondDaughter(0),
123 fMaxAbsEtaDStarPion(999.),
124 fHardSelectionArrayITSDStarPion(),
125 fSoftSelectionArrayITSDStarPion(),
126 fNSoftITSCutDStarPion(0),
127 fMaxAbsEtaB0Pion(999.),
128 fHardSelectionArrayITSB0Pion(),
129 fSoftSelectionArrayITSB0Pion(),
130 fNSoftITSCutB0Pion(0),
131 fMaxDCADStarPionD0(999.),
132 fMaxDCADStarPionB0Pion(999.),
133 fMaxDCAB0PionD0(999.),
134 fMaxDCACombined(999.),
135 fMind0D0FirstDaughter(0),
136 fMind0D0SecondDaughter(0),
139 fMaxPtDStarPion(999.)
146 const Int_t nvars=97;
153 varNames[iterator++]=
"inv. mass width[GeV]";
154 varNames[iterator++]=
"delta mass width [GeV]";
155 varNames[iterator++]=
"pointing angle [Cos(theta)]";
156 varNames[iterator++]=
"dca [cm]";
157 varNames[iterator++]=
"Pt D0 [GeV/c]";
158 varNames[iterator++]=
"Pt first daughter [GeV/c]";
159 varNames[iterator++]=
"Pt second daughter [GeV/c]";
160 varNames[iterator++]=
"d0 D0 [cm]";
161 varNames[iterator++]=
"d0 first daughter [cm]";
162 varNames[iterator++]=
"d0 second daughter [cm]";
163 varNames[iterator++]=
"d0d0 [cm^2]";
164 varNames[iterator++]=
"d0d0 XY [cm^2]";
166 varNames[iterator++]=
"angle between both daughters";
167 varNames[iterator++]=
"angle mother with first daughter";
168 varNames[iterator++]=
"angle mother with second daughter";
169 varNames[iterator++]=
"cosThetaStar";
170 varNames[iterator++]=
"vertexDistance";
171 varNames[iterator++]=
"pseudoProperDecayTime";
172 varNames[iterator++]=
"DecayTime";
173 varNames[iterator++]=
"normalizedDecayTime";
174 varNames[iterator++]=
"normDecayLength";
175 varNames[iterator++]=
"topomatic first daughter";
176 varNames[iterator++]=
"topomatic second daughter";
177 varNames[iterator++]=
"topomatic max";
178 varNames[iterator++]=
"topomatic min";
180 varNames[iterator++]=
"pointing angle XY [Cos(theta)]";
181 varNames[iterator++]=
"vertex distance XY [cm]";
182 varNames[iterator++]=
"normDecayLength XY";
183 varNames[iterator++]=
"Chi2 per NDF vertex";
185 varNames[iterator++]=
"pointingAngleToDStar";
186 varNames[iterator++]=
"d0MotherToDStar";
187 varNames[iterator++]=
"d0FirstDaughterToDStar";
188 varNames[iterator++]=
"d0SecondDaughterToDStar";
189 varNames[iterator++]=
"impactProductToDStar";
190 varNames[iterator++]=
"impactProductXYToDStar";
191 varNames[iterator++]=
"normDecayLengthToDStar";
192 varNames[iterator++]=
"pseudoProperDecayTimeToDStar";
193 varNames[iterator++]=
"DecayTimeToDStar";
194 varNames[iterator++]=
"normalizedDecayTimeToDStar";
198 varNames[iterator++]=
"inv. mass width[GeV]";
199 varNames[iterator++]=
"delta mass width [GeV]";
200 varNames[iterator++]=
"pointing angle [Cos(theta)]";
201 varNames[iterator++]=
"dca [cm]";
202 varNames[iterator++]=
"Pt DStar [GeV/c]";
203 varNames[iterator++]=
"Pt D0 [GeV/c]";
204 varNames[iterator++]=
"Pt Pion [GeV/c]";
205 varNames[iterator++]=
"d0 DStar [cm]";
206 varNames[iterator++]=
"d0 D0 [cm]";
207 varNames[iterator++]=
"d0 Pion [cm]";
208 varNames[iterator++]=
"d0d0 [cm^2]";
209 varNames[iterator++]=
"d0d0 XY [cm^2]";
211 varNames[iterator++]=
"angle between both daughters";
212 varNames[iterator++]=
"angle mother with first daughter";
213 varNames[iterator++]=
"angle mother with second daughter";
214 varNames[iterator++]=
"cosThetaStar";
215 varNames[iterator++]=
"vertexDistance";
216 varNames[iterator++]=
"pseudoProperDecayTime";
217 varNames[iterator++]=
"DecayTime";
218 varNames[iterator++]=
"normalizedDecayTime";
219 varNames[iterator++]=
"normDecayLength";
220 varNames[iterator++]=
"topomatic first daughter";
221 varNames[iterator++]=
"topomatic second daughter";
222 varNames[iterator++]=
"topomatic max";
223 varNames[iterator++]=
"topomatic min";
225 varNames[iterator++]=
"pointing angle XY [Cos(theta)]";
226 varNames[iterator++]=
"vertex distance XY [cm]";
227 varNames[iterator++]=
"normDecayLength XY";
228 varNames[iterator++]=
"Chi2 per NDF vertex";
232 varNames[iterator++]=
"inv. mass width[GeV]";
233 varNames[iterator++]=
"delta mass width [GeV]";
234 varNames[iterator++]=
"pointing angle [Cos(theta)]";
235 varNames[iterator++]=
"dca [cm]";
236 varNames[iterator++]=
"Pt B0 [GeV/c]";
237 varNames[iterator++]=
"Pt DStar [GeV/c]";
238 varNames[iterator++]=
"Pt Pion [GeV/c]";
239 varNames[iterator++]=
"d0 B0 [cm]";
240 varNames[iterator++]=
"d0 DStar [cm]";
241 varNames[iterator++]=
"d0 Pion [cm]";
242 varNames[iterator++]=
"d0d0 [cm^2]";
243 varNames[iterator++]=
"d0d0 XY [cm^2]";
245 varNames[iterator++]=
"angle between both daughters";
246 varNames[iterator++]=
"angle mother with first daughter";
247 varNames[iterator++]=
"angle mother with second daughter";
248 varNames[iterator++]=
"cosThetaStar";
249 varNames[iterator++]=
"vertexDistance";
250 varNames[iterator++]=
"pseudoProperDecayTime";
251 varNames[iterator++]=
"DecayTime";
252 varNames[iterator++]=
"normalizedDecayTime";
253 varNames[iterator++]=
"normDecayLength";
254 varNames[iterator++]=
"topomatic first daughter";
255 varNames[iterator++]=
"topomatic second daughter";
256 varNames[iterator++]=
"topomatic max";
257 varNames[iterator++]=
"topomatic min";
259 varNames[iterator++]=
"pointing angle XY [Cos(theta)]";
260 varNames[iterator++]=
"vertex distance XY [cm]";
261 varNames[iterator++]=
"normDecayLength XY";
262 varNames[iterator++]=
"Chi2 per NDF vertex";
264 Bool_t isUpperCut[nvars]={0};
268 Float_t limits[2]={0,999999999.};
276 const Int_t nvarsD0forD0ptbin=29;
279 TString varNamesD0forD0ptbin[nvarsD0forD0ptbin];
283 varNamesD0forD0ptbin[iterator++]=
"inv. mass width[GeV]";
284 varNamesD0forD0ptbin[iterator++]=
"delta mass width [GeV]";
285 varNamesD0forD0ptbin[iterator++]=
"pointing angle [Cos(theta)]";
286 varNamesD0forD0ptbin[iterator++]=
"dca [cm]";
287 varNamesD0forD0ptbin[iterator++]=
"Pt D0 [GeV/c]";
288 varNamesD0forD0ptbin[iterator++]=
"Pt first daughter [GeV/c]";
289 varNamesD0forD0ptbin[iterator++]=
"Pt second daughter [GeV/c]";
290 varNamesD0forD0ptbin[iterator++]=
"d0 D0 [cm]";
291 varNamesD0forD0ptbin[iterator++]=
"d0 first daughter [cm]";
292 varNamesD0forD0ptbin[iterator++]=
"d0 second daughter [cm]";
293 varNamesD0forD0ptbin[iterator++]=
"d0d0 [cm^2]";
294 varNamesD0forD0ptbin[iterator++]=
"d0d0 XY [cm^2]";
296 varNamesD0forD0ptbin[iterator++]=
"angle between both daughters";
297 varNamesD0forD0ptbin[iterator++]=
"angle mother with first daughter";
298 varNamesD0forD0ptbin[iterator++]=
"angle mother with second daughter";
299 varNamesD0forD0ptbin[iterator++]=
"cosThetaStar";
300 varNamesD0forD0ptbin[iterator++]=
"vertexDistance";
301 varNamesD0forD0ptbin[iterator++]=
"pseudoProperDecayTime";
302 varNamesD0forD0ptbin[iterator++]=
"DecayTime";
303 varNamesD0forD0ptbin[iterator++]=
"normalizedDecayTime";
304 varNamesD0forD0ptbin[iterator++]=
"normDecayLength";
305 varNamesD0forD0ptbin[iterator++]=
"topomatic first daughter";
306 varNamesD0forD0ptbin[iterator++]=
"topomatic second daughter";
307 varNamesD0forD0ptbin[iterator++]=
"topomatic max";
308 varNamesD0forD0ptbin[iterator++]=
"topomatic min";
310 varNamesD0forD0ptbin[iterator++]=
"pointing angle XY [Cos(theta)]";
311 varNamesD0forD0ptbin[iterator++]=
"vertex distance XY [cm]";
312 varNamesD0forD0ptbin[iterator++]=
"normDecayLength XY";
313 varNamesD0forD0ptbin[iterator++]=
"Chi2 per NDF vertex";
315 Bool_t isUpperCutD0forD0ptbin[nvarsD0forD0ptbin]={0};
319 Float_t limitsD0forD0ptbin[2]={0,999999999.};
327 const Int_t nvarsD0forDStarptbin=39;
330 TString varNamesD0forDStarptbin[nvarsD0forDStarptbin];
334 varNamesD0forDStarptbin[iterator++]=
"inv. mass width[GeV]";
335 varNamesD0forDStarptbin[iterator++]=
"delta mass width [GeV]";
336 varNamesD0forDStarptbin[iterator++]=
"pointing angle [Cos(theta)]";
337 varNamesD0forDStarptbin[iterator++]=
"dca [cm]";
338 varNamesD0forDStarptbin[iterator++]=
"Pt D0 [GeV/c]";
339 varNamesD0forDStarptbin[iterator++]=
"Pt first daughter [GeV/c]";
340 varNamesD0forDStarptbin[iterator++]=
"Pt second daughter [GeV/c]";
341 varNamesD0forDStarptbin[iterator++]=
"d0 D0 [cm]";
342 varNamesD0forDStarptbin[iterator++]=
"d0 first daughter [cm]";
343 varNamesD0forDStarptbin[iterator++]=
"d0 second daughter [cm]";
344 varNamesD0forDStarptbin[iterator++]=
"d0d0 [cm^2]";
345 varNamesD0forDStarptbin[iterator++]=
"d0d0 XY [cm^2]";
347 varNamesD0forDStarptbin[iterator++]=
"angle between both daughters";
348 varNamesD0forDStarptbin[iterator++]=
"angle mother with first daughter";
349 varNamesD0forDStarptbin[iterator++]=
"angle mother with second daughter";
350 varNamesD0forDStarptbin[iterator++]=
"cosThetaStar";
351 varNamesD0forDStarptbin[iterator++]=
"vertexDistance";
352 varNamesD0forDStarptbin[iterator++]=
"pseudoProperDecayTime";
353 varNamesD0forDStarptbin[iterator++]=
"DecayTime";
354 varNamesD0forDStarptbin[iterator++]=
"normalizedDecayTime";
355 varNamesD0forDStarptbin[iterator++]=
"normDecayLength";
356 varNamesD0forDStarptbin[iterator++]=
"topomatic first daughter";
357 varNamesD0forDStarptbin[iterator++]=
"topomatic second daughter";
358 varNamesD0forDStarptbin[iterator++]=
"topomatic max";
359 varNamesD0forDStarptbin[iterator++]=
"topomatic min";
361 varNamesD0forDStarptbin[iterator++]=
"pointingAngleToDStar";
362 varNamesD0forDStarptbin[iterator++]=
"d0MotherToDStar";
363 varNamesD0forDStarptbin[iterator++]=
"d0FirstDaughterToDStar";
364 varNamesD0forDStarptbin[iterator++]=
"d0SecondDaughterToDStar";
365 varNamesD0forDStarptbin[iterator++]=
"impactProductToDStar";
366 varNamesD0forDStarptbin[iterator++]=
"impactProductXYToDStar";
367 varNamesD0forDStarptbin[iterator++]=
"normDecayLengthToDStar";
368 varNamesD0forDStarptbin[iterator++]=
"pseudoProperDecayTimeToDStar";
369 varNamesD0forDStarptbin[iterator++]=
"DecayTimeToDStar";
370 varNamesD0forDStarptbin[iterator++]=
"normalizedDecayTimeToDStar";
372 varNamesD0forDStarptbin[iterator++]=
"pointing angle XY [Cos(theta)]";
373 varNamesD0forDStarptbin[iterator++]=
"vertex distance XY [cm]";
374 varNamesD0forDStarptbin[iterator++]=
"normDecayLength XY";
375 varNamesD0forDStarptbin[iterator++]=
"Chi2 per NDF vertex";
377 Bool_t isUpperCutD0forDStarptbin[nvarsD0forDStarptbin]={0};
381 Float_t limitsD0forDStarptbin[2]={0,999999999.};
389 const Int_t nvarsDStarforDStarptbin=29;
392 TString varNamesDStarforDStarptbin[nvarsDStarforDStarptbin];
396 varNamesDStarforDStarptbin[iterator++]=
"inv. mass width[GeV]";
397 varNamesDStarforDStarptbin[iterator++]=
"delta mass width [GeV]";
398 varNamesDStarforDStarptbin[iterator++]=
"pointing angle [Cos(theta)]";
399 varNamesDStarforDStarptbin[iterator++]=
"dca [cm]";
400 varNamesDStarforDStarptbin[iterator++]=
"Pt DStar [GeV/c]";
401 varNamesDStarforDStarptbin[iterator++]=
"Pt D0 [GeV/c]";
402 varNamesDStarforDStarptbin[iterator++]=
"Pt Pion [GeV/c]";
403 varNamesDStarforDStarptbin[iterator++]=
"d0 DStar [cm]";
404 varNamesDStarforDStarptbin[iterator++]=
"d0 D0 [cm]";
405 varNamesDStarforDStarptbin[iterator++]=
"d0 Pion [cm]";
406 varNamesDStarforDStarptbin[iterator++]=
"d0d0 [cm^2]";
407 varNamesDStarforDStarptbin[iterator++]=
"d0d0 XY [cm^2]";
409 varNamesDStarforDStarptbin[iterator++]=
"angle between both daughters";
410 varNamesDStarforDStarptbin[iterator++]=
"angle mother with first daughter";
411 varNamesDStarforDStarptbin[iterator++]=
"angle mother with second daughter";
412 varNamesDStarforDStarptbin[iterator++]=
"cosThetaStar";
413 varNamesDStarforDStarptbin[iterator++]=
"vertexDistance";
414 varNamesDStarforDStarptbin[iterator++]=
"pseudoProperDecayTime";
415 varNamesDStarforDStarptbin[iterator++]=
"DecayTime";
416 varNamesDStarforDStarptbin[iterator++]=
"normalizedDecayTime";
417 varNamesDStarforDStarptbin[iterator++]=
"normDecayLength";
418 varNamesDStarforDStarptbin[iterator++]=
"topomatic first daughter";
419 varNamesDStarforDStarptbin[iterator++]=
"topomatic second daughter";
420 varNamesDStarforDStarptbin[iterator++]=
"topomatic max";
421 varNamesDStarforDStarptbin[iterator++]=
"topomatic min";
423 varNamesDStarforDStarptbin[iterator++]=
"pointing angle XY [Cos(theta)]";
424 varNamesDStarforDStarptbin[iterator++]=
"vertex distance XY [cm]";
425 varNamesDStarforDStarptbin[iterator++]=
"normDecayLength XY";
426 varNamesDStarforDStarptbin[iterator++]=
"Chi2 per NDF vertex";
428 Bool_t isUpperCutDStarforDStarptbin[nvarsDStarforDStarptbin]={0};
432 Float_t limitsDStarforDStarptbin[2]={0,999999999.};
645 cout <<
"Assignment start" << endl;
647 if(&source ==
this)
return *
this;
649 cout <<
"Assignment 1" << endl;
653 cout <<
"Assignment 2" << endl;
717 cout <<
"Assignment 3" << endl;
803 cout <<
"Assignment 4" << endl;
824 cout<<
"Cut matrice not inizialized. Exit..."<<endl;
830 cout<<
"candidateB0 null"<<endl;
836 cout<<
"candidateDStar null"<<endl;
840 AliAODTrack *candidatePion = (AliAODTrack*)candidateB0->GetDaughter(0);
842 cout<<
"candidatePion null"<<endl;
846 AliAODVertex * vertexB0 = candidateB0->GetSecondaryVtx();
848 cout<<
"vertexB0 null"<<endl;
852 AliAODVertex * primaryVertex = aod->GetPrimaryVertex();
854 cout<<
"primaryVertex null"<<endl;
859 Bool_t bPassedCut = kFALSE;
870 if(ptbin==-1)
return -1;
874 Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
875 Double_t mB0PDG = TDatabasePDG::Instance()->GetParticle(511)->Mass();
878 Double_t deltaPDG = mB0PDG - mD0PDG;
882 prongs[0] = 211; prongs[1] = 413;
883 Double_t invMassB0 = candidateB0->InvMass(2,prongs);
884 Double_t invMassDifference = TMath::Abs(mB0PDG - invMassB0);
888 Double_t dcaMother = candidateB0->GetDCA();
889 Double_t ptMother = candidateB0->Pt();
890 Double_t momentumMother = candidateB0->P();
891 Double_t ptDStar = candidateDStar->Pt();
892 Double_t ptPion = candidatePion->Pt();
894 AliExternalTrackParam motherTrack;
895 motherTrack.CopyFromVTrack(candidateB0);
897 motherTrack.PropagateToDCA(primaryVertex,bz,100.,d0z0,covd0z0);
899 Double_t d0Mother = TMath::Abs(d0[0]);
900 Double_t d0firstTrack = TMath::Abs(candidateB0->Getd0Prong(0));
901 Double_t d0secondTrack = TMath::Abs(candidateB0->Getd0Prong(1));
906 Double_t angleBetweenBothDaughters = (candidateDStar->Px() * candidatePion->Px() + candidateDStar->Py() * candidatePion->Py() + candidateDStar->Pz() * candidatePion->Pz()) /(candidateDStar->P() * candidatePion->P());
907 Double_t angleMotherFirstDaughter = (candidateB0->Px() * candidatePion->Px() + candidateB0->Py() * candidatePion->Py() + candidateB0->Pz() * candidatePion->Pz()) /(candidateB0->P() * candidatePion->P());
908 Double_t angleMotherSecondDaughter = (candidateB0->Px() * candidateDStar->Px() + candidateB0->Py() * candidateDStar->Py() + candidateB0->Pz() * candidateDStar->Pz()) /(candidateB0->P() * candidateDStar->P());
910 Double_t cosThetaStar = candidateB0->CosThetaStar(0,511,211,413);
911 Double_t vertexDistance = vertexB0->DistanceToVertex(primaryVertex);
913 Double_t pdgMassMother = TDatabasePDG::Instance()->GetParticle(511)->Mass();
914 Double_t pseudoProperDecayLength = ((vertexB0->GetX() - primaryVertex->GetX()) * candidateB0->Px() / TMath::Abs(candidateB0->Pt())) + ((vertexB0->GetY() - primaryVertex->GetY()) * candidateB0->Py() / TMath::Abs(candidateB0->Pt()));
915 Double_t pseudoProperDecayTime = pseudoProperDecayLength * pdgMassMother/ptMother;
916 Double_t decayTime = vertexDistance / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother/(momentumMother*momentumMother)) + 1)));
919 Double_t theta = candidateB0->Theta();
921 candidateB0->GetCovarianceXYZPxPyPz(covMatrix);
928 Double_t errorMomentum = covMatrix[9]*cp*cp*ct*ct
929 +covMatrix[13]*2.*cp*sp*ct*ct
930 +covMatrix[18]*2.*cp*ct*st
931 +covMatrix[14]*sp*sp*ct*ct
932 +covMatrix[19]*2.*sp*ct*st
933 +covMatrix[20]*st*st;
934 Double_t normalizedDecayTime = candidateB0->
NormalizedDecayLength() / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother*errorMomentum*errorMomentum/(momentumMother*momentumMother)) + 1)));
937 Double_t distanceXYToVertex = vertexB0->DistanceXYToVertex(primaryVertex);
939 Double_t chi2Vertex = vertexB0->GetChi2perNDF();
946 for(
Int_t ipr=0; ipr<2; ipr++)
951 if(errdiffIP>0.) normdd0=diffIP/errdiffIP;
952 if(ipr==0) dd0pr1=normdd0;
953 if(ipr==1) dd0pr2=normdd0;
955 if(TMath::Abs(dd0pr1)>TMath::Abs(dd0pr2)) {dd0max=dd0pr1; dd0min=dd0pr2;}
956 else {dd0max=dd0pr2; dd0min=dd0pr1;}
965 cutVariableValue = invMassDifference;
972 cutVariableValue = invMassDelta;
979 cutVariableValue = pointingAngle;
986 cutVariableValue = dcaMother;
993 cutVariableValue = ptMother;
1000 cutVariableValue = ptDStar;
1007 cutVariableValue = ptPion;
1014 cutVariableValue = d0Mother;
1021 cutVariableValue = d0firstTrack;
1028 cutVariableValue = d0secondTrack;
1035 cutVariableValue = impactProduct;
1042 cutVariableValue = impactProductXY;
1049 cutVariableValue = angleBetweenBothDaughters;
1056 cutVariableValue = angleMotherFirstDaughter;
1063 cutVariableValue = angleMotherSecondDaughter;
1070 cutVariableValue = cosThetaStar;
1077 cutVariableValue = vertexDistance;
1084 cutVariableValue = pseudoProperDecayTime;
1091 cutVariableValue = decayTime;
1098 cutVariableValue = normalizedDecayTime;
1105 cutVariableValue = normDecayLength;
1112 cutVariableValue = dd0pr1;
1119 cutVariableValue = dd0pr2;
1126 cutVariableValue = dd0max;
1133 cutVariableValue = dd0min;
1140 cutVariableValue = cosPointingAngleXY;
1147 cutVariableValue = distanceXYToVertex;
1154 cutVariableValue = normalizedDecayLengthXY;
1161 cutVariableValue = chi2Vertex;
1171 if(bPassedCut==kFALSE)
1176 for (
Int_t i = 68; i < 97; ++i)
1178 if(bCutArray[i]==kTRUE){
1196 cout<<
"Cut matrice not inizialized. Exit..."<<endl;
1201 if(!candidateDStar){
1202 cout<<
"candidateDStar null"<<endl;
1208 cout<<
"candidateD0 null"<<endl;
1212 AliAODTrack *candidatePion = (AliAODTrack*)candidateDStar->GetDaughter(0);
1214 cout<<
"candidatePion null"<<endl;
1218 AliAODVertex * vertexDStar = candidateDStar->GetSecondaryVtx();
1220 cout<<
"vertexDStar null"<<endl;
1224 AliAODVertex * primaryVertex = aod->GetPrimaryVertex();
1226 cout<<
"primaryVertex null"<<endl;
1230 Int_t returnvalue=1;
1231 Bool_t bPassedCut = kFALSE;
1243 Double_t mDSPDG = TDatabasePDG::Instance()->GetParticle(413)->Mass();
1244 Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
1251 prongs[0] = 211; prongs[1] = 421;
1252 Double_t invMassDStar = candidateDStar->InvMass(2,prongs);
1253 Double_t invMassDifference = TMath::Abs(mDSPDG - invMassDStar);
1257 Double_t dcaMother = candidateDStar->GetDCA();
1258 Double_t ptMother = candidateDStar->Pt();
1259 Double_t momentumMother = candidateDStar->P();
1261 Double_t ptPion = candidatePion->Pt();
1263 AliExternalTrackParam motherTrack;
1264 motherTrack.CopyFromVTrack(candidateDStar);
1266 motherTrack.PropagateToDCA(primaryVertex,bz,100.,d0z0,covd0z0);
1268 Double_t d0Mother = TMath::Abs(d0[0]);
1269 Double_t d0firstTrack = TMath::Abs(candidateDStar->Getd0Prong(0));
1270 Double_t d0secondTrack = TMath::Abs(candidateDStar->Getd0Prong(1));
1275 Double_t angleBetweenBothDaughters = (candidateD0->Px() * candidatePion->Px() + candidateD0->Py() * candidatePion->Py() + candidateD0->Pz() * candidatePion->Pz()) /(candidateD0->P() * candidatePion->P());
1276 Double_t angleMotherFirstDaughter = (candidateDStar->Px() * candidatePion->Px() + candidateDStar->Py() * candidatePion->Py() + candidateDStar->Pz() * candidatePion->Pz()) /(candidateDStar->P() * candidatePion->P());
1277 Double_t angleMotherSecondDaughter = (candidateDStar->Px() * candidateD0->Px() + candidateDStar->Py() * candidateD0->Py() + candidateDStar->Pz() * candidateD0->Pz()) /(candidateDStar->P() * candidateD0->P());
1279 Double_t cosThetaStar = candidateDStar->CosThetaStar(0,413,211,421);
1280 Double_t vertexDistance = vertexDStar->DistanceToVertex(primaryVertex);
1282 Double_t pdgMassMother = TDatabasePDG::Instance()->GetParticle(413)->Mass();
1283 Double_t pseudoProperDecayLength = ((vertexDStar->GetX() - primaryVertex->GetX()) * candidateDStar->Px() / TMath::Abs(candidateDStar->Pt())) + ((vertexDStar->GetY() - primaryVertex->GetY()) * candidateDStar->Py() / TMath::Abs(candidateDStar->Pt()));
1284 Double_t pseudoProperDecayTime = pseudoProperDecayLength * pdgMassMother/ptMother;
1285 Double_t decayTime = vertexDistance / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother/(momentumMother*momentumMother)) + 1)));
1287 Double_t phi = candidateDStar->Phi();
1288 Double_t theta = candidateDStar->Theta();
1290 candidateDStar->GetCovarianceXYZPxPyPz(covMatrix);
1297 Double_t errorMomentum = covMatrix[9]*cp*cp*ct*ct
1298 +covMatrix[13]*2.*cp*sp*ct*ct
1299 +covMatrix[18]*2.*cp*ct*st
1300 +covMatrix[14]*sp*sp*ct*ct
1301 +covMatrix[19]*2.*sp*ct*st
1302 +covMatrix[20]*st*st;
1303 Double_t normalizedDecayTime = candidateDStar->
NormalizedDecayLength() / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother*errorMomentum*errorMomentum/(momentumMother*momentumMother)) + 1)));
1306 Double_t distanceXYToVertex = vertexDStar->DistanceXYToVertex(primaryVertex);
1308 Double_t chi2Vertex = vertexDStar->GetChi2perNDF();
1315 for(
Int_t ipr=0; ipr<2; ipr++)
1320 if(errdiffIP>0.) normdd0=diffIP/errdiffIP;
1321 if(ipr==0) dd0pr1=normdd0;
1322 if(ipr==1) dd0pr2=normdd0;
1324 if(TMath::Abs(dd0pr1)>TMath::Abs(dd0pr2)) {dd0max=dd0pr1; dd0min=dd0pr2;}
1325 else {dd0max=dd0pr2; dd0min=dd0pr1;}
1329 Int_t nCutIndex = 0;
1334 cutVariableValue = invMassDifference;
1341 cutVariableValue = invMassDelta;
1348 cutVariableValue = pointingAngle;
1355 cutVariableValue = dcaMother;
1362 cutVariableValue = ptMother;
1369 cutVariableValue = ptD0;
1376 cutVariableValue = ptPion;
1383 cutVariableValue = d0Mother;
1390 cutVariableValue = d0firstTrack;
1397 cutVariableValue = d0secondTrack;
1404 cutVariableValue = impactProduct;
1411 cutVariableValue = impactProductXY;
1418 cutVariableValue = angleBetweenBothDaughters;
1425 cutVariableValue = angleMotherFirstDaughter;
1432 cutVariableValue = angleMotherSecondDaughter;
1439 cutVariableValue = cosThetaStar;
1446 cutVariableValue = vertexDistance;
1453 cutVariableValue = pseudoProperDecayTime;
1460 cutVariableValue = decayTime;
1467 cutVariableValue = normalizedDecayTime;
1474 cutVariableValue = normDecayLength;
1481 cutVariableValue = dd0pr1;
1488 cutVariableValue = dd0pr2;
1495 cutVariableValue = dd0max;
1502 cutVariableValue = dd0min;
1509 cutVariableValue = cosPointingAngleXY;
1516 cutVariableValue = distanceXYToVertex;
1523 cutVariableValue = normalizedDecayLengthXY;
1530 cutVariableValue = chi2Vertex;
1540 if(bPassedCut==kFALSE)
1545 for (
Int_t i = 39; i < 68; ++i)
1547 if(bCutArray[i]==kTRUE){
1565 cout<<
"Cut matrice not inizialized. Exit..."<<endl;
1570 if(!candidateDStar){
1571 cout<<
"candidateDStar null"<<endl;
1577 cout<<
"candidateD0 null"<<endl;
1581 AliAODTrack *candidatePion = (AliAODTrack*)candidateD0->GetDaughter(0);
1583 cout<<
"candidatePion null"<<endl;
1587 AliAODTrack *candidateKaon = (AliAODTrack*)candidateD0->GetDaughter(1);
1589 cout<<
"candidateKaon null"<<endl;
1593 AliAODVertex * vertexDStar = candidateDStar->GetSecondaryVtx();
1595 cout<<
"vertexDStar null"<<endl;
1599 AliAODVertex * vertexD0 = candidateD0->GetSecondaryVtx();
1601 cout<<
"vertexD0 null"<<endl;
1605 AliAODVertex * primaryVertex = aod->GetPrimaryVertex();
1607 cout<<
"primaryVertex null"<<endl;
1611 Int_t returnvalue=1;
1612 Bool_t bPassedCut = kFALSE;
1625 Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
1628 Int_t chargeDStar = candidateDStar->Charge();
1635 else if (chargeDStar==-1)
1642 cout <<
"Wrong charge DStar." << endl;
1645 Double_t invMassD0 = candidateD0->InvMass(2,prongs);
1646 Double_t invMassDifference = TMath::Abs(mD0PDG - invMassD0);
1649 Double_t dcaMother = candidateD0->GetDCA();
1650 Double_t ptMother = candidateD0->Pt();
1651 Double_t momentumMother = candidateD0->P();
1652 Double_t ptPion = candidatePion->Pt();
1653 Double_t ptKaon = candidateKaon->Pt();
1655 AliExternalTrackParam motherTrack;
1656 motherTrack.CopyFromVTrack(candidateD0);
1658 motherTrack.PropagateToDCA(primaryVertex,bz,100.,d0z0,covd0z0);
1660 Double_t d0Mother = TMath::Abs(d0[0]);
1661 Double_t d0firstTrack = TMath::Abs(candidateD0->Getd0Prong(0));
1662 Double_t d0secondTrack = TMath::Abs(candidateD0->Getd0Prong(1));
1667 Double_t angleBetweenBothDaughters = (candidateKaon->Px() * candidatePion->Px() + candidateKaon->Py() * candidatePion->Py() + candidateKaon->Pz() * candidatePion->Pz()) /(candidateKaon->P() * candidatePion->P());
1668 Double_t angleMotherFirstDaughter = (candidateD0->Px() * candidatePion->Px() + candidateD0->Py() * candidatePion->Py() + candidateD0->Pz() * candidatePion->Pz()) /(candidateD0->P() * candidatePion->P());
1669 Double_t angleMotherSecondDaughter = (candidateD0->Px() * candidateKaon->Px() + candidateD0->Py() * candidateKaon->Py() + candidateD0->Pz() * candidateKaon->Pz()) /(candidateD0->P() * candidateKaon->P());
1671 Double_t cosThetaStar = candidateD0->CosThetaStar(0,421,211,321);
1672 Double_t vertexDistance = vertexD0->DistanceToVertex(primaryVertex);
1674 Double_t pdgMassMother = TDatabasePDG::Instance()->GetParticle(421)->Mass();
1675 Double_t pseudoProperDecayLength = ((vertexD0->GetX() - primaryVertex->GetX()) * candidateD0->Px() / TMath::Abs(candidateD0->Pt())) + ((vertexD0->GetY() - primaryVertex->GetY()) * candidateD0->Py() / TMath::Abs(candidateD0->Pt()));
1676 Double_t pseudoProperDecayTime = pseudoProperDecayLength * pdgMassMother/ptMother;
1677 Double_t decayTime = vertexDistance / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother/(momentumMother*momentumMother)) + 1)));
1680 Double_t theta = candidateD0->Theta();
1682 candidateD0->GetCovarianceXYZPxPyPz(covMatrix);
1689 Double_t errorMomentum = covMatrix[9]*cp*cp*ct*ct
1690 +covMatrix[13]*2.*cp*sp*ct*ct
1691 +covMatrix[18]*2.*cp*ct*st
1692 +covMatrix[14]*sp*sp*ct*ct
1693 +covMatrix[19]*2.*sp*ct*st
1694 +covMatrix[20]*st*st;
1695 Double_t normalizedDecayTime = candidateD0->
NormalizedDecayLength() / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother*errorMomentum*errorMomentum/(momentumMother*momentumMother)) + 1)));
1698 Double_t distanceXYToVertex = vertexD0->DistanceXYToVertex(primaryVertex);
1700 Double_t chi2Vertex = vertexD0->GetChi2perNDF();
1708 for(
Int_t ipr=0; ipr<2; ipr++)
1713 if(errdiffIP>0.) normdd0=diffIP/errdiffIP;
1714 if(ipr==0) dd0pr1=normdd0;
1715 if(ipr==1) dd0pr2=normdd0;
1717 if(TMath::Abs(dd0pr1)>TMath::Abs(dd0pr2)) {dd0max=dd0pr1; dd0min=dd0pr2;}
1718 else {dd0max=dd0pr2; dd0min=dd0pr1;}
1722 Int_t nCutIndex = 0;
1727 cutVariableValue = invMassDifference;
1741 cutVariableValue = pointingAngle;
1748 cutVariableValue = dcaMother;
1755 cutVariableValue = ptMother;
1762 cutVariableValue = ptKaon;
1769 cutVariableValue = ptPion;
1776 cutVariableValue = d0Mother;
1783 cutVariableValue = d0firstTrack;
1790 cutVariableValue = d0secondTrack;
1797 cutVariableValue = impactProduct;
1804 cutVariableValue = impactProductXY;
1811 cutVariableValue = angleBetweenBothDaughters;
1818 cutVariableValue = angleMotherFirstDaughter;
1825 cutVariableValue = angleMotherSecondDaughter;
1832 cutVariableValue = cosThetaStar;
1839 cutVariableValue = vertexDistance;
1846 cutVariableValue = pseudoProperDecayTime;
1853 cutVariableValue = decayTime;
1860 cutVariableValue = normalizedDecayTime;
1867 cutVariableValue = normDecayLength;
1874 cutVariableValue = dd0pr1;
1881 cutVariableValue = dd0pr2;
1888 cutVariableValue = dd0max;
1895 cutVariableValue = dd0min;
1902 cutVariableValue = cosPointingAngleXY;
1909 cutVariableValue = distanceXYToVertex;
1916 cutVariableValue = normalizedDecayLengthXY;
1923 cutVariableValue = chi2Vertex;
1930 AliAODRecoDecay* candidateD0toDStar = (AliAODRecoDecay*)candidateD0;
1931 AliExternalTrackParam pionD0Track;
1932 AliExternalTrackParam kaonD0Track;
1934 Double_t d0z0DSVert[2],covd0z0DSVert[3],d0DSVert[2];
1936 pionD0Track.CopyFromVTrack(candidatePion);
1937 pionD0Track.PropagateToDCA(vertexDStar,bz,100.,d0z0DSVert,covd0z0DSVert);
1938 d0DSVert[0] = d0z0DSVert[0];
1940 kaonD0Track.CopyFromVTrack(candidateKaon);
1941 kaonD0Track.PropagateToDCA(vertexDStar,bz,100.,d0z0DSVert,covd0z0DSVert);
1942 d0DSVert[1] = d0z0DSVert[0];
1944 AliExternalTrackParam D0Track;
1945 D0Track.CopyFromVTrack(candidateD0);
1946 Double_t d0z0D0DSVert[2],covd0z0D0DSVert[3],d0D0DSVert;
1947 motherTrack.PropagateToDCA(vertexDStar,bz,100.,d0z0D0DSVert,covd0z0D0DSVert);
1948 d0D0DSVert = TMath::Abs(d0z0D0DSVert[0]);
1950 Double_t impactProductToDStar = d0DSVert[0]*d0DSVert[1];
1951 Double_t impactProductXYToDStar = candidateD0toDStar->ImpParXY(vertexDStar);
1953 Double_t pointingAngleToDStar = candidateD0toDStar->CosPointingAngle(vertexDStar);
1954 Double_t d0FirstDaughterToDStar = TMath::Abs(d0DSVert[0]);
1955 Double_t d0SecondDaughterToDStar = TMath::Abs(d0DSVert[1]);
1956 Double_t normDecayLengthToDStar = candidateD0toDStar->NormalizedDecayLength(vertexDStar);
1958 Double_t pseudoProperDecayLengthDSVert = ((vertexD0->GetX() - vertexDStar->GetX()) * candidateD0->Px() / TMath::Abs(candidateD0->Pt())) + ((vertexD0->GetY() - vertexDStar->GetY()) * candidateD0->Py() / TMath::Abs(candidateD0->Pt()));
1959 Double_t pseudoProperDecayTimeToDStar = pseudoProperDecayLengthDSVert * pdgMassMother/ptMother;
1960 Double_t DecayTimeToDStar = vertexDistance / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother/(momentumMother*momentumMother)) + 1)));
1962 Double_t phiDSVert = candidateD0->Phi();
1963 Double_t thetaDSVert = candidateD0->Theta();
1965 candidateD0->GetCovarianceXYZPxPyPz(covMatrixDSVert);
1967 cp = TMath::Cos(phiDSVert);
1968 sp = TMath::Sin(phiDSVert);
1969 ct = TMath::Cos(thetaDSVert);
1970 st = TMath::Sin(thetaDSVert);
1972 errorMomentum = covMatrix[9]*cp*cp*ct*ct
1973 +covMatrix[13]*2.*cp*sp*ct*ct
1974 +covMatrix[18]*2.*cp*ct*st
1975 +covMatrix[14]*sp*sp*ct*ct
1976 +covMatrix[19]*2.*sp*ct*st
1977 +covMatrix[20]*st*st;
1978 Double_t normalizedDecayTimeToDStar = candidateD0toDStar->NormalizedDecayLength(vertexDStar) / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother*errorMomentum*errorMomentum/(momentumMother*momentumMother)) + 1)));
1982 cutVariableValue = pointingAngleToDStar;
1989 cutVariableValue = d0D0DSVert;
1996 cutVariableValue = d0FirstDaughterToDStar;
2003 cutVariableValue = d0SecondDaughterToDStar;
2010 cutVariableValue = impactProductToDStar;
2017 cutVariableValue = impactProductXYToDStar;
2024 cutVariableValue = normDecayLengthToDStar;
2031 cutVariableValue = pseudoProperDecayTimeToDStar;
2038 cutVariableValue = DecayTimeToDStar;
2045 cutVariableValue = normalizedDecayTimeToDStar;
2051 for (
Int_t i = 0; i < 39; ++i)
2053 if(bCutArray[i]==kTRUE){
2068 cout<<
"Cut matrice not inizialized. Exit..."<<endl;
2074 cout<<
"candidateD0 null"<<endl;
2078 AliAODTrack *candidatePion = (AliAODTrack*)candidateD0->GetDaughter(0);
2080 cout<<
"candidatePion null"<<endl;
2084 AliAODTrack *candidateKaon = (AliAODTrack*)candidateD0->GetDaughter(1);
2086 cout<<
"candidateKaon null"<<endl;
2090 AliAODVertex * vertexD0 = candidateD0->GetSecondaryVtx();
2092 cout<<
"vertexD0 null"<<endl;
2096 AliAODVertex * primaryVertex = aod->GetPrimaryVertex();
2098 cout<<
"primaryVertex null"<<endl;
2102 Int_t returnvalue=1;
2103 Bool_t bPassedCut = kFALSE;
2114 if(ptbin==-1)
return -1;
2117 Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
2121 prongs[0] = 211; prongs[1] = 321;
2122 Double_t invMassD0 = candidateD0->InvMass(2,prongs);
2123 Double_t invMassDifference = TMath::Abs(mD0PDG - invMassD0);
2126 prongs2[1] = 211; prongs2[0] = 321;
2127 Double_t invMassD02 = candidateD0->InvMass(2,prongs2);
2128 Double_t invMassDifference2 = TMath::Abs(mD0PDG - invMassD02);
2130 if(invMassDifference > invMassDifference2) invMassDifference = invMassDifference2;
2133 Double_t dcaMother = candidateD0->GetDCA();
2134 Double_t ptMother = candidateD0->Pt();
2135 Double_t momentumMother = candidateD0->P();
2136 Double_t ptPion = candidatePion->Pt();
2137 Double_t ptKaon = candidateKaon->Pt();
2139 AliExternalTrackParam motherTrack;
2140 motherTrack.CopyFromVTrack(candidateD0);
2142 motherTrack.PropagateToDCA(primaryVertex,bz,100.,d0z0,covd0z0);
2144 Double_t d0Mother = TMath::Abs(d0[0]);
2145 Double_t d0firstTrack = TMath::Abs(candidateD0->Getd0Prong(0));
2146 Double_t d0secondTrack = TMath::Abs(candidateD0->Getd0Prong(1));
2151 Double_t angleBetweenBothDaughters = (candidateKaon->Px() * candidatePion->Px() + candidateKaon->Py() * candidatePion->Py() + candidateKaon->Pz() * candidatePion->Pz()) /(candidateKaon->P() * candidatePion->P());
2152 Double_t angleMotherFirstDaughter = (candidateD0->Px() * candidatePion->Px() + candidateD0->Py() * candidatePion->Py() + candidateD0->Pz() * candidatePion->Pz()) /(candidateD0->P() * candidatePion->P());
2153 Double_t angleMotherSecondDaughter = (candidateD0->Px() * candidateKaon->Px() + candidateD0->Py() * candidateKaon->Py() + candidateD0->Pz() * candidateKaon->Pz()) /(candidateD0->P() * candidateKaon->P());
2155 Double_t cosThetaStar = candidateD0->CosThetaStar(0,421,211,321);
2156 Double_t vertexDistance = vertexD0->DistanceToVertex(primaryVertex);
2158 Double_t pdgMassMother = TDatabasePDG::Instance()->GetParticle(421)->Mass();
2159 Double_t pseudoProperDecayLength = ((vertexD0->GetX() - primaryVertex->GetX()) * candidateD0->Px() / TMath::Abs(candidateD0->Pt())) + ((vertexD0->GetY() - primaryVertex->GetY()) * candidateD0->Py() / TMath::Abs(candidateD0->Pt()));
2160 Double_t pseudoProperDecayTime = pseudoProperDecayLength * pdgMassMother/ptMother;
2161 Double_t decayTime = vertexDistance / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother/(momentumMother*momentumMother)) + 1)));
2164 Double_t theta = candidateD0->Theta();
2166 candidateD0->GetCovarianceXYZPxPyPz(covMatrix);
2173 Double_t errorMomentum = covMatrix[9]*cp*cp*ct*ct
2174 +covMatrix[13]*2.*cp*sp*ct*ct
2175 +covMatrix[18]*2.*cp*ct*st
2176 +covMatrix[14]*sp*sp*ct*ct
2177 +covMatrix[19]*2.*sp*ct*st
2178 +covMatrix[20]*st*st;
2179 Double_t normalizedDecayTime = candidateD0->
NormalizedDecayLength() / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother*errorMomentum*errorMomentum/(momentumMother*momentumMother)) + 1)));
2182 Double_t distanceXYToVertex = vertexD0->DistanceXYToVertex(primaryVertex);
2184 Double_t chi2Vertex = vertexD0->GetChi2perNDF();
2191 for(
Int_t ipr=0; ipr<2; ipr++)
2196 if(errdiffIP>0.) normdd0=diffIP/errdiffIP;
2197 if(ipr==0) dd0pr1=normdd0;
2198 if(ipr==1) dd0pr2=normdd0;
2200 if(TMath::Abs(dd0pr1)>TMath::Abs(dd0pr2)) {dd0max=dd0pr1; dd0min=dd0pr2;}
2201 else {dd0max=dd0pr2; dd0min=dd0pr1;}
2205 Int_t nCutIndex = 0;
2210 cutVariableValue = invMassDifference;
2224 cutVariableValue = pointingAngle;
2231 cutVariableValue = dcaMother;
2238 cutVariableValue = ptMother;
2245 cutVariableValue = ptKaon;
2252 cutVariableValue = ptPion;
2259 cutVariableValue = d0Mother;
2266 cutVariableValue = d0firstTrack;
2273 cutVariableValue = d0secondTrack;
2280 cutVariableValue = impactProduct;
2287 cutVariableValue = impactProductXY;
2294 cutVariableValue = angleBetweenBothDaughters;
2301 cutVariableValue = angleMotherFirstDaughter;
2308 cutVariableValue = angleMotherSecondDaughter;
2315 cutVariableValue = cosThetaStar;
2322 cutVariableValue = vertexDistance;
2329 cutVariableValue = pseudoProperDecayTime;
2336 cutVariableValue = decayTime;
2343 cutVariableValue = normalizedDecayTime;
2350 cutVariableValue = normDecayLength;
2357 cutVariableValue = dd0pr1;
2364 cutVariableValue = dd0pr2;
2371 cutVariableValue = dd0max;
2378 cutVariableValue = dd0min;
2385 cutVariableValue = cosPointingAngleXY;
2392 cutVariableValue = distanceXYToVertex;
2399 cutVariableValue = normalizedDecayLengthXY;
2406 cutVariableValue = chi2Vertex;
2413 for (
Int_t i = 0; i < 29; ++i)
2415 if(bCutArray[i]==kTRUE){
2430 cout<<
"Cut matrice not inizialized. Exit..."<<endl;
2435 if(!candidateDStar){
2436 cout<<
"candidateDStar null"<<endl;
2442 cout<<
"candidateD0 null"<<endl;
2446 AliAODTrack *candidatePion = (AliAODTrack*)candidateD0->GetDaughter(0);
2448 cout<<
"candidatePion null"<<endl;
2452 AliAODTrack *candidateKaon = (AliAODTrack*)candidateD0->GetDaughter(1);
2454 cout<<
"candidateKaon null"<<endl;
2458 AliAODVertex * vertexDStar = candidateDStar->GetSecondaryVtx();
2460 cout<<
"vertexDStar null"<<endl;
2464 AliAODVertex * vertexD0 = candidateD0->GetSecondaryVtx();
2466 cout<<
"vertexD0 null"<<endl;
2470 AliAODVertex * primaryVertex = aod->GetPrimaryVertex();
2472 cout<<
"primaryVertex null"<<endl;
2476 Int_t returnvalue=1;
2477 Bool_t bPassedCut = kFALSE;
2488 if(ptbin==-1)
return -1;
2491 Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
2494 Int_t chargeDStar = candidateDStar->Charge();
2501 else if (chargeDStar==-1)
2508 cout <<
"Wrong charge DStar." << endl;
2511 Double_t invMassD0 = candidateD0->InvMass(2,prongs);
2512 Double_t invMassDifference = TMath::Abs(mD0PDG - invMassD0);
2515 Double_t dcaMother = candidateD0->GetDCA();
2516 Double_t ptMother = candidateD0->Pt();
2517 Double_t momentumMother = candidateD0->P();
2518 Double_t ptPion = candidatePion->Pt();
2519 Double_t ptKaon = candidateKaon->Pt();
2521 AliExternalTrackParam motherTrack;
2522 motherTrack.CopyFromVTrack(candidateD0);
2524 motherTrack.PropagateToDCA(primaryVertex,bz,100.,d0z0,covd0z0);
2526 Double_t d0Mother = TMath::Abs(d0[0]);
2527 Double_t d0firstTrack = TMath::Abs(candidateD0->Getd0Prong(0));
2528 Double_t d0secondTrack = TMath::Abs(candidateD0->Getd0Prong(1));
2533 Double_t angleBetweenBothDaughters = (candidateKaon->Px() * candidatePion->Px() + candidateKaon->Py() * candidatePion->Py() + candidateKaon->Pz() * candidatePion->Pz()) /(candidateKaon->P() * candidatePion->P());
2534 Double_t angleMotherFirstDaughter = (candidateD0->Px() * candidatePion->Px() + candidateD0->Py() * candidatePion->Py() + candidateD0->Pz() * candidatePion->Pz()) /(candidateD0->P() * candidatePion->P());
2535 Double_t angleMotherSecondDaughter = (candidateD0->Px() * candidateKaon->Px() + candidateD0->Py() * candidateKaon->Py() + candidateD0->Pz() * candidateKaon->Pz()) /(candidateD0->P() * candidateKaon->P());
2537 Double_t cosThetaStar = candidateD0->CosThetaStar(0,421,211,321);
2538 Double_t vertexDistance = vertexD0->DistanceToVertex(primaryVertex);
2540 Double_t pdgMassMother = TDatabasePDG::Instance()->GetParticle(421)->Mass();
2541 Double_t pseudoProperDecayLength = ((vertexD0->GetX() - primaryVertex->GetX()) * candidateD0->Px() / TMath::Abs(candidateD0->Pt())) + ((vertexD0->GetY() - primaryVertex->GetY()) * candidateD0->Py() / TMath::Abs(candidateD0->Pt()));
2542 Double_t pseudoProperDecayTime = pseudoProperDecayLength * pdgMassMother/ptMother;
2543 Double_t decayTime = vertexDistance / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother/(momentumMother*momentumMother)) + 1)));
2546 Double_t theta = candidateD0->Theta();
2548 candidateD0->GetCovarianceXYZPxPyPz(covMatrix);
2555 Double_t errorMomentum = covMatrix[9]*cp*cp*ct*ct
2556 +covMatrix[13]*2.*cp*sp*ct*ct
2557 +covMatrix[18]*2.*cp*ct*st
2558 +covMatrix[14]*sp*sp*ct*ct
2559 +covMatrix[19]*2.*sp*ct*st
2560 +covMatrix[20]*st*st;
2561 Double_t normalizedDecayTime = candidateD0->
NormalizedDecayLength() / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother*errorMomentum*errorMomentum/(momentumMother*momentumMother)) + 1)));
2564 Double_t distanceXYToVertex = vertexD0->DistanceXYToVertex(primaryVertex);
2566 Double_t chi2Vertex = vertexD0->GetChi2perNDF();
2573 for(
Int_t ipr=0; ipr<2; ipr++)
2578 if(errdiffIP>0.) normdd0=diffIP/errdiffIP;
2579 if(ipr==0) dd0pr1=normdd0;
2580 if(ipr==1) dd0pr2=normdd0;
2582 if(TMath::Abs(dd0pr1)>TMath::Abs(dd0pr2)) {dd0max=dd0pr1; dd0min=dd0pr2;}
2583 else {dd0max=dd0pr2; dd0min=dd0pr1;}
2587 Int_t nCutIndex = 0;
2592 cutVariableValue = invMassDifference;
2606 cutVariableValue = pointingAngle;
2613 cutVariableValue = dcaMother;
2620 cutVariableValue = ptMother;
2627 cutVariableValue = ptKaon;
2634 cutVariableValue = ptPion;
2641 cutVariableValue = d0Mother;
2648 cutVariableValue = d0firstTrack;
2655 cutVariableValue = d0secondTrack;
2662 cutVariableValue = impactProduct;
2669 cutVariableValue = impactProductXY;
2676 cutVariableValue = angleBetweenBothDaughters;
2683 cutVariableValue = angleMotherFirstDaughter;
2690 cutVariableValue = angleMotherSecondDaughter;
2697 cutVariableValue = cosThetaStar;
2704 cutVariableValue = vertexDistance;
2711 cutVariableValue = pseudoProperDecayTime;
2718 cutVariableValue = decayTime;
2725 cutVariableValue = normalizedDecayTime;
2732 cutVariableValue = normDecayLength;
2739 cutVariableValue = dd0pr1;
2746 cutVariableValue = dd0pr2;
2753 cutVariableValue = dd0max;
2760 cutVariableValue = dd0min;
2767 cutVariableValue = cosPointingAngleXY;
2774 cutVariableValue = distanceXYToVertex;
2781 cutVariableValue = normalizedDecayLengthXY;
2788 cutVariableValue = chi2Vertex;
2793 AliAODRecoDecay* candidateD0toDStar = (AliAODRecoDecay*)candidateD0;
2794 AliExternalTrackParam pionD0Track;
2795 AliExternalTrackParam kaonD0Track;
2797 Double_t d0z0DSVert[2],covd0z0DSVert[3],d0DSVert[2];
2799 pionD0Track.CopyFromVTrack(candidatePion);
2800 pionD0Track.PropagateToDCA(vertexDStar,bz,100.,d0z0DSVert,covd0z0DSVert);
2801 d0DSVert[0] = d0z0DSVert[0];
2803 kaonD0Track.CopyFromVTrack(candidateKaon);
2804 kaonD0Track.PropagateToDCA(vertexDStar,bz,100.,d0z0DSVert,covd0z0DSVert);
2805 d0DSVert[1] = d0z0DSVert[0];
2807 AliExternalTrackParam D0Track;
2808 D0Track.CopyFromVTrack(candidateD0);
2809 Double_t d0z0D0DSVert[2],covd0z0D0DSVert[3],d0D0DSVert;
2810 motherTrack.PropagateToDCA(vertexDStar,bz,100.,d0z0D0DSVert,covd0z0D0DSVert);
2811 d0D0DSVert = TMath::Abs(d0z0D0DSVert[0]);
2813 Double_t impactProductToDStar = d0DSVert[0]*d0DSVert[1];
2814 Double_t impactProductXYToDStar = candidateD0toDStar->ImpParXY(vertexDStar);
2816 Double_t pointingAngleToDStar = candidateD0toDStar->CosPointingAngle(vertexDStar);
2817 Double_t d0FirstDaughterToDStar = TMath::Abs(d0DSVert[0]);
2818 Double_t d0SecondDaughterToDStar = TMath::Abs(d0DSVert[1]);
2819 Double_t normDecayLengthToDStar = candidateD0toDStar->NormalizedDecayLength(vertexDStar);
2821 Double_t pseudoProperDecayLengthDSVert = ((vertexD0->GetX() - vertexDStar->GetX()) * candidateD0->Px() / TMath::Abs(candidateD0->Pt())) + ((vertexD0->GetY() - vertexDStar->GetY()) * candidateD0->Py() / TMath::Abs(candidateD0->Pt()));
2822 Double_t pseudoProperDecayTimeToDStar = pseudoProperDecayLengthDSVert * pdgMassMother/ptMother;
2823 Double_t DecayTimeToDStar = vertexDistance / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother/(momentumMother*momentumMother)) + 1)));
2825 Double_t phiDSVert = candidateD0->Phi();
2826 Double_t thetaDSVert = candidateD0->Theta();
2828 candidateD0->GetCovarianceXYZPxPyPz(covMatrixDSVert);
2830 cp = TMath::Cos(phiDSVert);
2831 sp = TMath::Sin(phiDSVert);
2832 ct = TMath::Cos(thetaDSVert);
2833 st = TMath::Sin(thetaDSVert);
2835 errorMomentum = covMatrix[9]*cp*cp*ct*ct
2836 +covMatrix[13]*2.*cp*sp*ct*ct
2837 +covMatrix[18]*2.*cp*ct*st
2838 +covMatrix[14]*sp*sp*ct*ct
2839 +covMatrix[19]*2.*sp*ct*st
2840 +covMatrix[20]*st*st;
2841 Double_t normalizedDecayTimeToDStar = candidateD0toDStar->NormalizedDecayLength(vertexDStar) / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother*errorMomentum*errorMomentum/(momentumMother*momentumMother)) + 1)));
2845 cutVariableValue = pointingAngleToDStar;
2852 cutVariableValue = d0D0DSVert;
2859 cutVariableValue = d0FirstDaughterToDStar;
2866 cutVariableValue = d0SecondDaughterToDStar;
2873 cutVariableValue = impactProductToDStar;
2880 cutVariableValue = impactProductXYToDStar;
2887 cutVariableValue = normDecayLengthToDStar;
2894 cutVariableValue = pseudoProperDecayTimeToDStar;
2901 cutVariableValue = DecayTimeToDStar;
2908 cutVariableValue = normalizedDecayTimeToDStar;
2914 for (
Int_t i = 0; i < 39; ++i)
2916 if(bCutArray[i]==kTRUE){
2931 cout<<
"Cut matrice not inizialized. Exit..."<<endl;
2936 if(!candidateDStar){
2937 cout<<
"candidateDStar null"<<endl;
2943 cout<<
"candidateD0 null"<<endl;
2947 AliAODTrack *candidatePion = (AliAODTrack*)candidateDStar->GetDaughter(0);
2949 cout<<
"candidatePion null"<<endl;
2953 AliAODVertex * vertexDStar = candidateDStar->GetSecondaryVtx();
2955 cout<<
"vertexDStar null"<<endl;
2959 AliAODVertex * primaryVertex = aod->GetPrimaryVertex();
2961 cout<<
"primaryVertex null"<<endl;
2965 Int_t returnvalue=1;
2966 Bool_t bPassedCut = kFALSE;
2976 if(ptbin==-1)
return -1;
2979 Double_t mDSPDG = TDatabasePDG::Instance()->GetParticle(413)->Mass();
2980 Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
2987 prongs[0] = 211; prongs[1] = 421;
2988 Double_t invMassDStar = candidateDStar->InvMass(2,prongs);
2989 Double_t invMassDifference = TMath::Abs(mDSPDG - invMassDStar);
2993 Double_t dcaMother = candidateDStar->GetDCA();
2994 Double_t ptMother = candidateDStar->Pt();
2995 Double_t momentumMother = candidateDStar->P();
2997 Double_t ptPion = candidatePion->Pt();
2999 AliExternalTrackParam motherTrack;
3000 motherTrack.CopyFromVTrack(candidateDStar);
3002 motherTrack.PropagateToDCA(primaryVertex,bz,100.,d0z0,covd0z0);
3004 Double_t d0Mother = TMath::Abs(d0[0]);
3005 Double_t d0firstTrack = TMath::Abs(candidateDStar->Getd0Prong(0));
3006 Double_t d0secondTrack = TMath::Abs(candidateDStar->Getd0Prong(1));
3011 Double_t angleBetweenBothDaughters = (candidateD0->Px() * candidatePion->Px() + candidateD0->Py() * candidatePion->Py() + candidateD0->Pz() * candidatePion->Pz()) /(candidateD0->P() * candidatePion->P());
3012 Double_t angleMotherFirstDaughter = (candidateDStar->Px() * candidatePion->Px() + candidateDStar->Py() * candidatePion->Py() + candidateDStar->Pz() * candidatePion->Pz()) /(candidateDStar->P() * candidatePion->P());
3013 Double_t angleMotherSecondDaughter = (candidateDStar->Px() * candidateD0->Px() + candidateDStar->Py() * candidateD0->Py() + candidateDStar->Pz() * candidateD0->Pz()) /(candidateDStar->P() * candidateD0->P());
3015 Double_t cosThetaStar = candidateDStar->CosThetaStar(0,413,211,421);
3016 Double_t vertexDistance = vertexDStar->DistanceToVertex(primaryVertex);
3018 Double_t pdgMassMother = TDatabasePDG::Instance()->GetParticle(413)->Mass();
3019 Double_t pseudoProperDecayLength = ((vertexDStar->GetX() - primaryVertex->GetX()) * candidateDStar->Px() / TMath::Abs(candidateDStar->Pt())) + ((vertexDStar->GetY() - primaryVertex->GetY()) * candidateDStar->Py() / TMath::Abs(candidateDStar->Pt()));
3020 Double_t pseudoProperDecayTime = pseudoProperDecayLength * pdgMassMother/ptMother;
3021 Double_t decayTime = vertexDistance / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother/(momentumMother*momentumMother)) + 1)));
3023 Double_t phi = candidateDStar->Phi();
3024 Double_t theta = candidateDStar->Theta();
3026 candidateDStar->GetCovarianceXYZPxPyPz(covMatrix);
3033 Double_t errorMomentum = covMatrix[9]*cp*cp*ct*ct
3034 +covMatrix[13]*2.*cp*sp*ct*ct
3035 +covMatrix[18]*2.*cp*ct*st
3036 +covMatrix[14]*sp*sp*ct*ct
3037 +covMatrix[19]*2.*sp*ct*st
3038 +covMatrix[20]*st*st;
3039 Double_t normalizedDecayTime = candidateDStar->
NormalizedDecayLength() / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother*errorMomentum*errorMomentum/(momentumMother*momentumMother)) + 1)));
3042 Double_t distanceXYToVertex = vertexDStar->DistanceXYToVertex(primaryVertex);
3044 Double_t chi2Vertex = vertexDStar->GetChi2perNDF();
3051 for(
Int_t ipr=0; ipr<2; ipr++)
3056 if(errdiffIP>0.) normdd0=diffIP/errdiffIP;
3057 if(ipr==0) dd0pr1=normdd0;
3058 if(ipr==1) dd0pr2=normdd0;
3060 if(TMath::Abs(dd0pr1)>TMath::Abs(dd0pr2)) {dd0max=dd0pr1; dd0min=dd0pr2;}
3061 else {dd0max=dd0pr2; dd0min=dd0pr1;}
3065 Int_t nCutIndex = 0;
3070 cutVariableValue = invMassDifference;
3077 cutVariableValue = invMassDelta;
3084 cutVariableValue = pointingAngle;
3091 cutVariableValue = dcaMother;
3098 cutVariableValue = ptMother;
3105 cutVariableValue = ptD0;
3112 cutVariableValue = ptPion;
3119 cutVariableValue = d0Mother;
3126 cutVariableValue = d0firstTrack;
3133 cutVariableValue = d0secondTrack;
3140 cutVariableValue = impactProduct;
3147 cutVariableValue = impactProductXY;
3154 cutVariableValue = angleBetweenBothDaughters;
3161 cutVariableValue = angleMotherFirstDaughter;
3168 cutVariableValue = angleMotherSecondDaughter;
3175 cutVariableValue = cosThetaStar;
3182 cutVariableValue = vertexDistance;
3189 cutVariableValue = pseudoProperDecayTime;
3196 cutVariableValue = decayTime;
3203 cutVariableValue = normalizedDecayTime;
3210 cutVariableValue = normDecayLength;
3217 cutVariableValue = dd0pr1;
3224 cutVariableValue = dd0pr2;
3231 cutVariableValue = dd0max;
3238 cutVariableValue = dd0min;
3245 cutVariableValue = cosPointingAngleXY;
3252 cutVariableValue = distanceXYToVertex;
3259 cutVariableValue = normalizedDecayLengthXY;
3266 cutVariableValue = chi2Vertex;
3273 for (
Int_t i = 0; i < 29; ++i)
3275 if(bCutArray[i]==kTRUE){
3363 if(!
fUsePID)
return isParticle;
3367 Bool_t TPCon=TMath::Abs(2)>1e-4?kTRUE:kFALSE;
3368 Bool_t TOFon=TMath::Abs(3)>1e-4?kTRUE:kFALSE;
3392 isParticle = isTPC&&isTOF;
3404 for (
Int_t i=0; i<5; i++) {
3405 if (prob[i]>max) {k=i; max=prob[i];}
3407 isParticle =
Bool_t(k==type);
3410 if (match == 10 || match == 11) {
3414 isParticle = checkTPC >= 0 && checkTOF >= 0 ? kTRUE : kFALSE;
3416 isParticle = isParticle && checkTPC+checkTOF >= 1 ? kTRUE : kFALSE;
3430 if (TPCok != -1 && TOFok != -1) {
3432 isParticle = TMath::Sqrt(nSigmaTPC*nSigmaTPC + nSigmaTOF*nSigmaTOF) <= radius ? kTRUE : kFALSE;
3437 isParticle = nSigmaTPC <= radius ? kTRUE : kFALSE;
3440 isParticle = nSigmaTOF <= radius ? kTRUE : kFALSE;
3455 Int_t chargeDStar = DStar->Charge();
3465 else if (chargeDStar==-1)
3474 cout <<
"Wrong charge DStar." << endl;
3477 e[2]=DStar->EProng(0,211);
3480 Double_t invMassDStar = TMath::Sqrt(esum*esum-DStar->P2());
3483 return invMassDStar - invMassD0;
3493 Int_t chargeDStar = DStar->Charge();
3503 else if (chargeDStar==-1)
3512 cout <<
"Wrong charge DStar." << endl;
3515 e[0]=DStar->EProng(0,211);
3516 e[3]=B0->EProng(0,211);
3518 Double_t esum = e[0]+e[1]+e[2]+e[3];
3519 Double_t invMassB0 = TMath::Sqrt(esum*esum-B0->P2());
3523 return invMassB0 - invMassD0;
3540 AliFatal(
"exiting");
3544 AliFatal(
"exiting");
3558 cout<<
"Overflow, exit..."<<endl;
3576 AliFatal(
"exiting");
3607 printf(
"Changing the pt bins\n");
3611 cout<<
"Warning: ptBinLimits dimension "<<nPtBinLimits<<
" != nPtBins+1 ("<<
fnPtBinsD0forD0ptbin+1<<
")\nSetting nPtBins to "<<nPtBinLimits-1<<endl;
3640 AliFatal(
"exiting");
3644 AliFatal(
"exiting");
3657 cout<<
"Overflow, exit..."<<endl;
3674 AliFatal(
"exiting");
3705 printf(
"Changing the pt bins\n");
3709 cout<<
"Warning: ptBinLimits dimension "<<nPtBinLimits<<
" != nPtBins+1 ("<<
fnPtBinsD0forDStarptbin+1<<
")\nSetting nPtBins to "<<nPtBinLimits-1<<endl;
3739 AliFatal(
"exiting");
3743 AliFatal(
"exiting");
3756 cout<<
"Overflow, exit..."<<endl;
3773 AliFatal(
"exiting");
3804 printf(
"Changing the pt bins\n");
3808 cout<<
"Warning: ptBinLimits dimension "<<nPtBinLimits<<
" != nPtBins+1 ("<<
fnPtBinsDStarforDStarptbin+1<<
")\nSetting nPtBins to "<<nPtBinLimits-1<<endl;
3833 if(bCut == kTRUE) {bCutArray[nCutIndex] = 1;
return 0;}
3851 if(bCut == kTRUE) {bCutArray[nCutIndex] = 1;
return 0;}
3868 if(bCut == kTRUE) {bCutArray[nCutIndex] = 1;
return 0;}
3885 if(bCut == kTRUE) {bCutArray[nCutIndex] = 1;
return 0;}
3905 for(
Int_t iv=0; iv<nVars; iv++) {
3928 for(
Int_t iv=0; iv<nVars; iv++) {
3951 for(
Int_t iv=0; iv<nVars; iv++) {
3981 cout<<
"Overflow, exit..."<<endl;
4013 cout<<
"Overflow, exit..."<<endl;
4043 cout<<
"Overflow, exit..."<<endl;
4074 cout<<
"Overflow, exit..."<<endl;
Int_t fMinITSNclsD0FirstDaughter
Double_t fMind0D0SecondDaughter
Double_t NormalizedDecayLengthXY() const
Bool_t fUseFilterBitD0SecondDaughter
Int_t fIsSelectedCuts
fix the daughter track references
Int_t fnPtBinsD0forD0ptbin
void SetVarNamesDStarforDStarptbin(Int_t nVars, TString *varNames, Bool_t *isUpperCut)
Double_t NormalizedDecayLength() const
Int_t GetGlobalIndexDStarforDStarptbin(Int_t iVar, Int_t iPtBin) const
void SetSoftSelectionArrayITSDStarPion(const Bool_t array[7]=0)
Bool_t GetIsUpperCutDStarforDStarptbin(Int_t nCutIndex)
virtual Int_t SelectPID(AliAODTrack *track, Int_t type)
Double_t fMinPtD0SecondDaughter
void Getd0MeasMinusExpProng(Int_t ip, Double_t magf, Double_t &d0diff, Double_t &errd0diff) const
Int_t GetnSigmaTOF(AliAODTrack *track, Int_t species, Double_t &sigma) const
void SetNPtBinsD0forD0ptbin(Int_t nptBins)
void SetNPtBinsD0forDStarptbin(Int_t nptBins)
Int_t ApplyCutOnVariable(Int_t nCutIndex, Int_t ptbin, Float_t cutVariableValue, Bool_t bCutArray[97])
void SetCutsD0forDStarptbin(Int_t nVars, Int_t nPtBins, Float_t **cutsRDD0forDStarptbin)
Float_t * fCutsRDDStarforDStarptbin
void SetSoftSelectionArrayITSB0Pion(const Bool_t array[7]=0)
Float_t * fCutsRDD0forD0ptbin
Bool_t fHardSelectionArrayITSD0SecondDaughter[7]
virtual Int_t IsSelectedPID(AliAODRecoDecayHF *rd)
void SetCutsDStarforDStarptbin(Int_t nVars, Int_t nPtBins, Float_t **cutsRDDStarforDStarptbin)
Bool_t IsKaonRaw(AliAODTrack *track, TString detector) const
Int_t fGlobalIndexDStarforDStarptbin
Bool_t GetIsCutUsedD0forD0ptbin(Int_t nCutIndex, Int_t ptbin) const
Int_t fnPtBinsDStarforDStarptbin
Double_t DeltaInvMassDStarKpipi(AliAODRecoDecayHF2Prong *DStar) const
Int_t GetnSigmaTPC(AliAODTrack *track, Int_t species, Double_t &sigma) const
Int_t GetNVarsDStarforDStarptbin() const
void SetHardSelectionArrayITSB0Pion(const Bool_t array[7]=0)
void SetIsCutUsedD0forDStarptbin(Int_t nCutIndex, Int_t ptbin, Bool_t isCutUsed)
Double_t ImpParXY() const
Int_t IsDStarFromB0Selected(Double_t pt, TObject *obj, Int_t selectionLevel, AliAODEvent *aod, Bool_t *bCutArray)
Double_t fMaxDCADStarPionD0
Double_t fMaxAbsEtaDStarPion
Bool_t GetIsUpperCutD0forD0ptbin(Int_t nCutIndex)
void InvMass(Int_t icalo, TString particle, TString fileName)
Int_t fMinTPCNclsDStarPion
Bool_t fUseITSRefitD0FirstDaughter
void SetNVars(Int_t nVars)
Bool_t fSoftSelectionArrayITSB0Pion[7]
Bool_t fUseTPCRefitDStarPion
Int_t PtBinDStarforDStarptbin(Double_t pt) const
Bool_t fUseFilterBitB0Pion
Bool_t * fIsCutUsedDStarforDStarptbin
Double_t CosPointingAngleXY() const
void SetPtBinsDStarforDStarptbin(Int_t nPtBinLimits, Float_t *ptBinLimits)
void SetCutsD0forD0ptbin(Int_t nVars, Int_t nPtBins, Float_t **cutsRDD0forD0ptbin)
Int_t IsD0forD0ptbinSelected(TObject *obj, Int_t selectionLevel, AliAODEvent *aod, Bool_t *bCutArray)
virtual ~AliRDHFCutsB0toDStarPi()
Bool_t GetIsCutUsedD0forDStarptbin(Int_t nCutIndex, Int_t ptbin) const
Bool_t * fIsUpperCutD0forD0ptbin
Double_t Prodd0d0() const
TString * fVarNamesDStarforDStarptbin
void SetCutD0forD0ptbin(Int_t nCutIndex, Int_t ptBin, AliRDHFCutsB0toDStarPi::EUpperCut cutDirection, Float_t cutValue)
AliRDHFCuts & operator=(const AliRDHFCuts &source)
void SetNVarsD0forDStarptbin(Int_t nVars)
void SetNVarsD0forD0ptbin(Int_t nVars)
Int_t PtBinD0forDStarptbin(Double_t pt) const
void SetPtBinsD0forD0ptbin(Int_t nPtBinLimits, Float_t *ptBinLimits)
void SetGlobalIndexDStarforDStarptbin()
Int_t fMinITSNclsDStarPion
Int_t fNSoftITSCutD0FirstDaughter
Bool_t * fIsCutUsedD0forD0ptbin
Int_t ApplyCutOnVariableD0forD0ptbin(Int_t nCutIndex, Int_t ptbin, Float_t cutVariableValue, Bool_t bCutArray[29])
Int_t fMinITSNclsD0SecondDaughter
Bool_t fUseTPCRefitB0Pion
Bool_t fUseITSRefitDStarPion
Int_t CheckBands(AliPID::EParticleType specie, AliPIDResponse::EDetector detector, AliAODTrack *track)
Int_t fFilterBitDStarPion
Bool_t * GetIsUpperCut() const
void SetCut(Int_t nCutIndex, Int_t ptBin, AliRDHFCutsB0toDStarPi::EUpperCut cutDirection, Float_t cutValue)
Int_t fFilterBitD0SecondDaughter
Int_t fnPtBinsD0forDStarptbin
void SetIsCutUsedDStarforDStarptbin(Int_t nCutIndex, Int_t ptbin, Bool_t isCutUsed)
Bool_t GetIsCutUsed(Int_t nCutIndex, Int_t ptbin) const
Bool_t fHardSelectionArrayITSDStarPion[7]
void SetHardSelectionArrayITSD0FirstDaughter(const Bool_t array[7]=0)
void SetHardSelectionArrayITSD0SecondDaughter(const Bool_t array[7]=0)
void SetGlobalIndexD0forD0ptbin()
void SetIsCutUsedD0forD0ptbin(Int_t nCutIndex, Int_t ptbin, Bool_t isCutUsed)
Bool_t * fIsUpperCutDStarforDStarptbin
void SetIsCutUsed(Int_t nCutIndex, Int_t ptbin, Bool_t isCutUsed)
virtual Int_t IsSelected(TObject *obj, Int_t selectionLevel, AliAODEvent *aod, Bool_t *bCutArray)
Double_t fMaxAbsEtaD0FirstDaughter
Int_t fNSoftITSCutDStarPion
TString * fVarNamesD0forD0ptbin
void SetPtBinsD0forDStarptbin(Int_t nPtBinLimits, Float_t *ptBinLimits)
Bool_t * fIsUpperCutD0forDStarptbin
Bool_t fSoftSelectionArrayITSDStarPion[7]
AliRDHFCutsB0toDStarPi & operator=(const AliRDHFCutsB0toDStarPi &source)
Int_t fMinTPCNclsD0SecondDaughter
Bool_t CheckStatus(AliAODTrack *track, TString detectors) const
Bool_t fUseFilterBitD0FirstDaughter
Int_t IsDStarforDStarptbinSelected(TObject *obj, Int_t selectionLevel, AliAODEvent *aod, Bool_t *bCutArray)
Bool_t GetIsCutUsedDStarforDStarptbin(Int_t nCutIndex, Int_t ptbin) const
Int_t fnVarsDStarforDStarptbin
Int_t GetNPtBinsD0forD0ptbin() const
Bool_t fUseTPCRefitD0SecondDaughter
void SetNVarsDStarforDStarptbin(Int_t nVars)
Double_t fMaxAbsEtaD0SecondDaughter
Bool_t fUseITSRefitB0Pion
Int_t fNSoftITSCutD0SecondDaughter
void SetSoftSelectionArrayITSD0SecondDaughter(const Bool_t array[7]=0)
Double_t fMinPtD0FirstDaughter
Int_t fIsSelectedPID
outcome of cuts selection
Int_t fMinTPCNclsD0FirstDaughter
void SetCutD0forDStarptbin(Int_t nCutIndex, Int_t ptBin, AliRDHFCutsB0toDStarPi::EUpperCut cutDirection, Float_t cutValue)
Float_t * fCutsRDD0forDStarptbin
virtual Bool_t IsInFiducialAcceptance(Double_t pt, Double_t y) const
Bool_t fHardSelectionArrayITSB0Pion[7]
Double_t fMaxAbsEtaB0Pion
Bool_t fUseFilterBitDStarPion
Double_t fMind0D0FirstDaughter
Float_t * fCutsRD
fnVars*fnPtBins
Float_t * fPtBinLimitsDStarforDStarptbin
Float_t * fPtBinLimitsD0forDStarptbin
Int_t fnPtBinLimitsDStarforDStarptbin
void SetGlobalIndexD0forDStarptbin()
void SetVarsForOpt(Int_t nVars, Bool_t *forOpt)
void SetVarNames(Int_t nVars, TString *varNames, Bool_t *isUpperCut)
Bool_t fUseTPCRefitD0FirstDaughter
Int_t fGlobalIndexD0forDStarptbin
Bool_t GetIsUpperCutD0forDStarptbin(Int_t nCutIndex)
Int_t GetNVarsD0forD0ptbin() const
Int_t IsD0FromDStarSelected(Double_t pt, TObject *obj, Int_t selectionLevel, AliAODEvent *aod, Bool_t *bCutArray)
Bool_t IsPionRaw(AliAODTrack *track, TString detector) const
Int_t fnPtBinLimitsD0forD0ptbin
Int_t PtBinD0forD0ptbin(Double_t pt) const
void SetVarNamesD0forDStarptbin(Int_t nVars, TString *varNames, Bool_t *isUpperCut)
Double_t fMaxDCADStarPionB0Pion
void SetVarNamesD0forD0ptbin(Int_t nVars, TString *varNames, Bool_t *isUpperCut)
Bool_t * fIsCutUsedD0forDStarptbin
Int_t fFilterBitD0FirstDaughter
virtual void GetCutVarsForOpt(AliAODRecoDecayHF *d, Float_t *vars, Int_t nvars, Int_t *pdgdaughters)
Int_t ApplyCutOnVariableDStarforDStarptbin(Int_t nCutIndex, Int_t ptbin, Float_t cutVariableValue, Bool_t bCutArray[29])
Int_t GetGlobalIndexD0forD0ptbin(Int_t iVar, Int_t iPtBin) const
Float_t * fPtBinLimitsD0forD0ptbin
void SetCutDStarforDStarptbin(Int_t nCutIndex, Int_t ptBin, AliRDHFCutsB0toDStarPi::EUpperCut cutDirection, Float_t cutValue)
Int_t GetNPtBinsDStarforDStarptbin() const
void SetPtBins(Int_t nPtBinLimits, Float_t *ptBinLimits)
void SetNPtBinsDStarforDStarptbin(Int_t nptBins)
Int_t GetGlobalIndexD0forDStarptbin(Int_t iVar, Int_t iPtBin) const
void SetSoftSelectionArrayITSD0FirstDaughter(const Bool_t array[7]=0)
Int_t GetNVarsD0forDStarptbin() const
Int_t IsD0forDStarptbinSelected(TObject *obj, Int_t selectionLevel, AliAODEvent *aod, Bool_t *bCutArray)
Int_t GetNPtBinsD0forDStarptbin() const
Bool_t fHardSelectionArrayITSD0FirstDaughter[7]
Int_t fnPtBinLimitsD0forDStarptbin
Bool_t fSoftSelectionArrayITSD0FirstDaughter[7]
Bool_t fUseITSRefitD0SecondDaughter
Double_t CosPointingAngle() const
Int_t fnPtBins
cuts on the candidate
TString * fVarNamesD0forDStarptbin
Double_t DeltaInvMassB0Kpipipi(AliAODRecoDecayHF2Prong *B0) const
Bool_t fGetCutInfo
Radius for circular PID nsigma cut.
Int_t fGlobalIndexD0forD0ptbin
AliAODPidHF * fPidHF
enable AOD049 centrality cleanup
Int_t PtBin(Double_t pt) const
Bool_t fSoftSelectionArrayITSD0SecondDaughter[7]
Int_t GetGlobalIndex(Int_t iVar, Int_t iPtBin) const
Int_t ApplyCutOnVariableD0forDStarptbin(Int_t nCutIndex, Int_t ptbin, Float_t cutVariableValue, Bool_t bCutArray[39])
Int_t fnVarsD0forDStarptbin
AliRDHFCutsB0toDStarPi(const char *name="B0toDStarPiCuts")
void SetHardSelectionArrayITSDStarPion(const Bool_t array[7]=0)