22
33import numpy as np
44import pytest
5-
6- from pyhdtoolkit .models .beam import BeamParameters
5+ from numpy .testing import assert_allclose
76from pyhdtoolkit .optics import ripken , twiss
87from pyhdtoolkit .optics .beam import Beam , compute_beam_parameters
98from pyhdtoolkit .optics .rdt import determine_rdt_line , rdt_to_order_and_type
2120
2221
2322def test_gamma_rel ():
24- assert Beam (6500 , 2.5e-6 ).gamma_rel == 6928.628011131436
23+ assert_allclose ( Beam (6500 , 2.5e-6 ).gamma_rel , 6928.628011131436 )
2524
2625
2726def test_beta_rel ():
28- assert Beam (6500 , 2.5e-6 ).beta_rel == 1.0000000104153894
27+ assert_allclose ( Beam (6500 , 2.5e-6 ).beta_rel , 1.0000000104153894 )
2928
3029
3130def test_brho ():
32- assert Beam (6500 , 2.5e-6 ).brho == 7.227222137900961e-05
31+ assert_allclose ( Beam (6500 , 2.5e-6 ).brho , 7.227222137900961e-05 )
3332
3433
3534def test_normalized_emittance ():
36- assert Beam (6500 , 2.5e-6 ).nemitt == 0.01732157020823949
35+ assert_allclose ( Beam (6500 , 2.5e-6 ).nemitt , 0.01732157020823949 )
3736
3837
3938def test_rms_emittance ():
40- assert Beam (6500 , 2.5e-6 ).rms_emittance == 3.6082179183888383e-10
39+ assert_allclose ( Beam (6500 , 2.5e-6 ).rms_emittance , 3.6082179183888383e-10 )
4140
4241
4342def test_lhc_revolution_frequency ():
4443 lhc_beam = Beam (6500 , 2.5e-6 )
45- assert lhc_beam .revolution_frequency () == 11245.499628523643
44+ assert_allclose ( lhc_beam .revolution_frequency (), 11245.499628523643 )
4645
4746
4847@pytest .mark .parametrize (
4948 ("alpha_p" , "result" ),
5049 [(0 , 2.083077890845299e-08 ), (1e-5 , - 9.979169221091548e-06 ), (- 500 , 500.0000000208308 )],
5150)
5251def test_eta (alpha_p , result ):
53- assert Beam (6500 , 2.5e-6 ).eta (alpha_p ) == result
52+ assert_allclose ( Beam (6500 , 2.5e-6 ).eta (alpha_p ), result )
5453
5554
5655@pytest .mark .parametrize (("alpha_p" , "result" ), [(1e-5 , 316.2277660168379 ), (500 , 0.044721359549995794 )])
5756def test_gamma_transition (alpha_p , result ):
58- assert Beam (6500 , 2.5e-6 ).gamma_transition (alpha_p ) == result
57+ assert_allclose ( Beam (6500 , 2.5e-6 ).gamma_transition (alpha_p ), result )
5958
6059
6160def test_gamma_transition_raises ():
6261 with pytest .raises (ZeroDivisionError ):
6362 Beam (6500 , 2.5e-6 ).gamma_transition (0 )
6463
6564
66- @pytest .mark .parametrize (
67- ("pc_gev" , "en_x_m" , "en_y_m" , "delta_p" , "result" ),
68- [
69- (
70- 1.9 ,
71- 5e-6 ,
72- 5e-6 ,
73- 2e-3 ,
74- BeamParameters (
75- pc_GeV = 1.9 ,
76- B_rho_Tm = 6.3376399999999995 ,
77- E_0_GeV = 0.9382720813 ,
78- E_tot_GeV = 2.1190456574946737 ,
79- E_kin_GeV = 1.1807735761946736 ,
80- gamma_rel = 2.258455409393277 ,
81- beta_rel = 0.8966300434726596 ,
82- nemitt_x = 5e-06 ,
83- nemitt_y = 5e-06 ,
84- deltap_p = 0.002 ,
85- ),
86- ),
87- (
88- 19 ,
89- 5e-6 ,
90- 5e-6 ,
91- 2e-4 ,
92- BeamParameters (
93- pc_GeV = 19 ,
94- B_rho_Tm = 63.3764 ,
95- E_0_GeV = 0.9382720813 ,
96- E_tot_GeV = 19.023153116624673 ,
97- E_kin_GeV = 18.084881035324674 ,
98- gamma_rel = 20.274666054506927 ,
99- beta_rel = 0.9987828980567665 ,
100- nemitt_x = 5e-06 ,
101- nemitt_y = 5e-06 ,
102- deltap_p = 0.0002 ,
103- ),
104- ),
105- ],
106- )
107- def test_beam_parameters (pc_gev , en_x_m , en_y_m , delta_p , result ):
108- assert compute_beam_parameters (pc_gev , en_x_m , en_y_m , delta_p ) == result
65+
66+ def test_beam_parameters ():
67+ pc_gev = 19
68+ nemitt_x = 5e-6
69+ nemitt_y = 5e-6
70+ delta_p = 2e-4
71+ built = compute_beam_parameters (pc_gev , nemitt_x , nemitt_y , delta_p )
72+
73+ # check the specified properties
74+ assert_allclose (built .pc_GeV , pc_gev )
75+ assert_allclose (built .nemitt_x , nemitt_x )
76+ assert_allclose (built .nemitt_y , nemitt_y )
77+ assert_allclose (built .deltap_p , delta_p )
78+ # check the calculated properties
79+ assert_allclose (built .B_rho_Tm , 63.33333 )
80+ assert_allclose (built .E_tot_GeV , 19.023153116624673 )
81+ assert_allclose (built .E_kin_GeV , 18.084881035324674 )
82+ assert_allclose (built .beta_rel , 0.9987828980567665 )
83+ assert_allclose (built .gamma_rel , 20.274666054506927 )
84+
10985
11086
11187def test_beam_size (_fake_coordinates ):
112- assert np . allclose (ripken ._beam_size (_fake_coordinates ), _fake_coordinates .std ()) # noqa: SLF001
113- assert np . allclose (
88+ assert_allclose (ripken ._beam_size (_fake_coordinates ), _fake_coordinates .std ()) # noqa: SLF001
89+ assert_allclose (
11490 ripken ._beam_size (_fake_coordinates , method = "rms" ), # noqa: SLF001
11591 np .sqrt (np .mean (np .square (_fake_coordinates ))),
11692 )
@@ -126,9 +102,9 @@ def test_beam_size_raises(_fake_coordinates):
126102@pytest .mark .parametrize ("gemitt_x" , [5e-6 , 2.75e-6 , 3.5e-6 ])
127103@pytest .mark .parametrize ("gemitt_y" , [5e-6 , 2.75e-6 , 3.5e-6 ])
128104def test_lebedev_size_floats (beta11 , beta21 , gemitt_x , gemitt_y ):
129- assert ripken .lebedev_beam_size (beta1_ = beta11 , beta2_ = beta21 , gemitt_x = gemitt_x , gemitt_y = gemitt_y ) == np .sqrt (
105+ assert_allclose ( ripken .lebedev_beam_size (beta1_ = beta11 , beta2_ = beta21 , gemitt_x = gemitt_x , gemitt_y = gemitt_y ), np .sqrt (
130106 gemitt_x * beta11 + gemitt_y * beta21
131- )
107+ ))
132108
133109
134110def test_courant_snyder_transform ():
0 commit comments