CMS 3D CMS Logo

PixelROCStatus.cc

Go to the documentation of this file.
00001 //
00002 // This class keeps the possible non-standard
00003 // status a ROC can have.
00004 //
00005 //
00006 //
00007 
00008 #include <stdint.h>
00009 #include <set>
00010 #include <iostream>
00011 #include <cassert>
00012 #include "CalibFormats/SiPixelObjects/interface/PixelROCStatus.h"
00013 
00014 using namespace std;
00015 using namespace pos;
00016 
00017 //======================================================================================
00018 PixelROCStatus::PixelROCStatus():
00019   bits_(0)
00020 {}
00021 
00022 
00023 //======================================================================================
00024 PixelROCStatus::PixelROCStatus(const std::set<ROCstatus>& stat){
00025 
00026   std::set<ROCstatus>::const_iterator i=stat.begin();
00027   
00028   for(;i!=stat.end();++i){
00029     set(*i);
00030   }
00031 
00032 }
00033 
00034 //======================================================================================
00035 PixelROCStatus::~PixelROCStatus(){}
00036     
00037 //======================================================================================
00038 void PixelROCStatus::set(ROCstatus stat){
00039   reset() ;
00040   bits_=bits_|(1<<stat);
00041 }
00042 
00043 //======================================================================================
00044 void PixelROCStatus::clear(ROCstatus stat){
00045   bits_=bits_&(0<<stat);
00046 }
00047 
00048 //======================================================================================
00049 // Added by Dario (March 4th 2008)
00050 void PixelROCStatus::reset(void){
00051   bits_=0;
00052 }
00053 
00054 //======================================================================================
00055 void PixelROCStatus::set(ROCstatus stat, bool mode){
00056   reset() ;
00057   if (mode) {
00058     set(stat);
00059   }
00060   else{
00061     clear(stat);
00062   }
00063 }
00064 
00065 //======================================================================================
00066 bool PixelROCStatus::get(ROCstatus stat) const{
00067   return bits_&(1<<stat);
00068 }
00069 
00070 //======================================================================================
00071 string PixelROCStatus::statusName(ROCstatus stat) const{
00072   if (stat==off) return "off";
00073   if (stat==noHits) return "noHits";
00074   if (stat==noInit) return "noInit";
00075   assert(0);
00076   return "";
00077 }
00078 
00079 //======================================================================================
00080 // modified by MR on 11-01-2008 15:06:28
00081 string PixelROCStatus::statusName() const {
00082   string result = "" ;
00083   for (ROCstatus istat=off; istat!=nStatus; istat=ROCstatus(istat+1))
00084     {
00085       if (get(istat))
00086         {
00087           result += statusName(istat) ;
00088         }
00089     }
00090   return result ;
00091 }
00092 
00093 //======================================================================================
00094 void PixelROCStatus::set(const string& statName){
00095 
00096   if(statName != "")
00097     {
00098       for (ROCstatus istat=off; istat!=nStatus; istat=ROCstatus(istat+1)){
00099         if (statName==statusName(istat)){
00100           set(istat);
00101           return;
00102         }
00103       }
00104       cout << "[PixelROCStatus::set()] statName |"
00105            << statName <<"| is an invalid keyword"<<endl;
00106       ::abort();
00107     }
00108   else 
00109     {
00110       reset() ;
00111     }
00112 }

Generated on Tue Jun 9 17:25:26 2009 for CMSSW by  doxygen 1.5.4