Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-06-17 07:50:47

0001 // SPDX-License-Identifier: LGPL-3.0-or-later
0002 // Copyright (C) 2026 Derek Anderson
0003 
0004 #pragma once
0005 
0006 #include <algorithms/algorithm.h>
0007 #include <edm4eic/ClusterCollection.h>
0008 #include <edm4eic/EDM4eicVersion.h>
0009 #include <edm4eic/ProtoClusterCollection.h>
0010 #include <edm4eic/TrackClusterMatchCollection.h>
0011 #if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
0012 #include <edm4eic/TrackProtoClusterLinkCollection.h>
0013 #elif EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 4, 0)
0014 #include <edm4eic/TrackProtoClusterMatchCollection.h>
0015 #endif
0016 #include <string>
0017 #include <string_view>
0018 
0019 #include "algorithms/interfaces/WithPodConfig.h"
0020 
0021 namespace eicrecon {
0022 
0023 using TrackProtoClusterMatchPromoterAlgorithm = algorithms::Algorithm<
0024 #if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
0025     typename algorithms::Input<edm4eic::TrackProtoClusterLinkCollection,
0026                                edm4eic::ProtoClusterCollection, edm4eic::ClusterCollection>,
0027 #elif EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 4, 0)
0028     typename algorithms::Input<edm4eic::TrackProtoClusterMatchCollection,
0029                                edm4eic::ProtoClusterCollection, edm4eic::ClusterCollection>,
0030 #else
0031     typename algorithms::Input<edm4eic::ProtoClusterCollection, edm4eic::ClusterCollection>,
0032 #endif
0033     typename algorithms::Output<edm4eic::TrackClusterMatchCollection>>;
0034 
0035 // ============================================================================
0036 // Track-Protocluster Match Promoter
0037 // ============================================================================
0038 /*! An algorithm to promote track-protocluster matches to
0039  *  track-cluster matches. Assumes input cluster,
0040  *  protocluster collections are 1-to-1.
0041  */
0042 class TrackProtoClusterMatchPromoter : public TrackProtoClusterMatchPromoterAlgorithm,
0043                                        public WithPodConfig<NoConfig> {
0044 
0045 public:
0046   ///! Algorithm constructor
0047   TrackProtoClusterMatchPromoter(std::string_view name)
0048       : TrackProtoClusterMatchPromoterAlgorithm{
0049             name,
0050 #if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
0051             {"inputTrackProtoclusterLinks", "inputProtoclusters", "inputClusters"},
0052 #elif EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 4, 0)
0053             {"inputTrackProtoclusterMatches", "inputProtoclusters", "inputClusters"},
0054 #else
0055             {"inputProtoclusters", "inputClusters"},
0056 #endif
0057             {"outputTrackClusterMatches"},
0058             "Copies track-protocluster matches onto track-cluster matches"} {
0059   }
0060 
0061   void process(const Input&, const Output&) const final;
0062 
0063 }; // end TrackProtoClusterMatchPromoter
0064 
0065 } // namespace eicrecon