ROOT logo
// $Id$

//**************************************************************************
//* This file is property of and copyright by the ALICE HLT Project        * 
//* ALICE Experiment at CERN, All rights reserved.                         *
//*                                                                        *
//* Primary Authors: Matthias Richter <Matthias.Richter@ift.uib.no>        *
//*                  for The ALICE HLT Project.                            *
//*                                                                        *
//* Permission to use, copy, modify and distribute this software and its   *
//* documentation strictly for non-commercial purposes is hereby granted   *
//* without fee, provided that the above copyright notice appears in all   *
//* copies and that both the copyright notice and this permission notice   *
//* appear in the supporting documentation. The authors make no claims     *
//* about the suitability of this software for any purpose. It is          *
//* provided "as is" without express or implied warranty.                  *
//**************************************************************************

/// @file   AliHLTTrackGeometry.cxx
/// @author Matthias Richter
/// @date   2011-05-20
/// @brief  Desciption of a track by a sequence of track points
///

#include "AliHLTTrackGeometry.h"
#include "AliHLTSpacePointContainer.h"
#include "TObjArray.h"
#include "TMarker.h"
#include "TMath.h"
#include "TH2.h"
#include <memory>
#include <iostream>
#include <algorithm>

/** ROOT macro for the implementation of ROOT specific class methods */
ClassImp(AliHLTTrackGeometry)

AliHLTTrackGeometry::AliHLTTrackGeometry()
  : TObject(), AliHLTLogging()
  , fTrackPoints()
  , fSelectionMasks()
  , fTrackId(-1)
  , fVerbosity(0)
{
  /// standard constructor
}

AliHLTTrackGeometry::AliHLTTrackGeometry(const AliHLTTrackGeometry& src)
  : TObject(src), AliHLTLogging()
  , fTrackPoints(src.fTrackPoints)
  , fSelectionMasks(src.fSelectionMasks)
  , fTrackId(src.fTrackId)
  , fVerbosity(src.fVerbosity)
{
  /// copy constructor
}

AliHLTTrackGeometry& AliHLTTrackGeometry::operator=(const AliHLTTrackGeometry& src)
{
  /// assignment operator
  if (this!=&src) {
    fTrackPoints.assign(src.fTrackPoints.begin(), src.fTrackPoints.end());
    fSelectionMasks.assign(src.fSelectionMasks.begin(), src.fSelectionMasks.end());
    fTrackId=src.fTrackId;
    fVerbosity=src.fVerbosity;
  }
  return *this;
}

AliHLTTrackGeometry::~AliHLTTrackGeometry()
{
  /// destructor
}

int AliHLTTrackGeometry::AddTrackPoint(const AliHLTTrackPoint& point, AliHLTUInt32_t selectionMask)
{
  /// add a track point to the list
  vector<AliHLTTrackPoint>::const_iterator element = find(fTrackPoints.begin(), fTrackPoints.end(), point);
  if (element==fTrackPoints.end()) {
    fTrackPoints.push_back(point);
    if (std::find(fSelectionMasks.begin(), fSelectionMasks.end(), selectionMask)==fSelectionMasks.end()) {
      fSelectionMasks.push_back(selectionMask);
    }
  } else {
    HLTError("track point of id %08x already existing", point.GetId());
    return -EEXIST;
  }
  return 0;
}

void AliHLTTrackGeometry::Clear(Option_t * /*option*/)
{
  // internal cleanup
}

void AliHLTTrackGeometry::Print(Option_t *option) const
{
  // print info
  Print(cout, option);
}

void AliHLTTrackGeometry::Print(ostream& out, Option_t */*option*/) const
{
  // print to stream
  out << "AliHLTTrackGeometry::Print" << endl;
}

void AliHLTTrackGeometry::Draw(Option_t *option)
{
  /// Inherited from TObject, draw the track
  float scale=250;
  float center[2]={0.5,0.5};
  int markerColor=1;
  int markerSize=1;
  int verbosity=0;

  TString strOption(option);
  std::auto_ptr<TObjArray> tokens(strOption.Tokenize(" "));
  if (!tokens.get()) return;
  for (int i=0; i<tokens->GetEntriesFast(); i++) {
    if (!tokens->At(i)) continue;
    const char* key="";
    TString arg=tokens->At(i)->GetName();

    key="scale=";
    if (arg.BeginsWith(key)) {
      arg.ReplaceAll(key, "");
      scale=arg.Atof();
      continue;
    }
    key="centerx=";
    if (arg.BeginsWith(key)) {
      arg.ReplaceAll(key, "");
      center[0]=arg.Atof();
      continue;
    }
    key="centery=";
    if (arg.BeginsWith(key)) {
      arg.ReplaceAll(key, "");
      center[1]=arg.Atof();
      continue;
    }

    key="markercolor=";
    if (arg.BeginsWith(key)) {
      arg.ReplaceAll(key, "");
      markerColor=arg.Atoi();
      continue;
    }

    key="markersize=";
    if (arg.BeginsWith(key)) {
      arg.ReplaceAll(key, "");
      markerSize=arg.Atoi();
      continue;
    }

    key="verbosity=";
    if (arg.BeginsWith(key)) {
      arg.ReplaceAll(key, "");
      verbosity=arg.Atoi();
      continue;
    }
  }

  bool bFirstPoint=true;
  float firstalpha=0.0;
  for (vector<AliHLTTrackPoint>::const_iterator point=fTrackPoints.begin();
       point!=fTrackPoints.end(); 
       point++) {
    float alpha=GetPlaneAlpha(point->GetId());
    float r=GetPlaneR(point->GetId());
    float cosa=TMath::Cos(alpha);
    float sina=TMath::Sin(alpha);
    float x = r*sina + point->GetU()*cosa;
    float y =-r*cosa + point->GetU()*sina;
    if (verbosity>0) {
      HLTInfo("ID 0x%08x: x=% .4f y=% .4f alpha=% .4f", point->GetId(), r, point->GetU(), alpha);
    }
    int color=markerColor;
    if (bFirstPoint) {
      bFirstPoint=false;
      TMarker* m=new TMarker(x/(2*scale)+center[0], y/(2*scale)+center[1], 29);
      m->SetMarkerSize(2);
      m->SetMarkerColor(2);
      m->Draw("same");
      firstalpha=alpha;
    } else {
      color+=int(9*TMath::Abs(alpha-firstalpha)/TMath::Pi());
    }
    TMarker* m=new TMarker(x/(2*scale)+center[0], y/(2*scale)+center[1], point->GetV()>0?2:5);
    m->SetMarkerColor(color);
    m->SetMarkerSize(markerSize);
    m->Draw("same");
  }
}

int AliHLTTrackGeometry::SetAssociatedSpacePoint(UInt_t planeId, UInt_t spacepointId, int /*status*/, float dU, float dV)
{
  /// set the spacepoint associated with a track point
  vector<AliHLTTrackPoint>::iterator element = find(fTrackPoints.begin(), fTrackPoints.end(), planeId);
  if (element==fTrackPoints.end()) return -ENOENT;
  element->AddAssociatedSpacePoint(spacepointId, dU, dV);
  return 0;
}

int AliHLTTrackGeometry::GetAssociatedSpacePoint(UInt_t planeId, UInt_t& spacepointId) const
{
  /// get the spacepoint associated with a track point
  /// return status flag if found, -ENOENT if no associated spacepoint found
  vector<AliHLTTrackPoint>::const_iterator element = find(fTrackPoints.begin(), fTrackPoints.end(), planeId);
  if (element==fTrackPoints.end()) return -ENOENT;
  if (!element->HaveAssociatedSpacePoint()) return -ENODATA;
  spacepointId=(element->GetSpacepoints())[0].fId;
  return 0;
}

int AliHLTTrackGeometry::RegisterTrackPoints(AliHLTTrackGrid* /*pGrid*/) const
{
  /// default implementation, nothing to do
  return -ENOSYS;
}

int AliHLTTrackGeometry::FillTrackPoints(AliHLTTrackGrid* /*pGrid*/) const
{
  /// default implementation, nothing to do
  return -ENOSYS;
}

const AliHLTTrackGeometry::AliHLTTrackPoint* AliHLTTrackGeometry::GetTrackPoint(AliHLTUInt32_t id) const
{
  /// get const pointer to track point
  vector<AliHLTTrackPoint>::const_iterator element = find(fTrackPoints.begin(), fTrackPoints.end(), id);
  if (element==fTrackPoints.end()) return NULL;
  return &(*element);
}

AliHLTTrackGeometry::AliHLTTrackPoint* AliHLTTrackGeometry::GetTrackPoint(AliHLTUInt32_t id)
{
  /// get const pointer to track point
  vector<AliHLTTrackPoint>::iterator element = find(fTrackPoints.begin(), fTrackPoints.end(), id);
  if (element==fTrackPoints.end()) return NULL;
  return &(*element);
}

AliHLTSpacePointContainer* AliHLTTrackGeometry::ConvertToSpacePoints(bool /*bAssociated*/) const
{
  /// create a collection of all points
  HLTError("implementation of child method missing");
  return NULL;
}

int AliHLTTrackGeometry::AssociateSpacePoints(AliHLTSpacePointContainer& points)
{
  /// associate the track space points to the calculated track points
  vector<AliHLTUInt32_t> ids;
  points.GetClusterIDs(ids);
  if (ids.size()>0) return 0;
  int result=AssociateSpacePoints(&ids[0], ids.size(), points);
  if (result>0) {
    HLTInfo("associated %d of %d space point(s) to track points", result, ids.size());
  }
  return result;
}

int AliHLTTrackGeometry::AssociateSpacePoints(const AliHLTUInt32_t* trackpoints, AliHLTUInt32_t nofPoints, AliHLTSpacePointContainer& points)
{
  /// associate the track space points to the calculated track points
  if (nofPoints==0) return 0;
  if (trackpoints==NULL) return -EINVAL;
  int count=0;
  for (int i=nofPoints-1; i>=0; i--) {
    if (!points.Check(trackpoints[i])) {
      HLTWarning("can not find point id %08x", trackpoints[i]);
      continue;
    }
    float xyz[3]={points.GetX(trackpoints[i]), points.GetY(trackpoints[i]), points.GetZ(trackpoints[i])};
    AliHLTUInt32_t planeId=0;
    int result=FindMatchingTrackPoint(trackpoints[i], xyz, planeId);
    if (result<0) {
      if (GetVerbosity()>0) HLTWarning("no associated track point found for space point id %08x x=%f y=%f z=%f", trackpoints[i], xyz[0], xyz[1], xyz[2]);
      continue;
    } else if (result==0) {
      HLTWarning("associated track point for space pointid %08x x=%f y=%f z=%f occupied", trackpoints[i], xyz[0], xyz[1], xyz[2]);
      continue;
    }
    vector<AliHLTTrackPoint>::const_iterator element = find(fTrackPoints.begin(), fTrackPoints.end(), planeId);
    SetAssociatedSpacePoint(planeId, trackpoints[i], 1, xyz[1]-element->GetU(), xyz[2]-element->GetV());
    if (points.GetTrackID(trackpoints[i])<0 && GetTrackId()>=0) {
      points.SetTrackID(GetTrackId(), trackpoints[i]);
      HLTDebug("associating unused cluster %08x with track %d", trackpoints[i], GetTrackId());
    }
    count++;
  }
  return count;
}

int AliHLTTrackGeometry::AssociateUnusedSpacePoints(AliHLTSpacePointContainer& points)
{
  /// associate the track space points to the calculated track points
  int count=0;
  for (vector<AliHLTUInt32_t>::iterator mask=fSelectionMasks.begin();
       mask!=fSelectionMasks.end(); mask++) {
    int subcount=0;
    const vector<AliHLTUInt32_t>* selectedPoints=points.GetClusterIDs(*mask);
    if (!selectedPoints) {
      HLTWarning("space point collection does not contain data for mask 0x%08x", *mask);
      continue;
    }
    for (vector<AliHLTUInt32_t>::const_iterator id=selectedPoints->begin();
	 id!=selectedPoints->end(); id++) {
      if (points.GetTrackID(*id)>=0) continue;
      float xyz[3]={points.GetX(*id), points.GetY(*id), points.GetZ(*id)};
      AliHLTUInt32_t planeId=0;
      int result=FindMatchingTrackPoint(*id, xyz, planeId);
      if (result<0) {
	//HLTWarning("no associated track point found for space point id %08x x=%f y=%f z=%f", *id, xyz[0], xyz[1], xyz[2]);
	continue;
      } else if (result==0) {
	//HLTWarning("associated track point for space pointid %08x x=%f y=%f z=%f occupied", *id, xyz[0], xyz[1], xyz[2]);
	continue;
      }
      SetAssociatedSpacePoint(planeId, *id, 1);
      if (points.GetTrackID(*id)<0 && GetTrackId()>=0) {
	points.SetTrackID(GetTrackId(), *id);
	HLTDebug("associating unused cluster %08x with track %d", *id, GetTrackId());
      }
      subcount++;
    }
    if (fVerbosity>0) {
      HLTInfo("associated %d of %d spacepoint(s) from selection 0x%08x to track %d",
	      subcount, selectedPoints->size(), *mask, GetTrackId());
    }
    count+=subcount;
  }
  return count;
}

int AliHLTTrackGeometry::FillResidual(int coordinate, TH2* histo) const
{
  // fill residual histogram
  const vector<AliHLTTrackPoint>& trackPoints=TrackPoints();
  for (vector<AliHLTTrackPoint>::const_iterator trackpoint=trackPoints.begin();
       trackpoint!=trackPoints.end(); trackpoint++) {
    if (!trackpoint->HaveAssociatedSpacePoint()) continue;
    for (vector<AliHLTTrackSpacepoint>::const_iterator sp=(trackpoint->GetSpacepoints()).begin();
	 sp!=(trackpoint->GetSpacepoints()).end(); sp++) {
      histo->Fill(GetPlaneR(trackpoint->GetId()), sp->GetResidual(coordinate));
    }
  }
  return 0;
}

ostream& operator<<(ostream &out, const AliHLTTrackGeometry& p)
{
  p.Print(out);
  return out;
}
 AliHLTTrackGeometry.cxx:1
 AliHLTTrackGeometry.cxx:2
 AliHLTTrackGeometry.cxx:3
 AliHLTTrackGeometry.cxx:4
 AliHLTTrackGeometry.cxx:5
 AliHLTTrackGeometry.cxx:6
 AliHLTTrackGeometry.cxx:7
 AliHLTTrackGeometry.cxx:8
 AliHLTTrackGeometry.cxx:9
 AliHLTTrackGeometry.cxx:10
 AliHLTTrackGeometry.cxx:11
 AliHLTTrackGeometry.cxx:12
 AliHLTTrackGeometry.cxx:13
 AliHLTTrackGeometry.cxx:14
 AliHLTTrackGeometry.cxx:15
 AliHLTTrackGeometry.cxx:16
 AliHLTTrackGeometry.cxx:17
 AliHLTTrackGeometry.cxx:18
 AliHLTTrackGeometry.cxx:19
 AliHLTTrackGeometry.cxx:20
 AliHLTTrackGeometry.cxx:21
 AliHLTTrackGeometry.cxx:22
 AliHLTTrackGeometry.cxx:23
 AliHLTTrackGeometry.cxx:24
 AliHLTTrackGeometry.cxx:25
 AliHLTTrackGeometry.cxx:26
 AliHLTTrackGeometry.cxx:27
 AliHLTTrackGeometry.cxx:28
 AliHLTTrackGeometry.cxx:29
 AliHLTTrackGeometry.cxx:30
 AliHLTTrackGeometry.cxx:31
 AliHLTTrackGeometry.cxx:32
 AliHLTTrackGeometry.cxx:33
 AliHLTTrackGeometry.cxx:34
 AliHLTTrackGeometry.cxx:35
 AliHLTTrackGeometry.cxx:36
 AliHLTTrackGeometry.cxx:37
 AliHLTTrackGeometry.cxx:38
 AliHLTTrackGeometry.cxx:39
 AliHLTTrackGeometry.cxx:40
 AliHLTTrackGeometry.cxx:41
 AliHLTTrackGeometry.cxx:42
 AliHLTTrackGeometry.cxx:43
 AliHLTTrackGeometry.cxx:44
 AliHLTTrackGeometry.cxx:45
 AliHLTTrackGeometry.cxx:46
 AliHLTTrackGeometry.cxx:47
 AliHLTTrackGeometry.cxx:48
 AliHLTTrackGeometry.cxx:49
 AliHLTTrackGeometry.cxx:50
 AliHLTTrackGeometry.cxx:51
 AliHLTTrackGeometry.cxx:52
 AliHLTTrackGeometry.cxx:53
 AliHLTTrackGeometry.cxx:54
 AliHLTTrackGeometry.cxx:55
 AliHLTTrackGeometry.cxx:56
 AliHLTTrackGeometry.cxx:57
 AliHLTTrackGeometry.cxx:58
 AliHLTTrackGeometry.cxx:59
 AliHLTTrackGeometry.cxx:60
 AliHLTTrackGeometry.cxx:61
 AliHLTTrackGeometry.cxx:62
 AliHLTTrackGeometry.cxx:63
 AliHLTTrackGeometry.cxx:64
 AliHLTTrackGeometry.cxx:65
 AliHLTTrackGeometry.cxx:66
 AliHLTTrackGeometry.cxx:67
 AliHLTTrackGeometry.cxx:68
 AliHLTTrackGeometry.cxx:69
 AliHLTTrackGeometry.cxx:70
 AliHLTTrackGeometry.cxx:71
 AliHLTTrackGeometry.cxx:72
 AliHLTTrackGeometry.cxx:73
 AliHLTTrackGeometry.cxx:74
 AliHLTTrackGeometry.cxx:75
 AliHLTTrackGeometry.cxx:76
 AliHLTTrackGeometry.cxx:77
 AliHLTTrackGeometry.cxx:78
 AliHLTTrackGeometry.cxx:79
 AliHLTTrackGeometry.cxx:80
 AliHLTTrackGeometry.cxx:81
 AliHLTTrackGeometry.cxx:82
 AliHLTTrackGeometry.cxx:83
 AliHLTTrackGeometry.cxx:84
 AliHLTTrackGeometry.cxx:85
 AliHLTTrackGeometry.cxx:86
 AliHLTTrackGeometry.cxx:87
 AliHLTTrackGeometry.cxx:88
 AliHLTTrackGeometry.cxx:89
 AliHLTTrackGeometry.cxx:90
 AliHLTTrackGeometry.cxx:91
 AliHLTTrackGeometry.cxx:92
 AliHLTTrackGeometry.cxx:93
 AliHLTTrackGeometry.cxx:94
 AliHLTTrackGeometry.cxx:95
 AliHLTTrackGeometry.cxx:96
 AliHLTTrackGeometry.cxx:97
 AliHLTTrackGeometry.cxx:98
 AliHLTTrackGeometry.cxx:99
 AliHLTTrackGeometry.cxx:100
 AliHLTTrackGeometry.cxx:101
 AliHLTTrackGeometry.cxx:102
 AliHLTTrackGeometry.cxx:103
 AliHLTTrackGeometry.cxx:104
 AliHLTTrackGeometry.cxx:105
 AliHLTTrackGeometry.cxx:106
 AliHLTTrackGeometry.cxx:107
 AliHLTTrackGeometry.cxx:108
 AliHLTTrackGeometry.cxx:109
 AliHLTTrackGeometry.cxx:110
 AliHLTTrackGeometry.cxx:111
 AliHLTTrackGeometry.cxx:112
 AliHLTTrackGeometry.cxx:113
 AliHLTTrackGeometry.cxx:114
 AliHLTTrackGeometry.cxx:115
 AliHLTTrackGeometry.cxx:116
 AliHLTTrackGeometry.cxx:117
 AliHLTTrackGeometry.cxx:118
 AliHLTTrackGeometry.cxx:119
 AliHLTTrackGeometry.cxx:120
 AliHLTTrackGeometry.cxx:121
 AliHLTTrackGeometry.cxx:122
 AliHLTTrackGeometry.cxx:123
 AliHLTTrackGeometry.cxx:124
 AliHLTTrackGeometry.cxx:125
 AliHLTTrackGeometry.cxx:126
 AliHLTTrackGeometry.cxx:127
 AliHLTTrackGeometry.cxx:128
 AliHLTTrackGeometry.cxx:129
 AliHLTTrackGeometry.cxx:130
 AliHLTTrackGeometry.cxx:131
 AliHLTTrackGeometry.cxx:132
 AliHLTTrackGeometry.cxx:133
 AliHLTTrackGeometry.cxx:134
 AliHLTTrackGeometry.cxx:135
 AliHLTTrackGeometry.cxx:136
 AliHLTTrackGeometry.cxx:137
 AliHLTTrackGeometry.cxx:138
 AliHLTTrackGeometry.cxx:139
 AliHLTTrackGeometry.cxx:140
 AliHLTTrackGeometry.cxx:141
 AliHLTTrackGeometry.cxx:142
 AliHLTTrackGeometry.cxx:143
 AliHLTTrackGeometry.cxx:144
 AliHLTTrackGeometry.cxx:145
 AliHLTTrackGeometry.cxx:146
 AliHLTTrackGeometry.cxx:147
 AliHLTTrackGeometry.cxx:148
 AliHLTTrackGeometry.cxx:149
 AliHLTTrackGeometry.cxx:150
 AliHLTTrackGeometry.cxx:151
 AliHLTTrackGeometry.cxx:152
 AliHLTTrackGeometry.cxx:153
 AliHLTTrackGeometry.cxx:154
 AliHLTTrackGeometry.cxx:155
 AliHLTTrackGeometry.cxx:156
 AliHLTTrackGeometry.cxx:157
 AliHLTTrackGeometry.cxx:158
 AliHLTTrackGeometry.cxx:159
 AliHLTTrackGeometry.cxx:160
 AliHLTTrackGeometry.cxx:161
 AliHLTTrackGeometry.cxx:162
 AliHLTTrackGeometry.cxx:163
 AliHLTTrackGeometry.cxx:164
 AliHLTTrackGeometry.cxx:165
 AliHLTTrackGeometry.cxx:166
 AliHLTTrackGeometry.cxx:167
 AliHLTTrackGeometry.cxx:168
 AliHLTTrackGeometry.cxx:169
 AliHLTTrackGeometry.cxx:170
 AliHLTTrackGeometry.cxx:171
 AliHLTTrackGeometry.cxx:172
 AliHLTTrackGeometry.cxx:173
 AliHLTTrackGeometry.cxx:174
 AliHLTTrackGeometry.cxx:175
 AliHLTTrackGeometry.cxx:176
 AliHLTTrackGeometry.cxx:177
 AliHLTTrackGeometry.cxx:178
 AliHLTTrackGeometry.cxx:179
 AliHLTTrackGeometry.cxx:180
 AliHLTTrackGeometry.cxx:181
 AliHLTTrackGeometry.cxx:182
 AliHLTTrackGeometry.cxx:183
 AliHLTTrackGeometry.cxx:184
 AliHLTTrackGeometry.cxx:185
 AliHLTTrackGeometry.cxx:186
 AliHLTTrackGeometry.cxx:187
 AliHLTTrackGeometry.cxx:188
 AliHLTTrackGeometry.cxx:189
 AliHLTTrackGeometry.cxx:190
 AliHLTTrackGeometry.cxx:191
 AliHLTTrackGeometry.cxx:192
 AliHLTTrackGeometry.cxx:193
 AliHLTTrackGeometry.cxx:194
 AliHLTTrackGeometry.cxx:195
 AliHLTTrackGeometry.cxx:196
 AliHLTTrackGeometry.cxx:197
 AliHLTTrackGeometry.cxx:198
 AliHLTTrackGeometry.cxx:199
 AliHLTTrackGeometry.cxx:200
 AliHLTTrackGeometry.cxx:201
 AliHLTTrackGeometry.cxx:202
 AliHLTTrackGeometry.cxx:203
 AliHLTTrackGeometry.cxx:204
 AliHLTTrackGeometry.cxx:205
 AliHLTTrackGeometry.cxx:206
 AliHLTTrackGeometry.cxx:207
 AliHLTTrackGeometry.cxx:208
 AliHLTTrackGeometry.cxx:209
 AliHLTTrackGeometry.cxx:210
 AliHLTTrackGeometry.cxx:211
 AliHLTTrackGeometry.cxx:212
 AliHLTTrackGeometry.cxx:213
 AliHLTTrackGeometry.cxx:214
 AliHLTTrackGeometry.cxx:215
 AliHLTTrackGeometry.cxx:216
 AliHLTTrackGeometry.cxx:217
 AliHLTTrackGeometry.cxx:218
 AliHLTTrackGeometry.cxx:219
 AliHLTTrackGeometry.cxx:220
 AliHLTTrackGeometry.cxx:221
 AliHLTTrackGeometry.cxx:222
 AliHLTTrackGeometry.cxx:223
 AliHLTTrackGeometry.cxx:224
 AliHLTTrackGeometry.cxx:225
 AliHLTTrackGeometry.cxx:226
 AliHLTTrackGeometry.cxx:227
 AliHLTTrackGeometry.cxx:228
 AliHLTTrackGeometry.cxx:229
 AliHLTTrackGeometry.cxx:230
 AliHLTTrackGeometry.cxx:231
 AliHLTTrackGeometry.cxx:232
 AliHLTTrackGeometry.cxx:233
 AliHLTTrackGeometry.cxx:234
 AliHLTTrackGeometry.cxx:235
 AliHLTTrackGeometry.cxx:236
 AliHLTTrackGeometry.cxx:237
 AliHLTTrackGeometry.cxx:238
 AliHLTTrackGeometry.cxx:239
 AliHLTTrackGeometry.cxx:240
 AliHLTTrackGeometry.cxx:241
 AliHLTTrackGeometry.cxx:242
 AliHLTTrackGeometry.cxx:243
 AliHLTTrackGeometry.cxx:244
 AliHLTTrackGeometry.cxx:245
 AliHLTTrackGeometry.cxx:246
 AliHLTTrackGeometry.cxx:247
 AliHLTTrackGeometry.cxx:248
 AliHLTTrackGeometry.cxx:249
 AliHLTTrackGeometry.cxx:250
 AliHLTTrackGeometry.cxx:251
 AliHLTTrackGeometry.cxx:252
 AliHLTTrackGeometry.cxx:253
 AliHLTTrackGeometry.cxx:254
 AliHLTTrackGeometry.cxx:255
 AliHLTTrackGeometry.cxx:256
 AliHLTTrackGeometry.cxx:257
 AliHLTTrackGeometry.cxx:258
 AliHLTTrackGeometry.cxx:259
 AliHLTTrackGeometry.cxx:260
 AliHLTTrackGeometry.cxx:261
 AliHLTTrackGeometry.cxx:262
 AliHLTTrackGeometry.cxx:263
 AliHLTTrackGeometry.cxx:264
 AliHLTTrackGeometry.cxx:265
 AliHLTTrackGeometry.cxx:266
 AliHLTTrackGeometry.cxx:267
 AliHLTTrackGeometry.cxx:268
 AliHLTTrackGeometry.cxx:269
 AliHLTTrackGeometry.cxx:270
 AliHLTTrackGeometry.cxx:271
 AliHLTTrackGeometry.cxx:272
 AliHLTTrackGeometry.cxx:273
 AliHLTTrackGeometry.cxx:274
 AliHLTTrackGeometry.cxx:275
 AliHLTTrackGeometry.cxx:276
 AliHLTTrackGeometry.cxx:277
 AliHLTTrackGeometry.cxx:278
 AliHLTTrackGeometry.cxx:279
 AliHLTTrackGeometry.cxx:280
 AliHLTTrackGeometry.cxx:281
 AliHLTTrackGeometry.cxx:282
 AliHLTTrackGeometry.cxx:283
 AliHLTTrackGeometry.cxx:284
 AliHLTTrackGeometry.cxx:285
 AliHLTTrackGeometry.cxx:286
 AliHLTTrackGeometry.cxx:287
 AliHLTTrackGeometry.cxx:288
 AliHLTTrackGeometry.cxx:289
 AliHLTTrackGeometry.cxx:290
 AliHLTTrackGeometry.cxx:291
 AliHLTTrackGeometry.cxx:292
 AliHLTTrackGeometry.cxx:293
 AliHLTTrackGeometry.cxx:294
 AliHLTTrackGeometry.cxx:295
 AliHLTTrackGeometry.cxx:296
 AliHLTTrackGeometry.cxx:297
 AliHLTTrackGeometry.cxx:298
 AliHLTTrackGeometry.cxx:299
 AliHLTTrackGeometry.cxx:300
 AliHLTTrackGeometry.cxx:301
 AliHLTTrackGeometry.cxx:302
 AliHLTTrackGeometry.cxx:303
 AliHLTTrackGeometry.cxx:304
 AliHLTTrackGeometry.cxx:305
 AliHLTTrackGeometry.cxx:306
 AliHLTTrackGeometry.cxx:307
 AliHLTTrackGeometry.cxx:308
 AliHLTTrackGeometry.cxx:309
 AliHLTTrackGeometry.cxx:310
 AliHLTTrackGeometry.cxx:311
 AliHLTTrackGeometry.cxx:312
 AliHLTTrackGeometry.cxx:313
 AliHLTTrackGeometry.cxx:314
 AliHLTTrackGeometry.cxx:315
 AliHLTTrackGeometry.cxx:316
 AliHLTTrackGeometry.cxx:317
 AliHLTTrackGeometry.cxx:318
 AliHLTTrackGeometry.cxx:319
 AliHLTTrackGeometry.cxx:320
 AliHLTTrackGeometry.cxx:321
 AliHLTTrackGeometry.cxx:322
 AliHLTTrackGeometry.cxx:323
 AliHLTTrackGeometry.cxx:324
 AliHLTTrackGeometry.cxx:325
 AliHLTTrackGeometry.cxx:326
 AliHLTTrackGeometry.cxx:327
 AliHLTTrackGeometry.cxx:328
 AliHLTTrackGeometry.cxx:329
 AliHLTTrackGeometry.cxx:330
 AliHLTTrackGeometry.cxx:331
 AliHLTTrackGeometry.cxx:332
 AliHLTTrackGeometry.cxx:333
 AliHLTTrackGeometry.cxx:334
 AliHLTTrackGeometry.cxx:335
 AliHLTTrackGeometry.cxx:336
 AliHLTTrackGeometry.cxx:337
 AliHLTTrackGeometry.cxx:338
 AliHLTTrackGeometry.cxx:339
 AliHLTTrackGeometry.cxx:340
 AliHLTTrackGeometry.cxx:341
 AliHLTTrackGeometry.cxx:342
 AliHLTTrackGeometry.cxx:343
 AliHLTTrackGeometry.cxx:344
 AliHLTTrackGeometry.cxx:345
 AliHLTTrackGeometry.cxx:346
 AliHLTTrackGeometry.cxx:347
 AliHLTTrackGeometry.cxx:348
 AliHLTTrackGeometry.cxx:349
 AliHLTTrackGeometry.cxx:350
 AliHLTTrackGeometry.cxx:351
 AliHLTTrackGeometry.cxx:352
 AliHLTTrackGeometry.cxx:353
 AliHLTTrackGeometry.cxx:354
 AliHLTTrackGeometry.cxx:355
 AliHLTTrackGeometry.cxx:356
 AliHLTTrackGeometry.cxx:357
 AliHLTTrackGeometry.cxx:358