15 #include <framework/logging/Logger.h>
24 ECL_BARREL_SHAPERS_IN_CRATE = 12,
25 ECL_FWD_SHAPERS_IN_CRATE = 10,
26 ECL_BKW_SHAPERS_IN_CRATE = 8,
27 ECL_TOTAL_SHAPERS = 576,
28 ECL_FINESSES_IN_COPPER = 2,
29 ECL_CHANNELS_IN_SHAPER = 16,
31 ECL_BARREL_CRATES = 36,
35 ECL_BARREL_COPPERS = 18,
36 ECL_ENDCAP_COPPERS = 8,
37 ECL_TOTAL_CHANNELS = 8736,
38 ECL_BARREL_CHANNELS = 6624,
39 ECL_FWD_CHANNELS = 1152,
40 ECL_BKW_CHANNELS = 960
48 class ECLChannelMap:
public TObject {
63 int get(
int crate,
int shaper,
int channel)
const
68 if (crate <= ECL_BARREL_CRATES) {
69 id = (crate - 1) * ECL_BARREL_SHAPERS_IN_CRATE * ECL_CHANNELS_IN_SHAPER
70 + (shaper - 1) * ECL_CHANNELS_IN_SHAPER + (channel - 1);
73 crate -= ECL_BARREL_CRATES;
75 if (crate <= ECL_FWD_CRATES) {
76 id = (crate - 1) * ECL_FWD_SHAPERS_IN_CRATE * ECL_CHANNELS_IN_SHAPER
77 + (shaper - 1) * ECL_CHANNELS_IN_SHAPER + (channel - 1);
80 crate -= ECL_FWD_CRATES;
82 if (crate <= ECL_BKW_CRATES) {
83 id = (crate - 1) * ECL_BKW_SHAPERS_IN_CRATE * ECL_CHANNELS_IN_SHAPER
84 + (shaper - 1) * ECL_CHANNELS_IN_SHAPER + (channel - 1);
98 const std::vector<int>& mappingFWD,
99 const std::vector<int>& mappingBWD)
103 const unsigned int mappingBAR_size = ECL_BARREL_CRATES * ECL_BARREL_SHAPERS_IN_CRATE * ECL_CHANNELS_IN_SHAPER;
104 const unsigned int mappingFWD_size = ECL_FWD_CRATES * ECL_FWD_SHAPERS_IN_CRATE * ECL_CHANNELS_IN_SHAPER;
105 const unsigned int mappingBWD_size = ECL_BKW_CRATES * ECL_BKW_SHAPERS_IN_CRATE * ECL_CHANNELS_IN_SHAPER;
107 if (mappingBAR.size() != mappingBAR_size ||
108 mappingFWD.size() != mappingFWD_size ||
109 mappingBWD.size() != mappingBWD_size) {
110 B2FATAL(
"ECLChannelMap: wrong sizes for mapping vectors. Got ("
111 << mappingBAR.size() <<
","
112 << mappingFWD.size() <<
","
113 << mappingBWD.size() <<
"), "
115 << mappingBAR_size <<
","
116 << mappingFWD_size <<
","
117 << mappingBWD_size <<
")");