File indexing completed on 2024-04-06 11:56:05
0001
0002
0003
0004
0005
0006
0007 #include <fstream>
0008
0009 #include "Alignment/CocoaUtilities/interface/GlobalOptionMgr.h"
0010 #include <iostream>
0011 #include <iomanip>
0012 #include "Alignment/CocoaUtilities/interface/ALIUtils.h"
0013 #include "Alignment/CocoaUtilities/interface/ALIFileIn.h"
0014 #include <cstdlib>
0015
0016 GlobalOptionMgr* GlobalOptionMgr::theInstance = nullptr;
0017
0018 GlobalOptionMgr* GlobalOptionMgr::getInstance() {
0019 if (!theInstance) {
0020 theInstance = new GlobalOptionMgr;
0021 }
0022
0023 return theInstance;
0024 }
0025
0026
0027 void GlobalOptionMgr::setDefaultGlobalOptions() {
0028 theGlobalOptions[ALIstring("report_verbose")] = 3;
0029 theGlobalOptions[ALIstring("debug_verbose")] = 0;
0030
0031 theGlobalOptions[ALIstring("saveMatrices")] = 1;
0032
0033 theGlobalOptions[ALIstring("calcul_type")] = 0;
0034 theGlobalOptions[ALIstring("length_value_dimension")] = 0;
0035 theGlobalOptions[ALIstring("length_error_dimension")] = 0;
0036 theGlobalOptions[ALIstring("angle_value_dimension")] = 0;
0037 theGlobalOptions[ALIstring("angle_error_dimension")] = 0;
0038 theGlobalOptions[ALIstring("output_length_value_dimension")] = 0;
0039 theGlobalOptions[ALIstring("output_length_error_dimension")] = 0;
0040 theGlobalOptions[ALIstring("output_angle_value_dimension")] = 0;
0041 theGlobalOptions[ALIstring("output_angle_error_dimension")] = 0;
0042 theGlobalOptions[ALIstring("checkExtraEntries")] = 0;
0043 theGlobalOptions[ALIstring("cms_link")] = 0;
0044 theGlobalOptions[ALIstring("cms_link_halfplanes")] = 0;
0045 theGlobalOptions[ALIstring("cms_link_method")] = 0;
0046 theGlobalOptions[ALIstring("range_studies")] = 0;
0047 theGlobalOptions[ALIstring("histograms")] = 0;
0048 theGlobalOptions[ALIstring("onlyDeriv")] = 0;
0049 theGlobalOptions[ALIstring("onlyFirstPropagation")] = 0;
0050
0051 theGlobalOptions[ALIstring("VisWriteVRML")] = 0;
0052 theGlobalOptions[ALIstring("VisWriteIguana")] = 0;
0053 theGlobalOptions[ALIstring("VisOnly")] = 0;
0054 theGlobalOptions[ALIstring("VisWriteOptONames")] = 1;
0055 theGlobalOptions[ALIstring("VisGlobalRotationX")] = 0.;
0056 theGlobalOptions[ALIstring("VisGlobalRotationY")] = 0.;
0057 theGlobalOptions[ALIstring("VisGlobalRotationZ")] = 0.;
0058 theGlobalOptions[ALIstring("VisScale")] = 1.;
0059 theGlobalOptions[ALIstring("tiltmeter_meas_value_dimension")] = 0;
0060 theGlobalOptions[ALIstring("distancemeter_meas_value_dimension")] = 0;
0061 theGlobalOptions[ALIstring("dumpDateInFittedEntries")] = 0;
0062 theGlobalOptions[ALIstring("measurementErrorFromFile")] = 0;
0063
0064 theGlobalOptions[ALIstring("maxNoFitIterations")] = 50;
0065 theGlobalOptions[ALIstring("fitQualityCut")] = 0.1;
0066 theGlobalOptions[ALIstring("relativeFitQualityCut")] = 1.E-6;
0067
0068 theGlobalOptions[ALIstring("maxEvents")] = 1.E6;
0069
0070
0071 theGlobalOptions[ALIstring("deviffValDimf")] = 1.;
0072 theGlobalOptions[ALIstring("deviffAngDimf")] = 1.;
0073 theGlobalOptions[ALIstring("rotateAroundLocal")] = 1;
0074 theGlobalOptions[ALIstring("reportOutEntriesByShortName")] = 0;
0075 theGlobalOptions[ALIstring("reportOutReadValue")] = 1;
0076 theGlobalOptions[ALIstring("reportOutReadSigma")] = 1;
0077 theGlobalOptions[ALIstring("reportOutReadQuality")] = 1;
0078 theGlobalOptions[ALIstring("maxDeviDerivative")] = 1.E-6;
0079
0080 theGlobalOptions[ALIstring("stopAfter1stIteration")] = 0;
0081 theGlobalOptions[ALIstring("calParamInyfMatrix")] = 0;
0082 theGlobalOptions[ALIstring("writeXML")] = 1;
0083 theGlobalOptions[ALIstring("dumpInAllFrames")] = 0;
0084 theGlobalOptions[ALIstring("rootResults")] = 0;
0085 theGlobalOptions[ALIstring("writeDBAlign")] = 0;
0086 theGlobalOptions[ALIstring("writeDBOptAlign")] = 0;
0087 }
0088
0089
0090 ALIdouble GlobalOptionMgr::getGlobalOption(const ALIstring& sstr) {
0091 ALIdouble val = 0.;
0092
0093 std::map<ALIstring, ALIdouble, std::less<ALIstring> >::const_iterator msdcite = GlobalOptions().find(sstr);
0094
0095
0096 if (ALIUtils::debug >= 6) {
0097 std::cout << "Global Option " << (*msdcite).first << " = " << (*msdcite).second << std::endl;
0098 }
0099
0100 if (msdcite == GlobalOptions().end()) {
0101
0102 std::cerr << " !!! FATAL ERROR: trying to get the value of an unknown Global Option : " << sstr << std::endl;
0103 abort();
0104 } else {
0105
0106
0107
0108 val = (*msdcite).second;
0109 }
0110
0111 return val;
0112 }
0113
0114
0115 ALIint GlobalOptionMgr::getGlobalOptionValue(const ALIstring& sstr, ALIdouble& val) {
0116
0117 std::map<ALIstring, ALIdouble, std::less<ALIstring> >::const_iterator msdcite = GlobalOptions().find(sstr);
0118
0119
0120 if (ALIUtils::debug >= 6) {
0121 std::cout << "Global Option " << (*msdcite).first << " = " << (*msdcite).second << std::endl;
0122 }
0123
0124 if (msdcite == GlobalOptions().end()) {
0125
0126 return 0;
0127 } else {
0128
0129
0130
0131 val = (*msdcite).second;
0132 return 1;
0133 }
0134 }
0135
0136
0137 void GlobalOptionMgr::setGlobalOption(const ALIstring gopt, const ALIdouble val, ALIFileIn& filein) {
0138 if (!setGlobalOption(gopt, val, false)) {
0139 filein.ErrorInLine();
0140 std::cerr << "!!! global option not found: " << gopt << std::endl;
0141 if (ALIUtils::debug >= 3) {
0142 std::cout << "ALLOWED GLOBAL OPTIONS:" << std::endl;
0143 std::map<ALIstring, ALIdouble, std::less<ALIstring> >::iterator msdite;
0144 for (msdite = theGlobalOptions.begin(); msdite != theGlobalOptions.end(); ++msdite) {
0145 std::cout << (*msdite).first.c_str() << std::endl;
0146 }
0147 }
0148 exit(2);
0149 }
0150 }
0151
0152
0153 bool GlobalOptionMgr::setGlobalOption(const ALIstring gopt, const ALIdouble val, bool bExit) {
0154
0155 if (GlobalOptions().find(gopt) != GlobalOptions().end()) {
0156 theGlobalOptions[gopt] = val;
0157
0158 if (gopt == "report_verbose") {
0159 ALIUtils::setReportVerbosity(ALIint(val));
0160 }
0161 if (gopt == "debug_verbose") {
0162 ALIUtils::setDebugVerbosity(ALIint(val));
0163 }
0164
0165 return true;
0166
0167 } else {
0168 if (bExit) {
0169 std::cerr << "!!! global option not found: " << gopt << std::endl;
0170 exit(2);
0171 }
0172 return false;
0173 }
0174 }