31#include "GaudiKernel/DataObject.h"
32#include "GaudiKernel/IDataProviderSvc.h"
33#include "GaudiKernel/ISvcLocator.h"
34#include "GaudiKernel/MsgStream.h"
35#include "GaudiKernel/PropertyMgr.h"
36#include "GaudiKernel/SmartDataPtr.h"
38#include "CLHEP/Vector/ThreeVector.h"
41using CLHEP::Hep3Vector;
44#include "GaudiKernel/MsgStream.h"
57 : Algorithm( name, pSvcLocator )
59 , m_fileDir(
"/home/besdata/public/liucx/Calib/" )
61 , m_hotIxtal( -999 ) {
64 declareProperty(
"fileExt", m_fileExt );
65 declareProperty(
"fileDir", m_fileDir );
66 declareProperty(
"deadIxtal", m_deadIxtal );
67 declareProperty(
"hotIxtal", m_hotIxtal );
69 m_oldConstants =
new double[6240];
70 m_IxtalNumber =
new int[6240];
78 if ( 0 != m_oldConstants )
80 delete[] m_oldConstants;
83 if ( 0 != m_IxtalNumber )
85 delete[] m_IxtalNumber;
93 MsgStream log(
msgSvc(), name() );
94 log << MSG::INFO <<
"in initialize()" << endmsg;
98 scCalib = Gaudi::svcLocator()->service(
"EmcCalibConstSvc", m_emcCalibConstSvc );
99 if ( scCalib != StatusCode::SUCCESS )
100 { log << MSG::ERROR <<
"can not use EmcCalibConstSvc" << endmsg; }
103 std::cout <<
"Test EmcCalibConstSvc DigiCalibConst(0)= "
104 << m_emcCalibConstSvc->getDigiCalibConst( 0 ) << std::endl;
111 SetDeadOrHotChannel();
113 return StatusCode::SUCCESS;
119 MsgStream log(
msgSvc(), name() );
120 log << MSG::DEBUG <<
"in execute()" << endmsg;
122 return StatusCode::SUCCESS;
128 MsgStream log(
msgSvc(), name() );
130 log << MSG::INFO <<
"in endRun()" << endmsg;
132 return StatusCode::SUCCESS;
136void EmcCalibTagDeadOrHot::initCalibConst() {
138 MsgStream log(
msgSvc(), name() );
144 if ( nConstEmc != 6240 ) cout <<
"number of calibconst=" << nConstEmc << endl;
146 for (
int i = 0; i < nConstEmc; i++ )
179void EmcCalibTagDeadOrHot::SetDeadOrHotChannel() {
183 double DigiConst[6240];
184 int IxtalNumber[6240];
186 for (
int ind = 0; ind < Nxtals; ind++ )
189 DigiConst[ind] = m_oldConstants[ind];
190 IxtalNumber[ind] = m_IxtalNumber[ind];
191 if ( ind == m_deadIxtal ) IxtalNumber[ind] = -9;
192 if ( ind == m_hotIxtal ) IxtalNumber[ind] = -99;
196 TFile fconst(
"EmcCalibConst_DeadOrHot.root",
"recreate" );
199 TTree* constr =
new TTree(
"DigiCalibConst",
"DigiCalibConst" );
200 constr->Branch(
"DigiCalibConst", DigiConst,
"DigiConst[6240]/D" );
201 constr->Branch(
"IxtalNumber", IxtalNumber,
"IxtalNumber[6240]/I" );
DECLARE_COMPONENT(BesBdkRc)
virtual ~EmcCalibTagDeadOrHot()
EmcCalibTagDeadOrHot(const std::string &name, ISvcLocator *pSvcLocator)
virtual int getDigiCalibConstNo() const =0
virtual double getDigiCalibConst(int No) const =0
virtual int getIxtalNumber(int No) const =0