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

/* $Id$ */

//-------------------------------------------------------
//                    Primary Vertex Class
//          for the Event Data Summary Class
//   Origin: A.Dainese, Padova, andrea.dainese@pd.infn.it
//-------------------------------------------------------

/*****************************************************************************
 *                                                                           *
 * This class deals with primary vertex.                                     *
 * AliESDVertex objects are created by the class AliITSVertexer and its      *
 * derived classes.                                                          *
 * Different constructors are provided:                                      *
 * - for primary vertex determined with pixels in pp (only Z)                *
 * - for primary vertex determined with pixels in ion-ion (X,Y,Z)            *
 * - for primary vertex determined with ITS tracks in pp (X,Y,Z)             *
 * This class replaces the previous version of AliESDVertex, designed        *
 * originally only for A-A collisions. The functionalities of the old class  *
 * are maintained in the AliITSVertexerIons class                            *
 *                                                                           *
 *****************************************************************************/

#include <TMath.h>

#include "AliVertex.h"
class AliVTrack;

class AliESDVertex : public AliVertex {
 
 public:
 
  AliESDVertex();
  AliESDVertex(Double_t positionZ,Double_t sigmaZ,Int_t nContributors,
	       const Char_t *vtxName="Vertex");
  AliESDVertex(Double_t position[3],Double_t covmatrix[6],
	       Double_t chi2,Int_t nContributors,
	       const Char_t *vtxName="Vertex");
  AliESDVertex(Double_t position[3],Double_t sigma[3],
	       const Char_t *vtxName="Vertex");
  AliESDVertex(Double_t position[3],Double_t sigma[3],Double_t snr[3],
	       const Char_t *vtxName="Vertex");
  AliESDVertex(const AliESDVertex &source);
  AliESDVertex &operator=(const AliESDVertex &source);
  virtual void Copy(TObject &obj) const;

  virtual ~AliESDVertex() {}

  void     GetSigmaXYZ(Double_t sigma[3]) const;
  void     GetCovMatrix(Double_t covmatrix[6]) const;
  void     GetCovarianceMatrix(Double_t covmatrix[6]) const 
                    {GetCovMatrix(covmatrix);}
  void     GetSNR(Double_t snr[3]) const;
  void     SetCovarianceMatrix(const Double_t *cov);

  Double_t GetXRes() const {return TMath::Sqrt(fCovXX);}
  Double_t GetYRes() const {return TMath::Sqrt(fCovYY);}
  Double_t GetZRes() const {return TMath::Sqrt(fCovZZ);}
  Double_t GetXSNR() const { return fSNR[0]; }
  Double_t GetYSNR() const { return fSNR[1]; }
  Double_t GetZSNR() const { return fSNR[2]; }
  void     SetSNR(double snr, int i) {if (i<3 && i>=0) fSNR[i] = snr;}

  Double_t GetChi2() const { return fChi2; }
  void     SetChi2(Double_t chi) { fChi2 = chi; }
  Double_t GetChi2toNDF() const 
    { return fChi2/(2.*(Double_t)fNContributors-3.); }
  Double_t GetChi2perNDF() const { return GetChi2toNDF();}
  Int_t    GetNDF() const {return (2*fNContributors-3);}

  void     Print(Option_t* option = "") const;
  void     PrintStatus() const {Print();}

  void     Reset() { SetToZero(); SetName("Vertex"); }

  void     SetID(Char_t id) {fID=id;}
  Char_t   GetID() const {return fID;}
  //
  void     SetBC(Int_t bc)               {fBCID = bc;}
  Int_t    GetBC()              const    {return fBCID;}
  Double_t GetWDist(const AliESDVertex* v) const;

 protected:

  Double32_t fCovXX,fCovXY,fCovYY,fCovXZ,fCovYZ,fCovZZ;  // vertex covariance matrix
  Double32_t fSNR[3];  // S/N ratio
  Double32_t fChi2;  // chi2 of vertex fit

  Char_t fID;       // ID of this vertex within an ESD event
  Char_t fBCID;     // BC ID assigned to vertex
 private:

  void SetToZero();

  ClassDef(AliESDVertex,8)  // Class for Primary Vertex
};

#endif






    
 AliESDVertex.h:1
 AliESDVertex.h:2
 AliESDVertex.h:3
 AliESDVertex.h:4
 AliESDVertex.h:5
 AliESDVertex.h:6
 AliESDVertex.h:7
 AliESDVertex.h:8
 AliESDVertex.h:9
 AliESDVertex.h:10
 AliESDVertex.h:11
 AliESDVertex.h:12
 AliESDVertex.h:13
 AliESDVertex.h:14
 AliESDVertex.h:15
 AliESDVertex.h:16
 AliESDVertex.h:17
 AliESDVertex.h:18
 AliESDVertex.h:19
 AliESDVertex.h:20
 AliESDVertex.h:21
 AliESDVertex.h:22
 AliESDVertex.h:23
 AliESDVertex.h:24
 AliESDVertex.h:25
 AliESDVertex.h:26
 AliESDVertex.h:27
 AliESDVertex.h:28
 AliESDVertex.h:29
 AliESDVertex.h:30
 AliESDVertex.h:31
 AliESDVertex.h:32
 AliESDVertex.h:33
 AliESDVertex.h:34
 AliESDVertex.h:35
 AliESDVertex.h:36
 AliESDVertex.h:37
 AliESDVertex.h:38
 AliESDVertex.h:39
 AliESDVertex.h:40
 AliESDVertex.h:41
 AliESDVertex.h:42
 AliESDVertex.h:43
 AliESDVertex.h:44
 AliESDVertex.h:45
 AliESDVertex.h:46
 AliESDVertex.h:47
 AliESDVertex.h:48
 AliESDVertex.h:49
 AliESDVertex.h:50
 AliESDVertex.h:51
 AliESDVertex.h:52
 AliESDVertex.h:53
 AliESDVertex.h:54
 AliESDVertex.h:55
 AliESDVertex.h:56
 AliESDVertex.h:57
 AliESDVertex.h:58
 AliESDVertex.h:59
 AliESDVertex.h:60
 AliESDVertex.h:61
 AliESDVertex.h:62
 AliESDVertex.h:63
 AliESDVertex.h:64
 AliESDVertex.h:65
 AliESDVertex.h:66
 AliESDVertex.h:67
 AliESDVertex.h:68
 AliESDVertex.h:69
 AliESDVertex.h:70
 AliESDVertex.h:71
 AliESDVertex.h:72
 AliESDVertex.h:73
 AliESDVertex.h:74
 AliESDVertex.h:75
 AliESDVertex.h:76
 AliESDVertex.h:77
 AliESDVertex.h:78
 AliESDVertex.h:79
 AliESDVertex.h:80
 AliESDVertex.h:81
 AliESDVertex.h:82
 AliESDVertex.h:83
 AliESDVertex.h:84
 AliESDVertex.h:85
 AliESDVertex.h:86
 AliESDVertex.h:87
 AliESDVertex.h:88
 AliESDVertex.h:89
 AliESDVertex.h:90
 AliESDVertex.h:91
 AliESDVertex.h:92
 AliESDVertex.h:93
 AliESDVertex.h:94
 AliESDVertex.h:95
 AliESDVertex.h:96
 AliESDVertex.h:97
 AliESDVertex.h:98
 AliESDVertex.h:99
 AliESDVertex.h:100
 AliESDVertex.h:101
 AliESDVertex.h:102
 AliESDVertex.h:103
 AliESDVertex.h:104
 AliESDVertex.h:105
 AliESDVertex.h:106
 AliESDVertex.h:107
 AliESDVertex.h:108
 AliESDVertex.h:109
 AliESDVertex.h:110