|
||||
File indexing completed on 2024-04-06 12:31:17
0001 // 0002 // 0003 // CMSSW File : interface/EtaDepResolution.h 0004 // Original Author : Haryo Sumowidagdo <Suharyo.Sumowidagdo@cern.ch> 0005 // Purpose : Hold on to eta-dependent resolution. 0006 // Return Vector_Resolution as a function of eta. 0007 // Does not assume symmetry between +/- eta. 0008 // The interpretation of eta (physics or detector) is 0009 // left to user's implementation. 0010 // 0011 0012 /** 0013 0014 @file EtaDepResolution.h 0015 0016 @brief Hold on to \f$\eta\f$-dependent resolution. 0017 This class acts 0018 as a function object and returns Vector_Resolution as a function 0019 of \f$\eta\f$. It does not assume symmetry between \f$+\eta\f$ and 0020 \f$-\eta\f$. The interpretation of \f$\eta\f$ as physics \f$\eta\f$ 0021 or detector \f$\eta\f$ is left to users's implementation. 0022 0023 @author 0024 Haryo Sumowidagdo <Suharyo.Sumowidagdo@cern.ch> 0025 0026 @par Creation date: 0027 June 2009 0028 0029 */ 0030 0031 #ifndef HITFIT_ETA_DEP_RESOLUTION 0032 #define HITFIT_ETA_DEP_RESOLUTION 0033 0034 #include "TopQuarkAnalysis/TopHitFit/interface/Defaults_Text.h" 0035 #include "TopQuarkAnalysis/TopHitFit/interface/Vector_Resolution.h" 0036 #include "TopQuarkAnalysis/TopHitFit/interface/EtaDepResElement.h" 0037 0038 namespace hitfit { 0039 0040 /** 0041 @class EtaDepResolution 0042 0043 @brief Hold on to \f$\eta\f$-dependent resolution. This class acts 0044 as a function object and returns Vector_Resolution as a function 0045 of \f$\eta\f$. It does not assume symmetry between \f$+\eta\f$ and 0046 \f$-\eta\f$. The interpretation of \f$\eta\f$ as physics \f$\eta\f$ 0047 or detector \f$\eta\f$ is left to users's implementation. 0048 0049 @par Usage: 0050 Users should write the \f$\eta\f$-dependent resolution in a plain ASCII 0051 text file with the following format:<br> 0052 0053 etadep_etaminX = etamin 0054 0055 etadep_etamaxX = etamax 0056 0057 etadep_vecresX = vecres 0058 0059 where: 0060 0061 <b>X</b> is an integer starting from 0 (0, 1, 2, 3, ...). Users can 0062 write as many resolutions as long as each of them has different 0063 integer, and complete information regarding \f$\eta\f$ range an 0064 resolution. 0065 0066 <b>etamin</b> is a floating-point number, the lower limit of the valid 0067 \f$\eta\f$ range. 0068 0069 <b>etamax</b> is a floating-point number, the upper limit of the valid 0070 \f$\eta\f$ range. 0071 0072 <b>vecres</b> is a string-encoded Vector_Resolution, see the 0073 documentation for Vector_Resolution class for details. 0074 0075 The constructor will read the ASCII text file and read all resolutions 0076 in the file. Then it will instantiate the EtaDepResolution and sort 0077 the internal list of EtaDepResElement. 0078 0079 @author 0080 Haryo Sumowidagdo <Suharyo.Sumowidagdo@cern.ch> 0081 0082 @par Creation date: 0083 June 2009. 0084 0085 */ 0086 class EtaDepResolution { 0087 private: 0088 /** 0089 List of \f$\eta\f$-dependent resolution elements. 0090 */ 0091 std::vector<EtaDepResElement> _EtaDepResElement; 0092 0093 /** 0094 @brief Internal method to return the corresponding \f$\eta\f$-dependent 0095 resolution element for a given \f$\eta\f$ value. 0096 @param eta The value of \f$\eta\f$ whose corresponding resolution 0097 is to be found. 0098 @par Return: 0099 An iterator (pointer) to the corresponding \f$\eta\f$-dependent 0100 resolution element. 0101 */ 0102 std::vector<EtaDepResElement>::const_iterator FindResolution(double& eta) const; 0103 0104 public: 0105 /** 0106 Sort the internal list of \f$\eta\f$-dependent resolution elements. 0107 */ 0108 void sort(); 0109 0110 /** 0111 @brief Default constructor, instantiate an EtaDepResolution 0112 object with empty list of \f$\eta\f$-dependent resolution elements. 0113 */ 0114 EtaDepResolution(); 0115 0116 /** 0117 @brief Instantiate an EtaDepResolution 0118 object with a filename which contains information about 0119 \f$\eta\f$-dependent resolution. 0120 @param default_file The input ASCII text file. 0121 */ 0122 EtaDepResolution(const std::string& default_file); 0123 0124 /** 0125 Destructor. 0126 */ 0127 ~EtaDepResolution(); 0128 0129 /** 0130 @brief Read the \f$\eta\f$-dependent resolution information 0131 from an ASCII text file. 0132 @param default_file The ASCII text file to read. 0133 @par Return: 0134 The number of \f$\eta\f$-dependent resolution element read from the file. 0135 */ 0136 std::vector<EtaDepResElement>::size_type Read(const std::string& default_file); 0137 0138 /** 0139 @brief Read the \f$\eta\f$-dependent resolution information 0140 from a Defaults_Text object. 0141 @param defs The Defaults_Text object to read. 0142 @par Return: 0143 The number of \f$\eta\f$-dependent resolution element read from the file. 0144 */ 0145 std::vector<EtaDepResElement>::size_type Read(const Defaults_Text& defs); 0146 0147 /** 0148 @brief Check for non-overlapping \f$\eta\f$-range between 0149 \f$\eta\f$-dependent resolution elements in a list. 0150 @param v The list of \f$\eta\f$-dependent resolution elements to check. 0151 @par Return: 0152 <b>true</b> if there is no overlap.<br> 0153 <b>false</b> if there is overlap. 0154 */ 0155 bool CheckNoOverlap(const std::vector<EtaDepResElement>& v); 0156 0157 /** 0158 @brief Return the lower limit of the valid \f$\eta\f$-range. 0159 */ 0160 const double EtaMin() const; 0161 0162 /** 0163 @brief Return the upper limit of the valid \f$\eta\f$-range. 0164 */ 0165 const double EtaMax() const; 0166 0167 /** 0168 @brief Check is an input \f$\eta\f$ value is within the valid \f$\eta\f$-range 0169 of this instance. 0170 @param eta The \f$\eta\f$ value to be check. 0171 @par Return: 0172 <b>true</b> if <i>eta</i> is within the valid \f$\eta\f$-range.<br> 0173 <b>false</b> if is not within the valid \f$\eta\f$-range. 0174 */ 0175 const bool CheckEta(double eta) const; 0176 0177 /** 0178 @brief Allow users to call this instance as a function to access 0179 the corresponding resolution for an input value of \f$\eta\f$. 0180 @param eta The \f$\eta\f$ value for which the corresponding resolution is desired. 0181 @par Return: 0182 The corresponding resolution if the input \f$\eta\f$ value is valid. 0183 Throw a runtime error if the \f$\eta\f$ value is invalid. 0184 */ 0185 Vector_Resolution operator()(double& eta); 0186 0187 /** 0188 @brief Return the corresponding resolution for a value of \f$\eta\f$. 0189 @param eta The \f$\eta\f$ value for which the corresponding resolution is desired. 0190 @par Return: 0191 The corresponding resolution if the input \f$\eta\f$ value is valid. 0192 Throw a runtime error if the \f$\eta\f$ value is invalid. 0193 */ 0194 Vector_Resolution GetResolution(double& eta) const; 0195 0196 /** 0197 @brief Return the corresponding \f$\eta\f$-dependent resolution element 0198 (of type EtaDepResElement)for a value of \f$\eta\f$. 0199 @param eta The \f$\eta\f$ value for which the corresponding element 0200 @par Return: 0201 The corresponding element if the input \f$\eta\f$ value is valid. 0202 Throw a runtime error if the \f$\eta\f$ value is invalid. 0203 */ 0204 EtaDepResElement GetEtaDepResElement(double& eta) const; 0205 0206 /** 0207 @brief Access the internal list of \f$\eta\f$-dependent resolution 0208 elements. 0209 @par Return: 0210 The list of \f$\eta\f$-dependent resolution elements. 0211 */ 0212 const std::vector<EtaDepResElement> GetEtaDepResElement() const; 0213 }; 0214 0215 } // namespace hitfit 0216 #endif // not #ifndef HITFIT_ETA_DEP_RESOLUTION
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.2.1 LXR engine. The LXR team |