Skip to content
Snippets Groups Projects
Commit cdab72c0 authored by Dominik Smith's avatar Dominik Smith Committed by Florian Uhlig
Browse files

Unit test for TimeClusterTrigger and EventBuilder

parent 0656dbed
Branches master
No related tags found
No related merge requests found
add_subdirectory (data)
add_subdirectory (test)
# Create a library libCbmAlgo
......
Macro(CreateGTestExeAndAddTest _testname _includeDirs _linkDirs _sources _dependencies _testdepend)
Include_Directories(SYSTEM "${_includeDirs}")
Link_Directories(${_linkDirs})
Add_Executable(${_testname} ${_sources})
if(CBM_LOCAL_GTEST)
Add_Dependencies(${_testname} GTEST)
endif()
Target_Link_Libraries(${_testname} ${_dependencies})
Gen_Exe_Script(${_testname})
string(REPLACE ${PROJECT_SOURCE_DIR}
${PROJECT_BINARY_DIR} new_path ${CMAKE_CURRENT_SOURCE_DIR}
)
Add_Test(${_testname} ${new_path}/${_testname}.sh)
If(NOT ${_testdepend} STREQUAL "")
Set_Tests_Properties(${_testname} PROPERTIES DEPENDS ${_testdepend})
EndIf()
EndMacro(CreateGTestExeAndAddTest)
FIND_PACKAGE(Threads REQUIRED)
Set(INCLUDE_DIRECTORIES
${CBMBASE_DIR}
${CBMDATA_DIR}
${CBMDATA_DIR}/base
${CBMDATA_DIR}/global
${CBMDATA_DIR}/sts
${CBMDATA_DIR}/tof
${CBMDATA_DIR}/rich
${CBMDATA_DIR}/much
${CBMDATA_DIR}/psd
${CBMDATA_DIR}/trd
${CMAKE_SOURCE_DIR}/external/ipc/ipc/lib/fles_ipc
${CMAKE_SOURCE_DIR}/algo
${CMAKE_SOURCE_DIR}/algo/trigger
${CMAKE_SOURCE_DIR}/algo/evbuild
${BASE_INCLUDE_DIRECTORIES}
${GTEST_INCLUDE_DIR}
)
MESSAGE("FAIRROOT_LIBRARY_DIR: ${FAIRROOT_LIBRARY_DIR}")
Set(LINK_DIRECTORIES
${FAIRROOT_LIBRARY_DIR}
)
Set(DEPENDENCIES
${GTEST_BOTH_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
CbmData
)
if (CMAKE_SYSTEM_NAME MATCHES Linux)
set(DEPENDENCIES ${DEPENDENCIES} rt)
endif()
Set(TimeClusterTriggerSources
${CMAKE_SOURCE_DIR}/algo/trigger/TimeClusterTrigger.cxx
_GTestTimeClusterTrigger.cxx
)
CreateGTestExeAndAddTest(_GTestTimeClusterTrigger "${INCLUDE_DIRECTORIES}" "${LINK_DIRECTORIES}"
"${TimeClusterTriggerSources}" "${DEPENDENCIES}" "")
Set(EventBuilderSources
${CMAKE_SOURCE_DIR}/algo/evbuild/EventBuilder.cxx
_GTestEventBuilder.cxx
)
CreateGTestExeAndAddTest(_GTestEventBuilder "${INCLUDE_DIRECTORIES}" "${LINK_DIRECTORIES}"
"${EventBuilderSources}" "${DEPENDENCIES}" "")
/* Copyright (C) 2016-2017 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
SPDX-License-Identifier: GPL-3.0-only
Authors: Dominik Smith [committer] */
#include "EventBuilder.h"
#include "gtest/gtest-spi.h"
#include "gtest/gtest.h"
TEST(_GTestEventBuilder, CheckEventBuilderAlgorithmSimple)
{
SCOPED_TRACE("CheckEventBuilderAlgorithSimple");
cbm::algo::EventBuilder evbuild;
evbuild.SetTriggerWindow(ECbmModuleId::kSts, -45.0, 45.0);
CbmDigiTimeslice tsIn;
const uint nInput = 1000;
const double inputSpacing = 10.0;
for (uint i = 0; i < nInput; i++) {
tsIn.fData.fSts.fDigis.push_back(CbmStsDigi(268502050, 1, i * inputSpacing, 1.0));
}
std::vector<double> triggerIn;
const uint nTrigger = 99;
const double triggerSpacing = 100.0;
for (uint i = 1; i <= nTrigger; i++) {
triggerIn.push_back(i * triggerSpacing);
}
std::vector<CbmDigiEvent> eventsOut = evbuild(tsIn, triggerIn);
EXPECT_EQ(eventsOut.size(), nTrigger);
for (uint i = 0; i < eventsOut.size(); i++) {
EXPECT_EQ(eventsOut[i].fData.fSts.fDigis.size(), 9);
EXPECT_EQ(eventsOut[i].fTime, triggerIn[i]);
}
}
/* Copyright (C) 2016-2017 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
SPDX-License-Identifier: GPL-3.0-only
Authors: Dominik Smith [committer] */
#include "TimeClusterTrigger.h"
#include "gtest/gtest-spi.h"
#include "gtest/gtest.h"
TEST(_GTestTimeClusterTrigger, CheckTriggerAlgorithmSimple)
{
SCOPED_TRACE("CheckTriggerAlgorithSimple");
cbm::algo::TimeClusterTrigger trigger;
std::vector<double> dataIn;
const uint nInput = 1000.;
const double inputSpacing = 10.0;
const double deadTime = 5.;
const double windowSize = 1000.;
const uint nMinNumber = 100;
for (uint i = 0; i < nInput; i++) {
dataIn.push_back(i * inputSpacing);
}
std::vector<double> dataOut = trigger(dataIn, windowSize, nMinNumber, deadTime);
EXPECT_EQ(dataOut.size(), 10);
for (uint i = 0; i < dataOut.size(); i++) {
EXPECT_EQ(dataOut[i], 495. + i * 1000.);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment