]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TRD/AliTRDonlineTrackMatching.h
#99183: commit to trunk and port to release AliAODTZERO with T0 vertex
[u/mrichter/AliRoot.git] / TRD / AliTRDonlineTrackMatching.h
CommitLineData
30bd9a5a 1#ifndef ALITRDONLINETRACKMATCHING_H
2#define ALITRDONLINETRACKMATCHING_H
3
4//
5// Track matching between TRD online tracks and ESD tracks.
6// Author: Felix Rettig <rettig@compeng.uni-frankfurt.de>
7
8#include "TObject.h"
9class TH1;
10class AliESDEvent;
11class AliExternalTrackParam;
12class AliTRDgeometry;
13class AliESDTrdTrack;
14
15//#define TRD_TM_DEBUG
16
17class AliTRDonlineTrackMatching {
18 public:
19 AliTRDonlineTrackMatching();
20 ~AliTRDonlineTrackMatching();
21
22 inline static Short_t TrdLsiSec(Short_t lsi) { return (lsi < 0) ? -1 : (lsi/5); } // convert linear stack index 0-89 to TRD sector 0-17
23 inline static Short_t TrdLsiSi(Short_t lsi) { return (lsi < 0) ? -1 : (lsi%5); } // convert stack index 0-89 to local stack index 0-4
24 inline static Short_t TrdDetLsi(Short_t det) { return det/6; } // convert TRD detector/chamber 0-539 index to linear stack index 0-89
25 inline static Short_t TrdDetSi(Short_t det) { return (det%30)/6; } // convert detector (=chamber) number 0-539 to local stack index 0-4
26 inline static Short_t TrdDetLyr(Short_t det) { return det%6; } // convert detector (=chamber) number 0-539 to local layer 0-5
27 inline static Short_t TrdSecSiLsi(Short_t sec, Short_t si) { return 5*sec + si; } // convert sector (0-17) and local stack index (0-4) to linear stack index 0-89
28
29 static Short_t EstimateSector(const Double_t globalCoords[3]);
30 static Short_t EstimateLayer(const Double_t radius);
31 static Short_t EstimateLocalStack(const Double_t globalCoords[3]);
32 static Short_t EstimateStack(const Double_t globalCoords[3]);
33
34 static Bool_t StackToTrack(const AliExternalTrackParam* track, Short_t &stack, UShort_t &layersWithTracklet, const Double_t magFieldinKiloGauss);
35 static Bool_t StackToTrack(const AliESDtrack* track, Short_t &stack, UShort_t &layersWithTracklet, const Double_t magFieldinKiloGauss);
36
37 static Bool_t TrackPlaneIntersect(AliExternalTrackParam *trk, Double_t pnt[3], Double_t norm[3], Double_t mag);
38 Int_t EstimateTrackDistance(AliESDtrack *esd_track, AliESDTrdTrack* gtu_track, Double_t mag, Double_t *ydist, Double_t *zdist);
39 static Double_t RateTrackMatch(const Double_t distY, const Double_t distZ, const Double_t rpt, const Double_t gpt);
40
41 static void SetEsdTrackCutMinTPCrows(const Double_t setting) { fEsdTrackCutMinTPCrows = setting; };
42 static void SetEsdTrackCutMinRatioRowsFindableClusters(const Double_t setting) { fEsdTrackCutMinRatioRowsFindableClusters = setting; };
43 static void SetEsdTrackCutMaxChi2TPCclusters(const Float_t setting) { fEsdTrackCutMaxChi2TPCclusters = setting; };
44 static void SetEsdTrackCutMaxChi2ITSclusters(const Float_t setting) { fEsdTrackCutMaxChi2ITSclusters = setting; };
45 static void SetEsdTrackCutMaxDCAtoVertexXY(const Float_t setting) { fEsdTrackCutMaxDCAtoVertexXY = setting; };
46 static void SetEsdTrackCutMaxDCAtoVertexZ(const Float_t setting) { fEsdTrackCutMaxDCAtoVertexZ = setting; };
47 static void SetEsdTrackCutITSlayerMask(const UShort_t setting) { fEsdTrackCutsITSlayerMask = setting; };
48 static void SetEsdTrackCutsChi2TPCconstrainedVsGlobal(const Float_t setting) { fEsdTrackVCutsChi2TPCconstrainedVsGlobal = setting; };
49 static void SetEsdTrackCutMinimal(const Bool_t setting) { fEsdTrackCutMinimal = setting; };
50 static void SetEsdTrackCutRequireITSrefit(const Bool_t setting) { fEsdTrackCutRequireITSrefit = setting; };
51 static void SetEsdTrackCutRequireTPCrefit(const Bool_t setting) { fEsdTrackCutRequireTPCrefit = setting; };
52 static void SetEsdTrackCutPrim(const Bool_t setting) { fEsdTrackCutPrim = setting; };
53
54 static void SetEsdTrackDefaultCuts(const char* cutIdent = "minimal");
55
56 void SetMinMatchRating(const Float_t setting) { fMinMatchRating = setting; };
57 void SetHistMatchRating(TH1* hist) { fHistMatchRating = hist; };
58
59 static Bool_t AcceptTrack(const AliESDtrack* esdTrack, const AliESDEvent* esdEvent);
60 Bool_t ProcessEvent(AliESDEvent *esdEvent);
61
62 protected:
63
64 inline static Double_t PtDiffRel(const Double_t refPt, const Double_t gtuPt);
65
66 static const unsigned int fgkMaxEsdTracksPerStack = 20000; // max no. of tracks per stack
67 static const unsigned int fgkTrdStacks = 90; // no. of TRD stacks (0-89)
68 static const Float_t fgkSaveInnerRadius; // inner radius for extrapolation
69 static const Float_t fgkSaveOuterRadius; // outer radius for extrapolation
70
71 static Float_t fEsdTrackCutMinTPCrows; // track cut
72 static Float_t fEsdTrackCutMinRatioRowsFindableClusters; // track cut
73 static Float_t fEsdTrackCutMaxChi2TPCclusters; // track cut
74 static Float_t fEsdTrackCutMaxChi2ITSclusters; // track cut
75 static Float_t fEsdTrackCutMaxDCAtoVertexXY; // track cut
76 static Float_t fEsdTrackCutMaxDCAtoVertexZ; // track cut
77 static UShort_t fEsdTrackCutsITSlayerMask; // track cut
78 static Float_t fEsdTrackVCutsChi2TPCconstrainedVsGlobal; // track cut
79 static Float_t fEsdTrackCutPtDCAOfs; // track cut
80 static Float_t fEsdTrackCutPtDCACoeff; // track cut
81 static Bool_t fEsdTrackCutMinimal; // activate/deactive minimal track cuts
82 static Bool_t fEsdTrackCutRequireITSrefit; // track cut
83 static Bool_t fEsdTrackCutRequireTPCrefit; // track cut
84 static Bool_t fEsdTrackCutPrim; // select primaries or keep secondaries for matching
85
86 AliTRDgeometry* fTRDgeo; //! TRD geometry instance
87 Float_t fMinMatchRating; //! min rating to accept pair of matched tracks
88 TH1* fHistMatchRating; //! optional histogram for match rating for all TRD tracks
89
90 AliTRDonlineTrackMatching(const AliTRDonlineTrackMatching &c);
91 AliTRDonlineTrackMatching& operator=(const AliTRDonlineTrackMatching& rhs);
92};
93
94#endif