#include "hruntimedb.h"
#include "hstart2calpar.h"
#include "hstart2hitfpar.h"
#include "hstart2trb2lookup.h"
#include "hstart2calrunpar.h"
#include "hstart2geompar.h"
#include "hstart2digipar.h"
#include "hstart2trb3lookup.h"
#include "hstart2trb3calpar.h"
#include "hstartcontfact.h"
ClassImp(HStartContFact)
static HStartContFact gHStartContFact;
HStartContFact::HStartContFact()
{
   
   fName = "StartContFact";
   fTitle = "Factory for parameter containers in libStart";
   setAllContainers();
   HRuntimeDb::instance()->addContFactory(this);
}
void HStartContFact::setAllContainers()
{
   
   
   containers->Add(
      new HContainer("Start2Trb2Lookup",
                     "Lookup table for Start2 TRB unpacker",
                     "Start2Trb2LookupProduction"));
   containers->Add(
      new HContainer("Start2Calpar",
                     "Calibration parameters for Start2",
                     "Start2CalparProduction"));
   containers->Add(
      new HContainer("Start2HitFPar",
                     "Start2 Hit Finder Parameters",
                     "Start2HitFParProduction"));
   containers->Add(
      new HContainer("Start2CalRunPar",
                     "Start2 offset corrections per run Parameters",
                     "Start2CalRunParProduction"));
   containers->Add(
      new HContainer("Start2GeomPar",
                     "Geometry parameters of the Start Detector",
                     "GeomProduction"));
   containers->Add(
      new HContainer("Start2DigiPar",
                     "Digitization parameters of the Start detector",
                     "Start2DigiProduction"));
   containers->Add(
      new HContainer("Start2Trb3Lookup",
                     "Lookup table for Start2 TRB3 unpacker",
                     "Start2Trb3LookupProduction"));
   containers->Add(
      new HContainer("Start2Trb3Calpar",
                     "TRB3 TDC calibration parameters of the Start detector",
                     "Trb3CalparProduction"));
}
HParSet* HStartContFact::createContainer(HContainer* c)
{
   
   
   
   const Char_t* name = c->GetName();
   if (strcmp(name, "Start2Trb2Lookup") == 0)
      return new HStart2Trb2Lookup(c->getConcatName().Data(), c->GetTitle(), c->getContext());
   if (strcmp(name, "Start2Calpar") == 0)
      return new HStart2Calpar(c->getConcatName().Data(), c->GetTitle(), c->getContext());
   if (0 == strncmp(name, "Start2HitFPar", strlen("Start2HitFPar")))
      return new HStart2HitFPar(c->getConcatName().Data(), c->GetTitle(), c->getContext());
   if (0 == strncmp(name, "Start2CalRunPar", strlen("Start2CalRunPar")))
      return new HStart2CalRunPar(c->getConcatName().Data(), c->GetTitle(), c->getContext());
   if (0 == strncmp(name, "Start2GeomPar", strlen("Start2GeomPar")))
      return new HStart2GeomPar(c->getConcatName().Data(), c->GetTitle(), c->getContext());
   if (0 == strncmp(name, "Start2DigiPar", strlen("Start2DigiPar")))
      return new HStart2DigiPar(c->getConcatName().Data(), c->GetTitle(), c->getContext());
   if (strcmp(name, "Start2Trb3Lookup") == 0)
      return new HStart2Trb3Lookup(c->getConcatName().Data(), c->GetTitle(), c->getContext());
   if (0 == strncmp(name, "Start2Trb3Calpar", strlen("Start2Trb3Calpar")))
      return new HStart2Trb3Calpar(c->getConcatName().Data(), c->GetTitle(), c->getContext());
   return 0;
}