//-----------------------------------------------------------------
// Implementation of the Primary Vertex class
-//
-// Origin: A.Dainese, Padova, andrea.dainese@pd.infn.it
+// for the Event Data Summary class
+// This class contains the Primary Vertex
+// of the event coming from reconstruction
+// Origin: A.Dainese, andrea.dainese@lnl.infn.it
//-----------------------------------------------------------------
//---- standard headers ----
//---- Root headers --------
#include <TMath.h>
#include <TROOT.h>
-#include <TNamed.h>
//---- AliRoot headers -----
#include "AliESDVertex.h"
ClassImp(AliESDVertex)
//--------------------------------------------------------------------------
-AliESDVertex::AliESDVertex() {
-//
-// Default Constructor, set everything to 0
-//
+AliESDVertex::AliESDVertex() :
+ AliVertex(),
+ fCovXX(0.005*0.005),
+ fCovXY(0),
+ fCovYY(0.005*0.005),
+ fCovXZ(0),
+ fCovYZ(0),
+ fCovZZ(5.3*5.3),
+ fChi2(0),
+ fID(-1) // ID=-1 means the vertex with the biggest number of contributors
+{
+ //
+ // Default Constructor, set everything to 0
+ //
SetToZero();
}
+
//--------------------------------------------------------------------------
AliESDVertex::AliESDVertex(Double_t positionZ,Double_t sigmaZ,
- Int_t nContributors,Char_t *vtxName) {
+ Int_t nContributors,const Char_t *vtxName) :
+ AliVertex(),
+ fCovXX(0.005*0.005),
+ fCovXY(0),
+ fCovYY(0.005*0.005),
+ fCovXZ(0),
+ fCovYZ(0),
+ fCovZZ(sigmaZ*sigmaZ),
+ fChi2(0),
+ fID(-1) // ID=-1 means the vertex with the biggest number of contributors
+{
//
// Constructor for vertex Z from pixels
//
SetToZero();
fPosition[2] = positionZ;
- fCovZZ = sigmaZ*sigmaZ;
- fNContributors = nContributors;
SetName(vtxName);
+ SetNContributors(nContributors);
}
+
//-------------------------------------------------------------------------
AliESDVertex::AliESDVertex(Double_t position[3],Double_t covmatrix[6],
- Double_t chi2,Int_t nContributors,Char_t *vtxName) {
-//
-// Constructor for vertex in 3D from tracks
-//
+ Double_t chi2,Int_t nContributors,
+ const Char_t *vtxName) :
+ AliVertex(position,0.,nContributors),
+ fCovXX(covmatrix[0]),
+ fCovXY(covmatrix[1]),
+ fCovYY(covmatrix[2]),
+ fCovXZ(covmatrix[3]),
+ fCovYZ(covmatrix[4]),
+ fCovZZ(covmatrix[5]),
+ fChi2(chi2),
+ fID(-1) // ID=-1 means the vertex with the biggest number of contributors
+{
+ //
+ // Constructor for vertex in 3D from tracks
+ //
SetToZero();
- fPosition[0] = position[0];
- fPosition[1] = position[1];
- fPosition[2] = position[2];
- fCovXX = covmatrix[0];
- fCovXY = covmatrix[1];
- fCovYY = covmatrix[2];
- fCovXZ = covmatrix[3];
- fCovYZ = covmatrix[4];
- fCovZZ = covmatrix[5];
-
-
- fChi2 = chi2;
- fNContributors = nContributors;
-
- SetName(vtxName);
+ SetName(vtxName);
}
//--------------------------------------------------------------------------
AliESDVertex::AliESDVertex(Double_t position[3],Double_t sigma[3],
- Char_t *vtxName) {
-//
-// Constructor for smearing of true position
-//
+ const Char_t *vtxName) :
+ AliVertex(position,0.,0),
+ fCovXX(sigma[0]*sigma[0]),
+ fCovXY(0),
+ fCovYY(sigma[1]*sigma[1]),
+ fCovXZ(0),
+ fCovYZ(0),
+ fCovZZ(sigma[2]*sigma[2]),
+ fChi2(0),
+ fID(-1) // ID=-1 means the vertex with the biggest number of contributors
+{
+ //
+ // Constructor for smearing of true position
+ //
SetToZero();
- fPosition[0] = position[0];
- fPosition[1] = position[1];
- fPosition[2] = position[2];
- fCovXX = sigma[0]*sigma[0];
- fCovXY = 0;
- fCovYY = sigma[1]*sigma[1];
- fCovXZ = 0;
- fCovYZ = 0;
- fCovZZ = sigma[2]*sigma[2];
-
-
- SetName(vtxName);
+ SetName(vtxName);
}
//--------------------------------------------------------------------------
AliESDVertex::AliESDVertex(Double_t position[3],Double_t sigma[3],
- Double_t snr[3],Char_t *vtxName) {
+ Double_t snr[3], const Char_t *vtxName) :
+ AliVertex(position,0.,0),
+ fCovXX(sigma[0]*sigma[0]),
+ fCovXY(0),
+ fCovYY(sigma[1]*sigma[1]),
+ fCovXZ(0),
+ fCovYZ(0),
+ fCovZZ(sigma[2]*sigma[2]),
+ fChi2(0),
+ fID(-1) // ID=-1 means the vertex with the biggest number of contributors
+{
//
// Constructor for Pb-Pb
//
SetToZero();
- fPosition[0] = position[0];
- fPosition[1] = position[1];
- fPosition[2] = position[2];
- fCovXX = sigma[0]*sigma[0];
- fCovXY = 0;
- fCovYY = sigma[1]*sigma[1];
- fCovXZ = 0;
- fCovYZ = 0;
- fCovZZ = sigma[2]*sigma[2];
+ SetName(vtxName);
fSNR[0] = snr[0];
fSNR[1] = snr[1];
fSNR[2] = snr[2];
- SetName(vtxName);
-
}
//--------------------------------------------------------------------------
-void AliESDVertex::SetToZero() {
+AliESDVertex::AliESDVertex(const AliESDVertex &source):
+ AliVertex(source),
+ fCovXX(source.fCovXX),
+ fCovXY(source.fCovXY),
+ fCovYY(source.fCovYY),
+ fCovXZ(source.fCovXZ),
+ fCovYZ(source.fCovYZ),
+ fCovZZ(source.fCovZZ),
+ fChi2(source.fChi2),
+ fID(source.fID)
+{
//
- // Set some data members to 0. Used by constructors
+ // Copy constructor
//
- for(Int_t i=0; i<3; i++){
- fPosition[i] = 0.;
- fTruePos[i] = 0;
- fSNR[i] = 0.;
+ for(Int_t i=0;i<3;i++) {
+ fSNR[i] = source.fSNR[i];
}
- fCovXX = 0.005*0.005;
- fCovXY = 0;
- fCovYY = 0.005*0.005;
- fCovXZ = 0;
- fCovYZ = 0;
- fCovZZ = 5.3*5.3;
-
- fChi2 = 0;
- fNContributors = 0;
-
- SetDebug();
}
//--------------------------------------------------------------------------
-AliESDVertex::~AliESDVertex() {
-//
-// Default Destructor
-//
-
+AliESDVertex &AliESDVertex::operator=(const AliESDVertex &source){
+ //
+ // assignment operator
+ //
+ if(&source != this){
+ AliVertex::operator=(source);
+ for(Int_t i=0;i<3;++i)fSNR[i] = source.fSNR[i];
+ fCovXX = source.fCovXX;
+ fCovXY = source.fCovXY;
+ fCovYY = source.fCovYY;
+ fCovXZ = source.fCovXZ;
+ fCovYZ = source.fCovYZ;
+ fCovZZ = source.fCovZZ;
+ fChi2 = source.fChi2;
+ fID = source.fID;
+ }
+ return *this;
}
//--------------------------------------------------------------------------
-void AliESDVertex::GetXYZ(Double_t position[3]) const {
-//
-// Return position of the vertex in global frame
-//
- position[0] = fPosition[0];
- position[1] = fPosition[1];
- position[2] = fPosition[2];
+void AliESDVertex::Copy(TObject &obj) const {
+
+ // this overwrites the virtual TOBject::Copy()
+ // to allow run time copying without casting
+ // in AliESDEvent
+
+ if(this==&obj)return;
+ AliESDVertex *robj = dynamic_cast<AliESDVertex*>(&obj);
+ if(!robj)return; // not an AliESDVertex
+ *robj = *this;
- return;
+}
+//--------------------------------------------------------------------------
+void AliESDVertex::SetToZero() {
+ //
+ // Set the content of arrays to 0. Used by constructors
+ //
+ for(Int_t i=0; i<3; i++){
+ fSNR[i] = 0.;
+ }
}
//--------------------------------------------------------------------------
void AliESDVertex::GetSigmaXYZ(Double_t sigma[3]) const {
-//
-// Return errors on vertex position in thrust frame
-//
+ //
+ // Return errors on vertex position in thrust frame
+ //
sigma[0] = TMath::Sqrt(fCovXX);
sigma[1] = TMath::Sqrt(fCovYY);
sigma[2] = TMath::Sqrt(fCovZZ);
}
//--------------------------------------------------------------------------
void AliESDVertex::GetCovMatrix(Double_t covmatrix[6]) const {
-//
-// Return covariance matrix of the vertex
-//
+ //
+ // Return covariance matrix of the vertex
+ //
covmatrix[0] = fCovXX;
covmatrix[1] = fCovXY;
covmatrix[2] = fCovYY;
return;
}
-//--------------------------------------------------------------------------
-Double_t AliESDVertex::GetXv() const {
-//
-// Return global x
-//
- return fPosition[0];
-}
-//--------------------------------------------------------------------------
-Double_t AliESDVertex::GetYv() const {
-//
-// Return global y
-//
- return fPosition[1];
-}
-//--------------------------------------------------------------------------
-Double_t AliESDVertex::GetZv() const {
-//
-// Return global z
-//
- return fPosition[2];
-}
-//--------------------------------------------------------------------------
-Double_t AliESDVertex::GetXRes() const {
-//
-// Return error on global x
-//
- return TMath::Sqrt(fCovXX);
-}
-//--------------------------------------------------------------------------
-Double_t AliESDVertex::GetYRes() const {
-//
-// Return error on global y
-//
- return TMath::Sqrt(fCovYY);
-}
-//--------------------------------------------------------------------------
-Double_t AliESDVertex::GetZRes() const {
-//
-// Return error on global z
-//
- return TMath::Sqrt(fCovZZ);
-}
+
//--------------------------------------------------------------------------
void AliESDVertex::GetSNR(Double_t snr[3]) const {
-//
-// Return S/N ratios
-//
+ //
+ // Return S/N ratios
+ //
for(Int_t i=0;i<3;i++) snr[i] = fSNR[i];
return;
}
//--------------------------------------------------------------------------
-void AliESDVertex::PrintStatus() const {
-//
-// Print out information on all data members
-//
- printf(" Vertex position:\n");
+void AliESDVertex::Print(Option_t* /*option*/) const {
+ //
+ // Print out information on all data members
+ //
+ printf("ESD vertex position:\n");
printf(" x = %f +- %f\n",fPosition[0],TMath::Sqrt(fCovXX));
printf(" y = %f +- %f\n",fPosition[1],TMath::Sqrt(fCovYY));
printf(" z = %f +- %f\n",fPosition[2],TMath::Sqrt(fCovZZ));
printf(" chi2 = %f\n",fChi2);
printf(" # tracks (or tracklets) = %d\n",fNContributors);
- printf(" True vertex position - for comparison: %12.10f %12.10f %12.10f\n ",fTruePos[0],fTruePos[1],fTruePos[2]);
-
return;
}