Skip to content
Snippets Groups Projects
TrackSystemSvc.cpp 1.61 KiB
Newer Older
#include "GearSvc/IGearSvc.h"
#include "gear/GearMgr.h"

#include "MarlinKalTest.h"

#include "TrackSystemSvc.h"

DECLARE_COMPONENT(TrackSystemSvc)

TrackSystemSvc::TrackSystemSvc(const std::string& name, ISvcLocator* svc)
  : base_class(name, svc),
    m_trackSystem(nullptr){
}

TrackSystemSvc::~TrackSystemSvc(){
}

MarlinTrk::IMarlinTrkSystem* TrackSystemSvc::getTrackSystem(){
  if(!m_trackSystem){
    auto _gear = service<IGearSvc>("GearSvc");
    if ( !_gear ) {
      error() << "Failed to find GearSvc ..." << endmsg;
      return 0;
    }
    gear::GearMgr* mgr = _gear->getGearMgr();

    auto _geoSvc = service<IGeoSvc>("GeoSvc");
    if ( !_geoSvc ) {
      error() << "Failed to find GeoSvc ..." << endmsg;
      return 0;
    }
    m_trackSystem = new MarlinTrk::MarlinKalTest( *mgr, _geoSvc ) ;
  }
  return m_trackSystem;
}

StatusCode TrackSystemSvc::initialize(){

  auto _gear = service<IGearSvc>("GearSvc");
  if ( !_gear ) {
    error() << "Failed to find GearSvc ..." << endmsg;
    return StatusCode::FAILURE;
  }
  gear::GearMgr* mgr = _gear->getGearMgr();

  auto _geoSvc = service<IGeoSvc>("GeoSvc");
  if ( !_geoSvc ) {
    error() << "Failed to find GeoSvc ..." << endmsg;
    return StatusCode::FAILURE;
  }
  m_trackSystem = new MarlinTrk::MarlinKalTest( *mgr, _geoSvc ) ;
  
  return StatusCode::SUCCESS;
}

void TrackSystemSvc::removeTrackSystem(){
  if ( m_trackSystem ) {
    delete m_trackSystem;
    m_trackSystem = nullptr;
  }
  return;
}

StatusCode TrackSystemSvc::finalize(){
  
  // if ( m_trackSystem ) {
  //   delete m_trackSystem;
  //   m_trackSystem = nullptr;
  // }
  
  return StatusCode::SUCCESS;
}