ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, 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.                  *
 **************************************************************************/

/* $Id$ */

//-------------------------------------------------------------------------
//    Origin: Marian Ivanov marian.ivanov@cern.ch
//-------------------------------------------------------------------------

#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)
{
  //
  //Default constructor
  //
  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)
{
  //
  //Copy constructor
  //
  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)
{
  //
  // assignment operator
  //
  
  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 {
  
  // this overwrites the virtual TOBject::Copy()
  // to allow run time copying without casting
  // in AliESDEvent

  if(this==&obj)return;
  AliESDkink *robj = dynamic_cast<AliESDkink*>(&obj);
  if(!robj)return; // not an AliESDkink
  *robj = *this;

}


void AliESDkink::SetMother(const AliExternalTrackParam & pmother)  {
  //
  // set mother
  //
  fParamMother   = pmother;
}

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