]>
Commit | Line | Data |
---|---|---|
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 | ||
27 | ClassImp(AliVertex) | |
28 | ||
29 | //-------------------------------------------------------------------------- | |
fe12e09c | 30 | AliVertex::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 | //-------------------------------------------------------------------------- | |
44 | AliVertex::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 | 62 | AliVertex::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 | //-------------------------------------------------------------------------- | |
79 | AliVertex &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 | //-------------------------------------------------------------------------- | |
99 | AliVertex::~AliVertex() { | |
100 | // | |
101 | // Default Destructor | |
102 | // | |
c1b20d31 | 103 | delete [] fIndices; |
8a553be2 | 104 | } |
105 | //-------------------------------------------------------------------------- | |
106 | void 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 | 117 | void 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 | //-------------------------------------------------------------------------- | |
128 | Bool_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 | 139 | void 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 |