|
ATLAS Offline Software
|
#include <LArHVCondAlg.h>
|
virtual | ~LArHVCondAlg ()=default |
|
virtual StatusCode | initialize () override |
|
StatusCode | execute () override |
|
| AthAlgorithm (const std::string &name, ISvcLocator *pSvcLocator) |
| Constructor with parameters: More...
|
|
virtual StatusCode | sysInitialize () override |
| Override sysInitialize. More...
|
|
virtual const DataObjIDColl & | extraOutputDeps () const override |
| Return the list of extra output dependencies. More...
|
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
|
StatusCode | makeHVScaleCorr (const EventContext &ctx, voltagePerLine_t &voltagePerLine) const |
|
StatusCode | makeAffectedRegionInfo (const EventContext &ctx, voltagePerLine_t &voltagePerLine) const |
|
StatusCode | getVoltagePerLine (const EventContext &ctx, voltagePerLine_t &voltagePerLine, const addDepFcn_t &addDep) const |
|
void | addHV (voltageCell_t &v, float hv, float weight) const |
| Add voltage/weight for a sub-gap of a cell. More...
|
|
StatusCode | dcs2LineVoltage (voltagePerLine_t &result, const std::vector< const CondAttrListCollection * > &fldvec) const |
| Read HV from DCS, store them in internal data structure per HV-line (Step 1) More...
|
|
StatusCode | fillPathAndCellHV (const CaloDetDescrManager *calodetdescrmgr, voltagePerCell_t &hvdata, const LArHVIdMapping *hvCabling, const voltagePerLine_t &voltage, const LArHVPathology &pathologies, pathVec &hasPathologyEM, pathVec &hasPathologyHEC, pathVec &hasPathologyFCAL, const float *rValues) const |
| Read the voltage per HV line and store it in structure per readout-cell (resolve the many-HV-lines-to-many-cells mapping). Simulanitously fill the pathologies. More...
|
|
std::vector< unsigned int > | getElecList (const Identifier &id, const LArHVPathology &pathologies) const |
|
void | extendPhiRegion (float phi, float &phi_min, float &phi_max) const |
|
StatusCode | updateMethod (const EventContext &ctx, CaloAffectedRegionInfoVec *vAffected, const LArBadFebCont *bfCont, const LArOnOffIdMapping *cabling) const |
|
StatusCode | searchNonNominalHV_EMB (CaloAffectedRegionInfoVec *vAffected, const LArHVIdMapping *hvCabling, const voltagePerLine_t &voltage) const |
|
StatusCode | searchNonNominalHV_EMEC_OUTER (CaloAffectedRegionInfoVec *vAffected, const LArHVIdMapping *hvCabling, const voltagePerLine_t &voltage) const |
|
StatusCode | searchNonNominalHV_EMEC_INNER (CaloAffectedRegionInfoVec *vAffected, const LArHVIdMapping *hvCabling, const voltagePerLine_t &voltage) const |
|
StatusCode | searchNonNominalHV_HEC (CaloAffectedRegionInfoVec *vAffected, const LArHVIdMapping *hvCabling, const voltagePerLine_t &voltage) const |
|
StatusCode | searchNonNominalHV_FCAL (CaloAffectedRegionInfoVec *vAffected, const LArHVIdMapping *hvCabling, const voltagePerLine_t &voltage) const |
|
float | HV_nominal (const char *identification, const float eta) const |
|
std::vector< int > | returnProblem (const float eta, const float phi, const float delta_eta, const float delta_phi) |
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &) |
| specialization for handling Gaudi::Property<SG::VarHandleBase> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &) |
| specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
|
|
|
SG::ReadCondHandleKey< LArHVPathology > | m_pathologiesKey { this, "HVPathologies", "LArHVPathology", "Key for HV pathologies in Cond. store"} |
|
SG::ReadCondHandleKeyArray< CondAttrListCollection > | m_DCSFolderKeys |
|
SG::ReadCondHandleKey< LArBadFebCont > | m_BFKey {this, "MissingFEBKey", "LArBadFeb", "SG key for missing FEB object"} |
|
SG::ReadCondHandleKey< LArOnOffIdMapping > | m_cablingKey {this, "OnOffMap", "LArOnOffIdMap", "SG key for mapping object"} |
|
SG::ReadCondHandleKey< LArHVIdMapping > | m_hvMappingKey {this, "HVMappingKey", "LArHVIdMap", "Key for mapping object" } |
|
SG::ReadCondHandleKey< AthenaAttributeList > | m_hvRKey {this, "RvaluesKey", "/LAR/HVPathologiesOfl/Rvalues", "Cool folder with HV R values"} |
|
SG::ReadCondHandleKey< CaloDetDescrManager > | m_caloMgrKey {this,"CaloDetDescrManager", "CaloDetDescrManager"} |
|
SG::WriteCondHandleKey< CaloAffectedRegionInfoVec > | m_affectedKey {this, "OutputKey", "LArAffectedRegionInfo", "SG key for output"} |
|
SG::ReadCondHandleKey< ILArHVScaleCorr > | m_onlineHVScaleCorrKey |
|
SG::WriteCondHandleKey< LArHVCorr > | m_outputHVScaleCorrKey {this, "keyOutputCorr", "LArHVScaleCorrRecomputed","Output key for LArHVScaleCorr"} |
|
Gaudi::Property< bool > | m_doHV {this,"doHV",true,"create HV Scale Correction"} |
|
Gaudi::Property< bool > | m_doRProp {this,"doR",true,"Use R values with current to improve HV"} |
|
Gaudi::Property< bool > | m_undoOnlineHVCorr {this,"UndoOnlineHVCorr",true,"Undo the HVCorr done online"} |
|
Gaudi::Property< bool > | m_useCurrentEMB {this,"UseCurrentsInHVEM",false,"Use currents in EMB as well"} |
|
Gaudi::Property< bool > | m_useCurrentFCAL1 {this,"UseCurrentsInHVFCAL1",false,"Use currents in FCAL1 as well"} |
|
Gaudi::Property< bool > | m_useCurrentOthers {this,"UseCurrentsInHVOthers", false, "Use currents in other partitions as well"} |
|
bool | m_doR = true |
|
Gaudi::Property< bool > | m_doAffected {this,"doAffected",true,"create affected region info"} |
|
Gaudi::Property< bool > | m_doAffectedHV {this,"doAffectedHV",true,"include HV non nominal regions info"} |
|
Gaudi::Property< std::vector< std::string > > | m_fixHVStrings {this,"fixHVCorr"} |
|
const CaloCell_ID * | m_calocellID =nullptr |
|
const LArEM_ID * | m_larem_id =nullptr |
|
const LArHEC_ID * | m_larhec_id =nullptr |
|
const LArFCAL_ID * | m_larfcal_id =nullptr |
|
const LArElectrodeID * | m_electrodeID =nullptr |
|
const LArHVLineID * | m_hvLineID =nullptr |
|
const LArOnlineID * | m_onlineID =nullptr |
|
std::unique_ptr< const LArHVScaleCorrTool > | m_scaleTool |
|
std::atomic< unsigned > | m_nPathologies {0} |
|
DataObjIDColl | m_extendedExtraObjects |
|
StoreGateSvc_t | m_evtStore |
| Pointer to StoreGate (event store by default) More...
|
|
StoreGateSvc_t | m_detStore |
| Pointer to StoreGate (detector store by default) More...
|
|
std::vector< SG::VarHandleKeyArray * > | m_vhka |
|
bool | m_varHandleArraysDeclared |
|
Definition at line 54 of file LArHVCondAlg.h.
◆ addDepFcn_t
◆ HV_t
◆ pathVec
Internal structure for HV pathologies.
Definition at line 137 of file LArHVCondAlg.h.
◆ StoreGateSvc_t
◆ voltageCell_t
◆ voltagePerCell_t
◆ voltagePerLine_t
◆ ~LArHVCondAlg()
virtual LArHVCondAlg::~LArHVCondAlg |
( |
| ) |
|
|
virtualdefault |
◆ addHV()
void LArHVCondAlg::addHV |
( |
voltageCell_t & |
v, |
|
|
float |
hv, |
|
|
float |
weight |
|
) |
| const |
|
private |
Add voltage/weight for a sub-gap of a cell.
Definition at line 723 of file LArHVCondAlg.cxx.
725 for (
unsigned int i=0;
i<
v.size();
i++) {
726 if (std::fabs(hv-
v[
i].hv) <0.1) {
733 v.emplace_back(hv,wt);
◆ AthAlgorithm()
AthAlgorithm::AthAlgorithm |
Constructor with parameters:
Definition at line 51 of file AthAlgorithm.cxx.
32 std::make_unique<AthenaBaseComps::AthAlgorithmDHUpdate>
34 std::move (m_updateDataHandles));
◆ dcs2LineVoltage()
Read HV from DCS, store them in internal data structure per HV-line (Step 1)
Definition at line 754 of file LArHVCondAlg.cxx.
760 for(
const auto *attrlist : fldvec) {
764 for(;citr!=citr_e;++citr) {
765 const unsigned chan=citr->first;
767 const coral::Attribute& attr=((citr)->
second)[
"R_VMEAS"];
769 if (!attr.isNull()) voltage=attr.data<
float>();
770 const coral::Attribute& attrc=((citr)->
second)[
"R_IMEAS"];
772 if (!attrc.isNull())
current=attrc.data<
float>();
780 return StatusCode::SUCCESS;
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
338 return PBASE::declareProperty(
name, property,
doc);
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode LArHVCondAlg::execute |
( |
| ) |
|
|
override |
Definition at line 89 of file LArHVCondAlg.cxx.
92 const EventContext& ctx = Gaudi::Hive::currentContext();
102 return StatusCode::SUCCESS;
◆ extendPhiRegion()
void LArHVCondAlg::extendPhiRegion |
( |
float |
phi, |
|
|
float & |
phi_min, |
|
|
float & |
phi_max |
|
) |
| const |
|
private |
Definition at line 1516 of file LArHVCondAlg.cxx.
1518 static const float epsilon=1
e-4;
1522 if (phi_min>10. || phi_max<-10.) {
1528 bool isInRegion=
false;
1529 if (phi_min<phi_max) {
1530 if (
phi>phi_min &&
phi<phi_max) isInRegion=
true;
1533 if (
phi>phi_min ||
phi<phi_max) isInRegion=
true;
1535 if (isInRegion)
return;
1539 if (fabs(dphi1)<fabs(dphi2) )
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ extraOutputDeps()
const DataObjIDColl & AthAlgorithm::extraOutputDeps |
( |
| ) |
const |
|
overridevirtualinherited |
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 50 of file AthAlgorithm.cxx.
57 return Algorithm::extraOutputDeps();
◆ fillPathAndCellHV()
Read the voltage per HV line and store it in structure per readout-cell (resolve the many-HV-lines-to-many-cells mapping). Simulanitously fill the pathologies.
Definition at line 360 of file LArHVCondAlg.cxx.
371 std::vector<unsigned int> listElec;
373 const float uAkOhm = 1.e-3;
382 bool hasPathology=
false;
383 if (
index<hasPathologyEM.size()) {
390 if (!embElement) std::abort();
392 unsigned int nelec =
cell->getNumElectrodes();
393 unsigned int ngap = 2*nelec;
395 for (
unsigned int i=0;
i<nelec;
i++) {
399 for (
unsigned int igap=0;igap<2;igap++) {
403 auto hvIt=voltage.find(
hvline);
404 if(hvIt != voltage.end()) {
407 curr=hvIt->second.curr;
416 if(curr > 0.) curr *= uAkOhm * rValues[ridx];
else curr = 0.;
417 ATH_MSG_VERBOSE(
"channel. "<<std::hex<<
id.get_identifier32()<<std::dec <<
" hvline: "<<
hvline<<
" curr. " << curr <<
" R: "<<rValues[ridx]);
422 for (
unsigned int ii=0;ii<listElec.size();ii++) {
423 if (listElec[ii]==(2*
i+igap) && listElec[ii]<hasPathologyEM[
index].
size() && hasPathologyEM[
index][listElec[ii]]) {
448 if (!embElement) std::abort();
453 for (
unsigned int igap=0;igap<2;igap++) {
457 auto hvIt=voltage.find(
hvline);
458 if(hvIt != voltage.end()) {
461 curr=hvIt->second.curr;
470 if(curr > 0.) curr *= uAkOhm * rValues[ridx];
else curr = 0;
471 ATH_MSG_VERBOSE(
"channel. "<<std::hex<<
id.get_identifier32()<<std::dec <<
" hvline: "<<
hvline<<
" curr. " << curr <<
" R: "<<rValues[ridx]);
481 bool hasPathology=
false;
482 if (
index<hasPathologyEM.size()) {
490 if (!emecElement) std::abort();
492 unsigned int nelec =
cell->getNumElectrodes();
493 unsigned int ngap = 2*nelec;
495 for (
unsigned int i=0;
i<nelec;
i++) {
497 for (
unsigned int igap=0;igap<2;igap++) {
501 auto hvIt=voltage.find(
hvline);
502 if(hvIt != voltage.end()) {
505 curr=hvIt->second.curr;
514 if(curr > 0.) curr *= uAkOhm * rValues[ridx];
else curr = 0.;
515 ATH_MSG_VERBOSE(
"channel. "<<std::hex<<
id.get_identifier32()<<std::dec <<
" hvline: "<<
hvline<<
" curr. " << curr <<
" R: "<<rValues[ridx]);
519 for (
unsigned int ii=0;ii<listElec.size();ii++) {
520 if (listElec[ii]==(2*
i+igap) && listElec[ii]<hasPathologyEM[
index].
size() && hasPathologyEM[
index][listElec[ii]]) {
527 hv=((hasPathologyEM[
index][listElec[ii]]&0xFFF0)>>4);
544 if (!emecElement) std::abort();
549 for (
unsigned int igap=0;igap<2;igap++) {
553 auto hvIt=voltage.find(
hvline);
554 if(hvIt != voltage.end()) {
557 curr=hvIt->second.curr;
566 if(curr >0.) curr *= uAkOhm * rValues[ridx];
else curr=0.;
567 ATH_MSG_VERBOSE(
"channel. "<<std::hex<<
id.get_identifier32()<<std::dec <<
" hvline: "<<
hvline<<
" curr. " << curr <<
" R: "<<rValues[ridx]);
577 ATH_MSG_ERROR(
"This could not be, what happened with EM identifiers ?");
578 return StatusCode::FAILURE;
587 bool hasPathology=
false;
588 if (
index<hasPathologyHEC.size()) {
595 if (!hecElement) std::abort();
597 unsigned int nsubgaps =
cell->getNumSubgaps();
598 float wt = 1./nsubgaps;
600 for (
unsigned int i=0;
i<nsubgaps;
i++) {
605 auto hvIt=voltage.find(
hvline);
606 if(hvIt != voltage.end()) {
609 curr=hvIt->second.curr;
619 if(curr > 0.) curr *= uAkOhm * rValues[ridx];
else curr = 0.;
620 ATH_MSG_VERBOSE(
"channel. "<<std::hex<<
id.get_identifier32()<<std::dec <<
" hvline: "<<
hvline<<
" cur. " << curr <<
" R: "<<rValues[ridx]);
624 for (
unsigned int ii=0;ii<listElec.size();ii++) {
625 if (listElec[ii]==
i && listElec[ii]<hasPathologyHEC[
index].
size() && hasPathologyHEC[
index][listElec[ii]]) {
650 bool hasPathology=
false;
651 if (
index<hasPathologyFCAL.size()) {
659 if (!fcalElement) std::abort();
661 unsigned int nlines =
tile->getNumHVLines();
662 unsigned int nlines_found=0;
663 for (
unsigned int i=0;
i<nlines;
i++) {
665 if (
line) nlines_found++;
667 if (nlines_found>0) {
668 float wt = 1./nlines_found;
670 for (
unsigned int i=0;
i<nlines;
i++) {
673 unsigned int hvline =
line->hvLineNo(hvCabling);
676 auto hvIt=voltage.find(
hvline);
677 if(hvIt != voltage.end()) {
680 if(rValues && useCurrent) {
681 curr=hvIt->second.curr;
691 if(curr > 0.) curr *= uAkOhm * rValues[ridx];
else curr = 0.;
692 ATH_MSG_VERBOSE(
"channel. "<<std::hex<<
id.get_identifier32()<<std::dec <<
" hvline: "<<
hvline<<
" curr." << curr <<
" R: "<<rValues[ridx]);
696 for (
unsigned int ii=0;ii<listElec.size();ii++) {
697 if (listElec[ii]==
i && listElec[ii]<hasPathologyFCAL[
index].
size() && hasPathologyFCAL[
index][listElec[ii]]) {
704 hv=((hasPathologyFCAL[
index][listElec[ii]]&0xFFF0)>>4);
720 return StatusCode::SUCCESS;
◆ getElecList()
Definition at line 738 of file LArHVCondAlg.cxx.
740 std::vector<unsigned int> myList;
742 for(
unsigned i=0;
i<pathologyContainer.getPathology().
size(); ++
i) {
744 if (electPath.
cellID == (
unsigned int)(
id.get_identifier32().get_compact())) {
745 myList.push_back(electPath.
electInd);
◆ getVoltagePerLine()
Definition at line 330 of file LArHVCondAlg.cxx.
335 std::vector<const CondAttrListCollection*> attrvec;
342 attrvec.push_back(cattr);
343 const EventIDRange&
range = addDep (dcsHdl);
344 ATH_MSG_DEBUG(
"Range of " << dcsHdl.key() <<
" " << dcsHdl.getRange() <<
", intersection: " <<
range);
352 if (voltagePerLine.empty()) {
356 return StatusCode::SUCCESS;
◆ HV_nominal()
float LArHVCondAlg::HV_nominal |
( |
const char * |
identification, |
|
|
const float |
eta |
|
) |
| const |
|
private |
Definition at line 1473 of file LArHVCondAlg.cxx.
1475 if (strcmp(identification,
"EMBPS")==0)
1477 else if (strcmp(identification,
"EMECPS")==0)
1479 else if (strcmp(identification,
"EMB")==0)
1481 else if (strcmp(identification,
"EMEC")==0) {
1482 if ( fabs(myparameter)<1.5 )
1484 else if (fabs(myparameter)<1.6)
1486 else if (fabs(myparameter)<1.8 )
1488 else if ( fabs(myparameter) < 2.0 )
1490 else if ( fabs(myparameter) < 2.1 )
1492 else if ( fabs(myparameter) < 2.3 )
1494 else if ( fabs(myparameter) < 2.5 )
1496 else if ( fabs(myparameter) < 2.8 )
1500 else if (strcmp(identification,
"HEC")==0) {
1503 else if (strcmp(identification,
"FCAL")==0) {
1504 if (myparameter<0.5)
1506 else if (myparameter<1.5)
1508 else if (myparameter<2.5)
◆ initialize()
StatusCode LArHVCondAlg::initialize |
( |
| ) |
|
|
overridevirtual |
Definition at line 46 of file LArHVCondAlg.cxx.
60 ATH_MSG_INFO(
"Will use currents to correct voltage-drop at HV-resistors");
63 ATH_MSG_INFO(
"Will NOT correct voltage-drop at HV-resistors");
85 return StatusCode::SUCCESS;
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ makeAffectedRegionInfo()
StatusCode LArHVCondAlg::makeAffectedRegionInfo |
( |
const EventContext & |
ctx, |
|
|
voltagePerLine_t & |
voltagePerLine |
|
) |
| const |
|
private |
Definition at line 283 of file LArHVCondAlg.cxx.
287 if (writeAffectedHandle.isValid()) {
288 ATH_MSG_DEBUG(
"Found valid write LArAffectedRegions handle");
289 return StatusCode::SUCCESS;
294 ATH_MSG_DEBUG(
"Range of cabling" << larCablingHdl.getRange() <<
", intersection: " << writeAffectedHandle.getRange());
295 writeAffectedHandle.addDependency(larCablingHdl);
299 writeAffectedHandle.addDependency(readBFHandle);
300 ATH_MSG_DEBUG(
"Range of BadFeb " << readBFHandle.getRange() <<
", intersection: " << writeAffectedHandle.getRange());
302 auto vAffected = std::make_unique<CaloAffectedRegionInfoVec>();
305 writeAffectedHandle.addDependency (
h);
306 return writeAffectedHandle.getRange();
312 writeAffectedHandle.addDependency(mappingHdl);
322 ATH_CHECK(writeAffectedHandle.record(std::move(vAffected)));
323 ATH_MSG_INFO(
"recorded new " << writeAffectedHandle.key() <<
" with range "
324 << writeAffectedHandle.getRange()<<
" into Conditions Store");
326 return StatusCode::SUCCESS;
◆ makeHVScaleCorr()
StatusCode LArHVCondAlg::makeHVScaleCorr |
( |
const EventContext & |
ctx, |
|
|
voltagePerLine_t & |
voltagePerLine |
|
) |
| const |
|
private |
Definition at line 105 of file LArHVCondAlg.cxx.
109 if (writeHandle.isValid()) {
111 return StatusCode::SUCCESS;
116 writeHandle.addDependency (fullRange);
120 ATH_MSG_DEBUG(
"Range of cabling" << larCablingHdl.getRange() <<
", intersection: " << writeHandle.getRange());
121 writeHandle.addDependency(larCablingHdl);
125 writeHandle.addDependency(caloMgrHandle);
130 onlHVCorr = *onlHVCorrHdl;
131 writeHandle.addDependency(onlHVCorrHdl);
132 ATH_MSG_DEBUG(
"Range of online HV correction " << onlHVCorrHdl.getRange() <<
", intersection: " << writeHandle.getRange());
137 writeHandle.addDependency(mappingHdl);
146 bool doPathology=
true;
149 if(!pathologyContainer) {
155 writeHandle.addDependency(pHdl);
156 ATH_MSG_DEBUG(
"Range of HV-Pathology " << pHdl.getRange() <<
", intersection: " << writeHandle.getRange());
157 const std::vector<LArHVPathologiesDb::LArHVElectPathologyDb> &pathCont = pathologyContainer->
getPathology();
158 const size_t nPathologies=pathCont.size();
160 ATH_MSG_INFO(
"Number of HV pathologies found " << nPathologies);
163 for(
unsigned i=0;
i<nPathologies; ++
i) {
168 unsigned int index = (
unsigned int)(idHash);
169 if (
index<hasPathologyEM.size()) {
175 std::vector<unsigned short> svec;
178 hasPathologyEM[
index]=svec;
184 unsigned int index = (
unsigned int)(idHash);
185 if (
index<hasPathologyHEC.size()) {
191 std::vector<unsigned short> svec;
194 hasPathologyHEC[
index]=svec;
200 unsigned int index = (
unsigned int)(idHash);
201 if (
index<hasPathologyFCAL.size()) {
203 if(hasPathologyFCAL[
index].
size()<
static_cast<size_t>(abs(electPath.
electInd+1)))
207 std::vector<unsigned short> svec;
210 hasPathologyFCAL[
index]=svec;
218 const float* rValues{
nullptr};
222 writeHandle.addDependency(readAttrHandle);
227 return StatusCode::FAILURE;
229 rValues =
static_cast<const float*
>(rBlob.startingAddress());
233 writeHandle.addDependency (
h);
234 return writeHandle.getRange();
240 pathologyContainer, hasPathologyEM, hasPathologyHEC, hasPathologyFCAL, rValues));
242 std::vector<float> vScale;
250 const float hvonline = onlHVCorr->HVScaleCorr(hwid);
251 if (hvonline>0. && hvonline<100.) vScale[
i]=vScale[
i]/hvonline;
254 if (vScale[
i]<0.01) {
259 if (vScale[
i] < 0.9) {
260 if (vScale[
i] < 0.4) {
262 <<
" = " << vScale[
i]);
265 <<
" = " << vScale[
i]);
272 if (writeHandle.record(std::move(hvCorr)).isFailure()) {
273 ATH_MSG_ERROR(
"Could not record LArHVCorr object with " << writeHandle.key()
274 <<
" with EventRange " << writeHandle.getRange() <<
" into Conditions Store");
275 return StatusCode::FAILURE;
277 ATH_MSG_INFO(
"recorded new " << writeHandle.key() <<
" with range " << writeHandle.getRange() <<
" into Conditions Store");
279 return StatusCode::SUCCESS;
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ renounce()
◆ renounceArray()
◆ returnProblem()
std::vector<int> LArHVCondAlg::returnProblem |
( |
const float |
eta, |
|
|
const float |
phi, |
|
|
const float |
delta_eta, |
|
|
const float |
delta_phi |
|
) |
| |
|
private |
◆ searchNonNominalHV_EMB()
Definition at line 784 of file LArHVCondAlg.cxx.
807 float phi_min=+30.,phi_max=-30.;
809 bool are_previous_HV_affected=
false;
810 bool are_previous_HV_dead=
false;
811 for (
unsigned int ielec=0;ielec<32;ielec++) {
814 double hv[2]={0.,0.};
815 for (
unsigned int iGap=0;iGap<2;iGap++) {
817 auto hvIt=voltage.find(
hvline);
818 if(hvIt == voltage.end()) {
822 hv[iGap]=hvIt->second.hv;
825 ATH_MSG_VERBOSE(
" electrode HV " << ielec <<
" " << electrode.
getPhi() <<
" "<< hv[0] <<
" " << hv[1] );
830 bool isAffected=
false;
835 if (are_previous_HV_dead && !isDead) {
836 are_previous_HV_dead=
false;
837 ATH_MSG_VERBOSE(
" -- end dead region " << eta_min <<
" " << eta_max <<
" " <<phi_min <<
" " << phi_max);
839 vAffected->push_back(current_CaloAffectedRegionInfo);
843 if (are_previous_HV_affected && !isAffected) {
844 are_previous_HV_affected=
false;
845 ATH_MSG_VERBOSE(
" -- end affected region " << eta_min <<
" " << eta_max <<
" " <<phi_min <<
" " << phi_max);
847 vAffected->push_back(current_CaloAffectedRegionInfo);
851 if (!are_previous_HV_dead) {
854 ATH_MSG_VERBOSE(
" -- start dead region " << eta_min <<
" " << eta_max <<
" " << phi_min <<
" " <<phi_max);
855 are_previous_HV_dead =
true;
864 if (!are_previous_HV_affected) {
867 ATH_MSG_VERBOSE(
" -- start affected region " << eta_min <<
" " << eta_max <<
" " << phi_min <<
" " <<phi_max);
868 are_previous_HV_affected =
true;
872 ATH_MSG_VERBOSE(
" extend affected region " << phi_min <<
" " << phi_max);
878 if (are_previous_HV_affected) {
879 ATH_MSG_VERBOSE(
" -- finish affected region after electrode loop " << eta_min <<
" " << eta_max <<
" " << phi_min <<
" " <<phi_max);
881 vAffected->push_back(current_CaloAffectedRegionInfo);
883 if (are_previous_HV_dead) {
884 ATH_MSG_VERBOSE(
" -- finish dead region after electrode loop " << eta_min <<
" " << eta_max <<
" " << phi_min <<
" " <<phi_max);
886 vAffected->push_back(current_CaloAffectedRegionInfo);
902 for (
int iGap=0;iGap<2;iGap++) {
904 auto hvIt=voltage.find(
hvline);
905 if(hvIt == voltage.end()) {
909 hv[iGap]=hvIt->second.hv;
915 ATH_MSG_VERBOSE(
" HV " << hv[0] <<
" " << hv[1] <<
" " <<
" etamin,etamax,phimin,phimax " << eta_min <<
" " << eta_max <<
" " << phi_min <<
" " << phi_max);
920 bool isAffected=
false;
926 vAffected->push_back(current_CaloAffectedRegionInfo);
930 vAffected->push_back(current_CaloAffectedRegionInfo);
937 return StatusCode::FAILURE;
939 return StatusCode::SUCCESS;
◆ searchNonNominalHV_EMEC_INNER()
Definition at line 1108 of file LArHVCondAlg.cxx.
1130 ATH_MSG_VERBOSE(
"iSide,iPhi,iSector,iEta " << iSide <<
" " <<
iPhi <<
" " << iSector <<
" "
1131 <<
iEta <<
" eta_min , eta_max " << eta_min <<
" " << eta_max);
1133 float phi_min=+30.,phi_max=-30.;
1135 bool are_previous_HV_affected=0;
1136 bool are_previous_HV_dead=0;
1141 for (
unsigned int iGap=0;iGap<2;iGap++) {
1143 auto hvIt=voltage.find(
hvline);
1144 if(hvIt == voltage.end()) {
1148 hv[iGap]=hvIt->second.hv;
1155 bool isAffected=
false;
1158 << hv[0] <<
" " << hv[1] <<
" " <<
" isDead, isAffected "
1159 << isDead <<
" " << isAffected);
1162 if (are_previous_HV_dead && !isDead) {
1163 are_previous_HV_dead=
false;
1164 ATH_MSG_VERBOSE(
" -- end dead region " << eta_min <<
" " << eta_max <<
" " <<phi_min <<
" " << phi_max);
1166 vAffected->push_back(current_CaloAffectedRegionInfo);
1170 if (are_previous_HV_affected && !isAffected) {
1171 are_previous_HV_affected=
false;
1172 ATH_MSG_VERBOSE(
" -- end affected region " << eta_min <<
" " << eta_max <<
" " <<phi_min <<
" " << phi_max);
1174 vAffected->push_back(current_CaloAffectedRegionInfo);
1178 if (!are_previous_HV_dead) {
1181 ATH_MSG_VERBOSE(
" -- start dead region " << phi_min <<
" " << phi_max);
1182 are_previous_HV_dead =
true;
1191 if (!are_previous_HV_affected) {
1194 are_previous_HV_affected =
true;
1195 ATH_MSG_VERBOSE(
" -- start affected region " << phi_min <<
" " << phi_max);
1199 ATH_MSG_VERBOSE(
" extend affected region " << phi_min <<
" " << phi_max);
1205 if (are_previous_HV_affected) {
1209 ATH_MSG_VERBOSE(
" - finish affected region after electrode loop " << eta_min <<
" "
1210 << eta_max <<
" " << phi_max <<
" " <<phi_max);
1212 vAffected->push_back(current_CaloAffectedRegionInfo);
1214 if (are_previous_HV_dead) {
1215 ATH_MSG_VERBOSE(
" - end dead region after electrode loop " << eta_min <<
" " << eta_max <<
" " << phi_max <<
" " <<phi_max);
1217 vAffected->push_back(current_CaloAffectedRegionInfo);
1225 return StatusCode::FAILURE;
1227 return StatusCode::SUCCESS;
◆ searchNonNominalHV_EMEC_OUTER()
Definition at line 942 of file LArHVCondAlg.cxx.
966 ATH_MSG_VERBOSE(
"iSide,iPhi,iSector,iEta " << iSide <<
" " <<
iPhi <<
" " << iSector <<
" "
967 <<
iEta <<
" eta_min , eta_max " << eta_min <<
" " << eta_max );
970 float phi_min=+30.,phi_max=-30.;
972 bool are_previous_HV_affected=
false;
973 bool are_previous_HV_dead=
false;
978 for (
unsigned int iGap=0;iGap<2;iGap++) {
980 auto hvIt=voltage.find(
hvline);
981 if(hvIt == voltage.end()) {
985 hv[iGap]=hvIt->second.hv;
992 bool isAffected=
false;
995 <<
" " << hv[1] <<
" " <<
" isDead/isAffected " << isDead <<
" " << isAffected );
998 if (are_previous_HV_dead && !isDead) {
999 are_previous_HV_dead=
false;
1000 ATH_MSG_VERBOSE(
" -- end dead region " << eta_min <<
" " << eta_max <<
" " <<phi_min <<
" " << phi_max);
1002 vAffected->push_back(current_CaloAffectedRegionInfo);
1006 if (are_previous_HV_affected && !isAffected) {
1007 are_previous_HV_affected=
false;
1008 ATH_MSG_VERBOSE(
" -- end affected region " << eta_min <<
" " << eta_max <<
" " <<phi_min <<
" " << phi_max);
1010 vAffected->push_back(current_CaloAffectedRegionInfo);
1014 if (!are_previous_HV_dead) {
1017 are_previous_HV_dead =
true;
1018 ATH_MSG_VERBOSE(
" -- start dead region " << eta_min <<
" " << eta_max <<
" " << phi_min <<
" " <<phi_max);
1022 ATH_MSG_VERBOSE(
" extend affected region " << phi_min <<
" " << phi_max);
1027 if (!are_previous_HV_affected) {
1030 are_previous_HV_affected =
true;
1031 ATH_MSG_VERBOSE(
" -- start affected region " << eta_min <<
" " << eta_max <<
" " << phi_min <<
" " <<phi_max);
1035 ATH_MSG_VERBOSE(
" extend affected region " << phi_min <<
" " << phi_max);
1041 if (are_previous_HV_affected) {
1045 ATH_MSG_VERBOSE(
" - finih affected region after electrode loop " << eta_min <<
" " << eta_max
1046 <<
" " << phi_max <<
" " <<phi_max);
1048 vAffected->push_back(current_CaloAffectedRegionInfo);
1050 if (are_previous_HV_dead) {
1051 ATH_MSG_VERBOSE(
" -- finish dead region after electrode loop " << eta_min <<
" " << eta_max <<
" " << phi_max <<
" " <<phi_max);
1053 vAffected->push_back(current_CaloAffectedRegionInfo);
1067 for (
int iGap=0;iGap<2;iGap++) {
1069 auto hvIt=voltage.find(
hvline);
1070 if(hvIt == voltage.end()) {
1074 hv[iGap]=hvIt->second.hv;
1080 ATH_MSG_VERBOSE(
"iSide,iPhi" << iSide <<
" " <<
iPhi <<
" HV " << hv[0] <<
" " << hv[1] <<
" "
1081 <<
" etamin,etamax,phimin,phimax " << eta_min <<
" " << eta_max <<
" "
1082 << phi_min <<
" " << phi_max);
1087 bool isAffected=
false;
1093 vAffected->push_back(current_CaloAffectedRegionInfo);
1097 vAffected->push_back(current_CaloAffectedRegionInfo);
1103 return StatusCode::FAILURE;
1105 return StatusCode::SUCCESS;
◆ searchNonNominalHV_FCAL()
Definition at line 1308 of file LArHVCondAlg.cxx.
1319 float eta_min=3.1,eta_max=4.9;
1325 float HVnominal =
HV_nominal(
"FCAL",(
float)(iSampling));
1329 ATH_MSG_VERBOSE(
" FCAL HVModule side,sampling,sector " << iSide <<
" " << iSampling <<
" "
1330 << iSector <<
" HV nominal " << HVnominal);
1335 float phi_min = ((
float)(iSector))*dphi;
1339 ATH_MSG_VERBOSE(
" eta_min,eta_max,phi_min,phi_max " << eta_min <<
" " << eta_max <<
" " << phi_min
1340 <<
" " << phi_max <<
" number of lines " << hvMod.
getNumHVLines());
1342 for (
unsigned int iLine=0;iLine<hvMod.
getNumHVLines();iLine++) {
1344 unsigned int ihvline =
hvline.hvLineNo(hvCabling);
1345 auto hvIt=voltage.find(ihvline);
1346 if(hvIt == voltage.end()) {
1347 ATH_MSG_WARNING(
"Do not have hvline: "<<ihvline<<
" in LArHVData ! Assuming missing DCS data");
1350 if (iLine<4) hv[iLine]=hvIt->second.hv;
1356 bool isAffected=
false;
1359 ATH_MSG_VERBOSE(
" HV values " << hv[0] <<
" " << hv[1] <<
" " << hv[2] <<
" " << hv[3] <<
" "
1360 <<
" isDead/isAffected " << isDead <<
" " << isAffected);
1366 vAffected->push_back(current_CaloAffectedRegionInfo);
1371 vAffected->push_back(current_CaloAffectedRegionInfo);
1378 return StatusCode::FAILURE;
1380 return StatusCode::SUCCESS;
◆ searchNonNominalHV_HEC()
Definition at line 1230 of file LArHVCondAlg.cxx.
1236 float etamax_layer[4]={3.3,3.1,3.1,3.3};
1237 float etamin_layer[4]={1.5,1.5,1.6,1.7};
1249 float eta_min,eta_max;
1251 eta_min = etamin_layer[iSampling];
1252 eta_max = etamax_layer[iSampling];
1254 eta_min = -1.*etamax_layer[iSampling];
1255 eta_max = -1.*etamin_layer[iSampling];
1262 for (
unsigned int iGap=0;iGap<hvMod.
getNumSubgaps();iGap++) {
1265 auto hvIt=voltage.find(
hvline);
1266 if(hvIt == voltage.end()) {
1270 if(iGap<4) hv[iGap]=hvIt->second.hv;
1277 bool isAffected=
false;
1280 ATH_MSG_VERBOSE(
" HV values " << hv[0] <<
" " << hv[1] <<
" " << hv[2] <<
" " << hv[3] <<
" "
1281 <<
" isDead/isAffected " << isDead <<
" " << isAffected);
1288 ATH_MSG_VERBOSE(
" new dead region " << eta_min <<
" " << eta_max <<
" " << phiMin <<
" " << phiMax <<
" layer " << 8+iSampling);
1290 vAffected->push_back(current_CaloAffectedRegionInfo);
1293 ATH_MSG_VERBOSE(
" new affected region " << eta_min <<
" " << eta_max <<
" " << phiMin <<
" " << phiMax <<
" layer " << 8+iSampling);
1295 vAffected->push_back(current_CaloAffectedRegionInfo);
1303 return StatusCode::FAILURE;
1305 return StatusCode::SUCCESS;
◆ sysInitialize()
StatusCode AthAlgorithm::sysInitialize |
( |
| ) |
|
|
overridevirtualinherited |
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateMethod()
Definition at line 1383 of file LArHVCondAlg.cxx.
1392 bool IsMissingFeb=(bfCont->
status(febId).deadAll() || bfCont->
status(febId).deadReadout());
1396 bool is_additive1=0;
1398 int layer_min=+30,layer_max=-30;
1399 float eta_min=+30,eta_max=-30;
1400 float phi_min=+30,phi_max=-30;
1402 int layer_min_additive1=+30,layer_max_additive1=-30;
1403 float eta_min_additive1=+30,eta_max_additive1=-30;
1404 float phi_min_additive1=+30,phi_max_additive1=-30;
1408 for (
int icha=0;icha<chans_per_feb;icha++) {
1416 float current_eta=caloddElement->
eta();
1417 float current_eta_low=caloddElement->
eta()-0.5*caloddElement->
deta();
1418 float current_eta_high=caloddElement->
eta()+0.5*caloddElement->
deta();
1419 float current_phi_low=caloddElement->
phi()-0.5*caloddElement->
dphi();
1420 float current_phi_high=caloddElement->
phi()+0.5*caloddElement->
dphi();
1422 if (caloddElement->
is_lar_em_barrel() && caloddElement->
getLayer()==3 && fabs(current_eta)>0.79 && fabs(current_eta)<1.33) {
1425 if (current_layer<layer_min_additive1)
1426 layer_min_additive1=current_layer;
1427 if (current_layer>layer_max_additive1)
1428 layer_max_additive1=current_layer;
1430 if (current_eta_low<eta_min_additive1)
1431 eta_min_additive1=current_eta_low;
1432 if (current_eta_high>eta_max_additive1)
1433 eta_max_additive1=current_eta_high;
1436 extendPhiRegion(current_phi_high,phi_min_additive1,phi_max_additive1);
1442 if (current_layer<layer_min)
1443 layer_min=current_layer;
1444 if (current_layer>layer_max)
1445 layer_max=current_layer;
1447 if (current_eta_low<eta_min)
1448 eta_min=current_eta_low;
1449 if (current_eta_high>eta_max)
1450 eta_max=current_eta_high;
1461 vAffected->push_back(current_CaloAffectedRegionInfo);
1466 vAffected->push_back(current_additive1_CaloAffectedRegionInfo);
1470 return StatusCode::SUCCESS;
◆ updateVHKA()
◆ m_affectedKey
◆ m_BFKey
◆ m_cablingKey
◆ m_calocellID
◆ m_caloMgrKey
◆ m_DCSFolderKeys
Initial value:{ this, "DCSFolderNames", {"/LAR/DCS/HV/BARREl/I16", "/LAR/DCS/HV/BARREL/I8"},
"DCS folders with HV values"}
Definition at line 71 of file LArHVCondAlg.h.
◆ m_detStore
◆ m_doAffected
Gaudi::Property<bool> LArHVCondAlg::m_doAffected {this,"doAffected",true,"create affected region info"} |
|
private |
◆ m_doAffectedHV
Gaudi::Property<bool> LArHVCondAlg::m_doAffectedHV {this,"doAffectedHV",true,"include HV non nominal regions info"} |
|
private |
◆ m_doHV
Gaudi::Property<bool> LArHVCondAlg::m_doHV {this,"doHV",true,"create HV Scale Correction"} |
|
private |
◆ m_doR
bool LArHVCondAlg::m_doR = true |
|
private |
◆ m_doRProp
Gaudi::Property<bool> LArHVCondAlg::m_doRProp {this,"doR",true,"Use R values with current to improve HV"} |
|
private |
◆ m_electrodeID
◆ m_evtStore
◆ m_extendedExtraObjects
DataObjIDColl AthAlgorithm::m_extendedExtraObjects |
|
privateinherited |
◆ m_fixHVStrings
Gaudi::Property<std::vector<std::string> > LArHVCondAlg::m_fixHVStrings {this,"fixHVCorr"} |
|
private |
◆ m_hvLineID
◆ m_hvMappingKey
◆ m_hvRKey
◆ m_larem_id
◆ m_larfcal_id
◆ m_larhec_id
◆ m_nPathologies
std::atomic<unsigned> LArHVCondAlg::m_nPathologies {0} |
|
mutableprivate |
◆ m_onlineHVScaleCorrKey
Initial value:{this, "keyOnlineHVCorr", "LArHVScaleCorr",
"Input key for HVScaleCorr from conditions database (used online)"}
Definition at line 83 of file LArHVCondAlg.h.
◆ m_onlineID
◆ m_outputHVScaleCorrKey
◆ m_pathologiesKey
◆ m_scaleTool
◆ m_undoOnlineHVCorr
Gaudi::Property<bool> LArHVCondAlg::m_undoOnlineHVCorr {this,"UndoOnlineHVCorr",true,"Undo the HVCorr done online"} |
|
private |
◆ m_useCurrentEMB
Gaudi::Property<bool> LArHVCondAlg::m_useCurrentEMB {this,"UseCurrentsInHVEM",false,"Use currents in EMB as well"} |
|
private |
◆ m_useCurrentFCAL1
Gaudi::Property<bool> LArHVCondAlg::m_useCurrentFCAL1 {this,"UseCurrentsInHVFCAL1",false,"Use currents in FCAL1 as well"} |
|
private |
◆ m_useCurrentOthers
Gaudi::Property<bool> LArHVCondAlg::m_useCurrentOthers {this,"UseCurrentsInHVOthers", false, "Use currents in other partitions as well"} |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
float deta() const
cell deta
def retrieve(aClass, aKey=None)
This class provides direct access to information on the HV electrodes within the EMEC....
Gaudi::Property< bool > m_doRProp
unsigned int beginEtaIndex() const
const LArHVLineID * m_hvLineID
StatusCode dcs2LineVoltage(voltagePerLine_t &result, const std::vector< const CondAttrListCollection * > &fldvec) const
Read HV from DCS, store them in internal data structure per HV-line (Step 1)
#define DEAD_HV_THRESHOLD
const_iterator end() const
static unsigned int endSideIndex()
SG::ReadCondHandleKey< AthenaAttributeList > m_hvRKey
Describes one HV Module within the HEC.
static unsigned int beginSideIndex()
SG::ReadCondHandleKey< LArHVPathology > m_pathologiesKey
GeoIntrusivePtr< const HECCell > HECCellConstLink
@Class: HECCellConstLink
const EMECHVModule & getHVModule(unsigned int iSide, unsigned int iEta, unsigned int iPhi, unsigned int iSector) const
SG::ReadCondHandleKey< ILArHVScaleCorr > m_onlineHVScaleCorrKey
LAr EMEC Detector Element.
std::unordered_map< unsigned, DCS_t > voltagePerLine_t
IdentifierHash calo_cell_hash(const Identifier cellId) const
create hash id from 'global' cell id
unsigned int getEtaIndex() const
static const unsigned short SetHVMask
Smart Pointer to EMEC Cells. This reference counted link allocates on demand. It audits the total poi...
const std::vector< LArHVPathologiesDb::LArHVElectPathologyDb > & getPathology() const
Scalar phi() const
phi method
static unsigned int beginSideIndex()
unsigned int getPhiIndex() const
unsigned int getSamplingIndex() const
const LArEM_ID * em_idHelper() const
access to EM idHelper
static unsigned int endSideIndex()
bool is_lar_fcal(Identifier id) const
unsigned int endPhiIndex() const
StatusCode searchNonNominalHV_EMEC_INNER(CaloAffectedRegionInfoVec *vAffected, const LArHVIdMapping *hvCabling, const voltagePerLine_t &voltage) const
static unsigned int beginPhiIndex()
size_type channel_hash_max() const
One more than the largest channel (cell) hash code.
StatusCode searchNonNominalHV_HEC(CaloAffectedRegionInfoVec *vAffected, const LArHVIdMapping *hvCabling, const voltagePerLine_t &voltage) const
static unsigned int beginSideIndex()
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
HWIdentifier ElectrodeId(int det, int side, int mod, int phi, int eta, int gap, int elec) const
Create an Electrode identifier from fields.
unsigned int getSideIndex() const
Conditions-Data class holding LAr Bad Channel or Bad Feb information.
const EMECHVElectrode & getElectrode(unsigned int iElectrode) const
This class groups all DetDescr information related to a CaloCell. Provides a generic interface for al...
Gaudi::Property< bool > m_doAffected
const CaloDetDescrElement * get_element(const Identifier &cellId) const
get element by its identifier
Gaudi::Property< bool > m_useCurrentEMB
static EventIDRange infiniteMixed()
Produces an mixed EventIDRange that is infinite in Time and RunLumi.
unsigned int endSectorIndex() const
unsigned int endEtaIndex() const
int getCellModule(const Identifier &offId) const
returns the Module of a given offId
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
StatusCode makeHVScaleCorr(const EventContext &ctx, voltagePerLine_t &voltagePerLine) const
std::vector< SG::VarHandleKeyArray * > m_vhka
IdentifierHash electrodeHash(HWIdentifier electrode_id) const
Create an electrode hash identifier from an electrode identifier.
int module(const Identifier id) const
module [1,3]
static const unsigned short MaskCurr
IdentifierHash channel_hash(Identifier channelId) const
Convert a connected channel (cell) Identifier to a hash code.
const_iterator begin() const
Access to Chan/AttributeList pairs via iterators.
int sampling(const Identifier id) const
return sampling according to :
void extendPhiRegion(float phi, float &phi_min, float &phi_max) const
unsigned int getSideIndex() const
unsigned int endPhiIndex() const
std::vector< std::vector< unsigned short > > pathVec
Internal structure for HV pathologies.
unsigned int endPhiIndex() const
static unsigned int beginSectorIndex()
const FCALHVModule & getHVModule(unsigned int iSide, unsigned int iSector, unsigned int iSampling) const
#define ATH_MSG_VERBOSE(x)
const FCALTile * getFCALTile() const
FCAL Tile description from LArReadoutGeometry.
EMECCellConstLink getEMECCell() const
EMEC Cell description from LArReadoutGeometry.
LAr EMB Detector Element.
This class is a collection of AttributeLists where each one is associated with a channel number....
unsigned int beginPhiIndex() const
LArBC_t status(const HWIdentifier channel) const
Query the status of a particular channel or FEB This is the main client access method.
const EMECPresamplerHVModule & getHVModule(unsigned int iSide, unsigned int iPhi) const
static unsigned int beginSideIndex()
unsigned int endEtaIndex() const
GeoIntrusivePtr< const EMBCell > EMBCellConstLink
const LArHEC_ID * hec_idHelper() const
access to HEC idHelper
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual void setOwner(IDataHandleHolder *o)=0
LAr HEC Detector Element.
Gaudi::Property< bool > m_useCurrentFCAL1
const EMBHVModule & getHVModule(unsigned int iSide, unsigned int iEta, unsigned int iPhi, unsigned int iSector) const
unsigned int beginEtaIndex() const
#define HV_NON_NOMINAL_TOLERANCE
StatusCode makeAffectedRegionInfo(const EventContext &ctx, voltagePerLine_t &voltagePerLine) const
std::vector< unsigned int > getElecList(const Identifier &id, const LArHVPathology &pathologies) const
This class provides direct access to information on the HV electrodes within the barrels....
unsigned int beginPhiIndex() const
static const unsigned short MaskHV
A tile of the forward calorimeter readout geometry.
unsigned int getSamplingIndex() const
int hvLineNo(int iGap, const LArHVIdMapping *hvIdMapping) const
IdentifierHash channel_hash(Identifier channelId) const
create hash id from channel id
const std::vector< Identifier > & channel_ids() const
provide acces to channel id vector, accessed via hash
SG::ReadCondHandleKeyArray< CondAttrListCollection > m_DCSFolderKeys
static unsigned int endSideIndex()
virtual StatusCode sysInitialize() override
Override sysInitialize.
float HV_nominal(const char *identification, const float eta) const
id_range feb_range() const
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
std::vector< voltageCell_t > voltagePerCell_t
static unsigned int getNumHVLines()
int channelInSlotMax(const HWIdentifier Id) const
Return the Maximum channel number of a given feb slot.
unsigned int getElectrodeIndex() const
const HECHVSubgap & getSubgap(unsigned int iElectrode) const
const LArElectrodeID * m_electrodeID
::StatusCode StatusCode
StatusCode definition for legacy code.
LAr FCAL Detector Element.
StatusCode searchNonNominalHV_EMB(CaloAffectedRegionInfoVec *vAffected, const LArHVIdMapping *hvCabling, const voltagePerLine_t &voltage) const
int hvLineNo(const LArHVIdMapping *hvIdMapping) const
static unsigned int endSamplingIndex()
Gaudi::Property< std::vector< std::string > > m_fixHVStrings
const CaloCell_ID * m_calocellID
HWIdentifier channel_Id(int barrel_ec, int pos_neg, int feedthrough, int slot, int channel) const
create channel identifier from fields
SG::ReadCondHandleKey< LArBadFebCont > m_BFKey
int hvLineNo(int iGap, const LArHVIdMapping *hvIdMapping) const
An AttributeList represents a logical row of attributes in a metadata table. The name and type of eac...
bool is_lar_hec(Identifier id) const
size_type electrodeHashMax(void) const
Define hash tables max size.
unsigned int getEtaIndex() const
Gaudi::Property< bool > m_doHV
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
const LArEM_ID * m_larem_id
const LArFCAL_ID * m_larfcal_id
IdentifierHash channel_hash(Identifier channelId) const
create hash id from channel id
StatusCode fillPathAndCellHV(const CaloDetDescrManager *calodetdescrmgr, voltagePerCell_t &hvdata, const LArHVIdMapping *hvCabling, const voltagePerLine_t &voltage, const LArHVPathology &pathologies, pathVec &hasPathologyEM, pathVec &hasPathologyHEC, pathVec &hasPathologyFCAL, const float *rValues) const
Read the voltage per HV line and store it in structure per readout-cell (resolve the many-HV-lines-to...
unsigned int getEtaIndex() const
unsigned int endEtaIndex() const
const HECHVModule & getModule() const
static double fix(double phi)
const LArHEC_ID * m_larhec_id
unsigned int getSideIndex() const
static unsigned int getNumSubgaps()
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
unsigned int getSubgapIndex() const
unsigned short pathologyType
StatusCode updateMethod(const EventContext &ctx, CaloAffectedRegionInfoVec *vAffected, const LArBadFebCont *bfCont, const LArOnOffIdMapping *cabling) const
std::string print_to_string(Identifier id, const IdContext *context=0) const
or provide the printout in string form
unsigned int beginPhiIndex() const
unsigned int getNumElectrodes() const
int hvLineNo(int iGap, const LArHVIdMapping *hvIdMapping) const
const EMBHVModule & getModule() const
StatusCode searchNonNominalHV_FCAL(CaloAffectedRegionInfoVec *vAffected, const LArHVIdMapping *hvCabling, const voltagePerLine_t &voltage) const
unsigned int getSideIndex() const
int barrel_ec(const Identifier id) const
return barrel_ec according to :
unsigned int getSectorIndex() const
StatusCode initialize(bool used=true)
This class provides direct access to information on the HV electrodes within the barrels....
static unsigned int endSideIndex()
std::atomic< unsigned > m_nPathologies
const EMECHVModule & getModule() const
EMBCellConstLink getEMBCell() const
EMB Cell description from LArReadoutGeometry.
unsigned int beginEtaIndex() const
Gaudi::Property< bool > m_undoOnlineHVCorr
const FCALHVLine & getHVLine(unsigned int iLine) const
const LArOnlineID * m_onlineID
static unsigned int beginSideIndex()
SG::WriteCondHandleKey< LArHVCorr > m_outputHVScaleCorrKey
unsigned int getSideIndex() const
SG::ReadCondHandleKey< CaloDetDescrManager > m_caloMgrKey
static unsigned int endSamplingIndex()
This class provides direct access to information on the HV electrodes within the barrels....
float dphi() const
cell dphi
static unsigned int beginSectorIndex(unsigned int iSampling)
DataObjIDColl m_extendedExtraObjects
bool is_lar_em_barrel() const
cell belongs to EM barrel
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
virtual int getLayer() const
cell layer
This class provides access to the High Voltage throughout the LAr. High voltage conditions can also b...
This class provides the client interface for accessing the detector description information common to...
Gaudi::Property< bool > m_useCurrentOthers
CaloCell_ID::CaloSample getSampling() const
cell sampling
Gaudi::Property< bool > m_doAffectedHV
#define ATH_MSG_WARNING(x)
ChanAttrListMap::const_iterator const_iterator
static unsigned int endPhiIndex()
unsigned int beginPhiIndex() const
std::unique_ptr< const LArHVScaleCorrTool > m_scaleTool
StatusCode searchNonNominalHV_EMEC_OUTER(CaloAffectedRegionInfoVec *vAffected, const LArHVIdMapping *hvCabling, const voltagePerLine_t &voltage) const
StatusCode getVoltagePerLine(const EventContext &ctx, voltagePerLine_t &voltagePerLine, const addDepFcn_t &addDep) const
unsigned int getPhiIndex() const
unsigned int getElectrodeIndex() const
static unsigned int endSectorIndex(unsigned int iSampling)
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Describes one HV Module within the EMEc Presampler.
const EMBHVElectrode & getElectrode(unsigned int iElectrode) const
Describes one HV Module within the FCAL.
float eta() const
cell eta
unsigned int beginSectorIndex() const
static unsigned int beginSideIndex()
float phi() const
cell phi
static unsigned int beginSamplingIndex()
static unsigned int endSectorIndex()
unsigned int endPhiIndex() const
HECCellConstLink getHECCell() const
HEC Cell description from LArReadoutGeometry.
This class provides direct access to information on the HV electrodes within the EMEC....
const std::vector< Identifier > & channel_ids() const
provide access to channel id vector, accessed via hash
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
Describes one HV Module within the EMB.
static unsigned int endSideIndex()
const std::vector< Identifier > & channel_ids() const
provide access to channel id vector, accessed via hash
std::string channel_name(const HWIdentifier id) const
Return a string corresponding to a feedthrough name given an identifier.
const EMBPresamplerHVModule & getHVModule(unsigned int iSide, unsigned int iEta, unsigned int iPhi) const
setScale setgFexType iEta
LArHVScaleCorrTool::voltageCell_t voltageCell_t
This class provides direct access to information on the HV electrodes within the barrels....
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
bool is_lar_em(Identifier id) const
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
int hvLineNo(int iGap, const LArHVIdMapping *hvIdMapping) const
const HECHVModule & getHVModule(unsigned int iSide, unsigned int iPhi, unsigned int iSampling) const
Describes one HV Module within the EMB Presampler.
const LArFCAL_ID * fcal_idHelper() const
access to FCAL idHelper
static unsigned int beginSamplingIndex()
static unsigned int endSideIndex()
unsigned int getSideIndex() const
SG::ReadCondHandleKey< LArHVIdMapping > m_hvMappingKey
SG::WriteCondHandleKey< CaloAffectedRegionInfoVec > m_affectedKey
static double diff(double phi1, double phi2)
simple phi1 - phi2 calculation, but result is fixed to respect range.
void addHV(voltageCell_t &v, float hv, float weight) const
Add voltage/weight for a sub-gap of a cell.
unsigned int getSectorIndex() const