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

Algorithm for writing LAr alignment constants to Cond DB and reading them back. More...

#include <LArAlignDbAlg.h>

Inheritance diagram for LArAlignDbAlg:
Collaboration diagram for LArAlignDbAlg:

Public Member Functions

 LArAlignDbAlg (const std::string &name, ISvcLocator *pSvcLocator)
 ~LArAlignDbAlg ()
virtual StatusCode initialize () override
virtual StatusCode execute (const EventContext &ctx) override
 Execute method.
virtual StatusCode finalize () override
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
bool filterPassed (const EventContext &ctx) const
void setFilterPassed (bool state, const EventContext &ctx) const
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
const EventContext & getContext () const
 Deprecated methods (use the ones with EventContext).
bool filterPassed () const
void setFilterPassed (bool state) const

Protected Member Functions

virtual bool isReEntrant () const override final
 Legacy algorithms are not thread-safe.
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

StatusCode createCondObjects ()
StatusCode printCondObjects ()
StatusCode streamOutCondObjects ()
StatusCode registerCondObjects ()
StatusCode registerIOV (const CLID &clid)
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

BooleanProperty m_writeCondObjs {this, "WriteCondObjs", false}
BooleanProperty m_regIOV {this, "RegisterIOV", false}
StringProperty m_streamName {this, "StreamName", "CondStream1"}
StringProperty m_inpFile {this, "InpFile", "LArAlign.inp"}
StringProperty m_outpFile {this, "OutpFile", "LArAlign-TEST.pool.root"}
StringProperty m_outpTag {this, "TagName", "LARAlign-TEST"}
ServiceHandle< IIOVRegistrationSvcm_regSvc
ToolHandle< IAthenaOutputStreamToolm_streamer
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

Algorithm for writing LAr alignment constants to Cond DB and reading them back.

Definition at line 20 of file LArAlignDbAlg.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ LArAlignDbAlg()

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

Definition at line 18 of file LArAlignDbAlg.cxx.

18 :
19 AthAlgorithm(name, pSvcLocator),
20 m_regSvc("IOVRegistrationSvc",name),
21 m_streamer("AthenaOutputStreamTool")
22{
23}
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
ServiceHandle< IIOVRegistrationSvc > m_regSvc
ToolHandle< IAthenaOutputStreamTool > m_streamer

◆ ~LArAlignDbAlg()

LArAlignDbAlg::~LArAlignDbAlg ( )

Definition at line 26 of file LArAlignDbAlg.cxx.

27{
28}

Member Function Documentation

◆ createCondObjects()

StatusCode LArAlignDbAlg::createCondObjects ( )
private

Definition at line 94 of file LArAlignDbAlg.cxx.

95{
96 ATH_MSG_INFO(" in createCondObjects() " );
97
99 ATH_MSG_INFO( " DetCondKeyTrans already exists, do nothing " );
100 return StatusCode::SUCCESS;
101 }
102
103 // Read input file, construct relevant transforms
104 std::ifstream infile;
105 infile.open(m_inpFile.value().c_str());
106
107 if(!infile.is_open()) {
108 ATH_MSG_ERROR( "Unable to open " << m_inpFile << " for reading" );
109 return StatusCode::FAILURE;
110 }
111
112 auto transforms = std::make_unique<DetCondKeyTrans>();
113
114 char commentSign = '#';
115 std::string commentLine;
116 std::string key;
117 double x, y, z, theta, phi, rotationAngle;
118
119 while(!infile.eof()) {
120 infile >> key;
121 if(key.empty()) continue;
122 if(key[0]==commentSign)
123 std::getline(infile,commentLine);
124 else {
125 infile >> theta >> phi >> rotationAngle >> x >> y >> z;
126
127 Hep3Vector axis(sin(theta)*cos(phi),sin(theta)*sin(phi),cos(theta));
128 transforms->setTransform(key,Translate3D(x,y,z)*Rotate3D(rotationAngle,axis));
129 }
130 }
131 infile.close();
132
133 ATH_CHECK( detStore()->record(std::move(transforms),LAR_ALIGN) );
134 ATH_MSG_DEBUG( " Recorded LAr/Align " );
135
136 return StatusCode::SUCCESS;
137}
Scalar phi() const
phi method
Scalar theta() const
theta method
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
#define ATH_MSG_DEBUG(x)
#define LAR_ALIGN
#define y
#define x
#define z
const ServiceHandle< StoreGateSvc > & detStore() const
StringProperty m_inpFile
bool contains(const std::string &s, const std::string &regx)
does a string contain the substring
Definition hcg.cxx:116

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::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< Gaudi::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< Gaudi::Algorithm > >::detStore ( ) const
inlineinherited

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

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::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 LArAlignDbAlg::execute ( const EventContext & ctx)
overridevirtual

Execute method.

Provides access to the EventContext if needed but is non-const as opposed to AthReentrantAlgorithm.

Implements AthAlgorithm.

Definition at line 51 of file LArAlignDbAlg.cxx.

52{
53 ATH_MSG_DEBUG(" in execute() " );
54
55 int nrun = ctx.eventID().run_number();
56 int nevt = ctx.eventID().event_number();
57
58 ATH_MSG_DEBUG( " Event: [" << nrun << "," << nevt << "]" );
59
60 // If I need to write out the conditions object I'll do that on the first event
61 if (m_writeCondObjs && nevt==1) {
62 ATH_MSG_DEBUG( "Creating conditions objects for run " << nrun );
63
66 } else {
67 // Read objects from DetectorStore
69 }
70
71 return StatusCode::SUCCESS;
72}
StatusCode printCondObjects()
StatusCode createCondObjects()
BooleanProperty m_writeCondObjs

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::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

◆ filterPassed() [1/2]

bool AthAlgorithm::filterPassed ( ) const
inherited

Definition at line 94 of file AthAlgorithm.cxx.

94 {
95 return filterPassed( Gaudi::Hive::currentContext() );
96}
bool filterPassed() const

◆ filterPassed() [2/2]

bool AthAlgorithm::filterPassed ( const EventContext & ctx) const
inherited

Definition at line 98 of file AthAlgorithm.cxx.

98 {
99 return execState( ctx ).filterPassed();
100}

◆ finalize()

StatusCode LArAlignDbAlg::finalize ( )
overridevirtual

Definition at line 76 of file LArAlignDbAlg.cxx.

77{
78 ATH_MSG_DEBUG( " in finalize() " );
79 if(m_writeCondObjs) {
81 ATH_MSG_DEBUG( " Streamed out OK " );
82 }
83
84 if(m_regIOV) {
86 ATH_MSG_DEBUG( " Register OK " );
87 }
88
89 return StatusCode::SUCCESS;
90}
BooleanProperty m_regIOV
StatusCode registerCondObjects()
StatusCode streamOutCondObjects()

◆ getContext()

const EventContext & AthAlgorithm::getContext ( ) const
inherited

Deprecated methods (use the ones with EventContext).

Definition at line 90 of file AthAlgorithm.cxx.

90 {
91 return Gaudi::Hive::currentContext();
92}

◆ initialize()

StatusCode LArAlignDbAlg::initialize ( )
overridevirtual

Definition at line 31 of file LArAlignDbAlg.cxx.

32{
33 ATH_MSG_DEBUG(" in initialize()" );
34
35 // Get Output Stream tool for writing
36 if(m_writeCondObjs) {
37 ATH_CHECK( m_streamer.retrieve() );
38 }
39
40 // Get the IOVRegistrationSvc when needed
41 if(m_regIOV) {
42 ATH_CHECK( m_regSvc.retrieve() );
43 ATH_MSG_DEBUG( "Found IOVRegistrationSvc " );
44 }
45
46 return StatusCode::SUCCESS;
47}

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::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.

◆ isReEntrant()

virtual bool AthAlgorithm::isReEntrant ( ) const
inlinefinaloverrideprotectedvirtualinherited

Legacy algorithms are not thread-safe.

Definition at line 111 of file AthAlgorithm.h.

111{ return false; }

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msgLvl()

bool AthCommonMsg< Gaudi::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< Gaudi::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.

◆ printCondObjects()

StatusCode LArAlignDbAlg::printCondObjects ( )
private

Definition at line 141 of file LArAlignDbAlg.cxx.

142{
143 const DetCondKeyTrans* align;
144 StatusCode sc = detStore()->retrieve(align, LAR_ALIGN);
145
146 if(sc.isFailure())
147 ATH_MSG_WARNING( " Could not find DetCondKeyTrans" );
148 else if(nullptr == align)
149 ATH_MSG_WARNING(" DetCondKeyTrans ptr is 0" );
150 else {
151 std::cout << " \n\n**************************************************** \n";
152 std::cout << " **** **** \n";
153 std::cout << " **** Printing Conditions Objects **** \n";
154 std::cout << " **** **** \n";
155 std::cout << " **************************************************** \n";
156
157 align->print();
158
159 std::cout << " **** **** **** **** END **** **** **** **** \n\n\n";
160 }
161
162 return StatusCode::SUCCESS;
163}
#define ATH_MSG_WARNING(x)
static Double_t sc
::StatusCode StatusCode
StatusCode definition for legacy code.

◆ registerCondObjects()

StatusCode LArAlignDbAlg::registerCondObjects ( )
private

Definition at line 190 of file LArAlignDbAlg.cxx.

191{
192 ATH_MSG_DEBUG( "entering registerCondObject()" );
193
194 std::string objname = "DetCondKeyTrans";
195
196 // Register the IOV DB with the conditions data written out
197 ATH_CHECK( m_regSvc->registerIOV(objname, m_outpTag) );
198 return StatusCode::SUCCESS;
199}
StringProperty m_outpTag

◆ registerIOV()

StatusCode LArAlignDbAlg::registerIOV ( const CLID & clid)
private

◆ 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< Gaudi::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< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed() [1/2]

void AthAlgorithm::setFilterPassed ( bool state) const
inherited

Definition at line 102 of file AthAlgorithm.cxx.

102 {
103 setFilterPassed( state, Gaudi::Hive::currentContext() );
104}
void setFilterPassed(bool state) const

◆ setFilterPassed() [2/2]

void AthAlgorithm::setFilterPassed ( bool state,
const EventContext & ctx ) const
inherited

Definition at line 106 of file AthAlgorithm.cxx.

106 {
107 execState( ctx ).setFilterPassed(state);
108}

◆ streamOutCondObjects()

StatusCode LArAlignDbAlg::streamOutCondObjects ( )
private

Definition at line 167 of file LArAlignDbAlg.cxx.

168{
169 ATH_MSG_DEBUG( " entering streamOutCondObjects " );
170
171 ATH_CHECK( m_streamer->connectOutput(m_outpFile.value()) );
172 ATH_MSG_DEBUG(" Did connect stream to output" );
173
174 int npairs = 1;
175
177
178 IAthenaOutputStreamTool::TypeKeyPair align("DetCondKeyTrans", LAR_ALIGN);
179 typeKeys[0] = std::move(align);
180
181 ATH_CHECK( m_streamer->streamObjects(typeKeys) );
182 ATH_CHECK( m_streamer->commitOutput() );
183
184 return StatusCode::SUCCESS;
185}
std::pair< std::string, std::string > TypeKeyPair
Stream out objects.
std::vector< TypeKeyPair > TypeKeyPairs
StringProperty m_outpFile

◆ 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< Gaudi::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}
virtual StatusCode sysInitialize() override
Override sysInitialize.
AthCommonDataStore(const std::string &name, T... args)
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::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< Gaudi::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 }

Member Data Documentation

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::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< Gaudi::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 114 of file AthAlgorithm.h.

◆ m_inpFile

StringProperty LArAlignDbAlg::m_inpFile {this, "InpFile", "LArAlign.inp"}
private

Definition at line 42 of file LArAlignDbAlg.h.

42{this, "InpFile", "LArAlign.inp"};

◆ m_outpFile

StringProperty LArAlignDbAlg::m_outpFile {this, "OutpFile", "LArAlign-TEST.pool.root"}
private

Definition at line 43 of file LArAlignDbAlg.h.

43{this, "OutpFile", "LArAlign-TEST.pool.root"};

◆ m_outpTag

StringProperty LArAlignDbAlg::m_outpTag {this, "TagName", "LARAlign-TEST"}
private

Definition at line 44 of file LArAlignDbAlg.h.

44{this, "TagName", "LARAlign-TEST"};

◆ m_regIOV

BooleanProperty LArAlignDbAlg::m_regIOV {this, "RegisterIOV", false}
private

Definition at line 40 of file LArAlignDbAlg.h.

40{this, "RegisterIOV", false};

◆ m_regSvc

ServiceHandle<IIOVRegistrationSvc> LArAlignDbAlg::m_regSvc
private

Definition at line 46 of file LArAlignDbAlg.h.

◆ m_streamer

ToolHandle<IAthenaOutputStreamTool> LArAlignDbAlg::m_streamer
private

Definition at line 47 of file LArAlignDbAlg.h.

◆ m_streamName

StringProperty LArAlignDbAlg::m_streamName {this, "StreamName", "CondStream1"}
private

Definition at line 41 of file LArAlignDbAlg.h.

41{this, "StreamName", "CondStream1"};

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.

◆ m_writeCondObjs

BooleanProperty LArAlignDbAlg::m_writeCondObjs {this, "WriteCondObjs", false}
private

Definition at line 39 of file LArAlignDbAlg.h.

39{this, "WriteCondObjs", false};

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