LCOV - code coverage report
Current view: top level - ITSMFT/MFT/MFTrec - AliMFTTrack.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 115 0.9 %
Date: 2016-06-14 17:26:59 Functions: 1 17 5.9 %

          Line data    Source code
       1             : /**************************************************************************
       2             :  * Copyright(c) 1998-1999, 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             : /* $Id$ */
      17             : 
      18             : //-----------------------------------------------------------------------------
      19             : // Class AliMFTTrack
      20             : //-------------------
      21             : // Description of an ALICE Standalone MFT track
      22             : //-------------------
      23             : // Contact author: raphael.tieulent@cern.ch
      24             : //-----------------------------------------------------------------------------
      25             : 
      26             : #include "TObjArray.h"
      27             : #include "TMath.h"
      28             : 
      29             : #include "AliLog.h"
      30             : 
      31             : #include "AliMFTTrack.h"
      32             : #include "AliMFTTrackParam.h"
      33             : #include "AliMFTCATrack.h"
      34             : #include "AliMFTCACell.h"
      35             : 
      36             : 
      37             : /// \cond CLASSIMP
      38          12 : ClassImp(AliMFTTrack); // Class implementation in ROOT context
      39             :                                                                                          /// \endcond
      40             : 
      41             : 
      42             : //=============================================================================================
      43             : 
      44           0 : AliMFTTrack::AliMFTTrack():TObject(),
      45           0 : fChi2(0.),
      46           0 : fTrackParamAtCluster(NULL),
      47           0 : fTrackParamAtVertex(NULL),
      48           0 : fCATrack(NULL),
      49           0 : fTrackID(-1),
      50           0 : fP(0),
      51           0 : fTheta(0),
      52           0 : fPhi(0),
      53           0 : fPt(0)
      54           0 : {
      55             :         /// Default constructor
      56             :         
      57           0 : }
      58             : 
      59             : //=============================================================================================
      60             : 
      61           0 : AliMFTTrack::AliMFTTrack(AliMFTCATrack *catrack):TObject(),
      62           0 : fChi2(0.),
      63           0 : fTrackParamAtCluster(new TObjArray(10)),
      64           0 : fTrackParamAtVertex(NULL),
      65           0 : fCATrack(catrack),
      66           0 : fTrackID(-1),
      67           0 : fP(0),
      68           0 : fTheta(0),
      69           0 : fPhi(0),
      70           0 : fPt(0)
      71           0 : {
      72           0 :         catrack->Print();
      73             :         /// Constructor from a AliMFTCATrack
      74           0 :         fTrackParamAtCluster->SetOwner(kTRUE);
      75             :         
      76           0 :         Int_t nCells = catrack->GetNcells();
      77             :         // Create Empty Track Parameter objects
      78             :         Double_t *caHit;
      79             :         AliMFTCACell * caCell;
      80           0 :         AliInfo(Form("Nb of Cells in the track = %d ",nCells));
      81           0 :         for (Int_t iCell = 0 ; iCell < nCells  ; iCell++) {
      82           0 :                 caCell = catrack->GetCell(iCell);
      83           0 :                 caHit = caCell->GetHit2();
      84             :                 
      85           0 :                 AliMFTTrackParam trackParam;
      86           0 :                 trackParam.SetInverseTransverseMomentum(1.e-6); // infinite momentum
      87           0 :                 trackParam.SetClusterPos(caHit[0], caHit[1], caHit[2]);
      88             :                 
      89           0 :                 AddTrackParamAtCluster(trackParam);
      90             :                 
      91           0 :                 if(iCell==nCells-1) {
      92           0 :                         AliMFTTrackParam trackParam2;
      93           0 :                         caHit = caCell->GetHit1();
      94           0 :                         trackParam2.SetInverseTransverseMomentum(1.e-6); // infinite momentum
      95           0 :                         trackParam2.SetClusterPos(caHit[0], caHit[1], caHit[2]);
      96             :                         
      97           0 :                         AddTrackParamAtCluster(trackParam2);
      98           0 :                 }
      99             :                 
     100           0 :         }
     101             :         
     102           0 :         AliInfo(Form("Nb of Track param objects = %d ",fTrackParamAtCluster->GetEntries()));
     103           0 : }
     104             : //__________________________________________________________________________
     105             : AliMFTTrack::AliMFTTrack(const AliMFTTrack& track)
     106           0 : : TObject(track),
     107           0 : fChi2(track.fChi2),
     108           0 : fTrackParamAtCluster(NULL),
     109           0 : fTrackParamAtVertex(NULL),
     110           0 : fCATrack(track.fCATrack),
     111           0 : fTrackID(track.fTrackID),
     112           0 : fP(track.fP),
     113           0 : fTheta(track.fTheta),
     114           0 : fPhi(track.fPhi),
     115           0 : fPt(track.fPt)
     116             : 
     117           0 : {
     118             :         ///copy constructor
     119             :         
     120             :         // necessary to make a copy of the objects and not only the pointers in TObjArray.
     121           0 :         if (track.fTrackParamAtCluster) {
     122           0 :                 fTrackParamAtCluster = new TObjArray(track.fTrackParamAtCluster->GetSize());
     123           0 :                 fTrackParamAtCluster->SetOwner(kTRUE);
     124           0 :                 for (Int_t i = 0; i < track.GetNClusters(); i++)
     125           0 :                         fTrackParamAtCluster->AddLast(new AliMFTTrackParam(*static_cast<AliMFTTrackParam*>(track.fTrackParamAtCluster->UncheckedAt(i))));
     126           0 :         }
     127             :         
     128             :         
     129             :         // copy track parameters at vertex if any
     130           0 :         if (track.fTrackParamAtVertex) fTrackParamAtVertex = new AliMFTTrackParam(*(track.fTrackParamAtVertex));
     131             :         
     132           0 : }
     133             : //__________________________________________________________________________
     134             : AliMFTTrack & AliMFTTrack::operator=(const AliMFTTrack& track)
     135             : {
     136             :         /// Asignment operator
     137             :         // check assignement to self
     138           0 :         if (this == &track)
     139           0 :                 return *this;
     140             :         
     141             :         // base class assignement
     142           0 :         TObject::operator=(track);
     143             :         
     144             :         // clear memory
     145           0 :         Clear();
     146             :         
     147             :         // necessary to make a copy of the objects and not only the pointers in TObjArray
     148           0 :         if (track.fTrackParamAtCluster) {
     149           0 :                 fTrackParamAtCluster = new TObjArray(track.fTrackParamAtCluster->GetSize());
     150           0 :                 fTrackParamAtCluster->SetOwner(kTRUE);
     151           0 :                 for (Int_t i = 0; i < track.GetNClusters(); i++)
     152           0 :                         fTrackParamAtCluster->AddLast(new AliMFTTrackParam(*static_cast<AliMFTTrackParam*>(track.fTrackParamAtCluster->UncheckedAt(i))));
     153           0 :         }
     154             :         
     155             :         
     156             :         // copy track parameters at vertex if any
     157           0 :         if (track.fTrackParamAtVertex) {
     158           0 :                 if (fTrackParamAtVertex) *fTrackParamAtVertex = *(track.fTrackParamAtVertex);
     159           0 :                 else fTrackParamAtVertex = new AliMFTTrackParam(*(track.fTrackParamAtVertex));
     160             :         }
     161             :         
     162           0 :         fChi2         =  track.fChi2;
     163           0 :         fTrackID =  track.fTrackID;
     164           0 :         fCATrack = track.fCATrack;
     165           0 :         fP=track.fP;
     166           0 :         fTheta=track.fTheta;
     167           0 :         fPhi=track.fPhi;
     168           0 :         fPt=track.fPt;
     169             :         
     170           0 :         return *this;
     171           0 : }
     172             : 
     173             : //=============================================================================================
     174             : 
     175             : 
     176           0 : AliMFTTrack::~AliMFTTrack() {
     177             :         
     178           0 :         delete fTrackParamAtCluster;
     179           0 :         delete fTrackParamAtVertex;
     180           0 :         delete fCATrack;
     181             :         
     182           0 : }
     183             : 
     184             : //__________________________________________________________________________
     185             : void AliMFTTrack::AddTrackParamAtCluster(const AliMFTTrackParam &trackParam)
     186             : {
     187             :         
     188             :         //      // check whether track parameters are given at the correct cluster z position
     189             :         //      if (TMath::Abs(cluster.GetZ() - trackParam.GetZ())>1.e-5) {   // AU
     190             :         //              AliError("track parameters are given at a different z position than the one of the associated cluster");
     191             :         //              return;
     192             :         //      }
     193             :         
     194             :         // add parameters to the array of track parameters
     195           0 :         if (!fTrackParamAtCluster) {
     196           0 :                 fTrackParamAtCluster = new TObjArray(10);
     197           0 :                 fTrackParamAtCluster->SetOwner(kTRUE);
     198           0 :         }
     199           0 :         AliMFTTrackParam* trackParamAtCluster = new AliMFTTrackParam(trackParam);
     200           0 :         fTrackParamAtCluster->AddLast(trackParamAtCluster);
     201             :         
     202             :         // sort the array of track parameters
     203             :         //      fTrackParamAtCluster->Sort();
     204           0 : }
     205             : 
     206             : //__________________________________________________________________________
     207             : TObjArray* AliMFTTrack::GetTrackParamAtCluster() const
     208             : {
     209             :         /// return array of track parameters at cluster (create it if needed)
     210           0 :         if (!fTrackParamAtCluster) {
     211           0 :                 fTrackParamAtCluster = new TObjArray(10);
     212           0 :                 fTrackParamAtCluster->SetOwner(kTRUE);
     213           0 :         }
     214           0 :         return fTrackParamAtCluster;
     215           0 : }
     216             : 
     217             : //__________________________________________________________________________
     218             : Int_t AliMFTTrack::GetNDF() const
     219             : {
     220             :         /// return the number of degrees of freedom
     221             :         
     222           0 :         Int_t ndf = 2 * GetNClusters() - 5;
     223           0 :         return (ndf > 0) ? ndf : 0;
     224             : }
     225             : 
     226             : //__________________________________________________________________________
     227             : Double_t AliMFTTrack::GetNormalizedChi2() const
     228             : {
     229             :         /// return the chi2 value divided by the number of degrees of freedom (or FLT_MAX if ndf <= 0)
     230             :         
     231           0 :         Double_t ndf = (Double_t) GetNDF();
     232           0 :         return (ndf > 0.) ? fChi2 / ndf : 1e6;
     233             : }
     234             : 
     235             : //_____________________________________________-
     236             : void AliMFTTrack::Print(Option_t*) const
     237             : {
     238             :         /// Printing Track information
     239             :         
     240           0 :         AliInfo(Form("Chi2 = %.1f", fChi2));
     241           0 :         AliInfo(Form("Chi2/ndf = %.2f", GetNormalizedChi2()));
     242           0 :         AliInfo(Form("No.Clusters = %d", GetNClusters()));
     243           0 :         AliInfo(Form("MC label = %d", fTrackID));
     244           0 :         if (fTrackParamAtCluster) fTrackParamAtCluster->Last()->Print("FULL");
     245           0 : }
     246             : 
     247             : //__________________________________________________________________________
     248             : void AliMFTTrack::Clear(Option_t* /*opt*/)
     249             : {
     250             :         /// Clear arrays
     251             :         //      delete fTrackParamAtCluster; fTrackParamAtCluster = 0x0;
     252             :         //      delete fTrackParamAtVertex; fTrackParamAtVertex = 0x0;
     253           0 : }
     254             : 
     255             : 
     256             : 

Generated by: LCOV version 1.11