Part of code in MpdTpcKalmanFilter::Exec method should be in MpdTpcKalmanFilter::Init
EDIT: 2022-06-09 This part of code was there since initial commit 7y ago https://git.jinr.ru/nica/mpdroot/-/blob/649d6cfaba1c599b8d6474fb99c2351a1801f45f/lhetrack/MpdTpcKalmanFilter.cxx
I did some preliminary test, and there is more under the surface, moving the part of code to Init method does not initialize the geometry. It needs first the whole Init stage to be finished, so it's a problem of overall design. It will be fixed by redesigning the upper abstraction of MPD backend.
Closing as UNRESOLVED.
There is an obscure "C-style hack" with static integer variable, so that the part of the code using this static variable is run only once. This part of code in principle should be in Init() method instead.
void MpdTpcKalmanFilter::Exec(Option_t * option)
{
static Int_t first = 1;
if (first && fHits->GetEntriesFast()) { first = 0;
// Check geometry
if (fHits->First()->GetUniqueID()) fModular = 1;
cout << "\n !!!!! ***** ***** ***** !!!!! " << endl;
if (fModular) {
FillGeoScheme();
cout << " ***** TPC with modular design of readout chambers ***** " << endl;
}
else cout << " ***** TPC with cylindrical design ***** " << endl;
cout << " !!!!! ***** ***** ***** !!!!! " << endl;
}
}
This might be automatically resolved, once KF will gets its interface.
Otherwise we might remove the hack, and move this part of the code to MpdTpcKalmanFilter::Init method