mEmcToolsModule.h

Go to the documentation of this file.
00001 #ifndef _mEmcToolsModule_h
00002 #define _mEmcToolsModule_h
00003 //-------------------------------------------------------------------------
00004 // 
00005 // Package: offline/packages/emc
00006 //
00007 // Declaration of class mEmcToolsModule
00008 // 
00009 // Purpose: This analysis "module" wraps several methods used 
00010 //          in the simul+real embedding procedure
00011 // 
00012 // Copyright (C) PHENIX collaboration, 2000-2001-2002
00013 //
00014 // Author: David D'ENTERRIA - SUBATECH 
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(); // default constructor
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*); // CKB EMCal acceptance cut
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   // Equivalent of calling AssignRealDeadMaptoSimulTowers.
00073   PHBoolean event(PHCompositeNode *);
00074 
00075 protected:
00076 
00077   int EmcGetDataMap();
00078 
00079 private:
00080 
00081   emcQAs* fEmc_QA;       // Q&A object (deadmap)
00082   std::map<int,int> fEmc_map; // DataMap [index<->channel] for QA
00083 
00084   int fVerbose;
00085   bool fZeroEnergyAndTOFInDeadTowers;
00086 
00087 };
00088 
00089 #endif