CMS 3D CMS Logo

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

#include <LumiDetails.h>

Public Types

enum  Algos {
  kOCC1, kOCC2, kET, kPLT,
  kMaxNumAlgos
}
 
typedef unsigned int AlgoType
 
typedef std::pair< std::vector
< float >::const_iterator,
std::vector< float >
::const_iterator > 
ErrorRange
 
typedef std::pair< std::vector
< short >::const_iterator,
std::vector< short >
::const_iterator > 
QualityRange
 
typedef std::pair< std::vector
< float >::const_iterator,
std::vector< float >
::const_iterator > 
ValueRange
 

Public Member Functions

void fill (AlgoType algo, std::vector< float > const &values, std::vector< float > const &errors, std::vector< short > const &qualities)
 
void fillBeamIntensities (std::vector< float > const &beam1Intensities, std::vector< float > const &beam2Intensities)
 
bool isProductEqual (LumiDetails const &lumiDetails) const
 
bool isValid () const
 
std::vector< float > const & lumiBeam1Intensities () const
 
float lumiBeam1Intensity (unsigned int bx) const
 
std::vector< float > const & lumiBeam2Intensities () const
 
float lumiBeam2Intensity (unsigned int bx) const
 
 LumiDetails ()
 
 LumiDetails (std::string const &lumiVersion)
 
float lumiError (AlgoType algo, unsigned int bx) const
 
ErrorRange lumiErrorsForAlgo (AlgoType algo) const
 
QualityRange lumiQualitiesForAlgo (AlgoType algo) const
 
short lumiQuality (AlgoType algo, unsigned int bx) const
 
float lumiValue (AlgoType algo, unsigned int bx) const
 
ValueRange lumiValuesForAlgo (AlgoType algo) const
 
std::string const & lumiVersion () const
 
void setLumiVersion (std::string const &lumiVersion)
 
 ~LumiDetails ()
 

Static Public Member Functions

static std::vector
< std::string > const & 
algoNames ()
 
static std::vector
< std::string > const & 
dipalgoNames ()
 

Private Member Functions

void checkAlgo (AlgoType algo) const
 
void checkAlgoAndBX (AlgoType algo, unsigned int bx) const
 

Private Attributes

std::vector< unsigned int > m_algoToFirstIndex
 
std::vector< float > m_allErrors
 
std::vector< short > m_allQualities
 
std::vector< float > m_allValues
 
std::vector< float > m_beam1Intensities
 
std::vector< float > m_beam2Intensities
 
std::string m_lumiVersion
 

Static Private Attributes

static std::vector< std::string > m_algoNames
 

Detailed Description

LumiDetails holds Details information: the lumi value, the error on this value, its quality, and 2 beam intensities for each bunch crossing (BX) in a given luminosity section (LS)

Author
Valerie Halyo, David Dagenhart, created June 7, 2007>

Definition at line 20 of file LumiDetails.h.

Member Typedef Documentation

typedef unsigned int LumiDetails::AlgoType

Definition at line 34 of file LumiDetails.h.

typedef std::pair<std::vector<float>::const_iterator, std::vector<float>::const_iterator> LumiDetails::ErrorRange

Definition at line 36 of file LumiDetails.h.

typedef std::pair<std::vector<short>::const_iterator, std::vector<short>::const_iterator> LumiDetails::QualityRange

Definition at line 37 of file LumiDetails.h.

typedef std::pair<std::vector<float>::const_iterator, std::vector<float>::const_iterator> LumiDetails::ValueRange

Definition at line 35 of file LumiDetails.h.

Member Enumeration Documentation

Enumerator
kOCC1 
kOCC2 
kET 
kPLT 
kMaxNumAlgos 

Definition at line 27 of file LumiDetails.h.

Constructor & Destructor Documentation

LumiDetails::LumiDetails ( )

Definition at line 10 of file LumiDetails.cc.

10  :
11  m_lumiVersion("-1"),
13  m_allValues(),
14  m_allErrors(),
18 {
19 }
std::vector< float > m_allErrors
Definition: LumiDetails.h:94
std::vector< float > m_beam2Intensities
Definition: LumiDetails.h:97
std::string m_lumiVersion
Definition: LumiDetails.h:83
std::vector< float > m_allValues
Definition: LumiDetails.h:93
std::vector< unsigned int > m_algoToFirstIndex
Definition: LumiDetails.h:92
std::vector< short > m_allQualities
Definition: LumiDetails.h:95
std::vector< float > m_beam1Intensities
Definition: LumiDetails.h:96
LumiDetails::LumiDetails ( std::string const &  lumiVersion)
explicit

Definition at line 21 of file LumiDetails.cc.

21  :
24  m_allValues(),
25  m_allErrors(),
29 {
30 }
std::vector< float > m_allErrors
Definition: LumiDetails.h:94
std::vector< float > m_beam2Intensities
Definition: LumiDetails.h:97
std::string m_lumiVersion
Definition: LumiDetails.h:83
std::vector< float > m_allValues
Definition: LumiDetails.h:93
std::vector< unsigned int > m_algoToFirstIndex
Definition: LumiDetails.h:92
std::vector< short > m_allQualities
Definition: LumiDetails.h:95
std::string const & lumiVersion() const
Definition: LumiDetails.cc:41
std::vector< float > m_beam1Intensities
Definition: LumiDetails.h:96
LumiDetails::~LumiDetails ( )

Definition at line 32 of file LumiDetails.cc.

32  {
33 }

Member Function Documentation

std::vector< std::string > const & LumiDetails::algoNames ( )
static

Definition at line 140 of file LumiDetails.cc.

References kMaxNumAlgos, and m_algoNames.

Referenced by operator<<().

140  {
141  if (m_algoNames.size() != kMaxNumAlgos) {
142  assert(m_algoNames.size() == 0U);
143  // If in the future additional algorithm names are added,
144  // it is important that they be added at the end of the list.
145  // The Algos enum in LumiDetails.h also would need to be
146  // updated to keep the list of names in sync.
147  m_algoNames.push_back(std::string("OCC1"));
148  m_algoNames.push_back(std::string("OCC2"));
149  m_algoNames.push_back(std::string("ET"));
150  m_algoNames.push_back(std::string("PLT"));
151  assert(m_algoNames.size() == kMaxNumAlgos);
152  }
153  return m_algoNames;
154 }
static std::vector< std::string > m_algoNames
Definition: LumiDetails.h:81
void LumiDetails::checkAlgo ( AlgoType  algo) const
private

Definition at line 177 of file LumiDetails.cc.

References edm::hlt::Exception, kMaxNumAlgos, and edm::errors::LogicError.

Referenced by checkAlgoAndBX(), fill(), lumiErrorsForAlgo(), lumiQualitiesForAlgo(), and lumiValuesForAlgo().

177  {
178  if (algo >= kMaxNumAlgos) {
180  << "Algorithm type argument out of range in a call to a function in LumiDetails\n";
181  }
182 }
LimitAlgo * algo
Definition: Combine.cc:60
void LumiDetails::checkAlgoAndBX ( AlgoType  algo,
unsigned int  bx 
) const
private

Definition at line 185 of file LumiDetails.cc.

References checkAlgo(), edm::hlt::Exception, edm::errors::LogicError, and m_algoToFirstIndex.

Referenced by lumiError(), lumiQuality(), and lumiValue().

185  {
186  checkAlgo(algo);
187  if (bx >= (m_algoToFirstIndex[algo + 1U] - m_algoToFirstIndex[algo])) {
189  << "Branch crossing argument out of range in call to a function in LumiDetails\n";
190  }
191 }
void checkAlgo(AlgoType algo) const
Definition: LumiDetails.cc:177
std::vector< unsigned int > m_algoToFirstIndex
Definition: LumiDetails.h:92
LimitAlgo * algo
Definition: Combine.cc:60
std::vector< std::string > const & LumiDetails::dipalgoNames ( )
static

Definition at line 157 of file LumiDetails.cc.

References m_algoNames.

Referenced by operator<<().

157  {
158  m_algoNames.push_back(std::string("DIP"));
159  return m_algoNames;
160 }
static std::vector< std::string > m_algoNames
Definition: LumiDetails.h:81
void LumiDetails::fill ( AlgoType  algo,
std::vector< float > const &  values,
std::vector< float > const &  errors,
std::vector< short > const &  qualities 
)

Definition at line 51 of file LumiDetails.cc.

References algo, checkAlgo(), edm::hlt::Exception, i, kMaxNumAlgos, edm::errors::LogicError, m_algoToFirstIndex, m_allErrors, m_allQualities, and m_allValues.

Referenced by ExpressLumiProducer::writeProductsForEntry(), and LumiProducer::writeProductsForEntry().

54  {
55  checkAlgo(algo);
56  if (values.size() != errors.size() ||
57  values.size() != qualities.size() ||
60  << "Illegal input values passed to LumiDetails::fill.\n"
61  << "The current implementation of LumiDetails only allows filling\n"
62  << "vectors for each algorithm once and the input vectors must\n"
63  << "all be the same size.\n";
64  }
65  m_allValues.insert(m_allValues.begin() + m_algoToFirstIndex[algo], values.begin(), values.end());
66  m_allErrors.insert(m_allErrors.begin() + m_algoToFirstIndex[algo], errors.begin(), errors.end());
67  m_allQualities.insert(m_allQualities.begin() + m_algoToFirstIndex[algo], qualities.begin(), qualities.end());
68  for (unsigned i = algo + 1U; i <= kMaxNumAlgos; ++i) {
69  m_algoToFirstIndex[i] += values.size();
70  }
71 }
int i
Definition: DBlmapReader.cc:9
std::vector< float > m_allErrors
Definition: LumiDetails.h:94
std::vector< float > m_allValues
Definition: LumiDetails.h:93
void checkAlgo(AlgoType algo) const
Definition: LumiDetails.cc:177
std::vector< unsigned int > m_algoToFirstIndex
Definition: LumiDetails.h:92
std::vector< short > m_allQualities
Definition: LumiDetails.h:95
LimitAlgo * algo
Definition: Combine.cc:60
void LumiDetails::fillBeamIntensities ( std::vector< float > const &  beam1Intensities,
std::vector< float > const &  beam2Intensities 
)

Definition at line 74 of file LumiDetails.cc.

References m_beam1Intensities, and m_beam2Intensities.

Referenced by LumiProducer::writeProductsForEntry().

75  {
76  m_beam1Intensities = beam1Intensities;
77  m_beam2Intensities = beam2Intensities;
78 }
std::vector< float > m_beam2Intensities
Definition: LumiDetails.h:97
std::vector< float > m_beam1Intensities
Definition: LumiDetails.h:96
bool LumiDetails::isProductEqual ( LumiDetails const &  lumiDetails) const

Definition at line 162 of file LumiDetails.cc.

References m_algoToFirstIndex, m_allErrors, m_allQualities, m_allValues, m_beam1Intensities, m_beam2Intensities, and m_lumiVersion.

162  {
163 
164  if (m_lumiVersion == lumiDetails.m_lumiVersion &&
165  m_algoToFirstIndex == lumiDetails.m_algoToFirstIndex &&
166  m_allValues == lumiDetails.m_allValues &&
167  m_allErrors == lumiDetails.m_allErrors &&
168  m_allQualities == lumiDetails.m_allQualities &&
169  m_beam1Intensities == lumiDetails.m_beam1Intensities &&
170  m_beam2Intensities == lumiDetails.m_beam2Intensities) {
171  return true;
172  }
173  return false;
174 }
std::vector< float > m_allErrors
Definition: LumiDetails.h:94
std::vector< float > m_beam2Intensities
Definition: LumiDetails.h:97
std::string m_lumiVersion
Definition: LumiDetails.h:83
std::vector< float > m_allValues
Definition: LumiDetails.h:93
std::vector< unsigned int > m_algoToFirstIndex
Definition: LumiDetails.h:92
std::vector< short > m_allQualities
Definition: LumiDetails.h:95
std::vector< float > m_beam1Intensities
Definition: LumiDetails.h:96
bool LumiDetails::isValid ( void  ) const

Definition at line 46 of file LumiDetails.cc.

References m_allValues.

46  {
47  return m_allValues.size()!=0;
48 }
std::vector< float > m_allValues
Definition: LumiDetails.h:93
std::vector< float > const & LumiDetails::lumiBeam1Intensities ( ) const

Definition at line 130 of file LumiDetails.cc.

References m_beam1Intensities.

Referenced by operator<<().

130  {
131  return m_beam1Intensities;
132 }
std::vector< float > m_beam1Intensities
Definition: LumiDetails.h:96
float LumiDetails::lumiBeam1Intensity ( unsigned int  bx) const

Definition at line 99 of file LumiDetails.cc.

References m_beam1Intensities.

99  {
100  return m_beam1Intensities.at(bx);
101 }
std::vector< float > m_beam1Intensities
Definition: LumiDetails.h:96
std::vector< float > const & LumiDetails::lumiBeam2Intensities ( ) const

Definition at line 135 of file LumiDetails.cc.

References m_beam2Intensities.

Referenced by operator<<().

135  {
136  return m_beam2Intensities;
137 }
std::vector< float > m_beam2Intensities
Definition: LumiDetails.h:97
float LumiDetails::lumiBeam2Intensity ( unsigned int  bx) const

Definition at line 104 of file LumiDetails.cc.

References m_beam2Intensities.

104  {
105  return m_beam2Intensities.at(bx);
106 }
std::vector< float > m_beam2Intensities
Definition: LumiDetails.h:97
float LumiDetails::lumiError ( AlgoType  algo,
unsigned int  bx 
) const

Definition at line 87 of file LumiDetails.cc.

References algo, checkAlgoAndBX(), m_algoToFirstIndex, and m_allErrors.

87  {
88  checkAlgoAndBX(algo, bx);
89  return m_allErrors[m_algoToFirstIndex[algo] + bx];
90 }
void checkAlgoAndBX(AlgoType algo, unsigned int bx) const
Definition: LumiDetails.cc:185
std::vector< float > m_allErrors
Definition: LumiDetails.h:94
std::vector< unsigned int > m_algoToFirstIndex
Definition: LumiDetails.h:92
LimitAlgo * algo
Definition: Combine.cc:60
LumiDetails::ErrorRange LumiDetails::lumiErrorsForAlgo ( AlgoType  algo) const

Definition at line 116 of file LumiDetails.cc.

References algo, checkAlgo(), m_algoToFirstIndex, and m_allErrors.

Referenced by operator<<().

116  {
117  checkAlgo(algo);
118  return ErrorRange(m_allErrors.begin() + m_algoToFirstIndex[algo],
119  m_allErrors.begin() + m_algoToFirstIndex[algo + 1U]);
120 }
std::vector< float > m_allErrors
Definition: LumiDetails.h:94
std::pair< std::vector< float >::const_iterator, std::vector< float >::const_iterator > ErrorRange
Definition: LumiDetails.h:36
void checkAlgo(AlgoType algo) const
Definition: LumiDetails.cc:177
std::vector< unsigned int > m_algoToFirstIndex
Definition: LumiDetails.h:92
LimitAlgo * algo
Definition: Combine.cc:60
LumiDetails::QualityRange LumiDetails::lumiQualitiesForAlgo ( AlgoType  algo) const

Definition at line 123 of file LumiDetails.cc.

References algo, checkAlgo(), m_algoToFirstIndex, and m_allQualities.

Referenced by operator<<().

123  {
124  checkAlgo(algo);
126  m_allQualities.begin() + m_algoToFirstIndex[algo + 1U]);
127 }
std::pair< std::vector< short >::const_iterator, std::vector< short >::const_iterator > QualityRange
Definition: LumiDetails.h:37
void checkAlgo(AlgoType algo) const
Definition: LumiDetails.cc:177
std::vector< unsigned int > m_algoToFirstIndex
Definition: LumiDetails.h:92
std::vector< short > m_allQualities
Definition: LumiDetails.h:95
LimitAlgo * algo
Definition: Combine.cc:60
short LumiDetails::lumiQuality ( AlgoType  algo,
unsigned int  bx 
) const

Definition at line 93 of file LumiDetails.cc.

References algo, checkAlgoAndBX(), m_algoToFirstIndex, and m_allQualities.

93  {
94  checkAlgoAndBX(algo, bx);
96 }
void checkAlgoAndBX(AlgoType algo, unsigned int bx) const
Definition: LumiDetails.cc:185
std::vector< unsigned int > m_algoToFirstIndex
Definition: LumiDetails.h:92
std::vector< short > m_allQualities
Definition: LumiDetails.h:95
LimitAlgo * algo
Definition: Combine.cc:60
float LumiDetails::lumiValue ( AlgoType  algo,
unsigned int  bx 
) const

Definition at line 81 of file LumiDetails.cc.

References algo, checkAlgoAndBX(), m_algoToFirstIndex, and m_allValues.

81  {
82  checkAlgoAndBX(algo, bx);
83  return m_allValues[m_algoToFirstIndex[algo] + bx];
84 }
void checkAlgoAndBX(AlgoType algo, unsigned int bx) const
Definition: LumiDetails.cc:185
std::vector< float > m_allValues
Definition: LumiDetails.h:93
std::vector< unsigned int > m_algoToFirstIndex
Definition: LumiDetails.h:92
LimitAlgo * algo
Definition: Combine.cc:60
LumiDetails::ValueRange LumiDetails::lumiValuesForAlgo ( AlgoType  algo) const

Definition at line 109 of file LumiDetails.cc.

References algo, checkAlgo(), m_algoToFirstIndex, and m_allValues.

Referenced by operator<<().

109  {
110  checkAlgo(algo);
111  return ValueRange(m_allValues.begin() + m_algoToFirstIndex[algo],
112  m_allValues.begin() + m_algoToFirstIndex[algo + 1U]);
113 }
std::pair< std::vector< float >::const_iterator, std::vector< float >::const_iterator > ValueRange
Definition: LumiDetails.h:35
std::vector< float > m_allValues
Definition: LumiDetails.h:93
void checkAlgo(AlgoType algo) const
Definition: LumiDetails.cc:177
std::vector< unsigned int > m_algoToFirstIndex
Definition: LumiDetails.h:92
LimitAlgo * algo
Definition: Combine.cc:60
std::string const & LumiDetails::lumiVersion ( ) const

Definition at line 41 of file LumiDetails.cc.

References m_lumiVersion.

Referenced by operator<<(), and setLumiVersion().

41  {
42  return m_lumiVersion;
43 }
std::string m_lumiVersion
Definition: LumiDetails.h:83
void LumiDetails::setLumiVersion ( std::string const &  lumiVersion)

Definition at line 36 of file LumiDetails.cc.

References lumiVersion(), and m_lumiVersion.

Referenced by ExpressLumiProducer::writeProductsForEntry(), and LumiProducer::writeProductsForEntry().

36  {
38 }
std::string m_lumiVersion
Definition: LumiDetails.h:83
std::string const & lumiVersion() const
Definition: LumiDetails.cc:41

Member Data Documentation

std::vector< std::string > LumiDetails::m_algoNames
staticprivate

Definition at line 81 of file LumiDetails.h.

Referenced by algoNames(), and dipalgoNames().

std::vector<unsigned int> LumiDetails::m_algoToFirstIndex
private
std::vector<float> LumiDetails::m_allErrors
private

Definition at line 94 of file LumiDetails.h.

Referenced by fill(), isProductEqual(), lumiError(), and lumiErrorsForAlgo().

std::vector<short> LumiDetails::m_allQualities
private

Definition at line 95 of file LumiDetails.h.

Referenced by fill(), isProductEqual(), lumiQualitiesForAlgo(), and lumiQuality().

std::vector<float> LumiDetails::m_allValues
private

Definition at line 93 of file LumiDetails.h.

Referenced by fill(), isProductEqual(), isValid(), lumiValue(), and lumiValuesForAlgo().

std::vector<float> LumiDetails::m_beam1Intensities
private
std::vector<float> LumiDetails::m_beam2Intensities
private
std::string LumiDetails::m_lumiVersion
private

Definition at line 83 of file LumiDetails.h.

Referenced by isProductEqual(), lumiVersion(), and setLumiVersion().