ATLAS Offline Software
Loading...
Searching...
No Matches
MdtCondJsonDumpAlg Class Reference

#include <MdtCondJsonDumpAlg.h>

Inheritance diagram for MdtCondJsonDumpAlg:
Collaboration diagram for MdtCondJsonDumpAlg:

Public Member Functions

 MdtCondJsonDumpAlg (const std::string &name, ISvcLocator *pSvcLocator)
virtual ~MdtCondJsonDumpAlg ()=default
virtual StatusCode initialize () override
virtual StatusCode execute () override
virtual unsigned int cardinality () const override final
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

void dumpDeadChannels (const std::set< Identifier > &channels, std::ostream &ostr, bool dumpMultiLayer=false, bool dumpLayer=false, bool dumpTube=false) const
 Dumps all channels into a JSON format.
void dumpIdentifier (const Identifier &id, std::ostream &ostr, bool dumpMultiLayer, bool dumpLayer, bool dumpTube, bool trailingComma) const
 Dumps the Identifier into a json format.
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

ServiceHandle< Muon::IMuonIdHelperSvcm_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
SG::ReadCondHandleKey< MdtCondDbDatam_readKey {this, "ReadKey", "MdtCondDbData", "Key of MdtCondDbData"}
Gaudi::Property< std::string > m_deadChannelJSON {this, "DeadChannelJSON", "DeadChannels.json", "Json file to dump all dead channels"}
Gaudi::Property< std::string > m_dcsJSON {this, "DcsVoltJSON", "DcsVoltage.json", "Dump all DCS values into a JSON"}
DataObjIDColl m_extendedExtraObjects
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Definition at line 18 of file MdtCondJsonDumpAlg.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ MdtCondJsonDumpAlg()

MdtCondJsonDumpAlg::MdtCondJsonDumpAlg ( const std::string & name,
ISvcLocator * pSvcLocator )

Definition at line 12 of file MdtCondJsonDumpAlg.cxx.

12 :
13 AthAlgorithm{name, pSvcLocator} {}
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:

◆ ~MdtCondJsonDumpAlg()

virtual MdtCondJsonDumpAlg::~MdtCondJsonDumpAlg ( )
virtualdefault

Member Function Documentation

◆ cardinality()

virtual unsigned int MdtCondJsonDumpAlg::cardinality ( ) const
inlinefinaloverridevirtual

Definition at line 24 of file MdtCondJsonDumpAlg.h.

24{return 1;}

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ dumpDeadChannels()

void MdtCondJsonDumpAlg::dumpDeadChannels ( const std::set< Identifier > & channels,
std::ostream & ostr,
bool dumpMultiLayer = false,
bool dumpLayer = false,
bool dumpTube = false ) const
private

Dumps all channels into a JSON format.

Definition at line 113 of file MdtCondJsonDumpAlg.cxx.

116 {
117 unsigned int processed{0};
118 ostr<<"["<<std::endl;
119 for (const Identifier& id : channels) {
120 ostr<<" {"<<std::endl;
121 dumpIdentifier(id, ostr, dumpMultiLayer, dumpLayer, dumpTube, false);
122 ostr<<" }";
123 ++processed;
124 if(processed != channels.size()) ostr<<",";
125 ostr<<std::endl;
126 }
127 ostr<<"]";
128}
void dumpIdentifier(const Identifier &id, std::ostream &ostr, bool dumpMultiLayer, bool dumpLayer, bool dumpTube, bool trailingComma) const
Dumps the Identifier into a json format.

◆ dumpIdentifier()

void MdtCondJsonDumpAlg::dumpIdentifier ( const Identifier & id,
std::ostream & ostr,
bool dumpMultiLayer,
bool dumpLayer,
bool dumpTube,
bool trailingComma ) const
private

Dumps the Identifier into a json format.

Definition at line 84 of file MdtCondJsonDumpAlg.cxx.

89 {
90 ostr<<" \"station\": \""<<m_idHelperSvc->stationNameString(id)<<"\","<<std::endl;
91 ostr<<" \"eta\": "<<m_idHelperSvc->stationEta(id)<<","<<std::endl;
92 ostr<<" \"phi\": "<<m_idHelperSvc->stationPhi(id);
93 if (!dumpMultiLayer) {
94 ostr<<(trailingComma ? "," : "")<<std::endl;
95 return;
96 }
97 ostr<<","<<std::endl;
98 const MdtIdHelper& idHelper{m_idHelperSvc->mdtIdHelper()};
99 ostr<<" \"ml\": "<<idHelper.multilayer(id);
100 if (!dumpLayer) {
101 ostr<<(trailingComma ? "," : "")<<std::endl;
102 return;
103 }
104 ostr<<","<<std::endl;
105 ostr<<" \"layer\": "<<idHelper.tubeLayer(id);
106 if (!dumpTube) {
107 ostr<<(trailingComma ? "," : "")<<std::endl;
108 return;
109 }
110 ostr<<" \"tube:\": \""<<idHelper.tube(id);
111 ostr<<(trailingComma ? "," : "")<<std::endl;
112}
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
int multilayer(const Identifier &id) const
Access to components of the ID.
int tube(const Identifier &id) const
int tubeLayer(const Identifier &id) const

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode MdtCondJsonDumpAlg::execute ( )
overridevirtual

Dump the dead channels

No HV data given

Definition at line 20 of file MdtCondJsonDumpAlg.cxx.

20 {
21 const EventContext& ctx{Gaudi::Hive::currentContext()};
22 SG::ReadCondHandle<MdtCondDbData> readCondHandle{m_readKey, ctx};
23 if (!readCondHandle.isValid()) {
24 ATH_MSG_FATAL("Failed to open chamber load conditions "<<m_readKey.fullKey());
25 return StatusCode::FAILURE;
26 }
28 {
29 std::ofstream deadChannels{m_deadChannelJSON};
30 if (!deadChannels.good()) {
31 ATH_MSG_ERROR("Failed to write "<<m_deadChannelJSON);
32 return StatusCode::FAILURE;
33 }
34 deadChannels<<"{"<<std::endl;
35 deadChannels<<" \"Chambers\": ";
36 dumpDeadChannels(readCondHandle->getDeadChambersId(), deadChannels);
37 deadChannels<<","<<std::endl;
38 deadChannels<<" \"MultiLayers\": ";
39 dumpDeadChannels(readCondHandle->getDeadMultilayersId(), deadChannels, true);
40 deadChannels<<","<<std::endl;
41 deadChannels<<" \"TubeLayers:\": ";
42 dumpDeadChannels(readCondHandle->getDeadLayersId(), deadChannels, true, true);
43 deadChannels<<","<<std::endl;
44 deadChannels<<" \"Tubes:\": ";
45 dumpDeadChannels(readCondHandle->getDeadTubesId(), deadChannels, true, true, true);
46 deadChannels<<std::endl<<"}"<<std::endl;
47 }
49 if (readCondHandle->getAllHvStates().empty() || m_dcsJSON.value().empty()){
50 return StatusCode::SUCCESS;
51 }
52 std::ofstream dcsStates{m_dcsJSON};
53 if (!dcsStates.good()) {
54 ATH_MSG_ERROR("Failed to write "<<m_dcsJSON);
55 return StatusCode::FAILURE;
56 }
57
58
59 dcsStates<<"["<<std::endl;
60
61
62 const MdtIdHelper& idHelper{m_idHelperSvc->mdtIdHelper()};
65
66 for (MuonIdHelper::const_id_iterator itr = begin; itr != end; ++itr) {
67 const Identifier& detElId{*itr};
68 const MuonCond::DcsConstants& dcs{readCondHandle->getHvState(detElId)};
69 dcsStates<<" {"<<std::endl;
70 dumpIdentifier(detElId, dcsStates, true, false, false, true);
71 dcsStates<<" \"state\": \""<<MuonCond::getFsmStateStrg(dcs.fsmState)<<"\","<<std::endl;
72 dcsStates<<" \"standByVolt\": "<<dcs.standbyVolt<<", "<<std::endl;
73 dcsStates<<" \"readyVolt\": "<<dcs.readyVolt<<std::endl;
74 dcsStates<<" }";
75 if ((itr +1 ) != end) dcsStates<<",";
76 dcsStates<<std::endl;
77 }
78 dcsStates<<"]"<<std::endl;
79
80
81 return StatusCode::SUCCESS;
82}
#define ATH_MSG_ERROR(x)
#define ATH_MSG_FATAL(x)
Gaudi::Property< std::string > m_dcsJSON
void dumpDeadChannels(const std::set< Identifier > &channels, std::ostream &ostr, bool dumpMultiLayer=false, bool dumpLayer=false, bool dumpTube=false) const
Dumps all channels into a JSON format.
SG::ReadCondHandleKey< MdtCondDbData > m_readKey
Gaudi::Property< std::string > m_deadChannelJSON
std::vector< Identifier >::const_iterator const_id_iterator
const_id_iterator detectorElement_begin() const
Iterators over full set of ids.
const_id_iterator detectorElement_end() const
std::string getFsmStateStrg(DcsFsmState fsmState)
Definition Defs.cxx:22

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

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.

51{
52 // If we didn't find any symlinks to add, just return the collection
53 // from the base class. Otherwise, return the extended collection.
54 if (!m_extendedExtraObjects.empty()) {
56 }
57 return Algorithm::extraOutputDeps();
58}
DataObjIDColl m_extendedExtraObjects

◆ initialize()

StatusCode MdtCondJsonDumpAlg::initialize ( )
overridevirtual

Definition at line 15 of file MdtCondJsonDumpAlg.cxx.

15 {
16 ATH_CHECK(m_idHelperSvc.retrieve());
17 ATH_CHECK(m_readKey.initialize());
18 return StatusCode::SUCCESS;
19}
#define ATH_CHECK
Evaluate an expression and check for errors.

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Algorithm > >::inputHandles ( ) const
overridevirtualinherited

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.

◆ msg()

MsgStream & AthCommonMsg< Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Algorithm >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Algorithm > >::outputHandles ( ) const
overridevirtualinherited

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()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ sysInitialize()

StatusCode AthAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthFilterAlgorithm, AthHistogramAlgorithm, and PyAthena::Alg.

Definition at line 66 of file AthAlgorithm.cxx.

66 {
68
69 if (sc.isFailure()) {
70 return sc;
71 }
72 ServiceHandle<ICondSvc> cs("CondSvc",name());
73 for (auto h : outputHandles()) {
74 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
75 // do this inside the loop so we don't create the CondSvc until needed
76 if ( cs.retrieve().isFailure() ) {
77 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
78 return StatusCode::SUCCESS;
79 }
80 if (cs->regHandle(this,*h).isFailure()) {
81 sc = StatusCode::FAILURE;
82 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
83 << " with CondSvc");
84 }
85 }
86 }
87 return sc;
88}
#define ATH_MSG_WARNING(x)
static Double_t sc
virtual StatusCode sysInitialize() override
Override sysInitialize.
AthCommonDataStore(const std::string &name, T... args)
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
::StatusCode StatusCode
StatusCode definition for legacy code.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_dcsJSON

Gaudi::Property<std::string> MdtCondJsonDumpAlg::m_dcsJSON {this, "DcsVoltJSON", "DcsVoltage.json", "Dump all DCS values into a JSON"}
private

Definition at line 47 of file MdtCondJsonDumpAlg.h.

47{this, "DcsVoltJSON", "DcsVoltage.json", "Dump all DCS values into a JSON"};

◆ m_deadChannelJSON

Gaudi::Property<std::string> MdtCondJsonDumpAlg::m_deadChannelJSON {this, "DeadChannelJSON", "DeadChannels.json", "Json file to dump all dead channels"}
private

Definition at line 46 of file MdtCondJsonDumpAlg.h.

46{this, "DeadChannelJSON", "DeadChannels.json", "Json file to dump all dead channels"};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 79 of file AthAlgorithm.h.

◆ m_idHelperSvc

ServiceHandle<Muon::IMuonIdHelperSvc> MdtCondJsonDumpAlg::m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
private

Definition at line 42 of file MdtCondJsonDumpAlg.h.

42{this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};

◆ m_readKey

SG::ReadCondHandleKey<MdtCondDbData> MdtCondJsonDumpAlg::m_readKey {this, "ReadKey", "MdtCondDbData", "Key of MdtCondDbData"}
private

Definition at line 44 of file MdtCondJsonDumpAlg.h.

44{this, "ReadKey", "MdtCondDbData", "Key of MdtCondDbData"};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files: