Go to the documentation of this file.00001 #include "CondFormats/Luminosity/interface/LumiSectionData.h"
00002 #include <iostream>
00003 lumi::LumiSectionData::LumiSectionData(): m_sectionid(0),m_versionid("-1"){
00004 m_bx.reserve(lumi::BXMAX*LUMIALGOMAX);
00005 }
00006 std::string
00007 lumi::LumiSectionData::lumiVersion()const{
00008 return m_versionid;
00009 }
00010 int
00011 lumi::LumiSectionData::lumisectionID()const{
00012 return m_sectionid;
00013 }
00014 size_t
00015 lumi::LumiSectionData::nBunchCrossing()const{
00016 return m_bx.size()/lumi::LUMIALGOMAX;
00017 }
00018 float
00019 lumi::LumiSectionData::lumiAverage()const{
00020 return m_lumiavg;
00021 }
00022 float
00023 lumi::LumiSectionData::lumiError()const{
00024 return m_lumierror;
00025 }
00026 float
00027 lumi::LumiSectionData::deadFraction()const{
00028 return m_deadfrac;
00029 }
00030 unsigned long long
00031 lumi::LumiSectionData::startorbit()const{
00032 return m_startorbit;
00033 }
00034 int
00035 lumi::LumiSectionData::lumiquality()const{
00036 return m_quality;
00037 }
00038 void
00039 lumi::LumiSectionData::bunchCrossingInfo( const lumi::LumiAlgoType lumialgotype,std::vector<lumi::BunchCrossingInfo>& result )const {
00040 result.clear();
00041 size_t offset=lumialgotype*lumi::BXMAX;
00042 std::copy(m_bx.begin()+offset,m_bx.begin()+offset+lumi::BXMAX,std::back_inserter(result));
00043 }
00044
00045 const lumi::BunchCrossingInfo
00046 lumi::LumiSectionData::bunchCrossingInfo( const int BXIndex,
00047 const LumiAlgoType lumialgotype )const{
00048 int realIdx=BXIndex-lumi::BXMIN+lumialgotype*lumi::BXMAX;
00049 return m_bx.at(realIdx);
00050 }
00051 lumi::BunchCrossingIterator
00052 lumi::LumiSectionData::bunchCrossingBegin( const LumiAlgoType lumialgotype )const{
00053 return m_bx.begin()+lumialgotype*BXMAX;
00054 }
00055 lumi::BunchCrossingIterator
00056 lumi::LumiSectionData::bunchCrossingEnd( const LumiAlgoType lumialgotype )const{
00057 return m_bx.end()-(lumi::BXMAX)*lumialgotype;
00058 }
00059 size_t
00060 lumi::LumiSectionData::nHLTPath()const{
00061 return m_hlt.size();
00062 }
00063 bool
00064 lumi::LumiSectionData::HLThasData()const{
00065 return m_hlt.size()>0;
00066 }
00067 lumi::HLTIterator
00068 lumi::LumiSectionData::hltBegin()const{
00069 return m_hlt.begin();
00070 }
00071 lumi::HLTIterator
00072 lumi::LumiSectionData::hltEnd()const{
00073 return m_hlt.end();
00074 }
00075 bool
00076 lumi::LumiSectionData::TriggerhasData()const{
00077 return m_trigger.size()>0;
00078 }
00079 lumi::TriggerIterator
00080 lumi::LumiSectionData::trgBegin()const{
00081 return m_trigger.begin();
00082 }
00083 lumi::TriggerIterator
00084 lumi::LumiSectionData::trgEnd()const{
00085 return m_trigger.end();
00086 }
00087 short
00088 lumi::LumiSectionData::qualityFlag()const{
00089 return m_quality;
00090 }
00091 void
00092 lumi::LumiSectionData::setLumiNull(){
00093 m_versionid=-99;
00094 }
00095 void
00096 lumi::LumiSectionData::setLumiVersion(const std::string& versionid){
00097 m_versionid=versionid;
00098 }
00099 void
00100 lumi::LumiSectionData::setLumiSectionId(int sectionid){
00101 m_sectionid=sectionid;
00102 }
00103 void
00104 lumi::LumiSectionData::setLumiAverage(float avg){
00105 m_lumiavg=avg;
00106 }
00107 void
00108 lumi::LumiSectionData::setLumiQuality(int lumiquality){
00109 m_quality=lumiquality;
00110 }
00111 void
00112 lumi::LumiSectionData::setDeadFraction(float deadfrac){
00113 m_deadfrac=deadfrac;
00114 }
00115 void
00116 lumi::LumiSectionData::setLumiError(float lumierr){
00117 m_lumierror=lumierr;
00118 }
00119 void
00120 lumi::LumiSectionData::setStartOrbit(unsigned long long orbtnumber){
00121 m_startorbit=orbtnumber;
00122 }
00123 void
00124 lumi::LumiSectionData::setBunchCrossingData(const std::vector<BunchCrossingInfo>& BXs,const LumiAlgoType algotype){
00125 std::copy(BXs.begin(),BXs.begin()+lumi::BXMAX,std::back_inserter(m_bx));
00126 }
00127 void
00128 lumi::LumiSectionData::setHLTData(const std::vector<HLTInfo>& hltdetail){
00129 std::copy(hltdetail.begin(),hltdetail.end(),std::back_inserter(m_hlt));
00130 }
00131 void
00132 lumi::LumiSectionData::setTriggerData(const std::vector<TriggerInfo>& triggerinfo){
00133 std::copy(triggerinfo.begin(),triggerinfo.end(),std::back_inserter(m_trigger));
00134 }
00135 void
00136 lumi::LumiSectionData::setQualityFlag(short qualityflag){
00137 m_quality=qualityflag;
00138 }
00139 void
00140 lumi::LumiSectionData::print( std::ostream& s ) const{
00141 s<<"lumi section id :"<<m_sectionid <<", ";
00142 s<<"lumi data version : "<<m_versionid<<", ";
00143 s<<"lumi average : "<<m_lumiavg<<", ";
00144 s<<"lumi error : "<<m_lumierror<<", ";
00145 s<<"lumi quality : "<<m_quality<<", ";
00146 s<<"lumi deadfrac : "<<m_deadfrac<<std::endl;
00147 std::vector<lumi::TriggerInfo>::const_iterator trgit;
00148 std::vector<lumi::TriggerInfo>::const_iterator trgitBeg=m_trigger.begin();
00149 std::vector<lumi::TriggerInfo>::const_iterator trgitEnd=m_trigger.end();
00150 unsigned int i=0;
00151 for(trgit=trgitBeg;trgit!=trgitEnd;++trgit){
00152 std::cout<<" trg "<<i<<" : name : "<<trgit->name<<" : count : "<<trgit->triggercount<<" : deadtime : "<< trgit->deadtimecount<<" : prescale : "<<trgit->prescale<<std::endl;
00153 ++i;
00154 }
00155 }