]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliVertex.cxx
Correct streamer (Haavard)
[u/mrichter/AliRoot.git] / STEER / AliVertex.cxx
CommitLineData
8a553be2 1/**************************************************************************
2 * Copyright(c) 2006-2008, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
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 **************************************************************************/
15
16//-----------------------------------------------------------------
17// Implementation of the base Vertex class
18// This class contains the Secondary Vertex
19// of a set of tracks
20// And it is the base class for primary vertices
21// Origin: F.Prino, Torino, prino@to.infn.it
22//-----------------------------------------------------------------
23
24#include "AliVertex.h"
25
26
27ClassImp(AliVertex)
28
29//--------------------------------------------------------------------------
fe12e09c 30AliVertex::AliVertex() :
31 TNamed(),
32 fSigma(0),
c1b20d31 33 fNContributors(0),
34 fNIndices(0)
fe12e09c 35{
8a553be2 36//
37// Default Constructor, set everything to 0
38//
39 for(Int_t k=0;k<3;k++) fPosition[k] = 0;
c1b20d31 40 fIndices = 0;
8a553be2 41}
42
43//--------------------------------------------------------------------------
44AliVertex::AliVertex(Double_t position[3],Double_t dispersion,
fe12e09c 45 Int_t nContributors):
46 TNamed(),
47 fSigma(dispersion),
c1b20d31 48 fNContributors(nContributors),
49 fNIndices(0)
fe12e09c 50{
8a553be2 51 //
52 // Standard Constructor
53 //
54
55 for(Int_t k=0;k<3;k++) fPosition[k] = position[k];
c1b20d31 56 fIndices = 0;
8a553be2 57 SetName("BaseVertex");
58
59}
60
2d57349e 61//--------------------------------------------------------------------------
fe12e09c 62AliVertex::AliVertex(const AliVertex &source):
63 TNamed(source),
64 fSigma(source.GetDispersion()),
c1b20d31 65 fNContributors(source.GetNContributors()),
66 fNIndices(source.GetNIndices())
fe12e09c 67{
2d57349e 68 //
69 // Copy constructor
70 //
71 for(Int_t i=0;i<3;i++)fPosition[i] = source.fPosition[i];
c1b20d31 72 if(source.fNIndices>0) {
73 fIndices = new UShort_t[fNIndices];
74 memcpy(fIndices,source.fIndices,fNIndices*sizeof(UShort_t));
75 }
2d57349e 76}
77
78//--------------------------------------------------------------------------
79AliVertex &AliVertex::operator=(const AliVertex &source){
80 //
81 // assignment operator
82 //
83 if(&source == this) return *this;
84 this->SetName(source.GetName());
85 this->SetTitle(source.GetTitle());
86 for(Int_t i=0;i<3;i++)fPosition[i] = source.fPosition[i];
87 fSigma = source.GetDispersion();
88 fNContributors = source.GetNContributors();
c1b20d31 89 fNIndices = source.GetNIndices();
90 if(source.fNIndices>0) {
91 fIndices = new UShort_t[fNIndices];
92 memcpy(fIndices,source.fIndices,fNIndices*sizeof(UShort_t));
93 }
2d57349e 94 return *this;
95}
96
8a553be2 97
98//--------------------------------------------------------------------------
99AliVertex::~AliVertex() {
100//
101// Default Destructor
102//
c1b20d31 103 delete [] fIndices;
8a553be2 104}
105//--------------------------------------------------------------------------
106void AliVertex::GetXYZ(Double_t position[3]) const {
107//
108// Return position of the vertex in global frame
109//
110 position[0] = fPosition[0];
111 position[1] = fPosition[1];
112 position[2] = fPosition[2];
113
114 return;
115}
116//--------------------------------------------------------------------------
c1b20d31 117void AliVertex::SetIndices(Int_t nindices,UShort_t *indices) {
118//
119// Set indices of tracks used for vertex determination
120//
121 if(fNContributors<1) { printf("fNContributors<1"); return; }
122 fNIndices = nindices;
123 fIndices = new UShort_t[fNIndices];
124 for(Int_t i=0;i<fNIndices;i++) fIndices[i] = indices[i];
125 return;
126}
127//--------------------------------------------------------------------------
128Bool_t AliVertex::UsesTrack(Int_t index) const {
129//
130// checks if a track is used for the vertex
131//
132 if(fNIndices<1) { printf("fNIndices<1"); return kFALSE; }
133 for(Int_t i=0;i<fNIndices;i++) {
134 if((Int_t)fIndices[i]==index) return kTRUE;
135 }
136 return kFALSE;
137}
138//--------------------------------------------------------------------------
8a553be2 139void AliVertex::Print(Option_t* /*option*/) const {
140//
141// Print out information on all data members
142//
143 printf("Vertex position:\n");
144 printf(" x = %f\n",fPosition[0]);
145 printf(" y = %f\n",fPosition[1]);
146 printf(" z = %f\n",fPosition[2]);
147 printf(" Dispersion = %f\n",fSigma);
148 printf(" # tracks = %d\n",fNContributors);
149
150 return;
151}
152
153
154
155