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 <>
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 <>
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
unsigned short int uint16_t
Timeframe settings Average distance in cm of events merged into Randomize distance around average distance of merged events Simulate correct bunch interactions instead of placing only the average number of events A value[n] sets TFlen for[n] collisions in Number of bunches per trainsort Number of bunch trains Instantaneous interaction rate Do not simulate border Total number of collisions to be placed in the interior of all time Do not select random but walk over array of events in stride steps h Event generator settings h configStandalone Use CPU for GPU Force usage of the specified GPU device no CPU fallback Continue processing after an error First event to Number of events to Number of iterations to Number of iterations to Number of initial iterations excluded from const char Directory with events to Events directory is and not inside events Show standalone event Run event generator maximum time bin of continuous for triggered for automatic continuous for automatic continuous triggered uint64_t
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 >()