Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:10:47

0001 // This file is part of the Acts project.
0002 //
0003 // Copyright (C) 2021 CERN for the benefit of the Acts project
0004 //
0005 // This Source Code Form is subject to the terms of the Mozilla Public
0006 // License, v. 2.0. If a copy of the MPL was not distributed with this
0007 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
0008 
0009 #include "ActsExamples/Io/Csv/CsvSpacepointWriter.hpp"
0010 
0011 #include "Acts/EventData/SourceLink.hpp"
0012 #include "Acts/Geometry/GeometryIdentifier.hpp"
0013 #include "Acts/Utilities/Logger.hpp"
0014 #include "ActsExamples/EventData/IndexSourceLink.hpp"
0015 #include "ActsExamples/EventData/SimSpacePoint.hpp"
0016 #include "ActsExamples/Framework/AlgorithmContext.hpp"
0017 #include "ActsExamples/Framework/ProcessCode.hpp"
0018 #include "ActsExamples/Framework/WriterT.hpp"
0019 #include "ActsExamples/Utilities/Paths.hpp"
0020 
0021 #include <string>
0022 #include <vector>
0023 
0024 #include <dfe/dfe_io_dsv.hpp>
0025 
0026 #include "CsvOutputData.hpp"
0027 
0028 ActsExamples::CsvSpacepointWriter::CsvSpacepointWriter(
0029     const ActsExamples::CsvSpacepointWriter::Config& config,
0030     Acts::Logging::Level level)
0031     : WriterT(config.inputSpacepoints, "CsvSpacepointWriter", level),
0032       m_cfg(config) {}
0033 
0034 ActsExamples::CsvSpacepointWriter::~CsvSpacepointWriter() = default;
0035 
0036 ActsExamples::ProcessCode ActsExamples::CsvSpacepointWriter::finalize() {
0037   // Write the tree
0038   return ProcessCode::SUCCESS;
0039 }
0040 
0041 ActsExamples::ProcessCode ActsExamples::CsvSpacepointWriter::writeT(
0042     const AlgorithmContext& ctx, const SimSpacePointContainer& spacepoints) {
0043   // Open per-event file for all components
0044   std::string pathSP =
0045       perEventFilepath(m_cfg.outputDir, "spacepoint.csv", ctx.eventNumber);
0046 
0047   dfe::NamedTupleCsvWriter<SpacepointData> writerSP(pathSP,
0048                                                     m_cfg.outputPrecision);
0049 
0050   SpacepointData spData{};
0051   for (const auto& sp : spacepoints) {
0052     const auto slink = sp.sourceLinks()[0].get<IndexSourceLink>();
0053 
0054     spData.measurement_id = slink.index();
0055     spData.geometry_id = slink.geometryId().value();
0056     spData.x = sp.x();
0057     spData.y = sp.y();
0058     spData.z = sp.z();
0059     spData.var_r = sp.varianceR();
0060     spData.var_z = sp.varianceZ();
0061     writerSP.append(spData);
0062   }
0063   return ActsExamples::ProcessCode::SUCCESS;
0064 }