LCOV - code coverage report
Current view: top level - STEER/ESD - AliESDTrdTrack.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 49 102 48.0 %
Date: 2016-06-14 17:26:59 Functions: 6 11 54.5 %

          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             : ///////////////////////////////////////////////////////////////////////////////
      17             : //
      18             : // ESD format for the TRD tracks calculated in the
      19             : // Global Tracking Unit, used for the TRD L1 trigger
      20             : //
      21             : // Author: Jochen Klein <jochen.klein@cern.ch>
      22             : //
      23             : ///////////////////////////////////////////////////////////////////////////////
      24             : 
      25             : #include "TMath.h"
      26             : 
      27             : #include "AliESDTrdTrack.h"
      28             : #include "AliESDTrdTracklet.h"
      29             : 
      30         172 : ClassImp(AliESDTrdTrack)
      31             : 
      32             : //_____________________________________________________________________________
      33       67899 : AliESDTrdTrack::AliESDTrdTrack():
      34        5223 :   AliVTrdTrack(),
      35        5223 :   fSector(-1),
      36        5223 :   fStack(-1),
      37        5223 :   fA(0),
      38        5223 :   fB(0),
      39        5223 :   fC(0),
      40        5223 :   fY(0),
      41        5223 :   fPID(0),
      42        5223 :   fLayerMask(0),
      43        5223 :   fFlags(0),
      44        5223 :   fFlagsTiming(0),
      45        5223 :   fReserved(0),
      46        5223 :   fTrackMatch(),
      47        5223 :   fLabel(-1)
      48       26115 : {
      49             :   //
      50             :   // Default constructor
      51       73122 :   for (int i=fgkNlayers;i--;) fTrackletIndex[i] = 0;
      52             :   //
      53             : 
      54       10446 : }
      55             : 
      56       30342 : AliESDTrdTrack::AliESDTrdTrack(const AliESDTrdTrack& track):
      57        2334 :   AliVTrdTrack(track),
      58        2334 :   fSector(track.fSector),
      59        2334 :   fStack(track.fStack),
      60        2334 :   fA(track.fA),
      61        2334 :   fB(track.fB),
      62        2334 :   fC(track.fC),
      63        2334 :   fY(track.fY),
      64        2334 :   fPID(track.fPID),
      65        2334 :   fLayerMask(track.fLayerMask),
      66        2334 :   fFlags(track.fFlags),
      67        2334 :   fFlagsTiming(track.fFlagsTiming),
      68        2334 :   fReserved(track.fReserved),
      69        2334 :   fTrackMatch(track.fTrackMatch),
      70        2334 :   fLabel(track.fLabel)
      71       11670 : {
      72             :   //
      73             :   // Copy contructor
      74             :   //
      75             : 
      76       32676 :   for (Int_t iLayer = 0; iLayer < 6; iLayer++) {
      77       14004 :     fTrackletIndex[iLayer] = track.fTrackletIndex[iLayer];
      78             : 
      79       28008 :     if (track.fTrackletRefs[iLayer].GetObject())
      80          73 :       fTrackletRefs[iLayer] = track.fTrackletRefs[iLayer];
      81             :   }
      82        4668 : }
      83             : 
      84             : AliESDTrdTrack& AliESDTrdTrack::operator=(const AliESDTrdTrack& track)
      85             : {
      86             :   //
      87             :   // assignment operator
      88             :   //
      89             : 
      90           0 :   if (this == &track)
      91           0 :     return *this;
      92           0 :   AliVTrdTrack::operator=(track);
      93           0 :   fSector       = track.fSector;
      94           0 :   fStack        = track.fStack;
      95           0 :   fA            = track.fA;
      96           0 :   fB            = track.fB;
      97           0 :   fC            = track.fC;
      98           0 :   fPID          = track.fPID;
      99           0 :   fLayerMask    = track.fLayerMask;
     100           0 :   fFlags        = track.fFlags;
     101           0 :   fFlagsTiming  = track.fFlagsTiming;
     102           0 :   fReserved     = track.fReserved;
     103           0 :   fTrackMatch   = track.fTrackMatch;
     104           0 :   fLabel        = track.fLabel;
     105           0 :   for (Int_t iLayer = 0; iLayer < 6; iLayer++) {
     106           0 :     fTrackletIndex[iLayer] = track.fTrackletIndex[iLayer];
     107           0 :     fTrackletRefs[iLayer] = track.fTrackletRefs[iLayer];
     108             :   }
     109             : 
     110           0 :   return *this;
     111           0 : }
     112             : 
     113             : void AliESDTrdTrack::Copy(TObject& obj) const
     114             : {
     115             :   // this overwrites the virtual TOBject::Copy()
     116             :   // to allow run time copying without casting
     117             :   // in AliESDEvent
     118             : 
     119           0 :   if(this==&obj)return;
     120           0 :   AliESDTrdTrack *robj = dynamic_cast<AliESDTrdTrack*>(&obj);
     121           0 :   if(!robj)return; // not an aliesdtrdtrack
     122           0 :   *robj = *this;
     123           0 : }
     124             : 
     125             : ULong64_t AliESDTrdTrack::GetTrackWord(Int_t /* rev */) const
     126             : {
     127             :   // return track word representation as in raw data
     128             :   // MSB always 1
     129             : 
     130           0 :   ULong64_t trackWord = 1;
     131           0 :   AppendBits(trackWord,   1, 0);
     132           0 :   AppendBits(trackWord,   6, fLayerMask);
     133           0 :   AppendBits(trackWord,  18, fA);
     134           0 :   AppendBits(trackWord,  18, fB);
     135           0 :   AppendBits(trackWord,  12, fC);
     136           0 :   AppendBits(trackWord,   8, fPID);
     137           0 :   return trackWord;
     138           0 : }
     139             : 
     140             : ULong64_t AliESDTrdTrack::GetExtendedTrackWord(Int_t /* rev */) const
     141             : {
     142             :   // return extended track word representation as in raw data
     143             :   // MSB always 0
     144             : 
     145           0 :   ULong64_t trackWord = 0;
     146           0 :   AppendBits(trackWord,  11, fFlags);
     147           0 :   AppendBits(trackWord,  1, fFlagsTiming);
     148           0 :   AppendBits(trackWord,  2, fReserved);
     149           0 :   AppendBits(trackWord, 13, fY);
     150           0 :   AppendBits(trackWord,  6, fTrackletIndex[5]);
     151           0 :   AppendBits(trackWord,  6, fTrackletIndex[4]);
     152           0 :   AppendBits(trackWord,  6, fTrackletIndex[3]);
     153           0 :   AppendBits(trackWord,  6, fTrackletIndex[2]);
     154           0 :   AppendBits(trackWord,  6, fTrackletIndex[1]);
     155           0 :   AppendBits(trackWord,  6, fTrackletIndex[0]);
     156           0 :   return trackWord;
     157           0 : }
     158             : 
     159             : Int_t AliESDTrdTrack::GetPt() const
     160             : {
     161             :   // calculate pt from a as done in hardware
     162             : 
     163             :   const Int_t maskIdLut[64] = {
     164             :     -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,  0,
     165             :     -1, -1, -1, -1, -1, -1, -1,  1, -1, -1, -1,  2, -1,  3,  4,  5,
     166             :     -1, -1, -1, -1, -1, -1, -1,  6, -1, -1, -1,  7, -1,  8,  9, 10,
     167             :     -1, -1, -1, 11, -1, 12, 13, 14, -1, 15, 16, 17, 18, 19, 20, 21
     168             :   };
     169             : 
     170             :   const Int_t c1Lut[32] = {
     171             :     -2371, -2474, -2474, -2474, -2563, -2448, -2578, -2578,
     172             :     -2578, -2670, -2557, -2578, -2578, -2670, -2557, -2578,
     173             :     -2670, -2557, -2763, -2557, -2644, -2523,    -1,    -1,
     174             :     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1
     175             :   };
     176             : 
     177        4638 :   if (this->GetA() != 0) {
     178          15 :     Int_t layerMaskId = maskIdLut[this->GetLayerMask()];
     179          15 :     Int_t c1 = c1Lut[layerMaskId];
     180          15 :     Int_t c1Ext = c1 << 8;
     181          45 :     Int_t ptRawStage4 = c1Ext / ((this->GetA() >> 2) != 0 ? (this->GetA() >> 2) : 1 );
     182             :     Int_t ptRawComb4 = ptRawStage4;
     183          15 :     Int_t ptExtComb4 = (ptRawComb4 > 0) ? ptRawComb4 + 33 : ptRawComb4 - 30;
     184             : 
     185          15 :     return -ptExtComb4/2;
     186             :   }
     187             :   else
     188        2304 :     return 0;
     189        2319 : }
     190             : 
     191             : Int_t AliESDTrdTrack::Compare(const TObject* obj) const
     192             : {
     193           0 :   if (this == obj)
     194           0 :     return 0;
     195           0 :   else if (TMath::Abs(Pt()) < TMath::Abs(((AliESDTrdTrack*)(obj))->Pt()))
     196           0 :     return 1;
     197             :   else
     198           0 :     return -1;
     199           0 : }

Generated by: LCOV version 1.11