From 7ebca0447ed5ee24735794dfebe73e17d927a25f Mon Sep 17 00:00:00 2001 From: Siarhei Harkusha <Siarhei.Harkusha@cern.ch> Date: Thu, 4 Dec 2014 04:52:46 +0100 Subject: [PATCH] added new new online bad timing status and possability to define bad timing for channel (TileCalibBlobObjs-00-00-43) * TileCalibBlobObjs/TileBchPrbs.h: added new online bad timing status (OnlineBadTiming) for channel * src/TileBchPrbs.cxx: added description for channel status OnlineBadTiming * src/TileBchStatus.cxx: added possability to define bad timing; set default for bad timing: BadTiming * src/TileBchDecoder.cxx: added OnlineBadTiming to bit pattern version "onl01 * TileCalibBlobObjs/TileCalibUtils.h: added new static variable for bad timing channel difinition (BADTIMING_DEFINITION_CHAN) * Tagged TileCalibBlobObjs-00-00-43 --- .../TileCalibBlobObjs/TileBchPrbs.h | 1 + .../TileCalibBlobObjs/TileBchStatus.h | 13 +++++--- .../TileCalibBlobObjs/TileCalibUtils.h | 4 +++ .../TileCalibBlobObjs/src/TileBchDecoder.cxx | 23 +++++++------- .../TileCalibBlobObjs/src/TileBchPrbs.cxx | 3 ++ .../TileCalibBlobObjs/src/TileBchStatus.cxx | 31 ++++++++++++++----- .../TileCalibBlobObjs/src/TileCalibUtils.cxx | 1 + 7 files changed, 53 insertions(+), 23 deletions(-) diff --git a/TileCalorimeter/TileCalib/TileCalibBlobObjs/TileCalibBlobObjs/TileBchPrbs.h b/TileCalorimeter/TileCalib/TileCalibBlobObjs/TileCalibBlobObjs/TileBchPrbs.h index 3d5960678c9..e144d0029ee 100644 --- a/TileCalorimeter/TileCalib/TileCalibBlobObjs/TileCalibBlobObjs/TileBchPrbs.h +++ b/TileCalorimeter/TileCalib/TileCalibBlobObjs/TileCalibBlobObjs/TileBchPrbs.h @@ -81,6 +81,7 @@ class TileBchPrbs IgnoredInDsp = 4000, IgnoredInHlt = 4001, DisableForL1 = 4002, + OnlineBadTiming = 4105, //================================ //=== Other ONLINE ADC diff --git a/TileCalorimeter/TileCalib/TileCalibBlobObjs/TileCalibBlobObjs/TileBchStatus.h b/TileCalorimeter/TileCalib/TileCalibBlobObjs/TileCalibBlobObjs/TileBchStatus.h index 0dfbace8c28..0e05a2a651a 100644 --- a/TileCalorimeter/TileCalib/TileCalibBlobObjs/TileCalibBlobObjs/TileBchStatus.h +++ b/TileCalorimeter/TileCalib/TileCalibBlobObjs/TileCalibBlobObjs/TileBchStatus.h @@ -39,9 +39,11 @@ class TileBchStatus static void defineBad( const TileBchStatus& status); static void defineNoisy(const TileBchStatus& status); static void defineNoGainL1(const TileBchStatus& status); + static void defineBadTiming(const TileBchStatus& status); static TileBchStatus getDefinitionBad(); static TileBchStatus getDefinitionNoisy(); static TileBchStatus getDefinitionNoGainL1(); + static TileBchStatus getDefinitionBadTiming(); bool isGood() const; bool isBad() const; @@ -59,6 +61,7 @@ class TileBchStatus static PrbSet m_refBad; static PrbSet m_refNoisy; static PrbSet m_refNoGainL1; + static PrbSet m_refBadTiming; }; // @@ -74,7 +77,7 @@ TileBchStatus::getPrbs() const inline bool TileBchStatus::contains(const Prb& prb) const { - return (m_prbSet.find(prb)!=m_prbSet.end()); + return (m_prbSet.find(prb) != m_prbSet.end()); } // @@ -82,7 +85,7 @@ TileBchStatus::contains(const Prb& prb) const inline bool TileBchStatus::isGood() const { - return (m_prbSet.size()==0); + return (m_prbSet.size() == 0); } // @@ -98,7 +101,7 @@ TileBchStatus::isAffected() const inline bool TileBchStatus::isBad() const { - return m_prbSet.size() ? (testFor(m_refBad).size()!=0) : false; + return m_prbSet.size() ? (testFor(m_refBad).size() != 0) : false; } // @@ -106,7 +109,7 @@ TileBchStatus::isBad() const inline bool TileBchStatus::isNoisy() const { - return m_prbSet.size() ? (testFor(m_refNoisy).size()!=0) : false; + return m_prbSet.size() ? (testFor(m_refNoisy).size() != 0) : false; } // @@ -146,7 +149,7 @@ TileBchStatus::isHalfGainL1() const inline bool TileBchStatus::isBadTiming() const { - return m_prbSet.size() ? contains(TileBchPrbs::BadTiming) : false; + return m_prbSet.size() ? (testFor(m_refBadTiming).size() != 0) : false; } #endif diff --git a/TileCalorimeter/TileCalib/TileCalibBlobObjs/TileCalibBlobObjs/TileCalibUtils.h b/TileCalorimeter/TileCalib/TileCalibBlobObjs/TileCalibBlobObjs/TileCalibUtils.h index fac69105670..de3de8127c1 100644 --- a/TileCalorimeter/TileCalib/TileCalibBlobObjs/TileCalibBlobObjs/TileCalibUtils.h +++ b/TileCalorimeter/TileCalib/TileCalibBlobObjs/TileCalibBlobObjs/TileCalibUtils.h @@ -128,6 +128,9 @@ class TileCalibUtils{ static unsigned int noisy_definition_chan() {return NOISY_DEFINITION_CHAN;} /** @brief Python compatibility function */ static unsigned int nogainl1_definition_chan() {return NOGAINL1_DEFINITION_CHAN;} + /** @brief Python compatibility function */ + static unsigned int badtiming_definition_chan() {return BADTIMING_DEFINITION_CHAN;} + static const unsigned int MAX_ROS ; /**< @brief Number of ROSs */ static const unsigned int MAX_DRAWER ; /**< @brief Number of drawers in ROS 1-4 */ @@ -143,6 +146,7 @@ class TileCalibUtils{ static const unsigned int BAD_DEFINITION_CHAN; /**< @brief Channel used for storing of bad channel definitions */ static const unsigned int NOISY_DEFINITION_CHAN; /**< @brief Channel used for storing of noisy channel definitions */ static const unsigned int NOGAINL1_DEFINITION_CHAN; /**< @brief Channel used for storing of NoGainLevel1 channel definitions */ + static const unsigned int BADTIMING_DEFINITION_CHAN; /**< @brief Channel used for storing of NoGainLevel1 channel definitions */ }; diff --git a/TileCalorimeter/TileCalib/TileCalibBlobObjs/src/TileBchDecoder.cxx b/TileCalorimeter/TileCalib/TileCalibBlobObjs/src/TileBchDecoder.cxx index 0eb2789b417..0107cd9c886 100644 --- a/TileCalorimeter/TileCalib/TileCalibBlobObjs/src/TileBchDecoder.cxx +++ b/TileCalorimeter/TileCalib/TileCalibBlobObjs/src/TileBchDecoder.cxx @@ -12,7 +12,7 @@ TileBchDecoder::TileBchDecoder(BitPatVer bitPatVer) if( bitPatVer==TileBchDecoder::BitPat_ofl01){ init_BitPat_ofl01(); } else if(bitPatVer==TileBchDecoder::BitPat_onl01){ init_BitPat_onl01(); } else{ - throw TileCalib::InvalidBitPattern("TileBchDecoder::Ctor",bitPatVer); + throw TileCalib::InvalidBitPattern("TileBchDecoder::Ctor", bitPatVer); } } @@ -22,11 +22,11 @@ TileBchStatus TileBchDecoder::decode(uint32_t status_channel, uint32_t status_adc) const { TileBchStatus status; - for(unsigned int i=0; i<32; ++i){ + for(unsigned int i = 0; i < 32; ++i){ //=== decode channel problems - if(status_channel & 0x00000001){ status+=m_bitToPrbChn[i]; } + if(status_channel & 0x00000001){ status += m_bitToPrbChn[i]; } //=== decode adc problems - if(status_adc & 0x00000001){ status+=m_bitToPrbAdc[i]; } + if(status_adc & 0x00000001){ status += m_bitToPrbAdc[i]; } //=== shift the status words by one bit status_channel >>= 1; status_adc >>= 1; @@ -46,7 +46,7 @@ TileBchDecoder::encode(const TileBchStatus& status) const { std::map<TileBchPrbs::Prb,std::pair<unsigned int,unsigned int> >::const_iterator iMap = m_prbToBit.find(*iPrb); - if(iMap==m_prbToBit.end()){ + if(iMap == m_prbToBit.end()){ //=== throw an exception if we can not encode the problem throw TileCalib::InvalidBchProblem("TileBchDecoder::encode", *iPrb); } @@ -120,6 +120,7 @@ TileBchDecoder::init_BitPat_onl01() m_bitToPrbChn[ 4] = TileBchPrbs::TrigNoGain; m_bitToPrbChn[ 5] = TileBchPrbs::TrigHalfGain; m_bitToPrbChn[ 6] = TileBchPrbs::TrigNoisy; + m_bitToPrbChn[ 7] = TileBchPrbs::OnlineBadTiming; //=== assign decoder to adc problems m_bitToPrbAdc.clear(); @@ -137,25 +138,25 @@ TileBchDecoder::initPrbToBit() { m_prbToBit.clear(); //=== init channel problems - for(unsigned int i=0; i<32; ++i){ + for(unsigned int i = 0; i < 32; ++i){ TileBchPrbs::Prb prb = m_bitToPrbChn[i]; if(prb==TileBchPrbs::Invalid) continue; //=== check for duplicates - if(m_prbToBit.find(prb)!=m_prbToBit.end()){ + if(m_prbToBit.find(prb) != m_prbToBit.end()){ throw TileCalib::InvalidBitPattern("TileBchDecoder::initPrbToBit(Chn)",i); } m_prbToBit[prb] = std::make_pair(0,i); } //=== init adc problems - for(unsigned int i=0; i<32; ++i){ + for(unsigned int i = 0; i < 32; ++i){ TileBchPrbs::Prb prb = m_bitToPrbAdc[i]; if(prb==TileBchPrbs::Invalid) continue; //=== check for duplicates if(m_prbToBit.find(prb)!=m_prbToBit.end()){ throw TileCalib::InvalidBitPattern("TileBchDecoder::initPrbToBit(Adc)",i); } - m_prbToBit[prb] = std::make_pair(1,i); + m_prbToBit[prb] = std::make_pair(1, i); } } @@ -167,13 +168,13 @@ TileBchDecoder::printBitAssignment(std::ostream& stm) const stm << "Current bit to problem assignment" << std::endl; stm << "---------------------------------" << std::endl; stm << "Channel:" << std::endl; - for(unsigned int i=0; i<32; ++i){ + for(unsigned int i = 0; i < 32; ++i){ TileBchPrbs::Prb prb = m_bitToPrbChn[i]; std::string desc = TileBchPrbs::getDescription(prb); stm << "bit "<<i<<"\t:\t" << desc << std::endl; } stm << "Adc:" << std::endl; - for(unsigned int i=0; i<32; ++i){ + for(unsigned int i = 0; i < 32; ++i){ TileBchPrbs::Prb prb = m_bitToPrbAdc[i]; std::string desc = TileBchPrbs::getDescription(prb); stm << "bit "<<i<<"\t:\t" << desc << std::endl; diff --git a/TileCalorimeter/TileCalib/TileCalibBlobObjs/src/TileBchPrbs.cxx b/TileCalorimeter/TileCalib/TileCalibBlobObjs/src/TileBchPrbs.cxx index dafe7aa08ac..f51fc6e632c 100644 --- a/TileCalorimeter/TileCalib/TileCalibBlobObjs/src/TileBchPrbs.cxx +++ b/TileCalorimeter/TileCalib/TileCalibBlobObjs/src/TileBchPrbs.cxx @@ -70,6 +70,9 @@ TileBchPrbs::initPrbDesc() m_prbNames[TileBchPrbs::TrigHalfGain ] = "LV1 channel half gain"; m_prbNames[TileBchPrbs::TrigNoisy ] = "LV1 channel noisy"; + //=== online channel + m_prbNames[TileBchPrbs::OnlineBadTiming ] = "Online bad timing"; + //=== online adc m_prbNames[TileBchPrbs::OnlineGeneralMaskAdc ] = "Online ADC masked (unspecified)"; } diff --git a/TileCalorimeter/TileCalib/TileCalibBlobObjs/src/TileBchStatus.cxx b/TileCalorimeter/TileCalib/TileCalibBlobObjs/src/TileBchStatus.cxx index e09d353d586..79f00668bfc 100644 --- a/TileCalorimeter/TileCalib/TileCalibBlobObjs/src/TileBchStatus.cxx +++ b/TileCalorimeter/TileCalib/TileCalibBlobObjs/src/TileBchStatus.cxx @@ -9,6 +9,7 @@ TileBchStatus::PrbSet TileBchStatus::m_refBad; TileBchStatus::PrbSet TileBchStatus::m_refNoisy; TileBchStatus::PrbSet TileBchStatus::m_refNoGainL1; +TileBchStatus::PrbSet TileBchStatus::m_refBadTiming; // //_________________________________________________________ @@ -32,9 +33,7 @@ TileBchStatus::operator+=(const TileBchStatus& rhs) { // PrbSet overlapp; std::insert_iterator<PrbSet> insItr(m_prbSet, m_prbSet.begin()); - std::set_union(m_prbSet.begin(),m_prbSet.end(), - rhs.getPrbs().begin(), rhs.getPrbs().end(), - insItr); + std::set_union(m_prbSet.begin(),m_prbSet.end(), rhs.getPrbs().begin(), rhs.getPrbs().end(), insItr); return *this; } @@ -120,6 +119,8 @@ TileBchStatus::initClassifierDefinitions() m_refNoGainL1.insert(TileBchPrbs::TrigNoisy); m_refNoGainL1.insert(TileBchPrbs::DisableForL1); + m_refBadTiming.insert(TileBchPrbs::BadTiming); + } // @@ -146,6 +147,15 @@ TileBchStatus::defineNoGainL1(const TileBchStatus& status) m_refNoGainL1 = status.getPrbs(); } +// +//_________________________________________________________ +void +TileBchStatus::defineBadTiming(const TileBchStatus& status) +{ + m_refBadTiming = status.getPrbs(); +} + + // //_________________________________________________________ TileBchStatus @@ -170,6 +180,15 @@ TileBchStatus::getDefinitionNoGainL1() return TileBchStatus(m_refNoGainL1); } +// +//_________________________________________________________ +TileBchStatus +TileBchStatus::getDefinitionBadTiming() +{ + return TileBchStatus(m_refBadTiming); +} + + // //_________________________________________________________ TileBchStatus::PrbSet @@ -177,9 +196,7 @@ TileBchStatus::testFor(const PrbSet& prbSet) const { PrbSet overlapp; std::insert_iterator<PrbSet> insItr(overlapp, overlapp.begin()); - std::set_intersection(m_prbSet.begin(),m_prbSet.end(), - prbSet.begin(), prbSet.end(), - insItr); + std::set_intersection(m_prbSet.begin(),m_prbSet.end(), prbSet.begin(), prbSet.end(), insItr); return overlapp; } @@ -189,7 +206,7 @@ std::string TileBchStatus::getString() const { std::string prbStr(""); - for(PrbSet::const_iterator iPrb = m_prbSet.begin(); iPrb!=m_prbSet.end(); ++iPrb){ + for(PrbSet::const_iterator iPrb = m_prbSet.begin(); iPrb != m_prbSet.end(); ++iPrb){ prbStr += TileBchPrbs::getDescription(*iPrb) + "; "; } return prbStr; diff --git a/TileCalorimeter/TileCalib/TileCalibBlobObjs/src/TileCalibUtils.cxx b/TileCalorimeter/TileCalib/TileCalibBlobObjs/src/TileCalibUtils.cxx index a0031ad7db2..332c7a322c7 100644 --- a/TileCalorimeter/TileCalib/TileCalibBlobObjs/src/TileCalibUtils.cxx +++ b/TileCalorimeter/TileCalib/TileCalibBlobObjs/src/TileCalibUtils.cxx @@ -23,6 +23,7 @@ const unsigned int TileCalibUtils::DEFINITIONS_DRAWERIDX = 1; /**< @brief Drawer const unsigned int TileCalibUtils::BAD_DEFINITION_CHAN = 0; /**< @brief Channel used for storing of bad channel definitions */ const unsigned int TileCalibUtils::NOISY_DEFINITION_CHAN = 1; /**< @brief Channel used for storing of noisy channel definitions */ const unsigned int TileCalibUtils::NOGAINL1_DEFINITION_CHAN = 2; /**< @brief Channel used for storing of NoGainLevel1 channel definitions */ +const unsigned int TileCalibUtils::BADTIMING_DEFINITION_CHAN = 3; /**< @brief Channel used for storing of NoGainLevel1 channel definitions */ // //_____________________________________________________________________________ -- GitLab