/search.css" rel="stylesheet" type="text/css"/> /search.js">
00001 /* 00002 * \class ROsFeeReadoutTool 00003 * 00004 * \brief Fee Readout Tool 00005 * 00006 * bseilhan@iit.edu Wed Sep 17 21:33:23 CDT 2008 00007 * 00008 */ 00009 00010 #ifndef _ROFEEREADOUTTOOLL_H_ 00011 #define _ROFEEREADOUTTOOLL_H_ 00012 00013 #include "ReadoutSim/IROsReadoutTool.h" 00014 #include "ReadoutSim/IROsFeeWaveformTool.h" 00015 #include "ReadoutSim/IROsFeeTdcTool.h" 00016 #include "ReadoutSim/IROsFadcReadoutTool.h" 00017 00018 #include "GaudiAlg/GaudiTool.h" 00019 00020 #include "Conventions/Detectors.h" 00021 #include "Conventions/Trigger.h" 00022 #include "DataSvc/ISimDataSvc.h" 00023 00024 #include <vector> 00025 #include <string> 00026 00027 namespace DayaBay{ 00028 class ElecHeader; 00029 class ElecFeeCrate; 00030 class ElecFeeChannel; 00031 class SimTrigHeader; 00032 class SimTrigCommand; 00033 class SimReadoutHeader; 00034 class ReadoutPmtCrate; 00035 class ReadoutPmtChannel; 00036 class ReadoutTriggerDataPkg; 00037 class ReadoutTriggerDataFrame; 00038 } 00039 00040 class ROsFeeReadoutTool : public GaudiTool , virtual public IROsReadoutTool 00041 { 00042 public: 00043 00044 ROsFeeReadoutTool(const std::string& type, 00045 const std::string& name, 00046 const IInterface* parent); 00047 00048 virtual ~ROsFeeReadoutTool(); 00049 00050 virtual StatusCode mutate(DayaBay::SimReadoutHeader *roHeader, 00051 std::vector<DayaBay::ReadoutTriggerDataPkg*>& trigDataPkg, 00052 const DayaBay::ElecHeader& elecHeader); 00053 00054 virtual StatusCode initialize(); 00055 virtual StatusCode finalize(); 00056 00057 private: 00058 virtual StatusCode makeReadouts(DayaBay::SimReadoutHeader *roHeader, 00059 std::vector<DayaBay::ReadoutTriggerDataPkg*>& trigDataPkg, 00060 const DayaBay::ElecHeader& elecHeader); 00061 00062 DayaBay::ReadoutPmtCrate* readoutCrate(const DayaBay::ReadoutTriggerDataFrame *tdf, 00063 const DayaBay::ElecFeeCrate *cr, Context context); 00064 00065 DayaBay::ReadoutPmtChannel* readoutChannel(const DayaBay::ReadoutTriggerDataFrame *tdf, 00066 const DayaBay::ElecFeeChannel *ch, 00067 DayaBay::FeeChannelId channelId, 00068 Context context); 00069 00070 IROsFeeTdcTool* m_tdcTool; 00071 IROsFeeWaveformTool* m_waveformTool; 00072 IROsFadcReadoutTool* m_fadcTool; 00073 00074 bool m_enablePeakReadout; 00075 bool m_enableWaveformReadout; 00076 bool m_enableFadcReadout; 00077 std::string m_tdcToolName; 00078 std::string m_waveformToolName; 00079 std::string m_fadcToolName; 00080 00081 // Property CableSvcName - Service name for electronics sim properties 00082 std::string m_simDataSvcName; 00083 ISimDataSvc *m_simDataSvc; 00084 00085 std::vector<std::string> m_detectorsToProcess; 00086 std::set<DayaBay::Detector> m_detectors; 00087 std::vector<int> m_roCycles; 00088 int m_readoutLength; 00089 int m_triggerLatency; 00090 int m_peakFindingLength; 00091 int m_peakFindingOffset; 00092 bool m_peakFindingOverlap; 00093 int m_readoutOffset; 00094 int m_preAdcOffset; 00095 int m_fadcOffset; 00096 int m_fadcLength; 00097 int m_nhitCycles; 00098 int m_eSumCycles; 00099 int m_maxFineAdc; 00100 }; 00101 00102 00103 00104 #endif /* _ROFEEREADOUTTOOLL_H_ */