]>
Commit | Line | Data |
---|---|---|
ec6160d5 | 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; | |
a9f060e5 | 25 | class TTreeStream; |
26 | class TTreeSRedirector; | |
ec6160d5 | 27 | |
28 | #include "AliHLTLogging.h" | |
29 | #include "AliESDtrack.h" | |
30 | ||
31 | /** | |
32 | * @class AliHLTGlobalTrackMerger | |
33 | * Global track merger for the barrel section. | |
34 | * | |
35 | * @ingroup alihlt_global | |
36 | * @author Jacek.Otwinowski@gsi.de | |
37 | */ | |
38 | class AliHLTGlobalTrackMerger : public AliHLTLogging { | |
39 | public: | |
40 | AliHLTGlobalTrackMerger(); | |
41 | /** destructor */ | |
42 | virtual ~AliHLTGlobalTrackMerger(); | |
43 | ||
44 | // load tracks | |
45 | Bool_t LoadTracks(TClonesArray *aTRDTracks,AliESDEvent *esdEvent=0); | |
46 | Bool_t LoadTracks(AliHLTTPCTrackArray *aTPCTracks,AliESDEvent *esdEvent=0); | |
47 | ||
48 | // set matching parameters | |
49 | 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); | |
50 | ||
51 | // match tracks | |
4b6d0cc6 | 52 | Bool_t MatchTracks(AliExternalTrackParam *extTPC=0, AliESDtrack *trackTRD=0); |
ec6160d5 | 53 | |
54 | // merge tracks | |
55 | Bool_t Merge(AliESDEvent *esdEvent=0); | |
4b6d0cc6 | 56 | Bool_t MergeTracks(AliESDtrack *trackTPC=0, AliESDtrack *trackTRD=0, AliESDEvent *esdEvent=0); |
ec6160d5 | 57 | |
58 | // create AliESDtrack objects | |
59 | void FillTPCESD(AliHLTTPCTrack* tpcTrack=0, ULong_t flags=AliESDtrack::kTPCin, AliESDEvent* esdEvent=0); | |
60 | void FillTRDESD(AliTRDtrackV1* trdTrack=0, ULong_t flags=AliESDtrack::kTRDin, AliESDEvent* esdEvent=0); | |
61 | ||
62 | // propagate tracks to DCA to primary vertex | |
63 | void PropagateTracksToDCA(AliESDEvent *esdEvent=0); | |
64 | ||
65 | // Smooth track parameters | |
66 | // (origin Sergey Gorbunov) | |
67 | /* | |
68 | Bool_t SmoothTracks( Double_t T1[], Double_t C1[], Double_t Chi21, Int_t NDF1, | |
69 | Double_t T2[], Double_t C2[], Double_t Chi22, Int_t NDF2, | |
70 | Double_t T [], Double_t C [], Double_t &Chi2, Int_t &NDF, | |
71 | Int_t N ); | |
72 | */ | |
73 | ||
74 | Bool_t SmoothTracks( const Double_t T1[], const Double_t C1[], Double_t Chi21, Int_t NDF1, | |
75 | const Double_t T2[], const Double_t C2[], Double_t Chi22, Int_t NDF2, | |
76 | Double_t T [], Double_t C [], Double_t &Chi2, Int_t &NDF, | |
77 | Int_t N ); | |
78 | Int_t IndexS(Int_t i, Int_t j) { | |
79 | return ( j<=i ) ? i*(i+1)/2+j :j*(j+1)/2+i; | |
80 | } | |
81 | void MultSSQ( const Double_t *A, const Double_t *B, Double_t *C, Int_t N ); | |
82 | Bool_t InvertS( Double_t A[], Int_t N ); | |
83 | ||
84 | private: | |
85 | ||
86 | // TRD-TPC matching parameters | |
87 | Double_t fMaxY; //! max Y track (cm) | |
88 | Double_t fMaxZ; //! max Z track (cm) | |
89 | Double_t fMaxSnp; //! max local sine of the track momentum azimuthal angle | |
90 | Double_t fMaxTgl; //! max tangent of the track momentum dip angle | |
91 | Double_t fMaxSigned1Pt; //! max 1/pt (1/(GeV/c)) | |
92 | ||
93 | // primary vertex | |
94 | AliESDVertex *fVertex; //! event vertex (needed to propagate all tracks to DCA) | |
a9f060e5 | 95 | |
96 | TTreeSRedirector *fDebugStreamer; //! | |
ec6160d5 | 97 | |
98 | /** copy constructor prohibited */ | |
99 | AliHLTGlobalTrackMerger(const AliHLTGlobalTrackMerger&); | |
100 | /** assignment operator prohibited */ | |
101 | AliHLTGlobalTrackMerger& operator=(const AliHLTGlobalTrackMerger&); | |
102 | ||
103 | ClassDef(AliHLTGlobalTrackMerger,1) //Merging base class | |
104 | }; | |
105 | ||
106 | #endif |