]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/global/AliHLTGlobalTrackMerger.h
Corrected calculation of partial branching ratios.
[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;
a9f060e5 25class TTreeStream;
26class 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 */
38class AliHLTGlobalTrackMerger : public AliHLTLogging {
39public:
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
84private:
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