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

interface to TRT straw alignment constants More...

#include <TRT_StrawAlignDbSvc.h>

Inheritance diagram for TRT_StrawAlignDbSvc:
Collaboration diagram for TRT_StrawAlignDbSvc:

Public Member Functions

 TRT_StrawAlignDbSvc (const std::string &name, ISvcLocator *pSvcLocator)
 constructor
virtual ~TRT_StrawAlignDbSvc ()
 destructor
virtual StatusCode initialize ()
 tool initialize
virtual StatusCode finalize ()
 tool finalize
TRTCond::ExpandedIdentifier trtcondid (const Identifier &id, int level=TRTCond::ExpandedIdentifier::STRAW) const
 create an TRTCond::ExpandedIdentifier from a TRTID identifier
void setDx (const TRTCond::ExpandedIdentifier &id, float dx1, float dx2, float dxerr)
 set endpoints for a TRTCond::ExpandedIdentifier
StatusCode writeTextFile (const std::string &file) const
 write calibration constants to flat text file
virtual StatusCode readTextFile (const std::string &file)
 read calibration from text file into TDS
StatusCode readTextFile (StrawDxContainer *dxcontainer, const std::string &file)
StatusCode streamOutObjects () const
 write the calibration objects to output, after cleaning
StatusCode registerObjects (std::string tag, int run1, int event1, int run2, int event2) const
 register calibration objects with the IoV service
StrawDxContainer * getDxContainer () const
 access to containers
const StrawDxContainer * getConstDxContainer () const
StatusCode IOVCallBack (IOVSVC_CALLBACK_ARGS)
 IOV call back for dx objects. normally this doesn't do anything.
float getDx1 (const Identifier &id) const
 get shift near electronics
float getDx2 (const Identifier &id) const
 get shift far from electronics
float getDxErr (const Identifier &id) const
 get error on shift
void setDx (const Identifier &id, float dx1, float dx2, float dxerr)
 set shifts

Private Attributes

ServiceHandle< StoreGateSvcm_detStore
std::string m_par_dxcontainerkey
std::string m_par_strawtextfile
bool m_par_forcecallback
const TRT_IDm_trtid
const InDetDD::TRT_DetectorManagerm_trtman
const DataHandle< StrawDxContainer > m_dxcontainer
ToolHandle< IAthenaOutputStreamToolm_streamer

Detailed Description

interface to TRT straw alignment constants

Definition at line 34 of file TRT_StrawAlignDbSvc.h.

Constructor & Destructor Documentation

◆ TRT_StrawAlignDbSvc()

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

constructor

Definition at line 27 of file TRT_StrawAlignDbSvc.cxx.

29 : base_class(name,pSvcLocator),
30 m_detStore("DetectorStore",name),
31 m_par_dxcontainerkey("/TRT/Calib/DX"),
34 m_trtid(nullptr),
35 m_trtman(nullptr),
36 m_streamer("AthenaOutputStreamTool/CondStream1")
37{
38 declareProperty("StrawTextFile",m_par_strawtextfile);
39 declareProperty("ForceCallback",m_par_forcecallback);
40 declareProperty("StreamTool",m_streamer);
41 declareProperty("DetectorStore",m_detStore);
42}
const InDetDD::TRT_DetectorManager * m_trtman
ServiceHandle< StoreGateSvc > m_detStore
ToolHandle< IAthenaOutputStreamTool > m_streamer

◆ ~TRT_StrawAlignDbSvc()

TRT_StrawAlignDbSvc::~TRT_StrawAlignDbSvc ( )
virtualdefault

destructor

Member Function Documentation

◆ finalize()

StatusCode TRT_StrawAlignDbSvc::finalize ( )
virtual

tool finalize

Definition at line 83 of file TRT_StrawAlignDbSvc.cxx.

84{
85 ATH_MSG_INFO ("TRT_StrawAlignDbSvc finalize method called");
86 return StatusCode::SUCCESS;
87}
#define ATH_MSG_INFO(x)

◆ getConstDxContainer()

const TRT_StrawAlignDbSvc::StrawDxContainer * TRT_StrawAlignDbSvc::getConstDxContainer ( ) const
inline

Definition at line 119 of file TRT_StrawAlignDbSvc.h.

120{
121 const StrawDxContainer* rc = nullptr;
122 if (m_dxcontainer.isValid())
123 rc = m_dxcontainer.cptr();
124 else {
125 if (m_detStore->retrieve (rc, m_par_dxcontainerkey).isFailure()) {
126 ATH_MSG_ERROR("Cannot retrieve " << m_par_dxcontainerkey);
127 }
128 }
129 return rc;
130 return const_cast<StrawDxContainer*>(rc) ;
131}
#define ATH_MSG_ERROR(x)
static Double_t rc
const DataHandle< StrawDxContainer > m_dxcontainer

◆ getDx1()

float TRT_StrawAlignDbSvc::getDx1 ( const Identifier & id) const
inline

get shift near electronics

Definition at line 150 of file TRT_StrawAlignDbSvc.h.

151{
153}
TRTCond::ExpandedIdentifier trtcondid(const Identifier &id, int level=TRTCond::ExpandedIdentifier::STRAW) const
create an TRTCond::ExpandedIdentifier from a TRTID identifier
StrawDxContainer * getDxContainer() const
access to containers

◆ getDx2()

float TRT_StrawAlignDbSvc::getDx2 ( const Identifier & id) const
inline

get shift far from electronics

Definition at line 156 of file TRT_StrawAlignDbSvc.h.

157{
159}

◆ getDxContainer()

TRT_StrawAlignDbSvc::StrawDxContainer * TRT_StrawAlignDbSvc::getDxContainer ( ) const
inline

access to containers

Definition at line 113 of file TRT_StrawAlignDbSvc.h.

113 {
114 const StrawDxContainer* rc = getConstDxContainer();
115 return const_cast<StrawDxContainer*>(rc) ;
116}
const StrawDxContainer * getConstDxContainer() const

◆ getDxErr()

float TRT_StrawAlignDbSvc::getDxErr ( const Identifier & id) const
inline

get error on shift

Definition at line 162 of file TRT_StrawAlignDbSvc.h.

163{
165}

◆ initialize()

StatusCode TRT_StrawAlignDbSvc::initialize ( )
virtual

tool initialize

Definition at line 49 of file TRT_StrawAlignDbSvc.cxx.

50{
51 ATH_MSG_INFO ("TRT_StrawAlignDbSvc initialize method called");
52
53 ATH_CHECK( m_detStore->retrieve(m_trtid,"TRT_ID") );
54 ATH_CHECK( m_detStore->retrieve(m_trtman,"TRT") );
55
56
57 bool dxcontainerexists = m_detStore->StoreGateSvc::contains<StrawDxContainer>(m_par_dxcontainerkey) ;
58
59 if( dxcontainerexists ) {
60 ATH_MSG_INFO (" dx container exists - reg callback ");
62 ATH_MSG_ERROR ("Could not register IOV callback for key: " << m_par_dxcontainerkey);
63
64 } else {
65
66 // create, record and update data handle
67 ATH_MSG_INFO ("Creating new dx container");
68 auto dxcontainer = std::make_unique<StrawDxContainer>();
69
70 // reading from file
71 if( !m_par_strawtextfile.empty() ) {
72 ATH_CHECK( this->readTextFile(dxcontainer.get(),
74 }
75
76 ATH_CHECK( m_detStore->record(std::move(dxcontainer), m_par_dxcontainerkey) );
77 }
78
79 return StatusCode::SUCCESS;
80}
#define ATH_CHECK
Evaluate an expression and check for errors.
virtual StatusCode readTextFile(const std::string &file)
read calibration from text file into TDS
StatusCode IOVCallBack(IOVSVC_CALLBACK_ARGS)
IOV call back for dx objects. normally this doesn't do anything.

◆ IOVCallBack()

StatusCode TRT_StrawAlignDbSvc::IOVCallBack ( IOVSVC_CALLBACK_ARGS )

IOV call back for dx objects. normally this doesn't do anything.

Definition at line 206 of file TRT_StrawAlignDbSvc.cxx.

207{
208 for (std::list<std::string>::const_iterator
209 itr=keys.begin(); itr!=keys.end(); ++itr)
210 ATH_MSG_INFO (" IOVCALLBACK for key " << *itr << " number " << I);
211
212 // if constants need to be read from textfile, we use the call back routine to refill the IOV objects
214
215 return StatusCode::SUCCESS;
216}
#define I(x, y, z)
Definition MD5.cxx:116

◆ readTextFile() [1/2]

StatusCode TRT_StrawAlignDbSvc::readTextFile ( const std::string & file)
virtual

read calibration from text file into TDS

Definition at line 124 of file TRT_StrawAlignDbSvc.cxx.

125{
126 return readTextFile( getDxContainer(), filename );
127}

◆ readTextFile() [2/2]

StatusCode TRT_StrawAlignDbSvc::readTextFile ( StrawDxContainer * dxcontainer,
const std::string & file )

Definition at line 130 of file TRT_StrawAlignDbSvc.cxx.

132{
133 ATH_MSG_INFO ("Reading straw alignment data from text file " << filename);
134
135 if(!dxcontainer) {
136 ATH_MSG_WARNING (" Could not find the container ");
137 return StatusCode::FAILURE;
138 }
139 dxcontainer->clear() ;
140 std::ifstream infile(filename.c_str()) ;
141 TRTCond::ExpandedIdentifier id ;
142 float dx1,dx2,dxerr;
143 int nentries(0) ;
144 while ((infile >> id >> dx1 >> dx2 >> dxerr ) ) {
145 setDx(id,dx1,dx2,dxerr) ;
146 ATH_MSG_DEBUG (" read from file: dx1 " << dx1 << " dx2 " << dx2 << " dxerr " << dxerr);
147 ++nentries ;
148 }
149 size_t dxfootprint = dxcontainer->footprint() ;
150 ATH_MSG_INFO (" read " << nentries << " from file. ");
151 ATH_MSG_INFO (" dx footprints " << dxfootprint);
152 ATH_MSG_INFO (" (no compression) ");
153
154 // force a call back in the geometry
155 int i(0);
156 std::list<std::string> keys ;
157 (const_cast<InDetDD::TRT_DetectorManager*>(m_trtman))->align(i,keys).ignore() ;
158
159 return StatusCode::SUCCESS ;
160}
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
void setDx(const TRTCond::ExpandedIdentifier &id, float dx1, float dx2, float dxerr)
set endpoints for a TRTCond::ExpandedIdentifier
str infile
Definition run.py:13

◆ registerObjects()

StatusCode TRT_StrawAlignDbSvc::registerObjects ( std::string tag,
int run1,
int event1,
int run2,
int event2 ) const

register calibration objects with the IoV service

Definition at line 186 of file TRT_StrawAlignDbSvc.cxx.

187{
188 ATH_MSG_INFO ("registerObjects with IOV ");
189 ATH_MSG_INFO ("Run/evt1 [" << run1 << "," << event1 << "]");
190 ATH_MSG_INFO ("Run/evt2 [" << run2 << "," << event2 << "]");
191
192 // get pointer to registration svc
193 SmartIF<IIOVRegistrationSvc> regsvc{service("IOVRegistrationSvc")};
194 ATH_CHECK( regsvc.isValid() );
195
196 if (StatusCode::SUCCESS==regsvc->registerIOV(StrawDxContainer::classname(),
197 m_par_dxcontainerkey,tag,run1,run2,event1,event2))
198 ATH_MSG_INFO ("Registered StrawDxContainer object with key " << m_par_dxcontainerkey);
199 else
200 ATH_MSG_ERROR ("Could not register StrawDxContainer object with key " << m_par_dxcontainerkey);
201
202 return( StatusCode::SUCCESS);
203}

◆ setDx() [1/2]

void TRT_StrawAlignDbSvc::setDx ( const Identifier & id,
float dx1,
float dx2,
float dxerr )
inline

set shifts

Definition at line 168 of file TRT_StrawAlignDbSvc.h.

169{
170 setDx( trtcondid(id,TRTCond::ExpandedIdentifier::STRAW), dx1, dx2, dxerr) ;
171}

◆ setDx() [2/2]

void TRT_StrawAlignDbSvc::setDx ( const TRTCond::ExpandedIdentifier & id,
float dx1,
float dx2,
float dxerr )
inline

set endpoints for a TRTCond::ExpandedIdentifier

Definition at line 143 of file TRT_StrawAlignDbSvc.h.

144{
145 //std::cout << " Setting the dx1 to " << dx1 << " dx2 to " << dx2 << std::endl;
146 getDxContainer()->setDx( id, dx1, dx2, dxerr);
147}

◆ streamOutObjects()

StatusCode TRT_StrawAlignDbSvc::streamOutObjects ( ) const

write the calibration objects to output, after cleaning

Definition at line 163 of file TRT_StrawAlignDbSvc.cxx.

164{
165 ATH_MSG_INFO ("entering streamOutObjects ");
166
167 // Get Output Stream tool for writing
168 ATH_CHECK( m_streamer.retrieve() );
169
170 IAthenaOutputStreamTool* streamer=const_cast<IAthenaOutputStreamTool*>(&(*m_streamer));
171
172 ATH_CHECK( streamer->connectOutput() );
173
175 typeKeys.push_back( IAthenaOutputStreamTool::TypeKeyPair(StrawDxContainer::classname(),m_par_dxcontainerkey)) ;
176 getDxContainer()->crunch() ;
177
178 ATH_CHECK( streamer->streamObjects(typeKeys) );
179 ATH_CHECK( streamer->commitOutput() );
180
181 ATH_MSG_INFO (" Streamed out and committed " << typeKeys.size() << " objects ");
182 return StatusCode::SUCCESS;
183}
virtual StatusCode streamObjects(const TypeKeyPairs &typeKeys, const std::string &outputName="")=0
std::pair< std::string, std::string > TypeKeyPair
Stream out objects.
virtual StatusCode connectOutput(const std::string &outputName="")=0
Connect to the output stream Must connectOutput BEFORE streaming Only specify "outputName" if one wan...
std::vector< TypeKeyPair > TypeKeyPairs
virtual StatusCode commitOutput(bool doCommit=false)=0
Commit the output stream after having streamed out objects Must commitOutput AFTER streaming.

◆ trtcondid()

TRTCond::ExpandedIdentifier TRT_StrawAlignDbSvc::trtcondid ( const Identifier & id,
int level = TRTCond::ExpandedIdentifier::STRAW ) const
inline

create an TRTCond::ExpandedIdentifier from a TRTID identifier

Definition at line 134 of file TRT_StrawAlignDbSvc.h.

135{
136 return TRTCond::ExpandedIdentifier( m_trtid->barrel_ec(id),m_trtid->layer_or_wheel(id),
137 m_trtid->phi_module(id),m_trtid->straw_layer(id),
138 m_trtid->straw(id),level ) ;
139}

◆ writeTextFile()

StatusCode TRT_StrawAlignDbSvc::writeTextFile ( const std::string & file) const

write calibration constants to flat text file

Definition at line 89 of file TRT_StrawAlignDbSvc.cxx.

90{
91 ATH_MSG_INFO (" Write straw alignment data to text file " << filename);
92 std::ofstream outfile(filename.c_str());
93
94
95 // first reduce the container as much as possible
96 // getDxContainer()->crunch() ;
97
98 StrawDxContainer::FlatContainer packedstrawdata ;
99 const StrawDxContainer* dxcontainer = getConstDxContainer();
100 dxcontainer->getall( packedstrawdata ) ;
101
102 // now, we store the entries
103 ATH_MSG_INFO ("Number of entries in flatcontainer: "
104 << packedstrawdata.size());
105
106 for(auto & it : packedstrawdata) {
107 const TRTCond::ExpandedIdentifier& calid = it.first ;
108 // get the end point corrections. if not the right type, store zeros.
109 float dx1=dxcontainer->getDx1(calid) ;
110 float dx2=dxcontainer->getDx2(calid) ;
111 float dxerr=dxcontainer->getDxErr(calid) ;
112 outfile << calid << " "
113 << std::setprecision(5)
114 << std::setw(12) << dx1 << " "
115 << std::setw(12) << dx2 << " "
116 << std::setw(12) << dxerr << std::endl ;
117 }
118 outfile.close() ;
119 return StatusCode::SUCCESS ;
120}

Member Data Documentation

◆ m_detStore

ServiceHandle<StoreGateSvc> TRT_StrawAlignDbSvc::m_detStore
private

Definition at line 95 of file TRT_StrawAlignDbSvc.h.

◆ m_dxcontainer

const DataHandle<StrawDxContainer> TRT_StrawAlignDbSvc::m_dxcontainer
private

detector manager

Definition at line 103 of file TRT_StrawAlignDbSvc.h.

◆ m_par_dxcontainerkey

std::string TRT_StrawAlignDbSvc::m_par_dxcontainerkey
private

Definition at line 96 of file TRT_StrawAlignDbSvc.h.

◆ m_par_forcecallback

bool TRT_StrawAlignDbSvc::m_par_forcecallback
private

input text file

Definition at line 98 of file TRT_StrawAlignDbSvc.h.

◆ m_par_strawtextfile

std::string TRT_StrawAlignDbSvc::m_par_strawtextfile
private

folder name

Definition at line 97 of file TRT_StrawAlignDbSvc.h.

◆ m_streamer

ToolHandle<IAthenaOutputStreamTool> TRT_StrawAlignDbSvc::m_streamer
private

persistifiable container

Definition at line 105 of file TRT_StrawAlignDbSvc.h.

◆ m_trtid

const TRT_ID* TRT_StrawAlignDbSvc::m_trtid
private

force callback to manager

Definition at line 99 of file TRT_StrawAlignDbSvc.h.

◆ m_trtman

const InDetDD::TRT_DetectorManager* TRT_StrawAlignDbSvc::m_trtman
private

id helper

Definition at line 100 of file TRT_StrawAlignDbSvc.h.


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