#include #include #include #include "../common/DiffractionExperiment.h" #include "../common/AzimuthalIntegrationMapping.h" #include "../common/AzimuthalIntegrationProfile.h" #include "../common/AzimuthalIntegrationProfile.h" #include "../common/Logger.h" #include "../image_analysis/azint/AzIntEngineCPU.h" int main(int argc, char** argv) { constexpr const uint32_t nimages = 1000; DiffractionExperiment experiment(DetEIGER(18, 3, 36, 8)); AzimuthalIntegrationSettings azim_settings; azim_settings.QSpacing_recipA(0.01).QRange_recipA(0.005, 5.0).AzimuthalBinCount(64); experiment.ImportAzimuthalIntegrationSettings(azim_settings).DetectorDistance_mm(100).BeamX_pxl(1500).BeamY_pxl(1500); PixelMask pixel_mask(experiment); AzimuthalIntegrationMapping mapping(experiment, pixel_mask); spdlog::info("Bins {}", mapping.GetBinNumber()); std::vector image(experiment.GetPixelsNum()); std::mt19937 rng(42); // seed std::poisson_distribution poisson(20.0); // mean = 20 photons for (auto& pixel : image) pixel = static_cast(poisson(rng)); spdlog::info("Generated image"); AzIntEngineCPU azint_engine(mapping); AzimuthalIntegrationProfile profile(mapping); auto start_time = std::chrono::steady_clock::now(); for (int i = 0; i < nimages; i++) azint_engine.RunAzint(image, profile); auto end_time = std::chrono::steady_clock::now(); auto duration = std::chrono::duration(end_time - start_time).count(); spdlog::info("Time: {} ms", duration/nimages * 1000.0); }