ATLAS Offline Software
Loading...
Searching...
No Matches
APRDefaults.h
Go to the documentation of this file.
1// Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
2
3#ifndef APRDEFAULTS_H
4#define APRDEFAULTS_H
5
6#include <array>
7#include <atomic>
8#include <optional>
9#include <string_view>
10
11namespace APRDefaults {
12
13 // Container naming scheme
14 enum class NamingScheme {
15 Historical, // Traditional TTree-based names (CollectionTree, POOLCollectionTree, etc.)
16 Canonical // Modern canonical names (EventData, EventTag, etc.)
17 };
18
19 // Name categories
26
27 // Technology-specific name sets
28 namespace ContainerNames {
29 struct Historical {
30 static constexpr const char* EventData = "CollectionTree";
31 static constexpr const char* EventTag = "POOLCollectionTree";
32 static constexpr const char* DataHeader = "POOLContainer";
33 static constexpr const char* MetaData = "MetaData";
34 };
35
36 struct Canonical {
37 static constexpr const char* EventData = "EventData";
38 static constexpr const char* EventTag = "EventTag";
39 static constexpr const char* DataHeader = "DataHeader";
40 static constexpr const char* MetaData = "MetaData";
41 };
42 }
43
44 namespace detail {
45 // Atomic global naming scheme - shared across all threads
46 inline std::atomic<NamingScheme>& getGlobalScheme() {
47 static std::atomic<NamingScheme> s_scheme{NamingScheme::Canonical};
48 return s_scheme;
49 }
50
51 template<NameType NT>
52 constexpr const char* getNameImpl(NamingScheme scheme) {
53 switch (scheme) {
59 break;
65 break;
66 }
67 return "";
68 }
69 }
70
71 // Set the global naming scheme (thread-safe)
72 inline void setNamingScheme(NamingScheme scheme) {
73 detail::getGlobalScheme().store(scheme, std::memory_order_relaxed);
74 }
75
76 // Get the current global naming scheme (thread-safe)
78 return detail::getGlobalScheme().load(std::memory_order_relaxed);
79 }
80
81 // Get all available naming schemes
82 constexpr std::array<NamingScheme, 2> getAllNamingSchemes() {
84 }
85
86 // Convenience method to parse strings
87 inline std::optional<NamingScheme> parseNamingScheme(std::string_view name) {
88 if (name == "Historical") return NamingScheme::Historical;
89 if (name == "Canonical") return NamingScheme::Canonical;
90 return std::nullopt;
91 }
92
93 // Public API with explicit scheme parameter
94 constexpr const char* getName(NamingScheme scheme, NameType type) {
95 switch (type) {
100 }
101 return "";
102 }
103
104 // Convenience functions using global scheme
105 inline const char* getEventDataName() {
107 }
108
109 inline const char* getEventTagName() {
111 }
112
113 inline const char* getDataHeaderName() {
115 }
116
117 inline const char* getMetaDataName() {
119 }
120
121 // Overloads with explicit scheme
122 constexpr const char* getEventDataName(NamingScheme scheme) {
123 return getName(scheme, NameType::EventData);
124 }
125
126 constexpr const char* getEventTagName(NamingScheme scheme) {
127 return getName(scheme, NameType::EventTag);
128 }
129
130 constexpr const char* getDataHeaderName(NamingScheme scheme) {
131 return getName(scheme, NameType::DataHeader);
132 }
133
134 constexpr const char* getMetaDataName(NamingScheme scheme) {
135 return getName(scheme, NameType::MetaData);
136 }
137
138 static constexpr const char* IndexColName = "index_ref";
139 static constexpr const char* DataHeaderTypeName = "DataHeader";
140 static constexpr const char* DataHeaderFormTypeName = "DataHeaderForm";
141 static constexpr const char* EventTagTypeName = "AttributeList";
142
143}
144
145#endif
constexpr const char * getNameImpl(NamingScheme scheme)
Definition APRDefaults.h:52
std::atomic< NamingScheme > & getGlobalScheme()
Definition APRDefaults.h:46
const char * getEventTagName()
static constexpr const char * DataHeaderTypeName
void setNamingScheme(NamingScheme scheme)
Definition APRDefaults.h:72
static constexpr const char * EventTagTypeName
constexpr std::array< NamingScheme, 2 > getAllNamingSchemes()
Definition APRDefaults.h:82
const char * getEventDataName()
std::optional< NamingScheme > parseNamingScheme(std::string_view name)
Definition APRDefaults.h:87
NamingScheme getNamingScheme()
Definition APRDefaults.h:77
constexpr const char * getName(NamingScheme scheme, NameType type)
Definition APRDefaults.h:94
const char * getDataHeaderName()
static constexpr const char * DataHeaderFormTypeName
const char * getMetaDataName()
static constexpr const char * IndexColName
static constexpr const char * EventData
Definition APRDefaults.h:37
static constexpr const char * DataHeader
Definition APRDefaults.h:39
static constexpr const char * MetaData
Definition APRDefaults.h:40
static constexpr const char * EventTag
Definition APRDefaults.h:38
static constexpr const char * DataHeader
Definition APRDefaults.h:32
static constexpr const char * MetaData
Definition APRDefaults.h:33
static constexpr const char * EventData
Definition APRDefaults.h:30
static constexpr const char * EventTag
Definition APRDefaults.h:31