File indexing completed on 2026-04-09 07:49:11
0001
0002 void QSim::cerenkov_photon( quad4* photon, unsigned num_photon )
0003 {
0004 configureLaunch(num_photon, 1 );
0005 quad4* d_photon = QU::device_alloc<quad4>(num_photon);
0006 QSim_cerenkov_photon(numBlocks, threadsPerBlock, d_sim, d_photon, num_photon );
0007 QU::copy_device_to_host_and_free<quad4>( photon, d_photon, num_photon );
0008 }
0009
0010 template<typename T>
0011 void QSim::cerenkov_photon_enprop( quad4* photon, unsigned num_photon )
0012 {
0013 configureLaunch(num_photon, 1 );
0014 quad4* d_photon = QU::device_alloc<quad4>(num_photon);
0015 QSim_cerenkov_photon_enprop<T>(numBlocks, threadsPerBlock, d_sim, d_photon, num_photon );
0016 QU::copy_device_to_host_and_free<quad4>( photon, d_photon, num_photon );
0017 }
0018
0019 template void QSim::cerenkov_photon_enprop<float>( quad4*, unsigned );
0020 template void QSim::cerenkov_photon_enprop<double>( quad4*, unsigned );
0021
0022 void QSim::cerenkov_photon_expt( quad4* photon, unsigned num_photon )
0023 {
0024 configureLaunch(num_photon, 1 );
0025 quad4* d_photon = QU::device_alloc<quad4>(num_photon);
0026 QSim_cerenkov_photon_expt(numBlocks, threadsPerBlock, d_sim, d_photon, num_photon );
0027 QU::copy_device_to_host_and_free<quad4>( photon, d_photon, num_photon );
0028 }
0029
0030
0031
0032 extern void QSim_cerenkov_wavelength_rejection_sampled(dim3 numBlocks, dim3 threadsPerBlock, qsim* d_sim, float* wavelength, unsigned num_wavelength );
0033
0034 NP* QSim::cerenkov_wavelength_rejection_sampled(unsigned num_wavelength )
0035 {
0036 LOG(LEVEL) << "[ num_wavelength " << num_wavelength ;
0037
0038 configureLaunch(num_wavelength, 1 );
0039
0040 float* d_wavelength = QU::device_alloc<float>(num_wavelength);
0041
0042 QSim_cerenkov_wavelength_rejection_sampled(numBlocks, threadsPerBlock, d_sim, d_wavelength, num_wavelength );
0043
0044 NP* w = NP::Make<float>(num_wavelength) ;
0045
0046 QU::copy_device_to_host_and_free<float>( (float*)w->bytes(), d_wavelength, num_wavelength );
0047
0048 LOG(LEVEL) << "]" ;
0049
0050 return w ;
0051 }
0052
0053
0054
0055
0056 extern void QSim_cerenkov_generate(dim3 numBlocks, dim3 threadsPerBlock, qsim* d_sim, quad4* photon, unsigned num_photon );
0057
0058 template <typename T>
0059 extern void QSim_cerenkov_generate_enprop(dim3 numBlocks, dim3 threadsPerBlock, qsim* d_sim, quad4* photon, unsigned num_photon );
0060
0061 extern void QSim_cerenkov_generate_expt(dim3 numBlocks, dim3 threadsPerBlock, qsim* d_sim, quad4* photon, unsigned num_photon );
0062
0063
0064
0065 NP* QSim::cerenkov_generate(unsigned num_photon, unsigned test )
0066 {
0067 configureLaunch(num_photon, 1 );
0068 quad4* d_photon = QU::device_alloc<quad4>(num_photon);
0069
0070 switch(test)
0071 {
0072 case CERENKOV_GENERATE: QSim_cerenkov_generate( numBlocks, threadsPerBlock, d_sim, d_photon, num_photon ); break ;
0073 case CERENKOV_GENERATE_ENPROP_FLOAT: QSim_cerenkov_generate_enprop<float>(numBlocks, threadsPerBlock, d_sim, d_photon, num_photon ); break ;
0074 case CERENKOV_GENERATE_ENPROP_DOUBLE: QSim_cerenkov_generate_enprop<double>(numBlocks, threadsPerBlock, d_sim, d_photon, num_photon ); break ;
0075 case CERENKOV_GENERATE_EXPT: QSim_cerenkov_generate_expt( numBlocks, threadsPerBlock, d_sim, d_photon, num_photon ); break ;
0076 }
0077
0078 NP* p = NP::Make<float>( num_photon, 4, 4);
0079 quad4* pp = (quad4*)p->bytes() ;
0080 QU::copy_device_to_host_and_free<quad4>( pp, d_photon, num_photon );
0081 return p ;
0082 }
0083
0084
0085