]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/MUON/OnlineAnalysis/AliHLTMUONCalculations.h
Merge branch 'master' into TPCdev
[u/mrichter/AliRoot.git] / HLT / MUON / OnlineAnalysis / AliHLTMUONCalculations.h
CommitLineData
364df03a 1#ifndef ALIHLTMUONCALCULATIONS_H
2#define ALIHLTMUONCALCULATIONS_H
3/* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
1d8ae082 6// $Id$
364df03a 7
8////////////////////////////////////////////////////////////////////////////////
9//
10// Author: Artur Szostak
11// Email: artur@alice.phy.uct.ac.za | artursz@iafrica.com
12//
13////////////////////////////////////////////////////////////////////////////////
14
15#include "AliHLTMUONDataTypes.h"
16
a3d4b6ba 17extern "C" struct AliHLTMUONTriggerRecordStruct;
18
b92524d0 19/*
c9537879 20 * Note: this class uses static global variables so thread protection must be
a3d4b6ba 21 * explicit in any multi-threaded usage. Or the class should be rewritten.
364df03a 22 */
e6357f88 23class AliHLTMUONCalculations
24{
25public:
26
a3d4b6ba 27 /// Calculates the momentum estimate given two track points behind the
28 /// dipole magnet and assuming origin is the interaction point.
e6357f88 29 static bool ComputeMomentum(
30 AliHLTFloat32_t x1,
31 AliHLTFloat32_t y1, AliHLTFloat32_t y2,
32 AliHLTFloat32_t z1, AliHLTFloat32_t z2
33 );
34
35 static AliHLTFloat32_t Zf() { return fgZf; }
36 static void Zf(AliHLTFloat32_t value) { fgZf = value; }
b92524d0 37 static AliHLTFloat32_t QBL();
38 static void QBL(AliHLTFloat32_t value);
e6357f88 39
40 static AliHLTMUONParticleSign Sign() { return fgSign; }
41 static AliHLTFloat32_t Px() { return fgPx; }
42 static AliHLTFloat32_t Py() { return fgPy; }
43 static AliHLTFloat32_t Pz() { return fgPz; }
c9537879 44
45 /// Calculates the invariant mass for a pair of particles.
46 static AliHLTFloat32_t ComputeMass(
47 AliHLTFloat32_t massA,
48 AliHLTFloat32_t pxA,
49 AliHLTFloat32_t pyA,
50 AliHLTFloat32_t pzA,
51 AliHLTFloat32_t massB,
52 AliHLTFloat32_t pxB,
53 AliHLTFloat32_t pyB,
54 AliHLTFloat32_t pzB
55 );
56
a3d4b6ba 57 static bool FitLineToTriggerRecord(const AliHLTMUONTriggerRecordStruct& trigger);
58
59 static bool FitLineToTriggerRecord(
60 const AliHLTMUONTriggerRecordStruct& trigger,
61 const bool hitset[4]
62 );
63
bc5cb6d6 64 static bool FitLine(
65 const AliHLTMUONTriggerRecordStruct& trigger,
66 const bool hitset[4]
67 );
68
a3d4b6ba 69 static AliHLTFloat32_t IdealZ1() { return fgIdealZ1; }
70 static void IdealZ1(AliHLTFloat32_t value) { fgIdealZ1 = value; }
71 static AliHLTFloat32_t IdealZ2() { return fgIdealZ2; }
72 static void IdealZ2(AliHLTFloat32_t value) { fgIdealZ2 = value; }
73
74 static AliHLTFloat32_t IdealX1() { return fgIdealX1; }
75 static AliHLTFloat32_t IdealY1() { return fgIdealY1; }
76 static AliHLTFloat32_t IdealX2() { return fgIdealX2; }
77 static AliHLTFloat32_t IdealY2() { return fgIdealY2; }
78
79 static bool FitLineToData(
80 const AliHLTFloat32_t* x, const AliHLTFloat32_t* y,
81 const AliHLTFloat32_t* z, AliHLTUInt32_t n
82 );
83
462e3880 84 static bool FitLineToData(
85 const AliHLTFloat32_t* x, const AliHLTFloat32_t* z,
86 AliHLTUInt32_t n
87 );
88
a3d4b6ba 89 static AliHLTFloat32_t Mzx() { return fgMzx; }
90 static AliHLTFloat32_t Mzy() { return fgMzy; }
91 static AliHLTFloat32_t Czx() { return fgCzx; }
92 static AliHLTFloat32_t Czy() { return fgCzy; }
93
94 static AliHLTFloat32_t ComputeChi2(
95 const AliHLTFloat32_t* x, const AliHLTFloat32_t* y,
96 const AliHLTFloat32_t* z, AliHLTUInt32_t n
97 );
98
bc5cb6d6 99 static AliHLTFloat32_t ComputeChi2(
100 const AliHLTMUONTriggerRecordStruct& trigger,
101 const bool hitset[4]
102 );
103
a3d4b6ba 104 static AliHLTFloat32_t SigmaX2() { return fgSigmaX2; }
105 static void SigmaX2(AliHLTFloat32_t value) { fgSigmaX2 = (value != 0 ? value : 1.); }
106 static AliHLTFloat32_t SigmaY2() { return fgSigmaY2; }
107 static void SigmaY2(AliHLTFloat32_t value) { fgSigmaY2 = (value != 0 ? value : 1.); }
108
e6357f88 109private:
110
111 // Prevent destroying or creating of this object.
112 AliHLTMUONCalculations();
113 ~AliHLTMUONCalculations();
114
a3d4b6ba 115 static AliHLTFloat32_t fgZf; /// The Z coordinate of the middle of the dipole magnetic field.
116 static AliHLTFloat32_t fgQBLScaled; /// The integrated field strength times units of charge (T.m.*c/1e9)
117
118 static AliHLTMUONParticleSign fgSign; /// The calculated sign.
119 static AliHLTFloat32_t fgPx; /// The calculated X momentum (GeV/c).
120 static AliHLTFloat32_t fgPy; /// The calculated Y momentum (GeV/c).
121 static AliHLTFloat32_t fgPz; /// The calculated Z momentum (GeV/c).
122
123 static AliHLTFloat32_t fgSigmaX2; /// The sigma squared value for the variance / uncertainty in X coordinates.
124 static AliHLTFloat32_t fgSigmaY2; /// The sigma squared value for the variance / uncertainty in Y coordinates.
125
126 static AliHLTFloat32_t fgMzx; /// Calculated slope of the line fitted to the ZX plane. (x = fgMzx * z + fgCzx)
127 static AliHLTFloat32_t fgMzy; /// Calculated slope of the line fitted to the ZY plane. (y = fgMzy * z + fgCzy)
128 static AliHLTFloat32_t fgCzx; /// Calculated coefficient of the line fitted to the ZX plane. (x = fgMzx * z + fgCzx)
129 static AliHLTFloat32_t fgCzy; /// Calculated coefficient of the line fitted to the ZY plane. (y = fgMzy * z + fgCzy)
e6357f88 130
a3d4b6ba 131 static AliHLTFloat32_t fgIdealX1; /// Ideal X coordinate of the point on MT1
132 static AliHLTFloat32_t fgIdealY1; /// Ideal Y coordinate of the point on MT1
133 static AliHLTFloat32_t fgIdealZ1; /// Ideal Z coordinate of the point on MT1
134 static AliHLTFloat32_t fgIdealX2; /// Ideal X coordinate of the point on MT2
135 static AliHLTFloat32_t fgIdealY2; /// Ideal Y coordinate of the point on MT2
136 static AliHLTFloat32_t fgIdealZ2; /// Ideal Z coordinate of the point on MT2
e6357f88 137};
364df03a 138
139#endif // ALIHLTMUONCALCULATIONS_H