File indexing completed on 2026-09-19 08:29:14
0001
0002
0003
0004
0005
0006
0007
0008
0009 #include "ActsExamples/Io/Csv/CsvSpacePointWriter.hpp"
0010
0011 #include "Acts/Definitions/Units.hpp"
0012 #include "Acts/EventData/SourceLink.hpp"
0013 #include "Acts/Geometry/GeometryIdentifier.hpp"
0014 #include "Acts/Utilities/Logger.hpp"
0015 #include "ActsExamples/EventData/IndexSourceLink.hpp"
0016 #include "ActsExamples/Framework/AlgorithmContext.hpp"
0017 #include "ActsExamples/Framework/ProcessCode.hpp"
0018 #include "ActsExamples/Framework/WriterT.hpp"
0019 #include "ActsExamples/Io/Csv/CsvInputOutput.hpp"
0020 #include "ActsExamples/Utilities/Paths.hpp"
0021
0022 #include <string>
0023
0024 #include "CsvOutputData.hpp"
0025
0026 namespace ActsExamples {
0027
0028 CsvSpacePointWriter::CsvSpacePointWriter(const Config& config,
0029 Acts::Logging::Level level)
0030 : WriterT(config.inputSpacePoints, "CsvSpacePointWriter", level),
0031 m_cfg(config) {}
0032
0033 CsvSpacePointWriter::~CsvSpacePointWriter() = default;
0034
0035 ProcessCode CsvSpacePointWriter::finalize() {
0036
0037 return ProcessCode::SUCCESS;
0038 }
0039
0040 ProcessCode CsvSpacePointWriter::writeT(
0041 const AlgorithmContext& ctx, const SpacePointContainer& spacePoints) {
0042
0043 std::string pathSP =
0044 perEventFilepath(m_cfg.outputDir, "spacepoint.csv", ctx.eventNumber);
0045
0046 BoostDescribeCsvWriter<SpacePointData2> writerSP(pathSP,
0047 m_cfg.outputPrecision);
0048
0049 SpacePointData2 spData{};
0050 for (const auto& sp : spacePoints) {
0051 const auto slink1 = sp.sourceLinks()[0].get<IndexSourceLink>();
0052 spData.measurement_id_1 = slink1.index();
0053 spData.geometry_id_1 = slink1.geometryId().value();
0054 if (sp.sourceLinks().size() == 2) {
0055 const auto slink2 = sp.sourceLinks()[1].get<IndexSourceLink>();
0056 spData.measurement_id_2 = slink2.index();
0057 spData.geometry_id_2 = slink2.geometryId().value();
0058 } else {
0059 spData.measurement_id_2 = std::numeric_limits<std::uint64_t>::max();
0060 spData.geometry_id_2 = 0;
0061 }
0062 spData.x = sp.x() / Acts::UnitConstants::mm;
0063 spData.y = sp.y() / Acts::UnitConstants::mm;
0064 spData.z = sp.z() / Acts::UnitConstants::mm;
0065 spData.t = sp.time() / Acts::UnitConstants::ns;
0066 spData.var_r = sp.varianceR() / Acts::UnitConstants::mm;
0067 spData.var_z = sp.varianceZ() / Acts::UnitConstants::mm;
0068 writerSP.append(spData);
0069 }
0070 return ProcessCode::SUCCESS;
0071 }
0072
0073 }