ROOT logo
#ifndef ALIVERTEX_H
#define ALIVERTEX_H
/* Copyright(c) 1998-2003, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */


//-------------------------------------------------------
//                    Base Vertex Class
//   Used for secondary vertices and as a base class for primary vertices
//   Origin: F. Prino, Torino, prino@to.infn.it
//-------------------------------------------------------

#include <TString.h>
#include "AliVVertex.h"

class AliVertex : public AliVVertex {
 
 public:
 
  AliVertex();
  AliVertex(Double_t position[3],Double_t dispersion,
		Int_t nContributors);
  AliVertex(const AliVertex &source);
  AliVertex &operator=(const AliVertex &source);
  virtual ~AliVertex();

  virtual void   Clear(Option_t *option="");
  virtual void   SetXYZ(Double_t pos[3]) 
                   {for(Int_t j=0; j<3; j++) fPosition[j]=pos[j];}
  virtual void   SetXv(Double_t xVert) {fPosition[0]=xVert; }
  virtual void   SetYv(Double_t yVert) {fPosition[1]=yVert; }
  virtual void   SetZv(Double_t zVert) {fPosition[2]=zVert; }
  virtual void   SetDispersion(Double_t disp) { fSigma=disp; }
  virtual void   SetNContributors(Int_t nContr) {fNContributors=nContr; }

  virtual void     GetXYZ(Double_t position[3]) const;

  virtual Double_t GetX()  const { return fPosition[0]; }
  virtual Double_t GetY()  const { return fPosition[1]; }
  virtual Double_t GetZ()  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 Bool_t   GetStatus() const {
    TString title = GetTitle();
    if(fNContributors>0 || (title.Contains("cosmics") && !title.Contains("failed"))) return 1;
    if(title.Contains("smearMC")) return 1;
    return 0;
  }
  virtual Bool_t IsFromVertexer3D() const {
    TString title = GetTitle();  
    if(title.Contains("vertexer: 3D")) return kTRUE;
    else return kFALSE;
  }
  virtual Bool_t IsFromVertexerZ() const {
    TString title = GetTitle();  
    if(title.Contains("vertexer: Z")) return kTRUE;
    else return kFALSE;
  }

  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; }

  virtual void     GetCovarianceMatrix(Double_t covmatrix[6]) const;
  virtual void     SetCovarianceMatrix(const Double_t *) {}
  
  virtual Double_t GetChi2perNDF() const {return -999.;}
  virtual Double_t GetChi2() const {return -999.;}
  virtual void     SetChi2(Double_t ) {}
  virtual Int_t    GetNDF() const {return -999;}

 protected:

  Double32_t fPosition[3];    // vertex position
  Double32_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,4)  // Class for Primary Vertex
};

#endif
 AliVertex.h:1
 AliVertex.h:2
 AliVertex.h:3
 AliVertex.h:4
 AliVertex.h:5
 AliVertex.h:6
 AliVertex.h:7
 AliVertex.h:8
 AliVertex.h:9
 AliVertex.h:10
 AliVertex.h:11
 AliVertex.h:12
 AliVertex.h:13
 AliVertex.h:14
 AliVertex.h:15
 AliVertex.h:16
 AliVertex.h:17
 AliVertex.h:18
 AliVertex.h:19
 AliVertex.h:20
 AliVertex.h:21
 AliVertex.h:22
 AliVertex.h:23
 AliVertex.h:24
 AliVertex.h:25
 AliVertex.h:26
 AliVertex.h:27
 AliVertex.h:28
 AliVertex.h:29
 AliVertex.h:30
 AliVertex.h:31
 AliVertex.h:32
 AliVertex.h:33
 AliVertex.h:34
 AliVertex.h:35
 AliVertex.h:36
 AliVertex.h:37
 AliVertex.h:38
 AliVertex.h:39
 AliVertex.h:40
 AliVertex.h:41
 AliVertex.h:42
 AliVertex.h:43
 AliVertex.h:44
 AliVertex.h:45
 AliVertex.h:46
 AliVertex.h:47
 AliVertex.h:48
 AliVertex.h:49
 AliVertex.h:50
 AliVertex.h:51
 AliVertex.h:52
 AliVertex.h:53
 AliVertex.h:54
 AliVertex.h:55
 AliVertex.h:56
 AliVertex.h:57
 AliVertex.h:58
 AliVertex.h:59
 AliVertex.h:60
 AliVertex.h:61
 AliVertex.h:62
 AliVertex.h:63
 AliVertex.h:64
 AliVertex.h:65
 AliVertex.h:66
 AliVertex.h:67
 AliVertex.h:68
 AliVertex.h:69
 AliVertex.h:70
 AliVertex.h:71
 AliVertex.h:72
 AliVertex.h:73
 AliVertex.h:74
 AliVertex.h:75
 AliVertex.h:76
 AliVertex.h:77
 AliVertex.h:78
 AliVertex.h:79
 AliVertex.h:80
 AliVertex.h:81
 AliVertex.h:82
 AliVertex.h:83
 AliVertex.h:84
 AliVertex.h:85
 AliVertex.h:86
 AliVertex.h:87
 AliVertex.h:88