File indexing completed on 2024-04-06 12:04:40
0001
0002
0003 #include "DataFormats/Luminosity/interface/LumiSummary.h"
0004
0005 #include <iomanip>
0006 #include <ostream>
0007 #include <iostream>
0008 float LumiSummary::avgInsDelLumi() const {
0009 size_t iIndex = lumiversion_.rfind('v');
0010
0011 if (iIndex != std::string::npos) {
0012 return avginsdellumi_ * 1000.0;
0013 }
0014 return avginsdellumi_;
0015 }
0016 float LumiSummary::intgDelLumi() const { return this->avgInsDelLumi() * float(this->lumiSectionLength()); }
0017 float LumiSummary::avgInsDelLumiErr() const { return avginsdellumierr_; }
0018 float LumiSummary::intgRecLumi() const { return this->avgInsRecLumi() * float(this->lumiSectionLength()); }
0019 short LumiSummary::lumiSecQual() const { return lumisecqual_; }
0020 unsigned long long LumiSummary::deadcount() const { return deadcount_; }
0021 unsigned long long LumiSummary::bitzerocount() const { return bitzerocount_; }
0022 float LumiSummary::deadFrac() const {
0023
0024
0025
0026 if (lumiversion_ == "DIP") {
0027 return float(deadcount_) / float(bitzerocount_);
0028 }
0029 if (l1data_.empty())
0030 return 1.0;
0031 if (bitzerocount_ == 0)
0032 return -1.0;
0033 return float(deadcount_) / float(bitzerocount_);
0034 }
0035 float LumiSummary::liveFrac() const {
0036
0037
0038
0039 if (deadFrac() < 0)
0040 return 0;
0041 return 1 - deadFrac();
0042 }
0043 float LumiSummary::lumiSectionLength() const {
0044
0045 return numorbit_ * 3564.0 * 24.95e-9;
0046 }
0047 unsigned int LumiSummary::lsNumber() const { return lsnumber_; }
0048 unsigned int LumiSummary::startOrbit() const { return startorbit_; }
0049 unsigned int LumiSummary::numOrbit() const { return numorbit_; }
0050 bool LumiSummary::isValid() const { return avginsdellumi_ > 0; }
0051 LumiSummary::L1 LumiSummary::l1info(unsigned int idx) const { return l1data_.at(idx); }
0052 LumiSummary::HLT LumiSummary::hltinfo(unsigned int idx) const { return hltdata_.at(idx); }
0053 size_t LumiSummary::nTriggerLine() const { return l1data_.size(); }
0054 size_t LumiSummary::nHLTPath() const { return hltdata_.size(); }
0055 float LumiSummary::avgInsRecLumi() const { return this->avgInsDelLumi() * liveFrac(); }
0056 float LumiSummary::avgInsRecLumiErr() const { return avginsdellumierr_ * liveFrac(); }
0057 bool LumiSummary::isProductEqual(LumiSummary const& next) const {
0058 return (avginsdellumi_ == next.avginsdellumi_ && avginsdellumierr_ == next.avginsdellumierr_ &&
0059 lumisecqual_ == next.lumisecqual_ && deadcount_ == next.deadcount_ && lsnumber_ == next.lsnumber_ &&
0060 startorbit_ == next.startorbit_ && numorbit_ == next.numorbit_ && l1data_.size() == next.l1data_.size() &&
0061 hltdata_.size() == next.hltdata_.size() && lumiversion_ == next.lumiversion_);
0062 }
0063 std::string LumiSummary::lumiVersion() const { return lumiversion_; }
0064 void LumiSummary::setLumiVersion(const std::string& lumiversion) { lumiversion_ = lumiversion; }
0065 void LumiSummary::setLumiData(float instlumi, float instlumierr, short lumiquality) {
0066 avginsdellumi_ = instlumi;
0067 avginsdellumierr_ = instlumierr;
0068 lumisecqual_ = lumiquality;
0069 }
0070 void LumiSummary::setDeadCount(unsigned long long deadcount) { deadcount_ = deadcount; }
0071 void LumiSummary::setBitZeroCount(unsigned long long bitzerocount) { bitzerocount_ = bitzerocount; }
0072 void LumiSummary::setlsnumber(unsigned int lsnumber) { lsnumber_ = lsnumber; }
0073 void LumiSummary::setOrbitData(unsigned int startorbit, unsigned int numorbit) {
0074 startorbit_ = startorbit;
0075 numorbit_ = numorbit;
0076 }
0077 void LumiSummary::swapL1Data(std::vector<L1>& l1data) { l1data_.swap(l1data); }
0078 void LumiSummary::swapHLTData(std::vector<HLT>& hltdata) { hltdata_.swap(hltdata); }
0079 void LumiSummary::copyL1Data(const std::vector<L1>& l1data) { l1data_.assign(l1data.begin(), l1data.end()); }
0080 void LumiSummary::copyHLTData(const std::vector<HLT>& hltdata) { hltdata_.assign(hltdata.begin(), hltdata.end()); }
0081 std::ostream& operator<<(std::ostream& s, const LumiSummary& lumiSummary) {
0082 s << "\nDumping LumiSummary\n\n";
0083 if (!lumiSummary.isValid()) {
0084 s << " === Invalid Lumi values === \n";
0085 }
0086 s << " lumiVersion = " << lumiSummary.lumiVersion() << "\n";
0087 s << " avgInsDelLumi = " << lumiSummary.avgInsDelLumi() << "\n";
0088 s << " avgIntgDelLumi = " << lumiSummary.intgDelLumi() << "\n";
0089 s << " avgInsDelLumiErr = " << lumiSummary.avgInsDelLumiErr() << "\n";
0090 s << " lumiSecQual = " << lumiSummary.lumiSecQual() << "\n";
0091 s << " deadCount = " << lumiSummary.deadcount() << "\n";
0092 s << " bitZeroCount = " << lumiSummary.bitzerocount() << "\n";
0093 s << " deadFrac = " << (float)lumiSummary.deadFrac() << "\n";
0094 s << " liveFrac = " << (float)lumiSummary.liveFrac() << "\n";
0095 s << " lsNumber = " << lumiSummary.lsNumber() << "\n";
0096 s << " startOrbit = " << lumiSummary.startOrbit() << "\n";
0097 s << " numOrbit = " << lumiSummary.numOrbit() << "\n";
0098 s << " avgInsRecLumi = " << lumiSummary.avgInsRecLumi() << "\n";
0099 s << " avgInsRecLumiErr = " << lumiSummary.avgInsRecLumiErr() << "\n\n";
0100 s << std::setw(15) << "l1nameidx";
0101 s << std::setw(15) << "l1prescale";
0102 s << "\n";
0103 size_t nTriggers = lumiSummary.nTriggerLine();
0104 size_t nHLTPath = lumiSummary.nHLTPath();
0105 for (unsigned int i = 0; i < nTriggers; ++i) {
0106 s << std::setw(15);
0107 s << lumiSummary.l1info(i).triggernameidx;
0108 s << std::setw(15);
0109 s << lumiSummary.l1info(i).prescale;
0110 s << "\n";
0111 }
0112 s << std::setw(15) << "hltpathidx";
0113 s << std::setw(15) << "hltprescale";
0114 s << "\n";
0115 for (unsigned int i = 0; i < nHLTPath; ++i) {
0116 s << std::setw(15);
0117 s << lumiSummary.hltinfo(i).pathnameidx;
0118 s << std::setw(15);
0119 s << lumiSummary.hltinfo(i).prescale;
0120 s << "\n";
0121 }
0122 return s << "\n";
0123 }