CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
hitfit::EtaDepResolution Class Reference

Hold on to $\eta$-dependent resolution. This class acts as a function object and returns Vector_Resolution as a function of $\eta$. It does not assume symmetry between $+\eta$ and $-\eta$. The interpretation of $\eta$ as physics $\eta$ or detector $\eta$ is left to users's implementation. More...

#include <EtaDepResolution.h>

Public Member Functions

const bool CheckEta (double eta) const
 Check is an input $\eta$ value is within the valid $\eta$-range of this instance. More...
 
bool CheckNoOverlap (const std::vector< EtaDepResElement > &v)
 Check for non-overlapping $\eta$-range between $\eta$-dependent resolution elements in a list. More...
 
 EtaDepResolution ()
 Default constructor, instantiate an EtaDepResolution object with empty list of $\eta$-dependent resolution elements. More...
 
 EtaDepResolution (const std::string &default_file)
 Instantiate an EtaDepResolution object with a filename which contains information about $\eta$-dependent resolution. More...
 
const double EtaMax () const
 Return the upper limit of the valid $\eta$-range. More...
 
const double EtaMin () const
 Return the lower limit of the valid $\eta$-range. More...
 
EtaDepResElement GetEtaDepResElement (double &eta) const
 Return the corresponding $\eta$-dependent resolution element (of type EtaDepResElement)for a value of $\eta$. More...
 
const std::vector
< EtaDepResElement
GetEtaDepResElement () const
 Access the internal list of $\eta$-dependent resolution elements. More...
 
Vector_Resolution GetResolution (double &eta) const
 Return the corresponding resolution for a value of $\eta$. More...
 
Vector_Resolution operator() (double &eta)
 Allow users to call this instance as a function to access the corresponding resolution for an input value of $\eta$. More...
 
std::vector< EtaDepResElement >
::size_type 
Read (const std::string &default_file)
 Read the $\eta$-dependent resolution information from an ASCII text file. More...
 
std::vector< EtaDepResElement >
::size_type 
Read (const Defaults_Text &defs)
 Read the $\eta$-dependent resolution information from a Defaults_Text object. More...
 
void sort ()
 
 ~EtaDepResolution ()
 

Private Member Functions

std::vector< EtaDepResElement >
::const_iterator 
FindResolution (double &eta) const
 Internal method to return the corresponding $\eta$-dependent resolution element for a given $\eta$ value. More...
 

Private Attributes

std::vector< EtaDepResElement_EtaDepResElement
 

Detailed Description

Hold on to $\eta$-dependent resolution. This class acts as a function object and returns Vector_Resolution as a function of $\eta$. It does not assume symmetry between $+\eta$ and $-\eta$. The interpretation of $\eta$ as physics $\eta$ or detector $\eta$ is left to users's implementation.

Usage:
Users should write the $\eta$-dependent resolution in a plain ASCII text file with the following format:

etadep_etaminX = etamin

etadep_etamaxX = etamax

etadep_vecresX = vecres

where:

X is an integer starting from 0 (0, 1, 2, 3, ...). Users can write as many resolutions as long as each of them has different integer, and complete information regarding $\eta$ range an resolution.

etamin is a floating-point number, the lower limit of the valid $\eta$ range.

etamax is a floating-point number, the upper limit of the valid $\eta$ range.

vecres is a string-encoded Vector_Resolution, see the documentation for Vector_Resolution class for details.

The constructor will read the ASCII text file and read all resolutions in the file. Then it will instantiate the EtaDepResolution and sort the internal list of EtaDepResElement.

Author
Haryo Sumowidagdo Suhar.nosp@m.yo.S.nosp@m.umowi.nosp@m.dagd.nosp@m.o@cer.nosp@m.n.ch
Creation date:
June 2009.

Definition at line 88 of file EtaDepResolution.h.

Constructor & Destructor Documentation

hitfit::EtaDepResolution::EtaDepResolution ( )

Default constructor, instantiate an EtaDepResolution object with empty list of $\eta$-dependent resolution elements.

Definition at line 56 of file EtaDepResolution.cc.

57 {
58 }
hitfit::EtaDepResolution::EtaDepResolution ( const std::string &  default_file)

Instantiate an EtaDepResolution object with a filename which contains information about $\eta$-dependent resolution.

Parameters
default_fileThe input ASCII text file.

Definition at line 61 of file EtaDepResolution.cc.

References Read().

62 {
63  Read(default_file);
64 }
std::vector< EtaDepResElement >::size_type Read(const std::string &default_file)
Read the -dependent resolution information from an ASCII text file.
hitfit::EtaDepResolution::~EtaDepResolution ( )

Destructor.

Definition at line 67 of file EtaDepResolution.cc.

68 {
69 }

Member Function Documentation

const bool hitfit::EtaDepResolution::CheckEta ( double  eta) const

Check is an input $\eta$ value is within the valid $\eta$-range of this instance.

Parameters
etaThe $\eta$ value to be check.
Return:
true if eta is within the valid $\eta$-range.
false if is not within the valid $\eta$-range.

Definition at line 165 of file EtaDepResolution.cc.

References _EtaDepResElement, and FindResolution().

166 {
167  return FindResolution(eta) != _EtaDepResElement.end();
168 }
std::vector< EtaDepResElement >::const_iterator FindResolution(double &eta) const
Internal method to return the corresponding -dependent resolution element for a given value...
T eta() const
std::vector< EtaDepResElement > _EtaDepResElement
bool hitfit::EtaDepResolution::CheckNoOverlap ( const std::vector< EtaDepResElement > &  v)

Check for non-overlapping $\eta$-range between $\eta$-dependent resolution elements in a list.

Parameters
vThe list of $\eta$-dependent resolution elements to check.
Return:
true if there is no overlap.
false if there is overlap.

Definition at line 127 of file EtaDepResolution.cc.

References i, and j.

Referenced by Read().

128 {
130  i != v.size() ;
131  i++) {
133  j != v.size() ;
134  j++) {
135  if (v[i].IsOverlap(v[j])) {
136  return false;
137  }
138  }
139  }
140  return true;
141 }
int i
Definition: DBlmapReader.cc:9
uint16_t size_type
int j
Definition: DBlmapReader.cc:9
const double hitfit::EtaDepResolution::EtaMax ( ) const

Return the upper limit of the valid $\eta$-range.

Definition at line 155 of file EtaDepResolution.cc.

References _EtaDepResElement.

156 {
157  if (!(_EtaDepResElement.empty())) {
158  return _EtaDepResElement.back().EtaMax();
159  }
160  return -999.; // a ridiculously negative large number
161 }
std::vector< EtaDepResElement > _EtaDepResElement
const double hitfit::EtaDepResolution::EtaMin ( ) const

Return the lower limit of the valid $\eta$-range.

Definition at line 145 of file EtaDepResolution.cc.

References _EtaDepResElement.

146 {
147  if (!(_EtaDepResElement.empty())) {
148  return _EtaDepResElement.front().EtaMin();
149  }
150  return 999.; // a ridiculously positive large number
151 }
std::vector< EtaDepResElement > _EtaDepResElement
std::vector< EtaDepResElement >::const_iterator hitfit::EtaDepResolution::FindResolution ( double &  eta) const
private

Internal method to return the corresponding $\eta$-dependent resolution element for a given $\eta$ value.

Parameters
etaThe value of $\eta$ whose corresponding resolution is to be found.
Return:
An iterator (pointer) to the corresponding $\eta$-dependent resolution element.

Definition at line 34 of file EtaDepResolution.cc.

References _EtaDepResElement.

Referenced by CheckEta(), GetEtaDepResElement(), and GetResolution().

35 {
36 
37  for (std::vector<EtaDepResElement>::const_iterator res = _EtaDepResElement.begin() ;
38  res != _EtaDepResElement.end() ;
39  ++res) {
40  if (res->IsInInterval(eta) || res->IsOnEdge(eta)) {
41  return res;
42  }
43  }
44  return _EtaDepResElement.end() ;
45 
46 }
T eta() const
std::vector< EtaDepResElement > _EtaDepResElement
EtaDepResElement hitfit::EtaDepResolution::GetEtaDepResElement ( double &  eta) const

Return the corresponding $\eta$-dependent resolution element (of type EtaDepResElement)for a value of $\eta$.

Parameters
etaThe $\eta$ value for which the corresponding element
Return:
The corresponding element if the input $\eta$ value is valid. Throw a runtime error if the $\eta$ value is invalid.

Definition at line 195 of file EtaDepResolution.cc.

References FindResolution().

196 {
197  return *(FindResolution(eta));
198 }
std::vector< EtaDepResElement >::const_iterator FindResolution(double &eta) const
Internal method to return the corresponding -dependent resolution element for a given value...
T eta() const
const std::vector< EtaDepResElement > hitfit::EtaDepResolution::GetEtaDepResElement ( ) const

Access the internal list of $\eta$-dependent resolution elements.

Return:
The list of $\eta$-dependent resolution elements.

Definition at line 202 of file EtaDepResolution.cc.

References _EtaDepResElement.

203 {
204  return _EtaDepResElement;
205 }
std::vector< EtaDepResElement > _EtaDepResElement
Vector_Resolution hitfit::EtaDepResolution::GetResolution ( double &  eta) const

Return the corresponding resolution for a value of $\eta$.

Parameters
etaThe $\eta$ value for which the corresponding resolution is desired.
Return:
The corresponding resolution if the input $\eta$ value is valid. Throw a runtime error if the $\eta$ value is invalid.

Definition at line 179 of file EtaDepResolution.cc.

References _EtaDepResElement, FindResolution(), and python.rootplot.argparse::message.

Referenced by operator()().

180 {
181 
182  std::vector<EtaDepResElement>::const_iterator etaDepResEleVecIter = FindResolution(eta);
183  if (etaDepResEleVecIter != _EtaDepResElement.end()) {
184  return etaDepResEleVecIter->GetResolution();
185  }
186 
187  std::stringstream message;
188  message << "Error, the given eta value : "
189  << eta << " is not inside the valid eta range!" ;
190 
191  throw std::runtime_error(message.str());
192 }
std::vector< EtaDepResElement >::const_iterator FindResolution(double &eta) const
Internal method to return the corresponding -dependent resolution element for a given value...
T eta() const
std::vector< EtaDepResElement > _EtaDepResElement
Vector_Resolution hitfit::EtaDepResolution::operator() ( double &  eta)

Allow users to call this instance as a function to access the corresponding resolution for an input value of $\eta$.

Parameters
etaThe $\eta$ value for which the corresponding resolution is desired.
Return:
The corresponding resolution if the input $\eta$ value is valid. Throw a runtime error if the $\eta$ value is invalid.

Definition at line 172 of file EtaDepResolution.cc.

References GetResolution().

173 {
174  return GetResolution(eta);
175 }
T eta() const
Vector_Resolution GetResolution(double &eta) const
Return the corresponding resolution for a value of .
std::vector< EtaDepResElement >::size_type hitfit::EtaDepResolution::Read ( const std::string &  default_file)

Read the $\eta$-dependent resolution information from an ASCII text file.

Parameters
default_fileThe ASCII text file to read.
Return:
The number of $\eta$-dependent resolution element read from the file.

Definition at line 73 of file EtaDepResolution.cc.

References _EtaDepResElement.

Referenced by EtaDepResolution().

74 {
75  const Defaults_Text defs(default_file);
76  Read(defs);
77  return _EtaDepResElement.size();
78 }
std::vector< EtaDepResElement >::size_type Read(const std::string &default_file)
Read the -dependent resolution information from an ASCII text file.
std::vector< EtaDepResElement > _EtaDepResElement
std::vector< EtaDepResElement >::size_type hitfit::EtaDepResolution::Read ( const Defaults_Text defs)

Read the $\eta$-dependent resolution information from a Defaults_Text object.

Parameters
defsThe Defaults_Text object to read.
Return:
The number of $\eta$-dependent resolution element read from the file.

Definition at line 82 of file EtaDepResolution.cc.

References _EtaDepResElement, CheckNoOverlap(), hitfit::Defaults_Text::exists(), hitfit::Defaults_Text::get_float(), hitfit::Defaults_Text::get_string(), i, and sort().

83 {
84 
85  _EtaDepResElement.clear();
86 
88  ;
89  ++i) {
90 
91  std::ostringstream os_etamin ;
92  std::ostringstream os_etamax ;
93  std::ostringstream os_res ;
94 
95  os_etamin << "etadep_etamin" << i ;
96  os_etamax << "etadep_etamax" << i ;
97  os_res << "etadep_vecres" << i ;
98 
99  if (defs.exists(os_etamin.str()) &&
100  defs.exists(os_etamax.str()) &&
101  defs.exists(os_res.str())) {
102 
103  double etamin = defs.get_float(os_etamin.str());
104  double etamax = defs.get_float(os_etamax.str());
105  Vector_Resolution res(defs.get_string(os_res.str()));
106  _EtaDepResElement.push_back(EtaDepResElement(etamin,etamax,res));
107 
108  }
109  else {
110  break;
111  }
112 
113  }
114 
116  sort();
117  } else {
118  _EtaDepResElement.clear();
119  }
120 
121  return _EtaDepResElement.size();
122 
123 }
int i
Definition: DBlmapReader.cc:9
bool CheckNoOverlap(const std::vector< EtaDepResElement > &v)
Check for non-overlapping -range between -dependent resolution elements in a list.
uint16_t size_type
std::vector< EtaDepResElement > _EtaDepResElement
void hitfit::EtaDepResolution::sort ( )

Sort the internal list of $\eta$-dependent resolution elements.

Definition at line 50 of file EtaDepResolution.cc.

References _EtaDepResElement.

Referenced by Read().

51 {
52  std::stable_sort(_EtaDepResElement.begin(),_EtaDepResElement.end());
53 }
std::vector< EtaDepResElement > _EtaDepResElement

Member Data Documentation

std::vector<EtaDepResElement> hitfit::EtaDepResolution::_EtaDepResElement
private

List of $\eta$-dependent resolution elements.

Definition at line 95 of file EtaDepResolution.h.

Referenced by CheckEta(), EtaMax(), EtaMin(), FindResolution(), GetEtaDepResElement(), GetResolution(), Read(), and sort().