ROOT logo
#ifndef ALIAODV0_H
#define ALIAODV0_H
/* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

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

#include "AliAODRecoDecay.h"

class AliAODv0 : public AliAODRecoDecay {

public:

  AliAODv0();
  AliAODv0(AliAODVertex *rAODVertex, Double_t rDcaV0Daughters, Double_t rDcaV0ToPrimVertex,
	   const Double_t *rMomPos, const Double_t *rMomNeg, Double_t *rDcaDaughterToPrimVertex);
  virtual ~AliAODv0();

  AliAODv0(const AliAODv0& rAliAODv0);
  AliAODv0& operator=(const AliAODv0& rAliAODv0);

  void     Fill(AliAODVertex *rAODVertex, Double_t rDcaV0Daughters, Double_t rDcaV0ToPrimVertex,
		const Double_t *rMomPos, const Double_t *rMomNeg, const Double_t *rDcaDaughterToPrimVertex);
  void     ResetV0();
  void     Print(Option_t* option = "") const;

  void     SetOnFlyStatus(Bool_t status){fOnFlyStatus=status;}
  Bool_t   GetOnFlyStatus() const {return fOnFlyStatus;}

  Double_t DecayVertexV0X() const;
  Double_t DecayVertexV0Y() const;
  Double_t DecayVertexV0Z() const;

  Double_t DecayLengthV0(const Double_t *) const;
                     
  Double_t DcaV0Daughters()     const;
  Double_t DcaV0ToPrimVertex()  const;
  Double_t DcaPosToPrimVertex() const; 
  Double_t DcaNegToPrimVertex() const; 
  Double_t RadiusV0()           const;
  Double_t OpenAngleV0()        const;

  Double_t MomPosX() const;
  Double_t MomPosY() const;
  Double_t MomPosZ() const;
  Double_t MomNegX() const;
  Double_t MomNegY() const;
  Double_t MomNegZ() const;

  Double_t Chi2V0()  const;

  Double_t MomV0X()  const;
  Double_t MomV0Y()  const;
  Double_t MomV0Z()  const;

  Double_t Ptot2Pos() const;
  Double_t Ptot2Neg() const;
  Double_t Ptot2V0()  const;
  Double_t Pt2V0()    const;
  Double_t MomPosAlongV0() const;
  Double_t MomNegAlongV0() const;
  Double_t AlphaV0() const;
  Double_t PtArmV0() const;
  Double_t EPosProton() const;
  Double_t ENegProton() const;
  Double_t EPosPion() const;
  Double_t ENegPion() const;
  Double_t ELambda() const;
  Double_t EK0Short() const;
  Double_t MassLambda() const;
  Double_t MassAntiLambda() const;
  Double_t MassK0Short() const;
  Double_t RapK0Short() const;
  Double_t RapLambda() const;
  Double_t PseudoRapV0()    const;
  Double_t PseudoRapPos()   const;
  Double_t PseudoRapNeg()   const;
  
  Short_t  GetPosID()       const;
  Short_t  GetNegID()       const;
  Int_t    GetLabel()       const {return -1;} // Dummy
  Int_t    PdgCode()        const {return  0;} // Dummy
  
  virtual Bool_t   GetPxPyPz(Double_t */*p*/) const { return kFALSE; }
  virtual void     SetID(Short_t /*id*/) {;}

  
protected:
  Double32_t fDcaV0ToPrimVertex;    // dca of V0 to primary vertex 
  Bool_t     fOnFlyStatus;          // if kTRUE, then this V0 is recontructed
                                    // "on fly" during the tracking
  ClassDef(AliAODv0,2)
};

inline Double_t AliAODv0::DecayVertexV0X() const {return this->GetSecVtxX();}
inline Double_t AliAODv0::DecayVertexV0Y() const {return this->GetSecVtxY();}
inline Double_t AliAODv0::DecayVertexV0Z() const {return this->GetSecVtxZ();}

inline Double_t AliAODv0::DecayLengthV0(const Double_t *tParentVertexPosition) const {
  return ::sqrt(::pow(DecayVertexV0X() - tParentVertexPosition[0],2) +
		::pow(DecayVertexV0Y() - tParentVertexPosition[1],2) +
		::pow(DecayVertexV0Z() - tParentVertexPosition[2],2));
}

inline Double_t AliAODv0::DcaV0Daughters() const {return fDCA[0];}
inline Double_t AliAODv0::DcaV0ToPrimVertex() const {return fDcaV0ToPrimVertex;}
inline Double_t AliAODv0::DcaPosToPrimVertex() const {return fd0[0];}
inline Double_t AliAODv0::DcaNegToPrimVertex() const {return fd0[1];}

inline Double_t AliAODv0::RadiusV0() const {
  return RadiusSecVtx();
}

inline Double_t AliAODv0::OpenAngleV0() const {
  Double_t lScalPtot1Ptot2 = PxProng(0)*PxProng(1)+PyProng(0)*PyProng(1)+PzProng(0)*PzProng(1);
  Double_t lPtot1xPtot2 = Ptot2Pos()*Ptot2Neg();
  return ::acos(lScalPtot1Ptot2/::sqrt(lPtot1xPtot2) );
}

inline Double_t AliAODv0::MomPosX() const {return fPx[0];}
inline Double_t AliAODv0::MomPosY() const {return fPy[0];}
inline Double_t AliAODv0::MomPosZ() const {return fPz[0];}
inline Double_t AliAODv0::MomNegX() const {return fPx[1];}
inline Double_t AliAODv0::MomNegY() const {return fPy[1];}
inline Double_t AliAODv0::MomNegZ() const {return fPz[1];}

inline Double_t AliAODv0::Chi2V0() const {return GetSecondaryVtx()->GetChi2perNDF();}

// Compare eventually AliAODv0::MomV0X() and AliAODRecoDecay::Px()
inline Double_t AliAODv0::MomV0X() const {return MomPosX()+MomNegX();}
inline Double_t AliAODv0::MomV0Y() const {return MomPosY()+MomNegY();}
inline Double_t AliAODv0::MomV0Z() const {return MomPosZ()+MomNegZ();}

inline Double_t AliAODv0::Ptot2Pos() const {
  return (::pow(MomPosX(),2) + ::pow(MomPosY(),2) + ::pow(MomPosZ(),2) );
}
inline Double_t AliAODv0::Ptot2Neg() const {
  return (::pow(MomNegX(),2) + ::pow(MomNegY(),2) + ::pow(MomNegZ(),2) );
}
inline Double_t AliAODv0::Ptot2V0() const {return ( Pt2V0() + ::pow(MomV0Z(),2) );}
inline Double_t AliAODv0::Pt2V0() const {
  return (::pow(MomV0X(),2) + ::pow(MomV0Y(),2) );
}

inline Double_t AliAODv0::MomPosAlongV0() const {
  Double_t lPtot2V0 = Ptot2V0();
  if (lPtot2V0)
    return (MomPosX()*MomV0X() +
	    MomPosY()*MomV0Y() +
	    MomPosZ()*MomV0Z()) / ::sqrt(lPtot2V0);
  return 0.;
}

inline Double_t AliAODv0::MomNegAlongV0() const {
  Double_t lPtot2V0 = Ptot2V0();
  if (lPtot2V0)
    return (MomNegX()*MomV0X() +
	    MomNegY()*MomV0Y() +
	    MomNegZ()*MomV0Z()) / ::sqrt(lPtot2V0);
  return 0.;
}

inline Double_t AliAODv0::AlphaV0() const {
  return Alpha();
}
inline Double_t AliAODv0::PtArmV0() const {
  return QtProng(0);
}

inline Double_t AliAODv0::EPosProton() const {
  return EProng(0,2212);
}

inline Double_t AliAODv0::ENegProton() const {
  return EProng(1,2212);
}

inline Double_t AliAODv0::EPosPion() const {
  return EProng(0,211);
}

inline Double_t AliAODv0::ENegPion() const {
  return EProng(1,211);
}

inline Double_t AliAODv0::ELambda() const {
  return E(3122);
}

inline Double_t AliAODv0::EK0Short() const {
  return E(310);
}

inline Double_t AliAODv0::MassLambda() const {
  return InvMass2Prongs(0,1,2212,211);
}

inline Double_t AliAODv0::MassAntiLambda() const {
  return InvMass2Prongs(0,1,211,2212);
}

inline Double_t AliAODv0::MassK0Short() const {
  return InvMass2Prongs(0,1,211,211);
}

inline Double_t AliAODv0::RapK0Short() const {
  return Y(310);
}

inline Double_t AliAODv0::RapLambda() const {
  return Y(3122);
}

inline Double_t AliAODv0::PseudoRapV0() const {
  return Eta();
}

inline Double_t AliAODv0::PseudoRapPos()   const {
  return EtaProng(0);
}

inline Double_t AliAODv0::PseudoRapNeg()   const {
  return EtaProng(1);
}
//----------------------------------------------------------------------------

#endif
 AliAODv0.h:1
 AliAODv0.h:2
 AliAODv0.h:3
 AliAODv0.h:4
 AliAODv0.h:5
 AliAODv0.h:6
 AliAODv0.h:7
 AliAODv0.h:8
 AliAODv0.h:9
 AliAODv0.h:10
 AliAODv0.h:11
 AliAODv0.h:12
 AliAODv0.h:13
 AliAODv0.h:14
 AliAODv0.h:15
 AliAODv0.h:16
 AliAODv0.h:17
 AliAODv0.h:18
 AliAODv0.h:19
 AliAODv0.h:20
 AliAODv0.h:21
 AliAODv0.h:22
 AliAODv0.h:23
 AliAODv0.h:24
 AliAODv0.h:25
 AliAODv0.h:26
 AliAODv0.h:27
 AliAODv0.h:28
 AliAODv0.h:29
 AliAODv0.h:30
 AliAODv0.h:31
 AliAODv0.h:32
 AliAODv0.h:33
 AliAODv0.h:34
 AliAODv0.h:35
 AliAODv0.h:36
 AliAODv0.h:37
 AliAODv0.h:38
 AliAODv0.h:39
 AliAODv0.h:40
 AliAODv0.h:41
 AliAODv0.h:42
 AliAODv0.h:43
 AliAODv0.h:44
 AliAODv0.h:45
 AliAODv0.h:46
 AliAODv0.h:47
 AliAODv0.h:48
 AliAODv0.h:49
 AliAODv0.h:50
 AliAODv0.h:51
 AliAODv0.h:52
 AliAODv0.h:53
 AliAODv0.h:54
 AliAODv0.h:55
 AliAODv0.h:56
 AliAODv0.h:57
 AliAODv0.h:58
 AliAODv0.h:59
 AliAODv0.h:60
 AliAODv0.h:61
 AliAODv0.h:62
 AliAODv0.h:63
 AliAODv0.h:64
 AliAODv0.h:65
 AliAODv0.h:66
 AliAODv0.h:67
 AliAODv0.h:68
 AliAODv0.h:69
 AliAODv0.h:70
 AliAODv0.h:71
 AliAODv0.h:72
 AliAODv0.h:73
 AliAODv0.h:74
 AliAODv0.h:75
 AliAODv0.h:76
 AliAODv0.h:77
 AliAODv0.h:78
 AliAODv0.h:79
 AliAODv0.h:80
 AliAODv0.h:81
 AliAODv0.h:82
 AliAODv0.h:83
 AliAODv0.h:84
 AliAODv0.h:85
 AliAODv0.h:86
 AliAODv0.h:87
 AliAODv0.h:88
 AliAODv0.h:89
 AliAODv0.h:90
 AliAODv0.h:91
 AliAODv0.h:92
 AliAODv0.h:93
 AliAODv0.h:94
 AliAODv0.h:95
 AliAODv0.h:96
 AliAODv0.h:97
 AliAODv0.h:98
 AliAODv0.h:99
 AliAODv0.h:100
 AliAODv0.h:101
 AliAODv0.h:102
 AliAODv0.h:103
 AliAODv0.h:104
 AliAODv0.h:105
 AliAODv0.h:106
 AliAODv0.h:107
 AliAODv0.h:108
 AliAODv0.h:109
 AliAODv0.h:110
 AliAODv0.h:111
 AliAODv0.h:112
 AliAODv0.h:113
 AliAODv0.h:114
 AliAODv0.h:115
 AliAODv0.h:116
 AliAODv0.h:117
 AliAODv0.h:118
 AliAODv0.h:119
 AliAODv0.h:120
 AliAODv0.h:121
 AliAODv0.h:122
 AliAODv0.h:123
 AliAODv0.h:124
 AliAODv0.h:125
 AliAODv0.h:126
 AliAODv0.h:127
 AliAODv0.h:128
 AliAODv0.h:129
 AliAODv0.h:130
 AliAODv0.h:131
 AliAODv0.h:132
 AliAODv0.h:133
 AliAODv0.h:134
 AliAODv0.h:135
 AliAODv0.h:136
 AliAODv0.h:137
 AliAODv0.h:138
 AliAODv0.h:139
 AliAODv0.h:140
 AliAODv0.h:141
 AliAODv0.h:142
 AliAODv0.h:143
 AliAODv0.h:144
 AliAODv0.h:145
 AliAODv0.h:146
 AliAODv0.h:147
 AliAODv0.h:148
 AliAODv0.h:149
 AliAODv0.h:150
 AliAODv0.h:151
 AliAODv0.h:152
 AliAODv0.h:153
 AliAODv0.h:154
 AliAODv0.h:155
 AliAODv0.h:156
 AliAODv0.h:157
 AliAODv0.h:158
 AliAODv0.h:159
 AliAODv0.h:160
 AliAODv0.h:161
 AliAODv0.h:162
 AliAODv0.h:163
 AliAODv0.h:164
 AliAODv0.h:165
 AliAODv0.h:166
 AliAODv0.h:167
 AliAODv0.h:168
 AliAODv0.h:169
 AliAODv0.h:170
 AliAODv0.h:171
 AliAODv0.h:172
 AliAODv0.h:173
 AliAODv0.h:174
 AliAODv0.h:175
 AliAODv0.h:176
 AliAODv0.h:177
 AliAODv0.h:178
 AliAODv0.h:179
 AliAODv0.h:180
 AliAODv0.h:181
 AliAODv0.h:182
 AliAODv0.h:183
 AliAODv0.h:184
 AliAODv0.h:185
 AliAODv0.h:186
 AliAODv0.h:187
 AliAODv0.h:188
 AliAODv0.h:189
 AliAODv0.h:190
 AliAODv0.h:191
 AliAODv0.h:192
 AliAODv0.h:193
 AliAODv0.h:194
 AliAODv0.h:195
 AliAODv0.h:196
 AliAODv0.h:197
 AliAODv0.h:198
 AliAODv0.h:199
 AliAODv0.h:200
 AliAODv0.h:201
 AliAODv0.h:202
 AliAODv0.h:203
 AliAODv0.h:204
 AliAODv0.h:205
 AliAODv0.h:206
 AliAODv0.h:207
 AliAODv0.h:208
 AliAODv0.h:209
 AliAODv0.h:210
 AliAODv0.h:211
 AliAODv0.h:212
 AliAODv0.h:213
 AliAODv0.h:214
 AliAODv0.h:215
 AliAODv0.h:216
 AliAODv0.h:217
 AliAODv0.h:218
 AliAODv0.h:219
 AliAODv0.h:220
 AliAODv0.h:221
 AliAODv0.h:222
 AliAODv0.h:223
 AliAODv0.h:224
 AliAODv0.h:225
 AliAODv0.h:226
 AliAODv0.h:227
 AliAODv0.h:228
 AliAODv0.h:229
 AliAODv0.h:230
 AliAODv0.h:231