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


//-------------------------------------------------------------------------
//     base class for ESD and AOD tracks
//     Author: A. Dainese
//-------------------------------------------------------------------------

#include <TGeoGlobalMagField.h>

#include "AliMagF.h"
#include "AliVTrack.h"

ClassImp(AliVTrack)

AliVTrack::AliVTrack(const AliVTrack& vTrack) :
  AliVParticle(vTrack) { } // Copy constructor

AliVTrack& AliVTrack::operator=(const AliVTrack& vTrack)
{ if (this!=&vTrack) { 
    AliVParticle::operator=(vTrack); 
  }
  
  return *this; 
}

Bool_t AliVTrack::GetXYZ(Double_t* /*p*/) const {return kFALSE;};
Bool_t AliVTrack::GetXYZAt(Double_t /*x*/, Double_t /*b*/, Double_t* /*r*/ ) const {return kFALSE;}

Double_t AliVTrack::GetBz() const 
{
  // returns Bz component of the magnetic field (kG)
  AliMagF* fld = (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
  if (!fld) return 0.5*kAlmost0Field;
  double bz;
  if (fld->IsUniform()) bz = fld->SolenoidField();
  else {
    Double_t r[3]; 
    GetXYZ(r); 
    bz = fld->GetBz(r);
  }
  return TMath::Sign(0.5*kAlmost0Field,bz) + bz;
}

void AliVTrack::GetBxByBz(Double_t b[3]) const 
{
  // returns the Bx, By and Bz components of the magnetic field (kG)
  AliMagF* fld = (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
  if (!fld) {
     b[0] = b[1] = 0.;
     b[2] = 0.5*kAlmost0Field;
     return;
  }

  if (fld->IsUniform()) {
     b[0] = b[1] = 0.;
     b[2] = fld->SolenoidField();
  }  else {
     Double_t r[3]; GetXYZ(r);
     fld->Field(r,b);
  }
  b[2] = (TMath::Sign(0.5*kAlmost0Field,b[2]) + b[2]);
  return;
}

//________________________________________________________
void AliVTrack::GetIntegratedTimes(Double_t */*times*/, Int_t /*nspec*/) const { return; }
 AliVTrack.cxx:1
 AliVTrack.cxx:2
 AliVTrack.cxx:3
 AliVTrack.cxx:4
 AliVTrack.cxx:5
 AliVTrack.cxx:6
 AliVTrack.cxx:7
 AliVTrack.cxx:8
 AliVTrack.cxx:9
 AliVTrack.cxx:10
 AliVTrack.cxx:11
 AliVTrack.cxx:12
 AliVTrack.cxx:13
 AliVTrack.cxx:14
 AliVTrack.cxx:15
 AliVTrack.cxx:16
 AliVTrack.cxx:17
 AliVTrack.cxx:18
 AliVTrack.cxx:19
 AliVTrack.cxx:20
 AliVTrack.cxx:21
 AliVTrack.cxx:22
 AliVTrack.cxx:23
 AliVTrack.cxx:24
 AliVTrack.cxx:25
 AliVTrack.cxx:26
 AliVTrack.cxx:27
 AliVTrack.cxx:28
 AliVTrack.cxx:29
 AliVTrack.cxx:30
 AliVTrack.cxx:31
 AliVTrack.cxx:32
 AliVTrack.cxx:33
 AliVTrack.cxx:34
 AliVTrack.cxx:35
 AliVTrack.cxx:36
 AliVTrack.cxx:37
 AliVTrack.cxx:38
 AliVTrack.cxx:39
 AliVTrack.cxx:40
 AliVTrack.cxx:41
 AliVTrack.cxx:42
 AliVTrack.cxx:43
 AliVTrack.cxx:44
 AliVTrack.cxx:45
 AliVTrack.cxx:46
 AliVTrack.cxx:47
 AliVTrack.cxx:48
 AliVTrack.cxx:49
 AliVTrack.cxx:50
 AliVTrack.cxx:51
 AliVTrack.cxx:52
 AliVTrack.cxx:53
 AliVTrack.cxx:54
 AliVTrack.cxx:55
 AliVTrack.cxx:56
 AliVTrack.cxx:57
 AliVTrack.cxx:58
 AliVTrack.cxx:59
 AliVTrack.cxx:60
 AliVTrack.cxx:61
 AliVTrack.cxx:62
 AliVTrack.cxx:63
 AliVTrack.cxx:64
 AliVTrack.cxx:65
 AliVTrack.cxx:66
 AliVTrack.cxx:67
 AliVTrack.cxx:68
 AliVTrack.cxx:69
 AliVTrack.cxx:70
 AliVTrack.cxx:71
 AliVTrack.cxx:72
 AliVTrack.cxx:73
 AliVTrack.cxx:74
 AliVTrack.cxx:75
 AliVTrack.cxx:76
 AliVTrack.cxx:77
 AliVTrack.cxx:78
 AliVTrack.cxx:79
 AliVTrack.cxx:80