BOSS 7.0.6
BESIII Offline Software System
Loading...
Searching...
No Matches
InjSigTimeSvc.cxx
Go to the documentation of this file.
2
3#include "GaudiKernel/Kernel.h"
4#include "GaudiKernel/IInterface.h"
5#include "GaudiKernel/StatusCode.h"
6#include "GaudiKernel/SvcFactory.h"
7#include "GaudiKernel/MsgStream.h"
8#include "GaudiKernel/IIncidentSvc.h"
9#include "GaudiKernel/Incident.h"
10#include "GaudiKernel/ISvcLocator.h"
11#include "GaudiKernel/Bootstrap.h"
12#include "GaudiKernel/SmartDataPtr.h"
13#include "GaudiKernel/DataSvc.h"
14
18
19#include <iomanip>
20#include <iostream>
21#include <fstream>
22
23using namespace std;
24
25InjSigTimeSvc::InjSigTimeSvc( const string& name, ISvcLocator* svcloc) :
26 Service (name, svcloc) {
27}
28
30}
31
32StatusCode InjSigTimeSvc::queryInterface(const InterfaceID& riid, void** ppvInterface){
33 if( IID_IInjSigTimeSvc.versionMatch(riid) ){
34 *ppvInterface = static_cast<IInjSigTimeSvc*> (this);
35 } else{
36 return Service::queryInterface(riid, ppvInterface);
37 }
38 return StatusCode::SUCCESS;
39}
40
42 MsgStream log(messageService(), name());
43 log << MSG::INFO << "InjSigTimeSvc::initialize()" << endreq;
44
45 StatusCode sc = Service::initialize();
46 if( sc.isFailure() ) return sc;
47
48 IIncidentSvc* incsvc;
49 sc = service("IncidentSvc", incsvc);
50 int priority = 100;
51 if( sc.isSuccess() ){
52 incsvc -> addListener(this, "NewRun", priority);
53 }
54
55 sc = service("CalibDataSvc", m_pCalDataSvc, true);
56 if( sc == StatusCode::SUCCESS ){
57 log << MSG::INFO << "Retrieve IDataProviderSvc" << endreq;
58 }else{
59 log << MSG::FATAL << "can not get IDataProviderSvc" << endreq;
60 }
61
62 return StatusCode::SUCCESS;
63}
64
66 MsgStream log(messageService(), name());
67 log << MSG::INFO << "InjSigTimeSvc::finalize()" << endreq;
68
69 m_IST.clear();
70 m_flag.clear();
71
72 return StatusCode::SUCCESS;
73}
74
75void InjSigTimeSvc::handle(const Incident& inc){
76 MsgStream log( messageService(), name() );
77 log << MSG::DEBUG << "handle: " << inc.type() << endreq;
78
79 if ( inc.type() == "NewRun" ){
80 log << MSG::DEBUG << "NewRun" << endreq;
81
82 if( ! initCalibConst() ){
83 log << MSG::ERROR
84 << "can not initilize InjSigTime Constants" << endreq;
85 }
86 }
87}
88
89
90bool InjSigTimeSvc::initCalibConst(){
91 MsgStream log(messageService(), name());
92 log << MSG::INFO << "read calib const from TCDS" << endreq;
93
94 IDataProviderSvc* eventSvc = NULL;
95 Gaudi::svcLocator()->service("EventDataSvc", eventSvc);
96 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc,"/Event/EventHeader");
97 if (!eventHeader) {
98 log << MSG::FATAL << "Could not find Event Header" << endreq;
99 return( StatusCode::FAILURE);
100 }
101
102 //clear calibration constants vectors
103 m_IST.clear();
104 m_flag.clear();
105
106 string fullPath = "/Calib/InjSigTime";
107 SmartDataPtr<CalibData::InjSigTimeCal> calConst(m_pCalDataSvc, fullPath);
108 if( ! calConst ){
109 log << MSG::ERROR << "can not get InjSigTime via SmartPtr"
110 << endreq;
111 return false;
112 }
113
114 m_npar = calConst->getNpar();
115 for(int i=0; i<m_npar; i++){
116 m_IST.push_back(calConst->getIST(i));
117 m_flag.push_back(calConst->getFlag(i));
118 }
119
120 return true;
121}
virtual StatusCode finalize()
InjSigTimeSvc(const std::string &name, ISvcLocator *svcloc)
void handle(const Incident &)
virtual StatusCode initialize()
virtual StatusCode queryInterface(const InterfaceID &riid, void **ppvUnknown)