Using common HLT track data format for TRD tracks (Theodor)
[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
ec6160d5 15class AliESDEvent;
16class AliESDVertex;
17class AliExternalTrackParam;
18
19class TClonesArray;
a9f060e5 20class TTreeStream;
21class TTreeSRedirector;
ec6160d5 22
23#include "AliHLTLogging.h"
24#include "AliESDtrack.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 */
33class AliHLTGlobalTrackMerger : public AliHLTLogging {
34public:
35 AliHLTGlobalTrackMerger();
36 /** destructor */
37 virtual ~AliHLTGlobalTrackMerger();
38
ec6160d5 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
4b6d0cc6 43 Bool_t MatchTracks(AliExternalTrackParam *extTPC=0, AliESDtrack *trackTRD=0);
ec6160d5 44
45 // merge tracks
46 Bool_t Merge(AliESDEvent *esdEvent=0);
4b6d0cc6 47 Bool_t MergeTracks(AliESDtrack *trackTPC=0, AliESDtrack *trackTRD=0, AliESDEvent *esdEvent=0);
ec6160d5 48
ec6160d5 49 // propagate tracks to DCA to primary vertex
50 void PropagateTracksToDCA(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
71private:
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)
a9f060e5 82
83 TTreeSRedirector *fDebugStreamer; //!
ec6160d5 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