//--------------------------------------------------------------------------
AliESDVertex::AliESDVertex() :
- TNamed(),
+ AliVertex(),
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)
+ fChi2(0)
{
//
// Default Constructor, set everything to 0
//--------------------------------------------------------------------------
AliESDVertex::AliESDVertex(Double_t positionZ,Double_t sigmaZ,
Int_t nContributors,const Char_t *vtxName) :
- TNamed(vtxName,""),
+ AliVertex(),
fCovXX(0.005*0.005),
fCovXY(0),
fCovYY(0.005*0.005),
fCovXZ(0),
fCovYZ(0),
fCovZZ(sigmaZ*sigmaZ),
- fChi2(0),
- fNContributors(nContributors)
+ fChi2(0)
{
//
// Constructor for vertex Z from pixels
SetToZero();
fPosition[2] = positionZ;
+ SetName(vtxName);
+ SetNContributors(nContributors);
}
AliESDVertex::AliESDVertex(Double_t position[3],Double_t covmatrix[6],
Double_t chi2,Int_t nContributors,
const Char_t *vtxName) :
- TNamed(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),
- fNContributors(nContributors)
+ fChi2(chi2)
{
//
// Constructor for vertex in 3D from tracks
//
SetToZero();
- fPosition[0] = position[0];
- fPosition[1] = position[1];
- fPosition[2] = position[2];
+ SetName(vtxName);
}
//--------------------------------------------------------------------------
AliESDVertex::AliESDVertex(Double_t position[3],Double_t sigma[3],
const Char_t *vtxName) :
- TNamed(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),
- fNContributors(0)
+ fChi2(0)
{
//
// Constructor for smearing of true position
//
SetToZero();
- fPosition[0] = position[0];
- fPosition[1] = position[1];
- fPosition[2] = position[2];
+ SetName(vtxName);
}
//--------------------------------------------------------------------------
AliESDVertex::AliESDVertex(Double_t position[3],Double_t sigma[3],
Double_t snr[3], const Char_t *vtxName) :
- TNamed(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),
- fNContributors(0)
+ fChi2(0)
{
//
// Constructor for Pb-Pb
//
SetToZero();
- fPosition[0] = position[0];
- fPosition[1] = position[1];
- fPosition[2] = position[2];
+ SetName(vtxName);
fSNR[0] = snr[0];
fSNR[1] = snr[1];
// Set the content of arrays to 0. Used by constructors
//
for(Int_t i=0; i<3; i++){
- fPosition[i] = 0.;
fTruePos[i] = 0;
fSNR[i] = 0.;
}
}
//--------------------------------------------------------------------------
-AliESDVertex::~AliESDVertex() {
-//
-// Destructor
-//
-
-}
-//--------------------------------------------------------------------------
-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];
-
- return;
-}
-//--------------------------------------------------------------------------
void AliESDVertex::GetSigmaXYZ(Double_t sigma[3]) const {
//
// Return errors on vertex position in thrust frame
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 {
//
* *
*****************************************************************************/
-//---- Root headers -----
-#include <TNamed.h>
-class AliESDVertex : public TNamed {
+#include <AliVertex.h>
+
+class AliESDVertex : public AliVertex {
public:
AliESDVertex(Double_t position[3],Double_t sigma[3],Double_t snr[3],
const Char_t *vtxName="Vertex");
- virtual ~AliESDVertex();
+ virtual ~AliESDVertex(){;}
- void GetXYZ(Double_t position[3]) const;
void GetSigmaXYZ(Double_t sigma[3]) const;
void GetCovMatrix(Double_t covmatrix[6]) const;
void GetSNR(Double_t snr[3]) const;
- Double_t GetXv() const;
- Double_t GetYv() const;
- Double_t GetZv() const;
- Double_t GetXRes() const;
- Double_t GetYRes() const;
- Double_t GetZRes() const;
+ 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]; }
Double_t GetChi2() const { return fChi2; }
Double_t GetChi2toNDF() const
{ return fChi2/(2.*(Double_t)fNContributors-3.); }
- Int_t GetNContributors() const { return fNContributors; }
void Print(Option_t* option = "") const;
void PrintStatus() const {Print();}
protected:
- Double_t fPosition[3]; // vertex position
Double_t fCovXX,fCovXY,fCovYY,fCovXZ,fCovYZ,fCovZZ; // vertex covariance matrix
Double_t fSNR[3]; // S/N ratio
Double_t fChi2; // chi2 of vertex fit
- Int_t fNContributors; // # of tracklets/tracks used for the estimate
Double_t fTruePos[3]; //true vertex position (for comparison purposes)
private:
void SetToZero();
- ClassDef(AliESDVertex,4) // Class for Primary Vertex
+ ClassDef(AliESDVertex,5) // Class for Primary Vertex
};
#endif
--- /dev/null
+/**************************************************************************
+ * Copyright(c) 2006-2008, ALICE Experiment at CERN, All rights reserved. *
+ * *
+ * Author: The ALICE Off-line Project. *
+ * Contributors are mentioned in the code where appropriate. *
+ * *
+ * Permission to use, copy, modify and distribute this software and its *
+ * documentation strictly for non-commercial purposes is hereby granted *
+ * without fee, provided that the above copyright notice appears in all *
+ * copies and that both the copyright notice and this permission notice *
+ * appear in the supporting documentation. The authors make no claims *
+ * about the suitability of this software for any purpose. It is *
+ * provided "as is" without express or implied warranty. *
+ **************************************************************************/
+
+//-----------------------------------------------------------------
+// Implementation of the base Vertex class
+// This class contains the Secondary Vertex
+// of a set of tracks
+// And it is the base class for primary vertices
+// Origin: F.Prino, Torino, prino@to.infn.it
+//-----------------------------------------------------------------
+
+#include "AliVertex.h"
+
+
+ClassImp(AliVertex)
+
+//--------------------------------------------------------------------------
+AliVertex::AliVertex() : TNamed() {
+//
+// Default Constructor, set everything to 0
+//
+ for(Int_t k=0;k<3;k++) fPosition[k] = 0;
+ fSigma = 0;
+ fNContributors=0;
+}
+
+//--------------------------------------------------------------------------
+AliVertex::AliVertex(Double_t position[3],Double_t dispersion,
+ Int_t nContributors): TNamed() {
+ //
+ // Standard Constructor
+ //
+
+ for(Int_t k=0;k<3;k++) fPosition[k] = position[k];
+ fSigma = dispersion;
+ fNContributors = nContributors;
+ SetName("BaseVertex");
+
+}
+
+
+//--------------------------------------------------------------------------
+AliVertex::~AliVertex() {
+//
+// Default Destructor
+//
+
+}
+//--------------------------------------------------------------------------
+void AliVertex::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];
+
+ return;
+}
+//--------------------------------------------------------------------------
+void AliVertex::Print(Option_t* /*option*/) const {
+//
+// Print out information on all data members
+//
+ printf("Vertex position:\n");
+ printf(" x = %f\n",fPosition[0]);
+ printf(" y = %f\n",fPosition[1]);
+ printf(" z = %f\n",fPosition[2]);
+ printf(" Dispersion = %f\n",fSigma);
+ printf(" # tracks = %d\n",fNContributors);
+
+ return;
+}
+
+
+
+
--- /dev/null
+#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 <TNamed.h>
+
+class AliVertex : public TNamed {
+
+ public:
+
+ AliVertex();
+ AliVertex(Double_t position[3],Double_t dispersion,
+ Int_t nContributors);
+ virtual ~AliVertex();
+
+
+ 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 GetXv() const { return fPosition[0]; }
+ virtual Double_t GetYv() const { return fPosition[1]; }
+ virtual Double_t GetZv() const { return fPosition[2]; }
+ virtual Double_t GetDispersion() const { return fSigma; }
+ virtual Int_t GetNContributors() const { return fNContributors; }
+
+ virtual void Print(Option_t* option = "") const;
+
+ protected:
+
+ Double_t fPosition[3]; // vertex position
+ Double_t fSigma; // track dispersion around found vertex
+ Int_t fNContributors; // # of tracklets/tracks used for the estimate
+
+
+ ClassDef(AliVertex,1) // Class for Primary Vertex
+};
+
+#endif
virtual void SetDebug(Int_t debug = 0);
virtual void SetFirstEvent(Int_t ev){fFirstEvent = ev;}
virtual void SetLastEvent(Int_t ev){fLastEvent = ev;}
- virtual void SetUseV2Clusters(Bool_t choice) = 0;
virtual void WriteCurrentVertex() = 0;
#pragma link C++ class AliESDHLTtrack+;
#pragma link C++ class AliESDv0+;
#pragma link C++ class AliESDcascade+;
+#pragma link C++ class AliVertex+;
#pragma link C++ class AliESDVertex+;
#pragma link C++ class AliESDpid+;
#pragma link C++ class AliESDkink+;
SRCS = AliESD.cxx \
AliESDtrack.cxx \
AliESDMuonTrack.cxx AliESDPmdTrack.cxx AliESDHLTtrack.cxx \
- AliESDv0.cxx AliESDcascade.cxx AliESDVertex.cxx \
+ AliESDv0.cxx AliESDcascade.cxx AliVertex.cxx AliESDVertex.cxx \
AliESDpid.cxx AliESDkink.cxx AliESDV0MI.cxx \
AliESDCaloCluster.cxx \
AliKalmanTrack.cxx AliHelix.cxx AliExternalTrackParam.cxx \