LCOV - code coverage report
Current view: top level - STEER/ESD - AliVertex.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 63 76 82.9 %
Date: 2016-06-14 17:26:59 Functions: 9 17 52.9 %

          Line data    Source code
       1             : /**************************************************************************
       2             :  * Copyright(c) 2006-2008, ALICE Experiment at CERN, All rights reserved. *
       3             :  *                                                                        *
       4             :  * Author: The ALICE Off-line Project.                                    *
       5             :  * Contributors are mentioned in the code where appropriate.              *
       6             :  *                                                                        *
       7             :  * Permission to use, copy, modify and distribute this software and its   *
       8             :  * documentation strictly for non-commercial purposes is hereby granted   *
       9             :  * without fee, provided that the above copyright notice appears in all   *
      10             :  * copies and that both the copyright notice and this permission notice   *
      11             :  * appear in the supporting documentation. The authors make no claims     *
      12             :  * about the suitability of this software for any purpose. It is          *
      13             :  * provided "as is" without express or implied warranty.                  *
      14             :  **************************************************************************/
      15             : 
      16             : //-----------------------------------------------------------------
      17             : //           Implementation of the base Vertex class
      18             : //           This class contains the Secondary Vertex
      19             : //           of a set of tracks
      20             : //           And it is the base class for primary vertices
      21             : // Origin: F.Prino, Torino, prino@to.infn.it
      22             : //-----------------------------------------------------------------
      23             : 
      24             : #include "AliVertex.h"
      25             : 
      26             : 
      27         172 : ClassImp(AliVertex)
      28             : 
      29             : //--------------------------------------------------------------------------
      30             : AliVertex::AliVertex() :
      31         265 :   AliVVertex(),
      32         265 :   fSigma(0),
      33         265 :   fNContributors(0),
      34         265 :   fNIndices(0),
      35         265 :   fIndices(0)
      36         795 : {
      37             : //
      38             : // Default Constructor, set everything to 0
      39             : //
      40        2120 :   for(Int_t k=0;k<3;k++) fPosition[k]   = 0;
      41         265 : }
      42             : 
      43             : //--------------------------------------------------------------------------
      44             : AliVertex::AliVertex(const Double_t position[3],Double_t dispersion,
      45             :                      Int_t nContributors):
      46         106 :   AliVVertex(),
      47         106 :   fSigma(dispersion),
      48         106 :   fNContributors(nContributors),
      49         106 :   fNIndices(0),
      50         106 :   fIndices(0)
      51         318 : {
      52             :   //
      53             :   // Standard Constructor
      54             :   //
      55             : 
      56         848 :   for(Int_t k=0;k<3;k++) fPosition[k]   = position[k];
      57         106 :   SetName("BaseVertex");
      58             : 
      59         106 : }
      60             : 
      61             : //--------------------------------------------------------------------------
      62             : AliVertex::AliVertex(const AliVertex &source):
      63          26 :   AliVVertex(source),
      64          52 :   fSigma(source.GetDispersion()),
      65          52 :   fNContributors(source.GetNContributors()),
      66          52 :   fNIndices(source.GetNIndices()),
      67          26 :   fIndices(0x0)
      68          78 : {
      69             :   //
      70             :   // Copy constructor
      71             :   //
      72         208 :   for(Int_t i=0;i<3;i++)fPosition[i] = source.fPosition[i];
      73          26 :   if(source.fNIndices>0) {
      74          52 :     fIndices = new UShort_t[fNIndices];
      75          26 :     memcpy(fIndices,source.fIndices,fNIndices*sizeof(UShort_t));
      76          26 :   }
      77          26 : }
      78             : 
      79             : //--------------------------------------------------------------------------
      80             : AliVertex &AliVertex::operator=(const AliVertex &source){
      81             :   //
      82             :   // assignment operator
      83             :   //
      84         240 :   if(&source != this){
      85         120 :     AliVVertex::operator=(source);
      86         960 :     for(Int_t i=0;i<3;i++)fPosition[i] = source.fPosition[i];
      87         120 :     fSigma = source.GetDispersion();
      88         120 :     fNContributors = source.GetNContributors();
      89         120 :     fNIndices = source.GetNIndices();
      90         120 :     if(fIndices)delete [] fIndices;
      91         120 :     fIndices = 0;
      92         120 :     if(fNIndices>0) {
      93          16 :       fIndices = new UShort_t[fNIndices];
      94          16 :       memcpy(fIndices,source.fIndices,fNIndices*sizeof(UShort_t));
      95          16 :     }
      96             :   }
      97         120 :   return *this;
      98             : }
      99             : 
     100             : 
     101             : //--------------------------------------------------------------------------
     102         698 : AliVertex::~AliVertex() {
     103             : //  
     104             : // Default Destructor
     105             : //
     106         425 :   delete [] fIndices;
     107         349 :   fIndices = 0;
     108         349 : }
     109             : 
     110             : void AliVertex::Clear(Option_t* option) 
     111             : {
     112             :     // Delete allocated memory
     113           0 :     delete [] fIndices;
     114           0 :     fIndices = 0;
     115           0 :     AliVVertex::Clear(option);
     116           0 : }
     117             : 
     118             : //--------------------------------------------------------------------------
     119             : void AliVertex::GetXYZ(Double_t position[3]) const {
     120             : //
     121             : // Return position of the vertex in global frame
     122             : //
     123         720 :   position[0] = fPosition[0];
     124         360 :   position[1] = fPosition[1];
     125         360 :   position[2] = fPosition[2];
     126             : 
     127         360 :   return;
     128             : }
     129             : //--------------------------------------------------------------------------
     130             : void AliVertex::GetCovarianceMatrix(Double_t covmatrix[6]) const {
     131             : //
     132             : // Fake method (is implmented in AliESDVertex)
     133             : //
     134           0 :   for(Int_t i=0;i<6;i++) covmatrix[i] = -999.;
     135             : 
     136           0 :   return;
     137             : }
     138             : //--------------------------------------------------------------------------
     139             : void AliVertex::SetIndices(Int_t nindices,UShort_t *indices) {
     140             : //
     141             : // Set indices of tracks used for vertex determination 
     142             : //
     143          36 :   if(fNContributors<1)  { printf("fNContributors<1"); return; }
     144          18 :   fNIndices = nindices;
     145          18 :   delete [] fIndices;
     146          18 :   fIndices = new UShort_t[fNIndices];
     147         380 :   for(Int_t i=0;i<fNIndices;i++) fIndices[i] = indices[i]; 
     148          18 :   return;
     149          18 : }
     150             : //--------------------------------------------------------------------------
     151             : Bool_t AliVertex::UsesTrack(Int_t index) const {
     152             : //
     153             : // checks if a track is used for the vertex 
     154             : //
     155         286 :   if(fNIndices<1)  {/* printf("fNIndices<1"); */return kFALSE; }
     156        2479 :   for(Int_t i=0;i<fNIndices;i++) {
     157        1245 :     if((Int_t)fIndices[i]==index) return kTRUE;
     158             :   }
     159          55 :   return kFALSE;
     160         143 : }
     161             : //--------------------------------------------------------------------------
     162             : void AliVertex::Print(Option_t* /*option*/) const {
     163             : //
     164             : // Print out information on all data members
     165             : //
     166           0 :   printf("Vertex position:\n");
     167           0 :   printf("   x = %f\n",fPosition[0]);
     168           0 :   printf("   y = %f\n",fPosition[1]);
     169           0 :   printf("   z = %f\n",fPosition[2]);
     170           0 :   printf(" Dispersion = %f\n",fSigma);
     171           0 :   printf(" # tracks = %d\n",fNContributors);
     172             : 
     173           0 :   return;
     174             : }
     175             : 
     176             : 
     177             : 
     178             : 

Generated by: LCOV version 1.11