Skip to content

Commit 0f3fb8b

Browse files
authored
Common: put the namespace-scope constants in the constant address space (#15825)
MSL requires every program-scope variable to live in the constant address space.
1 parent 06496ea commit 0f3fb8b

4 files changed

Lines changed: 150 additions & 148 deletions

File tree

‎Common/Constants/include/CommonConstants/LHCConstants.h‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ enum BeamDirection : int { BeamA, // beamA = beam 0,
3030
NBeamDirections,
3131
InteractingBC = -1 // as used in the BunchFilling class
3232
};
33-
GPUglobalconstexpr() int LHCMaxBunches = 3564; // max N bunches
34-
constexpr double LHCRFFreq = 400.789e6; // LHC RF frequency in Hz
35-
constexpr double LHCBunchSpacingNS = 10 * 1.e9 / LHCRFFreq; // bunch spacing in ns (10 RFbuckets)
36-
constexpr double LHCOrbitNS = LHCMaxBunches * LHCBunchSpacingNS; // orbit duration in ns
37-
constexpr double LHCRevFreq = 1.e9 / LHCOrbitNS; // revolution frequency
38-
constexpr double LHCBunchSpacingMUS = LHCBunchSpacingNS * 1e-3; // bunch spacing in \mus (10 RFbuckets)
39-
constexpr double LHCOrbitMUS = LHCOrbitNS * 1e-3; // orbit duration in \mus
33+
GPUglobalconstexpr() int LHCMaxBunches = 3564; // max N bunches
34+
GPUglobalconstexpr() double LHCRFFreq = 400.789e6; // LHC RF frequency in Hz
35+
GPUglobalconstexpr() double LHCBunchSpacingNS = 10 * 1.e9 / LHCRFFreq; // bunch spacing in ns (10 RFbuckets)
36+
GPUglobalconstexpr() double LHCOrbitNS = LHCMaxBunches * LHCBunchSpacingNS; // orbit duration in ns
37+
GPUglobalconstexpr() double LHCRevFreq = 1.e9 / LHCOrbitNS; // revolution frequency
38+
GPUglobalconstexpr() double LHCBunchSpacingMUS = LHCBunchSpacingNS * 1e-3; // bunch spacing in \mus (10 RFbuckets)
39+
GPUglobalconstexpr() double LHCOrbitMUS = LHCOrbitNS * 1e-3; // orbit duration in \mus
4040
GPUglobalconstexpr() unsigned int MaxNOrbits = 0xffffffff;
4141

4242
// Offsets of A, C beam bunches at P2

‎Common/Constants/include/CommonConstants/PhysicsConstants.h‎

Lines changed: 139 additions & 137 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
#ifndef ALICEO2_PHYSICSCONSTANTS_H_
1919
#define ALICEO2_PHYSICSCONSTANTS_H_
2020

21+
#include "GPUCommonDef.h"
22+
2123
namespace o2::constants::physics
2224
{
2325
// particles masses
@@ -102,153 +104,153 @@ enum Pdg {
102104
};
103105

104106
/// \brief Declarations of masses for additional particles
105-
constexpr double MassEta = 0.547862;
106-
constexpr double MassOmega = 0.78266;
107-
constexpr double MassEtaPrime = 0.95778;
108-
constexpr double MassB0 = 5.27966;
109-
constexpr double MassB0Bar = 5.27966;
110-
constexpr double MassBPlus = 5.27934;
111-
constexpr double MassBCPlus = 6.27447;
112-
constexpr double MassBS = 5.36692;
113-
constexpr double MassBSBar = 5.36692;
114-
constexpr double MassD0 = 1.86484;
115-
constexpr double MassD0Bar = 1.86484;
116-
constexpr double MassD0StarPlus = 2.272;
117-
constexpr double MassD0Star0 = 2.343;
118-
constexpr double MassD1Plus = 2.372;
119-
constexpr double MassD10 = 2.412;
120-
constexpr double MassD2StarPlus = 2.4601;
121-
constexpr double MassD2Star0 = 2.4611;
122-
constexpr double MassDMinus = 1.86966;
123-
constexpr double MassDPlus = 1.86966;
124-
constexpr double MassDS = 1.96835;
125-
constexpr double MassDSBar = 1.96835;
126-
constexpr double MassDSStar = 2.1122;
127-
constexpr double MassDS1 = 2.53511;
128-
constexpr double MassDS1Star2700 = 2.714;
129-
constexpr double MassDS1Star2860 = 2.859;
130-
constexpr double MassDS2Star = 2.5691;
131-
constexpr double MassDS3Star2860 = 2.86;
132-
constexpr double MassDStar = 2.01026;
133-
constexpr double MassDStar0 = 2.00685;
134-
constexpr double MassChiC1 = 3.51067;
135-
constexpr double MassJPsi = 3.0969;
136-
constexpr double MassLambdaB0 = 5.6196;
137-
constexpr double MassLambdaCPlus = 2.28646;
138-
constexpr double MassLambdaCPlus2860 = 2.8561;
139-
constexpr double MassLambdaCPlus2880 = 2.8816;
140-
constexpr double MassLambdaCPlus2940 = 2.9396;
141-
constexpr double MassOmegaC0 = 2.6952;
142-
constexpr double MassK0Star892 = 0.89555;
143-
constexpr double MassKPlusStar892 = 0.89167;
144-
constexpr double MassPhi = 1.019461;
145-
constexpr double MassSigmaC0 = 2.45375;
146-
constexpr double MassSigmaCPlusPlus = 2.45397;
147-
constexpr double MassSigmaCStar0 = 2.51848;
148-
constexpr double MassSigmaCStarPlusPlus = 2.51841;
149-
constexpr double MassX3872 = 3.87165;
150-
constexpr double MassXi0 = 1.31486;
151-
constexpr double MassXiB0 = 5.7919;
152-
constexpr double MassXiCCPlusPlus = 3.62155;
153-
constexpr double MassXiCPlus = 2.46771;
154-
constexpr double MassXiC0 = 2.47044;
155-
constexpr double MassXiC3055Plus = 3.0559;
156-
constexpr double MassXiC3080Plus = 3.0772;
157-
constexpr double MassXiC3055_0 = 3.059;
158-
constexpr double MassXiC3080_0 = 3.0799;
159-
constexpr double MassDeuteron = 1.87561294257;
160-
constexpr double MassTriton = 2.80892113298;
161-
constexpr double MassHelium3 = 2.80839160743;
162-
constexpr double MassAlpha = 3.7273794066;
163-
constexpr double MassLithium4 = 3.7513;
164-
constexpr double MassHyperTriton = 2.991134;
165-
constexpr double MassHyperHydrogen4 = 3.922434;
166-
constexpr double MassHyperHelium4 = 3.921728;
167-
constexpr double MassHyperHelium5 = 4.839961;
168-
constexpr double MassHyperHelium4Sigma = 3.995;
169-
constexpr double MassLambda1520_Py = 1.5195;
170-
constexpr double MassK1_1270_0 = 1.253;
171-
constexpr double MassK1_1270Plus = 1.272;
172-
constexpr double MassCDeuteron = 3.226;
107+
GPUglobalconstexpr() double MassEta = 0.547862;
108+
GPUglobalconstexpr() double MassOmega = 0.78266;
109+
GPUglobalconstexpr() double MassEtaPrime = 0.95778;
110+
GPUglobalconstexpr() double MassB0 = 5.27966;
111+
GPUglobalconstexpr() double MassB0Bar = 5.27966;
112+
GPUglobalconstexpr() double MassBPlus = 5.27934;
113+
GPUglobalconstexpr() double MassBCPlus = 6.27447;
114+
GPUglobalconstexpr() double MassBS = 5.36692;
115+
GPUglobalconstexpr() double MassBSBar = 5.36692;
116+
GPUglobalconstexpr() double MassD0 = 1.86484;
117+
GPUglobalconstexpr() double MassD0Bar = 1.86484;
118+
GPUglobalconstexpr() double MassD0StarPlus = 2.272;
119+
GPUglobalconstexpr() double MassD0Star0 = 2.343;
120+
GPUglobalconstexpr() double MassD1Plus = 2.372;
121+
GPUglobalconstexpr() double MassD10 = 2.412;
122+
GPUglobalconstexpr() double MassD2StarPlus = 2.4601;
123+
GPUglobalconstexpr() double MassD2Star0 = 2.4611;
124+
GPUglobalconstexpr() double MassDMinus = 1.86966;
125+
GPUglobalconstexpr() double MassDPlus = 1.86966;
126+
GPUglobalconstexpr() double MassDS = 1.96835;
127+
GPUglobalconstexpr() double MassDSBar = 1.96835;
128+
GPUglobalconstexpr() double MassDSStar = 2.1122;
129+
GPUglobalconstexpr() double MassDS1 = 2.53511;
130+
GPUglobalconstexpr() double MassDS1Star2700 = 2.714;
131+
GPUglobalconstexpr() double MassDS1Star2860 = 2.859;
132+
GPUglobalconstexpr() double MassDS2Star = 2.5691;
133+
GPUglobalconstexpr() double MassDS3Star2860 = 2.86;
134+
GPUglobalconstexpr() double MassDStar = 2.01026;
135+
GPUglobalconstexpr() double MassDStar0 = 2.00685;
136+
GPUglobalconstexpr() double MassChiC1 = 3.51067;
137+
GPUglobalconstexpr() double MassJPsi = 3.0969;
138+
GPUglobalconstexpr() double MassLambdaB0 = 5.6196;
139+
GPUglobalconstexpr() double MassLambdaCPlus = 2.28646;
140+
GPUglobalconstexpr() double MassLambdaCPlus2860 = 2.8561;
141+
GPUglobalconstexpr() double MassLambdaCPlus2880 = 2.8816;
142+
GPUglobalconstexpr() double MassLambdaCPlus2940 = 2.9396;
143+
GPUglobalconstexpr() double MassOmegaC0 = 2.6952;
144+
GPUglobalconstexpr() double MassK0Star892 = 0.89555;
145+
GPUglobalconstexpr() double MassKPlusStar892 = 0.89167;
146+
GPUglobalconstexpr() double MassPhi = 1.019461;
147+
GPUglobalconstexpr() double MassSigmaC0 = 2.45375;
148+
GPUglobalconstexpr() double MassSigmaCPlusPlus = 2.45397;
149+
GPUglobalconstexpr() double MassSigmaCStar0 = 2.51848;
150+
GPUglobalconstexpr() double MassSigmaCStarPlusPlus = 2.51841;
151+
GPUglobalconstexpr() double MassX3872 = 3.87165;
152+
GPUglobalconstexpr() double MassXi0 = 1.31486;
153+
GPUglobalconstexpr() double MassXiB0 = 5.7919;
154+
GPUglobalconstexpr() double MassXiCCPlusPlus = 3.62155;
155+
GPUglobalconstexpr() double MassXiCPlus = 2.46771;
156+
GPUglobalconstexpr() double MassXiC0 = 2.47044;
157+
GPUglobalconstexpr() double MassXiC3055Plus = 3.0559;
158+
GPUglobalconstexpr() double MassXiC3080Plus = 3.0772;
159+
GPUglobalconstexpr() double MassXiC3055_0 = 3.059;
160+
GPUglobalconstexpr() double MassXiC3080_0 = 3.0799;
161+
GPUglobalconstexpr() double MassDeuteron = 1.87561294257;
162+
GPUglobalconstexpr() double MassTriton = 2.80892113298;
163+
GPUglobalconstexpr() double MassHelium3 = 2.80839160743;
164+
GPUglobalconstexpr() double MassAlpha = 3.7273794066;
165+
GPUglobalconstexpr() double MassLithium4 = 3.7513;
166+
GPUglobalconstexpr() double MassHyperTriton = 2.991134;
167+
GPUglobalconstexpr() double MassHyperHydrogen4 = 3.922434;
168+
GPUglobalconstexpr() double MassHyperHelium4 = 3.921728;
169+
GPUglobalconstexpr() double MassHyperHelium5 = 4.839961;
170+
GPUglobalconstexpr() double MassHyperHelium4Sigma = 3.995;
171+
GPUglobalconstexpr() double MassLambda1520_Py = 1.5195;
172+
GPUglobalconstexpr() double MassK1_1270_0 = 1.253;
173+
GPUglobalconstexpr() double MassK1_1270Plus = 1.272;
174+
GPUglobalconstexpr() double MassCDeuteron = 3.226;
173175

174176
/// \brief Declarations of masses for particles in ROOT PDG_t
175-
constexpr double MassDown = 0.00467;
176-
constexpr double MassDownBar = 0.00467;
177-
constexpr double MassUp = 0.00216;
178-
constexpr double MassUpBar = 0.00216;
179-
constexpr double MassStrange = 0.0934;
180-
constexpr double MassStrangeBar = 0.0934;
181-
constexpr double MassCharm = 1.27;
182-
constexpr double MassCharmBar = 1.27;
183-
constexpr double MassBottom = 4.18;
184-
constexpr double MassBottomBar = 4.18;
185-
constexpr double MassTop = 172.5;
186-
constexpr double MassTopBar = 172.5;
187-
constexpr double MassGluon = 0.0;
188-
constexpr double MassElectron = 0.000510999;
189-
constexpr double MassPositron = 0.000510999;
190-
constexpr double MassNuE = 0.0;
191-
constexpr double MassNuEBar = 0.0;
192-
constexpr double MassMuonMinus = 0.1056584;
193-
constexpr double MassMuonPlus = 0.1056584;
194-
constexpr double MassNuMu = 0.0;
195-
constexpr double MassNuMuBar = 0.0;
196-
constexpr double MassTauMinus = 1.77686;
197-
constexpr double MassTauPlus = 1.77686;
198-
constexpr double MassNuTau = 0.0;
199-
constexpr double MassNuTauBar = 0.0;
200-
constexpr double MassGamma = 0.0;
201-
constexpr double MassZ0 = 91.1876;
202-
constexpr double MassWPlus = 80.377;
203-
constexpr double MassWMinus = 80.377;
204-
constexpr double MassPi0 = 0.1349768;
205-
constexpr double MassK0Long = 0.497611;
206-
constexpr double MassPiPlus = 0.1395704;
207-
constexpr double MassPiMinus = 0.1395704;
208-
constexpr double MassProton = 0.9382721;
209-
constexpr double MassProtonBar = 0.9382721;
210-
constexpr double MassNeutron = 0.9395654;
211-
constexpr double MassNeutronBar = 0.9395654;
212-
constexpr double MassK0Short = 0.497611;
213-
constexpr double MassK0 = 0.497611;
214-
constexpr double MassK0Bar = 0.497611;
215-
constexpr double MassKPlus = 0.493677;
216-
constexpr double MassKMinus = 0.493677;
217-
constexpr double MassLambda0 = 1.115683;
218-
constexpr double MassLambda0Bar = 1.115683;
219-
constexpr double MassLambda1520 = 1.519;
220-
constexpr double MassSigmaMinus = 1.197449;
221-
constexpr double MassSigmaBarPlus = 1.197449;
222-
constexpr double MassSigmaPlus = 1.18937;
223-
constexpr double MassSigmaBarMinus = 1.18937;
224-
constexpr double MassSigma0 = 1.192642;
225-
constexpr double MassSigma0Bar = 1.192642;
226-
constexpr double MassXiMinus = 1.32171;
227-
constexpr double MassXiPlusBar = 1.32171;
228-
constexpr double MassOmegaMinus = 1.67245;
229-
constexpr double MassOmegaPlusBar = 1.67245;
177+
GPUglobalconstexpr() double MassDown = 0.00467;
178+
GPUglobalconstexpr() double MassDownBar = 0.00467;
179+
GPUglobalconstexpr() double MassUp = 0.00216;
180+
GPUglobalconstexpr() double MassUpBar = 0.00216;
181+
GPUglobalconstexpr() double MassStrange = 0.0934;
182+
GPUglobalconstexpr() double MassStrangeBar = 0.0934;
183+
GPUglobalconstexpr() double MassCharm = 1.27;
184+
GPUglobalconstexpr() double MassCharmBar = 1.27;
185+
GPUglobalconstexpr() double MassBottom = 4.18;
186+
GPUglobalconstexpr() double MassBottomBar = 4.18;
187+
GPUglobalconstexpr() double MassTop = 172.5;
188+
GPUglobalconstexpr() double MassTopBar = 172.5;
189+
GPUglobalconstexpr() double MassGluon = 0.0;
190+
GPUglobalconstexpr() double MassElectron = 0.000510999;
191+
GPUglobalconstexpr() double MassPositron = 0.000510999;
192+
GPUglobalconstexpr() double MassNuE = 0.0;
193+
GPUglobalconstexpr() double MassNuEBar = 0.0;
194+
GPUglobalconstexpr() double MassMuonMinus = 0.1056584;
195+
GPUglobalconstexpr() double MassMuonPlus = 0.1056584;
196+
GPUglobalconstexpr() double MassNuMu = 0.0;
197+
GPUglobalconstexpr() double MassNuMuBar = 0.0;
198+
GPUglobalconstexpr() double MassTauMinus = 1.77686;
199+
GPUglobalconstexpr() double MassTauPlus = 1.77686;
200+
GPUglobalconstexpr() double MassNuTau = 0.0;
201+
GPUglobalconstexpr() double MassNuTauBar = 0.0;
202+
GPUglobalconstexpr() double MassGamma = 0.0;
203+
GPUglobalconstexpr() double MassZ0 = 91.1876;
204+
GPUglobalconstexpr() double MassWPlus = 80.377;
205+
GPUglobalconstexpr() double MassWMinus = 80.377;
206+
GPUglobalconstexpr() double MassPi0 = 0.1349768;
207+
GPUglobalconstexpr() double MassK0Long = 0.497611;
208+
GPUglobalconstexpr() double MassPiPlus = 0.1395704;
209+
GPUglobalconstexpr() double MassPiMinus = 0.1395704;
210+
GPUglobalconstexpr() double MassProton = 0.9382721;
211+
GPUglobalconstexpr() double MassProtonBar = 0.9382721;
212+
GPUglobalconstexpr() double MassNeutron = 0.9395654;
213+
GPUglobalconstexpr() double MassNeutronBar = 0.9395654;
214+
GPUglobalconstexpr() double MassK0Short = 0.497611;
215+
GPUglobalconstexpr() double MassK0 = 0.497611;
216+
GPUglobalconstexpr() double MassK0Bar = 0.497611;
217+
GPUglobalconstexpr() double MassKPlus = 0.493677;
218+
GPUglobalconstexpr() double MassKMinus = 0.493677;
219+
GPUglobalconstexpr() double MassLambda0 = 1.115683;
220+
GPUglobalconstexpr() double MassLambda0Bar = 1.115683;
221+
GPUglobalconstexpr() double MassLambda1520 = 1.519;
222+
GPUglobalconstexpr() double MassSigmaMinus = 1.197449;
223+
GPUglobalconstexpr() double MassSigmaBarPlus = 1.197449;
224+
GPUglobalconstexpr() double MassSigmaPlus = 1.18937;
225+
GPUglobalconstexpr() double MassSigmaBarMinus = 1.18937;
226+
GPUglobalconstexpr() double MassSigma0 = 1.192642;
227+
GPUglobalconstexpr() double MassSigma0Bar = 1.192642;
228+
GPUglobalconstexpr() double MassXiMinus = 1.32171;
229+
GPUglobalconstexpr() double MassXiPlusBar = 1.32171;
230+
GPUglobalconstexpr() double MassOmegaMinus = 1.67245;
231+
GPUglobalconstexpr() double MassOmegaPlusBar = 1.67245;
230232

231233
// END OF THE GENERATED BLOCK
232234

233235
// legacy names
234-
constexpr double MassPhoton = MassGamma;
235-
constexpr double MassMuon = MassMuonMinus;
236-
constexpr double MassPionCharged = MassPiPlus;
237-
constexpr double MassPionNeutral = MassPi0;
238-
constexpr double MassKaonCharged = MassKPlus;
239-
constexpr double MassKaonNeutral = MassK0;
240-
constexpr double MassLambda = MassLambda0;
241-
constexpr double MassHyperhydrog4 = MassHyperHydrogen4;
242-
constexpr double MassHyperhelium4 = MassHyperHelium4;
243-
constexpr double MassHyperhelium4sigma = MassHyperHelium4Sigma;
236+
GPUglobalconstexpr() double MassPhoton = MassGamma;
237+
GPUglobalconstexpr() double MassMuon = MassMuonMinus;
238+
GPUglobalconstexpr() double MassPionCharged = MassPiPlus;
239+
GPUglobalconstexpr() double MassPionNeutral = MassPi0;
240+
GPUglobalconstexpr() double MassKaonCharged = MassKPlus;
241+
GPUglobalconstexpr() double MassKaonNeutral = MassK0;
242+
GPUglobalconstexpr() double MassLambda = MassLambda0;
243+
GPUglobalconstexpr() double MassHyperhydrog4 = MassHyperHydrogen4;
244+
GPUglobalconstexpr() double MassHyperhelium4 = MassHyperHelium4;
245+
GPUglobalconstexpr() double MassHyperhelium4sigma = MassHyperHelium4Sigma;
244246

245247
// Light speed
246-
constexpr float LightSpeedCm2S = 299792458.e2; // C in cm/s
247-
constexpr float LightSpeedCm2NS = LightSpeedCm2S * 1e-9; // C in cm/ns
248-
constexpr float LightSpeedCm2PS = LightSpeedCm2S * 1e-12; // C in cm/ps
248+
GPUglobalconstexpr() float LightSpeedCm2S = 299792458.e2; // C in cm/s
249+
GPUglobalconstexpr() float LightSpeedCm2NS = LightSpeedCm2S * 1e-9; // C in cm/ns
250+
GPUglobalconstexpr() float LightSpeedCm2PS = LightSpeedCm2S * 1e-12; // C in cm/ps
249251

250252
// Light speed inverse
251-
constexpr float invLightSpeedCm2PS = 1. / LightSpeedCm2PS; // 1/C in ps/cm
253+
GPUglobalconstexpr() float invLightSpeedCm2PS = 1. / LightSpeedCm2PS; // 1/C in ps/cm
252254

253255
} // namespace o2::constants::physics
254256

‎Common/Constants/include/CommonConstants/make_pdg_header.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ def mass(code):
171171

172172
def declare_mass(pdg, mass_type="double") -> str:
173173
"""Returns a C++ declaration of a particle mass constant."""
174-
return f"constexpr {mass_type} Mass{pdg.name[1:]} = {mass(pdg.value)};"
174+
return f"GPUglobalconstexpr() {mass_type} Mass{pdg.name[1:]} = {mass(pdg.value)};"
175175

176176

177177
def main():

‎DataFormats/Detectors/TPC/include/DataFormatsTPC/Defs.h‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ enum Side { A = 0,
4242
GPUglobalconstexpr() unsigned char SECTORSPERSIDE = 18;
4343
GPUglobalconstexpr() unsigned char SIDES = 2;
4444

45-
constexpr double PI = 3.14159265358979323846;
46-
constexpr double TWOPI = 2. * PI;
47-
constexpr double SECPHIWIDTH = TWOPI / 18.;
45+
GPUglobalconstexpr() double PI = 3.14159265358979323846;
46+
GPUglobalconstexpr() double TWOPI = 2. * PI;
47+
GPUglobalconstexpr() double SECPHIWIDTH = TWOPI / 18.;
4848

4949
/// TPC ROC types
5050
enum RocType { IROC = 0,

0 commit comments

Comments
 (0)