Project
Loading...
Searching...
No Matches
ElectronicMapperGenerated.cxx
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
14#include <map>
17#include <iostream>
18#include <fmt/format.h>
19
20extern void fillElec2DetCH1R(std::map<uint32_t, uint32_t>& e2d);
21extern void fillElec2DetCH1L(std::map<uint32_t, uint32_t>& e2d);
22extern void fillElec2DetCH2R(std::map<uint32_t, uint32_t>& e2d);
23extern void fillElec2DetCH2L(std::map<uint32_t, uint32_t>& e2d);
24extern void fillElec2DetCH3R(std::map<uint32_t, uint32_t>& e2d);
25extern void fillElec2DetCH3L(std::map<uint32_t, uint32_t>& e2d);
26extern void fillElec2DetCH4R(std::map<uint32_t, uint32_t>& e2d);
27extern void fillElec2DetCH4L(std::map<uint32_t, uint32_t>& e2d);
28extern void fillElec2DetCH5R(std::map<uint32_t, uint32_t>& e2d);
29extern void fillElec2DetCH5L(std::map<uint32_t, uint32_t>& e2d);
30extern void fillElec2DetCH6R(std::map<uint32_t, uint32_t>& e2d);
31extern void fillElec2DetCH6L(std::map<uint32_t, uint32_t>& e2d);
32extern void fillElec2DetCH7R(std::map<uint32_t, uint32_t>& e2d);
33extern void fillElec2DetCH7L(std::map<uint32_t, uint32_t>& e2d);
34extern void fillElec2DetCH8L(std::map<uint32_t, uint32_t>& e2d);
35extern void fillElec2DetCH8R(std::map<uint32_t, uint32_t>& e2d);
36extern void fillElec2DetCH9L(std::map<uint32_t, uint32_t>& e2d);
37extern void fillElec2DetCH9R(std::map<uint32_t, uint32_t>& e2d);
38extern void fillElec2DetCH10L(std::map<uint32_t, uint32_t>& e2d);
39extern void fillElec2DetCH10R(std::map<uint32_t, uint32_t>& e2d);
40extern void fillElec2DetCH10L(std::map<uint32_t, uint32_t>& e2d);
41
42extern void fillSolar2FeeLinkCH1R(std::map<uint16_t, uint32_t>& s2c);
43extern void fillSolar2FeeLinkCH1L(std::map<uint16_t, uint32_t>& s2c);
44extern void fillSolar2FeeLinkCH2R(std::map<uint16_t, uint32_t>& s2c);
45extern void fillSolar2FeeLinkCH2L(std::map<uint16_t, uint32_t>& s2c);
46extern void fillSolar2FeeLinkCH3R(std::map<uint16_t, uint32_t>& s2c);
47extern void fillSolar2FeeLinkCH3L(std::map<uint16_t, uint32_t>& s2c);
48extern void fillSolar2FeeLinkCH4R(std::map<uint16_t, uint32_t>& s2c);
49extern void fillSolar2FeeLinkCH4L(std::map<uint16_t, uint32_t>& s2c);
50extern void fillSolar2FeeLinkCH5R(std::map<uint16_t, uint32_t>& s2c);
51extern void fillSolar2FeeLinkCH5L(std::map<uint16_t, uint32_t>& s2c);
52extern void fillSolar2FeeLinkCH6R(std::map<uint16_t, uint32_t>& s2c);
53extern void fillSolar2FeeLinkCH6L(std::map<uint16_t, uint32_t>& s2c);
54extern void fillSolar2FeeLinkCH7R(std::map<uint16_t, uint32_t>& s2c);
55extern void fillSolar2FeeLinkCH7L(std::map<uint16_t, uint32_t>& s2c);
56extern void fillSolar2FeeLinkCH8L(std::map<uint16_t, uint32_t>& s2c);
57extern void fillSolar2FeeLinkCH8R(std::map<uint16_t, uint32_t>& s2c);
58extern void fillSolar2FeeLinkCH9L(std::map<uint16_t, uint32_t>& s2c);
59extern void fillSolar2FeeLinkCH9R(std::map<uint16_t, uint32_t>& s2c);
60extern void fillSolar2FeeLinkCH10L(std::map<uint16_t, uint32_t>& s2c);
61extern void fillSolar2FeeLinkCH10R(std::map<uint16_t, uint32_t>& s2c);
62extern void fillSolar2FeeLinkCH10L(std::map<uint16_t, uint32_t>& s2c);
63
64namespace
65{
66
67void dump(const std::map<uint32_t, uint32_t>& e2d)
68{
69 for (auto p : e2d) {
70 std::cout << o2::mch::raw::decodeDsElecId(p.first).value() << " -> " << o2::mch::raw::decodeDsDetId(p.second) << "\n";
71 }
72}
73
74std::map<uint32_t, uint32_t> buildDsElecId2DsDetIdMap()
75{
76 std::map<uint32_t, uint32_t> e2d;
97 return e2d;
98}
99
100std::map<uint16_t, uint32_t> buildSolarId2FeeLinkIdMap()
101{
102 std::map<uint16_t, uint32_t> s2f;
123 return s2f;
124}
125
126} // namespace
127
128namespace o2::mch::raw
129{
130
131template <>
132std::function<std::optional<DsDetId>(DsElecId)>
134{
135 static std::map<uint32_t, uint32_t> dsElecId2DsDetId = buildDsElecId2DsDetIdMap();
136 return impl::mapperElec2Det<ElectronicMapperGenerated>(dsElecId2DsDetId);
137}
138
139template <>
140std::function<std::optional<DsElecId>(DsDetId)>
142{
143 static std::map<uint32_t, uint32_t> dsDetId2dsElecId = impl::inverseMap(buildDsElecId2DsDetIdMap());
144 return impl::mapperDet2Elec<ElectronicMapperGenerated>(dsDetId2dsElecId);
145}
146
147template <>
148std::function<std::optional<FeeLinkId>(uint16_t)>
150{
151 static std::map<uint16_t, uint32_t> solarId2FeeLinkId = buildSolarId2FeeLinkIdMap();
152 return impl::mapperSolar2FeeLink<ElectronicMapperGenerated>(solarId2FeeLinkId);
153}
154
155template <>
156std::function<std::optional<uint16_t>(FeeLinkId)>
158{
159 static std::map<uint32_t, uint16_t> feeLinkId2SolarId = impl::inverseMap(buildSolarId2FeeLinkIdMap());
160 return impl::mapperFeeLink2Solar<ElectronicMapperGenerated>(feeLinkId2SolarId);
161}
162
163template <>
164std::set<uint16_t> getSolarUIDs<ElectronicMapperGenerated>(int deid)
165{
166 return impl::getSolarUIDs<ElectronicMapperGenerated>(deid);
167}
168
169template <>
171{
172 return impl::getSolarUIDs<ElectronicMapperGenerated>();
173}
174
175template <>
177{
178 return impl::solar2FeeLinkConsistencyCheck<ElectronicMapperGenerated>();
179}
180
181template <>
182std::set<DsElecId> getAllDs<ElectronicMapperGenerated>()
183{
184 return impl::getAllDs<ElectronicMapperGenerated>();
185}
186
187template <>
188std::set<uint16_t> getSolarUIDsPerFeeId<ElectronicMapperGenerated>(uint16_t feeid)
189{
190 return impl::getSolarUIDsPerFeeId<ElectronicMapperGenerated>(feeid);
191}
192
193template <>
194std::set<DsDetId> getDualSampas<ElectronicMapperGenerated>(uint16_t solarId)
195{
196 return impl::getDualSampas<ElectronicMapperGenerated>(solarId);
197}
198
199template <>
200std::set<DsDetId> getDualSampasPerFeeId<ElectronicMapperGenerated>(uint16_t feeId)
201{
202 return impl::getDualSampasPerFeeId<ElectronicMapperGenerated>(feeId);
203}
204
205template <>
206std::optional<uint16_t> solarIndex2Id<ElectronicMapperGenerated>(uint16_t solarIndex)
207{
208 return impl::solarIndex2Id<ElectronicMapperGenerated>(solarIndex);
209}
210
211template <>
212std::optional<uint16_t> solarId2Index<ElectronicMapperGenerated>(uint16_t solarId)
213{
214 return impl::solarId2Index<ElectronicMapperGenerated>(solarId);
215}
216
217} // namespace o2::mch::raw
void fillElec2DetCH3R(std::map< uint32_t, uint32_t > &e2d)
Definition CH3R.cxx:17
void fillSolar2FeeLinkCH4R(std::map< uint16_t, uint32_t > &s2c)
Definition CH4R.cxx:904
void fillSolar2FeeLinkCH6L(std::map< uint16_t, uint32_t > &s2c)
Definition CH6L.cxx:634
void fillElec2DetCH1L(std::map< uint32_t, uint32_t > &e2d)
Definition CH1L.cxx:17
void fillSolar2FeeLinkCH3L(std::map< uint16_t, uint32_t > &s2c)
Definition CH3L.cxx:904
void fillElec2DetCH8L(std::map< uint32_t, uint32_t > &e2d)
Definition CH8L.cxx:17
void fillElec2DetCH4R(std::map< uint32_t, uint32_t > &e2d)
Definition CH4R.cxx:17
void fillSolar2FeeLinkCH2L(std::map< uint16_t, uint32_t > &s2c)
Definition CH2L.cxx:922
void fillElec2DetCH8R(std::map< uint32_t, uint32_t > &e2d)
Definition CH8R.cxx:17
void fillSolar2FeeLinkCH9L(std::map< uint16_t, uint32_t > &s2c)
Definition CH9L.cxx:970
void fillElec2DetCH6R(std::map< uint32_t, uint32_t > &e2d)
Definition CH6R.cxx:17
void fillElec2DetCH7L(std::map< uint32_t, uint32_t > &e2d)
Definition CH7L.cxx:17
void fillSolar2FeeLinkCH5R(std::map< uint16_t, uint32_t > &s2c)
Definition CH5R.cxx:624
void fillElec2DetCH4L(std::map< uint32_t, uint32_t > &e2d)
Definition CH4L.cxx:17
void fillSolar2FeeLinkCH1L(std::map< uint16_t, uint32_t > &s2c)
Definition CH1L.cxx:922
void fillElec2DetCH3L(std::map< uint32_t, uint32_t > &e2d)
Definition CH3L.cxx:17
void fillElec2DetCH2R(std::map< uint32_t, uint32_t > &e2d)
Definition CH2R.cxx:17
void fillElec2DetCH5L(std::map< uint32_t, uint32_t > &e2d)
Definition CH5L.cxx:17
void fillElec2DetCH9R(std::map< uint32_t, uint32_t > &e2d)
Definition CH9R.cxx:17
void fillElec2DetCH2L(std::map< uint32_t, uint32_t > &e2d)
Definition CH2L.cxx:17
void fillElec2DetCH6L(std::map< uint32_t, uint32_t > &e2d)
Definition CH6L.cxx:17
void fillElec2DetCH9L(std::map< uint32_t, uint32_t > &e2d)
Definition CH9L.cxx:17
void fillElec2DetCH7R(std::map< uint32_t, uint32_t > &e2d)
Definition CH7R.cxx:17
void fillElec2DetCH5R(std::map< uint32_t, uint32_t > &e2d)
Definition CH5R.cxx:17
void fillSolar2FeeLinkCH2R(std::map< uint16_t, uint32_t > &s2c)
Definition CH2R.cxx:922
void fillSolar2FeeLinkCH10R(std::map< uint16_t, uint32_t > &s2c)
Definition CH10R.cxx:970
void fillSolar2FeeLinkCH8R(std::map< uint16_t, uint32_t > &s2c)
Definition CH8R.cxx:880
void fillSolar2FeeLinkCH9R(std::map< uint16_t, uint32_t > &s2c)
Definition CH9R.cxx:970
void fillSolar2FeeLinkCH7R(std::map< uint16_t, uint32_t > &s2c)
Definition CH7R.cxx:880
void fillElec2DetCH10R(std::map< uint32_t, uint32_t > &e2d)
Definition CH10R.cxx:17
void fillSolar2FeeLinkCH7L(std::map< uint16_t, uint32_t > &s2c)
Definition CH7L.cxx:880
void fillSolar2FeeLinkCH8L(std::map< uint16_t, uint32_t > &s2c)
Definition CH8L.cxx:880
void fillSolar2FeeLinkCH1R(std::map< uint16_t, uint32_t > &s2c)
Definition CH1R.cxx:922
void fillSolar2FeeLinkCH6R(std::map< uint16_t, uint32_t > &s2c)
Definition CH6R.cxx:634
void fillSolar2FeeLinkCH10L(std::map< uint16_t, uint32_t > &s2c)
Definition CH10L.cxx:970
void fillSolar2FeeLinkCH3R(std::map< uint16_t, uint32_t > &s2c)
Definition CH3R.cxx:904
void fillSolar2FeeLinkCH5L(std::map< uint16_t, uint32_t > &s2c)
Definition CH5L.cxx:624
void fillElec2DetCH10L(std::map< uint32_t, uint32_t > &e2d)
Definition CH10L.cxx:17
void fillSolar2FeeLinkCH4L(std::map< uint16_t, uint32_t > &s2c)
Definition CH4L.cxx:904
void fillElec2DetCH1R(std::map< uint32_t, uint32_t > &e2d)
Definition CH1R.cxx:17
void dump(const std::string what, DPMAP m, int verbose)
Definition dcs-ccdb.cxx:79
std::map< VALUE, KEY > inverseMap(const std::map< KEY, VALUE > &src)
std::function< std::optional< DsDetId >(DsElecId)> createElec2DetMapper< ElectronicMapperGenerated >(uint64_t)
std::set< uint16_t > getSolarUIDsPerFeeId< ElectronicMapperGenerated >(uint16_t feeid)
std::function< std::optional< uint16_t >(FeeLinkId)> createFeeLink2SolarMapper< ElectronicMapperGenerated >()
std::vector< std::string > solar2FeeLinkConsistencyCheck< ElectronicMapperGenerated >()
std::set< DsDetId > getDualSampasPerFeeId< ElectronicMapperGenerated >(uint16_t feeId)
std::optional< uint16_t > solarIndex2Id< ElectronicMapperGenerated >(uint16_t solarIndex)
std::set< DsElecId > getAllDs< ElectronicMapperGenerated >()
std::function< std::optional< DsElecId >(DsDetId)> createDet2ElecMapper< ElectronicMapperGenerated >()
std::optional< uint16_t > solarId2Index< ElectronicMapperGenerated >(uint16_t solarId)
std::set< uint16_t > getSolarUIDs< ElectronicMapperGenerated >()
std::optional< DsElecId > decodeDsElecId(uint32_t code)
Definition DsElecId.cxx:37
DsDetId decodeDsDetId(uint32_t code)
Create a DsDetId object from a integer code.
Definition DsDetId.cxx:33
std::set< DsDetId > getDualSampas< ElectronicMapperGenerated >(uint16_t solarId)
std::function< std::optional< FeeLinkId >(uint16_t)> createSolar2FeeLinkMapper< ElectronicMapperGenerated >()