22#include "CoolKernel/types.h"
23#include "CoolKernel/Record.h"
24#include "CoralBase/AttributeListSpecification.h"
27 ISvcLocator* pSvcLocator ) :
39 return StatusCode::SUCCESS;
44 return StatusCode::SUCCESS;
47StatusCode FCAL_HV_Energy_Rescale::stop()
49 const EventContext& ctx = Gaudi::Hive::currentContext();
59 const LArOnOffIdMapping*
cabling{*cablingHdl};
62 return StatusCode::FAILURE;
65 ATH_MSG_INFO(
"Working on hash range 0 to " << hashMax );
67 coral::AttributeListSpecification*
spec =
new coral::AttributeListSpecification();
68 spec->extend(
"CaloCondBlob16M",
"blob");
69 AthenaAttributeList* attrList=
new AthenaAttributeList(*spec);
70 coral::Blob&
blob=(*attrList)[
"CaloCondBlob16M"].data<coral::Blob>();
77 std::vector<std::vector<float> >
defVec;
79 flt->init(defVec,hashMax,1);
83 std::vector<float> setVec(1,1);
84 unsigned nFCAL=0, nSmall=0, nSet=0;
85 for(
unsigned h=0;
h<hashMax;++
h) {
89 Identifier
id=calocell_id->
cell_id(h);
90 HWIdentifier hwid=
cabling->createSignalChannelID(
id);
91 const float corr=scaleCorr->HVScaleCorr(hwid);
93 if (std::fabs(1.0-corr)>0.01) {
99 ATH_MSG_INFO(
"FCAL module " << calocell_id->
sampling(
id) <<
" corr=" << corr <<
" =>" << value );
103 flt->setData(h,0,setVec);
106 ATH_MSG_INFO(
"Found " << nFCAL <<
" FCAL channels of which " << nSet <<
" have a correction. (" << nSmall <<
" below threshold)" );
108 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:
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 initialize() override
virtual StatusCode execute() override
SG::ReadCondHandleKey< ILArHVScaleCorr > m_scaleCorrKey
Gaudi::Property< std::string > m_folder
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.