]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/global/AliHLTGlobalTrackMerger.h
adding new library libAliHLTGlobal for global HLT components; adding global track...
[u/mrichter/AliRoot.git] / HLT / global / AliHLTGlobalTrackMerger.h
CommitLineData
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
15class AliHLTTPCTrack;
16class AliHLTTPCTrackSegmentData;
17class AliHLTTPCVertex;
18class AliHLTTPCTrackArray;
19class AliTRDtrackV1;
20class AliESDEvent;
21class AliESDVertex;
22class AliExternalTrackParam;
23
24class 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 */
36class AliHLTGlobalTrackMerger : public AliHLTLogging {
37public:
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 *extTPC=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
82private:
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