1 /**************************************************************************
2 * Copyright(c) 2006-2008, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 //-----------------------------------------------------------------
17 // Implementation of the base Vertex class
18 // This class contains the Secondary Vertex
20 // And it is the base class for primary vertices
21 // Origin: F.Prino, Torino, prino@to.infn.it
22 //-----------------------------------------------------------------
24 #include "AliVertex.h"
29 //--------------------------------------------------------------------------
30 AliVertex::AliVertex() :
38 // Default Constructor, set everything to 0
40 for(Int_t k=0;k<3;k++) fPosition[k] = 0;
43 //--------------------------------------------------------------------------
44 AliVertex::AliVertex(Double_t position[3],Double_t dispersion,
48 fNContributors(nContributors),
53 // Standard Constructor
56 for(Int_t k=0;k<3;k++) fPosition[k] = position[k];
57 SetName("BaseVertex");
61 //--------------------------------------------------------------------------
62 AliVertex::AliVertex(const AliVertex &source):
64 fSigma(source.GetDispersion()),
65 fNContributors(source.GetNContributors()),
66 fNIndices(source.GetNIndices()),
72 for(Int_t i=0;i<3;i++)fPosition[i] = source.fPosition[i];
73 if(source.fNIndices>0) {
74 fIndices = new UShort_t[fNIndices];
75 memcpy(fIndices,source.fIndices,fNIndices*sizeof(UShort_t));
79 //--------------------------------------------------------------------------
80 AliVertex &AliVertex::operator=(const AliVertex &source){
82 // assignment operator
85 AliVVertex::operator=(source);
86 for(Int_t i=0;i<3;i++)fPosition[i] = source.fPosition[i];
87 fSigma = source.GetDispersion();
88 fNContributors = source.GetNContributors();
89 fNIndices = source.GetNIndices();
90 if(fIndices)delete [] fIndices;
93 fIndices = new UShort_t[fNIndices];
94 memcpy(fIndices,source.fIndices,fNIndices*sizeof(UShort_t));
101 //--------------------------------------------------------------------------
102 AliVertex::~AliVertex() {
104 // Default Destructor
110 void AliVertex::Clear(Option_t* option)
112 // Delete allocated memory
115 AliVVertex::Clear(option);
118 //--------------------------------------------------------------------------
119 void AliVertex::GetXYZ(Double_t position[3]) const {
121 // Return position of the vertex in global frame
123 position[0] = fPosition[0];
124 position[1] = fPosition[1];
125 position[2] = fPosition[2];
129 //--------------------------------------------------------------------------
130 void AliVertex::GetCovarianceMatrix(Double_t covmatrix[6]) const {
132 // Fake method (is implmented in AliESDVertex)
134 for(Int_t i=0;i<6;i++) covmatrix[i] = -999.;
138 //--------------------------------------------------------------------------
139 void AliVertex::SetIndices(Int_t nindices,UShort_t *indices) {
141 // Set indices of tracks used for vertex determination
143 if(fNContributors<1) { printf("fNContributors<1"); return; }
144 fNIndices = nindices;
146 fIndices = new UShort_t[fNIndices];
147 for(Int_t i=0;i<fNIndices;i++) fIndices[i] = indices[i];
150 //--------------------------------------------------------------------------
151 Bool_t AliVertex::UsesTrack(Int_t index) const {
153 // checks if a track is used for the vertex
155 if(fNIndices<1) {/* printf("fNIndices<1"); */return kFALSE; }
156 for(Int_t i=0;i<fNIndices;i++) {
157 if((Int_t)fIndices[i]==index) return kTRUE;
161 //--------------------------------------------------------------------------
162 void AliVertex::Print(Option_t* /*option*/) const {
164 // Print out information on all data members
166 printf("Vertex position:\n");
167 printf(" x = %f\n",fPosition[0]);
168 printf(" y = %f\n",fPosition[1]);
169 printf(" z = %f\n",fPosition[2]);
170 printf(" Dispersion = %f\n",fSigma);
171 printf(" # tracks = %d\n",fNContributors);