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 *
7 //*************************************************************************
9 #ifndef ALIHLTTPCCAMERGER_H
10 #define ALIHLTTPCCAMERGER_H
12 #include "AliHLTTPCCADef.h"
13 #include "AliHLTTPCCAParam.h"
14 #include "AliHLTTPCCATrackParam.h"
16 #if !defined(HLTCA_GPUCODE)
20 class AliHLTTPCCASliceTrack;
21 class AliHLTTPCCASliceOutput;
22 class AliHLTTPCCAMergedTrack;
23 class AliHLTTPCCAMergerOutput;
26 * @class AliHLTTPCCAMerger
29 class AliHLTTPCCAMerger
37 void SetSliceParam( const AliHLTTPCCAParam &v ){ fSliceParam = v; }
40 void SetSliceData( int index, const AliHLTTPCCASliceOutput *SliceData );
43 const AliHLTTPCCAMergerOutput * Output() const { return fOutput; }
45 Bool_t FitTrack( AliHLTTPCCATrackParam &T, Float_t &Alpha,
46 AliHLTTPCCATrackParam t0, Float_t Alpha0, Int_t hits[], Int_t &NHits, Bool_t dir=0 );
50 AliHLTTPCCAMerger(const AliHLTTPCCAMerger&);
51 const AliHLTTPCCAMerger &operator=(const AliHLTTPCCAMerger&) const;
53 class AliHLTTPCCAClusterInfo;
54 class AliHLTTPCCASliceTrackInfo;
55 class AliHLTTPCCABorderTrack;
57 void MakeBorderTracks( Int_t iSlice, Int_t iBorder, AliHLTTPCCABorderTrack B[], Int_t &nB);
58 void SplitBorderTracks( Int_t iSlice1, AliHLTTPCCABorderTrack B1[], Int_t N1,
59 Int_t iSlice2, AliHLTTPCCABorderTrack B2[], Int_t N2 );
61 static Float_t GetChi2( Float_t x1, Float_t y1, Float_t a00, Float_t a10, Float_t a11,
62 Float_t x2, Float_t y2, Float_t b00, Float_t b10, Float_t b11 );
69 static const Int_t fgkNSlices = 36; //* N slices
70 AliHLTTPCCAParam fSliceParam; //* slice parameters (geometry, calibr, etc.)
71 const AliHLTTPCCASliceOutput *fkSlices[fgkNSlices]; //* array of input slice tracks
72 AliHLTTPCCAMergerOutput *fOutput; //* array of output merged tracks
73 AliHLTTPCCASliceTrackInfo *fTrackInfos; //* additional information for slice tracks
74 Int_t fMaxTrackInfos; //* booked size of fTrackInfos array
75 AliHLTTPCCAClusterInfo *fClusterInfos; //* information about track clusters
76 Int_t fMaxClusterInfos; //* booked size of fClusterInfos array
77 Int_t fSliceTrackInfoStart[fgkNSlices]; //* slice starting index in fTrackInfos array;
78 Int_t fSliceNTrackInfos[fgkNSlices]; //* N of slice track infos in fTrackInfos array;