00001 #ifndef _mEmcToolsModule_h
00002 #define _mEmcToolsModule_h
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "phool.h"
00018
00019 #include "mEmcGeometryModule.h"
00020 #include "emcQAs.h"
00021
00022 #include "PHTimeStamp.h"
00023
00024 #include <vector>
00025 #include <map>
00026 #include <algorithm>
00027
00031 class dEmcCalibTowerWrapper;
00032 class emcCalibratedDataObject;
00033 class PHCompositeNode;
00034 class PISAEvent;
00035 class TTree;
00036
00037 class mEmcToolsModule
00038 {
00039
00040 public:
00041
00042 mEmcToolsModule();
00043 virtual ~mEmcToolsModule() {}
00044
00045 static mEmcToolsModule *instance();
00046
00047 int EmcCollectDeadMap(const PHTimeStamp when);
00048
00049 int AssignRealDeadMaptoSimulTowers(PHCompositeNode *topNode);
00050
00051 void GetCdoFromCalibTowerTable(const dEmcCalibTowerWrapper& dEmcCalibTower,
00052 emcCalibratedDataObject& cdo,
00053 const float SimCorrection = 1.);
00054 void GetCalibTowerTableFromCdo(dEmcCalibTowerWrapper& dEmcCalibTower,
00055 const emcCalibratedDataObject& cdo);
00056
00057 emcQAs* GetDeadMap(){ return fEmc_QA; }
00058 int GetDead(int towerid) { return fEmc_QA->GetDead( (int)fEmc_map[towerid] ); }
00059
00060 void setverbose(const int verboselevel = 0) { fVerbose = verboselevel; };
00061 void setEnergyAndTOFtoZeroInDeadTowers(const bool DeadToZero = true );
00062
00063 static int EventInEMCalAcceptance(const PISAEvent *pisaEvent, const int kevent, TTree *T, mEmcGeometryModule *geom = 0);
00064
00065 static int HitInEMCalAcceptance(const float *, const float*);
00066 static int HitInEMCalAcceptance(const float *, const float*, mEmcGeometryModule *geom );
00067 static bool HitInPbSc(const float *, const float* , int&,
00068 mEmcGeometryModule* geom=0);
00069 static bool HitInPbGl(const float *, const float* , int&,
00070 mEmcGeometryModule* geom=0);
00071
00072
00073 PHBoolean event(PHCompositeNode *);
00074
00075 protected:
00076
00077 int EmcGetDataMap();
00078
00079 private:
00080
00081 emcQAs* fEmc_QA;
00082 std::map<int,int> fEmc_map;
00083
00084 int fVerbose;
00085 bool fZeroEnergyAndTOFInDeadTowers;
00086
00087 };
00088
00089 #endif