]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/TPCLib/merger-ca/AliHLTTPCGMSliceTrack.h
- bugfix: correct initialization of the AliTPCcalibDB to avoid out of bounds messages...
[u/mrichter/AliRoot.git] / HLT / TPCLib / merger-ca / AliHLTTPCGMSliceTrack.h
CommitLineData
6d869045 1//-*- Mode: C++ -*-
2// ************************************************************************
3// This file is property of and copyright by the ALICE HLT Project *
4// ALICE Experiment at CERN, All rights reserved. *
5// See cxx source for full Copyright notice *
6// *
7//*************************************************************************
8
9
10#ifndef ALIHLTTPCGMSLICETRACK_H
11#define ALIHLTTPCGMSLICETRACK_H
12
13#include "TMath.h"
14#include "AliHLTTPCGMTrackParam.h"
15#include "AliHLTTPCCASliceOutTrack.h"
16
17/**
18 * @class AliHLTTPCGMSliceTrack
19 *
20 * The class describes TPC slice tracks used in AliHLTTPCGMMerger
21 */
22class AliHLTTPCGMSliceTrack
23{
24
25 public:
26
27 float Alpha() const { return fAlpha; }
28 int NClusters() const { return fNClusters; }
29 int PrevNeighbour() const { return fPrevNeighbour; }
30 int NextNeighbour() const { return fNextNeighbour; }
31 int SliceNeighbour() const { return fSliceNeighbour; }
32 int Used() const { return fUsed; }
33 const AliHLTTPCCASliceOutTrack* OrigTrack() const { return fOrigTrack; }
34 float X() const { return fX; }
35 float Y() const { return fY; }
36 float Z() const { return fZ; }
37 float SinPhi() const { return fSinPhi; }
38 float CosPhi() const { return fCosPhi; }
39 float SecPhi() const { return fSecPhi; }
40 float DzDs() const { return fDzDs; }
41 float QPt() const { return fQPt; }
42
43 void Set( const AliHLTTPCCASliceOutTrack *sliceTr, float alpha ){
44 const AliHLTTPCCABaseTrackParam &t = sliceTr->Param();
45 fOrigTrack = sliceTr;
46 fX = t.GetX();
47 fY = t.GetY();
48 fZ = t.GetZ();
49 fDzDs = t.GetDzDs();
50 fSinPhi = t.GetSinPhi();
51 fQPt = t.GetQPt();
52 fCosPhi = sqrt(1.f - fSinPhi*fSinPhi);
53 fSecPhi = 1.f / fCosPhi;
54 fAlpha = alpha;
55 fNClusters = sliceTr->NClusters();
56 }
57
58 void SetNClusters ( int v ) { fNClusters = v; }
59 void SetPrevNeighbour( int v ) { fPrevNeighbour = v; }
60 void SetNextNeighbour( int v ) { fNextNeighbour = v; }
61 void SetUsed( int v ) { fUsed = v; }
62 void SetSliceNeighbour( int v ) { fSliceNeighbour = v; }
63
64
65 void CopyParamFrom( const AliHLTTPCGMSliceTrack &t ){
66 fX=t.fX; fY=t.fY; fZ=t.fZ;
67 fSinPhi=t.fSinPhi; fDzDs=t.fDzDs; fQPt=t.fQPt; fCosPhi=t.fCosPhi, fSecPhi=t.fSecPhi;
68 fAlpha = t.fAlpha;
69 }
70
71 bool FilterErrors( AliHLTTPCCAParam &param, float maxSinPhi =.999 );
72
73 bool TransportToX( float x, float Bz, AliHLTTPCGMBorderTrack &b, float maxSinPhi ) const ;
74
75 bool TransportToXAlpha( float x, float sinAlpha, float cosAlpha, float Bz, AliHLTTPCGMBorderTrack &b, float maxSinPhi ) const ;
76
77 private:
78
79 const AliHLTTPCCASliceOutTrack *fOrigTrack; // pointer to original slice track
80 float fX, fY, fZ, fSinPhi, fDzDs, fQPt, fCosPhi, fSecPhi; // parameters
81 float fC0, fC2, fC3, fC5, fC7, fC9, fC10, fC12, fC14; // covariances
82 float fAlpha; // alpha angle
83 int fNClusters; // N clusters
84 int fPrevNeighbour; // neighbour in the previous slise
85 int fNextNeighbour; // neighbour in the next slise
86 int fSliceNeighbour; // next neighbour withing the same slice;
87 int fUsed; // is the slice track already merged
88
89};
90
91#endif