1 /**************************************************************************
2 * Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
18 ////////////////////////////////////////////////////////////////////////////////
20 // Author: Artur Szostak
21 // Email: artur@alice.phy.uct.ac.za | artursz@iafrica.com
23 ////////////////////////////////////////////////////////////////////////////////
25 #include "AliHLTMUONCalculations.h"
29 AliHLTFloat32_t AliHLTMUONCalculateSignedPt(
30 register AliHLTFloat32_t x1,
31 register AliHLTFloat32_t y1, register AliHLTFloat32_t y2,
32 register AliHLTFloat32_t z1, register AliHLTFloat32_t z2,
36 register AliHLTFloat32_t qBL = 3.0;
37 register AliHLTFloat32_t zf = 975.0;
38 AliHLTFloat32_t thetaTimesZf = - (y1*z2 - y2*z1) / (z2-z1);
39 AliHLTFloat32_t xf = x1 * zf / z1;
40 AliHLTFloat32_t yf = y2 - ((y2-y1) * (z2-zf)) / (z2-z1);
42 AliHLTFloat32_t pDivZf = (qBL * 0.3 / thetaTimesZf);
43 p = (AliHLTFloat32_t) fabs( pDivZf * zf );
45 // Note: the 0.3 is a conversion factor to GeV. it is 1e9 / c where c is
46 // the speed of light.
47 AliHLTFloat32_t pt = pDivZf * sqrt(xf*xf+yf*yf);
52 AliHLTFloat32_t AliHLTMUONCalculateSignedPt(
53 register AliHLTFloat32_t x1,
54 register AliHLTFloat32_t y1, register AliHLTFloat32_t y2,
55 register AliHLTFloat32_t z1, register AliHLTFloat32_t z2,
56 register AliHLTFloat32_t zf, register AliHLTFloat32_t qBL,
60 AliHLTFloat32_t thetaTimesZf = - (y1*z2 - y2*z1) / (z2-z1);
61 AliHLTFloat32_t xf = x1 * zf / z1;
62 AliHLTFloat32_t yf = y2 - ((y2-y1) * (z2-zf)) / (z2-z1);
64 AliHLTFloat32_t pDivZf = (qBL * 0.3 / thetaTimesZf);
65 p = (AliHLTFloat32_t) fabs( pDivZf * zf );
67 // Note: the 0.3 is a conversion factor to GeV. it is 1e9 / c where c is
68 // the speed of light.
69 AliHLTFloat32_t pt = pDivZf * sqrt(xf*xf+yf*yf);
74 AliHLTFloat32_t AliHLTMUONCalculateSignedPt(
75 register AliHLTFloat32_t x1,
76 register AliHLTFloat32_t y1, register AliHLTFloat32_t y2,
77 register AliHLTFloat32_t z1, register AliHLTFloat32_t z2
80 register AliHLTFloat32_t qBL = 3.0;
81 register AliHLTFloat32_t zf = 975.0;
82 AliHLTFloat32_t thetaTimesZf = - (y1*z2 - y2*z1) / (z2-z1);
83 AliHLTFloat32_t xf = x1 * zf / z1;
84 AliHLTFloat32_t yf = y2 - ((y2-y1) * (z2-zf)) / (z2-z1);
86 // Note: the 0.3 is a conversion factor to GeV. it is 1e9 / c where c is
87 // the speed of light.
88 AliHLTFloat32_t pt = (qBL * 0.3 / thetaTimesZf) * sqrt(xf*xf+yf*yf);
93 AliHLTFloat32_t AliHLTMUONCalculateSignedPt(
94 register AliHLTFloat32_t x1,
95 register AliHLTFloat32_t y1, register AliHLTFloat32_t y2,
96 register AliHLTFloat32_t z1, register AliHLTFloat32_t z2,
97 register AliHLTFloat32_t zf, register AliHLTFloat32_t qBL
100 AliHLTFloat32_t thetaTimesZf = - (y1*z2 - y2*z1) / (z2-z1);
101 AliHLTFloat32_t xf = x1 * zf / z1;
102 AliHLTFloat32_t yf = y2 - ((y2-y1) * (z2-zf)) / (z2-z1);
104 // Note: the 0.3 is a conversion factor to GeV. it is 1e9 / c where c is
105 // the speed of light.
106 AliHLTFloat32_t pt = (qBL * 0.3 / thetaTimesZf) * sqrt(xf*xf+yf*yf);
111 AliHLTFloat32_t AliHLTMUONCalculatePt(
112 register AliHLTFloat32_t x1,
113 register AliHLTFloat32_t y1, register AliHLTFloat32_t y2,
114 register AliHLTFloat32_t z1, register AliHLTFloat32_t z2
117 return (AliHLTFloat32_t) fabs(AliHLTMUONCalculateSignedPt(x1, y1, y2, z1, z2));
121 AliHLTFloat32_t AliHLTMUONCalculatePt(
122 register AliHLTFloat32_t x1,
123 register AliHLTFloat32_t y1, register AliHLTFloat32_t y2,
124 register AliHLTFloat32_t z1, register AliHLTFloat32_t z2,
125 register AliHLTFloat32_t zf, register AliHLTFloat32_t qBL
128 return (AliHLTFloat32_t) fabs(AliHLTMUONCalculateSignedPt(x1, y1, y2, z1, z2, zf, qBL));