25 #include <TDatabasePDG.h> 28 #include "AliAODTrack.h" 29 #include "AliESDtrack.h" 30 #include "AliVertexerTracks.h" 32 #include "TLorentzVector.h" 97 if(&source ==
this)
return *
this;
129 Double_t mDplusPDG = TDatabasePDG::Instance()->GetParticle(411)->Mass();
131 if(TMath::Abs(mDplus-mDplusPDG)>cuts[0])
return kFALSE;
133 if(TMath::Abs(PtProng(1)) < cuts[1] || TMath::Abs(Getd0Prong(1))<cuts[3])
return kFALSE;
134 if(TMath::Abs(PtProng(0)) < cuts[2] || TMath::Abs(Getd0Prong(0))<cuts[4])
return kFALSE;
135 if(TMath::Abs(PtProng(2)) < cuts[2] || TMath::Abs(Getd0Prong(2))<cuts[4])
return kFALSE;
138 for(
Int_t i=0;i<3;i++) if(GetDCA(i)>cuts[11])
return kFALSE;
142 if(Getd0Prong(0)*Getd0Prong(1)<0. && Getd0Prong(2)*Getd0Prong(1)<0.)
return kFALSE;
149 if(TMath::Abs(PtProng(0))<cuts[8] && TMath::Abs(PtProng(1))<cuts[8] && TMath::Abs(PtProng(2))<cuts[8])
return kFALSE;
151 Double_t sum2=Getd0Prong(0)*Getd0Prong(0)+Getd0Prong(1)*Getd0Prong(1)+Getd0Prong(2)*Getd0Prong(2);
152 if(sum2<cuts[10])
return kFALSE;
180 okDsKKpi=1; okDspiKK=1;
181 okMassPhi=0; okMassK0star=0;
183 Double_t mDsPDG = TDatabasePDG::Instance()->GetParticle(431)->Mass();
188 if(TMath::Abs(mDsKKpi-mDsPDG)>cuts[0]) okDsKKpi = 0;
189 if(TMath::Abs(mDspiKK-mDsPDG)>cuts[0]) okDspiKK = 0;
190 if(!okDsKKpi && !okDspiKK)
return kFALSE;
193 if(TMath::Abs(PtProng(0)) < cuts[1] || TMath::Abs(Getd0Prong(0))<cuts[3])
return kFALSE;
194 if(TMath::Abs(PtProng(1)) < cuts[1] || TMath::Abs(Getd0Prong(1))<cuts[3])
return kFALSE;
195 if(TMath::Abs(PtProng(2)) < cuts[2] || TMath::Abs(Getd0Prong(2))<cuts[4])
return kFALSE;
198 Double_t mPhiPDG = TDatabasePDG::Instance()->GetParticle(333)->Mass();
199 Double_t mK0starPDG = TDatabasePDG::Instance()->GetParticle(313)->Mass();
201 Double_t mass01phi=InvMass2Prongs(0,1,321,321);
202 Double_t mass12K0s=InvMass2Prongs(1,2,321,211);
203 if(TMath::Abs(mass01phi-mPhiPDG)<cuts[12]) okMassPhi=1;
204 if(TMath::Abs(mass12K0s-mK0starPDG)<cuts[13]) okMassK0star = 1;
205 if(!okMassPhi && !okMassK0star) okDsKKpi=kFALSE;
208 Double_t mass01K0s=InvMass2Prongs(0,1,211,321);
209 Double_t mass12phi=InvMass2Prongs(1,2,321,321);
210 if(TMath::Abs(mass01K0s-mK0starPDG)<cuts[13]) okMassK0star = 1;
211 if(TMath::Abs(mass12phi-mPhiPDG)<cuts[12]) okMassPhi=1;
212 if(!okMassPhi && !okMassK0star) okDspiKK=kFALSE;
214 if(!okDsKKpi && !okDspiKK)
return kFALSE;
220 for(
Int_t i=0;i<3;i++) if(GetDCA(i)>cuts[11])
return kFALSE;
230 if(TMath::Abs(PtProng(0))<cuts[8] && TMath::Abs(PtProng(1))<cuts[8] && TMath::Abs(PtProng(2))<cuts[8])
return kFALSE;
232 Double_t sum2=Getd0Prong(0)*Getd0Prong(0)+Getd0Prong(1)*Getd0Prong(1)+Getd0Prong(2)*Getd0Prong(2);
233 if(sum2<cuts[10])
return kFALSE;
260 okLcpKpi=1; okLcpiKp=1;
262 Double_t mLcPDG = TDatabasePDG::Instance()->GetParticle(4122)->Mass();
267 if(TMath::Abs(mLcpKpi-mLcPDG)>cuts[0]) okLcpKpi = 0;
268 if(TMath::Abs(mLcpiKp-mLcPDG)>cuts[0]) okLcpiKp = 0;
269 if(!okLcpKpi && !okLcpiKp)
return kFALSE;
272 if(TMath::Abs(PtProng(0)) < cuts[1] || TMath::Abs(Getd0Prong(0))<cuts[3])
return kFALSE;
273 if(TMath::Abs(PtProng(1)) < cuts[2] || TMath::Abs(Getd0Prong(1))<cuts[4])
return kFALSE;
274 if(TMath::Abs(PtProng(2)) < cuts[2] || TMath::Abs(Getd0Prong(2))<cuts[4])
return kFALSE;
277 for(
Int_t i=0;i<3;i++) if(GetDCA(i)>cuts[11])
return kFALSE;
281 if(Getd0Prong(0)*Getd0Prong(1)<0. && Getd0Prong(2)*Getd0Prong(1)<0.)
return kFALSE;
288 if(TMath::Abs(PtProng(0))<cuts[8] && TMath::Abs(PtProng(1))<cuts[8] && TMath::Abs(PtProng(2))<cuts[8])
return kFALSE;
290 Double_t sum2=Getd0Prong(0)*Getd0Prong(0)+Getd0Prong(1)*Getd0Prong(1)+Getd0Prong(2)*Getd0Prong(2);
291 if(sum2<cuts[10])
return kFALSE;
310 }
else if (option==1){
320 Double_t ePhi=EProng(indexK1,321)+EProng(indexK2,321);
321 Double_t pxPhi=PxProng(indexK1)+PxProng(indexK2);
322 Double_t pyPhi=PyProng(indexK1)+PyProng(indexK2);
323 Double_t pzPhi=PzProng(indexK1)+PzProng(indexK2);
328 TVector3 vecK1Phiframe;
329 TLorentzVector vecK1(PxProng(indexK1),PyProng(indexK1),PzProng(indexK1),EProng(indexK1,321));
330 vecK1.Boost(-bxPhi,-byPhi,-bzPhi);
331 vecK1.Boost(vecK1Phiframe);
332 vecK1Phiframe=vecK1.BoostVector();
334 TVector3 vecPiPhiframe;
335 TLorentzVector vecPi(PxProng(indexPi),PyProng(indexPi),PzProng(indexPi),EProng(indexPi,211));
336 vecPi.Boost(-bxPhi,-byPhi,-bzPhi);
337 vecPi.Boost(vecPiPhiframe);
338 vecPiPhiframe=vecPi.BoostVector();
340 Double_t innera=vecPiPhiframe.Dot(vecK1Phiframe);
341 Double_t norm1a=TMath::Sqrt(vecPiPhiframe.Dot(vecPiPhiframe));
342 Double_t norm2a=TMath::Sqrt(vecK1Phiframe.Dot(vecK1Phiframe));
343 Double_t cosK1PhiFrame=innera/(norm1a*norm2a);
345 return cosK1PhiFrame;
358 }
else if (option==1){
370 TLorentzVector vecPi(PxProng(indexPi),PyProng(indexPi),PzProng(indexPi),EProng(indexPi,211));
371 vecPi.Boost(-bxD,-byD,-bzD);
372 vecPi.Boost(piDsframe);
373 piDsframe=vecPi.BoostVector();
375 TVector3 vecDs(Px(),Py(),Pz());
377 Double_t inner=vecDs.Dot(piDsframe);
378 Double_t norm1=TMath::Sqrt(vecDs.Dot(vecDs));
379 Double_t norm2=TMath::Sqrt(piDsframe.Dot(piDsframe));
380 Double_t cosPiDsFrame=inner/(norm1*norm2);
391 AliVertexerTracks vertexer(aod->GetMagneticField());
393 AliAODVertex* aodV=aod->GetPrimaryVertex();
395 aodV->GetCovarianceMatrix(cov);
397 Int_t nC=aodV->GetNContributors();
398 AliESDVertex vprim(pos,cov,chi2,nC);
399 vertexer.SetVtxStart(&vprim);
402 for(
Int_t iDau=0; iDau<GetNDaughters(); iDau++){
403 AliVTrack* at=(AliVTrack*)GetDaughter(iDau);
404 threeTrackArray.AddAt(
new AliESDtrack(at),iDau);
407 AliESDVertex* secVert=vertexer.VertexForSelectedESDTracks(&threeTrackArray,kFALSE,kTRUE,kFALSE);
408 Double_t disp=secVert->GetDispersion();
410 threeTrackArray.Delete();
AliAODRecoDecayHF & operator=(const AliAODRecoDecayHF &source)
Double_t InvMassDsKKpi() const
Double_t CosPiDsLabFrame(Int_t option) const
Bool_t SelectLc(const Double_t *cuts, Int_t &okLcpKpi, Int_t &okLcpiKp) const
Double_t InvMassDspiKK() const
Double_t fDist23toPrim
distance prim vert - 2 opposite sign track vertex
virtual void DeleteRecoD()
Double_t fDist12toPrim
track dispersion around the secondary vertex
Bool_t SelectDs(const Double_t *cuts, Int_t &okDsKKpi, Int_t &okDspiKK, Int_t &okMassPhi, Int_t &okMassK0star) const
Double_t InvMassDplus() const
Double_t ComputeSigmaVert(const AliAODEvent *aod) const
Bool_t SelectDplus(const Double_t *cuts) const
virtual void DeleteRecoD()
Double_t CosPiKPhiRFrame(Int_t option) const
AliAODRecoDecayHF3Prong & operator=(const AliAODRecoDecayHF3Prong &source)
Double_t CosPointingAngle() const
Double_t InvMassLcpKpi() const
Double_t DecayLength() const
Double_t InvMassLcpiKp() const
AliAODRecoDecayHF3Prong()