File indexing completed on 2025-07-09 07:53:22
0001
0002
0003
0004 #pragma once
0005
0006 #include <spdlog/spdlog.h>
0007
0008 namespace eicrecon {
0009 class PhotoMultiplierHitDigiConfig {
0010 public:
0011
0012 std::string detectorName{""};
0013 std::string readoutClass{""};
0014
0015
0016
0017
0018
0019
0020 unsigned long seed = 1;
0021
0022
0023 double hitTimeWindow =
0024 20.0;
0025 double timeResolution = 1 / 16.0;
0026 double speMean = 80.0;
0027 double speError = 16.0;
0028 double pedMean = 200.0;
0029 double pedError = 3.0;
0030
0031
0032 bool enableNoise = false;
0033 double noiseRate = 20000;
0034 double noiseTimeWindow = 20.0;
0035
0036
0037 bool enablePixelGaps = false;
0038
0039
0040
0041
0042
0043
0044
0045 double safetyFactor = 1.0;
0046
0047
0048 bool enableQuantumEfficiency = true;
0049
0050
0051 std::vector<std::pair<double, double>> quantumEfficiency = {
0052 {315, 0.00}, {325, 0.04}, {340, 0.10}, {350, 0.20}, {370, 0.30}, {400, 0.35},
0053 {450, 0.40}, {500, 0.38}, {550, 0.35}, {600, 0.27}, {650, 0.20}, {700, 0.15},
0054 {750, 0.12}, {800, 0.08}, {850, 0.06}, {900, 0.04}, {1000, 0.00}};
0055
0056
0057
0058
0059
0060
0061
0062
0063 friend std::ostream& operator<<(std::ostream& os, const PhotoMultiplierHitDigiConfig& cfg);
0064 };
0065
0066 std::ostream& operator<<(std::ostream& os, const PhotoMultiplierHitDigiConfig& cfg) {
0067 os << fmt::format("{:=^60}", " PhotoMultiplierHitDigiConfig Settings ") << std::endl;
0068 auto print_param = [&os](auto name, auto val) {
0069 os << fmt::format(" {:>20} = {:<}", name, val) << std::endl;
0070 };
0071 print_param("seed", cfg.seed);
0072 print_param("hitTimeWindow", cfg.hitTimeWindow);
0073 print_param("timeResolution", cfg.timeResolution);
0074 print_param("speMean", cfg.speMean);
0075 print_param("speError", cfg.speError);
0076 print_param("pedMean", cfg.pedMean);
0077 print_param("pedError", cfg.pedError);
0078 print_param("enablePixelGaps", cfg.enablePixelGaps);
0079 print_param("safetyFactor", cfg.safetyFactor);
0080 print_param("enableNoise", cfg.enableNoise);
0081 print_param("noiseRate", cfg.noiseRate);
0082 print_param("noiseTimeWindow", cfg.noiseTimeWindow);
0083 os << fmt::format("{:-^60}", " Quantum Efficiency vs. Wavelength ") << std::endl;
0084 for (auto& [wl, qe] : cfg.quantumEfficiency)
0085 os << fmt::format(" {:>10} {:<}", wl, qe) << std::endl;
0086 return os;
0087 }
0088
0089 }