10#include "GaudiKernel/Bootstrap.h"
11#include "GaudiKernel/DataSvc.h"
12#include "GaudiKernel/IDataProviderSvc.h"
13#include "GaudiKernel/IInterface.h"
14#include "GaudiKernel/ISvcLocator.h"
15#include "GaudiKernel/MsgStream.h"
16#include "GaudiKernel/SmartDataPtr.h"
17#include "GaudiKernel/StatusCode.h"
19#include "CalibData/CalibModel.h"
20#include "CalibData/Muc/MucCalibData.h"
21#include "CalibDataSvc/ICalibRootSvc.h"
31 : base_class( name, svcloc ), m_pCalibDataSvc( 0 ) {
32 declareProperty(
"ConfigMode", m_fConfigMode = 3 );
33 declareProperty(
"UniformEff", m_fUniformEff = 0.95 );
34 declareProperty(
"UniformCnt", m_fUniformEff = 0.05 );
35 declareProperty(
"UniformNos", m_fUniformEff = 0.001 );
36 declareProperty(
"UniformNosRatio", m_fUniformNos = 0.05 );
37 declareProperty(
"UniformClst", m_fUniformClst = 4 );
43 MsgStream log(
msgSvc(), name() );
44 log << MSG::INFO << endmsg <<
"initialize()" << endmsg << endmsg;
45 log << MSG::INFO <<
"Config mode:\t" << m_fConfigMode << endmsg;
46 StatusCode sc = Service::initialize();
47 if ( sc.isFailure() )
return sc;
49 sc = service(
"CalibDataSvc", m_pCalibDataSvc,
true );
50 if ( sc == StatusCode::SUCCESS )
51 { log << MSG::INFO <<
"Retrieve IDataProviderSvc" << endmsg; }
52 else { log << MSG::FATAL <<
"can not get IDataProviderSvc" << endmsg; }
54 return StatusCode::SUCCESS;
58 MsgStream log(
msgSvc(), name() );
59 log << MSG::INFO << endmsg <<
"finalize()" << endmsg << endmsg;
60 return StatusCode::SUCCESS;
73 MsgStream log(
msgSvc(), name() );
75 std::string fullPath =
"/Calib/MucCal";
76 SmartDataPtr<CalibData::MucCalibData> pMucCalibConst( m_pCalibDataSvc, fullPath );
78 if ( !pMucCalibConst )
79 { log << MSG::ERROR <<
"getEff() can not access to MucCalibData via SmartPtr" << endmsg; }
82 switch ( m_fConfigMode )
85 if ( m_fUniformEff < 0 ) eff = pMucCalibConst->getUniformEff();
86 else eff = m_fUniformEff;
88 case 1: eff = pMucCalibConst->getLayerEff( layer );
break;
89 case 2: eff = pMucCalibConst->getBoxEff( part, segment, layer );
break;
90 case 3: eff = pMucCalibConst->getStripEff( part, segment, layer, strip );
break;
101 MsgStream log(
msgSvc(), name() );
102 std::string fullPath =
"/Calib/MucCal";
103 SmartDataPtr<CalibData::MucCalibData> pMucCalibConst( m_pCalibDataSvc, fullPath );
104 if ( !pMucCalibConst )
105 { log << MSG::ERROR <<
"getCnt() can not access to MucCalibData via SmartPtr" << endmsg; }
108 switch ( m_fConfigMode )
111 if ( m_fUniformCnt < 0 ) cnt = pMucCalibConst->getUniformCnt();
112 else cnt = m_fUniformCnt;
114 case 1: cnt = pMucCalibConst->getLayerCnt( layer );
break;
115 case 2: cnt = pMucCalibConst->getBoxCnt( part, segment, layer );
break;
116 case 3: cnt = pMucCalibConst->getStripCnt( part, segment, layer, strip );
break;
127 MsgStream log(
msgSvc(), name() );
128 std::string fullPath =
"/Calib/MucCal";
129 SmartDataPtr<CalibData::MucCalibData> pMucCalibConst( m_pCalibDataSvc, fullPath );
130 if ( !pMucCalibConst )
131 { log << MSG::ERROR <<
"getNos() can not access to MucCalibData via SmartPtr" << endmsg; }
134 switch ( m_fConfigMode )
137 if ( m_fUniformNos < 0 ) nos = pMucCalibConst->getUniformNos();
138 else nos = m_fUniformNos;
140 case 1: nos = pMucCalibConst->getLayerNos( layer );
break;
141 case 2: nos = pMucCalibConst->getBoxNos( part, segment, layer );
break;
142 case 3: nos = pMucCalibConst->getStripNos( part, segment, layer, strip );
break;
153 double nosRatio = 0.0;
154 MsgStream log(
msgSvc(), name() );
155 std::string fullPath =
"/Calib/MucCal";
156 SmartDataPtr<CalibData::MucCalibData> pMucCalibConst( m_pCalibDataSvc, fullPath );
157 if ( !pMucCalibConst )
159 log << MSG::ERROR <<
"getNosRatio() can not access to MucCalibData via SmartPtr" << endmsg;
163 switch ( m_fConfigMode )
166 if ( m_fUniformNosRatio < 0 ) nosRatio = pMucCalibConst->getUniformNosRatio();
167 else nosRatio = m_fUniformNosRatio;
169 case 1: nosRatio = pMucCalibConst->getLayerNosRatio( layer );
break;
170 case 2: nosRatio = pMucCalibConst->getBoxNosRatio( part, segment, layer );
break;
171 case 3: nosRatio = pMucCalibConst->getStripNosRatio( part, segment, layer, strip );
break;
181 double prob )
const {
182 double cluster = 0.0;
183 MsgStream log(
msgSvc(), name() );
184 std::string fullPath =
"/Calib/MucCal";
185 SmartDataPtr<CalibData::MucCalibData> pMucCalibConst( m_pCalibDataSvc, fullPath );
186 if ( !pMucCalibConst )
187 { log << MSG::ERROR <<
"getClst() can not access to MucCalibData via SmartPtr" << endmsg; }
190 switch ( m_fConfigMode )
193 if ( m_fUniformClst < 0 ) cluster = pMucCalibConst->getUniformClst();
194 else cluster = m_fUniformClst;
196 case 1: cluster = pMucCalibConst->getLayerClst( layer, prob );
break;
197 case 2: cluster = pMucCalibConst->getBoxClst( part, segment, layer, prob );
break;
198 case 3: cluster = 0.0;
break;
208 double fUniformEff = 0.0;
209 MsgStream log(
msgSvc(), name() );
211 std::string fullPath =
"/Calib/MucCal";
212 SmartDataPtr<CalibData::MucCalibData> pMucCalibConst( m_pCalibDataSvc, fullPath );
213 if ( !pMucCalibConst )
214 { log << MSG::ERROR <<
"can not access to MucCalibData via SmartPtr" << endmsg; }
215 else { fUniformEff = pMucCalibConst->getUniformEff(); }
221 double fUniformCnt = 0.0;
222 MsgStream log(
msgSvc(), name() );
224 std::string fullPath =
"/Calib/MucCal";
225 SmartDataPtr<CalibData::MucCalibData> pMucCalibConst( m_pCalibDataSvc, fullPath );
226 if ( !pMucCalibConst )
227 { log << MSG::ERROR <<
"can not access to MucCalibData via SmartPtr" << endmsg; }
228 else { fUniformCnt = pMucCalibConst->getUniformCnt(); }
234 double fUniformNosRatio = 0.0;
235 MsgStream log(
msgSvc(), name() );
237 std::string fullPath =
"/Calib/MucCal";
238 SmartDataPtr<CalibData::MucCalibData> pMucCalibConst( m_pCalibDataSvc, fullPath );
239 if ( !pMucCalibConst )
240 { log << MSG::ERROR <<
"can not access to MucCalibData via SmartPtr" << endmsg; }
241 else { fUniformNosRatio = pMucCalibConst->getUniformNosRatio(); }
243 return fUniformNosRatio;
247 double fUniformNos = 0.0;
248 MsgStream log(
msgSvc(), name() );
250 std::string fullPath =
"/Calib/MucCal";
251 SmartDataPtr<CalibData::MucCalibData> pMucCalibConst( m_pCalibDataSvc, fullPath );
252 if ( !pMucCalibConst )
253 { log << MSG::ERROR <<
"can not access to MucCalibData via SmartPtr" << endmsg; }
254 else { fUniformNos = pMucCalibConst->getUniformNos(); }
260 double fUniformClst = 0.0;
261 MsgStream log(
msgSvc(), name() );
263 std::string fullPath =
"/Calib/MucCal";
264 SmartDataPtr<CalibData::MucCalibData> pMucCalibConst( m_pCalibDataSvc, fullPath );
265 if ( !pMucCalibConst )
266 { log << MSG::ERROR <<
"can not access to MucCalibData via SmartPtr" << endmsg; }
267 else { fUniformClst = pMucCalibConst->getUniformClst(); }
275 MsgStream log(
msgSvc(), name() );
277 std::string fullPath =
"/Calib/MucCal";
278 SmartDataPtr<CalibData::MucCalibData> pMucCalibConst( m_pCalibDataSvc, fullPath );
279 if ( !pMucCalibConst )
280 { log << MSG::ERROR <<
"can not access to MucCalibData via SmartPtr" << endmsg; }
281 else { fEff = pMucCalibConst->getLayerEff( layer ); }
289 MsgStream log(
msgSvc(), name() );
291 std::string fullPath =
"/Calib/MucCal";
292 SmartDataPtr<CalibData::MucCalibData> pMucCalibConst( m_pCalibDataSvc, fullPath );
293 if ( !pMucCalibConst )
294 { log << MSG::ERROR <<
"can not access to MucCalibData via SmartPtr" << endmsg; }
295 else { fCnt = pMucCalibConst->getLayerCnt( layer ); }
302 MsgStream log(
msgSvc(), name() );
304 std::string fullPath =
"/Calib/MucCal";
305 SmartDataPtr<CalibData::MucCalibData> pMucCalibConst( m_pCalibDataSvc, fullPath );
306 if ( !pMucCalibConst )
307 { log << MSG::ERROR <<
"can not access to MucCalibData via SmartPtr" << endmsg; }
308 else { fNos = pMucCalibConst->getLayerNos( layer ); }
314 double fNosRatio = 0.0;
315 MsgStream log(
msgSvc(), name() );
317 std::string fullPath =
"/Calib/MucCal";
318 SmartDataPtr<CalibData::MucCalibData> pMucCalibConst( m_pCalibDataSvc, fullPath );
319 if ( !pMucCalibConst )
320 { log << MSG::ERROR <<
"can not access to MucCalibData via SmartPtr" << endmsg; }
321 else { fNosRatio = pMucCalibConst->getLayerNosRatio( layer ); }
328 MsgStream log(
msgSvc(), name() );
330 std::string fullPath =
"/Calib/MucCal";
331 SmartDataPtr<CalibData::MucCalibData> pMucCalibConst( m_pCalibDataSvc, fullPath );
332 if ( !pMucCalibConst )
333 { log << MSG::ERROR <<
"can not access to MucCalibData via SmartPtr" << endmsg; }
334 else { fClst = pMucCalibConst->getLayerClst( layer, prob ); }
342 MsgStream log(
msgSvc(), name() );
344 std::string fullPath =
"/Calib/MucCal";
345 SmartDataPtr<CalibData::MucCalibData> pMucCalibConst( m_pCalibDataSvc, fullPath );
346 if ( !pMucCalibConst )
347 { log << MSG::ERROR <<
"can not access to MucCalibData via SmartPtr" << endmsg; }
348 else { fEff = pMucCalibConst->getBoxEff( part, segment, layer ); }
357 MsgStream log(
msgSvc(), name() );
359 std::string fullPath =
"/Calib/MucCal";
360 SmartDataPtr<CalibData::MucCalibData> pMucCalibConst( m_pCalibDataSvc, fullPath );
361 if ( !pMucCalibConst )
362 { log << MSG::ERROR <<
"can not access to MucCalibData via SmartPtr" << endmsg; }
363 else { fCnt = pMucCalibConst->getBoxCnt( part, segment, layer ); }
370 MsgStream log(
msgSvc(), name() );
372 std::string fullPath =
"/Calib/MucCal";
373 SmartDataPtr<CalibData::MucCalibData> pMucCalibConst( m_pCalibDataSvc, fullPath );
374 if ( !pMucCalibConst )
375 { log << MSG::ERROR <<
"can not access to MucCalibData via SmartPtr" << endmsg; }
376 else { fNos = pMucCalibConst->getBoxNos( part, segment, layer ); }
382 double fNosRatio = 0.0;
383 MsgStream log(
msgSvc(), name() );
385 std::string fullPath =
"/Calib/MucCal";
386 SmartDataPtr<CalibData::MucCalibData> pMucCalibConst( m_pCalibDataSvc, fullPath );
387 if ( !pMucCalibConst )
388 { log << MSG::ERROR <<
"can not access to MucCalibData via SmartPtr" << endmsg; }
389 else { fNosRatio = pMucCalibConst->getBoxNosRatio( part, segment, layer ); }
396 MsgStream log(
msgSvc(), name() );
398 std::string fullPath =
"/Calib/MucCal";
399 SmartDataPtr<CalibData::MucCalibData> pMucCalibConst( m_pCalibDataSvc, fullPath );
400 if ( !pMucCalibConst )
401 { log << MSG::ERROR <<
"can not access to MucCalibData via SmartPtr" << endmsg; }
402 else { fClst = pMucCalibConst->getBoxClst( part, segment, layer, prob ); }
411 MsgStream log(
msgSvc(), name() );
413 log << MSG::INFO <<
"in MucCalibConstSvc::getStripEff" << endmsg;
415 std::string fullPath =
"/Calib/MucCal";
416 SmartDataPtr<CalibData::MucCalibData> pMucCalibConst( m_pCalibDataSvc, fullPath );
418 if ( !pMucCalibConst )
419 { log << MSG::ERROR <<
"can not access to MucCalibData via SmartPtr" << endmsg; }
420 else { fEff = pMucCalibConst->getStripEff( part, segment, layer, strip ); }
430 MsgStream log(
msgSvc(), name() );
432 std::string fullPath =
"/Calib/MucCal";
433 SmartDataPtr<CalibData::MucCalibData> pMucCalibConst( m_pCalibDataSvc, fullPath );
434 if ( !pMucCalibConst )
435 { log << MSG::ERROR <<
"can not access to MucCalibData via SmartPtr" << endmsg; }
436 else { fCnt = pMucCalibConst->getStripCnt( part, segment, layer, strip ); }
444 MsgStream log(
msgSvc(), name() );
446 std::string fullPath =
"/Calib/MucCal";
447 SmartDataPtr<CalibData::MucCalibData> pMucCalibConst( m_pCalibDataSvc, fullPath );
448 if ( !pMucCalibConst )
449 { log << MSG::ERROR <<
"can not access to MucCalibData via SmartPtr" << endmsg; }
450 else { fNos = pMucCalibConst->getStripNos( part, segment, layer, strip ); }
457 double fNosRatio = 0.0;
458 MsgStream log(
msgSvc(), name() );
460 std::string fullPath =
"/Calib/MucCal";
461 SmartDataPtr<CalibData::MucCalibData> pMucCalibConst( m_pCalibDataSvc, fullPath );
462 if ( !pMucCalibConst )
463 { log << MSG::ERROR <<
"can not access to MucCalibData via SmartPtr" << endmsg; }
464 else { fNosRatio = pMucCalibConst->getStripNosRatio( part, segment, layer, strip ); }
DECLARE_COMPONENT(BesBdkRc)
double getBoxNos(int part, int segment, int layer) const
double getStripNosRatio(int part, int segment, int layer, int strip) const
double getClst(int part, int segment, int layer, double prob) const
double getUniformNos() const
double getBoxClst(int part, int segment, int layer, double prob) const
double getLayerNos(int layer) const
double getCnt(int part, int segment, int layer, int strip) const
double getStripCnt(int part, int segment, int layer, int strip) const
double getBoxEff(int part, int segment, int layer) const
double getEff(int part, int segment, int layer, int strip) const
double getUniformEff() const
virtual StatusCode finalize()
double getLayerEff(int layer) const
MucCalibConstSvc(const std::string &name, ISvcLocator *svcloc)
double getUniformClst() const
double getBoxCnt(int part, int segment, int layer) const
double getBoxNosRatio(int part, int segment, int layer) const
double getUniformCnt() const
double getStripNos(int part, int segment, int layer, int strip) const
double getNosRatio(int part, int segment, int layer, int strip) const
double getLayerNosRatio(int layer) const
double getLayerClst(int layer, double prob) const
double getUniformNosRatio() const
double getLayerCnt(int layer) const
virtual StatusCode initialize()
double getNos(int part, int segment, int layer, int strip) const
double getStripEff(int part, int segment, int layer, int strip) const