// for the Event Data Summary class
// This class contains the Primary Vertex
// of the event coming from reconstruction
-// Origin: A.Dainese, Padova, andrea.dainese@pd.infn.it
+// Origin: A.Dainese, andrea.dainese@lnl.infn.it
//-----------------------------------------------------------------
//---- standard headers ----
fCovXZ(0),
fCovYZ(0),
fCovZZ(5.3*5.3),
- fChi2(0)
+ fChi2(0),
+ fID(-1) // ID=-1 means the vertex with the biggest number of contributors
{
//
// Default Constructor, set everything to 0
fCovXZ(0),
fCovYZ(0),
fCovZZ(sigmaZ*sigmaZ),
- fChi2(0)
+ fChi2(0),
+ fID(-1) // ID=-1 means the vertex with the biggest number of contributors
{
//
// Constructor for vertex Z from pixels
fCovXZ(covmatrix[3]),
fCovYZ(covmatrix[4]),
fCovZZ(covmatrix[5]),
- fChi2(chi2)
+ fChi2(chi2),
+ fID(-1) // ID=-1 means the vertex with the biggest number of contributors
{
//
// Constructor for vertex in 3D from tracks
fCovXZ(0),
fCovYZ(0),
fCovZZ(sigma[2]*sigma[2]),
- fChi2(0)
+ fChi2(0),
+ fID(-1) // ID=-1 means the vertex with the biggest number of contributors
{
//
// Constructor for smearing of true position
fCovXZ(0),
fCovYZ(0),
fCovZZ(sigma[2]*sigma[2]),
- fChi2(0)
+ fChi2(0),
+ fID(-1) // ID=-1 means the vertex with the biggest number of contributors
{
//
// Constructor for Pb-Pb
fSNR[2] = snr[2];
}
+//--------------------------------------------------------------------------
+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)
+{
+ //
+ // Copy constructor
+ //
+ for(Int_t i=0;i<3;i++) {
+ fSNR[i] = source.fSNR[i];
+ }
+}
+//--------------------------------------------------------------------------
+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::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;
+
+}
//--------------------------------------------------------------------------
void AliESDVertex::SetToZero() {
//
// Set the content of arrays to 0. Used by constructors
//
for(Int_t i=0; i<3; i++){
- fTruePos[i] = 0;
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;
//--------------------------------------------------------------------------
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::Print(Option_t* /*option*/) const {
-//
-// Print out information on all data members
-//
+ //
+ // 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(" 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;
}