Back to home page

EIC code displayed by LXR

 
 

    


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