1010
1111
1212/*gpufun*/
13- void EverestBlock_set_material (EverestBlockData el , LocalParticle * part0 ){
13+ void EverestBlock_set_material (EverestBlockData el ){
1414 MaterialData material = EverestBlockData_getp__material (el );
1515 RandomRutherfordData rng = EverestBlockData_getp_rutherford_rng (el );
1616 RandomRutherford_set_by_xcoll_material (rng , (GeneralMaterialData ) material );
1717}
1818
19+
1920/*gpufun*/
2021EverestCollData EverestBlock_init (EverestBlockData el , LocalParticle * part0 , int8_t active ){
2122 EverestCollData coll = (EverestCollData ) malloc (sizeof (EverestCollData_ ));
@@ -32,6 +33,7 @@ EverestCollData EverestBlock_init(EverestBlockData el, LocalParticle* part0, int
3233 coll -> csref [0 ] = MaterialData_get_cross_section (material , 0 );
3334 coll -> csref [1 ] = MaterialData_get_cross_section (material , 1 );
3435 coll -> csref [5 ] = MaterialData_get_cross_section (material , 5 );
36+ coll -> only_mcs = MaterialData_get__only_mcs (material );
3537
3638 // Impact table
3739 coll -> record = EverestBlockData_getp_internal_record (el , part0 );
@@ -46,29 +48,27 @@ EverestCollData EverestBlock_init(EverestBlockData el, LocalParticle* part0, int
4648
4749
4850/*gpufun*/
49- EverestData EverestBlock_init_data (LocalParticle * part , EverestCollData coll , int8_t only_mcs ){
51+ EverestData EverestBlock_init_data (LocalParticle * part , EverestCollData coll ){
5052 EverestData everest = (EverestData ) malloc (sizeof (EverestData_ ));
5153 everest -> coll = coll ;
5254 everest -> rescale_scattering = 1 ;
5355#ifndef XCOLL_REFINE_ENERGY
54- if (!only_mcs ){
55- // Preinitialise scattering parameters
56- double charge_ratio = LocalParticle_get_charge_ratio (part );
57- double mass_ratio = charge_ratio / LocalParticle_get_chi (part );
58- double energy = ( LocalParticle_get_ptau (part ) + 1 / LocalParticle_get_beta0 (part )
59- ) * mass_ratio * LocalParticle_get_p0c (part ) / 1e9 ; // energy in GeV
60- calculate_scattering (everest , energy );
61- calculate_ionisation_properties (everest , energy );
62- }
56+ // Preinitialise scattering parameters
57+ double charge_ratio = LocalParticle_get_charge_ratio (part );
58+ double mass_ratio = charge_ratio / LocalParticle_get_chi (part );
59+ double energy = ( LocalParticle_get_ptau (part ) + 1 / LocalParticle_get_beta0 (part )
60+ ) * mass_ratio * LocalParticle_get_p0c (part ) / 1e9 ; // energy in GeV
61+ calculate_scattering (everest , energy );
62+ calculate_ionisation_properties (everest , energy );
6363#endif
6464 return everest ;
6565}
6666
67+
6768/*gpufun*/
6869void EverestBlock_track_local_particle (EverestBlockData el , LocalParticle * part0 ) {
6970 int8_t active = EverestBlockData_get__tracking (el );
7071 double const length = EverestBlockData_get_length (el );
71- int8_t const only_mcs = EverestBlockData_get__only_mcs (el );
7272
7373 // Initialise collimator data
7474 // TODO: we want this to happen before tracking (instead of every turn), as a separate kernel
@@ -84,7 +84,7 @@ void EverestBlock_track_local_particle(EverestBlockData el, LocalParticle* part0
8484 int8_t is_valid = xcoll_check_particle_init (coll -> rng , part );
8585
8686 if (is_valid ) {
87- EverestData everest = EverestBlock_init_data (part , coll , only_mcs );
87+ EverestData everest = EverestBlock_init_data (part , coll );
8888 double const e0 = LocalParticle_get_energy0 (part ) / 1.e9 ; // Reference energy in GeV
8989 double const p0 = LocalParticle_get_p0c (part ) / 1e9 ; // Reference momentum in GeV
9090 double const mass_ratio = LocalParticle_get_charge_ratio (part ) / LocalParticle_get_chi (part ); // m/m0
@@ -95,7 +95,7 @@ void EverestBlock_track_local_particle(EverestBlockData el, LocalParticle* part0
9595 double const px_in = LocalParticle_get_px (part );
9696 double const py_in = LocalParticle_get_py (part );
9797
98- double * result = jaw (everest , part , energy , length , only_mcs , 0 );
98+ double * result = jaw (everest , part , energy , length , 0 );
9999 energy = result [0 ];
100100 if (result [1 ] == 1 ){ is_abs = 1 ; }
101101 double s_out = result [2 ];
0 commit comments