00001 /* 00002 * \class TsESumTriggerTool 00003 * 00004 * \brief ESum trigger tool 00005 * 00006 * bseilhan@iit.edu 2010-03-23 00007 * 00008 */ 00009 00010 #ifndef _TsESumTriggerTool_H_ 00011 #define _TsESumTriggerTool_H_ 00012 00013 #include "TrigSim/ITsTriggerTool.h" 00014 #include "GaudiAlg/GaudiTool.h" 00015 00016 #include "Conventions/Detectors.h" 00017 #include "Conventions/Trigger.h" 00018 00019 #include <vector> 00020 #include <map> 00021 #include <string> 00022 00023 namespace DayaBay{ 00024 class ElecHeader; 00025 class SimTrigHeader; 00026 } 00027 00028 class TsESumTriggerTool : public GaudiTool , virtual public ITsTriggerTool 00029 { 00030 public: 00031 00032 TsESumTriggerTool(const std::string& type, 00033 const std::string& name, 00034 const IInterface* parent); 00035 00036 virtual ~TsESumTriggerTool(); 00037 00038 virtual StatusCode mutate(DayaBay::SimTrigHeader* trigHeader, 00039 const DayaBay::ElecHeader& elecHeader); 00040 00041 virtual StatusCode initialize(); 00042 virtual StatusCode finalize(); 00043 00044 private: 00045 unsigned int m_recoveryCycles; 00046 00047 double m_ADThreshold; 00048 double m_FarIWSThreshold; 00049 double m_FarOWSThreshold; 00050 double m_NearIWSThreshold; 00051 double m_NearOWSThreshold; 00052 00053 std::map<std::string,double> m_UpperLowerThresholdMap; 00054 std::map<std::string,double> m_TotalDigitalThresholdMap; 00055 00056 virtual StatusCode fillTriggers(DayaBay::SimTrigHeader* trigHeader, 00057 const DayaBay::ElecHeader& elecHeader); 00058 00059 std::vector<std::string> m_detectorsToProcess; 00060 00061 double getULThreshold(DayaBay::Detector det); 00062 double getDTThreshold(DayaBay::Detector det); 00063 00064 int getDigitalValue(double analogThresh); 00065 00066 DayaBay::Trigger::TriggerType_t getTriggerType(DayaBay::Detector det); 00067 }; 00068 00069 00070 00071 #endif /* _TsESumTriggerTool_H_ */