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(0),
64 fnPtBinLimitsD0forD0ptbin(1),
65 fPtBinLimitsD0forD0ptbin(0),
66 fIsUpperCutD0forD0ptbin(0),
67 fIsCutUsedD0forD0ptbin(0),
68 fVarNamesD0forD0ptbin(0),
69 fnVarsD0forDStarptbin(0),
70 fnPtBinsD0forDStarptbin(0),
71 fGlobalIndexD0forDStarptbin(0),
72 fCutsRDD0forDStarptbin(0),
73 fnPtBinLimitsD0forDStarptbin(1),
74 fPtBinLimitsD0forDStarptbin(0),
75 fIsUpperCutD0forDStarptbin(0),
76 fIsCutUsedD0forDStarptbin(0),
77 fVarNamesD0forDStarptbin(0),
78 fnVarsDStarforDStarptbin(0),
79 fnPtBinsDStarforDStarptbin(1),
80 fGlobalIndexDStarforDStarptbin(0),
81 fCutsRDDStarforDStarptbin(0),
82 fnPtBinLimitsDStarforDStarptbin(1),
83 fPtBinLimitsDStarforDStarptbin(0),
84 fIsUpperCutDStarforDStarptbin(0),
85 fIsCutUsedDStarforDStarptbin(0),
86 fVarNamesDStarforDStarptbin(0),
89 fUseITSRefitD0Pion(0),
90 fUseTPCRefitD0Pion(0),
91 fUseFilterBitD0Pion(0),
96 fUseITSRefitD0Kaon(0),
97 fUseTPCRefitD0Kaon(0),
98 fUseFilterBitD0Kaon(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),
121 const Int_t nvars=85;
128 varNames[iterator++]=
"inv. mass width[GeV]";
129 varNames[iterator++]=
"delta mass width [GeV]";
130 varNames[iterator++]=
"pointing angle [Cos(theta)]";
131 varNames[iterator++]=
"dca [cm]";
132 varNames[iterator++]=
"Pt D0 [GeV/c]";
133 varNames[iterator++]=
"Pt first daughter [GeV/c]";
134 varNames[iterator++]=
"Pt second daughter [GeV/c]";
135 varNames[iterator++]=
"d0 D0 [cm]";
136 varNames[iterator++]=
"d0 first daughter [cm]";
137 varNames[iterator++]=
"d0 second daughter [cm]";
138 varNames[iterator++]=
"d0d0 [cm^2]";
139 varNames[iterator++]=
"d0d0 XY [cm^2]";
141 varNames[iterator++]=
"angle between both daughters";
142 varNames[iterator++]=
"angle mother with first daughter";
143 varNames[iterator++]=
"angle mother with second daughter";
144 varNames[iterator++]=
"cosThetaStar";
145 varNames[iterator++]=
"vertexDistance";
146 varNames[iterator++]=
"pseudoProperDecayTime";
147 varNames[iterator++]=
"DecayTime";
148 varNames[iterator++]=
"normalizedDecayTime";
149 varNames[iterator++]=
"normDecayLength";
150 varNames[iterator++]=
"topomatic first daughter";
151 varNames[iterator++]=
"topomatic second daughter";
152 varNames[iterator++]=
"topomatic max";
153 varNames[iterator++]=
"topomatic min";
156 varNames[iterator++]=
"pointingAngleToDStar";
157 varNames[iterator++]=
"d0MotherToDStar";
158 varNames[iterator++]=
"d0FirstDaughterToDStar";
159 varNames[iterator++]=
"d0SecondDaughterToDStar";
160 varNames[iterator++]=
"impactProductToDStar";
161 varNames[iterator++]=
"impactProductXYToDStar";
162 varNames[iterator++]=
"normDecayLengthToDStar";
163 varNames[iterator++]=
"pseudoProperDecayTimeToDStar";
164 varNames[iterator++]=
"DecayTimeToDStar";
165 varNames[iterator++]=
"normalizedDecayTimeToDStar";
169 varNames[iterator++]=
"inv. mass width[GeV]";
170 varNames[iterator++]=
"delta mass width [GeV]";
171 varNames[iterator++]=
"pointing angle [Cos(theta)]";
172 varNames[iterator++]=
"dca [cm]";
173 varNames[iterator++]=
"Pt DStar [GeV/c]";
174 varNames[iterator++]=
"Pt D0 [GeV/c]";
175 varNames[iterator++]=
"Pt Pion [GeV/c]";
176 varNames[iterator++]=
"d0 DStar [cm]";
177 varNames[iterator++]=
"d0 D0 [cm]";
178 varNames[iterator++]=
"d0 Pion [cm]";
179 varNames[iterator++]=
"d0d0 [cm^2]";
180 varNames[iterator++]=
"d0d0 XY [cm^2]";
182 varNames[iterator++]=
"angle between both daughters";
183 varNames[iterator++]=
"angle mother with first daughter";
184 varNames[iterator++]=
"angle mother with second daughter";
185 varNames[iterator++]=
"cosThetaStar";
186 varNames[iterator++]=
"vertexDistance";
187 varNames[iterator++]=
"pseudoProperDecayTime";
188 varNames[iterator++]=
"DecayTime";
189 varNames[iterator++]=
"normalizedDecayTime";
190 varNames[iterator++]=
"normDecayLength";
191 varNames[iterator++]=
"topomatic first daughter";
192 varNames[iterator++]=
"topomatic second daughter";
193 varNames[iterator++]=
"topomatic max";
194 varNames[iterator++]=
"topomatic min";
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 B0 [GeV/c]";
203 varNames[iterator++]=
"Pt DStar [GeV/c]";
204 varNames[iterator++]=
"Pt Pion [GeV/c]";
205 varNames[iterator++]=
"d0 B0 [cm]";
206 varNames[iterator++]=
"d0 DStar [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 Bool_t isUpperCut[nvars]={0};
229 Float_t limits[2]={0,999999999.};
237 const Int_t nvarsD0forD0ptbin=25;
240 TString varNamesD0forD0ptbin[nvarsD0forD0ptbin];
244 varNamesD0forD0ptbin[iterator++]=
"inv. mass width[GeV]";
245 varNamesD0forD0ptbin[iterator++]=
"delta mass width [GeV]";
246 varNamesD0forD0ptbin[iterator++]=
"pointing angle [Cos(theta)]";
247 varNamesD0forD0ptbin[iterator++]=
"dca [cm]";
248 varNamesD0forD0ptbin[iterator++]=
"Pt D0 [GeV/c]";
249 varNamesD0forD0ptbin[iterator++]=
"Pt first daughter [GeV/c]";
250 varNamesD0forD0ptbin[iterator++]=
"Pt second daughter [GeV/c]";
251 varNamesD0forD0ptbin[iterator++]=
"d0 D0 [cm]";
252 varNamesD0forD0ptbin[iterator++]=
"d0 first daughter [cm]";
253 varNamesD0forD0ptbin[iterator++]=
"d0 second daughter [cm]";
254 varNamesD0forD0ptbin[iterator++]=
"d0d0 [cm^2]";
255 varNamesD0forD0ptbin[iterator++]=
"d0d0 XY [cm^2]";
257 varNamesD0forD0ptbin[iterator++]=
"angle between both daughters";
258 varNamesD0forD0ptbin[iterator++]=
"angle mother with first daughter";
259 varNamesD0forD0ptbin[iterator++]=
"angle mother with second daughter";
260 varNamesD0forD0ptbin[iterator++]=
"cosThetaStar";
261 varNamesD0forD0ptbin[iterator++]=
"vertexDistance";
262 varNamesD0forD0ptbin[iterator++]=
"pseudoProperDecayTime";
263 varNamesD0forD0ptbin[iterator++]=
"DecayTime";
264 varNamesD0forD0ptbin[iterator++]=
"normalizedDecayTime";
265 varNamesD0forD0ptbin[iterator++]=
"normDecayLength";
266 varNamesD0forD0ptbin[iterator++]=
"topomatic first daughter";
267 varNamesD0forD0ptbin[iterator++]=
"topomatic second daughter";
268 varNamesD0forD0ptbin[iterator++]=
"topomatic max";
269 varNamesD0forD0ptbin[iterator++]=
"topomatic min";
271 Bool_t isUpperCutD0forD0ptbin[nvarsD0forD0ptbin]={0};
275 Float_t limitsD0forD0ptbin[2]={0,999999999.};
283 const Int_t nvarsD0forDStarptbin=35;
286 TString varNamesD0forDStarptbin[nvarsD0forDStarptbin];
290 varNamesD0forDStarptbin[iterator++]=
"inv. mass width[GeV]";
291 varNamesD0forDStarptbin[iterator++]=
"delta mass width [GeV]";
292 varNamesD0forDStarptbin[iterator++]=
"pointing angle [Cos(theta)]";
293 varNamesD0forDStarptbin[iterator++]=
"dca [cm]";
294 varNamesD0forDStarptbin[iterator++]=
"Pt D0 [GeV/c]";
295 varNamesD0forDStarptbin[iterator++]=
"Pt first daughter [GeV/c]";
296 varNamesD0forDStarptbin[iterator++]=
"Pt second daughter [GeV/c]";
297 varNamesD0forDStarptbin[iterator++]=
"d0 D0 [cm]";
298 varNamesD0forDStarptbin[iterator++]=
"d0 first daughter [cm]";
299 varNamesD0forDStarptbin[iterator++]=
"d0 second daughter [cm]";
300 varNamesD0forDStarptbin[iterator++]=
"d0d0 [cm^2]";
301 varNamesD0forDStarptbin[iterator++]=
"d0d0 XY [cm^2]";
303 varNamesD0forDStarptbin[iterator++]=
"angle between both daughters";
304 varNamesD0forDStarptbin[iterator++]=
"angle mother with first daughter";
305 varNamesD0forDStarptbin[iterator++]=
"angle mother with second daughter";
306 varNamesD0forDStarptbin[iterator++]=
"cosThetaStar";
307 varNamesD0forDStarptbin[iterator++]=
"vertexDistance";
308 varNamesD0forDStarptbin[iterator++]=
"pseudoProperDecayTime";
309 varNamesD0forDStarptbin[iterator++]=
"DecayTime";
310 varNamesD0forDStarptbin[iterator++]=
"normalizedDecayTime";
311 varNamesD0forDStarptbin[iterator++]=
"normDecayLength";
312 varNamesD0forDStarptbin[iterator++]=
"topomatic first daughter";
313 varNamesD0forDStarptbin[iterator++]=
"topomatic second daughter";
314 varNamesD0forDStarptbin[iterator++]=
"topomatic max";
315 varNamesD0forDStarptbin[iterator++]=
"topomatic min";
317 varNamesD0forDStarptbin[iterator++]=
"pointingAngleToDStar";
318 varNamesD0forDStarptbin[iterator++]=
"d0MotherToDStar";
319 varNamesD0forDStarptbin[iterator++]=
"d0FirstDaughterToDStar";
320 varNamesD0forDStarptbin[iterator++]=
"d0SecondDaughterToDStar";
321 varNamesD0forDStarptbin[iterator++]=
"impactProductToDStar";
322 varNamesD0forDStarptbin[iterator++]=
"impactProductXYToDStar";
323 varNamesD0forDStarptbin[iterator++]=
"normDecayLengthToDStar";
324 varNamesD0forDStarptbin[iterator++]=
"pseudoProperDecayTimeToDStar";
325 varNamesD0forDStarptbin[iterator++]=
"DecayTimeToDStar";
326 varNamesD0forDStarptbin[iterator++]=
"normalizedDecayTimeToDStar";
328 Bool_t isUpperCutD0forDStarptbin[nvarsD0forDStarptbin]={0};
332 Float_t limitsD0forDStarptbin[2]={0,999999999.};
340 const Int_t nvarsDStarforDStarptbin=25;
343 TString varNamesDStarforDStarptbin[nvarsDStarforDStarptbin];
347 varNamesDStarforDStarptbin[iterator++]=
"inv. mass width[GeV]";
348 varNamesDStarforDStarptbin[iterator++]=
"delta mass width [GeV]";
349 varNamesDStarforDStarptbin[iterator++]=
"pointing angle [Cos(theta)]";
350 varNamesDStarforDStarptbin[iterator++]=
"dca [cm]";
351 varNamesDStarforDStarptbin[iterator++]=
"Pt DStar [GeV/c]";
352 varNamesDStarforDStarptbin[iterator++]=
"Pt D0 [GeV/c]";
353 varNamesDStarforDStarptbin[iterator++]=
"Pt Pion [GeV/c]";
354 varNamesDStarforDStarptbin[iterator++]=
"d0 DStar [cm]";
355 varNamesDStarforDStarptbin[iterator++]=
"d0 D0 [cm]";
356 varNamesDStarforDStarptbin[iterator++]=
"d0 Pion [cm]";
357 varNamesDStarforDStarptbin[iterator++]=
"d0d0 [cm^2]";
358 varNamesDStarforDStarptbin[iterator++]=
"d0d0 XY [cm^2]";
360 varNamesDStarforDStarptbin[iterator++]=
"angle between both daughters";
361 varNamesDStarforDStarptbin[iterator++]=
"angle mother with first daughter";
362 varNamesDStarforDStarptbin[iterator++]=
"angle mother with second daughter";
363 varNamesDStarforDStarptbin[iterator++]=
"cosThetaStar";
364 varNamesDStarforDStarptbin[iterator++]=
"vertexDistance";
365 varNamesDStarforDStarptbin[iterator++]=
"pseudoProperDecayTime";
366 varNamesDStarforDStarptbin[iterator++]=
"DecayTime";
367 varNamesDStarforDStarptbin[iterator++]=
"normalizedDecayTime";
368 varNamesDStarforDStarptbin[iterator++]=
"normDecayLength";
369 varNamesDStarforDStarptbin[iterator++]=
"topomatic first daughter";
370 varNamesDStarforDStarptbin[iterator++]=
"topomatic second daughter";
371 varNamesDStarforDStarptbin[iterator++]=
"topomatic max";
372 varNamesDStarforDStarptbin[iterator++]=
"topomatic min";
374 Bool_t isUpperCutDStarforDStarptbin[nvarsDStarforDStarptbin]={0};
378 Float_t limitsDStarforDStarptbin[2]={0,999999999.};
560 if(&source ==
this)
return *
this;
584 cout<<
"Cut matrice not inizialized. Exit..."<<endl;
590 cout<<
"candidateB0 null"<<endl;
596 cout<<
"candidateDStar null"<<endl;
600 AliAODTrack *candidatePion = (AliAODTrack*)candidateB0->GetDaughter(0);
602 cout<<
"candidatePion null"<<endl;
606 AliAODVertex * vertexB0 = candidateB0->GetSecondaryVtx();
608 cout<<
"vertexB0 null"<<endl;
612 AliAODVertex * primaryVertex = aod->GetPrimaryVertex();
614 cout<<
"primaryVertex null"<<endl;
619 Bool_t bPassedCut = kFALSE;
630 if(ptbin==-1)
return -1;
634 Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
635 Double_t mB0PDG = TDatabasePDG::Instance()->GetParticle(511)->Mass();
642 prongs[0] = 211; prongs[1] = 413;
643 Double_t invMassB0 = candidateB0->InvMass(2,prongs);
644 Double_t invMassDifference = TMath::Abs(mB0PDG - invMassB0);
648 Double_t dcaMother = candidateB0->GetDCA();
649 Double_t ptMother = candidateB0->Pt();
650 Double_t momentumMother = candidateB0->P();
651 Double_t ptDStar = candidateDStar->Pt();
652 Double_t ptPion = candidatePion->Pt();
654 AliExternalTrackParam motherTrack;
655 motherTrack.CopyFromVTrack(candidateB0);
657 motherTrack.PropagateToDCA(primaryVertex,bz,100.,d0z0,covd0z0);
659 Double_t d0Mother = TMath::Abs(d0[0]);
660 Double_t d0firstTrack = TMath::Abs(candidateB0->Getd0Prong(0));
661 Double_t d0secondTrack = TMath::Abs(candidateB0->Getd0Prong(1));
666 Double_t angleBetweenBothDaughters = (candidateDStar->Px() * candidatePion->Px() + candidateDStar->Py() * candidatePion->Py() + candidateDStar->Pz() * candidatePion->Pz()) /(candidateDStar->P() * candidatePion->P());
667 Double_t angleMotherFirstDaughter = (candidateB0->Px() * candidatePion->Px() + candidateB0->Py() * candidatePion->Py() + candidateB0->Pz() * candidatePion->Pz()) /(candidateB0->P() * candidatePion->P());
668 Double_t angleMotherSecondDaughter = (candidateB0->Px() * candidateDStar->Px() + candidateB0->Py() * candidateDStar->Py() + candidateB0->Pz() * candidateDStar->Pz()) /(candidateB0->P() * candidateDStar->P());
670 Double_t cosThetaStar = candidateB0->CosThetaStar(0,511,211,413);
671 Double_t vertexDistance = vertexB0->DistanceToVertex(primaryVertex);
673 Double_t pdgMassMother = TDatabasePDG::Instance()->GetParticle(511)->Mass();
674 Double_t pseudoProperDecayLength = ((vertexB0->GetX() - primaryVertex->GetX()) * candidateB0->Px() / TMath::Abs(candidateB0->Pt())) + ((vertexB0->GetY() - primaryVertex->GetY()) * candidateB0->Py() / TMath::Abs(candidateB0->Pt()));
675 Double_t pseudoProperDecayTime = pseudoProperDecayLength * pdgMassMother/ptMother;
676 Double_t decayTime = vertexDistance / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother/(momentumMother*momentumMother)) + 1)));
679 Double_t theta = candidateB0->Theta();
681 candidateB0->GetCovarianceXYZPxPyPz(covMatrix);
688 Double_t errorMomentum = covMatrix[9]*cp*cp*ct*ct
689 +covMatrix[13]*2.*cp*sp*ct*ct
690 +covMatrix[18]*2.*cp*ct*st
691 +covMatrix[14]*sp*sp*ct*ct
692 +covMatrix[19]*2.*sp*ct*st
693 +covMatrix[20]*st*st;
694 Double_t normalizedDecayTime = candidateB0->
NormalizedDecayLength() / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother*errorMomentum*errorMomentum/(momentumMother*momentumMother)) + 1)));
701 for(
Int_t ipr=0; ipr<2; ipr++)
706 if(errdiffIP>0.) normdd0=diffIP/errdiffIP;
707 if(ipr==0) dd0pr1=normdd0;
708 if(ipr==1) dd0pr2=normdd0;
710 if(TMath::Abs(dd0pr1)>TMath::Abs(dd0pr2)) {dd0max=dd0pr1; dd0min=dd0pr2;}
711 else {dd0max=dd0pr2; dd0min=dd0pr1;}
720 cutVariableValue = invMassDifference;
727 cutVariableValue = invMassDelta;
734 cutVariableValue = pointingAngle;
741 cutVariableValue = dcaMother;
748 cutVariableValue = ptMother;
755 cutVariableValue = ptDStar;
762 cutVariableValue = ptPion;
769 cutVariableValue = d0Mother;
776 cutVariableValue = d0firstTrack;
783 cutVariableValue = d0secondTrack;
790 cutVariableValue = impactProduct;
797 cutVariableValue = impactProductXY;
804 cutVariableValue = angleBetweenBothDaughters;
811 cutVariableValue = angleMotherFirstDaughter;
818 cutVariableValue = angleMotherSecondDaughter;
825 cutVariableValue = cosThetaStar;
832 cutVariableValue = vertexDistance;
839 cutVariableValue = pseudoProperDecayTime;
846 cutVariableValue = decayTime;
853 cutVariableValue = normalizedDecayTime;
860 cutVariableValue = normDecayLength;
867 cutVariableValue = dd0pr1;
874 cutVariableValue = dd0pr2;
881 cutVariableValue = dd0max;
888 cutVariableValue = dd0min;
898 if(bPassedCut==kFALSE)
903 for (
Int_t i = 60; i < 85; ++i)
905 if(bCutArray[i]==kTRUE){
923 cout<<
"Cut matrice not inizialized. Exit..."<<endl;
929 cout<<
"candidateDStar null"<<endl;
935 cout<<
"candidateD0 null"<<endl;
939 AliAODTrack *candidatePion = (AliAODTrack*)candidateDStar->GetDaughter(0);
941 cout<<
"candidatePion null"<<endl;
945 AliAODVertex * vertexDStar = candidateDStar->GetSecondaryVtx();
947 cout<<
"vertexDStar null"<<endl;
951 AliAODVertex * primaryVertex = aod->GetPrimaryVertex();
953 cout<<
"primaryVertex null"<<endl;
958 Bool_t bPassedCut = kFALSE;
970 Double_t mDSPDG = TDatabasePDG::Instance()->GetParticle(413)->Mass();
971 Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
978 prongs[0] = 211; prongs[1] = 421;
979 Double_t invMassDStar = candidateDStar->InvMass(2,prongs);
980 Double_t invMassDifference = TMath::Abs(mDSPDG - invMassDStar);
984 Double_t dcaMother = candidateDStar->GetDCA();
985 Double_t ptMother = candidateDStar->Pt();
986 Double_t momentumMother = candidateDStar->P();
988 Double_t ptPion = candidatePion->Pt();
990 AliExternalTrackParam motherTrack;
991 motherTrack.CopyFromVTrack(candidateDStar);
993 motherTrack.PropagateToDCA(primaryVertex,bz,100.,d0z0,covd0z0);
995 Double_t d0Mother = TMath::Abs(d0[0]);
996 Double_t d0firstTrack = TMath::Abs(candidateDStar->Getd0Prong(0));
997 Double_t d0secondTrack = TMath::Abs(candidateDStar->Getd0Prong(1));
1002 Double_t angleBetweenBothDaughters = (candidateD0->Px() * candidatePion->Px() + candidateD0->Py() * candidatePion->Py() + candidateD0->Pz() * candidatePion->Pz()) /(candidateD0->P() * candidatePion->P());
1003 Double_t angleMotherFirstDaughter = (candidateDStar->Px() * candidatePion->Px() + candidateDStar->Py() * candidatePion->Py() + candidateDStar->Pz() * candidatePion->Pz()) /(candidateDStar->P() * candidatePion->P());
1004 Double_t angleMotherSecondDaughter = (candidateDStar->Px() * candidateD0->Px() + candidateDStar->Py() * candidateD0->Py() + candidateDStar->Pz() * candidateD0->Pz()) /(candidateDStar->P() * candidateD0->P());
1006 Double_t cosThetaStar = candidateDStar->CosThetaStar(0,413,211,421);
1007 Double_t vertexDistance = vertexDStar->DistanceToVertex(primaryVertex);
1009 Double_t pdgMassMother = TDatabasePDG::Instance()->GetParticle(413)->Mass();
1010 Double_t pseudoProperDecayLength = ((vertexDStar->GetX() - primaryVertex->GetX()) * candidateDStar->Px() / TMath::Abs(candidateDStar->Pt())) + ((vertexDStar->GetY() - primaryVertex->GetY()) * candidateDStar->Py() / TMath::Abs(candidateDStar->Pt()));
1011 Double_t pseudoProperDecayTime = pseudoProperDecayLength * pdgMassMother/ptMother;
1012 Double_t decayTime = vertexDistance / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother/(momentumMother*momentumMother)) + 1)));
1014 Double_t phi = candidateDStar->Phi();
1015 Double_t theta = candidateDStar->Theta();
1017 candidateDStar->GetCovarianceXYZPxPyPz(covMatrix);
1024 Double_t errorMomentum = covMatrix[9]*cp*cp*ct*ct
1025 +covMatrix[13]*2.*cp*sp*ct*ct
1026 +covMatrix[18]*2.*cp*ct*st
1027 +covMatrix[14]*sp*sp*ct*ct
1028 +covMatrix[19]*2.*sp*ct*st
1029 +covMatrix[20]*st*st;
1030 Double_t normalizedDecayTime = candidateDStar->
NormalizedDecayLength() / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother*errorMomentum*errorMomentum/(momentumMother*momentumMother)) + 1)));
1037 for(
Int_t ipr=0; ipr<2; ipr++)
1042 if(errdiffIP>0.) normdd0=diffIP/errdiffIP;
1043 if(ipr==0) dd0pr1=normdd0;
1044 if(ipr==1) dd0pr2=normdd0;
1046 if(TMath::Abs(dd0pr1)>TMath::Abs(dd0pr2)) {dd0max=dd0pr1; dd0min=dd0pr2;}
1047 else {dd0max=dd0pr2; dd0min=dd0pr1;}
1051 Int_t nCutIndex = 0;
1056 cutVariableValue = invMassDifference;
1063 cutVariableValue = invMassDelta;
1070 cutVariableValue = pointingAngle;
1077 cutVariableValue = dcaMother;
1084 cutVariableValue = ptMother;
1091 cutVariableValue = ptD0;
1098 cutVariableValue = ptPion;
1105 cutVariableValue = d0Mother;
1112 cutVariableValue = d0firstTrack;
1119 cutVariableValue = d0secondTrack;
1126 cutVariableValue = impactProduct;
1133 cutVariableValue = impactProductXY;
1140 cutVariableValue = angleBetweenBothDaughters;
1147 cutVariableValue = angleMotherFirstDaughter;
1154 cutVariableValue = angleMotherSecondDaughter;
1161 cutVariableValue = cosThetaStar;
1168 cutVariableValue = vertexDistance;
1175 cutVariableValue = pseudoProperDecayTime;
1182 cutVariableValue = decayTime;
1189 cutVariableValue = normalizedDecayTime;
1196 cutVariableValue = normDecayLength;
1203 cutVariableValue = dd0pr1;
1210 cutVariableValue = dd0pr2;
1217 cutVariableValue = dd0max;
1224 cutVariableValue = dd0min;
1234 if(bPassedCut==kFALSE)
1239 for (
Int_t i = 35; i < 60; ++i)
1241 if(bCutArray[i]==kTRUE){
1259 cout<<
"Cut matrice not inizialized. Exit..."<<endl;
1264 if(!candidateDStar){
1265 cout<<
"candidateDStar null"<<endl;
1271 cout<<
"candidateD0 null"<<endl;
1275 AliAODTrack *candidatePion = (AliAODTrack*)candidateD0->GetDaughter(0);
1277 cout<<
"candidatePion null"<<endl;
1281 AliAODTrack *candidateKaon = (AliAODTrack*)candidateD0->GetDaughter(1);
1283 cout<<
"candidateKaon null"<<endl;
1287 AliAODVertex * vertexDStar = candidateDStar->GetSecondaryVtx();
1289 cout<<
"vertexDStar null"<<endl;
1293 AliAODVertex * vertexD0 = candidateD0->GetSecondaryVtx();
1295 cout<<
"vertexD0 null"<<endl;
1299 AliAODVertex * primaryVertex = aod->GetPrimaryVertex();
1301 cout<<
"primaryVertex null"<<endl;
1305 Int_t returnvalue=1;
1306 Bool_t bPassedCut = kFALSE;
1319 Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
1322 Int_t chargeDStar = candidateDStar->Charge();
1329 else if (chargeDStar==-1)
1336 cout <<
"Wrong charge DStar." << endl;
1339 Double_t invMassD0 = candidateD0->InvMass(2,prongs);
1340 Double_t invMassDifference = TMath::Abs(mD0PDG - invMassD0);
1343 Double_t dcaMother = candidateD0->GetDCA();
1344 Double_t ptMother = candidateD0->Pt();
1345 Double_t momentumMother = candidateD0->P();
1346 Double_t ptPion = candidatePion->Pt();
1347 Double_t ptKaon = candidateKaon->Pt();
1349 AliExternalTrackParam motherTrack;
1350 motherTrack.CopyFromVTrack(candidateD0);
1352 motherTrack.PropagateToDCA(primaryVertex,bz,100.,d0z0,covd0z0);
1354 Double_t d0Mother = TMath::Abs(d0[0]);
1355 Double_t d0firstTrack = TMath::Abs(candidateD0->Getd0Prong(0));
1356 Double_t d0secondTrack = TMath::Abs(candidateD0->Getd0Prong(1));
1361 Double_t angleBetweenBothDaughters = (candidateKaon->Px() * candidatePion->Px() + candidateKaon->Py() * candidatePion->Py() + candidateKaon->Pz() * candidatePion->Pz()) /(candidateKaon->P() * candidatePion->P());
1362 Double_t angleMotherFirstDaughter = (candidateD0->Px() * candidatePion->Px() + candidateD0->Py() * candidatePion->Py() + candidateD0->Pz() * candidatePion->Pz()) /(candidateD0->P() * candidatePion->P());
1363 Double_t angleMotherSecondDaughter = (candidateD0->Px() * candidateKaon->Px() + candidateD0->Py() * candidateKaon->Py() + candidateD0->Pz() * candidateKaon->Pz()) /(candidateD0->P() * candidateKaon->P());
1365 Double_t cosThetaStar = candidateD0->CosThetaStar(0,421,211,321);
1366 Double_t vertexDistance = vertexD0->DistanceToVertex(primaryVertex);
1368 Double_t pdgMassMother = TDatabasePDG::Instance()->GetParticle(421)->Mass();
1369 Double_t pseudoProperDecayLength = ((vertexD0->GetX() - primaryVertex->GetX()) * candidateD0->Px() / TMath::Abs(candidateD0->Pt())) + ((vertexD0->GetY() - primaryVertex->GetY()) * candidateD0->Py() / TMath::Abs(candidateD0->Pt()));
1370 Double_t pseudoProperDecayTime = pseudoProperDecayLength * pdgMassMother/ptMother;
1371 Double_t decayTime = vertexDistance / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother/(momentumMother*momentumMother)) + 1)));
1374 Double_t theta = candidateD0->Theta();
1376 candidateD0->GetCovarianceXYZPxPyPz(covMatrix);
1383 Double_t errorMomentum = covMatrix[9]*cp*cp*ct*ct
1384 +covMatrix[13]*2.*cp*sp*ct*ct
1385 +covMatrix[18]*2.*cp*ct*st
1386 +covMatrix[14]*sp*sp*ct*ct
1387 +covMatrix[19]*2.*sp*ct*st
1388 +covMatrix[20]*st*st;
1389 Double_t normalizedDecayTime = candidateD0->
NormalizedDecayLength() / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother*errorMomentum*errorMomentum/(momentumMother*momentumMother)) + 1)));
1396 for(
Int_t ipr=0; ipr<2; ipr++)
1401 if(errdiffIP>0.) normdd0=diffIP/errdiffIP;
1402 if(ipr==0) dd0pr1=normdd0;
1403 if(ipr==1) dd0pr2=normdd0;
1405 if(TMath::Abs(dd0pr1)>TMath::Abs(dd0pr2)) {dd0max=dd0pr1; dd0min=dd0pr2;}
1406 else {dd0max=dd0pr2; dd0min=dd0pr1;}
1410 Int_t nCutIndex = 0;
1415 cutVariableValue = invMassDifference;
1429 cutVariableValue = pointingAngle;
1436 cutVariableValue = dcaMother;
1443 cutVariableValue = ptMother;
1450 cutVariableValue = ptKaon;
1457 cutVariableValue = ptPion;
1464 cutVariableValue = d0Mother;
1471 cutVariableValue = d0firstTrack;
1478 cutVariableValue = d0secondTrack;
1485 cutVariableValue = impactProduct;
1492 cutVariableValue = impactProductXY;
1499 cutVariableValue = angleBetweenBothDaughters;
1506 cutVariableValue = angleMotherFirstDaughter;
1513 cutVariableValue = angleMotherSecondDaughter;
1520 cutVariableValue = cosThetaStar;
1527 cutVariableValue = vertexDistance;
1534 cutVariableValue = pseudoProperDecayTime;
1541 cutVariableValue = decayTime;
1548 cutVariableValue = normalizedDecayTime;
1555 cutVariableValue = normDecayLength;
1562 cutVariableValue = dd0pr1;
1569 cutVariableValue = dd0pr2;
1576 cutVariableValue = dd0max;
1583 cutVariableValue = dd0min;
1588 AliAODRecoDecay* candidateD0toDStar = (AliAODRecoDecay*)candidateD0;
1589 AliExternalTrackParam pionD0Track;
1590 AliExternalTrackParam kaonD0Track;
1592 Double_t d0z0DSVert[2],covd0z0DSVert[3],d0DSVert[2];
1594 pionD0Track.CopyFromVTrack(candidatePion);
1595 pionD0Track.PropagateToDCA(vertexDStar,bz,100.,d0z0DSVert,covd0z0DSVert);
1596 d0DSVert[0] = d0z0DSVert[0];
1598 kaonD0Track.CopyFromVTrack(candidateKaon);
1599 kaonD0Track.PropagateToDCA(vertexDStar,bz,100.,d0z0DSVert,covd0z0DSVert);
1600 d0DSVert[1] = d0z0DSVert[0];
1602 AliExternalTrackParam D0Track;
1603 D0Track.CopyFromVTrack(candidateD0);
1604 Double_t d0z0D0DSVert[2],covd0z0D0DSVert[3],d0D0DSVert;
1605 motherTrack.PropagateToDCA(vertexDStar,bz,100.,d0z0D0DSVert,covd0z0D0DSVert);
1606 d0D0DSVert = TMath::Abs(d0z0D0DSVert[0]);
1608 Double_t impactProductToDStar = d0DSVert[0]*d0DSVert[1];
1609 Double_t impactProductXYToDStar = candidateD0toDStar->ImpParXY(vertexDStar);
1611 Double_t pointingAngleToDStar = candidateD0toDStar->CosPointingAngle(vertexDStar);
1612 Double_t d0FirstDaughterToDStar = TMath::Abs(d0DSVert[0]);
1613 Double_t d0SecondDaughterToDStar = TMath::Abs(d0DSVert[1]);
1614 Double_t normDecayLengthToDStar = candidateD0toDStar->NormalizedDecayLength(vertexDStar);
1616 Double_t pseudoProperDecayLengthDSVert = ((vertexD0->GetX() - vertexDStar->GetX()) * candidateD0->Px() / TMath::Abs(candidateD0->Pt())) + ((vertexD0->GetY() - vertexDStar->GetY()) * candidateD0->Py() / TMath::Abs(candidateD0->Pt()));
1617 Double_t pseudoProperDecayTimeToDStar = pseudoProperDecayLengthDSVert * pdgMassMother/ptMother;
1618 Double_t DecayTimeToDStar = vertexDistance / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother/(momentumMother*momentumMother)) + 1)));
1620 Double_t phiDSVert = candidateD0->Phi();
1621 Double_t thetaDSVert = candidateD0->Theta();
1623 candidateD0->GetCovarianceXYZPxPyPz(covMatrixDSVert);
1625 cp = TMath::Cos(phiDSVert);
1626 sp = TMath::Sin(phiDSVert);
1627 ct = TMath::Cos(thetaDSVert);
1628 st = TMath::Sin(thetaDSVert);
1630 errorMomentum = covMatrix[9]*cp*cp*ct*ct
1631 +covMatrix[13]*2.*cp*sp*ct*ct
1632 +covMatrix[18]*2.*cp*ct*st
1633 +covMatrix[14]*sp*sp*ct*ct
1634 +covMatrix[19]*2.*sp*ct*st
1635 +covMatrix[20]*st*st;
1636 Double_t normalizedDecayTimeToDStar = candidateD0toDStar->NormalizedDecayLength(vertexDStar) / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother*errorMomentum*errorMomentum/(momentumMother*momentumMother)) + 1)));
1640 cutVariableValue = pointingAngleToDStar;
1647 cutVariableValue = d0D0DSVert;
1654 cutVariableValue = d0FirstDaughterToDStar;
1661 cutVariableValue = d0SecondDaughterToDStar;
1668 cutVariableValue = impactProductToDStar;
1675 cutVariableValue = impactProductXYToDStar;
1682 cutVariableValue = normDecayLengthToDStar;
1689 cutVariableValue = pseudoProperDecayTimeToDStar;
1696 cutVariableValue = DecayTimeToDStar;
1703 cutVariableValue = normalizedDecayTimeToDStar;
1709 for (
Int_t i = 0; i < 35; ++i)
1711 if(bCutArray[i]==kTRUE){
1726 cout<<
"Cut matrice not inizialized. Exit..."<<endl;
1732 cout<<
"candidateD0 null"<<endl;
1736 AliAODTrack *candidatePion = (AliAODTrack*)candidateD0->GetDaughter(0);
1738 cout<<
"candidatePion null"<<endl;
1742 AliAODTrack *candidateKaon = (AliAODTrack*)candidateD0->GetDaughter(1);
1744 cout<<
"candidateKaon null"<<endl;
1748 AliAODVertex * vertexD0 = candidateD0->GetSecondaryVtx();
1750 cout<<
"vertexD0 null"<<endl;
1754 AliAODVertex * primaryVertex = aod->GetPrimaryVertex();
1756 cout<<
"primaryVertex null"<<endl;
1760 Int_t returnvalue=1;
1761 Bool_t bPassedCut = kFALSE;
1772 if(ptbin==-1)
return -1;
1775 Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
1779 prongs[0] = 211; prongs[1] = 321;
1780 Double_t invMassD0 = candidateD0->InvMass(2,prongs);
1781 Double_t invMassDifference = TMath::Abs(mD0PDG - invMassD0);
1784 Double_t dcaMother = candidateD0->GetDCA();
1785 Double_t ptMother = candidateD0->Pt();
1786 Double_t momentumMother = candidateD0->P();
1787 Double_t ptPion = candidatePion->Pt();
1788 Double_t ptKaon = candidateKaon->Pt();
1790 AliExternalTrackParam motherTrack;
1791 motherTrack.CopyFromVTrack(candidateD0);
1793 motherTrack.PropagateToDCA(primaryVertex,bz,100.,d0z0,covd0z0);
1795 Double_t d0Mother = TMath::Abs(d0[0]);
1796 Double_t d0firstTrack = TMath::Abs(candidateD0->Getd0Prong(0));
1797 Double_t d0secondTrack = TMath::Abs(candidateD0->Getd0Prong(1));
1802 Double_t angleBetweenBothDaughters = (candidateKaon->Px() * candidatePion->Px() + candidateKaon->Py() * candidatePion->Py() + candidateKaon->Pz() * candidatePion->Pz()) /(candidateKaon->P() * candidatePion->P());
1803 Double_t angleMotherFirstDaughter = (candidateD0->Px() * candidatePion->Px() + candidateD0->Py() * candidatePion->Py() + candidateD0->Pz() * candidatePion->Pz()) /(candidateD0->P() * candidatePion->P());
1804 Double_t angleMotherSecondDaughter = (candidateD0->Px() * candidateKaon->Px() + candidateD0->Py() * candidateKaon->Py() + candidateD0->Pz() * candidateKaon->Pz()) /(candidateD0->P() * candidateKaon->P());
1806 Double_t cosThetaStar = candidateD0->CosThetaStar(0,421,211,321);
1807 Double_t vertexDistance = vertexD0->DistanceToVertex(primaryVertex);
1809 Double_t pdgMassMother = TDatabasePDG::Instance()->GetParticle(421)->Mass();
1810 Double_t pseudoProperDecayLength = ((vertexD0->GetX() - primaryVertex->GetX()) * candidateD0->Px() / TMath::Abs(candidateD0->Pt())) + ((vertexD0->GetY() - primaryVertex->GetY()) * candidateD0->Py() / TMath::Abs(candidateD0->Pt()));
1811 Double_t pseudoProperDecayTime = pseudoProperDecayLength * pdgMassMother/ptMother;
1812 Double_t decayTime = vertexDistance / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother/(momentumMother*momentumMother)) + 1)));
1815 Double_t theta = candidateD0->Theta();
1817 candidateD0->GetCovarianceXYZPxPyPz(covMatrix);
1824 Double_t errorMomentum = covMatrix[9]*cp*cp*ct*ct
1825 +covMatrix[13]*2.*cp*sp*ct*ct
1826 +covMatrix[18]*2.*cp*ct*st
1827 +covMatrix[14]*sp*sp*ct*ct
1828 +covMatrix[19]*2.*sp*ct*st
1829 +covMatrix[20]*st*st;
1830 Double_t normalizedDecayTime = candidateD0->
NormalizedDecayLength() / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother*errorMomentum*errorMomentum/(momentumMother*momentumMother)) + 1)));
1837 for(
Int_t ipr=0; ipr<2; ipr++)
1842 if(errdiffIP>0.) normdd0=diffIP/errdiffIP;
1843 if(ipr==0) dd0pr1=normdd0;
1844 if(ipr==1) dd0pr2=normdd0;
1846 if(TMath::Abs(dd0pr1)>TMath::Abs(dd0pr2)) {dd0max=dd0pr1; dd0min=dd0pr2;}
1847 else {dd0max=dd0pr2; dd0min=dd0pr1;}
1851 Int_t nCutIndex = 0;
1856 cutVariableValue = invMassDifference;
1870 cutVariableValue = pointingAngle;
1877 cutVariableValue = dcaMother;
1884 cutVariableValue = ptMother;
1891 cutVariableValue = ptKaon;
1898 cutVariableValue = ptPion;
1905 cutVariableValue = d0Mother;
1912 cutVariableValue = d0firstTrack;
1919 cutVariableValue = d0secondTrack;
1926 cutVariableValue = impactProduct;
1933 cutVariableValue = impactProductXY;
1940 cutVariableValue = angleBetweenBothDaughters;
1947 cutVariableValue = angleMotherFirstDaughter;
1954 cutVariableValue = angleMotherSecondDaughter;
1961 cutVariableValue = cosThetaStar;
1968 cutVariableValue = vertexDistance;
1975 cutVariableValue = pseudoProperDecayTime;
1982 cutVariableValue = decayTime;
1989 cutVariableValue = normalizedDecayTime;
1996 cutVariableValue = normDecayLength;
2003 cutVariableValue = dd0pr1;
2010 cutVariableValue = dd0pr2;
2017 cutVariableValue = dd0max;
2024 cutVariableValue = dd0min;
2031 for (
Int_t i = 0; i < 25; ++i)
2033 if(bCutArray[i]==kTRUE){
2048 cout<<
"Cut matrice not inizialized. Exit..."<<endl;
2053 if(!candidateDStar){
2054 cout<<
"candidateDStar null"<<endl;
2060 cout<<
"candidateD0 null"<<endl;
2064 AliAODTrack *candidatePion = (AliAODTrack*)candidateD0->GetDaughter(0);
2066 cout<<
"candidatePion null"<<endl;
2070 AliAODTrack *candidateKaon = (AliAODTrack*)candidateD0->GetDaughter(1);
2072 cout<<
"candidateKaon null"<<endl;
2076 AliAODVertex * vertexDStar = candidateDStar->GetSecondaryVtx();
2078 cout<<
"vertexDStar null"<<endl;
2082 AliAODVertex * vertexD0 = candidateD0->GetSecondaryVtx();
2084 cout<<
"vertexD0 null"<<endl;
2088 AliAODVertex * primaryVertex = aod->GetPrimaryVertex();
2090 cout<<
"primaryVertex null"<<endl;
2094 Int_t returnvalue=1;
2095 Bool_t bPassedCut = kFALSE;
2106 if(ptbin==-1)
return -1;
2108 Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
2112 prongs[0] = 211; prongs[1] = 321;
2113 Double_t invMassD0 = candidateD0->InvMass(2,prongs);
2114 Double_t invMassDifference = TMath::Abs(mD0PDG - invMassD0);
2117 Double_t dcaMother = candidateD0->GetDCA();
2118 Double_t ptMother = candidateD0->Pt();
2119 Double_t momentumMother = candidateD0->P();
2120 Double_t ptPion = candidatePion->Pt();
2121 Double_t ptKaon = candidateKaon->Pt();
2123 AliExternalTrackParam motherTrack;
2124 motherTrack.CopyFromVTrack(candidateD0);
2126 motherTrack.PropagateToDCA(primaryVertex,bz,100.,d0z0,covd0z0);
2128 Double_t d0Mother = TMath::Abs(d0[0]);
2129 Double_t d0firstTrack = TMath::Abs(candidateD0->Getd0Prong(0));
2130 Double_t d0secondTrack = TMath::Abs(candidateD0->Getd0Prong(1));
2135 Double_t angleBetweenBothDaughters = (candidateKaon->Px() * candidatePion->Px() + candidateKaon->Py() * candidatePion->Py() + candidateKaon->Pz() * candidatePion->Pz()) /(candidateKaon->P() * candidatePion->P());
2136 Double_t angleMotherFirstDaughter = (candidateD0->Px() * candidatePion->Px() + candidateD0->Py() * candidatePion->Py() + candidateD0->Pz() * candidatePion->Pz()) /(candidateD0->P() * candidatePion->P());
2137 Double_t angleMotherSecondDaughter = (candidateD0->Px() * candidateKaon->Px() + candidateD0->Py() * candidateKaon->Py() + candidateD0->Pz() * candidateKaon->Pz()) /(candidateD0->P() * candidateKaon->P());
2139 Double_t cosThetaStar = candidateD0->CosThetaStar(0,421,211,321);
2140 Double_t vertexDistance = vertexD0->DistanceToVertex(primaryVertex);
2142 Double_t pdgMassMother = TDatabasePDG::Instance()->GetParticle(421)->Mass();
2143 Double_t pseudoProperDecayLength = ((vertexD0->GetX() - primaryVertex->GetX()) * candidateD0->Px() / TMath::Abs(candidateD0->Pt())) + ((vertexD0->GetY() - primaryVertex->GetY()) * candidateD0->Py() / TMath::Abs(candidateD0->Pt()));
2144 Double_t pseudoProperDecayTime = pseudoProperDecayLength * pdgMassMother/ptMother;
2145 Double_t decayTime = vertexDistance / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother/(momentumMother*momentumMother)) + 1)));
2148 Double_t theta = candidateD0->Theta();
2150 candidateD0->GetCovarianceXYZPxPyPz(covMatrix);
2157 Double_t errorMomentum = covMatrix[9]*cp*cp*ct*ct
2158 +covMatrix[13]*2.*cp*sp*ct*ct
2159 +covMatrix[18]*2.*cp*ct*st
2160 +covMatrix[14]*sp*sp*ct*ct
2161 +covMatrix[19]*2.*sp*ct*st
2162 +covMatrix[20]*st*st;
2163 Double_t normalizedDecayTime = candidateD0->
NormalizedDecayLength() / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother*errorMomentum*errorMomentum/(momentumMother*momentumMother)) + 1)));
2170 for(
Int_t ipr=0; ipr<2; ipr++)
2175 if(errdiffIP>0.) normdd0=diffIP/errdiffIP;
2176 if(ipr==0) dd0pr1=normdd0;
2177 if(ipr==1) dd0pr2=normdd0;
2179 if(TMath::Abs(dd0pr1)>TMath::Abs(dd0pr2)) {dd0max=dd0pr1; dd0min=dd0pr2;}
2180 else {dd0max=dd0pr2; dd0min=dd0pr1;}
2184 Int_t nCutIndex = 0;
2189 cutVariableValue = invMassDifference;
2203 cutVariableValue = pointingAngle;
2210 cutVariableValue = dcaMother;
2217 cutVariableValue = ptMother;
2224 cutVariableValue = ptKaon;
2231 cutVariableValue = ptPion;
2238 cutVariableValue = d0Mother;
2245 cutVariableValue = d0firstTrack;
2252 cutVariableValue = d0secondTrack;
2259 cutVariableValue = impactProduct;
2266 cutVariableValue = impactProductXY;
2273 cutVariableValue = angleBetweenBothDaughters;
2280 cutVariableValue = angleMotherFirstDaughter;
2287 cutVariableValue = angleMotherSecondDaughter;
2294 cutVariableValue = cosThetaStar;
2301 cutVariableValue = vertexDistance;
2308 cutVariableValue = pseudoProperDecayTime;
2315 cutVariableValue = decayTime;
2322 cutVariableValue = normalizedDecayTime;
2329 cutVariableValue = normDecayLength;
2336 cutVariableValue = dd0pr1;
2343 cutVariableValue = dd0pr2;
2350 cutVariableValue = dd0max;
2357 cutVariableValue = dd0min;
2362 AliAODRecoDecay* candidateD0toDStar = (AliAODRecoDecay*)candidateD0;
2363 AliExternalTrackParam pionD0Track;
2364 AliExternalTrackParam kaonD0Track;
2366 Double_t d0z0DSVert[2],covd0z0DSVert[3],d0DSVert[2];
2368 pionD0Track.CopyFromVTrack(candidatePion);
2369 pionD0Track.PropagateToDCA(vertexDStar,bz,100.,d0z0DSVert,covd0z0DSVert);
2370 d0DSVert[0] = d0z0DSVert[0];
2372 kaonD0Track.CopyFromVTrack(candidateKaon);
2373 kaonD0Track.PropagateToDCA(vertexDStar,bz,100.,d0z0DSVert,covd0z0DSVert);
2374 d0DSVert[1] = d0z0DSVert[0];
2376 AliExternalTrackParam D0Track;
2377 D0Track.CopyFromVTrack(candidateD0);
2378 Double_t d0z0D0DSVert[2],covd0z0D0DSVert[3],d0D0DSVert;
2379 motherTrack.PropagateToDCA(vertexDStar,bz,100.,d0z0D0DSVert,covd0z0D0DSVert);
2380 d0D0DSVert = TMath::Abs(d0z0D0DSVert[0]);
2382 Double_t impactProductToDStar = d0DSVert[0]*d0DSVert[1];
2383 Double_t impactProductXYToDStar = candidateD0toDStar->ImpParXY(vertexDStar);
2385 Double_t pointingAngleToDStar = candidateD0toDStar->CosPointingAngle(vertexDStar);
2386 Double_t d0FirstDaughterToDStar = TMath::Abs(d0DSVert[0]);
2387 Double_t d0SecondDaughterToDStar = TMath::Abs(d0DSVert[1]);
2388 Double_t normDecayLengthToDStar = candidateD0toDStar->NormalizedDecayLength(vertexDStar);
2390 Double_t pseudoProperDecayLengthDSVert = ((vertexD0->GetX() - vertexDStar->GetX()) * candidateD0->Px() / TMath::Abs(candidateD0->Pt())) + ((vertexD0->GetY() - vertexDStar->GetY()) * candidateD0->Py() / TMath::Abs(candidateD0->Pt()));
2391 Double_t pseudoProperDecayTimeToDStar = pseudoProperDecayLengthDSVert * pdgMassMother/ptMother;
2392 Double_t DecayTimeToDStar = vertexDistance / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother/(momentumMother*momentumMother)) + 1)));
2394 Double_t phiDSVert = candidateD0->Phi();
2395 Double_t thetaDSVert = candidateD0->Theta();
2397 candidateD0->GetCovarianceXYZPxPyPz(covMatrixDSVert);
2399 cp = TMath::Cos(phiDSVert);
2400 sp = TMath::Sin(phiDSVert);
2401 ct = TMath::Cos(thetaDSVert);
2402 st = TMath::Sin(thetaDSVert);
2404 errorMomentum = covMatrix[9]*cp*cp*ct*ct
2405 +covMatrix[13]*2.*cp*sp*ct*ct
2406 +covMatrix[18]*2.*cp*ct*st
2407 +covMatrix[14]*sp*sp*ct*ct
2408 +covMatrix[19]*2.*sp*ct*st
2409 +covMatrix[20]*st*st;
2410 Double_t normalizedDecayTimeToDStar = candidateD0toDStar->NormalizedDecayLength(vertexDStar) / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother*errorMomentum*errorMomentum/(momentumMother*momentumMother)) + 1)));
2414 cutVariableValue = pointingAngleToDStar;
2421 cutVariableValue = d0D0DSVert;
2428 cutVariableValue = d0FirstDaughterToDStar;
2435 cutVariableValue = d0SecondDaughterToDStar;
2442 cutVariableValue = impactProductToDStar;
2449 cutVariableValue = impactProductXYToDStar;
2456 cutVariableValue = normDecayLengthToDStar;
2463 cutVariableValue = pseudoProperDecayTimeToDStar;
2470 cutVariableValue = DecayTimeToDStar;
2477 cutVariableValue = normalizedDecayTimeToDStar;
2483 for (
Int_t i = 0; i < 35; ++i)
2485 if(bCutArray[i]==kTRUE){
2500 cout<<
"Cut matrice not inizialized. Exit..."<<endl;
2505 if(!candidateDStar){
2506 cout<<
"candidateDStar null"<<endl;
2512 cout<<
"candidateD0 null"<<endl;
2516 AliAODTrack *candidatePion = (AliAODTrack*)candidateDStar->GetDaughter(0);
2518 cout<<
"candidatePion null"<<endl;
2522 AliAODVertex * vertexDStar = candidateDStar->GetSecondaryVtx();
2524 cout<<
"vertexDStar null"<<endl;
2528 AliAODVertex * primaryVertex = aod->GetPrimaryVertex();
2530 cout<<
"primaryVertex null"<<endl;
2534 Int_t returnvalue=1;
2535 Bool_t bPassedCut = kFALSE;
2545 if(ptbin==-1)
return -1;
2548 Double_t mDSPDG = TDatabasePDG::Instance()->GetParticle(413)->Mass();
2549 Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
2556 prongs[0] = 211; prongs[1] = 421;
2557 Double_t invMassDStar = candidateDStar->InvMass(2,prongs);
2558 Double_t invMassDifference = TMath::Abs(mDSPDG - invMassDStar);
2562 Double_t dcaMother = candidateDStar->GetDCA();
2563 Double_t ptMother = candidateDStar->Pt();
2564 Double_t momentumMother = candidateDStar->P();
2566 Double_t ptPion = candidatePion->Pt();
2568 AliExternalTrackParam motherTrack;
2569 motherTrack.CopyFromVTrack(candidateDStar);
2571 motherTrack.PropagateToDCA(primaryVertex,bz,100.,d0z0,covd0z0);
2573 Double_t d0Mother = TMath::Abs(d0[0]);
2574 Double_t d0firstTrack = TMath::Abs(candidateDStar->Getd0Prong(0));
2575 Double_t d0secondTrack = TMath::Abs(candidateDStar->Getd0Prong(1));
2580 Double_t angleBetweenBothDaughters = (candidateD0->Px() * candidatePion->Px() + candidateD0->Py() * candidatePion->Py() + candidateD0->Pz() * candidatePion->Pz()) /(candidateD0->P() * candidatePion->P());
2581 Double_t angleMotherFirstDaughter = (candidateDStar->Px() * candidatePion->Px() + candidateDStar->Py() * candidatePion->Py() + candidateDStar->Pz() * candidatePion->Pz()) /(candidateDStar->P() * candidatePion->P());
2582 Double_t angleMotherSecondDaughter = (candidateDStar->Px() * candidateD0->Px() + candidateDStar->Py() * candidateD0->Py() + candidateDStar->Pz() * candidateD0->Pz()) /(candidateDStar->P() * candidateD0->P());
2584 Double_t cosThetaStar = candidateDStar->CosThetaStar(0,413,211,421);
2585 Double_t vertexDistance = vertexDStar->DistanceToVertex(primaryVertex);
2587 Double_t pdgMassMother = TDatabasePDG::Instance()->GetParticle(413)->Mass();
2588 Double_t pseudoProperDecayLength = ((vertexDStar->GetX() - primaryVertex->GetX()) * candidateDStar->Px() / TMath::Abs(candidateDStar->Pt())) + ((vertexDStar->GetY() - primaryVertex->GetY()) * candidateDStar->Py() / TMath::Abs(candidateDStar->Pt()));
2589 Double_t pseudoProperDecayTime = pseudoProperDecayLength * pdgMassMother/ptMother;
2590 Double_t decayTime = vertexDistance / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother/(momentumMother*momentumMother)) + 1)));
2592 Double_t phi = candidateDStar->Phi();
2593 Double_t theta = candidateDStar->Theta();
2595 candidateDStar->GetCovarianceXYZPxPyPz(covMatrix);
2602 Double_t errorMomentum = covMatrix[9]*cp*cp*ct*ct
2603 +covMatrix[13]*2.*cp*sp*ct*ct
2604 +covMatrix[18]*2.*cp*ct*st
2605 +covMatrix[14]*sp*sp*ct*ct
2606 +covMatrix[19]*2.*sp*ct*st
2607 +covMatrix[20]*st*st;
2608 Double_t normalizedDecayTime = candidateDStar->
NormalizedDecayLength() / (299792458 * TMath::Sqrt(1/((pdgMassMother*pdgMassMother*errorMomentum*errorMomentum/(momentumMother*momentumMother)) + 1)));
2615 for(
Int_t ipr=0; ipr<2; ipr++)
2620 if(errdiffIP>0.) normdd0=diffIP/errdiffIP;
2621 if(ipr==0) dd0pr1=normdd0;
2622 if(ipr==1) dd0pr2=normdd0;
2624 if(TMath::Abs(dd0pr1)>TMath::Abs(dd0pr2)) {dd0max=dd0pr1; dd0min=dd0pr2;}
2625 else {dd0max=dd0pr2; dd0min=dd0pr1;}
2629 Int_t nCutIndex = 0;
2634 cutVariableValue = invMassDifference;
2641 cutVariableValue = invMassDelta;
2648 cutVariableValue = pointingAngle;
2655 cutVariableValue = dcaMother;
2662 cutVariableValue = ptMother;
2669 cutVariableValue = ptD0;
2676 cutVariableValue = ptPion;
2683 cutVariableValue = d0Mother;
2690 cutVariableValue = d0firstTrack;
2697 cutVariableValue = d0secondTrack;
2704 cutVariableValue = impactProduct;
2711 cutVariableValue = impactProductXY;
2718 cutVariableValue = angleBetweenBothDaughters;
2725 cutVariableValue = angleMotherFirstDaughter;
2732 cutVariableValue = angleMotherSecondDaughter;
2739 cutVariableValue = cosThetaStar;
2746 cutVariableValue = vertexDistance;
2753 cutVariableValue = pseudoProperDecayTime;
2760 cutVariableValue = decayTime;
2767 cutVariableValue = normalizedDecayTime;
2774 cutVariableValue = normDecayLength;
2781 cutVariableValue = dd0pr1;
2788 cutVariableValue = dd0pr2;
2795 cutVariableValue = dd0max;
2802 cutVariableValue = dd0min;
2808 for (
Int_t i = 0; i < 25; ++i)
2810 if(bCutArray[i]==kTRUE){
2901 Bool_t TPCon=TMath::Abs(2)>1e-4?kTRUE:kFALSE;
2902 Bool_t TOFon=TMath::Abs(3)>1e-4?kTRUE:kFALSE;
2926 isParticle = isTPC&&isTOF;
2938 for (
Int_t i=0; i<5; i++) {
2939 if (prob[i]>max) {k=i; max=prob[i];}
2941 isParticle =
Bool_t(k==type);
2944 if (match == 10 || match == 11) {
2948 isParticle = checkTPC >= 0 && checkTOF >= 0 ? kTRUE : kFALSE;
2950 isParticle = isParticle && checkTPC+checkTOF >= 1 ? kTRUE : kFALSE;
2964 if (TPCok != -1 && TOFok != -1) {
2966 isParticle = TMath::Sqrt(nSigmaTPC*nSigmaTPC + nSigmaTOF*nSigmaTOF) <= radius ? kTRUE : kFALSE;
2971 isParticle = nSigmaTPC <= radius ? kTRUE : kFALSE;
2974 isParticle = nSigmaTOF <= radius ? kTRUE : kFALSE;
2989 Int_t chargeDStar = DStar->Charge();
2999 else if (chargeDStar==-1)
3008 cout <<
"Wrong charge DStar." << endl;
3011 e[2]=DStar->EProng(0,211);
3014 Double_t invMassDStar = TMath::Sqrt(esum*esum-DStar->P()*DStar->P());
3017 return invMassDStar - invMassD0;
3027 Int_t chargeDStar = DStar->Charge();
3037 else if (chargeDStar==-1)
3046 cout <<
"Wrong charge DStar." << endl;
3049 e[0]=DStar->EProng(0,211);
3050 e[3]=B0->EProng(0,211);
3052 Double_t esum = e[0]+e[1]+e[2]+e[3];
3053 Double_t invMassB0 = TMath::Sqrt(esum*esum-B0->P()*B0->P());
3057 return invMassB0 - invMassD0;
3074 AliFatal(
"exiting");
3078 AliFatal(
"exiting");
3092 cout<<
"Overflow, exit..."<<endl;
3110 AliFatal(
"exiting");
3141 printf(
"Changing the pt bins\n");
3145 cout<<
"Warning: ptBinLimits dimension "<<nPtBinLimits<<
" != nPtBins+1 ("<<
fnPtBinsD0forD0ptbin+1<<
")\nSetting nPtBins to "<<nPtBinLimits-1<<endl;
3174 AliFatal(
"exiting");
3178 AliFatal(
"exiting");
3191 cout<<
"Overflow, exit..."<<endl;
3208 AliFatal(
"exiting");
3239 printf(
"Changing the pt bins\n");
3243 cout<<
"Warning: ptBinLimits dimension "<<nPtBinLimits<<
" != nPtBins+1 ("<<
fnPtBinsD0forDStarptbin+1<<
")\nSetting nPtBins to "<<nPtBinLimits-1<<endl;
3273 AliFatal(
"exiting");
3277 AliFatal(
"exiting");
3290 cout<<
"Overflow, exit..."<<endl;
3307 AliFatal(
"exiting");
3338 printf(
"Changing the pt bins\n");
3342 cout<<
"Warning: ptBinLimits dimension "<<nPtBinLimits<<
" != nPtBins+1 ("<<
fnPtBinsDStarforDStarptbin+1<<
")\nSetting nPtBins to "<<nPtBinLimits-1<<endl;
3367 if(bCut == kTRUE) {bCutArray[nCutIndex] = 1;
return 0;}
3385 if(bCut == kTRUE) {bCutArray[nCutIndex] = 1;
return 0;}
3402 if(bCut == kTRUE) {bCutArray[nCutIndex] = 1;
return 0;}
3419 if(bCut == kTRUE) {bCutArray[nCutIndex] = 1;
return 0;}
3439 for(
Int_t iv=0; iv<nVars; iv++) {
3462 for(
Int_t iv=0; iv<nVars; iv++) {
3485 for(
Int_t iv=0; iv<nVars; iv++) {
3515 cout<<
"Overflow, exit..."<<endl;
3547 cout<<
"Overflow, exit..."<<endl;
3577 cout<<
"Overflow, exit..."<<endl;
3608 cout<<
"Overflow, exit..."<<endl;
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
Bool_t GetIsUpperCutDStarforDStarptbin(Int_t nCutIndex)
virtual Int_t SelectPID(AliAODTrack *track, Int_t type)
Bool_t fUseITSRefitD0Kaon
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)
void SetCutsD0forDStarptbin(Int_t nVars, Int_t nPtBins, Float_t **cutsRDD0forDStarptbin)
Float_t * fCutsRDDStarforDStarptbin
Float_t * fCutsRDD0forD0ptbin
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
Bool_t fUseITSRefitD0Pion
Int_t GetnSigmaTPC(AliAODTrack *track, Int_t species, Double_t &sigma) const
Int_t GetNVarsDStarforDStarptbin() const
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)
Int_t ApplyCutOnVariableDStarforDStarptbin(Int_t nCutIndex, Int_t ptbin, Float_t cutVariableValue, Bool_t bCutArray[25])
Bool_t GetIsUpperCutD0forD0ptbin(Int_t nCutIndex)
void InvMass(Int_t icalo, TString particle, TString fileName)
Int_t fMinTPCNclsDStarPion
void SetNVars(Int_t nVars)
Bool_t fUseTPCRefitDStarPion
Int_t PtBinDStarforDStarptbin(Double_t pt) const
Bool_t fUseFilterBitB0Pion
Bool_t * fIsCutUsedDStarforDStarptbin
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
Bool_t * fIsCutUsedD0forD0ptbin
Bool_t fUseFilterBitD0Pion
Bool_t fUseTPCRefitB0Pion
Bool_t fUseITSRefitDStarPion
Int_t CheckBands(AliPID::EParticleType specie, AliPIDResponse::EDetector detector, AliAODTrack *track)
Int_t fFilterBitDStarPion
Bool_t * GetIsUpperCut() const
Int_t ApplyCutOnVariableD0forD0ptbin(Int_t nCutIndex, Int_t ptbin, Float_t cutVariableValue, Bool_t bCutArray[25])
void SetCut(Int_t nCutIndex, Int_t ptBin, AliRDHFCutsB0toDStarPi::EUpperCut cutDirection, Float_t cutValue)
Int_t fnPtBinsD0forDStarptbin
void SetIsCutUsedDStarforDStarptbin(Int_t nCutIndex, Int_t ptbin, Bool_t isCutUsed)
Bool_t GetIsCutUsed(Int_t nCutIndex, Int_t ptbin) const
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)
Int_t ApplyCutOnVariable(Int_t nCutIndex, Int_t ptbin, Float_t cutVariableValue, Bool_t bCutArray[85])
TString * fVarNamesD0forD0ptbin
void SetPtBinsD0forDStarptbin(Int_t nPtBinLimits, Float_t *ptBinLimits)
Bool_t * fIsUpperCutD0forDStarptbin
AliRDHFCutsB0toDStarPi & operator=(const AliRDHFCutsB0toDStarPi &source)
Int_t ApplyCutOnVariableD0forDStarptbin(Int_t nCutIndex, Int_t ptbin, Float_t cutVariableValue, Bool_t bCutArray[35])
Bool_t CheckStatus(AliAODTrack *track, TString detectors) const
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
void SetNVarsDStarforDStarptbin(Int_t nVars)
Bool_t fUseITSRefitB0Pion
Int_t fIsSelectedPID
outcome of cuts selection
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 fUseFilterBitDStarPion
Float_t * fCutsRD
fnVars*fnPtBins
Bool_t fUseTPCRefitD0Kaon
Bool_t fUseTPCRefitD0Pion
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)
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)
void SetVarNamesD0forD0ptbin(Int_t nVars, TString *varNames, Bool_t *isUpperCut)
Bool_t * fIsCutUsedD0forDStarptbin
virtual void GetCutVarsForOpt(AliAODRecoDecayHF *d, Float_t *vars, Int_t nvars, Int_t *pdgdaughters)
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
Bool_t fUseFilterBitD0Kaon
Int_t GetNVarsD0forDStarptbin() const
Int_t IsD0forDStarptbinSelected(TObject *obj, Int_t selectionLevel, AliAODEvent *aod, Bool_t *bCutArray)
Int_t GetNPtBinsD0forDStarptbin() const
Int_t fnPtBinLimitsD0forDStarptbin
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
Int_t GetGlobalIndex(Int_t iVar, Int_t iPtBin) const
Int_t fnVarsD0forDStarptbin
AliRDHFCutsB0toDStarPi(const char *name="B0toDStarPiCuts")