File indexing completed on 2023-10-25 09:37:22
0001
0002
0003
0004
0005
0006
0007 #include "CondFormats/PPSObjects/interface/PPSAlignmentConfiguration.h"
0008
0009 #include <iostream>
0010 #include <cmath>
0011 #include <iomanip>
0012
0013
0014
0015 const PPSAlignmentConfiguration::SectorConfig& PPSAlignmentConfiguration::sectorConfig45() const {
0016 return sectorConfig45_;
0017 }
0018 const PPSAlignmentConfiguration::SectorConfig& PPSAlignmentConfiguration::sectorConfig56() const {
0019 return sectorConfig56_;
0020 }
0021
0022 double PPSAlignmentConfiguration::x_ali_sh_step() const { return x_ali_sh_step_; }
0023
0024 double PPSAlignmentConfiguration::y_mode_sys_unc() const { return y_mode_sys_unc_; }
0025 double PPSAlignmentConfiguration::chiSqThreshold() const { return chiSqThreshold_; }
0026 double PPSAlignmentConfiguration::y_mode_unc_max_valid() const { return y_mode_unc_max_valid_; }
0027 double PPSAlignmentConfiguration::y_mode_max_valid() const { return y_mode_max_valid_; }
0028
0029 double PPSAlignmentConfiguration::minRPTracksSize() const { return minRPTracksSize_; }
0030 double PPSAlignmentConfiguration::maxRPTracksSize() const { return maxRPTracksSize_; }
0031 double PPSAlignmentConfiguration::n_si() const { return n_si_; }
0032
0033 const std::map<unsigned int, std::vector<PPSAlignmentConfiguration::PointErrors>>&
0034 PPSAlignmentConfiguration::matchingReferencePoints() const {
0035 return matchingReferencePoints_;
0036 }
0037 const std::map<unsigned int, PPSAlignmentConfiguration::SelectionRange>&
0038 PPSAlignmentConfiguration::matchingShiftRanges() const {
0039 return matchingShiftRanges_;
0040 }
0041
0042 const std::map<unsigned int, PPSAlignmentConfiguration::SelectionRange>&
0043 PPSAlignmentConfiguration::alignment_x_meth_o_ranges() const {
0044 return alignment_x_meth_o_ranges_;
0045 }
0046 unsigned int PPSAlignmentConfiguration::fitProfileMinBinEntries() const { return fitProfileMinBinEntries_; }
0047 unsigned int PPSAlignmentConfiguration::fitProfileMinNReasonable() const { return fitProfileMinNReasonable_; }
0048 unsigned int PPSAlignmentConfiguration::methOGraphMinN() const { return methOGraphMinN_; }
0049 double PPSAlignmentConfiguration::methOUncFitRange() const { return methOUncFitRange_; }
0050
0051 const std::map<unsigned int, PPSAlignmentConfiguration::SelectionRange>&
0052 PPSAlignmentConfiguration::alignment_x_relative_ranges() const {
0053 return alignment_x_relative_ranges_;
0054 }
0055 unsigned int PPSAlignmentConfiguration::nearFarMinEntries() const { return nearFarMinEntries_; }
0056
0057 const std::map<unsigned int, PPSAlignmentConfiguration::SelectionRange>& PPSAlignmentConfiguration::alignment_y_ranges()
0058 const {
0059 return alignment_y_ranges_;
0060 }
0061 unsigned int PPSAlignmentConfiguration::modeGraphMinN() const { return modeGraphMinN_; }
0062 unsigned int PPSAlignmentConfiguration::multSelProjYMinEntries() const { return multSelProjYMinEntries_; }
0063
0064 const PPSAlignmentConfiguration::Binning& PPSAlignmentConfiguration::binning() const { return binning_; }
0065
0066 const std::vector<double>& PPSAlignmentConfiguration::extraParams() const { return extraParams_; }
0067
0068
0069
0070 void PPSAlignmentConfiguration::setSectorConfig45(PPSAlignmentConfiguration::SectorConfig& sectorConfig45) {
0071 sectorConfig45_ = sectorConfig45;
0072 }
0073 void PPSAlignmentConfiguration::setSectorConfig56(PPSAlignmentConfiguration::SectorConfig& sectorConfig56) {
0074 sectorConfig56_ = sectorConfig56;
0075 }
0076
0077 void PPSAlignmentConfiguration::setX_ali_sh_step(double x_ali_sh_step) { x_ali_sh_step_ = x_ali_sh_step; }
0078
0079 void PPSAlignmentConfiguration::setY_mode_sys_unc(double y_mode_sys_unc) { y_mode_sys_unc_ = y_mode_sys_unc; }
0080 void PPSAlignmentConfiguration::setChiSqThreshold(double chiSqThreshold) { chiSqThreshold_ = chiSqThreshold; }
0081 void PPSAlignmentConfiguration::setY_mode_unc_max_valid(double y_mode_unc_max_valid) {
0082 y_mode_unc_max_valid_ = y_mode_unc_max_valid;
0083 }
0084 void PPSAlignmentConfiguration::setY_mode_max_valid(double y_mode_max_valid) { y_mode_max_valid_ = y_mode_max_valid; }
0085
0086 void PPSAlignmentConfiguration::setMinRPTracksSize(unsigned int minRPTracksSize) { minRPTracksSize_ = minRPTracksSize; }
0087 void PPSAlignmentConfiguration::setMaxRPTracksSize(unsigned int maxRPTracksSize) { maxRPTracksSize_ = maxRPTracksSize; }
0088 void PPSAlignmentConfiguration::setN_si(double n_si) { n_si_ = n_si; }
0089
0090 void PPSAlignmentConfiguration::setMatchingReferencePoints(
0091 std::map<unsigned int, std::vector<PPSAlignmentConfiguration::PointErrors>>& matchingReferencePoints) {
0092 matchingReferencePoints_ = matchingReferencePoints;
0093 }
0094 void PPSAlignmentConfiguration::setMatchingShiftRanges(
0095 std::map<unsigned int, PPSAlignmentConfiguration::SelectionRange>& matchingShiftRanges) {
0096 matchingShiftRanges_ = matchingShiftRanges;
0097 }
0098
0099 void PPSAlignmentConfiguration::setAlignment_x_meth_o_ranges(
0100 std::map<unsigned int, PPSAlignmentConfiguration::SelectionRange>& alignment_x_meth_o_ranges) {
0101 alignment_x_meth_o_ranges_ = alignment_x_meth_o_ranges;
0102 }
0103 void PPSAlignmentConfiguration::setFitProfileMinBinEntries(unsigned int fitProfileMinBinEntries) {
0104 fitProfileMinBinEntries_ = fitProfileMinBinEntries;
0105 }
0106 void PPSAlignmentConfiguration::setFitProfileMinNReasonable(unsigned int fitProfileMinNReasonable) {
0107 fitProfileMinNReasonable_ = fitProfileMinNReasonable;
0108 }
0109 void PPSAlignmentConfiguration::setMethOGraphMinN(unsigned int methOGraphMinN) { methOGraphMinN_ = methOGraphMinN; }
0110 void PPSAlignmentConfiguration::setMethOUncFitRange(double methOUncFitRange) { methOUncFitRange_ = methOUncFitRange; }
0111
0112 void PPSAlignmentConfiguration::setAlignment_x_relative_ranges(
0113 std::map<unsigned int, PPSAlignmentConfiguration::SelectionRange>& alignment_x_relative_ranges) {
0114 alignment_x_relative_ranges_ = alignment_x_relative_ranges;
0115 }
0116 void PPSAlignmentConfiguration::setNearFarMinEntries(unsigned int nearFarMinEntries) {
0117 nearFarMinEntries_ = nearFarMinEntries;
0118 }
0119
0120 void PPSAlignmentConfiguration::setAlignment_y_ranges(
0121 std::map<unsigned int, PPSAlignmentConfiguration::SelectionRange>& alignment_y_ranges) {
0122 alignment_y_ranges_ = alignment_y_ranges;
0123 }
0124 void PPSAlignmentConfiguration::setModeGraphMinN(unsigned int modeGraphMinN) { modeGraphMinN_ = modeGraphMinN; }
0125 void PPSAlignmentConfiguration::setMultSelProjYMinEntries(unsigned int multSelProjYMinEntries) {
0126 multSelProjYMinEntries_ = multSelProjYMinEntries;
0127 }
0128
0129 void PPSAlignmentConfiguration::setBinning(PPSAlignmentConfiguration::Binning& binning) { binning_ = binning; }
0130
0131 void PPSAlignmentConfiguration::setExtraParams(std::vector<double>& extraParams) { extraParams_ = extraParams; }
0132
0133
0134
0135 std::ostream& operator<<(std::ostream& os, const PPSAlignmentConfiguration::RPConfig& rc) {
0136 os << std::fixed << std::setprecision(3);
0137 os << " " << rc.name_ << ", id = " << rc.id_ << ", position = " << rc.position_ << ":\n";
0138 os << " slope = " << rc.slope_ << ", sh_x = " << rc.sh_x_ << "\n";
0139 os << " x_min_fit_mode = " << rc.x_min_fit_mode_ << ", x_max_fit_mode = " << rc.x_max_fit_mode_ << "\n";
0140 os << " y_max_fit_mode = " << rc.y_max_fit_mode_ << "\n";
0141 os << " y_cen_add = " << rc.y_cen_add_ << ", y_width_mult = " << rc.y_width_mult_ << "\n";
0142 os << std::setprecision(2);
0143 os << " x slices: min = " << rc.x_slice_min_ << ", w = " << rc.x_slice_w_ << ", n = " << rc.x_slice_n_;
0144
0145 return os;
0146 }
0147
0148 std::ostream& operator<<(std::ostream& os, const PPSAlignmentConfiguration::SectorConfig& sc) {
0149 os << std::fixed << std::setprecision(3);
0150 os << sc.name_ << ":\n";
0151 os << sc.rp_N_ << "\n" << sc.rp_F_ << "\n";
0152 os << std::setprecision(3);
0153 os << " slope = " << sc.slope_ << "\n";
0154 os << " cut_h: apply = " << std::boolalpha << sc.cut_h_apply_ << ", a = " << sc.cut_h_a_ << ", c = " << sc.cut_h_c_
0155 << ", si = " << sc.cut_h_si_ << "\n";
0156 os << " cut_v: apply = " << std::boolalpha << sc.cut_v_apply_ << ", a = " << sc.cut_v_a_ << ", c = " << sc.cut_v_c_
0157 << ", si = " << sc.cut_v_si_ << "\n";
0158
0159 return os;
0160 }
0161
0162 std::ostream& operator<<(std::ostream& os, const PPSAlignmentConfiguration::Binning& b) {
0163 os << " bin_size_x = " << b.bin_size_x_ << ", n_bins_x = " << b.n_bins_x_ << "\n";
0164 os << " pixel_x_offset = " << b.pixel_x_offset_ << "\n";
0165 os << " n_bins_y = " << b.n_bins_y_ << ", y_min = " << b.y_min_ << ", y_max = " << b.y_max_ << "\n";
0166 os << " diff far-near:"
0167 << "\n";
0168 os << " n_bins_x = " << b.diffFN_n_bins_x_ << ", x_min = " << b.diffFN_x_min_
0169 << ", x_max = " << b.diffFN_x_max_ << "\n";
0170 os << " slice plots:"
0171 << "\n";
0172 os << " n_bins_x = " << b.slice_n_bins_x_ << ", x_min = " << b.slice_x_min_ << ", x_max = " << b.slice_x_max_
0173 << "\n";
0174 os << " n_bins_y = " << b.slice_n_bins_y_ << ", y_min = " << b.slice_y_min_ << ", y_max = " << b.slice_y_max_;
0175
0176 return os;
0177 }
0178
0179 std::ostream& operator<<(std::ostream& os, const PPSAlignmentConfiguration& c) {
0180 os << "* " << c.sectorConfig45_ << "\n\n";
0181 os << "* " << c.sectorConfig56_ << "\n\n";
0182
0183 std::map<unsigned int, std::string> rpTags = {{c.sectorConfig45_.rp_F_.id_, c.sectorConfig45_.rp_F_.name_},
0184 {c.sectorConfig45_.rp_N_.id_, c.sectorConfig45_.rp_N_.name_},
0185 {c.sectorConfig56_.rp_N_.id_, c.sectorConfig56_.rp_N_.name_},
0186 {c.sectorConfig56_.rp_F_.id_, c.sectorConfig56_.rp_F_.name_}};
0187
0188 os << "* x alignment shift step\n";
0189 os << " x_ali_sh_step = " << c.x_ali_sh_step_ << "\n\n";
0190
0191 os << "* mode graph parameters\n";
0192 os << " y_mode_sys_unc = " << c.y_mode_sys_unc_ << "\n";
0193 os << " chiSqThreshold = " << c.chiSqThreshold_ << "\n";
0194 os << " y_mode_unc_max_valid = " << c.y_mode_unc_max_valid_ << "\n";
0195 os << " y_mode_max_valid = " << c.y_mode_max_valid_ << "\n\n";
0196
0197 os << "* selection\n";
0198 os << " min_RP_tracks_size = " << c.minRPTracksSize_ << "\n";
0199 os << " max_RP_tracks_size = " << c.maxRPTracksSize_ << "\n\n";
0200
0201 os << "* cuts\n";
0202 os << " n_si = " << c.n_si_ << "\n\n";
0203
0204 os << "* matching\n" << std::setprecision(3);
0205
0206 os << " shift ranges:\n";
0207 for (const auto& p : c.matchingShiftRanges_)
0208 os << " RP " << rpTags[p.first] << " (" << std::setw(3) << p.first << "): sh_min = " << p.second.x_min_
0209 << ", sh_max = " << p.second.x_max_ << "\n";
0210
0211 os << " reference points:\n";
0212 for (const auto& pm : c.matchingReferencePoints_) {
0213 os << " " << std::setw(3) << pm.first << ": ";
0214 for (unsigned int i = 0; i < pm.second.size(); i++) {
0215 const auto& p = pm.second[i];
0216 if (i % 5 == 0 && i > 0)
0217 os << "\n ";
0218 os << "(" << std::setw(6) << p.x_ << " +- " << p.ex_ << ", " << std::setw(6) << p.y_ << " +- " << p.ey_ << "), ";
0219 }
0220 os << "\n";
0221 }
0222
0223 os << "\n"
0224 << "* alignment_x_meth_o\n";
0225 for (const auto& p : c.alignment_x_meth_o_ranges_)
0226 os << " RP " << rpTags[p.first] << " (" << std::setw(3) << p.first << "): sh_min = " << p.second.x_min_
0227 << ", sh_max = " << p.second.x_max_ << "\n";
0228 os << " fit_profile_min_bin_entries = " << c.fitProfileMinBinEntries_ << "\n";
0229 os << " fit_profile_min_N_reasonable = " << c.fitProfileMinNReasonable_ << "\n";
0230 os << " meth_o_graph_min_N = " << c.methOGraphMinN_ << "\n";
0231 os << " meth_o_unc_fit_range = " << c.methOUncFitRange_ << "\n";
0232
0233 os << "\n"
0234 << "* alignment_x_relative\n";
0235 for (const auto& p : c.alignment_x_relative_ranges_)
0236 if (p.first == c.sectorConfig45_.rp_N_.id_ || p.first == c.sectorConfig56_.rp_N_.id_) {
0237 os << " RP " << rpTags[p.first] << " (" << std::setw(3) << p.first << "): sh_min = " << p.second.x_min_
0238 << ", sh_max = " << p.second.x_max_ << "\n";
0239 }
0240 os << " near_far_min_entries = " << c.nearFarMinEntries_ << "\n";
0241
0242 os << "\n"
0243 << "* alignment_y\n";
0244 for (const auto& p : c.alignment_y_ranges_)
0245 os << " RP " << rpTags[p.first] << " (" << std::setw(3) << p.first << "): sh_min = " << p.second.x_min_
0246 << ", sh_max = " << p.second.x_max_ << "\n";
0247 os << " mode_graph_min_N = " << c.modeGraphMinN_ << "\n";
0248 os << " mult_sel_proj_y_min_entries = " << c.multSelProjYMinEntries_ << "\n";
0249
0250 os << "\n"
0251 << "* binning\n";
0252 os << c.binning_ << "\n";
0253
0254 if (!c.extraParams_.empty()) {
0255 os << "\n";
0256 os << "extra_params:\n";
0257 for (size_t i = 0; i < c.extraParams_.size(); i++) {
0258 os << std::setw(5) << i << ": " << c.extraParams_[i] << "\n";
0259 }
0260 }
0261
0262 return os;
0263 }