//-*- Mode: C++ -*- //* This file is property of and copyright by the ALICE HLT Project * //* ALICE Experiment at CERN, All rights reserved. * //* See cxx source for full Copyright notice * #ifndef ALIHLTTPCCATRACKLETCONSTRUCTOR_H #define ALIHLTTPCCATRACKLETCONSTRUCTOR_H #include "AliHLTTPCCADef.h" #include class AliHLTTPCCASliceData; class AliHLTTPCCAParamArBB; #include "AliHLTTPCCAParamArBB.h" /** * @class AliHLTTPCCATrackletConstructor * */ class AliHLTTPCCATrackletConstructor { public: inline AliHLTTPCCATrackletConstructor( nested_my& rows_ArBB, const dense& rowsX, const AliHLTTPCCAParamArBB& sliceParam, const AliHLTTPCCAStartHitId_ArBB::TDense<1>& startHits_ArBB, AliHLTTPCCATrackletVector_ArBB& trackletVectors_ArBB ) : fRows_ArBB(rows_ArBB), fRowsX(rowsX), fSliceParam( sliceParam ), fStartHits_ArBB(startHits_ArBB), fTrackletVectors_ArBB(trackletVectors_ArBB) {} void run(); struct TrackMemory; struct TrackMemory_ArBB; private: // for use ArBB nested_my& fRows_ArBB; const dense& fRowsX; const AliHLTTPCCAParamArBB& fSliceParam; const AliHLTTPCCAStartHitId_ArBB::TDense<1>& fStartHits_ArBB; AliHLTTPCCATrackletVector_ArBB& fTrackletVectors_ArBB; static void FitTracklet_ArBB( TrackMemory_ArBB &r, const TRowI2_ArBB rowIndex, AliHLTTPCCARowHit::TDense<1>& row, const f32 rowX, const AliHLTTPCCAParamArBB& sliceParam, AliHLTTPCCATrackletVector_ArBB& trackletVector ); static void run_ArBB( nested_my& rows_ArBB, const dense& rowsX, const AliHLTTPCCAParamArBB& sliceParam, const AliHLTTPCCAStartHitId_ArBB::TDense<1>& startHits, AliHLTTPCCATrackletVector_ArBB& trackletVector ); // end for use ArBB // add one hit from chain to track void FitTracklet( TrackMemory &r, const int rowIndex, const ushort_v trackIndex, TrackletVector &trackletVector ); // find nearest hit on row and set it as currentHit (see TrackMemory) void FindNextHit( TrackMemory &r, const AliHLTTPCCARow &row, sfloat_v::Memory &dy_best, sfloat_v::Memory &dz_best, short_m &active); // extrapolate on row and try to find hit belonged to track short_m ExtrapolateTracklet( TrackMemory &r, const int rowIndex, const ushort_v trackIndex, TrackletVector &trackletVector, const bool dir, const short_m &mask ); // performs both: fitTraclet & Extrapolation short_m ExtendTracklet( TrackMemory &r, const int rowIndex, const ushort_v trackIndex, TrackletVector &trackletVector, const bool dir, const short_m &mask ); }; #endif