#pragma once #include "TbUTICommonModeSubtractor.h" #include "TbUTIChannelMaskProvider.h" #include <map> namespace TbUT { class CMSIterativelyPerBeetle : public ICommonModeSubtractor { public: CMSIterativelyPerBeetle(IChannelMaskProvider& p_masksProvider); void processEvent(RawData<>* p_data, RawData<double> **p_output); private: template<typename DATA_TYPE> void calculateCorrection(RawData<DATA_TYPE>* p_inputData); template<typename INPUT_DATA_TYPE, typename OUTPUT_TYPE_NAME> void removeCM(RawData<INPUT_DATA_TYPE>* p_data, RawData<OUTPUT_TYPE_NAME> **p_output); void resetHitThresholds(); void initializeCorrectionAndHitMaps(); IChannelMaskProvider& m_masksProvider; const int m_channelNumber; const int m_channelPerBeetle; std::map<int, double> m_correctionPerBeetle; std::map<int, double> m_hitThresholdPerBeetle; }; }