]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliAODVertex.cxx
Fix for coverity
[u/mrichter/AliRoot.git] / STEER / AliAODVertex.cxx
index ac908fc4330aa8c87a9902274d9dca03cd021371..fedfa70dde7d9d0a11eee176cfe8285fc9affc0f 100644 (file)
@@ -36,6 +36,7 @@ AliAODVertex::AliAODVertex() :
   fType(kUndef),
   fNprong(0),
   fIprong(0),
+  fNContributors(0),
   fCovMatrix(NULL),
   fParent(),
   fDaughters(),
@@ -60,6 +61,7 @@ AliAODVertex::AliAODVertex(const Double_t position[3],
   fType(vtype),
   fNprong(nprong),
   fIprong(0),
+  fNContributors(0),
   fCovMatrix(NULL),
   fParent(parent),
   fDaughters(),
@@ -87,6 +89,7 @@ AliAODVertex::AliAODVertex(const Float_t position[3],
   fType(vtype),
   fNprong(nprong),
   fIprong(0),
+  fNContributors(0),
   fCovMatrix(NULL),
   fParent(parent),
   fDaughters(),
@@ -110,6 +113,7 @@ AliAODVertex::AliAODVertex(const Double_t position[3],
   fType(vtype),
   fNprong(nprong),
   fIprong(0),
+  fNContributors(0),
   fCovMatrix(NULL),
   fParent(),
   fDaughters(),
@@ -131,6 +135,7 @@ AliAODVertex::AliAODVertex(const Float_t position[3],
   fType(vtype),
   fNprong(nprong),
   fIprong(0),
+  fNContributors(0),
   fCovMatrix(NULL),
   fParent(),
   fDaughters(),
@@ -159,6 +164,7 @@ AliAODVertex::AliAODVertex(const AliAODVertex& vtx) :
   fType(vtx.fType),
   fNprong(vtx.fNprong),
   fIprong(vtx.fIprong),
+  fNContributors(vtx.fNContributors),
   fCovMatrix(NULL),
   fParent(vtx.fParent),
   fDaughters(vtx.fDaughters),
@@ -176,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) 
 {
@@ -258,13 +286,20 @@ template <class T> void AliAODVertex::GetSigmaXYZ(T sigma[3]) const
 Int_t AliAODVertex::GetNContributors() const 
 {
   // Returns the number of tracks used to fit this vertex.
-  
-  Int_t cont = 0;
-
-  for (Int_t iDaug = 0; iDaug < GetNDaughters(); iDaug++) {
-    if (((AliAODTrack*)fDaughters.At(iDaug))->GetUsedForVtxFit()) cont++;
+  Int_t cont  = 0;
+
+  TString vtitle = GetTitle();
+  if (!vtitle.Contains("VertexerTracks")) {
+    cont = fNContributors;
+  } else {
+    for (Int_t iDaug = 0; iDaug < GetNDaughters(); iDaug++) {
+       AliAODTrack* aodT = dynamic_cast<AliAODTrack*>(fDaughters.At(iDaug));
+       if (!aodT) continue;
+       if (aodT->GetUsedForPrimVtxFit()) cont++;
+    } 
+    // the constraint adds another DOF
+    if(vtitle.Contains("VertexerTracksWithConstraint"))cont++;
   }
-
   return cont;
 }
 
@@ -280,7 +315,7 @@ Bool_t AliAODVertex::HasDaughter(TObject *daughter) const
        return kFALSE;
     } else {
        Bool_t has = kFALSE;
-       for (int i; i < fNprong; i++) {
+       for (int i = 0; i < fNprong; i++) {
            if (fProngs[i].GetObject() == daughter) has = kTRUE;
        }
        return has;
@@ -449,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(AliAODVertex *vtx) const
 {
   // distance in 3D to another AliAODVertex
 
@@ -457,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(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
 
@@ -483,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
 
@@ -498,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;
 }
 
 //______________________________________________________________________________
@@ -525,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 
 {