22#include "CoolKernel/types.h"
23#include "CoolKernel/Record.h"
24#include "CoralBase/AttributeListSpecification.h"
27 ISvcLocator* pSvcLocator ) :
42 return StatusCode::SUCCESS;
47 return StatusCode::SUCCESS;
52 return StatusCode::SUCCESS;
55StatusCode FCAL_HV_Energy_Rescale::stop()
57 const EventContext& ctx = Gaudi::Hive::currentContext();
67 const LArOnOffIdMapping*
cabling{*cablingHdl};
70 return StatusCode::FAILURE;
73 ATH_MSG_INFO(
"Working on hash range 0 to " << hashMax );
75 coral::AttributeListSpecification*
spec =
new coral::AttributeListSpecification();
76 spec->extend(
"CaloCondBlob16M",
"blob");
77 AthenaAttributeList* attrList=
new AthenaAttributeList(*spec);
78 coral::Blob&
blob=(*attrList)[
"CaloCondBlob16M"].data<coral::Blob>();
85 std::vector<std::vector<float> >
defVec;
87 flt->init(defVec,hashMax,1);
91 std::vector<float> setVec(1,1);
92 unsigned nFCAL=0, nSmall=0, nSet=0;
93 for(
unsigned h=0;
h<hashMax;++
h) {
97 Identifier
id=calocell_id->
cell_id(h);
98 HWIdentifier hwid=
cabling->createSignalChannelID(
id);
99 const float corr=scaleCorr->HVScaleCorr(hwid);
101 if (std::fabs(1.0-corr)>0.01) {
107 ATH_MSG_INFO(
"FCAL module " << calocell_id->
sampling(
id) <<
" corr=" << corr <<
" =>" << value );
111 flt->setData(h,0,setVec);
114 ATH_MSG_INFO(
"Found " << nFCAL <<
" FCAL channels of which " << nSet <<
" have a correction. (" << nSmall <<
" below threshold)" );
116 return StatusCode::SUCCESS;
#define ATH_CHECK
Evaluate an expression and check for errors.
Helpers for checking error return status codes and reporting errors.
#define CHECK(...)
Evaluate an expression and check for errors.
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
const ServiceHandle< StoreGateSvc > & detStore() const
bool is_fcal(const Identifier id) const
test if the id belongs to the FCAL - true also for MiniFCAL
int sampling(const Identifier id) const
LAr field values (NOT_VALID == invalid request)
void calo_cell_hash_range(const Identifier id, IdentifierHash &caloCellMin, IdentifierHash &caloCellMax) const
to loop on 'global' cell hashes of one sub-calorimeter alone
Identifier cell_id(const int subCalo, const int barec_or_posneg, const int sampling_or_fcalmodule, const int region_or_dummy, const int eta, const int phi) const
Make a cell (== channel) ID from constituting fields and subCalo index; for (Mini)FCAL,...
Helper class for offline cell identifiers.
static CaloCondBlobFlt * getInstance(coral::Blob &blob)
Returns a pointer to a non-const CaloCondBlobFlt.
virtual StatusCode finalize()
virtual StatusCode initialize()
SG::ReadCondHandleKey< ILArHVScaleCorr > m_scaleCorrKey
virtual StatusCode execute()
virtual ~FCAL_HV_Energy_Rescale()
Destructor:
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
FCAL_HV_Energy_Rescale(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
This is a "hash" representation of an Identifier.