56 LOG(error) << GetName() <<
"::Init: GEO info for modules unavailable !";
60 LOG(fatal) <<
"CbmTaskTrdHitFinderParWrite::Init() - Geometry and parameter files"
61 <<
" have different number of modules.";
64 LOG(info) <<
"Creating TRD + TRD2D parameters";
67 std::vector<uint16_t> trdModules;
68 std::vector<uint16_t> trd2DModules;
72 const auto moduleId = entry.first;
76 if (!asicPar)
continue;
79 trd2DModules.push_back(entry.first);
82 trdModules.push_back(entry.first);
89 setup.
modules.resize(trdModules.size());
90 setup2D.
modules.resize(trd2DModules.size());
93 for (
size_t mod = 0; mod < trd2DModules.size(); mod++) {
94 const uint16_t moduleId = trd2DModules[mod];
102 if (!asicPar)
continue;
106 module.padSizeX = digiPar->GetPadSizeX(0);
107 module.padSizeY = digiPar->GetPadSizeY(0);
108 module.address = moduleId;
109 module.rowPar.resize(digiPar->GetNofRows());
111 const double* tra_ptr = pGeo->
GetNode()->GetMatrix()->GetTranslation();
112 const double* rot_ptr = pGeo->
GetNode()->GetMatrix()->GetRotationMatrix();
113 memcpy(module.
translation.data(), tra_ptr, 3 *
sizeof(
double));
114 memcpy(module.
rotation.data(), rot_ptr, 9 *
sizeof(
double));
116 for (
int row = 0; row < digiPar->
GetNofRows(); row++) {
122 const int sector = digiPar->
GetSectorRow(row, rowInSector);
126 TVector3
pos, posErr;
128 const std::array<double, 3> pos_ptr = {
pos[0],
pos[1],
pos[2]};
129 const std::array<double, 3> posErr_ptr = {posErr[0], posErr[1], posErr[2]};
130 memcpy(padPar.
position.data(), pos_ptr.data(), 3 *
sizeof(
double));
131 memcpy(padPar.
positionError.data(), posErr_ptr.data(), 3 *
sizeof(
double));
146 padPar.
chTMasked = daqFaspChT->IsMasked();
154 for (
size_t mod = 0; mod < trdModules.size(); mod++) {
155 const uint16_t moduleId = trdModules[mod];
163 if (!asicPar)
continue;
167 module.padSizeX = digiPar->GetPadSizeX(0);
168 module.padSizeY = digiPar->GetPadSizeY(0);
169 module.padSizeErrX = digiPar->GetPadSizeX(1);
170 module.padSizeErrY = digiPar->GetPadSizeY(1);
171 module.orientation = digiPar->GetOrientation();
172 module.address = moduleId;
173 module.rowPar.resize(digiPar->GetNofRows());
175 const double* tra_ptr = pGeo->
GetNode()->GetMatrix()->GetTranslation();
176 const double* rot_ptr = pGeo->
GetNode()->GetMatrix()->GetRotationMatrix();
177 memcpy(module.
translation.data(), tra_ptr, 3 *
sizeof(
double));
178 memcpy(module.
rotation.data(), rot_ptr, 9 *
sizeof(
double));
180 for (
int row = 0; row < digiPar->
GetNofRows(); row++) {
186 const int sector = digiPar->
GetSectorRow(row, rowInSector);
190 TVector3
pos, posErr;
192 const std::array<double, 3> pos_ptr = {
pos[0],
pos[1],
pos[2]};
193 const std::array<double, 3> posErr_ptr = {posErr[0], posErr[1], posErr[2]};
194 memcpy(padPar.
position.data(), pos_ptr.data(), 3 *
sizeof(
double));
195 memcpy(padPar.
positionError.data(), posErr_ptr.data(), 3 *
sizeof(
double));
204 std::ofstream fout(
"TrdHitfinderPar.yaml");
208 std::ofstream f2Dout(
"TrdHitfinder2DPar.yaml");
209 f2Dout << dump(setup2D);
bool GetFaspChannelPar(int pad, const CbmTrdParFaspChannel *&tilt, const CbmTrdParFaspChannel *&rect) const
Access the calibration objects describing the two FASP channels allocated to a pad....