mEmcMaskDeadTowers.C

Go to the documentation of this file.
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 }