diff --git a/.github/scripts/compile_and_test.sh b/.github/scripts/compile_and_test.sh index 2bcf46291..06d267c31 100755 --- a/.github/scripts/compile_and_test.sh +++ b/.github/scripts/compile_and_test.sh @@ -15,6 +15,7 @@ cmake -GNinja \ -DBoost_NO_BOOST_CMAKE=ON \ -DDD4HEP_USE_LCIO=ON \ -DDD4HEP_USE_TBB=${TBB} \ + -DDD4HEP_USE_HEPMC3=${HEPMC3:-OFF} \ -DBUILD_TESTING=ON \ -DDD4HEP_DEBUG_CMAKE=ON \ -DBUILD_SHARED_LIBS=${SHARED} \ diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index a5888a1fb..b569d10c6 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -152,6 +152,7 @@ jobs: SHARED: ON STANDARD: 17 TBB: OFF + HEPMC3: ON steps: - uses: actions/checkout@v2 - name: Install CVMFS @@ -170,7 +171,7 @@ jobs: - name: Start container run: | ls - docker run -it --name CI_container -v /home/runner/work/DD4hep/DD4hep:/Package -e VIEW=${{ matrix.LCG }} -e SHARED=${SHARED} -e STANDARD=${STANDARD} -e TBB=${TBB} -v /cvmfs/sft.cern.ch:/cvmfs/sft.cern.ch -v /cvmfs/geant4.cern.ch:/cvmfs/geant4.cern.ch -v /cvmfs/sft-nightlies.cern.ch:/cvmfs/sft-nightlies.cern.ch -d ghcr.io/aidasoft/centos7:latest /bin/bash + docker run -it --name CI_container -v /home/runner/work/DD4hep/DD4hep:/Package -e VIEW=${{ matrix.LCG }} -e SHARED=${SHARED} -e STANDARD=${STANDARD} -e TBB=${TBB} -e HEPMC3=${HEPMC3} -v /cvmfs/sft.cern.ch:/cvmfs/sft.cern.ch -v /cvmfs/geant4.cern.ch:/cvmfs/geant4.cern.ch -v /cvmfs/sft-nightlies.cern.ch:/cvmfs/sft-nightlies.cern.ch -d ghcr.io/aidasoft/centos7:latest /bin/bash - name: Compile and test run: | docker exec CI_container /bin/bash -c "./Package/.github/scripts/compile_and_test.sh" diff --git a/DDG4/hepmc/HepMC3FileReader.cpp b/DDG4/hepmc/HepMC3FileReader.cpp index 2a9a47b2a..927471453 100644 --- a/DDG4/hepmc/HepMC3FileReader.cpp +++ b/DDG4/hepmc/HepMC3FileReader.cpp @@ -109,7 +109,10 @@ HEPMC3FileReader::moveToEvent(int event_number) { while( m_currEvent != event_number) { printout(INFO,"HEPMC3FileReader::moveToEvent","Event number before skipping: %d", m_currEvent ); HepMC3::GenEvent genEvent; - m_reader->skip(event_number); + auto status_OK = m_reader->skip(event_number); + if(not status_OK) { + return EVENT_READER_IO_ERROR; + } m_currEvent = event_number; printout(INFO,"HEPMC3FileReader::moveToEvent","Event number after skipping: %d", m_currEvent ); } @@ -119,7 +122,10 @@ HEPMC3FileReader::moveToEvent(int event_number) { /// Read an event and fill a vector of MCParticles. Geant4EventReader::EventReaderStatus HEPMC3FileReader::readGenEvent(int /*event_number*/, HepMC3::GenEvent& genEvent) { - m_reader->read_event(genEvent); + auto status_OK = m_reader->read_event(genEvent); + if(not status_OK) { + return EVENT_READER_IO_ERROR; + } ++m_currEvent; if (genEvent.particles().size()) { printout(INFO,"HEPMC3FileReader","Read event from file"); diff --git a/DDTest/CMakeLists.txt b/DDTest/CMakeLists.txt index 4f065e258..d3fb4fe2d 100644 --- a/DDTest/CMakeLists.txt +++ b/DDTest/CMakeLists.txt @@ -54,6 +54,12 @@ if (DD4HEP_USE_GEANT4) test_EventReaders ) add_executable(${TEST_NAME} src/${TEST_NAME}.cc) + if(DD4HEP_USE_HEPMC3) + target_compile_definitions(${TEST_NAME} PRIVATE DD4HEP_USE_HEPMC3) + endif() + if(DD4HEP_USE_LCIO) + target_compile_definitions(${TEST_NAME} PRIVATE DD4HEP_USE_LCIO) + endif() target_link_libraries(${TEST_NAME} DD4hep::DDCore DD4hep::DDRec DD4hep::DDG4) target_include_directories(${TEST_NAME} PRIVATE ./include) install(TARGETS ${TEST_NAME} DESTINATION bin) diff --git a/DDTest/src/test_EventReaders.cc b/DDTest/src/test_EventReaders.cc index 5efe6effb..06400858c 100644 --- a/DDTest/src/test_EventReaders.cc +++ b/DDTest/src/test_EventReaders.cc @@ -37,11 +37,14 @@ int main(int argc, char** argv ){ std::string inputFileFolder = argv[1]; std::vector tests; + #ifdef DD4HEP_USE_LCIO tests.push_back( TestTuple( "LCIOStdHepReader", "bbudsc_3evt.stdhep" ) ); tests.push_back( TestTuple( "LCIOFileReader", "muons.slcio" , /*skipEOF= */ true ) ); + #endif tests.push_back( TestTuple( "Geant4EventReaderHepEvtShort", "Muons10GeV.HEPEvt" ) ); - tests.push_back( TestTuple( "Geant4EventReaderHepMC", "g4pythia.hepmc" ) ); - + #ifdef DD4HEP_USE_HEPMC3 + tests.push_back( TestTuple( "HEPMC3FileReader", "g4pythia.hepmc", /*skipEOF= */ true) ); + #endif try{ for(std::vector::const_iterator it = tests.begin(); it != tests.end(); ++it) {