CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_13_patch3/src/CondFormats/Luminosity/src/LumiSectionData.cc

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 }