]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliAODVertex.cxx
add protection against truncated events + coverity - Rachid
[u/mrichter/AliRoot.git] / STEER / AliAODVertex.cxx
index 0b4bf9127c92e8a6d8d2fb74e3e5405e67e01ea3..01c05088f0895ecec913ff250020224adc056b1f 100644 (file)
@@ -182,6 +182,28 @@ AliAODVertex::AliAODVertex(const AliAODVertex& vtx) :
   }
 }
 
+//______________________________________________________________________________
+AliAODVertex* AliAODVertex::CloneWithoutRefs() const
+{
+  // Special method to copy all but the refs 
+  
+  Double_t cov[6] = { 0.0 };
+      
+  if (fCovMatrix) fCovMatrix->GetCovMatrix(cov);
+  
+  AliAODVertex* v = new AliAODVertex(fPosition,
+                                     cov,
+                                     fChi2perNDF,
+                                     0x0,
+                                     fID,
+                                     fType,
+                                     0);
+  
+  v->SetNContributors(fNContributors);  
+  
+  return v;
+}
+
 //______________________________________________________________________________
 AliAODVertex& AliAODVertex::operator=(const AliAODVertex& vtx) 
 {
@@ -462,7 +484,7 @@ Double_t AliAODVertex::RotatedCovMatrixZZ(Double_t phi, Double_t theta) const
 }
 
 //______________________________________________________________________________
-Double_t AliAODVertex::DistanceToVertex(AliAODVertex *vtx) const
+Double_t AliAODVertex::Distance2ToVertex(const AliAODVertex *vtx) const
 {
   // distance in 3D to another AliAODVertex
 
@@ -470,22 +492,22 @@ Double_t AliAODVertex::DistanceToVertex(AliAODVertex *vtx) const
   Double_t dy = GetY()-vtx->GetY();
   Double_t dz = GetZ()-vtx->GetZ();
 
-  return TMath::Sqrt(dx*dx+dy*dy+dz*dz);
+  return dx*dx+dy*dy+dz*dz;
 }
 
 //______________________________________________________________________________
-Double_t AliAODVertex::DistanceXYToVertex(AliAODVertex *vtx) const
+Double_t AliAODVertex::DistanceXY2ToVertex(const AliAODVertex *vtx) const
 {
   // distance in XY to another AliAODVertex
 
   Double_t dx = GetX()-vtx->GetX();
   Double_t dy = GetY()-vtx->GetY();
 
-  return TMath::Sqrt(dx*dx+dy*dy);
+  return dx*dx+dy*dy;
 }
 
 //______________________________________________________________________________
-Double_t AliAODVertex::ErrorDistanceToVertex(AliAODVertex *vtx) const
+Double_t AliAODVertex::Error2DistanceToVertex(AliAODVertex *vtx) const
 {
   // error on the distance in 3D to another AliAODVertex
 
@@ -496,11 +518,11 @@ Double_t AliAODVertex::ErrorDistanceToVertex(AliAODVertex *vtx) const
   // error2 due to vtx vertex
   Double_t error2vtx = vtx->RotatedCovMatrixXX(phi,theta);
 
-  return TMath::Sqrt(error2+error2vtx);
+  return error2+error2vtx;
 }
 
 //______________________________________________________________________________
-Double_t AliAODVertex::ErrorDistanceXYToVertex(AliAODVertex *vtx) const
+Double_t AliAODVertex::Error2DistanceXYToVertex(AliAODVertex *vtx) const
 {
   // error on the distance in XY to another AliAODVertex
 
@@ -511,7 +533,7 @@ Double_t AliAODVertex::ErrorDistanceXYToVertex(AliAODVertex *vtx) const
   // error2 due to vtx vertex
   Double_t error2vtx = vtx->RotatedCovMatrixXX(phi);
 
-  return TMath::Sqrt(error2+error2vtx);
+  return error2+error2vtx;
 }
 
 //______________________________________________________________________________
@@ -538,6 +560,75 @@ void AliAODVertex::PrintIndices() const
   }
 }
 
+//______________________________________________________________________________
+const char* AliAODVertex::AsString() const
+{
+  // Make a string describing this object
+  
+  TString tmp(Form("%10s pos(%7.2f,%7.2f,%7.2f)",GetTypeName((AODVtx_t)GetType()),GetX(),GetY(),GetZ()));
+  
+  if (GetType()==kPrimary || GetType()==kMainSPD || GetType()==kPileupSPD )
+  {
+    tmp += Form(" ncontrib %d chi2/ndf %4.1f",GetNContributors(),GetChi2perNDF());
+
+  }
+  
+  if ( !fParent.GetObject() ) 
+  {
+    tmp += " no parent";
+  }
+  if ( fDaughters.GetEntriesFast() > 0 )
+  {
+    if ( fDaughters.GetEntriesFast() == 1 ) 
+    {
+      tmp += " origin of 1 particle";
+    }
+    else
+    {
+      tmp += Form(" origin of %2d particles",fDaughters.GetEntriesFast());
+    }
+  }
+  
+  return tmp.Data();
+}
+
+//______________________________________________________________________________
+const char* AliAODVertex::GetTypeName(AODVtx_t type)
+{
+  // Return an ASCII version of type
+  
+  switch (type)
+  {
+    case kPrimary:
+      return "primary";
+      break;
+    case kKink:
+      return "kink";
+      break;
+    case kV0:
+      return "v0";
+      break;
+    case kCascade:
+      return "cascade";
+      break;
+    case kMainSPD:
+      return "mainSPD";
+      break;
+    case kPileupSPD:
+      return "pileupSPD";
+      break;
+    case kPileupTracks:
+      return "pileupTRK";
+      break;
+    case kMainTPC:
+      return "mainTPC";
+      break;
+    default:
+      return "unknown";
+      break;
+  };
+}
+
 //______________________________________________________________________________
 void AliAODVertex::Print(Option_t* /*option*/) const 
 {