@@ -112,6 +112,22 @@ namespace hydra_python {
112112 event_container.begin ()); \
113113 })
114114
115+ #define GENERATE_ON_DECAY (N, RNG, BACKEND ) \
116+ .def(" GenerateOn" #BACKEND, \
117+ [](hydra::PhaseSpace<N, RNG>& p, hydra::Vector4R& mother, \
118+ hypy::BACKEND##_decays_##N& decays_container) { \
119+ p.Generate (mother, decays_container.begin (), \
120+ decays_container.end ()); \
121+ }) \
122+ .def( \
123+ " GenerateOn" #BACKEND, \
124+ [](hydra::PhaseSpace<N, RNG>& p, \
125+ hypy::BACKEND##_vector_float4& mothers, \
126+ hypy::BACKEND##_decays_##N& decays_container) { \
127+ p.Generate (mothers.begin (), mothers.end (), \
128+ decays_container.begin ()); \
129+ })
130+
115131#define AVERAGE_ON_EVENT (N, RNG, BACKEND ) \
116132 .def(" AverageOn" #BACKEND, \
117133 [](hydra::PhaseSpace<N, RNG>& p, hydra::Vector4R& mother, \
@@ -154,26 +170,32 @@ namespace hydra_python {
154170 const std::array<hydra::GReal_t, N>&>()) \
155171 .def(" GetSeed" , &hydra::PhaseSpace<N, RNG>::GetSeed) \
156172 .def(" SetSeed" , &hydra::PhaseSpace<N, RNG>::SetSeed) \
157- GENERATE_ON_EVENT (N, RNG, host)\
158- AVERAGE_ON_EVENT (N, RNG, host) \
159- EVALUATE_ON_EVENT (N, RNG, host) \
173+ GENERATE_ON_EVENT (N, RNG, host) \
160174 GENERATE_ON_EVENT (N, RNG, device) \
175+ \
176+ AVERAGE_ON_EVENT (N, RNG, host) \
161177 AVERAGE_ON_EVENT (N, RNG, device) \
162- EVALUATE_ON_EVENT (N, RNG, device);
178+ \
179+ EVALUATE_ON_EVENT (N, RNG, host) \
180+ EVALUATE_ON_EVENT (N, RNG, device)\
181+ \
182+ GENERATE_ON_DECAY (N, RNG, host) \
183+ GENERATE_ON_DECAY (N, RNG, device) \
184+ ;
163185
164- template <>
165- void add_object<hydra::PhaseSpace<4 , thrust::random::default_random_engine>>(
166- pybind11::module & m) {
167- PHASESPACE_CLASS_BODY (1 , thrust::random::default_random_engine);
168- PHASESPACE_CLASS_BODY (2 , thrust::random::default_random_engine);
169- PHASESPACE_CLASS_BODY (3 , thrust::random::default_random_engine);
170- PHASESPACE_CLASS_BODY (4 , thrust::random::default_random_engine);
171- PHASESPACE_CLASS_BODY (5 , thrust::random::default_random_engine);
172- PHASESPACE_CLASS_BODY (6 , thrust::random::default_random_engine);
173- PHASESPACE_CLASS_BODY (7 , thrust::random::default_random_engine);
174- PHASESPACE_CLASS_BODY (8 , thrust::random::default_random_engine);
175- PHASESPACE_CLASS_BODY (9 , thrust::random::default_random_engine);
176- PHASESPACE_CLASS_BODY (10 , thrust::random::default_random_engine);
186+ template <>
187+ void add_object<hydra::PhaseSpace<4 , thrust::random::default_random_engine>>(
188+ pybind11::module & m) {
189+ // PHASESPACE_CLASS_BODY(1, thrust::random::default_random_engine);
190+ PHASESPACE_CLASS_BODY (2 , thrust::random::default_random_engine);
191+ PHASESPACE_CLASS_BODY (3 , thrust::random::default_random_engine);
192+ PHASESPACE_CLASS_BODY (4 , thrust::random::default_random_engine);
193+ PHASESPACE_CLASS_BODY (5 , thrust::random::default_random_engine);
194+ PHASESPACE_CLASS_BODY (6 , thrust::random::default_random_engine);
195+ PHASESPACE_CLASS_BODY (7 , thrust::random::default_random_engine);
196+ PHASESPACE_CLASS_BODY (8 , thrust::random::default_random_engine);
197+ PHASESPACE_CLASS_BODY (9 , thrust::random::default_random_engine);
198+ PHASESPACE_CLASS_BODY (10 , thrust::random::default_random_engine);
177199}
178200}
179201#endif /* PYPHASESPACE_H_ */
0 commit comments