00001 #ifndef __EMCBADMODULESV1_H__ 00002 #define __EMCBADMODULESV1_H__ 00003 00004 #include <vector> 00005 #include <map> 00006 #include <string> 00007 #ifndef __EMCBADMODULES_H__ 00008 # include "emcBadModules.h" 00009 #endif 00010 #ifndef __PHTIMESTAMP_H__ 00011 # include "PHTimeStamp.h" 00012 #endif 00013 #ifndef __EMCMANAGEABLE_H__ 00014 # include "emcManageable.h" 00015 #endif 00016 #ifndef __EMCDATASTORAGEMAP_H__ 00017 # include "emcDataStorageMap.h" 00018 #endif 00019 00032 class emcBadModulesv1 : public emcBadModules 00033 { 00034 00035 public: 00036 00048 00050 emcBadModulesv1(); 00051 00053 emcBadModulesv1(const char* directory, 00054 emcBadModules::EInformationOrigin origin = emcBadModules::kAll, 00055 bool init=true, 00056 const char* sectors="emcal"); 00057 00061 emcBadModulesv1(const PHTimeStamp& ts, 00062 emcBadModules::EInformationOrigin origin=emcBadModules::kAll, 00063 const emcDataStorageMap& source = emcDataStorageMap(emcManageable::kDB_Pg), 00064 bool init = true, 00065 const char* sectors="emcal"); 00067 00069 emcBadModulesv1(const emcBadModulesv1&); 00070 00071 emcBadModulesv1& operator=(const emcBadModulesv1&); 00072 00073 emcBadModulesv1* clone(void) const { return new emcBadModulesv1(*this); } 00074 00076 virtual ~emcBadModulesv1(); 00077 00083 00084 unsigned int Deadmap(int towerID); 00086 unsigned int DeadmapFast(int towerID) const; 00087 00089 unsigned int Warnmap(int towerID); 00091 unsigned int WarnmapFast(int towerID) const; 00093 00099 00101 unsigned int Error(emcBadModules::EInformationOrigin source, int towerID); 00103 unsigned int ErrorFast(emcBadModules::EInformationOrigin source, 00104 int towerID) const; 00106 unsigned int Warning(emcBadModules::EInformationOrigin source, int towerID); 00108 unsigned int WarningFast(emcBadModules::EInformationOrigin source, 00109 int towerID) const; 00110 00112 00113 void identify(std::ostream& os=std::cout) const; 00114 00115 int isValid() const; 00116 00118 void Reset(); 00119 00121 std::ostream& Print(int towerid=-1, std::ostream& out=std::cout); 00122 00124 unsigned int size(void) const { return fErrorMap.size(); } 00125 00126 private: 00127 00129 void Allocate(void); 00130 00132 std::string CollectPhysicsQA(void); 00133 00135 std::string CollectOnlineQA(void); 00136 00138 std::string CollectOnlineQA(size_t ifem); 00139 00140 void Collect(size_t ifem); 00141 00144 void ComputeMaps(size_t ifem); 00145 00147 void ComputeMaps(const char* sectors="emcal"); 00148 00150 void GetListOfNeighbourFEMs(size_t ifem, std::vector<size_t>& fems); 00151 00154 bool IsValid(int towerID) const; 00155 00159 void update(int towerID); 00160 00162 std::ostream& PrintOne(int towerid, std::ostream& out=std::cout); 00163 00164 #ifndef __CINT__ 00165 private: 00166 00168 void copyTo(emcBadModulesv1&) const; 00169 00170 emcDataStorageMap fDataSource; 00171 emcBadModules::EInformationOrigin fOrigin; 00172 std::string fDirectory; 00173 PHTimeStamp fTimeStamp; 00174 bool fIsRejectListAlreadyRead; 00175 00176 std::vector<unsigned int> fErrorMap; 00177 std::vector<unsigned int> fWarnMap; 00178 00179 std::vector<bool> fCollectedFEMs; 00180 std::vector<bool> fComputedFEMs; 00181 00182 std::map<EInformationOrigin, std::vector<unsigned int> > fErrorRaw; 00183 std::map<EInformationOrigin, std::vector<unsigned int> > fWarnRaw; 00184 00185 typedef 00186 std::map<EInformationOrigin, std::vector<unsigned int> >::const_iterator 00187 RawMapIterator; 00188 00189 static const unsigned int fMASK_Ampl_Physics = 0x0000F; 00190 static const unsigned int fMASK_Ampl_Online = 0x40000; 00191 static const unsigned int fMASK_Ampl_OnlineWarn = 0x00000; 00192 00193 static const unsigned int fMASK_TOF_Physics = 0x000F0; 00194 static const unsigned int fMASK_TOF_Online = 0x00000; 00195 static const unsigned int fMASK_TOF_OnlineWarn = 0x00000; 00196 00197 #endif 00198 00199 ClassDef(emcBadModulesv1,1) 00200 }; 00201 00202 #endif