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 *
8 // @file AliHLTGlobalTrackMerger.h
9 // @author Jacek Otwinowski (Jacek.Otwinowski@gsi.de)
11 // @brief The HLT TPC merger base class
18 class AliExternalTrackParam;
22 class TTreeSRedirector;
24 #include "AliHLTLogging.h"
27 * @class AliHLTGlobalTrackMerger
28 * Global track merger for the barrel section.
30 * @ingroup alihlt_global
31 * @author Jacek.Otwinowski@gsi.de
33 class AliHLTGlobalTrackMerger : public AliHLTLogging {
35 AliHLTGlobalTrackMerger();
37 virtual ~AliHLTGlobalTrackMerger();
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);
43 Bool_t MatchTracks(AliExternalTrackParam *extTPC=0, const AliESDtrack *trackTRD=0);
46 Bool_t Merge(AliESDEvent *esdEvent=0);
47 Bool_t MergeTracks(AliESDtrack *trackTPC=0, AliESDtrack *trackTRD=0, AliESDEvent *esdEvent=0);
49 // propagate tracks to DCA to primary vertex
50 void PropagateTracksToDCA(const AliESDEvent *esdEvent=0);
52 // Smooth track parameters
53 // (origin Sergey Gorbunov)
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,
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,
65 Int_t IndexS(Int_t i, Int_t j) {
66 return ( j<=i ) ? i*(i+1)/2+j :j*(j+1)/2+i;
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 );
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))
81 AliESDVertex *fVertex; //! event vertex (needed to propagate all tracks to DCA)
83 TTreeSRedirector *fDebugStreamer; //!
85 /** copy constructor prohibited */
86 AliHLTGlobalTrackMerger(const AliHLTGlobalTrackMerger&);
87 /** assignment operator prohibited */
88 AliHLTGlobalTrackMerger& operator=(const AliHLTGlobalTrackMerger&);
90 ClassDef(AliHLTGlobalTrackMerger,1) //Merging base class