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