ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

//-------------------------------------------------------------------------
//     Analysis Oriented Data (AOD) V0 vertex class
//     Authors: B.Hippolyte, IReS, hippolyt@in2p3.fr 
//              G.Van Buren, BNL,  gene@bnl.gov      (original STAR MuDsts)
//-------------------------------------------------------------------------

#include "AliAODv0.h"
#include "AliAODTrack.h"

ClassImp(AliAODv0)

  AliAODv0::AliAODv0() : 
    AliAODRecoDecay(),
    fDcaV0ToPrimVertex(999),
    fOnFlyStatus(kFALSE)
{
}

AliAODv0::AliAODv0(AliAODVertex* rAODVertex, Double_t rDcaV0Daughters, Double_t rDcaV0ToPrimVertex,
	   const Double_t *rMomPos, const Double_t *rMomNeg, Double_t *rDcaDaughterToPrimVertex) :
  AliAODRecoDecay(rAODVertex,2,0,rDcaDaughterToPrimVertex),
  fDcaV0ToPrimVertex(rDcaV0ToPrimVertex),
  fOnFlyStatus(kFALSE)
{
  //--------------------------------------------------------------------
  // Constructor via setting each data member
  //--------------------------------------------------------------------
  fCharge  = 0;
  fNProngs = 2;
  fNDCA    = 1;
  fNPID    = 0; // used to be 2!

  fDCA = new Double_t[fNDCA];

  fDCA[0] = rDcaV0Daughters;
  fDcaV0ToPrimVertex = rDcaV0ToPrimVertex;

  fPx = new Double_t[GetNProngs()];
  fPy = new Double_t[GetNProngs()];
  fPz = new Double_t[GetNProngs()];

  fPx[0] = rMomPos[0] ;
  fPy[0] = rMomPos[1];
  fPz[0] = rMomPos[2];

  fPx[1] = rMomNeg[0];
  fPy[1] = rMomNeg[1];
  fPz[1] = rMomNeg[2];
}

AliAODv0::AliAODv0(const AliAODv0& rAliAODv0) :
  AliAODRecoDecay(rAliAODv0),
  fDcaV0ToPrimVertex(rAliAODv0.fDcaV0ToPrimVertex),
  fOnFlyStatus(rAliAODv0.fOnFlyStatus)
 {
  //--------------------------------------------------------------------
  // Copy constructor
  //--------------------------------------------------------------------
}

AliAODv0& AliAODv0::operator=(const AliAODv0& rAliAODv0){
  //--------------------------------------------------------------------
  // Assignment overload
  //--------------------------------------------------------------------
  if(this!=&rAliAODv0) {
    AliAODRecoDecay::operator=(rAliAODv0);
    fDcaV0ToPrimVertex  = rAliAODv0.fDcaV0ToPrimVertex ;
    fOnFlyStatus        = rAliAODv0.fOnFlyStatus;
  }
  return *this;
}

AliAODv0::~AliAODv0(){
  //--------------------------------------------------------------------
  // Empty destructor
  //--------------------------------------------------------------------
}

void AliAODv0::Fill(AliAODVertex *rAODVertex, Double_t rDcaV0Daughters, Double_t rDcaV0ToPrimVertex,
		    const Double_t *rMomPos, const Double_t *rMomNeg, const Double_t *rDcaDaughterToPrimVertex){
  //--------------------------------------------------------------------
  // Filling with all needed info
  //--------------------------------------------------------------------
  this->SetSecondaryVtx(rAODVertex);

  fDCA[0] = rDcaV0Daughters;
  fDcaV0ToPrimVertex = rDcaV0ToPrimVertex;

  fPx[0] = rMomPos[0] ;
  fPy[0] = rMomPos[1];
  fPz[0] = rMomPos[2];

  fPx[1] = rMomNeg[0];
  fPy[1] = rMomNeg[1];
  fPz[1] = rMomNeg[2];

  fd0[0] = rDcaDaughterToPrimVertex[0];
  fd0[1] = rDcaDaughterToPrimVertex[1];
}

void AliAODv0::ResetV0(){
  //--------------------------------------------------------------------
  // Resetting all the info
  //--------------------------------------------------------------------
  GetSecondaryVtx()->SetChi2perNDF(999);
  GetSecondaryVtx()->RemoveCovMatrix();
  GetSecondaryVtx()->RemoveDaughters();
  GetSecondaryVtx()->SetParent((TObject*) 0x0);
  GetSecondaryVtx()->SetID(-1);
  GetSecondaryVtx()->SetPosition(999,999,999);
  GetSecondaryVtx()->SetType(AliAODVertex::kUndef);

  fDCA[0] = 999;
  fDcaV0ToPrimVertex  = 999;

  fPx[0] = 999;
  fPy[0] = 999;
  fPz[0] = 999;

  fPx[1] = 999;
  fPy[1] = 999;
  fPz[1] = 999;

  fd0[0] = 999;
  fd0[1] = 999;
}

Short_t AliAODv0::GetPosID() const {
  	AliAODTrack *posTrack = (AliAODTrack *) (this->GetSecondaryVtx()->GetDaughter(0));
	Short_t posID = posTrack->GetID();
	return posID;
}

Short_t AliAODv0::GetNegID() const {
  	AliAODTrack *negTrack = (AliAODTrack *) (this->GetSecondaryVtx()->GetDaughter(1));
	Short_t negID = negTrack->GetID();
	return negID;
}

void AliAODv0::Print(Option_t* /*option*/) const {
  //
  // Print some information
  //
  AliAODRecoDecay::Print();
  printf("AliAODv0: invariant mass (k0s %.6f, lambda %.6f, anti-lambda %.6f) \n",MassK0Short(),MassLambda(),MassAntiLambda());
  printf("AliAODv0: dca (v0d %.6f, v0tpv %.6f, postpv %.6f, negtpv %.6f ) \n",DcaV0Daughters(),DcaV0ToPrimVertex(),DcaPosToPrimVertex(),DcaNegToPrimVertex());
  printf("AliAODv0: mom (ptot2 %.6f, pt2 %.6f, rapk0 %.6f, rapla %.6f ) \n",Ptot2V0(),Pt2V0(),RapK0Short(),RapLambda());
  printf("AliAODv0: cin (mpav0 %.6f, mnav0 %.6f, alpha %.6f, ptarm %.6f ) \n",MomPosAlongV0(),MomNegAlongV0(),AlphaV0(),PtArmV0());
  printf("AliAODv0: nrg (eppro %.6f, enpro %.6f, eppio %.6f, enpio %.6f ) \n",EPosProton(),ENegProton(),EPosPion(),ENegPion());

  return;
}
 AliAODv0.cxx:1
 AliAODv0.cxx:2
 AliAODv0.cxx:3
 AliAODv0.cxx:4
 AliAODv0.cxx:5
 AliAODv0.cxx:6
 AliAODv0.cxx:7
 AliAODv0.cxx:8
 AliAODv0.cxx:9
 AliAODv0.cxx:10
 AliAODv0.cxx:11
 AliAODv0.cxx:12
 AliAODv0.cxx:13
 AliAODv0.cxx:14
 AliAODv0.cxx:15
 AliAODv0.cxx:16
 AliAODv0.cxx:17
 AliAODv0.cxx:18
 AliAODv0.cxx:19
 AliAODv0.cxx:20
 AliAODv0.cxx:21
 AliAODv0.cxx:22
 AliAODv0.cxx:23
 AliAODv0.cxx:24
 AliAODv0.cxx:25
 AliAODv0.cxx:26
 AliAODv0.cxx:27
 AliAODv0.cxx:28
 AliAODv0.cxx:29
 AliAODv0.cxx:30
 AliAODv0.cxx:31
 AliAODv0.cxx:32
 AliAODv0.cxx:33
 AliAODv0.cxx:34
 AliAODv0.cxx:35
 AliAODv0.cxx:36
 AliAODv0.cxx:37
 AliAODv0.cxx:38
 AliAODv0.cxx:39
 AliAODv0.cxx:40
 AliAODv0.cxx:41
 AliAODv0.cxx:42
 AliAODv0.cxx:43
 AliAODv0.cxx:44
 AliAODv0.cxx:45
 AliAODv0.cxx:46
 AliAODv0.cxx:47
 AliAODv0.cxx:48
 AliAODv0.cxx:49
 AliAODv0.cxx:50
 AliAODv0.cxx:51
 AliAODv0.cxx:52
 AliAODv0.cxx:53
 AliAODv0.cxx:54
 AliAODv0.cxx:55
 AliAODv0.cxx:56
 AliAODv0.cxx:57
 AliAODv0.cxx:58
 AliAODv0.cxx:59
 AliAODv0.cxx:60
 AliAODv0.cxx:61
 AliAODv0.cxx:62
 AliAODv0.cxx:63
 AliAODv0.cxx:64
 AliAODv0.cxx:65
 AliAODv0.cxx:66
 AliAODv0.cxx:67
 AliAODv0.cxx:68
 AliAODv0.cxx:69
 AliAODv0.cxx:70
 AliAODv0.cxx:71
 AliAODv0.cxx:72
 AliAODv0.cxx:73
 AliAODv0.cxx:74
 AliAODv0.cxx:75
 AliAODv0.cxx:76
 AliAODv0.cxx:77
 AliAODv0.cxx:78
 AliAODv0.cxx:79
 AliAODv0.cxx:80
 AliAODv0.cxx:81
 AliAODv0.cxx:82
 AliAODv0.cxx:83
 AliAODv0.cxx:84
 AliAODv0.cxx:85
 AliAODv0.cxx:86
 AliAODv0.cxx:87
 AliAODv0.cxx:88
 AliAODv0.cxx:89
 AliAODv0.cxx:90
 AliAODv0.cxx:91
 AliAODv0.cxx:92
 AliAODv0.cxx:93
 AliAODv0.cxx:94
 AliAODv0.cxx:95
 AliAODv0.cxx:96
 AliAODv0.cxx:97
 AliAODv0.cxx:98
 AliAODv0.cxx:99
 AliAODv0.cxx:100
 AliAODv0.cxx:101
 AliAODv0.cxx:102
 AliAODv0.cxx:103
 AliAODv0.cxx:104
 AliAODv0.cxx:105
 AliAODv0.cxx:106
 AliAODv0.cxx:107
 AliAODv0.cxx:108
 AliAODv0.cxx:109
 AliAODv0.cxx:110
 AliAODv0.cxx:111
 AliAODv0.cxx:112
 AliAODv0.cxx:113
 AliAODv0.cxx:114
 AliAODv0.cxx:115
 AliAODv0.cxx:116
 AliAODv0.cxx:117
 AliAODv0.cxx:118
 AliAODv0.cxx:119
 AliAODv0.cxx:120
 AliAODv0.cxx:121
 AliAODv0.cxx:122
 AliAODv0.cxx:123
 AliAODv0.cxx:124
 AliAODv0.cxx:125
 AliAODv0.cxx:126
 AliAODv0.cxx:127
 AliAODv0.cxx:128
 AliAODv0.cxx:129
 AliAODv0.cxx:130
 AliAODv0.cxx:131
 AliAODv0.cxx:132
 AliAODv0.cxx:133
 AliAODv0.cxx:134
 AliAODv0.cxx:135
 AliAODv0.cxx:136
 AliAODv0.cxx:137
 AliAODv0.cxx:138
 AliAODv0.cxx:139
 AliAODv0.cxx:140
 AliAODv0.cxx:141
 AliAODv0.cxx:142
 AliAODv0.cxx:143
 AliAODv0.cxx:144
 AliAODv0.cxx:145
 AliAODv0.cxx:146
 AliAODv0.cxx:147
 AliAODv0.cxx:148
 AliAODv0.cxx:149
 AliAODv0.cxx:150
 AliAODv0.cxx:151
 AliAODv0.cxx:152
 AliAODv0.cxx:153
 AliAODv0.cxx:154
 AliAODv0.cxx:155
 AliAODv0.cxx:156
 AliAODv0.cxx:157
 AliAODv0.cxx:158
 AliAODv0.cxx:159
 AliAODv0.cxx:160
 AliAODv0.cxx:161
 AliAODv0.cxx:162
 AliAODv0.cxx:163
 AliAODv0.cxx:164
 AliAODv0.cxx:165
 AliAODv0.cxx:166
 AliAODv0.cxx:167