MCBooster  1.0.1
Tool to generate MC phase space samples in parallel.
Calculate.h
Go to the documentation of this file.
1 /*
2  * Calculate.cuh
3  *
4  * Copyright 2016 Antonio Augusto Alves Junior
5  *
6  * Created on : Feb 25, 2016
7  * Author: Antonio Augusto Alves Junior
8  */
9 
10 /*
11  * This file is part of MCBooster.
12  *
13  * MCBooster is free software: you can redistribute it and/or modify
14  * it under the terms of the GNU General Public License as published by
15  * the Free Software Foundation, either version 3 of the License, or
16  * (at your option) any later version.
17  *
18  * MCBooster is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License
24  * along with MCBooster. If not, see <http://www.gnu.org/licenses/>.
25  */
26 
27 #ifndef CALCULATE_H_
28 #define CALCULATE_H_
29 
30 #include <mcbooster/Config.h>
31 #include <mcbooster/Vector3R.h>
32 #include <mcbooster/Vector4R.h>
33 #include <mcbooster/GContainers.h>
34 #include <mcbooster/GTypes.h>
35 
36 namespace MCBooster
37 {
38 
39 template<typename FUNCTION, typename RESULT>
40 struct Calculate
41 {
42 
43  FUNCTION Function;
44 
46  {
47 
48  Function = FUNCTION();
49 
50  }
51 
52 
53  Calculate(const FUNCTION& _Function) :
54  Function(_Function)
55  {
56 
57  }
58 
59 
60  __host__ __device__ RESULT operator()(GT2 &particles)
61  {
62 
63  Vector4R* _Particles[2];
64 
65  _Particles[0] = &thrust::get<0>(particles);
66  _Particles[1] = &thrust::get<1>(particles);
67 
68  return Function(2, _Particles);
69  }
70 
71  __host__ __device__ RESULT operator()(GT3 &particles)
72  {
73 
74  Vector4R* _Particles[3];
75 
76  _Particles[0] = &thrust::get<0>(particles);
77  _Particles[1] = &thrust::get<1>(particles);
78  _Particles[2] = &thrust::get<2>(particles);
79 
80  return Function(3, _Particles);
81  }
82 
83  __host__ __device__ RESULT operator()(GT4 &particles)
84  {
85 
86  Vector4R* _Particles[4];
87 
88  _Particles[0] = &thrust::get<0>(particles);
89  _Particles[1] = &thrust::get<1>(particles);
90  _Particles[2] = &thrust::get<2>(particles);
91  _Particles[3] = &thrust::get<3>(particles);
92 
93  return Function(4, _Particles);
94 
95  }
96 
97  __host__ __device__ RESULT operator()(GT5 &particles)
98  {
99 
100  Vector4R* _Particles[5];
101 
102  _Particles[0] = &thrust::get<0>(particles);
103  _Particles[1] = &thrust::get<1>(particles);
104  _Particles[2] = &thrust::get<2>(particles);
105  _Particles[3] = &thrust::get<3>(particles);
106  _Particles[4] = &thrust::get<4>(particles);
107 
108  return Function(5, _Particles);
109  }
110 
111  __host__ __device__ RESULT operator()(GT6 &particles)
112  {
113 
114  Vector4R* _Particles[6];
115 
116  _Particles[0] = &thrust::get<0>(particles);
117  _Particles[1] = &thrust::get<1>(particles);
118  _Particles[2] = &thrust::get<2>(particles);
119  _Particles[3] = &thrust::get<3>(particles);
120  _Particles[4] = &thrust::get<4>(particles);
121  _Particles[5] = &thrust::get<5>(particles);
122 
123  return Function(6, _Particles);
124  }
125 
126  __host__ __device__ RESULT operator()(GT7 &particles)
127  {
128 
129  Vector4R* _Particles[7];
130 
131  _Particles[0] = &thrust::get<0>(particles);
132  _Particles[1] = &thrust::get<1>(particles);
133  _Particles[2] = &thrust::get<2>(particles);
134  _Particles[3] = &thrust::get<3>(particles);
135  _Particles[4] = &thrust::get<4>(particles);
136  _Particles[5] = &thrust::get<5>(particles);
137  _Particles[6] = &thrust::get<6>(particles);
138 
139  return Function(7, _Particles);
140  }
141 
142  __host__ __device__ RESULT operator()(GT8 &particles)
143  {
144 
145  Vector4R* _Particles[8];
146 
147  _Particles[0] = &thrust::get<0>(particles);
148  _Particles[1] = &thrust::get<1>(particles);
149  _Particles[2] = &thrust::get<2>(particles);
150  _Particles[3] = &thrust::get<3>(particles);
151  _Particles[4] = &thrust::get<4>(particles);
152  _Particles[5] = &thrust::get<5>(particles);
153  _Particles[6] = &thrust::get<6>(particles);
154  _Particles[7] = &thrust::get<7>(particles);
155 
156  return Function(8, _Particles);
157 
158  }
159 
160  __host__ __device__ RESULT operator()(GT9 &particles)
161  {
162 
163  Vector4R* _Particles[9];
164 
165  _Particles[0] = &thrust::get<0>(particles);
166  _Particles[1] = &thrust::get<1>(particles);
167  _Particles[2] = &thrust::get<2>(particles);
168  _Particles[3] = &thrust::get<3>(particles);
169  _Particles[4] = &thrust::get<4>(particles);
170  _Particles[5] = &thrust::get<5>(particles);
171  _Particles[6] = &thrust::get<6>(particles);
172  _Particles[7] = &thrust::get<7>(particles);
173  _Particles[8] = &thrust::get<8>(particles);
174 
175  return Function(9, _Particles);
176  }
177 
178  __host__ __device__ RESULT operator()(GT10 &particles)
179  {
180 
181  Vector4R* _Particles[10];
182 
183  _Particles[0] = &thrust::get<0>(particles);
184  _Particles[1] = &thrust::get<1>(particles);
185  _Particles[2] = &thrust::get<2>(particles);
186  _Particles[3] = &thrust::get<3>(particles);
187  _Particles[4] = &thrust::get<4>(particles);
188  _Particles[5] = &thrust::get<5>(particles);
189  _Particles[6] = &thrust::get<6>(particles);
190  _Particles[7] = &thrust::get<7>(particles);
191  _Particles[8] = &thrust::get<8>(particles);
192  _Particles[9] = &thrust::get<9>(particles);
193 
194  return Function(10, _Particles);
195  }
196 
197 };
198 
199 template<typename FUNCTION>
201 {
202 
203  FUNCTION Function;
204 
206  {
207  Function = FUNCTION();
208 
209  }
210 
211 
212  Calculate2(const FUNCTION& _Function) :
213  Function(_Function)
214  {
215 
216  }
217 
218 
219  __host__ __device__ void operator()(GT2 particles)
220  {
221 
222  Vector4R* _Particles[2];
223 
224  _Particles[0] = &thrust::get<0>(particles);
225  _Particles[1] = &thrust::get<1>(particles);
226 
227  Function(2, _Particles);
228  }
229 
230  __host__ __device__ void operator()(GT3 particles)
231  {
232 
233  Vector4R* _Particles[3];
234 
235  _Particles[0] = &thrust::get<0>(particles);
236  _Particles[1] = &thrust::get<1>(particles);
237  _Particles[2] = &thrust::get<2>(particles);
238 
239  Function(3, _Particles);
240  }
241 
242  __host__ __device__ void operator()(GT4 particles)
243  {
244 
245  Vector4R* _Particles[4];
246 
247  _Particles[0] = &thrust::get<0>(particles);
248  _Particles[1] = &thrust::get<1>(particles);
249  _Particles[2] = &thrust::get<2>(particles);
250  _Particles[3] = &thrust::get<3>(particles);
251 
252  Function(4, _Particles);
253 
254  }
255 
256  __host__ __device__ void operator()(GT5 particles)
257  {
258 
259  Vector4R* _Particles[5];
260 
261  _Particles[0] = &thrust::get<0>(particles);
262  _Particles[1] = &thrust::get<1>(particles);
263  _Particles[2] = &thrust::get<2>(particles);
264  _Particles[3] = &thrust::get<3>(particles);
265  _Particles[4] = &thrust::get<4>(particles);
266 
267  Function(5, _Particles);
268  }
269 
270  __host__ __device__ void operator()(GT6 particles)
271  {
272 
273  Vector4R* _Particles[6];
274 
275  _Particles[0] = &thrust::get<0>(particles);
276  _Particles[1] = &thrust::get<1>(particles);
277  _Particles[2] = &thrust::get<2>(particles);
278  _Particles[3] = &thrust::get<3>(particles);
279  _Particles[4] = &thrust::get<4>(particles);
280  _Particles[5] = &thrust::get<5>(particles);
281 
282  Function(6, _Particles);
283  }
284 
285  __host__ __device__ void operator()(GT7 particles)
286  {
287 
288  Vector4R* _Particles[7];
289 
290  _Particles[0] = &thrust::get<0>(particles);
291  _Particles[1] = &thrust::get<1>(particles);
292  _Particles[2] = &thrust::get<2>(particles);
293  _Particles[3] = &thrust::get<3>(particles);
294  _Particles[4] = &thrust::get<4>(particles);
295  _Particles[5] = &thrust::get<5>(particles);
296  _Particles[6] = &thrust::get<6>(particles);
297 
298  Function(7, _Particles);
299  }
300 
301  __host__ __device__ void operator()(GT8 particles)
302  {
303 
304  Vector4R* _Particles[8];
305 
306  _Particles[0] = &thrust::get<0>(particles);
307  _Particles[1] = &thrust::get<1>(particles);
308  _Particles[2] = &thrust::get<2>(particles);
309  _Particles[3] = &thrust::get<3>(particles);
310  _Particles[4] = &thrust::get<4>(particles);
311  _Particles[5] = &thrust::get<5>(particles);
312  _Particles[6] = &thrust::get<6>(particles);
313  _Particles[7] = &thrust::get<7>(particles);
314 
315  Function(8, _Particles);
316 
317  }
318 
319  __host__ __device__ void operator()(GT9 particles)
320  {
321 
322  Vector4R* _Particles[9];
323 
324  _Particles[0] = &thrust::get<0>(particles);
325  _Particles[1] = &thrust::get<1>(particles);
326  _Particles[2] = &thrust::get<2>(particles);
327  _Particles[3] = &thrust::get<3>(particles);
328  _Particles[4] = &thrust::get<4>(particles);
329  _Particles[5] = &thrust::get<5>(particles);
330  _Particles[6] = &thrust::get<6>(particles);
331  _Particles[7] = &thrust::get<7>(particles);
332  _Particles[8] = &thrust::get<8>(particles);
333 
334  Function(9, _Particles);
335  }
336 
337  __host__ __device__ void operator()(GT10 particles)
338  {
339 
340  Vector4R* _Particles[10];
341 
342  _Particles[0] = &thrust::get<0>(particles);
343  _Particles[1] = &thrust::get<1>(particles);
344  _Particles[2] = &thrust::get<2>(particles);
345  _Particles[3] = &thrust::get<3>(particles);
346  _Particles[4] = &thrust::get<4>(particles);
347  _Particles[5] = &thrust::get<5>(particles);
348  _Particles[6] = &thrust::get<6>(particles);
349  _Particles[7] = &thrust::get<7>(particles);
350  _Particles[8] = &thrust::get<8>(particles);
351  _Particles[9] = &thrust::get<9>(particles);
352 
353  Function(10, _Particles);
354  }
355 
356 };
357 
358 template<typename FUNCTION>
360 {
361 
362  FUNCTION Function;
363 
365  {
366  Function = FUNCTION();
367 
368  }
369 
370 
371  Calculate3(const FUNCTION& _Function) :
372  Function(_Function)
373  {
374 
375  }
376 
377 
378  __host__ __device__ void operator()(GTR3 tuples)
379  {
380 
381  GReal_t* _real;
382  Vector4R* _Particles[2];
383 
384  _real = &thrust::get<0>(tuples);
385  _Particles[0] = &thrust::get<1>(tuples);
386  _Particles[1] = &thrust::get<2>(tuples);
387 
388  Function(2, _Particles, _real);
389  }
390 
391  __host__ __device__ void operator()(GTR4 tuples)
392  {
393 
394  GReal_t* _real;
395 
396  Vector4R* _Particles[3];
397 
398  _real = &thrust::get<0>(tuples);
399  _Particles[0] = &thrust::get<1>(tuples);
400  _Particles[1] = &thrust::get<2>(tuples);
401  _Particles[2] = &thrust::get<3>(tuples);
402 
403  Function(3, _Particles, _real);
404 
405  }
406 
407  __host__ __device__ void operator()(GTR5 tuples)
408  {
409 
410  GReal_t* _real;
411 
412  Vector4R* _Particles[4];
413 
414  _real = &thrust::get<0>(tuples);
415  _Particles[0] = &thrust::get<1>(tuples);
416  _Particles[1] = &thrust::get<2>(tuples);
417  _Particles[2] = &thrust::get<3>(tuples);
418  _Particles[3] = &thrust::get<4>(tuples);
419 
420  Function(4, _Particles, _real);
421  }
422 
423  __host__ __device__ void operator()(GTR6 tuples)
424  {
425 
426  GReal_t* _real;
427 
428  Vector4R* _Particles[5];
429 
430  _real = &thrust::get<0>(tuples);
431  _Particles[0] = &thrust::get<1>(tuples);
432  _Particles[1] = &thrust::get<2>(tuples);
433  _Particles[2] = &thrust::get<3>(tuples);
434  _Particles[3] = &thrust::get<4>(tuples);
435  _Particles[4] = &thrust::get<5>(tuples);
436 
437  Function(5, _Particles, _real);
438  }
439 
440  __host__ __device__ void operator()(GTR7 tuples)
441  {
442 
443  GReal_t* _real;
444 
445  Vector4R* _Particles[6];
446 
447  _real = &thrust::get<0>(tuples);
448  _Particles[0] = &thrust::get<1>(tuples);
449  _Particles[1] = &thrust::get<2>(tuples);
450  _Particles[2] = &thrust::get<3>(tuples);
451  _Particles[3] = &thrust::get<4>(tuples);
452  _Particles[4] = &thrust::get<5>(tuples);
453  _Particles[5] = &thrust::get<6>(tuples);
454 
455  Function(6, _Particles, _real);
456  }
457 
458  __host__ __device__ void operator()(GTR8 tuples)
459  {
460 
461  GReal_t* _real;
462 
463  Vector4R* _Particles[7];
464 
465  _real = &thrust::get<0>(tuples);
466  _Particles[0] = &thrust::get<1>(tuples);
467  _Particles[1] = &thrust::get<2>(tuples);
468  _Particles[2] = &thrust::get<3>(tuples);
469  _Particles[3] = &thrust::get<4>(tuples);
470  _Particles[4] = &thrust::get<5>(tuples);
471  _Particles[5] = &thrust::get<6>(tuples);
472  _Particles[6] = &thrust::get<7>(tuples);
473 
474  Function(7, _Particles, _real);
475 
476  }
477 
478  __host__ __device__ void operator()(GTR9 tuples)
479  {
480 
481  GReal_t* _real;
482 
483  Vector4R* _Particles[8];
484 
485  _real = &thrust::get<0>(tuples);
486  _Particles[0] = &thrust::get<1>(tuples);
487  _Particles[1] = &thrust::get<2>(tuples);
488  _Particles[2] = &thrust::get<3>(tuples);
489  _Particles[3] = &thrust::get<4>(tuples);
490  _Particles[4] = &thrust::get<5>(tuples);
491  _Particles[5] = &thrust::get<6>(tuples);
492  _Particles[6] = &thrust::get<7>(tuples);
493  _Particles[7] = &thrust::get<8>(tuples);
494 
495  Function(8, _Particles, _real);
496  }
497 
498  __host__ __device__ void operator()(GTR10 tuples)
499  {
500 
501  GReal_t* _real;
502 
503  Vector4R* _Particles[9];
504 
505  _real = &thrust::get<0>(tuples);
506  _Particles[0] = &thrust::get<1>(tuples);
507  _Particles[1] = &thrust::get<2>(tuples);
508  _Particles[2] = &thrust::get<3>(tuples);
509  _Particles[3] = &thrust::get<4>(tuples);
510  _Particles[4] = &thrust::get<5>(tuples);
511  _Particles[5] = &thrust::get<6>(tuples);
512  _Particles[6] = &thrust::get<7>(tuples);
513  _Particles[7] = &thrust::get<8>(tuples);
514  _Particles[8] = &thrust::get<9>(tuples);
515 
516  Function(9, _Particles, _real);
517  }
518 
519 };
520 }
521 
522 #endif /* CALCULATE_H_ */
__host__ __device__ void operator()(GT2 particles)
Definition: Calculate.h:219
thrust::detail::tuple_of_iterator_references< Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, thrust::null_type, thrust::null_type, thrust::null_type, thrust::null_type, thrust::null_type > GT5
GT5 iterator is a typedef for thrust::detail::tuple_of_iterator_references
Definition: GContainers.h:148
thrust::detail::tuple_of_iterator_references< Vector4R &, Vector4R &, Vector4R &, thrust::null_type, thrust::null_type, thrust::null_type, thrust::null_type, thrust::null_type, thrust::null_type, thrust::null_type > GT3
GT3 iterator is a typedef for thrust::detail::tuple_of_iterator_references
Definition: GContainers.h:136
thrust::detail::tuple_of_iterator_references< GReal_t &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, thrust::null_type, thrust::null_type, thrust::null_type, thrust::null_type, thrust::null_type > GTR5
GTR5 iterator is a typedef for thrust::detail::tuple_of_iterator_references
Definition: GContainers.h:210
__host__ __device__ void operator()(GT6 particles)
Definition: Calculate.h:270
thrust::detail::tuple_of_iterator_references< GReal_t &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, thrust::null_type, thrust::null_type, thrust::null_type, thrust::null_type > GTR6
GTR6 iterator is a typedef for thrust::detail::tuple_of_iterator_references
Definition: GContainers.h:215
thrust::detail::tuple_of_iterator_references< GReal_t &, Vector4R &, Vector4R &, Vector4R &, thrust::null_type, thrust::null_type, thrust::null_type, thrust::null_type, thrust::null_type, thrust::null_type > GTR4
GTR4 iterator is a typedef for thrust::detail::tuple_of_iterator_references
Definition: GContainers.h:202
Calculate(const FUNCTION &_Function)
Definition: Calculate.h:53
Typedef for useful container classes used in MCBooster.
thrust::detail::tuple_of_iterator_references< Vector4R &, Vector4R &, thrust::null_type, thrust::null_type, thrust::null_type, thrust::null_type, thrust::null_type, thrust::null_type, thrust::null_type, thrust::null_type > GT2
GT2 iterator is a typedef for thrust::detail::tuple_of_iterator_references
Definition: GContainers.h:130
__host__ __device__ RESULT operator()(GT9 &particles)
Definition: Calculate.h:160
thrust::detail::tuple_of_iterator_references< Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, thrust::null_type > GT9
GT9 iterator is a typedef for thrust::detail::tuple_of_iterator_references
Definition: GContainers.h:170
__host__ __device__ RESULT operator()(GT2 &particles)
Definition: Calculate.h:60
__host__ __device__ RESULT operator()(GT10 &particles)
Definition: Calculate.h:178
__host__ __device__ RESULT operator()(GT7 &particles)
Definition: Calculate.h:126
__host__ __device__ void operator()(GTR4 tuples)
Definition: Calculate.h:391
__host__ __device__ RESULT operator()(GT4 &particles)
Definition: Calculate.h:83
thrust::detail::tuple_of_iterator_references< Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R & > GT10
GT10 iterator is a typedef for thrust::detail::tuple_of_iterator_references
Definition: GContainers.h:175
__host__ __device__ void operator()(GTR8 tuples)
Definition: Calculate.h:458
Calculate2(const FUNCTION &_Function)
Definition: Calculate.h:212
__host__ __device__ void operator()(GT9 particles)
Definition: Calculate.h:319
__host__ __device__ void operator()(GTR5 tuples)
Definition: Calculate.h:407
__host__ __device__ void operator()(GT3 particles)
Definition: Calculate.h:230
__host__ __device__ void operator()(GTR10 tuples)
Definition: Calculate.h:498
__host__ __device__ void operator()(GT10 particles)
Definition: Calculate.h:337
thrust::detail::tuple_of_iterator_references< Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, thrust::null_type, thrust::null_type, thrust::null_type > GT7
GT7 iterator is a typedef for thrust::detail::tuple_of_iterator_references
Definition: GContainers.h:159
__host__ __device__ void operator()(GTR6 tuples)
Definition: Calculate.h:423
Calculate3(const FUNCTION &_Function)
Definition: Calculate.h:371
__host__ __device__ RESULT operator()(GT8 &particles)
Definition: Calculate.h:142
double GReal_t
Double 8 bytes or float 4 bytes.
Definition: GTypes.h:52
thrust::detail::tuple_of_iterator_references< GReal_t &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, thrust::null_type, thrust::null_type > GTR8
GTR8 iterator is a typedef for thrust::detail::tuple_of_iterator_references
Definition: GContainers.h:225
thrust::detail::tuple_of_iterator_references< Vector4R &, Vector4R &, Vector4R &, Vector4R &, thrust::null_type, thrust::null_type, thrust::null_type, thrust::null_type, thrust::null_type, thrust::null_type > GT4
GT4 iterator is a typedef for thrust::detail::tuple_of_iterator_references
Definition: GContainers.h:142
thrust::detail::tuple_of_iterator_references< GReal_t &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R & > GTR10
GTR10 iterator is a typedef for thrust::detail::tuple_of_iterator_references
Definition: GContainers.h:235
thrust::detail::tuple_of_iterator_references< GReal_t &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, thrust::null_type, thrust::null_type, thrust::null_type > GTR7
GTR7 iterator is a typedef for thrust::detail::tuple_of_iterator_references
Definition: GContainers.h:220
__host__ __device__ void operator()(GT5 particles)
Definition: Calculate.h:256
__host__ __device__ void operator()(GT4 particles)
Definition: Calculate.h:242
__host__ __device__ RESULT operator()(GT3 &particles)
Definition: Calculate.h:71
__host__ __device__ void operator()(GT8 particles)
Definition: Calculate.h:301
__host__ __device__ RESULT operator()(GT5 &particles)
Definition: Calculate.h:97
__host__ __device__ void operator()(GTR9 tuples)
Definition: Calculate.h:478
__host__ __device__ RESULT operator()(GT6 &particles)
Definition: Calculate.h:111
__host__ __device__ void operator()(GTR3 tuples)
Definition: Calculate.h:378
thrust::detail::tuple_of_iterator_references< GReal_t &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, thrust::null_type > GTR9
GTR9 iterator is a typedef for thrust::detail::tuple_of_iterator_references
Definition: GContainers.h:230
thrust::detail::tuple_of_iterator_references< GReal_t &, Vector4R &, Vector4R &, thrust::null_type, thrust::null_type, thrust::null_type, thrust::null_type, thrust::null_type, thrust::null_type, thrust::null_type > GTR3
GTR3 iterator is a typedef for thrust::detail::tuple_of_iterator_references
Definition: GContainers.h:193
__host__ __device__ void operator()(GT7 particles)
Definition: Calculate.h:285
thrust::detail::tuple_of_iterator_references< Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, thrust::null_type, thrust::null_type, thrust::null_type, thrust::null_type > GT6
GT6 iterator is a typedef for thrust::detail::tuple_of_iterator_references
Definition: GContainers.h:154
__host__ __device__ void operator()(GTR7 tuples)
Definition: Calculate.h:440
thrust::detail::tuple_of_iterator_references< Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, Vector4R &, thrust::null_type, thrust::null_type > GT8
GT8 iterator is a typedef for thrust::detail::tuple_of_iterator_references
Definition: GContainers.h:164