]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/global/AliHLTGlobalTrackMerger.h
cleaning up HLT defines
[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 AliESDEvent;
16 class AliESDVertex;
17 class AliESDtrack;
18 class AliExternalTrackParam;
19
20 class TClonesArray;
21 class TTreeStream;
22 class TTreeSRedirector;
23
24 #include "AliHLTLogging.h"
25
26 /** 
27  * @class AliHLTGlobalTrackMerger
28  * Global track merger for the barrel section.
29  *
30  * @ingroup alihlt_global
31  * @author Jacek.Otwinowski@gsi.de
32  */
33 class AliHLTGlobalTrackMerger : public AliHLTLogging {
34 public:
35   AliHLTGlobalTrackMerger();
36   /** destructor */
37   virtual ~AliHLTGlobalTrackMerger();
38
39   // set matching parameters
40   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);
41
42   // match tracks
43   Bool_t MatchTracks(AliExternalTrackParam *extTPC=0, const AliESDtrack *trackTRD=0);
44
45   // merge tracks
46   Bool_t Merge(AliESDEvent *esdEvent=0);
47   Bool_t MergeTracks(AliESDtrack *trackTPC=0, AliESDtrack *trackTRD=0, AliESDEvent *esdEvent=0);
48
49   // propagate tracks to DCA to primary vertex
50   void PropagateTracksToDCA(const AliESDEvent *esdEvent=0);
51
52   // Smooth track parameters 
53   // (origin Sergey Gorbunov)
54   /*
55   Bool_t SmoothTracks( Double_t T1[], Double_t C1[], Double_t Chi21, Int_t NDF1,
56                        Double_t T2[], Double_t C2[], Double_t Chi22, Int_t NDF2,
57                        Double_t T [], Double_t C [], Double_t &Chi2, Int_t &NDF,
58                        Int_t N );
59   */
60  
61   Bool_t SmoothTracks( const Double_t T1[], const Double_t C1[], Double_t Chi21, Int_t NDF1,
62                        const Double_t T2[], const Double_t C2[], Double_t Chi22, Int_t NDF2,
63                        Double_t T [], Double_t C [], Double_t &Chi2, Int_t &NDF,
64                        Int_t N );
65   Int_t IndexS(Int_t i, Int_t j) {
66      return ( j<=i ) ? i*(i+1)/2+j :j*(j+1)/2+i;
67   }
68   void MultSSQ( const Double_t *A, const Double_t *B, Double_t *C, Int_t N );
69   Bool_t InvertS( Double_t A[], Int_t N );  
70
71 private:
72
73   // TRD-TPC matching parameters
74   Double_t fMaxY;    //! max Y track (cm)
75   Double_t fMaxZ;    //! max Z track (cm)
76   Double_t fMaxSnp;  //! max local sine of the track momentum azimuthal angle
77   Double_t fMaxTgl;  //! max tangent of the track momentum dip angle
78   Double_t fMaxSigned1Pt; //! max 1/pt (1/(GeV/c)) 
79
80   // primary vertex
81   AliESDVertex *fVertex; //! event vertex (needed to propagate all tracks to DCA) 
82
83   TTreeSRedirector *fDebugStreamer; //!
84   
85   /** copy constructor prohibited */
86   AliHLTGlobalTrackMerger(const AliHLTGlobalTrackMerger&);
87   /** assignment operator prohibited */
88   AliHLTGlobalTrackMerger& operator=(const AliHLTGlobalTrackMerger&);
89
90   ClassDef(AliHLTGlobalTrackMerger,1) //Merging base class
91 };
92
93 #endif