32#include "GaudiKernel/DataObject.h"
33#include "GaudiKernel/IDataProviderSvc.h"
34#include "GaudiKernel/ISvcLocator.h"
35#include "GaudiKernel/MsgStream.h"
36#include "GaudiKernel/PropertyMgr.h"
37#include "GaudiKernel/SmartDataPtr.h"
39#include "CLHEP/Vector/ThreeVector.h"
42using CLHEP::Hep3Vector;
45#include "GaudiKernel/MsgStream.h"
59 : Algorithm( name, pSvcLocator )
61 , m_inputFileDir(
"../InputData/" )
62 , m_fileDir(
"/home/besdata/public/liucx/Calib/" )
64 , m_hotIxtal( -999 ) {
67 declareProperty(
"fileExt", m_fileExt );
68 declareProperty(
"inputFileDir", m_inputFileDir );
69 declareProperty(
"fileDir", m_fileDir );
70 declareProperty(
"deadIxtal", m_deadIxtal );
71 declareProperty(
"hotIxtal", m_hotIxtal );
73 m_oldConstants =
new double[6240];
74 m_IxtalNumber =
new int[6240];
82 if ( 0 != m_oldConstants )
84 delete[] m_oldConstants;
87 if ( 0 != m_IxtalNumber )
89 delete[] m_IxtalNumber;
97 MsgStream log(
msgSvc(), name() );
98 log << MSG::INFO <<
"in initialize()" << endmsg;
102 scCalib = Gaudi::svcLocator()->service(
"EmcCalibConstSvc", m_emcCalibConstSvc );
103 if ( scCalib != StatusCode::SUCCESS )
104 { log << MSG::ERROR <<
"can not use EmcCalibConstSvc" << endmsg; }
107 std::cout <<
"Test EmcCalibConstSvc DigiCalibConst(0)= "
108 << m_emcCalibConstSvc->getDigiCalibConst( 0 ) << std::endl;
115 SetModLowHighChannel();
117 return StatusCode::SUCCESS;
123 MsgStream log(
msgSvc(), name() );
124 log << MSG::DEBUG <<
"in execute()" << endmsg;
126 return StatusCode::SUCCESS;
132 MsgStream log(
msgSvc(), name() );
134 log << MSG::INFO <<
"in endRun()" << endmsg;
136 return StatusCode::SUCCESS;
140void EmcCalibModLowHigh::initCalibConst() {
142 MsgStream log(
msgSvc(), name() );
148 if ( nConstEmc != 6240 ) cout <<
"number of calibconst=" << nConstEmc << endl;
150 for (
int i = 0; i < nConstEmc; i++ )
183void EmcCalibModLowHigh::SetModLowHighChannel() {
204 double DigiConst[6240];
205 int IxtalNumber[6240];
207 for (
int ind = 0; ind < Nxtals; ind++ )
210 DigiConst[ind] = m_oldConstants[ind];
213 IxtalNumber[ind] = m_IxtalNumber[ind];
258 if ( ind == 2884 ) DigiConst[ind] = m_oldConstants[ind] * 1.6923;
263 TFile fconst(
"EmcCalibConst_ModLowHigh.root",
"recreate" );
266 TTree* constr =
new TTree(
"DigiCalibConst",
"DigiCalibConst" );
267 constr->Branch(
"DigiCalibConst", DigiConst,
"DigiConst[6240]/D" );
268 constr->Branch(
"IxtalNumber", IxtalNumber,
"IxtalNumber[6240]/I" );
DECLARE_COMPONENT(BesBdkRc)
EmcCalibModLowHigh(const std::string &name, ISvcLocator *pSvcLocator)
virtual ~EmcCalibModLowHigh()
virtual int getDigiCalibConstNo() const =0
virtual double getDigiCalibConst(int No) const =0
virtual int getIxtalNumber(int No) const =0