ATLAS Offline Software
Loading...
Searching...
No Matches
LArHitContainerBuilder.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_LARHITCONTAINERBUILDER_H
6#define LARG4CODE_LARHITCONTAINERBUILDER_H
7
10
11#include "G4Types.hh"
12
13#include <map>
14#include <memory>
15#include <set>
16#include <string>
17#include <vector>
18
35{
36public:
38 using hit_ptr_t = std::unique_ptr<LArHit>;
39
40 class LessHit {
41 public:
42 bool operator()(const hit_ptr_t& lhs, const hit_ptr_t& rhs) const
43 {
44 return lhs->Less(rhs.get());
45 }
46 };
47
48 using hits_t = std::set<hit_ptr_t, LessHit>;
49 using timeBins_t = std::map<G4int, hits_t>;
50
51 ~LArHitContainerBuilder() override = default;
52
54 void RegisterSource(const std::string& sourceName);
56 void AddHit(const std::string& sourceName, hit_ptr_t hit, G4int timeBin);
58 void Finalize();
59
60private:
61 struct Partition
62 {
63 std::string sourceName;
65 };
66
67 static void AddHit(timeBins_t& timeBins, hit_ptr_t hit, G4int timeBin);
68 void Finalize(timeBins_t& timeBins);
69 Partition& FindOrCreatePartition(const std::string& sourceName);
70
71 std::vector<Partition> m_partitions;
73};
74
75#endif
bool operator()(const hit_ptr_t &lhs, const hit_ptr_t &rhs) const
Event-owned builder for standard LAr hits.
void RegisterSource(const std::string &sourceName)
Register a regular-SD partition in final output order.
void AddHit(const std::string &sourceName, hit_ptr_t hit, G4int timeBin)
Take ownership of a hit and add it to one regular-SD partition.
std::set< hit_ptr_t, LessHit > hits_t
void Finalize()
Move merged hits into the persisted container in final output order.
std::map< G4int, hits_t > timeBins_t
static void AddHit(timeBins_t &timeBins, hit_ptr_t hit, G4int timeBin)
LArHitContainer(const std::string &collectionName="DefaultCollectionName")
~LArHitContainerBuilder() override=default
void Finalize(timeBins_t &timeBins)
Partition & FindOrCreatePartition(const std::string &sourceName)
std::unique_ptr< LArHit > hit_ptr_t
std::vector< Partition > m_partitions
LArHitContainer(const std::string &collectionName="DefaultCollectionName")
bool Less(LArHit *const &h) const
Operator Less than this for hit ordering.
Definition LArHit.h:123