77import random
88import math
99
10- import HydraPython as hp
10+ import HydraPython as hypy
1111
1212
13- def foo (* data ):
14- p1 = data [0 ]
15- p2 = data [1 ]
16- p3 = data [2 ]
13+ def functor (* four_vector ):
14+ p1 = four_vector [0 ]
15+ p2 = four_vector [1 ]
16+ p3 = four_vector [2 ]
17+
1718 p = p1 + p2 + p3
1819 q = p2 + p3
20+
1921 pd = p * p2
2022 pq = p * q
2123 qd = q * p2
2224 mp2 = p .mass2 ()
2325 mq2 = q .mass2 ()
2426 md2 = p2 .mass2 ()
27+
2528 return (pd * mq2 - pq * qd ) / math .sqrt ((pq * pq - mq2 * mp2 ) * (qd * qd - mq2 * md2 ))
2629
2730
@@ -48,48 +51,48 @@ def check_equals(self, event1, tup):
4851 self .assertEqual (event1 .GetNEvents (), len (tup ))
4952 for first , second in zip (event1 .Events (), tup ):
5053 self .check_tuple (first , second )
51-
54+
5255 def test_default_constructor (self ):
5356 vector_mass = 5.140252
5457 float_list = [1.1 , 1.2 , 0.242 , 0.8385977 ]
55- ps = hp .PhaseSpace4 (vector_mass , float_list )
56- self .assertIsInstance (ps , hp .PhaseSpace4 , 'Failure: Not an instance of PhaseSpace_4' )
58+ ps = hypy .PhaseSpace4 (vector_mass , float_list )
59+ self .assertIsInstance (ps , hypy .PhaseSpace4 , 'Failure: Not an instance of PhaseSpace_4' )
5760
5861 def test_N_PhaseSpace (self ):
5962 vector_mass = 9629.140252
60- ps1 = hp .PhaseSpace1 (vector_mass , random_floats (0.1 , 2.2 , 1 ))
61- ps2 = hp .PhaseSpace2 (vector_mass , random_floats (0.1 , 2.2 , 2 ))
62- ps3 = hp .PhaseSpace3 (vector_mass , random_floats (0.1 , 2.2 , 3 ))
63- ps4 = hp .PhaseSpace4 (vector_mass , random_floats (0.1 , 2.2 , 4 ))
64- ps5 = hp .PhaseSpace5 (vector_mass , random_floats (0.1 , 2.2 , 5 ))
65- ps6 = hp .PhaseSpace6 (vector_mass , random_floats (0.1 , 2.2 , 6 ))
66- ps7 = hp .PhaseSpace7 (vector_mass , random_floats (0.1 , 2.2 , 7 ))
67- ps8 = hp .PhaseSpace8 (vector_mass , random_floats (0.1 , 2.2 , 8 ))
68- ps9 = hp .PhaseSpace9 (vector_mass , random_floats (0.1 , 2.2 , 9 ))
69- ps10 = hp .PhaseSpace10 (vector_mass , random_floats (0.1 , 2.2 , 10 ))
70- self .assertIsInstance (ps1 , hp .PhaseSpace1 , 'Failure: Not an instance of PhaseSpace1' )
71- self .assertIsInstance (ps2 , hp .PhaseSpace2 , 'Failure: Not an instance of PhaseSpace2' )
72- self .assertIsInstance (ps3 , hp .PhaseSpace3 , 'Failure: Not an instance of PhaseSpace3' )
73- self .assertIsInstance (ps4 , hp .PhaseSpace4 , 'Failure: Not an instance of PhaseSpace4' )
74- self .assertIsInstance (ps5 , hp .PhaseSpace5 , 'Failure: Not an instance of PhaseSpace5' )
75- self .assertIsInstance (ps6 , hp .PhaseSpace6 , 'Failure: Not an instance of PhaseSpace6' )
76- self .assertIsInstance (ps7 , hp .PhaseSpace7 , 'Failure: Not an instance of PhaseSpace7' )
77- self .assertIsInstance (ps8 , hp .PhaseSpace8 , 'Failure: Not an instance of PhaseSpace8' )
78- self .assertIsInstance (ps9 , hp .PhaseSpace9 , 'Failure: Not an instance of PhaseSpace9' )
79- self .assertIsInstance (ps10 , hp .PhaseSpace10 , 'Failure: Not an instance of PhaseSpace10' )
63+ # ps1 = hypy .PhaseSpace1(vector_mass, random_floats(0.1, 2.2, 1))
64+ ps2 = hypy .PhaseSpace2 (vector_mass , random_floats (0.1 , 2.2 , 2 ))
65+ ps3 = hypy .PhaseSpace3 (vector_mass , random_floats (0.1 , 2.2 , 3 ))
66+ ps4 = hypy .PhaseSpace4 (vector_mass , random_floats (0.1 , 2.2 , 4 ))
67+ ps5 = hypy .PhaseSpace5 (vector_mass , random_floats (0.1 , 2.2 , 5 ))
68+ ps6 = hypy .PhaseSpace6 (vector_mass , random_floats (0.1 , 2.2 , 6 ))
69+ ps7 = hypy .PhaseSpace7 (vector_mass , random_floats (0.1 , 2.2 , 7 ))
70+ ps8 = hypy .PhaseSpace8 (vector_mass , random_floats (0.1 , 2.2 , 8 ))
71+ ps9 = hypy .PhaseSpace9 (vector_mass , random_floats (0.1 , 2.2 , 9 ))
72+ ps10 = hypy .PhaseSpace10 (vector_mass , random_floats (0.1 , 2.2 , 10 ))
73+ # self.assertIsInstance(ps1, hypy .PhaseSpace1, 'Failure: Not an instance of PhaseSpace1')
74+ self .assertIsInstance (ps2 , hypy .PhaseSpace2 , 'Failure: Not an instance of PhaseSpace2' )
75+ self .assertIsInstance (ps3 , hypy .PhaseSpace3 , 'Failure: Not an instance of PhaseSpace3' )
76+ self .assertIsInstance (ps4 , hypy .PhaseSpace4 , 'Failure: Not an instance of PhaseSpace4' )
77+ self .assertIsInstance (ps5 , hypy .PhaseSpace5 , 'Failure: Not an instance of PhaseSpace5' )
78+ self .assertIsInstance (ps6 , hypy .PhaseSpace6 , 'Failure: Not an instance of PhaseSpace6' )
79+ self .assertIsInstance (ps7 , hypy .PhaseSpace7 , 'Failure: Not an instance of PhaseSpace7' )
80+ self .assertIsInstance (ps8 , hypy .PhaseSpace8 , 'Failure: Not an instance of PhaseSpace8' )
81+ self .assertIsInstance (ps9 , hypy .PhaseSpace9 , 'Failure: Not an instance of PhaseSpace9' )
82+ self .assertIsInstance (ps10 , hypy .PhaseSpace10 , 'Failure: Not an instance of PhaseSpace10' )
8083
8184 def test_seed (self ):
8285 vector_mass = 5.140252
8386 float_list = [1.1 , 1.2 , 0.242 , 0.8385977 ]
84- ps = hp .PhaseSpace4 (vector_mass , float_list )
87+ ps = hypy .PhaseSpace4 (vector_mass , float_list )
8588 ps .SetSeed (123 )
8689 self .assertEqual (123 , ps .GetSeed ())
8790
88- def test_generate_body (self ):
89- vec4 = hp .Vector4R (5.2795 , 0.0 , 0.0 , 0.0 )
90- ps = hp .PhaseSpace4 (vec4 .mass (), [3.096916 , 0.493677 , 0.13957018 , 0.0195018 ])
91- e_host = hp . hostEvents4 (3 )
92- ps . Generatehost (vec4 , e_host )
91+ def test_generator_1 (self ):
92+ vec4 = hypy .Vector4R (5.2795 , 0.0 , 0.0 , 0.0 )
93+ phsp = hypy .PhaseSpace4 (vec4 .mass (), [3.096916 , 0.493677 , 0.13957018 , 0.0195018 ])
94+ e_host = hypy . host_events_4 (3 )
95+ phsp . GenerateOnhost (vec4 , e_host )
9396 tup = ((0.00050889380 ,
9497 (3.313285880268 , 0.981747490679 , 0.005536704420 , - 0.650473537337 ),
9598 (0.528272074985 , 0.154894458053 , 0.006307332616 , - 0.106406434487 ),
@@ -105,36 +108,44 @@ def test_generate_body(self):
105108 (0.182102196040 , - 0.006495945222 , 0.085854017877 , - 0.159272659014 )))
106109 self .check_equals (e_host , tup )
107110
108- e_device = hp . deviceEvents4 (3 )
109- ps . Generatedevice (vec4 , e_device )
111+ e_device = hypy . device_events_4 (3 )
112+ phsp . GenerateOndevice (vec4 , e_device )
110113 self .check_equals (e_device , tup )
111114
112- def test_average_on_body (self ):
113- vec4 = hp .Vector4R (5.2795 , 0.0 , 0.0 , 0.0 )
114- p = hp .PhaseSpace4 (vec4 .mass (), [3.096916 , 0.493677 , 0.13957018 , 0.0195018 ])
115- tup1 = p .AverageONhost (vec4 , foo , 10 )
115+ def test_average_on (self ):
116+ vec4 = hypy .Vector4R (5.2795 , 0.0 , 0.0 , 0.0 )
117+ p = hypy .PhaseSpace4 (vec4 .mass (), [3.096916 , 0.493677 , 0.13957018 , 0.0195018 ])
118+ tup1 = p .AverageOnhost (vec4 , functor , 10 )
116119 tup2 = (- 0.983049786694 , 0.010451881904 )
117120 self .assertAlmostEqual (tup1 [0 ], tup2 [0 ])
118121 self .assertAlmostEqual (tup1 [1 ], tup2 [1 ])
119122 # Below will segfault due to GIL
120- # tup1 = p.AverageONdevice (vec4, foo, 10)
123+ # tup1 = p.AverageOndevice (vec4, foo, 10)
121124 # tup2 = (-0.983049786694, 0.010451881904)
122125 # self.assertAlmostEqual(tup1[0], tup2[0])
123126 # self.assertAlmostEqual(tup1[1], tup2[1])
124127
125-
126- def test_average_on_body2 (self ):
127- pass
128-
129- def test_generate_2 (self ):
130- pass
131-
132128 def test_evaluate (self ):
133- pass
134-
135- def test_evaluate_2 (self ):
136- pass
137-
129+ b0_mass = 5.27955
130+ jpsi_mass = 3.0969
131+ k_mass = 0.493677
132+ pi_mass = 0.13957061
133+
134+ b0 = hypy .Vector4R (b0_mass , 0.0 , 0.0 , 0.0 )
135+ masses = [jpsi_mass , k_mass , pi_mass ]
136+ phsp = hypy .PhaseSpace3 (b0_mass , masses )
137+
138+ result = hypy .host_vector_float2 (5 )
139+ phsp .EvaluateOnhost (b0 , result , functor )
140+ tup = ((0.004857093031 , - 0.999950534243 ),
141+ (0.006868934284 , - 0.999842558622 ),
142+ (0.011390565091 , - 0.999882127917 ),
143+ (0.016108047503 , - 0.999560206432 ),
144+ (0.020888558031 , - 0.999196543388 ))
145+
146+ for i in range (5 ):
147+ self .assertAlmostEqual (tup [i ][0 ], result [i ][0 ])
148+ self .assertAlmostEqual (tup [i ][1 ], result [i ][1 ])
138149
139150
140151if __name__ == '__main__' :
0 commit comments