16 static const Float_t M_OMEGA_2 = ::pow(M_OMEGA_MINUS,2);
17 static const Float_t M_XI_2 = ::pow(M_XI_MINUS,2);
18 static const Float_t M_KAON_MINUS_2 = ::pow(M_KAON_MINUS,2);
34 virtual Int_t
charge()
const=0;
46 virtual Float_t decayVertexXiX()
const=0;
47 virtual Float_t decayVertexXiY()
const=0;
61 virtual Float_t momBachelorX()
const=0;
62 virtual Float_t momBachelorY()
const=0;
66 virtual TVector3
momXi()=0;
67 virtual Float_t momXiX()=0;
68 virtual Float_t momXiY()=0;
69 virtual Float_t
momXiZ()=0;
73 virtual Float_t momXiAtPrimVertexX()=0;
74 virtual Float_t momXiAtPrimVertexY()=0;
136 Float_t
massHypXi(Float_t massV0, Float_t massBachelor);
137 Float_t eHypXi(Float_t mass);
138 Float_t rapHypXi(Float_t mass);
139 Float_t mtHypXi(Float_t mass);
146 Float_t decayCosThetaBachelorXi();
147 Float_t decayCosThetaV0Xi();
148 Float_t decayCosThetaBachelorOmega();
149 Float_t decayCosThetaV0Omega();
157 TVector3 momBachelorXi();
159 TVector3 momBachelorOmega();
160 TVector3 momV0Omega();
172 virtual Int_t V0Index() {
return -1;}
206 virtual Float_t
chi2Xi()
const {
return 0;}
209 virtual Float_t
clXi()
const {
return 0;}
226 Float_t Ptot2Bachelor();
229 Float_t MomBachelorAlongXi();
230 Float_t MomV0AlongXi();
233 inline StXiI::StXiI() :
StV0I() {}
240 return ::sqrt(::pow(decayVertexV0X() - decayVertexXiX(),2) +
241 ::pow(decayVertexV0Y() - decayVertexXiY(),2) +
246 return ::sqrt(::pow(decayVertexXiX() - mEvent->primaryVertexX(),2) +
247 ::pow(decayVertexXiY() - mEvent->primaryVertexY(),2) +
252 return TVector3(momBachelorX(), momBachelorY(),
momBachelorZ());
255 inline Float_t StXiI::alphaXi() {
256 Float_t mMomBachelorAlongXi = MomBachelorAlongXi();
257 Float_t mMomV0AlongXi = MomV0AlongXi();
258 return (((Float_t)
charge()) * (mMomBachelorAlongXi-mMomV0AlongXi)/
259 (mMomBachelorAlongXi+mMomV0AlongXi));
263 Float_t ptarmsq = Ptot2V0() - ::pow(MomV0AlongXi(),2);
264 return ((ptarmsq > 0.) ? ::sqrt(ptarmsq) : 0.);
268 return ::sqrt(Ptot2Xi()+M_OMEGA_2);
272 return ::sqrt(Ptot2Xi()+M_XI_2);
275 inline Float_t StXiI::eHypXi(Float_t mass) {
276 return ::sqrt(Ptot2Xi()+::pow(mass,2));
280 return ::sqrt(Ptot2Bachelor()+::pow(mass,2));
284 return ::sqrt(Ptot2Bachelor()+M_PION_MINUS_2);
288 return ::sqrt(Ptot2Bachelor()+M_KAON_MINUS_2);
292 Float_t msq = ::pow(eHypV0(massV0)+
eBachelorHyp(massBachelor),2)-Ptot2Xi();
293 return ((msq > 0.) ? ::sqrt(msq) : 0.);
304 inline Float_t StXiI::rapHypXi(Float_t mass) {
305 Float_t mMomXiZ =
momXiZ();
306 Float_t eX = eHypXi(mass);
307 return 0.5*::log((eX+mMomXiZ)/(eX-mMomXiZ));
311 Float_t mMomXiZ =
momXiZ();
313 return 0.5*::log((eom+mMomXiZ)/(eom-mMomXiZ));
317 Float_t mMomXiZ =
momXiZ();
319 return 0.5*::log((exi+mMomXiZ)/(exi-mMomXiZ));
335 return ::sqrt(Ptot2Bachelor());
339 return ::sqrt(Pt2Xi());
343 return ::sqrt(Ptot2Xi());
351 return (-::log(tan(
thetaXi()/2.)));
362 inline Float_t StXiI::mtHypXi(Float_t mass) {
363 return ::sqrt(Pt2Xi() + ::pow(mass,2));
367 return ::sqrt(Pt2Xi() + M_OMEGA_2);
371 return ::sqrt(Pt2Xi() + M_XI_2);
375 return (mtHypXi(mass) - mass);
379 return (
mtOmega() - M_OMEGA_MINUS);
383 return (
mtXi() - M_XI_MINUS);
386 inline Float_t StXiI::Ptot2Bachelor () {
387 return (::pow(momBachelorX(),2) +
391 inline Float_t StXiI::Pt2Xi() {
392 return (::pow(momXiX(),2) + ::pow(momXiY(),2));
395 inline Float_t StXiI::Ptot2Xi() {
396 return (Pt2Xi() + ::pow(
momXiZ(),2));
399 inline Float_t StXiI::MomBachelorAlongXi() {
400 Float_t mPtot2Xi = Ptot2Xi();
402 return (momBachelorX()*momXiX() +
403 momBachelorY()*momXiY() +
408 inline Float_t StXiI::MomV0AlongXi() {
409 Float_t mPtot2Xi = Ptot2Xi();
411 return (momV0X()*momXiX() +
417 inline Float_t StXiI::decayCosThetaBachelorXi() {
418 return dCTXi(M_XI_MINUS,M_PION_MINUS,bachelor);
421 inline Float_t StXiI::decayCosThetaV0Xi() {
422 return dCTXi(M_XI_MINUS,M_LAMBDA,v0);
425 inline Float_t StXiI::decayCosThetaBachelorOmega() {
426 return dCTXi(M_OMEGA_MINUS,M_KAON_MINUS,bachelor);
429 inline Float_t StXiI::decayCosThetaV0Omega() {
430 return dCTXi(M_OMEGA_MINUS,M_LAMBDA,v0);
434 return ( (type == bachelor) ?
435 StDecayAngle::decayCosTheta(momXiX(),momXiY(),
momXiZ(),m1,
437 StDecayAngle::decayCosTheta(momXiX(),momXiY(),
momXiZ(),m1,
438 momV0X(),momV0Y(),
momV0Z(),m2) );
441 inline TVector3 StXiI::momBachelorXi() {
442 return momXiFrame(M_XI_MINUS,M_PION_MINUS,bachelor);
445 inline TVector3 StXiI::momV0Xi() {
449 inline TVector3 StXiI::momBachelorOmega() {
450 return momXiFrame(M_OMEGA_MINUS,M_KAON_MINUS,bachelor);
453 inline TVector3 StXiI::momV0Omega() {
458 return ( (type == bachelor) ?
459 StDecayAngle::getShiftedDaughter(momXiX(),momXiY(),
momXiZ(),m1,
461 StDecayAngle::getShiftedDaughter(momXiX(),momXiY(),
momXiZ(),m1,
462 momV0X(),momV0Y(),
momV0Z(),m2) );
Float_t mtm0Xi()
mt-m0 assuming (anti)Xi
virtual TVector3 momXi()=0
Momentum of Xi/Omega at decay vertex.
virtual Float_t chi2Bachelor() const
Chi square of bachelor.
virtual Float_t dedxBachelor() const
dE/dX of bachelor
Float_t rapOmega()
Rapidity assuming (anti)Omega.
Float_t eBachelorKaon()
Energy of bachelor assuming kaon.
virtual Float_t clXi() const
Confidence level of Xi.
Float_t massHypXi(Float_t massV0, Float_t massBachelor)
Invariant mass assuming daughter masses.
virtual Int_t keyBachelor() const
Bachelor track key.
Float_t cTauXi()
Lifetime (ctau) assuming (anti)Xi.
Float_t pseudoRapBachelor()
Pseudorapidity of bachelor.
TVector3 momXiFrame(Float_t m1, Float_t m2, StXiDaughter type)
Float_t decayDistanceV0() const
3-d distance of V0 decay from primary vertex
Float_t mtm0HypXi(Float_t mass)
Energy, rapidity, mt, mt-m0 of Xi assuming its mass.
Float_t dCTXi(Float_t m1, Float_t m2, StXiDaughter type)
This helper function can be used for decayCosTheta of any hypothesis.
virtual void setBachelorBad()
Set the bachelor as bad.
Float_t eOmega()
Energy assuming Omega hypothesis.
virtual UShort_t numDedxBachelor() const
Number of dE/dX points for bachelor.
TVector3 momBachelor()
Momentum of bachelor.
Float_t ptotBachelor()
Total momentum of bachelor.
Float_t pseudoRapXi()
Pseudorapidity of Xi/Omega.
Float_t thetaXi()
Polar angle theta of Xi/Omega.
virtual Float_t decayLengthV0() const
3-d decay distance
virtual Float_t lenDedxBachelor() const
Length of dE/dX track for bachelor.
virtual Long_t detectorIdPars()
Detector ID for pars used in Xi finder.
Float_t decayLengthXi() const
3-d decay distance of Xi
Float_t mtXi()
Transverse mass assuming (anti)Xi.
Float_t ptBachelor()
Transverse momentum of bachelor.
Float_t cTauOmega()
Lifetime (ctau) assuming (anti)Omega.
virtual Float_t decayVertexXiZ() const =0
Coordinates of decay vertex.
Float_t mtm0Omega()
mt-m0 assuming (anti)Omega
virtual Float_t clBachelor() const
Confidence level of bachelor.
virtual Float_t momXiAtPrimVertexZ()=0
Momentum components of Xi/Omega at primary vertex.
Float_t ptXi()
Transverse momentum of Xi/Omega.
virtual Bool_t bad() const
Test whether any child is bad.
Float_t eXi()
Energy assuming Xi hypothesis.
virtual Int_t charge() const =0
Particle charge.
Float_t massOmega()
Mass assuming Omega hypothesis.
virtual Float_t decayLengthV0() const
3-d decay distance of V0 from Xi
Float_t thetaBachelor()
Polar angle theta of bachelor.
virtual Long_t detectorIdXi()
Detector ID for Xi vertex.
Float_t ptArmXi()
Armenteros-Podolanski variables.
virtual Float_t decayVertexV0Z() const =0
Coordinates of decay vertex.
Float_t eBachelorHyp(Float_t mass)
Energy of bachelor assuming its mass.
virtual Float_t dcaXiDaughters() const
DCA of xi daughters at decay vertex.
Float_t eLambda()
Energy assuming lambda hypothesis.
virtual TVector3 momXiAtPrimVertex()=0
Momentum of Xi/Omega at primary vertex.
Float_t mtOmega()
Transverse mass assuming (anti)Omega.
Float_t eBachelorPion()
Energy of bachelor assuming pion.
StXiDaughter
Enumeration of Xi daughter types.
Float_t primaryVertexZ() const
Primary vtx position coordinates.
virtual Float_t momV0Z() const =0
Momentum components of V0.
virtual Float_t momBachelorZ() const =0
Momentum components of bachelor.
virtual Float_t dcaXiToPrimVertex() const
DCA of xi to primary vertex.
Float_t rapXi()
Rapidity assuming (anti)Xi.
virtual Float_t momXiZ()=0
Momentum components of Xi/Omega at decay vertex.
virtual Float_t chi2Xi() const
Chi square of Xi (used only by MuDst)
virtual StTrackTopologyMap & topologyMapBachelor()
Bachelor track topology map.
virtual Float_t errDedxBachelor() const
Error on mean of dE/dX of bachelor.
Float_t ptotXi()
Total momentum of Xi/Omega.
virtual Bool_t bad() const
Test whether either daughter is bad.
Float_t massXi()
Mass assuming Xi hypothesis.
virtual Float_t dcaBachelorToPrimVertex() const
DCA of bachelor to primary vertex.