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

//-----------------------------------------------------------------
//           Implementation of the base Vertex class
//           This class contains the Secondary Vertex
//           of a set of tracks
//           And it is the base class for primary vertices
// Origin: F.Prino, Torino, prino@to.infn.it
//-----------------------------------------------------------------

#include "AliVertex.h"


ClassImp(AliVertex)

//--------------------------------------------------------------------------
AliVertex::AliVertex() :
  AliVVertex(),
  fSigma(0),
  fNContributors(0),
  fNIndices(0),
  fIndices(0)
{
//
// Default Constructor, set everything to 0
//
  for(Int_t k=0;k<3;k++) fPosition[k]   = 0;
}

//--------------------------------------------------------------------------
AliVertex::AliVertex(Double_t position[3],Double_t dispersion,
		     Int_t nContributors):
  AliVVertex(),
  fSigma(dispersion),
  fNContributors(nContributors),
  fNIndices(0),
  fIndices(0)
{
  //
  // Standard Constructor
  //

  for(Int_t k=0;k<3;k++) fPosition[k]   = position[k];
  SetName("BaseVertex");

}

//--------------------------------------------------------------------------
AliVertex::AliVertex(const AliVertex &source):
  AliVVertex(source),
  fSigma(source.GetDispersion()),
  fNContributors(source.GetNContributors()),
  fNIndices(source.GetNIndices()),
  fIndices(0x0)
{
  //
  // Copy constructor
  //
  for(Int_t i=0;i<3;i++)fPosition[i] = source.fPosition[i];
  if(source.fNIndices>0) {
    fIndices = new UShort_t[fNIndices];
    memcpy(fIndices,source.fIndices,fNIndices*sizeof(UShort_t));
  }
}

//--------------------------------------------------------------------------
AliVertex &AliVertex::operator=(const AliVertex &source){
  //
  // assignment operator
  //
  if(&source != this){
    AliVVertex::operator=(source);
    for(Int_t i=0;i<3;i++)fPosition[i] = source.fPosition[i];
    fSigma = source.GetDispersion();
    fNContributors = source.GetNContributors();
    fNIndices = source.GetNIndices();
    if(fIndices)delete [] fIndices;
    fIndices = 0;
    if(fNIndices>0) {
      fIndices = new UShort_t[fNIndices];
      memcpy(fIndices,source.fIndices,fNIndices*sizeof(UShort_t));
    }
  }
  return *this;
}


//--------------------------------------------------------------------------
AliVertex::~AliVertex() {
//  
// Default Destructor
//
  delete [] fIndices;
  fIndices = 0;
}

void AliVertex::Clear(Option_t* option) 
{
    // Delete allocated memory
    delete [] fIndices;
    fIndices = 0;
    AliVVertex::Clear(option);
}

//--------------------------------------------------------------------------
void AliVertex::GetXYZ(Double_t position[3]) const {
//
// Return position of the vertex in global frame
//
  position[0] = fPosition[0];
  position[1] = fPosition[1];
  position[2] = fPosition[2];

  return;
}
//--------------------------------------------------------------------------
void AliVertex::GetCovarianceMatrix(Double_t covmatrix[6]) const {
//
// Fake method (is implmented in AliESDVertex)
//
  for(Int_t i=0;i<6;i++) covmatrix[i] = -999.;

  return;
}
//--------------------------------------------------------------------------
void AliVertex::SetIndices(Int_t nindices,UShort_t *indices) {
//
// Set indices of tracks used for vertex determination 
//
  if(fNContributors<1)  { printf("fNContributors<1"); return; }
  fNIndices = nindices;
  delete [] fIndices;
  fIndices = new UShort_t[fNIndices];
  for(Int_t i=0;i<fNIndices;i++) fIndices[i] = indices[i]; 
  return;
}
//--------------------------------------------------------------------------
Bool_t AliVertex::UsesTrack(Int_t index) const {
//
// checks if a track is used for the vertex 
//
  if(fNIndices<1)  {/* printf("fNIndices<1"); */return kFALSE; }
  for(Int_t i=0;i<fNIndices;i++) {
    if((Int_t)fIndices[i]==index) return kTRUE;
  }
  return kFALSE;
}
//--------------------------------------------------------------------------
void AliVertex::Print(Option_t* /*option*/) const {
//
// Print out information on all data members
//
  printf("Vertex position:\n");
  printf("   x = %f\n",fPosition[0]);
  printf("   y = %f\n",fPosition[1]);
  printf("   z = %f\n",fPosition[2]);
  printf(" Dispersion = %f\n",fSigma);
  printf(" # tracks = %d\n",fNContributors);

  return;
}




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