diff --git a/.gitignore b/.gitignore index 7c6a4e82..10ce762b 100644 --- a/.gitignore +++ b/.gitignore @@ -47,4 +47,11 @@ Testing # Test input files test/gaudi_opts/testConverterConstants.py test/inputFiles/muons.slcio -test/inputFiles/testSimulation.slcio \ No newline at end of file +test/inputFiles/testSimulation.slcio + +# Tooling +/.clangd/ + +# Spack artifacts +spack-*/ +spack-*.txt diff --git a/doc/starterkit/k4MarlinWrapperCLIC/CEDViaWrapper.md b/doc/starterkit/k4MarlinWrapperCLIC/CEDViaWrapper.md index 251e51ba..598180a1 100644 --- a/doc/starterkit/k4MarlinWrapperCLIC/CEDViaWrapper.md +++ b/doc/starterkit/k4MarlinWrapperCLIC/CEDViaWrapper.md @@ -102,13 +102,17 @@ ApplicationMgr( TopAlg = algList, ) ``` -With all these pieces put together (as in `examples/event_display.py`) it is no possible to run the event display. In order to run the event display we first have to start the `glced` server program to which the wrapped `CEDViewer` processor will then connect. Starting the server and running the wrapped processor can be done via +With all these pieces put together (as in `examples/event_display.py`) it is now possible to run the event display. In order to run the event display we first have to start the `glced` server program to which the wrapped `CEDViewer` processor will then connect. Starting the server and running the wrapped processor can be done via ```bash glced & -k4run $K4MARLINWRAPPER/examples/event_display.py --EventDataSvc.input=gamma_10GeV_edm4hep.root +k4run $K4MARLINWRAPPER/examples/event_display.py --EventDataSvc.input=gamma_10GeV_edm4hep.root || true ``` +Note that we silence the exit code of `k4run` to work around a [framework +issue](https://github.com/key4hep/k4FWCore/issues/125). This is usually not +necessary if you run things interactively. + ## Creating a Gaudi options file The `event_display.py` options file that is used above and that is present in the examples has been produced following these steps: diff --git a/doc/starterkit/k4MarlinWrapperCLIC/Readme.md b/doc/starterkit/k4MarlinWrapperCLIC/Readme.md index 5733a676..ce176d70 100644 --- a/doc/starterkit/k4MarlinWrapperCLIC/Readme.md +++ b/doc/starterkit/k4MarlinWrapperCLIC/Readme.md @@ -124,8 +124,10 @@ included with k4MarlinWrapper. Note that: + Change line `evtsvc.input = '$TEST_DIR/inputFiles/ttbar1_edm4hep.root'` to point to the location of your input file. + At the bottom of the file, in the `ApplicationMgr` parameters, change `EvtMax = 3,` to the number of events to run. - -This can be run with: +This can be run in the following way. Note that we show the usage here in a way +that also works in scripts with `-e` enabled. This is necessary because of a +[framework issue](https://github.com/key4hep/k4FWCore/issues/125) that makes +`k4run` exit with a non-zero exit code even though nothing went wrong. ```bash cd CLICPerformance/clicConfig @@ -133,5 +135,7 @@ cd CLICPerformance/clicConfig cp ../../../test/gaudi_opts/clicRec_e4h_input.py . k4run clicRec_e4h_input.py --EventDataSvc.input ttbar_edm4hep.root +result=$? +[ $result = "0" ] || [ $result = "4" ] && true ``` diff --git a/k4MarlinWrapper/k4MarlinWrapper/converters/EDM4hep2Lcio.h b/k4MarlinWrapper/k4MarlinWrapper/converters/EDM4hep2Lcio.h index 9eee0592..4db86d20 100644 --- a/k4MarlinWrapper/k4MarlinWrapper/converters/EDM4hep2Lcio.h +++ b/k4MarlinWrapper/k4MarlinWrapper/converters/EDM4hep2Lcio.h @@ -7,7 +7,7 @@ #include "k4MarlinWrapper/util/k4MarlinWrapperUtil.h" // FWCore -#include <k4FWCore/DataHandle.h> +#include <k4FWCore/PodioDataSvc.h> //k4EDM4hep2LcioConv #include "k4EDM4hep2LcioConv/k4EDM4hep2LcioConv.h" @@ -35,7 +35,7 @@ class EDM4hep2LcioTool : public GaudiTool, virtual public IEDMConverter { Gaudi::Property<std::map<std::string, std::string>> m_collNames{this, "collNameMapping", {}}; Gaudi::Property<bool> m_convertAll{this, "convertAll", true}; - PodioLegacyDataSvc* m_podioDataSvc; + PodioDataSvc* m_podioDataSvc; ServiceHandle<IDataProviderSvc> m_eventDataSvc; void convertTracks(vec_pair<lcio::TrackImpl*, edm4hep::Track>& tracks_vec, diff --git a/k4MarlinWrapper/k4MarlinWrapper/converters/Lcio2EDM4hep.h b/k4MarlinWrapper/k4MarlinWrapper/converters/Lcio2EDM4hep.h index c0a35496..947c2513 100644 --- a/k4MarlinWrapper/k4MarlinWrapper/converters/Lcio2EDM4hep.h +++ b/k4MarlinWrapper/k4MarlinWrapper/converters/Lcio2EDM4hep.h @@ -5,8 +5,7 @@ #include <GaudiAlg/GaudiTool.h> // k4FWCore -#include <k4FWCore/DataHandle.h> -#include <k4FWCore/PodioLegacyDataSvc.h> +#include <k4FWCore/PodioDataSvc.h> // Converter Interface #include "k4MarlinWrapper/converters/IEDMConverter.h" @@ -48,7 +47,7 @@ class Lcio2EDM4hepTool : public GaudiTool, virtual public IEDMConverter { Gaudi::Property<bool> m_convertAll{this, "convertAll", true}; ServiceHandle<IDataProviderSvc> m_eds; - PodioLegacyDataSvc* m_podioDataSvc; + PodioDataSvc* m_podioDataSvc; // ********************************** // Check if a collection was already registered to skip it diff --git a/k4MarlinWrapper/src/components/EDM4hep2Lcio.cpp b/k4MarlinWrapper/src/components/EDM4hep2Lcio.cpp index da356fc1..4808259e 100644 --- a/k4MarlinWrapper/src/components/EDM4hep2Lcio.cpp +++ b/k4MarlinWrapper/src/components/EDM4hep2Lcio.cpp @@ -1,4 +1,8 @@ #include "k4MarlinWrapper/converters/EDM4hep2Lcio.h" + +#include "k4FWCore/DataHandle.h" +#include "k4FWCore/MetaDataHandle.h" + #include <unordered_map> DECLARE_COMPONENT(EDM4hep2LcioTool); @@ -12,7 +16,7 @@ EDM4hep2LcioTool::~EDM4hep2LcioTool() { ; } StatusCode EDM4hep2LcioTool::initialize() { StatusCode sc = m_eventDataSvc.retrieve(); - m_podioDataSvc = dynamic_cast<PodioLegacyDataSvc*>(m_eventDataSvc.get()); + m_podioDataSvc = dynamic_cast<PodioDataSvc*>(m_eventDataSvc.get()); if (sc == StatusCode::FAILURE) { error() << "Error retrieving Event Data Service" << endmsg; @@ -49,10 +53,9 @@ void EDM4hep2LcioTool::convertTrackerHits(vec_pair<lcio::TrackerHitImpl*, edm4he DataHandle<edm4hep::TrackerHitCollection> trackerhits_handle{e4h_coll_name, Gaudi::DataHandle::Reader, this}; const auto trackerhits_coll = trackerhits_handle.get(); - const auto collID = trackerhits_coll->getID(); - const auto cellIDstr = trackerhits_handle.getCollMetadataCellID(collID); + MetaDataHandle<std::string> cellIDStrHandle{trackerhits_handle, "CellIDEncoding", Gaudi::DataHandle::Reader}; - auto* conv_trackerhits = convTrackerHits(trackerhits_coll, cellIDstr, trackerhits_vec); + auto* conv_trackerhits = convTrackerHits(trackerhits_coll, cellIDStrHandle.get(), trackerhits_vec); // Add all trackerhits to event lcio_event->addCollection(conv_trackerhits, lcio_coll_name); @@ -68,8 +71,8 @@ void EDM4hep2LcioTool::convertSimTrackerHits( DataHandle<edm4hep::SimTrackerHitCollection> simtrackerhits_handle{e4h_coll_name, Gaudi::DataHandle::Reader, this}; const auto simtrackerhits_coll = simtrackerhits_handle.get(); - const auto collID = simtrackerhits_coll->getID(); - const auto cellIDstr = simtrackerhits_handle.getCollMetadataCellID(collID); + MetaDataHandle<std::string> cellIDHandle{simtrackerhits_handle, "CellIDEncoding", Gaudi::DataHandle::Reader}; + const auto cellIDstr = cellIDHandle.get(); auto* conv_simtrackerhits = convSimTrackerHits(simtrackerhits_coll, cellIDstr, simtrackerhits_vec, mcparticles_vec); @@ -86,8 +89,8 @@ void EDM4hep2LcioTool::convertCalorimeterHits( DataHandle<edm4hep::CalorimeterHitCollection> calohit_handle{e4h_coll_name, Gaudi::DataHandle::Reader, this}; const auto calohit_coll = calohit_handle.get(); - const auto collID = calohit_coll->getID(); - const auto cellIDstr = calohit_handle.getCollMetadataCellID(collID); + MetaDataHandle<std::string> cellIDHandle{calohit_handle, "CellIDEncoding", Gaudi::DataHandle::Reader}; + const auto cellIDstr = cellIDHandle.get(); auto* conv_calohits = convCalorimeterHits(calohit_coll, cellIDstr, calo_hits_vec); @@ -120,8 +123,8 @@ void EDM4hep2LcioTool::convertSimCalorimeterHits( DataHandle<edm4hep::SimCalorimeterHitCollection> sim_calohit_handle{e4h_coll_name, Gaudi::DataHandle::Reader, this}; const auto simcalohit_coll = sim_calohit_handle.get(); - auto collID = simcalohit_coll->getID(); - const auto cellIDstr = sim_calohit_handle.getCollMetadataCellID(collID); + MetaDataHandle<std::string> cellIDHandle{sim_calohit_handle, "CellIDEncoding", Gaudi::DataHandle::Reader}; + const auto cellIDstr = cellIDHandle.get(); // TODO mcparticles_vdc auto* conv_simcalohits = convSimCalorimeterHits(simcalohit_coll, cellIDstr, sim_calo_hits_vec, mcparticles); @@ -227,22 +230,12 @@ void EDM4hep2LcioTool::convertEventHeader(const std::string& e4h_coll_name, lcio // Select the appropiate method to convert a collection given its type void EDM4hep2LcioTool::convertAdd(const std::string& e4h_coll_name, const std::string& lcio_coll_name, lcio::LCEventImpl* lcio_event, CollectionsPairVectors& collection_pairs) { - // Get the associated type to the collection name - auto evt_store = m_podioDataSvc->getCollections(); - - std::string fulltype = ""; - - for (auto& [name, coll] : evt_store) { - if (name == e4h_coll_name) { - fulltype = coll->getValueTypeName(); - break; - } - } - - if (fulltype == "") { - error() << "Could not get type from collection name: " << e4h_coll_name << endmsg; - return; + const auto& evtFrame = m_podioDataSvc->getEventFrame(); + const auto collPtr = evtFrame.get(e4h_coll_name); + if (!collPtr) { + error() << "No collection with name: " << e4h_coll_name << " available for conversion" << endmsg; } + const auto fulltype = collPtr->getValueTypeName(); if (fulltype == "edm4hep::Track") { convertTracks(collection_pairs.tracks, collection_pairs.trackerhits, e4h_coll_name, lcio_coll_name, lcio_event); @@ -272,6 +265,9 @@ void EDM4hep2LcioTool::convertAdd(const std::string& e4h_coll_name, const std::s collection_pairs.clusters, e4h_coll_name, lcio_coll_name, lcio_event); } else if (fulltype == "edm4hep::EventHeader") { convertEventHeader(e4h_coll_name, lcio_event); + } else if (fulltype == "edm4hep::CaloHitContribution") { + debug() << "CaloHitContribution collection cannot be converted standalone. " + << "SimCalorimeterHit collection to be converted in order to be able to attach to them" << endmsg; } else { warning() << "Error trying to convert requested " << fulltype << " with name " << e4h_coll_name << endmsg; warning() << "List of supported types: " @@ -285,14 +281,14 @@ void EDM4hep2LcioTool::convertAdd(const std::string& e4h_coll_name, const std::s // Parse property parameters and convert the indicated collections. // Use the collection names in the parameters to read and write them StatusCode EDM4hep2LcioTool::convertCollections(lcio::LCEventImpl* lcio_event) { - const auto collections = m_podioDataSvc->getCollections(); + const auto collections = m_podioDataSvc->getEventFrame().getAvailableCollections(); // Start off with the pre-defined collection name mappings auto collsToConvert{m_collNames.value()}; if (m_convertAll) { info() << "Converting all collections from EDM4hep to LCIO" << endmsg; // And simply add the rest, exploiting the fact that emplace will not // replace existing entries with the same key - for (const auto& [name, _] : collections) { + for (const auto& name : collections) { collsToConvert.emplace(name, name); } } diff --git a/k4MarlinWrapper/src/components/Lcio2EDM4hep.cpp b/k4MarlinWrapper/src/components/Lcio2EDM4hep.cpp index 4264e3f9..e6bd7cdb 100644 --- a/k4MarlinWrapper/src/components/Lcio2EDM4hep.cpp +++ b/k4MarlinWrapper/src/components/Lcio2EDM4hep.cpp @@ -18,6 +18,9 @@ #include "k4EDM4hep2LcioConv/k4Lcio2EDM4hepConv.h" +#include <k4FWCore/DataHandle.h> +#include <k4FWCore/MetaDataHandle.h> + DECLARE_COMPONENT(Lcio2EDM4hepTool); Lcio2EDM4hepTool::Lcio2EDM4hepTool(const std::string& type, const std::string& name, const IInterface* parent) @@ -30,7 +33,7 @@ Lcio2EDM4hepTool::Lcio2EDM4hepTool(const std::string& type, const std::string& n Lcio2EDM4hepTool::~Lcio2EDM4hepTool() { ; } StatusCode Lcio2EDM4hepTool::initialize() { - m_podioDataSvc = dynamic_cast<PodioLegacyDataSvc*>(m_eds.get()); + m_podioDataSvc = dynamic_cast<PodioDataSvc*>(m_eds.get()); if (nullptr == m_podioDataSvc) return StatusCode::FAILURE; @@ -39,9 +42,12 @@ StatusCode Lcio2EDM4hepTool::initialize() { StatusCode Lcio2EDM4hepTool::finalize() { return GaudiTool::finalize(); } +// ********************************** +// Check if a collection was already registered to skip it +// ********************************** bool Lcio2EDM4hepTool::collectionExist(const std::string& collection_name) { - auto collections = m_podioDataSvc->getCollections(); - for (const auto& [name, coll] : collections) { + auto collections = m_podioDataSvc->getEventFrame().getAvailableCollections(); + for (const auto& name : collections) { if (collection_name == name) { debug() << "Collection named " << name << " already registered, skipping conversion." << endmsg; return true; @@ -68,24 +74,18 @@ void Lcio2EDM4hepTool::registerCollection( error() << "Could not register collection " << name << endmsg; } - auto handle = DataHandle<podio::CollectionBase>{name, Gaudi::DataHandle::Reader, this}; - // Convert metadata if (lcioColl != nullptr) { - const auto acollid = handle.get()->getID(); - std::vector<std::string> string_keys = {}; lcioColl->getParameters().getStringKeys(string_keys); - auto& e4h_coll_md = m_podioDataSvc->getProvider().getCollectionMetaData(acollid); - for (auto& elem : string_keys) { if (elem == "CellIDEncoding") { - std::string lcio_coll_cellid_str = lcioColl->getParameters().getStringVal(lcio::LCIO::CellIDEncoding); - e4h_coll_md.setValue("CellIDEncodingString", lcio_coll_cellid_str); + const auto& lcio_coll_cellid_str = lcioColl->getParameters().getStringVal(lcio::LCIO::CellIDEncoding); + auto& mdFrame = m_podioDataSvc->getMetaDataFrame(); + mdFrame.putParameter(podio::collMetadataParamName(name, "CellIDEncoding"), lcio_coll_cellid_str); } else { - std::string lcio_coll_value = lcioColl->getParameters().getStringVal(elem); - e4h_coll_md.setValue(elem, lcio_coll_value); + // TODO: figure out where this actually needs to go } } } diff --git a/test/gaudi_opts/clicRec_e4h_input.py b/test/gaudi_opts/clicRec_e4h_input.py index 71bd0820..03711861 100644 --- a/test/gaudi_opts/clicRec_e4h_input.py +++ b/test/gaudi_opts/clicRec_e4h_input.py @@ -23,12 +23,12 @@ # algList.append(read) -from Configurables import k4LegacyDataSvc, PodioLegacyInput -evtsvc = k4LegacyDataSvc('EventDataSvc') -evtsvc.input = '$TEST_DIR/inputFiles/ttbar1_edm4hep.root' +from Configurables import k4DataSvc, PodioInput +evtsvc = k4DataSvc('EventDataSvc') +evtsvc.input = '$TEST_DIR/inputFiles/ttbar_edm4hep_frame.root' -inp = PodioLegacyInput('InputReader') +inp = PodioInput('InputReader') inp.collections = [ 'EventHeader', 'MCParticles', @@ -1765,8 +1765,8 @@ # Write output to EDM4hep -from Configurables import PodioLegacyOutput -out = PodioLegacyOutput("PodioOutput", filename = "my_output.root") +from Configurables import PodioOutput +out = PodioOutput("PodioOutput", filename = "my_output.root") out.outputCommands = ["keep *"] diff --git a/test/gaudi_opts/edm_converters.py b/test/gaudi_opts/edm_converters.py index aa5bcc84..02e37c92 100644 --- a/test/gaudi_opts/edm_converters.py +++ b/test/gaudi_opts/edm_converters.py @@ -1,12 +1,12 @@ from Gaudi.Configuration import * -from Configurables import k4LegacyDataSvc, TestE4H2L, EDM4hep2LcioTool, Lcio2EDM4hepTool +from Configurables import k4DataSvc, TestE4H2L, EDM4hep2LcioTool, Lcio2EDM4hepTool algList = [] END_TAG = "END_TAG" -evtsvc = k4LegacyDataSvc("EventDataSvc") +evtsvc = k4DataSvc("EventDataSvc") # EDM4hep2lcio Tool edmConvTool = EDM4hep2LcioTool("EDM4hep2lcio") diff --git a/test/inputFiles/anajob_Output_DST.expected b/test/inputFiles/anajob_Output_DST.expected index d15314f3..7ab990a0 100644 --- a/test/inputFiles/anajob_Output_DST.expected +++ b/test/inputFiles/anajob_Output_DST.expected @@ -19,32 +19,32 @@ BuildUpVertices Vertex 4 BuildUpVertices_RP ReconstructedParticle 4 BuildUpVertices_V0 Vertex 0 BuildUpVertices_V0_RP ReconstructedParticle 0 -LE_LooseSelectedPandoraPFOs ReconstructedParticle 88 -LE_SelectedPandoraPFOs ReconstructedParticle 85 -LE_TightSelectedPandoraPFOs ReconstructedParticle 82 -LooseSelectedPandoraPFOs ReconstructedParticle 85 +LE_LooseSelectedPandoraPFOs ReconstructedParticle 87 +LE_SelectedPandoraPFOs ReconstructedParticle 82 +LE_TightSelectedPandoraPFOs ReconstructedParticle 80 +LooseSelectedPandoraPFOs ReconstructedParticle 80 LumiCalClusters Cluster 0 LumiCalRecoParticles ReconstructedParticle 0 -MCParticlesSkimmed MCParticle 252 -MCPhysicsParticles MCParticle 406 -MergedClusters Cluster 86 -MergedRecoParticles ReconstructedParticle 89 -PandoraClusters Cluster 86 -PandoraPFOs ReconstructedParticle 89 -PandoraStartVertices Vertex 89 +MCParticlesSkimmed MCParticle 258 +MCPhysicsParticles MCParticle 427 +MergedClusters Cluster 82 +MergedRecoParticles ReconstructedParticle 87 +PandoraClusters Cluster 82 +PandoraPFOs ReconstructedParticle 87 +PandoraStartVertices Vertex 87 PrimaryVertices Vertex 1 PrimaryVertices_RP ReconstructedParticle 1 -RecoMCTruthLink LCRelation 89 +RecoMCTruthLink LCRelation 87 RefinedVertexJets ReconstructedParticle 2 RefinedVertexJets_rel LCRelation 0 RefinedVertexJets_vtx Vertex 0 RefinedVertexJets_vtx_RP ReconstructedParticle 0 RefinedVertices Vertex 0 RefinedVertices_RP ReconstructedParticle 0 -SelectedPandoraPFOs ReconstructedParticle 82 +SelectedPandoraPFOs ReconstructedParticle 78 SiTracks Track 38 SiTracks_Refitted Track 38 -TightSelectedPandoraPFOs ReconstructedParticle 67 +TightSelectedPandoraPFOs ReconstructedParticle 63 --------------------------------------------------------------------------- @@ -59,36 +59,36 @@ COLLECTIONS: (see below) --------------------------------------------------------------------------- COLLECTION NAME COLLECTION TYPE NUMBER OF ELEMENTS =========================================================================== -BuildUpVertices Vertex 2 -BuildUpVertices_RP ReconstructedParticle 2 +BuildUpVertices Vertex 4 +BuildUpVertices_RP ReconstructedParticle 4 BuildUpVertices_V0 Vertex 0 BuildUpVertices_V0_RP ReconstructedParticle 0 -LE_LooseSelectedPandoraPFOs ReconstructedParticle 92 -LE_SelectedPandoraPFOs ReconstructedParticle 88 -LE_TightSelectedPandoraPFOs ReconstructedParticle 86 -LooseSelectedPandoraPFOs ReconstructedParticle 87 +LE_LooseSelectedPandoraPFOs ReconstructedParticle 85 +LE_SelectedPandoraPFOs ReconstructedParticle 80 +LE_TightSelectedPandoraPFOs ReconstructedParticle 75 +LooseSelectedPandoraPFOs ReconstructedParticle 84 LumiCalClusters Cluster 0 LumiCalRecoParticles ReconstructedParticle 0 -MCParticlesSkimmed MCParticle 304 -MCPhysicsParticles MCParticle 494 -MergedClusters Cluster 85 -MergedRecoParticles ReconstructedParticle 93 -PandoraClusters Cluster 85 -PandoraPFOs ReconstructedParticle 93 -PandoraStartVertices Vertex 93 +MCParticlesSkimmed MCParticle 299 +MCPhysicsParticles MCParticle 527 +MergedClusters Cluster 78 +MergedRecoParticles ReconstructedParticle 88 +PandoraClusters Cluster 78 +PandoraPFOs ReconstructedParticle 88 +PandoraStartVertices Vertex 88 PrimaryVertices Vertex 1 PrimaryVertices_RP ReconstructedParticle 1 -RecoMCTruthLink LCRelation 93 +RecoMCTruthLink LCRelation 88 RefinedVertexJets ReconstructedParticle 2 -RefinedVertexJets_rel LCRelation 1 -RefinedVertexJets_vtx Vertex 1 -RefinedVertexJets_vtx_RP ReconstructedParticle 1 -RefinedVertices Vertex 1 -RefinedVertices_RP ReconstructedParticle 1 -SelectedPandoraPFOs ReconstructedParticle 82 -SiTracks Track 43 -SiTracks_Refitted Track 43 -TightSelectedPandoraPFOs ReconstructedParticle 69 +RefinedVertexJets_rel LCRelation 3 +RefinedVertexJets_vtx Vertex 3 +RefinedVertexJets_vtx_RP ReconstructedParticle 3 +RefinedVertices Vertex 3 +RefinedVertices_RP ReconstructedParticle 3 +SelectedPandoraPFOs ReconstructedParticle 76 +SiTracks Track 45 +SiTracks_Refitted Track 45 +TightSelectedPandoraPFOs ReconstructedParticle 65 --------------------------------------------------------------------------- @@ -105,34 +105,34 @@ COLLECTION NAME COLLECTION TYPE NUMBER OF ELEMENTS =========================================================================== BuildUpVertices Vertex 2 BuildUpVertices_RP ReconstructedParticle 2 -BuildUpVertices_V0 Vertex 0 -BuildUpVertices_V0_RP ReconstructedParticle 0 -LE_LooseSelectedPandoraPFOs ReconstructedParticle 73 -LE_SelectedPandoraPFOs ReconstructedParticle 66 -LE_TightSelectedPandoraPFOs ReconstructedParticle 64 -LooseSelectedPandoraPFOs ReconstructedParticle 70 +BuildUpVertices_V0 Vertex 1 +BuildUpVertices_V0_RP ReconstructedParticle 1 +LE_LooseSelectedPandoraPFOs ReconstructedParticle 79 +LE_SelectedPandoraPFOs ReconstructedParticle 73 +LE_TightSelectedPandoraPFOs ReconstructedParticle 70 +LooseSelectedPandoraPFOs ReconstructedParticle 75 LumiCalClusters Cluster 0 LumiCalRecoParticles ReconstructedParticle 0 -MCParticlesSkimmed MCParticle 258 -MCPhysicsParticles MCParticle 426 -MergedClusters Cluster 65 -MergedRecoParticles ReconstructedParticle 74 -PandoraClusters Cluster 65 -PandoraPFOs ReconstructedParticle 74 -PandoraStartVertices Vertex 74 +MCParticlesSkimmed MCParticle 267 +MCPhysicsParticles MCParticle 403 +MergedClusters Cluster 75 +MergedRecoParticles ReconstructedParticle 84 +PandoraClusters Cluster 75 +PandoraPFOs ReconstructedParticle 84 +PandoraStartVertices Vertex 84 PrimaryVertices Vertex 1 PrimaryVertices_RP ReconstructedParticle 1 -RecoMCTruthLink LCRelation 74 +RecoMCTruthLink LCRelation 84 RefinedVertexJets ReconstructedParticle 2 RefinedVertexJets_rel LCRelation 0 RefinedVertexJets_vtx Vertex 0 RefinedVertexJets_vtx_RP ReconstructedParticle 0 RefinedVertices Vertex 0 RefinedVertices_RP ReconstructedParticle 0 -SelectedPandoraPFOs ReconstructedParticle 64 -SiTracks Track 35 -SiTracks_Refitted Track 35 -TightSelectedPandoraPFOs ReconstructedParticle 57 +SelectedPandoraPFOs ReconstructedParticle 68 +SiTracks Track 36 +SiTracks_Refitted Track 36 +TightSelectedPandoraPFOs ReconstructedParticle 61 --------------------------------------------------------------------------- diff --git a/test/inputFiles/anajob_Output_REC.expected b/test/inputFiles/anajob_Output_REC.expected index cf7d6406..799f3672 100644 --- a/test/inputFiles/anajob_Output_REC.expected +++ b/test/inputFiles/anajob_Output_REC.expected @@ -20,74 +20,74 @@ BuildUpVertices Vertex 4 BuildUpVertices_RP ReconstructedParticle 4 BuildUpVertices_V0 Vertex 0 BuildUpVertices_V0_RP ReconstructedParticle 0 -CalohitMCTruthLink LCRelation 8730 -ClusterMCTruthLink LCRelation 157 +CalohitMCTruthLink LCRelation 7904 +ClusterMCTruthLink LCRelation 143 DebugHits TrackerHitPlane 0 -ECALBarrel CalorimeterHit 5740 -ECALEndcap CalorimeterHit 2133 -ECALOther CalorimeterHit 57 -ECalBarrelCollection SimCalorimeterHit 6139 -ECalEndcapCollection SimCalorimeterHit 2292 -ECalPlugCollection SimCalorimeterHit 57 -HCALBarrel CalorimeterHit 264 -HCALEndcap CalorimeterHit 488 -HCALOther CalorimeterHit 11 -HCalBarrelCollection SimCalorimeterHit 537 -HCalEndcapCollection SimCalorimeterHit 835 -HCalRingCollection SimCalorimeterHit 14 -ITrackerEndcapHits TrackerHitPlane 107 -ITrackerHits TrackerHitPlane 89 -InnerTrackerBarrelCollection SimTrackerHit 94 -InnerTrackerBarrelHitsRelationsLCRelation 89 -InnerTrackerEndcapCollection SimTrackerHit 108 -InnerTrackerEndcapHitsRelationsLCRelation 107 -LE_LooseSelectedPandoraPFOs ReconstructedParticle 88 -LE_SelectedPandoraPFOs ReconstructedParticle 85 -LE_TightSelectedPandoraPFOs ReconstructedParticle 82 -LooseSelectedPandoraPFOs ReconstructedParticle 85 +ECALBarrel CalorimeterHit 4978 +ECALEndcap CalorimeterHit 2282 +ECALOther CalorimeterHit 5 +ECalBarrelCollection SimCalorimeterHit 5384 +ECalEndcapCollection SimCalorimeterHit 2430 +ECalPlugCollection SimCalorimeterHit 5 +HCALBarrel CalorimeterHit 261 +HCALEndcap CalorimeterHit 361 +HCALOther CalorimeterHit 9 +HCalBarrelCollection SimCalorimeterHit 550 +HCalEndcapCollection SimCalorimeterHit 710 +HCalRingCollection SimCalorimeterHit 13 +ITrackerEndcapHits TrackerHitPlane 84 +ITrackerHits TrackerHitPlane 116 +InnerTrackerBarrelCollection SimTrackerHit 122 +InnerTrackerBarrelHitsRelationsLCRelation 116 +InnerTrackerEndcapCollection SimTrackerHit 88 +InnerTrackerEndcapHitsRelationsLCRelation 84 +LE_LooseSelectedPandoraPFOs ReconstructedParticle 87 +LE_SelectedPandoraPFOs ReconstructedParticle 82 +LE_TightSelectedPandoraPFOs ReconstructedParticle 80 +LooseSelectedPandoraPFOs ReconstructedParticle 80 LumiCalClusters Cluster 0 -LumiCalCollection SimCalorimeterHit 2 +LumiCalCollection SimCalorimeterHit 29 LumiCalRecoParticles ReconstructedParticle 0 -LumiCal_Hits CalorimeterHit 2 -MCParticles MCParticle 406 -MCParticlesSkimmed MCParticle 252 -MCPhysicsParticles MCParticle 406 +LumiCal_Hits CalorimeterHit 29 +MCParticles MCParticle 427 +MCParticlesSkimmed MCParticle 258 +MCPhysicsParticles MCParticle 427 MUON CalorimeterHit 6 -MergedClusters Cluster 86 -MergedRecoParticles ReconstructedParticle 89 -OTrackerEndcapHits TrackerHitPlane 84 -OTrackerHits TrackerHitPlane 71 -OuterTrackerBarrelCollection SimTrackerHit 75 -OuterTrackerBarrelHitsRelationsLCRelation 71 -OuterTrackerEndcapCollection SimTrackerHit 91 -OuterTrackerEndcapHitsRelationsLCRelation 84 -PFOsFromJets ReconstructedParticle 89 -PandoraClusters Cluster 86 -PandoraPFOs ReconstructedParticle 89 -PandoraStartVertices Vertex 89 +MergedClusters Cluster 82 +MergedRecoParticles ReconstructedParticle 87 +OTrackerEndcapHits TrackerHitPlane 90 +OTrackerHits TrackerHitPlane 50 +OuterTrackerBarrelCollection SimTrackerHit 56 +OuterTrackerBarrelHitsRelationsLCRelation 50 +OuterTrackerEndcapCollection SimTrackerHit 94 +OuterTrackerEndcapHitsRelationsLCRelation 90 +PFOsFromJets ReconstructedParticle 87 +PandoraClusters Cluster 82 +PandoraPFOs ReconstructedParticle 87 +PandoraStartVertices Vertex 87 PrimaryVertices Vertex 1 PrimaryVertices_RP ReconstructedParticle 1 -RecoMCTruthLink LCRelation 89 +RecoMCTruthLink LCRelation 87 RefinedVertexJets ReconstructedParticle 2 RefinedVertexJets_rel LCRelation 0 RefinedVertexJets_vtx Vertex 0 RefinedVertexJets_vtx_RP ReconstructedParticle 0 RefinedVertices Vertex 0 RefinedVertices_RP ReconstructedParticle 0 -RelationCaloHit LCRelation 8693 +RelationCaloHit LCRelation 7896 RelationMuonHit LCRelation 6 -SelectedPandoraPFOs ReconstructedParticle 82 +SelectedPandoraPFOs ReconstructedParticle 78 SiTracks Track 38 -SiTracksCT Track 39 -SiTracksMCTruthLink LCRelation 39 +SiTracksCT Track 38 +SiTracksMCTruthLink LCRelation 40 SiTracks_Refitted Track 38 -TightSelectedPandoraPFOs ReconstructedParticle 67 +TightSelectedPandoraPFOs ReconstructedParticle 63 VXDEndcapTrackerHitRelations LCRelation 55 VXDEndcapTrackerHits TrackerHitPlane 55 -VXDTrackerHitRelations LCRelation 238 -VXDTrackerHits TrackerHitPlane 238 -VertexBarrelCollection SimTrackerHit 244 -VertexEndcapCollection SimTrackerHit 56 +VXDTrackerHitRelations LCRelation 207 +VXDTrackerHits TrackerHitPlane 207 +VertexBarrelCollection SimTrackerHit 208 +VertexEndcapCollection SimTrackerHit 55 VertexJets ReconstructedParticle 2 YokeBarrelCollection SimCalorimeterHit 0 YokeEndcapCollection SimCalorimeterHit 6 @@ -105,79 +105,79 @@ COLLECTIONS: (see below) --------------------------------------------------------------------------- COLLECTION NAME COLLECTION TYPE NUMBER OF ELEMENTS =========================================================================== -BeamCalCollection SimCalorimeterHit 6 -BuildUpVertices Vertex 2 -BuildUpVertices_RP ReconstructedParticle 2 +BeamCalCollection SimCalorimeterHit 0 +BuildUpVertices Vertex 4 +BuildUpVertices_RP ReconstructedParticle 4 BuildUpVertices_V0 Vertex 0 BuildUpVertices_V0_RP ReconstructedParticle 0 -CalohitMCTruthLink LCRelation 9010 -ClusterMCTruthLink LCRelation 164 +CalohitMCTruthLink LCRelation 9115 +ClusterMCTruthLink LCRelation 176 DebugHits TrackerHitPlane 0 -ECALBarrel CalorimeterHit 7713 -ECALEndcap CalorimeterHit 432 -ECALOther CalorimeterHit 77 -ECalBarrelCollection SimCalorimeterHit 8280 -ECalEndcapCollection SimCalorimeterHit 461 -ECalPlugCollection SimCalorimeterHit 80 -HCALBarrel CalorimeterHit 620 -HCALEndcap CalorimeterHit 61 -HCALOther CalorimeterHit 6 -HCalBarrelCollection SimCalorimeterHit 1227 -HCalEndcapCollection SimCalorimeterHit 117 -HCalRingCollection SimCalorimeterHit 23 -ITrackerEndcapHits TrackerHitPlane 66 -ITrackerHits TrackerHitPlane 159 -InnerTrackerBarrelCollection SimTrackerHit 163 -InnerTrackerBarrelHitsRelationsLCRelation 159 -InnerTrackerEndcapCollection SimTrackerHit 73 -InnerTrackerEndcapHitsRelationsLCRelation 66 -LE_LooseSelectedPandoraPFOs ReconstructedParticle 92 -LE_SelectedPandoraPFOs ReconstructedParticle 88 -LE_TightSelectedPandoraPFOs ReconstructedParticle 86 -LooseSelectedPandoraPFOs ReconstructedParticle 87 +ECALBarrel CalorimeterHit 7647 +ECALEndcap CalorimeterHit 509 +ECALOther CalorimeterHit 43 +ECalBarrelCollection SimCalorimeterHit 8208 +ECalEndcapCollection SimCalorimeterHit 541 +ECalPlugCollection SimCalorimeterHit 46 +HCALBarrel CalorimeterHit 726 +HCALEndcap CalorimeterHit 99 +HCALOther CalorimeterHit 5 +HCalBarrelCollection SimCalorimeterHit 1328 +HCalEndcapCollection SimCalorimeterHit 180 +HCalRingCollection SimCalorimeterHit 12 +ITrackerEndcapHits TrackerHitPlane 90 +ITrackerHits TrackerHitPlane 157 +InnerTrackerBarrelCollection SimTrackerHit 162 +InnerTrackerBarrelHitsRelationsLCRelation 157 +InnerTrackerEndcapCollection SimTrackerHit 97 +InnerTrackerEndcapHitsRelationsLCRelation 90 +LE_LooseSelectedPandoraPFOs ReconstructedParticle 85 +LE_SelectedPandoraPFOs ReconstructedParticle 80 +LE_TightSelectedPandoraPFOs ReconstructedParticle 75 +LooseSelectedPandoraPFOs ReconstructedParticle 84 LumiCalClusters Cluster 0 -LumiCalCollection SimCalorimeterHit 22 +LumiCalCollection SimCalorimeterHit 27 LumiCalRecoParticles ReconstructedParticle 0 -LumiCal_Hits CalorimeterHit 22 -MCParticles MCParticle 494 -MCParticlesSkimmed MCParticle 304 -MCPhysicsParticles MCParticle 494 +LumiCal_Hits CalorimeterHit 27 +MCParticles MCParticle 527 +MCParticlesSkimmed MCParticle 299 +MCPhysicsParticles MCParticle 527 MUON CalorimeterHit 0 -MergedClusters Cluster 85 -MergedRecoParticles ReconstructedParticle 93 -OTrackerEndcapHits TrackerHitPlane 75 -OTrackerHits TrackerHitPlane 107 -OuterTrackerBarrelCollection SimTrackerHit 114 -OuterTrackerBarrelHitsRelationsLCRelation 107 -OuterTrackerEndcapCollection SimTrackerHit 84 -OuterTrackerEndcapHitsRelationsLCRelation 75 -PFOsFromJets ReconstructedParticle 93 -PandoraClusters Cluster 85 -PandoraPFOs ReconstructedParticle 93 -PandoraStartVertices Vertex 93 +MergedClusters Cluster 78 +MergedRecoParticles ReconstructedParticle 88 +OTrackerEndcapHits TrackerHitPlane 68 +OTrackerHits TrackerHitPlane 148 +OuterTrackerBarrelCollection SimTrackerHit 172 +OuterTrackerBarrelHitsRelationsLCRelation 148 +OuterTrackerEndcapCollection SimTrackerHit 79 +OuterTrackerEndcapHitsRelationsLCRelation 68 +PFOsFromJets ReconstructedParticle 88 +PandoraClusters Cluster 78 +PandoraPFOs ReconstructedParticle 88 +PandoraStartVertices Vertex 88 PrimaryVertices Vertex 1 PrimaryVertices_RP ReconstructedParticle 1 -RecoMCTruthLink LCRelation 93 +RecoMCTruthLink LCRelation 88 RefinedVertexJets ReconstructedParticle 2 -RefinedVertexJets_rel LCRelation 1 -RefinedVertexJets_vtx Vertex 1 -RefinedVertexJets_vtx_RP ReconstructedParticle 1 -RefinedVertices Vertex 1 -RefinedVertices_RP ReconstructedParticle 1 -RelationCaloHit LCRelation 8909 +RefinedVertexJets_rel LCRelation 3 +RefinedVertexJets_vtx Vertex 3 +RefinedVertexJets_vtx_RP ReconstructedParticle 3 +RefinedVertices Vertex 3 +RefinedVertices_RP ReconstructedParticle 3 +RelationCaloHit LCRelation 9029 RelationMuonHit LCRelation 0 -SelectedPandoraPFOs ReconstructedParticle 82 -SiTracks Track 43 -SiTracksCT Track 43 -SiTracksMCTruthLink LCRelation 43 -SiTracks_Refitted Track 43 -TightSelectedPandoraPFOs ReconstructedParticle 69 -VXDEndcapTrackerHitRelations LCRelation 19 -VXDEndcapTrackerHits TrackerHitPlane 19 -VXDTrackerHitRelations LCRelation 268 -VXDTrackerHits TrackerHitPlane 268 -VertexBarrelCollection SimTrackerHit 268 -VertexEndcapCollection SimTrackerHit 19 +SelectedPandoraPFOs ReconstructedParticle 76 +SiTracks Track 45 +SiTracksCT Track 45 +SiTracksMCTruthLink LCRelation 47 +SiTracks_Refitted Track 45 +TightSelectedPandoraPFOs ReconstructedParticle 65 +VXDEndcapTrackerHitRelations LCRelation 25 +VXDEndcapTrackerHits TrackerHitPlane 25 +VXDTrackerHitRelations LCRelation 280 +VXDTrackerHits TrackerHitPlane 280 +VertexBarrelCollection SimTrackerHit 280 +VertexEndcapCollection SimTrackerHit 25 VertexJets ReconstructedParticle 2 YokeBarrelCollection SimCalorimeterHit 0 YokeEndcapCollection SimCalorimeterHit 0 @@ -195,79 +195,79 @@ COLLECTIONS: (see below) --------------------------------------------------------------------------- COLLECTION NAME COLLECTION TYPE NUMBER OF ELEMENTS =========================================================================== -BeamCalCollection SimCalorimeterHit 1 +BeamCalCollection SimCalorimeterHit 0 BuildUpVertices Vertex 2 BuildUpVertices_RP ReconstructedParticle 2 -BuildUpVertices_V0 Vertex 0 -BuildUpVertices_V0_RP ReconstructedParticle 0 -CalohitMCTruthLink LCRelation 7873 -ClusterMCTruthLink LCRelation 128 +BuildUpVertices_V0 Vertex 1 +BuildUpVertices_V0_RP ReconstructedParticle 1 +CalohitMCTruthLink LCRelation 8112 +ClusterMCTruthLink LCRelation 130 DebugHits TrackerHitPlane 0 -ECALBarrel CalorimeterHit 5337 +ECALBarrel CalorimeterHit 5955 ECALEndcap CalorimeterHit 1416 -ECALOther CalorimeterHit 0 -ECalBarrelCollection SimCalorimeterHit 5726 -ECalEndcapCollection SimCalorimeterHit 1538 -ECalPlugCollection SimCalorimeterHit 0 -HCALBarrel CalorimeterHit 769 -HCALEndcap CalorimeterHit 26 +ECALOther CalorimeterHit 16 +ECalBarrelCollection SimCalorimeterHit 6410 +ECalEndcapCollection SimCalorimeterHit 1545 +ECalPlugCollection SimCalorimeterHit 16 +HCALBarrel CalorimeterHit 672 +HCALEndcap CalorimeterHit 28 HCALOther CalorimeterHit 7 -HCalBarrelCollection SimCalorimeterHit 1439 -HCalEndcapCollection SimCalorimeterHit 34 +HCalBarrelCollection SimCalorimeterHit 1212 +HCalEndcapCollection SimCalorimeterHit 39 HCalRingCollection SimCalorimeterHit 7 -ITrackerEndcapHits TrackerHitPlane 39 -ITrackerHits TrackerHitPlane 173 -InnerTrackerBarrelCollection SimTrackerHit 181 -InnerTrackerBarrelHitsRelationsLCRelation 173 -InnerTrackerEndcapCollection SimTrackerHit 42 -InnerTrackerEndcapHitsRelationsLCRelation 39 -LE_LooseSelectedPandoraPFOs ReconstructedParticle 73 -LE_SelectedPandoraPFOs ReconstructedParticle 66 -LE_TightSelectedPandoraPFOs ReconstructedParticle 64 -LooseSelectedPandoraPFOs ReconstructedParticle 70 +ITrackerEndcapHits TrackerHitPlane 33 +ITrackerHits TrackerHitPlane 131 +InnerTrackerBarrelCollection SimTrackerHit 134 +InnerTrackerBarrelHitsRelationsLCRelation 131 +InnerTrackerEndcapCollection SimTrackerHit 34 +InnerTrackerEndcapHitsRelationsLCRelation 33 +LE_LooseSelectedPandoraPFOs ReconstructedParticle 79 +LE_SelectedPandoraPFOs ReconstructedParticle 73 +LE_TightSelectedPandoraPFOs ReconstructedParticle 70 +LooseSelectedPandoraPFOs ReconstructedParticle 75 LumiCalClusters Cluster 0 -LumiCalCollection SimCalorimeterHit 0 +LumiCalCollection SimCalorimeterHit 12 LumiCalRecoParticles ReconstructedParticle 0 -LumiCal_Hits CalorimeterHit 0 -MCParticles MCParticle 426 -MCParticlesSkimmed MCParticle 258 -MCPhysicsParticles MCParticle 426 +LumiCal_Hits CalorimeterHit 12 +MCParticles MCParticle 403 +MCParticlesSkimmed MCParticle 267 +MCPhysicsParticles MCParticle 403 MUON CalorimeterHit 6 -MergedClusters Cluster 65 -MergedRecoParticles ReconstructedParticle 74 -OTrackerEndcapHits TrackerHitPlane 31 -OTrackerHits TrackerHitPlane 107 -OuterTrackerBarrelCollection SimTrackerHit 119 -OuterTrackerBarrelHitsRelationsLCRelation 107 -OuterTrackerEndcapCollection SimTrackerHit 33 -OuterTrackerEndcapHitsRelationsLCRelation 31 -PFOsFromJets ReconstructedParticle 74 -PandoraClusters Cluster 65 -PandoraPFOs ReconstructedParticle 74 -PandoraStartVertices Vertex 74 +MergedClusters Cluster 75 +MergedRecoParticles ReconstructedParticle 84 +OTrackerEndcapHits TrackerHitPlane 39 +OTrackerHits TrackerHitPlane 106 +OuterTrackerBarrelCollection SimTrackerHit 113 +OuterTrackerBarrelHitsRelationsLCRelation 106 +OuterTrackerEndcapCollection SimTrackerHit 49 +OuterTrackerEndcapHitsRelationsLCRelation 39 +PFOsFromJets ReconstructedParticle 84 +PandoraClusters Cluster 75 +PandoraPFOs ReconstructedParticle 84 +PandoraStartVertices Vertex 84 PrimaryVertices Vertex 1 PrimaryVertices_RP ReconstructedParticle 1 -RecoMCTruthLink LCRelation 74 +RecoMCTruthLink LCRelation 84 RefinedVertexJets ReconstructedParticle 2 RefinedVertexJets_rel LCRelation 0 RefinedVertexJets_vtx Vertex 0 RefinedVertexJets_vtx_RP ReconstructedParticle 0 RefinedVertices Vertex 0 RefinedVertices_RP ReconstructedParticle 0 -RelationCaloHit LCRelation 7555 +RelationCaloHit LCRelation 8094 RelationMuonHit LCRelation 6 -SelectedPandoraPFOs ReconstructedParticle 64 -SiTracks Track 35 -SiTracksCT Track 35 -SiTracksMCTruthLink LCRelation 36 -SiTracks_Refitted Track 35 -TightSelectedPandoraPFOs ReconstructedParticle 57 -VXDEndcapTrackerHitRelations LCRelation 14 -VXDEndcapTrackerHits TrackerHitPlane 14 -VXDTrackerHitRelations LCRelation 248 -VXDTrackerHits TrackerHitPlane 248 -VertexBarrelCollection SimTrackerHit 251 -VertexEndcapCollection SimTrackerHit 14 +SelectedPandoraPFOs ReconstructedParticle 68 +SiTracks Track 36 +SiTracksCT Track 36 +SiTracksMCTruthLink LCRelation 37 +SiTracks_Refitted Track 36 +TightSelectedPandoraPFOs ReconstructedParticle 61 +VXDEndcapTrackerHitRelations LCRelation 5 +VXDEndcapTrackerHits TrackerHitPlane 5 +VXDTrackerHitRelations LCRelation 209 +VXDTrackerHits TrackerHitPlane 209 +VertexBarrelCollection SimTrackerHit 214 +VertexEndcapCollection SimTrackerHit 5 VertexJets ReconstructedParticle 2 YokeBarrelCollection SimCalorimeterHit 0 YokeEndcapCollection SimCalorimeterHit 6 diff --git a/test/scripts/clicRec_e4h_input.sh b/test/scripts/clicRec_e4h_input.sh index c8fa4273..57ab6f85 100644 --- a/test/scripts/clicRec_e4h_input.sh +++ b/test/scripts/clicRec_e4h_input.sh @@ -7,15 +7,19 @@ bash $TEST_DIR/scripts/setup_clic_performance.sh cd CLICPerformance/clicConfig +INPUTFILE=ttbar_edm4hep_frame.root + # Download root file if not present -if [ ! -f $TEST_DIR/inputFiles/ttbar1_edm4hep.root ]; then +if [ ! -f $TEST_DIR/inputFiles/$INPUTFILE ]; then echo "Input file not found. Getting it from key4hep..." - wget https://key4hep.web.cern.ch/testFiles/ddsimOutput/ttbar1_edm4hep.root -P $TEST_DIR/inputFiles/ + wget https://key4hep.web.cern.ch/testFiles/ddsimOutput/$INPUTFILE -P $TEST_DIR/inputFiles/ fi -k4run $TEST_DIR/gaudi_opts/clicRec_e4h_input.py +# Frame based I/O exits with a user requested stop here, that makes Gaudi exit +# with an exit code of 4. See https://github.com/key4hep/k4FWCore/issues/125 +k4run $TEST_DIR/gaudi_opts/clicRec_e4h_input.py || true -input_num_events=$(python $TEST_DIR/python/root_num_events.py $TEST_DIR/inputFiles/ttbar1_edm4hep.root) +input_num_events=$(python $TEST_DIR/python/root_num_events.py $TEST_DIR/inputFiles/$INPUTFILE) output_num_events=$(python $TEST_DIR/python/root_num_events.py my_output.root) # First check do we have the same number of events in input and output