ATLAS Offline Software
Loading...
Searching...
No Matches
LArCalibrationHitContainerBuilder.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef LARG4CODE_LARCALIBRATIONHITCONTAINERBUILDER_H
6#define LARG4CODE_LARCALIBRATIONHITCONTAINERBUILDER_H
7
11
12#include <memory>
13#include <set>
14#include <string>
15#include <vector>
16
28template <class HitContainerT>
29class LArCalibrationHitContainerBuilderBase : public HitContainerT
30{
31public:
32 using HitContainerT::HitContainerT;
33 using hit_ptr_t = std::unique_ptr<CaloCalibrationHit>;
34
35 class LessHit {
36 public:
37 bool operator()(const hit_ptr_t& lhs, const hit_ptr_t& rhs) const
38 {
39 return lhs->Less(rhs.get());
40 }
41 };
42
43 using hits_t = std::set<hit_ptr_t, LessHit>;
44
46
48 void RegisterSource(const std::string& sourceName);
50 void AddHit(const std::string& sourceName, hit_ptr_t hit);
52 void Finalize();
53
54private:
55 struct Partition
56 {
57 std::string sourceName;
59 };
60
61 static void AddHit(hits_t& hits, hit_ptr_t hit);
62 void Finalize(hits_t& hits);
63 Partition& FindOrCreatePartition(const std::string& sourceName);
64
65 std::vector<Partition> m_partitions;
67};
68
73
74#endif
LArCalibrationHitContainerBuilderBase< CaloCalibrationHitContainer > LArCalibrationHitContainerBuilder
LArCalibrationHitContainerBuilderBase< SrCaloCalibrationHitContainer > LArSrCalibrationHitContainerBuilder
bool Less(const CaloCalibrationHit *h) const
Calibration hits are ordered by values of their identifiers.
bool operator()(const hit_ptr_t &lhs, const hit_ptr_t &rhs) const
Event-owned builder for calibration-hit containers.
std::unique_ptr< CaloCalibrationHit > hit_ptr_t
void Finalize()
Move merged hits into the persisted container in final output order.
void AddHit(const std::string &sourceName, hit_ptr_t hit)
Take ownership of a hit and add it to one regular-SD partition.
static void AddHit(hits_t &hits, hit_ptr_t hit)
Partition & FindOrCreatePartition(const std::string &sourceName)
void RegisterSource(const std::string &sourceName)
Register a regular-SD partition in final output order.
~LArCalibrationHitContainerBuilderBase() override=default