Renaming the second argument of MatchTracks
[u/mrichter/AliRoot.git] / HLT / global / AliHLTGlobalTrackMerger.h
1 // $Id$
2 #ifndef ALIHLTGLOBALTRACKMERGER_H
3 #define ALIHLTGLOBALTRACKMERGER_H
4 //* This file is property of and copyright by the ALICE HLT Project        * 
5 //* ALICE Experiment at CERN, All rights reserved.                         *
6 //* See cxx source for full Copyright notice                               *
7
8 /** @file   AliHLTGlobalTrackMerger.h
9     @author Jacek Otwinowski (Jacek.Otwinowski@gsi.de)
10     @date   
11     @brief  The HLT TPC merger base class
12 */
13
14
15 class AliHLTTPCTrack;
16 class AliHLTTPCTrackSegmentData;
17 class AliHLTTPCVertex;
18 class AliHLTTPCTrackArray;
19 class AliTRDtrackV1;
20 class AliESDEvent;
21 class AliESDVertex;
22 class AliExternalTrackParam;
23
24 class TClonesArray;
25
26 #include "AliHLTLogging.h"
27 #include "AliESDtrack.h"
28
29 /** 
30  * @class AliHLTGlobalTrackMerger
31  * Global track merger for the barrel section.
32  *
33  * @ingroup alihlt_global
34  * @author Jacek.Otwinowski@gsi.de
35  */
36 class AliHLTGlobalTrackMerger : public AliHLTLogging {
37 public:
38   AliHLTGlobalTrackMerger();
39   /** destructor */
40   virtual ~AliHLTGlobalTrackMerger();
41
42   // load tracks
43   Bool_t LoadTracks(TClonesArray *aTRDTracks,AliESDEvent *esdEvent=0);
44   Bool_t LoadTracks(AliHLTTPCTrackArray *aTPCTracks,AliESDEvent *esdEvent=0);
45
46   // set matching parameters
47   void SetParameter(Double_t maxy=1., Double_t maxz=1., Double_t maxsnp=0.05, Double_t maxtgl=0.1, Double_t signed1Pt=0.001);
48
49   // match tracks
50   Bool_t MatchTracks(AliESDtrack *extTPC=0, AliESDtrack *extTRD=0);
51
52   // merge tracks
53   Bool_t Merge(AliESDEvent *esdEvent=0);
54   Bool_t MergeTracks(AliESDtrack *extTPC=0, AliESDtrack *extTRD=0, AliESDEvent *esdEvent=0);
55
56   // create AliESDtrack objects
57   void FillTPCESD(AliHLTTPCTrack* tpcTrack=0, ULong_t flags=AliESDtrack::kTPCin, AliESDEvent* esdEvent=0); 
58   void FillTRDESD(AliTRDtrackV1*  trdTrack=0, ULong_t flags=AliESDtrack::kTRDin, AliESDEvent* esdEvent=0);
59
60   // propagate tracks to DCA to primary vertex
61   void PropagateTracksToDCA(AliESDEvent *esdEvent=0);
62
63   // Smooth track parameters 
64   // (origin Sergey Gorbunov)
65   /*
66   Bool_t SmoothTracks( Double_t T1[], Double_t C1[], Double_t Chi21, Int_t NDF1,
67                        Double_t T2[], Double_t C2[], Double_t Chi22, Int_t NDF2,
68                        Double_t T [], Double_t C [], Double_t &Chi2, Int_t &NDF,
69                        Int_t N );
70   */
71  
72   Bool_t SmoothTracks( const Double_t T1[], const Double_t C1[], Double_t Chi21, Int_t NDF1,
73                        const Double_t T2[], const Double_t C2[], Double_t Chi22, Int_t NDF2,
74                        Double_t T [], Double_t C [], Double_t &Chi2, Int_t &NDF,
75                        Int_t N );
76   Int_t IndexS(Int_t i, Int_t j) {
77      return ( j<=i ) ? i*(i+1)/2+j :j*(j+1)/2+i;
78   }
79   void MultSSQ( const Double_t *A, const Double_t *B, Double_t *C, Int_t N );
80   Bool_t InvertS( Double_t A[], Int_t N );  
81
82 private:
83
84   // TRD-TPC matching parameters
85   Double_t fMaxY;    //! max Y track (cm)
86   Double_t fMaxZ;    //! max Z track (cm)
87   Double_t fMaxSnp;  //! max local sine of the track momentum azimuthal angle
88   Double_t fMaxTgl;  //! max tangent of the track momentum dip angle
89   Double_t fMaxSigned1Pt; //! max 1/pt (1/(GeV/c)) 
90
91   // primary vertex
92   AliESDVertex *fVertex; //! event vertex (needed to propagate all tracks to DCA) 
93   
94   /** copy constructor prohibited */
95   AliHLTGlobalTrackMerger(const AliHLTGlobalTrackMerger&);
96   /** assignment operator prohibited */
97   AliHLTGlobalTrackMerger& operator=(const AliHLTGlobalTrackMerger&);
98
99   ClassDef(AliHLTGlobalTrackMerger,1) //Merging base class
100 };
101
102 #endif