]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TPCLib/AliHLTTPCMerger.h
Storing result of DCS data point processing in reference data
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCMerger.h
1 // @(#) $Id$
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                               */
7
8 /** @file   AliHLTTPCMerger.h
9     @author Uli Frankenfeld, maintained by Matthias Richter
10     @date   
11     @brief  The HLT TPC merger base class
12 */
13
14 //#define PI 3.14159265358979312
15
16 #include "AliHLTTPCRootTypes.h"
17
18 class AliHLTTPCTrack;
19 class AliHLTTPCTrackSegmentData;
20 class AliHLTTPCVertex;
21 class AliHLTTPCTrackArray;
22
23 /** 
24  * @class AliHLTTPCMerger
25  * The HLTTPC merger base class
26 */
27 class AliHLTTPCMerger {
28  public:
29   AliHLTTPCMerger();
30   /** not a valid copy constructor, defined according to effective C++ style */
31   AliHLTTPCMerger(const AliHLTTPCMerger&);
32   /** not a valid assignment op, but defined according to effective C++ style */
33   AliHLTTPCMerger& operator=(const AliHLTTPCMerger&);
34   /** destructor */
35   virtual ~AliHLTTPCMerger();
36
37   Int_t GetNIn() const {return fNIn;}
38   AliHLTTPCTrackArray *GetInTracks(Int_t in){return fInTrack[in];}
39   AliHLTTPCTrackArray *GetOutTracks(){return fOutTrack;}
40
41   Bool_t Is2Global() const {return f2Global;}
42   void SetVertex(AliHLTTPCVertex *vertex){fVertex=vertex;}
43   void Reset();
44   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);
45   void FillTracks(Int_t ntracks, AliHLTTPCTrackSegmentData* tr); //Fill tracks in fTrackArray[fCurrentTracks] 
46   Double_t GetAngle(Double_t a1,Double_t a2);
47   void* GetNtuple() const;
48   void* GetNtuple(char *varlist) const;
49   Bool_t WriteNtuple(char *filename,void* nt) const;
50   void FillNtuple(void* nt,Float_t *data) const ;
51   void FillNtuple(void* nt,AliHLTTPCTrack *innertrack,AliHLTTPCTrack *outertrack);
52   void AddAllTracks();//Copy all Tracks to Output Array
53   void SortGlobalTracks(AliHLTTPCTrack **tracks, Int_t ntrack);
54   virtual void SortTracks(AliHLTTPCTrack **tracks, Int_t ntrack) const;
55   virtual void AddTrack(AliHLTTPCTrackArray *mergedtrack,AliHLTTPCTrack *track);
56   virtual AliHLTTPCTrack * MultiMerge(AliHLTTPCTrackArray *mergedtrack,AliHLTTPCTrack **tracks, Int_t ntrack);
57   AliHLTTPCTrack * MergeTracks(AliHLTTPCTrackArray *mergedtrack,AliHLTTPCTrack *t0,AliHLTTPCTrack *t1);
58   virtual Bool_t IsTrack(AliHLTTPCTrack *innertrack,AliHLTTPCTrack *outertrack);
59   Bool_t IsRTrack(AliHLTTPCTrack *innertrack,AliHLTTPCTrack *outertrack);
60   Double_t TrackDiff(AliHLTTPCTrack *innertrack,AliHLTTPCTrack *outertrack);
61   void Print();
62   void PrintDiff(AliHLTTPCTrack *innertrack,AliHLTTPCTrack *outertrack);
63   void PrintTrack(AliHLTTPCTrack *track);
64   
65  protected:
66   Int_t fCurrentTracks; //current number
67   Int_t fSlice;         //slice
68   AliHLTTPCVertex *fVertex; //!
69   Bool_t f2Global; //global
70   Bool_t Is2Global(Bool_t is){f2Global=is;return f2Global;}
71   void InitMerger(Int_t ntrackarrays,Char_t *tracktype="AliHLTTPCTrack");
72   
73  private:
74   void SetArray(Int_t nin);
75   void DeleteArray();
76
77   Double_t fMaxY;    //maxy
78   Double_t fMaxZ;    //maxz
79   Double_t fMaxKappa;//maxkappa
80   Double_t fMaxPsi;  //maxpsi
81   Double_t fMaxTgl;  //maxtgl
82   Char_t fTrackType; //track type to merge
83   
84   AliHLTTPCTrackArray **fInTrack;//!
85   Int_t fNIn; //ntracks
86
87   AliHLTTPCTrackArray *fOutTrack;//!
88
89   ClassDef(AliHLTTPCMerger,1) //Merging base class
90 };
91
92 #endif