void JPetFrameFactory::initialize()
{
  ParamObjectsDescriptions descriptions = paramGetter.getAllBasicData(ParamObjectType::kFrame, runId);
  if (descriptions.size() == 0) {
    ERROR(std::string("No frames in run ") + boost::lexical_cast<std::string>(runId));
  }
  for (auto description : descriptions) {
    fFrames[description.first] = build(description.second);
  }
  fInitialized = true;
}
void JPetBarrelSlotFactory::initialize()
{
  ParamObjectsDescriptions descriptions = paramGetter.getAllBasicData(ParamObjectType::kBarrelSlot, runId);
  if (descriptions.size() == 0) {
    ERROR(std::string("No barrel slots in run ") + boost::lexical_cast<std::string>(runId));
  }
  for (auto description : descriptions) {
    fBarrelSlots[description.first] = build(description.second);
  }
  fInitialized = true;
  ParamRelationalData relations = paramGetter.getAllRelationalData(ParamObjectType::kBarrelSlot, ParamObjectType::kLayer, runId);
  for (auto relation : relations) {
    fBarrelSlots[relation.first]->setLayer(*layerFactory.getLayers().at(relation.second));
  }
}
void JPetPMFactory::initialize()
{
  ParamObjectsDescriptions descriptions = paramGetter.getAllBasicData(ParamObjectType::kPM, runId);
  if (descriptions.size() == 0) {
    ERROR(std::string("No PMs in run ") + boost::lexical_cast<std::string>(runId));
  }
  for (auto description : descriptions) {
    fPMs[description.first] = build(description.second);
  }
  fInitialized = true;
  ParamRelationalData relations = paramGetter.getAllRelationalData(
    ParamObjectType::kPM, ParamObjectType::kFEB, runId);
  for (auto relation : relations) {
    fPMs[relation.first]->setFEB(*febFactory.getFEBs().at(relation.second));
  }
  relations = paramGetter.getAllRelationalData(ParamObjectType::kPM, ParamObjectType::kScintillator, runId);
  for (auto relation : relations) {
    fPMs[relation.first]->setScin(*scinFactory.getScins().at(relation.second));
  }
  relations = paramGetter.getAllRelationalData(ParamObjectType::kPM, ParamObjectType::kBarrelSlot, runId);
  for (auto relation : relations) {
    fPMs[relation.first]->setBarrelSlot(*barrelSlotFactory.getBarrelSlots().at(relation.second));
  }
}