00001 #include "mEmcMaskDeadTowers.h" 00002 #include "PHCompositeNode.h" 00003 00004 #include "emcBadModules.h" 00005 #include "emcTowerContainer.h" 00006 #include "emcTowerContent.h" 00007 #include "emcNodeHelper.h" 00008 #include "EmcIndexer.h" 00009 #include "recoConsts.h" 00010 #include "getClass.h" 00011 00012 #include <fstream> 00013 #include <iostream> 00014 00015 using namespace std; 00016 00017 //_____________________________________________________________________________ 00018 mEmcMaskDeadTowers::mEmcMaskDeadTowers() 00019 { 00020 name = "mEmcMaskDeadTowers"; 00021 recoConsts *rc = recoConsts::instance(); 00022 00023 unsigned int err, warn; 00024 unsigned int towerid; 00025 00026 fErrorRaw.resize(NCHANNELS, 0); 00027 fWarnRaw.resize(NCHANNELS, 0); 00028 00029 fErrorRaw.resize(NCHANNELS, 0); 00030 fWarnRaw.resize(NCHANNELS, 0); 00031 00032 fErrorMap.resize(fErrorRaw.size() , 0 ); 00033 00034 ifstream fin(rc->get_CharFlag("EMCDEADRECALDATASOURCE")); 00035 while (fin >> towerid >> err >> warn) 00036 { 00037 cout << towerid << " " << err << endl; 00038 fErrorRaw[towerid] = err; 00039 fWarnRaw[towerid] = warn; 00040 } 00041 fin.close(); 00042 } 00043 00044 //_____________________________________________________________________________ 00045 mEmcMaskDeadTowers::~mEmcMaskDeadTowers() 00046 { 00047 } 00048 00049 //_____________________________________________________________________________ 00050 PHBoolean 00051 mEmcMaskDeadTowers::event(PHCompositeNode* topNode) 00052 { 00053 emcTowerContainer* towers = 00054 findNode::getClass<emcTowerContainer>(topNode, "emcTowerContainer"); 00055 00056 if (!towers) 00057 return 0; 00058 00059 for ( size_t i = 0; i < towers->size(); ++i ) 00060 { 00061 emcTowerContent* twr = towers->getTower(i); 00062 if (twr == 0) 00063 { 00064 cout << PHWHERE << " SEVERE ERROR: Got NULL pointer for tower, contact the emc group with this" 00065 << endl; 00066 exit(1); 00067 } 00068 00069 int towerid = twr->TowerID(); 00070 unsigned int cdead = ErrorFast(towerid); 00071 if (cdead & 0x400) 00072 { 00073 // twr->SetCalibrated(0.0,0.0); 00074 // cout << towerid << " " << cdead << endl; 00075 twr->Zero(); 00076 twr->SetNeighbours(cdead,0); 00077 } 00078 } 00079 } 00080 00081 //_____________________________________________________________________________ 00082 unsigned int 00083 mEmcMaskDeadTowers::ErrorFast(int towerID) 00084 { 00085 return fErrorRaw[towerID]; 00086 } 00087 00088 //_____________________________________________________________________________ 00089 unsigned int 00090 mEmcMaskDeadTowers::DeadmapFast(int towerID) 00091 { 00092 return fErrorMap[towerID]; 00093 } 00094 00095 //_____________________________________________________________________________ 00096 unsigned int 00097 mEmcMaskDeadTowers::WarningFast(int towerID) 00098 { 00099 return fWarnRaw[towerID]; 00100 }