2 // Original: AliHLTMerger.h,v 1.8 2004/06/11 16:06:33 loizides
3 #ifndef ALIHLTTPCMERGER_H
4 #define ALIHLTTPCMERGER_H
5 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
6 * See cxx source for full Copyright notice */
8 /** @file AliHLTTPCMerger.h
9 @author Uli Frankenfeld, maintained by Matthias Richter
11 @brief The HLT TPC merger base class
14 //#define PI 3.14159265358979312
16 #include "AliHLTTPCRootTypes.h"
19 class AliHLTTPCTrackSegmentData;
20 class AliHLTTPCVertex;
21 class AliHLTTPCTrackArray;
24 * @class AliHLTTPCMerger
25 * The HLTTPC merger base class
27 class AliHLTTPCMerger {
31 virtual ~AliHLTTPCMerger();
33 Int_t GetNIn() const {return fNIn;}
34 AliHLTTPCTrackArray *GetInTracks(Int_t in){return fInTrack[in];}
35 AliHLTTPCTrackArray *GetOutTracks(){return fOutTrack;}
37 Bool_t Is2Global() const {return f2Global;}
38 void SetVertex(AliHLTTPCVertex *vertex){fVertex=vertex;}
40 void SetParameter(Double_t maxy=1., Double_t maxz=1., Double_t maxkappa=0.001, Double_t maxpsi=0.05, Double_t maxtgl=0.1);
41 void FillTracks(Int_t ntracks, AliHLTTPCTrackSegmentData* tr); //Fill tracks in fTrackArray[fCurrentTracks]
42 Double_t GetAngle(Double_t a1,Double_t a2);
43 void* GetNtuple() const;
44 void* GetNtuple(char *varlist) const;
45 Bool_t WriteNtuple(char *filename,void* nt) const;
46 void FillNtuple(void* nt,Float_t *data) const ;
47 void FillNtuple(void* nt,AliHLTTPCTrack *innertrack,AliHLTTPCTrack *outertrack);
48 void AddAllTracks();//Copy all Tracks to Output Array
49 void SortGlobalTracks(AliHLTTPCTrack **tracks, Int_t ntrack);
50 virtual void SortTracks(AliHLTTPCTrack **tracks, Int_t ntrack) const;
51 virtual void AddTrack(AliHLTTPCTrackArray *mergedtrack,AliHLTTPCTrack *track);
52 virtual AliHLTTPCTrack * MultiMerge(AliHLTTPCTrackArray *mergedtrack,AliHLTTPCTrack **tracks, Int_t ntrack);
53 AliHLTTPCTrack * MergeTracks(AliHLTTPCTrackArray *mergedtrack,AliHLTTPCTrack *t0,AliHLTTPCTrack *t1);
54 virtual Bool_t IsTrack(AliHLTTPCTrack *innertrack,AliHLTTPCTrack *outertrack);
55 Bool_t IsRTrack(AliHLTTPCTrack *innertrack,AliHLTTPCTrack *outertrack);
56 Double_t TrackDiff(AliHLTTPCTrack *innertrack,AliHLTTPCTrack *outertrack);
58 void PrintDiff(AliHLTTPCTrack *innertrack,AliHLTTPCTrack *outertrack);
59 void PrintTrack(AliHLTTPCTrack *track);
62 Int_t fCurrentTracks; //current number
64 AliHLTTPCVertex *fVertex; //!
65 Bool_t f2Global; //global
66 Bool_t Is2Global(Bool_t is){f2Global=is;return f2Global;}
67 void InitMerger(Int_t ntrackarrays,Char_t *tracktype="AliHLTTPCTrack");
70 /** copy constructor prohibited */
71 AliHLTTPCMerger(const AliHLTTPCMerger&);
72 /** assignment operator prohibited */
73 AliHLTTPCMerger& operator=(const AliHLTTPCMerger&);
75 void SetArray(Int_t nin);
78 Double_t fMaxY; //maxy
79 Double_t fMaxZ; //maxz
80 Double_t fMaxKappa;//maxkappa
81 Double_t fMaxPsi; //maxpsi
82 Double_t fMaxTgl; //maxtgl
83 Char_t fTrackType; //track type to merge
85 AliHLTTPCTrackArray **fInTrack;//!
88 AliHLTTPCTrackArray *fOutTrack;//!
90 ClassDef(AliHLTTPCMerger,1) //Merging base class