#include <Riostream.h>
#include <TMath.h>
#include <TPDGCode.h>
#include "AliESDkink.h"
ClassImp(AliESDkink)
AliESDkink::AliESDkink() :
TObject(),
fParamDaughter(),
fParamMother(),
fDist1(-1),
fDist2(-1),
fRr(0),
fShapeFactor(0),
fID(0),
fRow0(0)
{
for (Int_t i=0;i<12;i++) fStatus[i]=0;
for (Int_t i=0;i<2;i++)
for (Int_t j=0;j<2;j++){
fTPCdensity[i][j]=0;
}
fTPCncls[0]=fTPCncls[1]=0;
for (Int_t i=0; i<3; i++) {
fPdr[i] = 0;
fXr[i] = 0;
fPm[i] = 0;
fAngle[i] = 0;
}
fLab[0]=fLab[1]=0;
fIndex[0]=fIndex[1]=-1;
fMultiple[0]=fMultiple[1]=0;
}
AliESDkink::AliESDkink(const AliESDkink &source):
TObject(source),
fParamDaughter(source.fParamDaughter),
fParamMother(source.fParamMother),
fDist1(source.fDist1),
fDist2(source.fDist1),
fRr(source.fRr),
fShapeFactor(source.fShapeFactor),
fID(source.fID),
fRow0(source.fRow0)
{
for (Int_t i=0;i<12;i++) fStatus[i]=source.fStatus[i];
for (Int_t i=0;i<2;i++){
fTPCncls[i] = source.fTPCncls[i];
fLab[i] = source.fLab[i];
fIndex[i] = source.fIndex[i];
fMultiple[i]= source.fMultiple[i];
for (Int_t j=0;j<2;j++){
fTPCdensity[i][j] = source.fTPCdensity[i][j];
}
}
for (Int_t i=0; i<3; i++) {
fPdr[i] = source.fPdr[i];
fXr[i] = source.fXr[i];
fPm[i] = source.fPm[i];
fAngle[i] = source.fAngle[i];
}
}
AliESDkink& AliESDkink::operator=(const AliESDkink &source)
{
if (this!=&source) {
TObject::operator=(source);
fParamDaughter = source.fParamDaughter;
fParamMother = source.fParamMother;
fDist1 = source.fDist1;
fDist2 = source.fDist1;
fRr = source.fRr;
fShapeFactor = source.fShapeFactor;
fID = source.fID;
fRow0 = source.fRow0;
for (Int_t i=0;i<12;i++) fStatus[i]=source.fStatus[i];
for (Int_t i=0;i<2;i++){
fTPCncls[i] = source.fTPCncls[i];
fLab[i] = source.fLab[i];
fIndex[i] = source.fIndex[i];
fMultiple[i]= source.fMultiple[i];
for (Int_t j=0;j<2;j++){
fTPCdensity[i][j] = source.fTPCdensity[i][j];
}
}
for (Int_t i=0; i<3; i++) {
fPdr[i] = source.fPdr[i];
fXr[i] = source.fXr[i];
fPm[i] = source.fPm[i];
fAngle[i] = source.fAngle[i];
}
}
return *this;
}
void AliESDkink::Copy(TObject &obj) const {
if(this==&obj)return;
AliESDkink *robj = dynamic_cast<AliESDkink*>(&obj);
if(!robj)return;
*robj = *this;
}
void AliESDkink::SetMother(const AliExternalTrackParam & pmother) {
fParamMother = pmother;
}
void AliESDkink::SetDaughter(const AliExternalTrackParam & pdaughter){
fParamDaughter = pdaughter;
}
Double_t AliESDkink::GetTPCDensityFactor() const
{
return fTPCdensity[0][0]+fTPCdensity[1][1]-TMath::Max(fTPCdensity[0][1],Double_t(0.0))-TMath::Max(fTPCdensity[1][0],Double_t(0.0));
}
Float_t AliESDkink::GetQt() const
{
Float_t dmomentum = TMath::Sqrt(fPdr[0]*fPdr[0]+fPdr[1]*fPdr[1]+fPdr[2]*fPdr[2]);
return TMath::Sin(fAngle[2])*dmomentum;
}