13 #include <framework/logging/Logger.h>
27 class SVDCalibrationsBase:
public TObject {
37 typedef std::vector< typename T::payloadContainerType >
SVDSensor;
40 typedef std::vector< SVDSensor >
SVDLadder;
43 typedef std::vector< SVDLadder >
SVDLayer;
46 typedef std::vector< SVDLayer >
SVD;
56 enum E_side { Vindex = 0 , Uindex = 1 };
61 typename T::calibrationType(),
62 const TString& uniqueID =
""):
m_uniqueID(uniqueID)
66 int laddersOnLayer[] = { 0, 0, 0, 8, 11, 13, 17 };
67 for (
unsigned int layer = 0 ; layer <
calibrations.size() ; layer ++) {
69 int sensorsOnLadder[] = {0, 0, 0, 3, 4, 5, 6};
70 for (
unsigned int ladder = 1; ladder <
calibrations[layer].size(); ladder ++) {
71 calibrations[layer][ladder].resize(sensorsOnLadder[ layer ]);
72 for (
unsigned int sensor = 1; sensor <
calibrations[layer][ladder].size() ; sensor ++) {
74 T::init(
calibrations[layer][ladder][sensor][ Uindex ], layer, ladder, sensor, Uindex ,
76 T::init(
calibrations[layer][ladder][sensor][ Vindex ], layer, ladder, sensor, Vindex ,
97 typename T::calibrationType
get(
unsigned int layer,
101 unsigned int strip)
const
104 B2FATAL(
"Layers vector is smaller than " << layer);
107 if (ladders.size() <= ladder) {
108 B2FATAL(
"Ladders vector is smaller than " << ladder);
110 const auto& sensors = ladders[ladder];
111 if (sensors.size() <= sensor) {
112 B2FATAL(
"Sensors vector is smaller than " << sensor);
114 const auto& sides = sensors[sensor];
115 if (sides.size() <= side) {
116 B2FATAL(
"Sides vector is smaller than " << side);
119 return T::get(sides[side] , strip);
132 const typename T::calibrationType&
getReference(
unsigned int layer,
136 unsigned int strip)
const
139 B2FATAL(
"Layers vector is smaller than " << layer);
142 if (ladders.size() <= ladder) {
143 B2FATAL(
"Ladders vector is smaller than " << ladder);
145 const auto& sensors = ladders[ladder];
146 if (sensors.size() <= sensor) {
147 B2FATAL(
"Sensors vector is smaller than " << sensor);
149 const auto& sides = sensors[sensor];
150 if (sides.size() <= side) {
151 B2FATAL(
"Sides vector is smaller than " << side);
154 return T::getReference(sides[side] , strip);
172 void set(
unsigned int layer,
177 typename T::calibrationType value)
180 B2FATAL(
"Layers vector is smaller than " << layer);
183 if (ladders.size() <= ladder) {
184 B2FATAL(
"Ladders vector is smaller than " << ladder);
186 auto& sensors = ladders[ladder];
187 if (sensors.size() <= sensor) {
188 B2FATAL(
"Sensors vector is smaller than " << sensor);
190 auto& sides = sensors[sensor];
191 if (sides.size() <= side) {
192 B2FATAL(
"Sides vector is smaller than " << side);
195 return T::set(sides[side] , strip, value);