AliVertex::AliVertex() :
TNamed(),
fSigma(0),
- fNContributors(0)
+ fNContributors(0),
+ fNIndices(0)
{
//
// Default Constructor, set everything to 0
//
for(Int_t k=0;k<3;k++) fPosition[k] = 0;
+ fIndices = 0;
}
//--------------------------------------------------------------------------
Int_t nContributors):
TNamed(),
fSigma(dispersion),
- fNContributors(nContributors)
+ fNContributors(nContributors),
+ fNIndices(0)
{
//
// Standard Constructor
//
for(Int_t k=0;k<3;k++) fPosition[k] = position[k];
+ fIndices = 0;
SetName("BaseVertex");
}
AliVertex::AliVertex(const AliVertex &source):
TNamed(source),
fSigma(source.GetDispersion()),
- fNContributors(source.GetNContributors())
+ fNContributors(source.GetNContributors()),
+ fNIndices(source.GetNIndices())
{
//
// 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));
+ }
}
//--------------------------------------------------------------------------
for(Int_t i=0;i<3;i++)fPosition[i] = source.fPosition[i];
fSigma = source.GetDispersion();
fNContributors = source.GetNContributors();
+ fNIndices = source.GetNIndices();
+ if(source.fNIndices>0) {
+ fIndices = new UShort_t[fNIndices];
+ memcpy(fIndices,source.fIndices,fNIndices*sizeof(UShort_t));
+ }
return *this;
}
//
// Default Destructor
//
-
+ delete [] fIndices;
}
//--------------------------------------------------------------------------
void AliVertex::GetXYZ(Double_t position[3]) const {
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;
+ 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
virtual Double_t GetZv() const { return fPosition[2]; }
virtual Double_t GetDispersion() const { return fSigma; }
virtual Int_t GetNContributors() const { return fNContributors; }
+ virtual Int_t GetNIndices() const { return fNIndices; }
virtual void Print(Option_t* option = "") const;
+ virtual void SetIndices(Int_t nindices,UShort_t *indices);
+ virtual UShort_t *GetIndices() const { return fIndices; }
+ virtual Bool_t UsesTrack(Int_t index) const;
+ virtual void PrintIndices() const { if(fNIndices>0)
+ for(Int_t i=0;i<fNIndices;i++) printf("AliVertex uses track %d\n",fIndices[i]); return; }
protected:
- Double_t fPosition[3]; // vertex position
- Double_t fSigma; // track dispersion around found vertex
+ Double_t fPosition[3]; // vertex position
+ Double_t fSigma; // track dispersion around found vertex
Int_t fNContributors; // # of tracklets/tracks used for the estimate
+ Int_t fNIndices; // # of indices
+ UShort_t *fIndices; //[fNIndices] indices of tracks used for vertex
- ClassDef(AliVertex,1) // Class for Primary Vertex
+ ClassDef(AliVertex,2) // Class for Primary Vertex
};
#endif