1 /**************************************************************************
2 * Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 //-------------------------------------------------------------------------
17 // Analysis Oriented Data (AOD) V0 vertex class
18 // Authors: B.Hippolyte, IReS, hippolyt@in2p3.fr
19 // G.Van Buren, BNL, gene@bnl.gov (original STAR MuDsts)
20 //-------------------------------------------------------------------------
23 #include "AliAODTrack.h"
27 AliAODv0::AliAODv0() :
29 fDcaV0ToPrimVertex(999),
34 AliAODv0::AliAODv0(AliAODVertex* rAODVertex, Double_t rDcaV0Daughters, Double_t rDcaV0ToPrimVertex,
35 const Double_t *rMomPos, const Double_t *rMomNeg, Double_t *rDcaDaughterToPrimVertex) :
36 AliAODRecoDecay(rAODVertex,2,0,rDcaDaughterToPrimVertex),
37 fDcaV0ToPrimVertex(rDcaV0ToPrimVertex),
40 //--------------------------------------------------------------------
41 // Constructor via setting each data member
42 //--------------------------------------------------------------------
46 fNPID = 0; // used to be 2!
48 fDCA = new Double_t[fNDCA];
50 fDCA[0] = rDcaV0Daughters;
51 fDcaV0ToPrimVertex = rDcaV0ToPrimVertex;
53 fPx = new Double_t[GetNProngs()];
54 fPy = new Double_t[GetNProngs()];
55 fPz = new Double_t[GetNProngs()];
66 AliAODv0::AliAODv0(const AliAODv0& rAliAODv0) :
67 AliAODRecoDecay(rAliAODv0),
68 fDcaV0ToPrimVertex(rAliAODv0.fDcaV0ToPrimVertex),
69 fOnFlyStatus(rAliAODv0.fOnFlyStatus)
71 //--------------------------------------------------------------------
73 //--------------------------------------------------------------------
76 AliAODv0& AliAODv0::operator=(const AliAODv0& rAliAODv0){
77 //--------------------------------------------------------------------
78 // Assignment overload
79 //--------------------------------------------------------------------
80 if(this!=&rAliAODv0) {
81 AliAODRecoDecay::operator=(rAliAODv0);
82 fDcaV0ToPrimVertex = rAliAODv0.fDcaV0ToPrimVertex ;
83 fOnFlyStatus = rAliAODv0.fOnFlyStatus;
88 AliAODv0::~AliAODv0(){
89 //--------------------------------------------------------------------
91 //--------------------------------------------------------------------
94 void AliAODv0::Fill(AliAODVertex *rAODVertex, Double_t rDcaV0Daughters, Double_t rDcaV0ToPrimVertex,
95 const Double_t *rMomPos, const Double_t *rMomNeg, const Double_t *rDcaDaughterToPrimVertex){
96 //--------------------------------------------------------------------
97 // Filling with all needed info
98 //--------------------------------------------------------------------
99 this->SetSecondaryVtx(rAODVertex);
101 fDCA[0] = rDcaV0Daughters;
102 fDcaV0ToPrimVertex = rDcaV0ToPrimVertex;
104 fPx[0] = rMomPos[0] ;
112 fd0[0] = rDcaDaughterToPrimVertex[0];
113 fd0[1] = rDcaDaughterToPrimVertex[1];
116 void AliAODv0::ResetV0(){
117 //--------------------------------------------------------------------
118 // Resetting all the info
119 //--------------------------------------------------------------------
120 GetSecondaryVtx()->SetChi2perNDF(999);
121 GetSecondaryVtx()->RemoveCovMatrix();
122 GetSecondaryVtx()->RemoveDaughters();
123 GetSecondaryVtx()->SetParent((TObject*) 0x0);
124 GetSecondaryVtx()->SetID(-1);
125 GetSecondaryVtx()->SetPosition(999,999,999);
126 GetSecondaryVtx()->SetType(AliAODVertex::kUndef);
129 fDcaV0ToPrimVertex = 999;
143 Short_t AliAODv0::GetPosID() const {
144 AliAODTrack *posTrack = (AliAODTrack *) (this->GetSecondaryVtx()->GetDaughter(0));
145 Short_t posID = posTrack->GetID();
149 Short_t AliAODv0::GetNegID() const {
150 AliAODTrack *negTrack = (AliAODTrack *) (this->GetSecondaryVtx()->GetDaughter(1));
151 Short_t negID = negTrack->GetID();
155 void AliAODv0::Print(Option_t* /*option*/) const {
157 // Print some information
159 AliAODRecoDecay::Print();
160 printf("AliAODv0: invariant mass (k0s %.6f, lambda %.6f, anti-lambda %.6f) \n",MassK0Short(),MassLambda(),MassAntiLambda());
161 printf("AliAODv0: dca (v0d %.6f, v0tpv %.6f, postpv %.6f, negtpv %.6f ) \n",DcaV0Daughters(),DcaV0ToPrimVertex(),DcaPosToPrimVertex(),DcaNegToPrimVertex());
162 printf("AliAODv0: mom (ptot2 %.6f, pt2 %.6f, rapk0 %.6f, rapla %.6f ) \n",Ptot2V0(),Pt2V0(),RapK0Short(),RapLambda());
163 printf("AliAODv0: cin (mpav0 %.6f, mnav0 %.6f, alpha %.6f, ptarm %.6f ) \n",MomPosAlongV0(),MomNegAlongV0(),AlphaV0(),PtArmV0());
164 printf("AliAODv0: nrg (eppro %.6f, enpro %.6f, eppio %.6f, enpio %.6f ) \n",EPosProton(),ENegProton(),EPosPion(),ENegPion());