File indexing completed on 2024-04-06 12:31:18
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026 #include <sstream>
0027 #include <stdexcept>
0028 #include "TopQuarkAnalysis/TopHitFit/interface/EtaDepResElement.h"
0029
0030 namespace hitfit {
0031
0032 EtaDepResElement::EtaDepResElement(double eta1, double eta2, const Vector_Resolution& res) : _Vector_Resolution(res) {
0033 SetEta(eta1, eta2);
0034 }
0035
0036 EtaDepResElement::EtaDepResElement(double eta1, double eta2, std::string res) : _Vector_Resolution(res) {
0037 SetEta(eta1, eta2);
0038 }
0039
0040 EtaDepResElement::EtaDepResElement(double eta1,
0041 double eta2,
0042 const Resolution& p_res,
0043 const Resolution& eta_res,
0044 const Resolution& phi_res,
0045 bool use_et)
0046 : _Vector_Resolution(p_res, eta_res, phi_res, use_et) {
0047 SetEta(eta1, eta2);
0048 }
0049
0050 EtaDepResElement::~EtaDepResElement() {}
0051
0052 void EtaDepResElement::SetEta(double eta1, double eta2) {
0053 if (fabs(eta1 - eta2) < (1.0 / double(InverseEtaPrecision))) {
0054 throw std::runtime_error("EtaDepResElement::equal EtaMin and EtaMax");
0055 }
0056
0057 if (eta1 < eta2) {
0058 _EtaMin = eta1;
0059 _EtaMax = eta2;
0060 } else {
0061 _EtaMin = eta2;
0062 _EtaMax = eta1;
0063 }
0064 }
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079 bool operator<(const EtaDepResElement& a, const EtaDepResElement& b) {
0080 if (a.IsOverlap(b)) {
0081 return false;
0082 }
0083 return !(a._EtaMax > b._EtaMin);
0084 }
0085
0086 const double EtaDepResElement::EtaMin() const { return _EtaMin; }
0087
0088 const double EtaDepResElement::EtaMax() const { return _EtaMax; }
0089
0090 bool EtaDepResElement::IsOverlap(const EtaDepResElement& e) const {
0091 return (IsInInterval(e._EtaMin) || IsInInterval(e._EtaMax));
0092 }
0093
0094 bool EtaDepResElement::IsNotOverlap(const EtaDepResElement& e) const { return !(IsOverlap(e)); }
0095
0096 bool EtaDepResElement::IsInInterval(const double& eta) const { return ((_EtaMin < eta) && (eta < _EtaMax)); }
0097
0098 bool EtaDepResElement::IsOnEdge(const double& eta) const {
0099 bool nearEtaMin = fabs(eta - _EtaMin) < (1.0 / double(InverseEtaPrecision));
0100 bool nearEtaMax = fabs(eta - _EtaMax) < (1.0 / double(InverseEtaPrecision));
0101 return nearEtaMin || nearEtaMax;
0102 }
0103
0104 bool EtaDepResElement::IsOnEdge(const EtaDepResElement& e) const {
0105 return (e.IsOnEdge(_EtaMin) || e.IsOnEdge(_EtaMax));
0106 }
0107
0108 const Vector_Resolution EtaDepResElement::GetResolution() const { return _Vector_Resolution; }
0109
0110 std::ostream& operator<<(std::ostream& s, const EtaDepResElement& e) {
0111 s << "(" << e._EtaMin << " to " << e._EtaMax << ")"
0112 << " / " << e.GetResolution();
0113 return s;
0114 }
0115
0116 }