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

Detailed Description

interface to TRT straw alignment constants

Definition at line 33 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 81 of file TRT_StrawAlignDbSvc.cxx.

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

◆ getConstDxContainer()

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

Definition at line 115 of file TRT_StrawAlignDbSvc.h.

116{
117 const StrawDxContainer* rc = nullptr;
118 if (m_detStore->retrieve (rc, m_par_dxcontainerkey).isFailure()) {
119 ATH_MSG_ERROR("Cannot retrieve " << m_par_dxcontainerkey);
120 }
121 return rc;
122}
#define ATH_MSG_ERROR(x)
static Double_t rc

◆ getDx1()

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

get shift near electronics

Definition at line 141 of file TRT_StrawAlignDbSvc.h.

142{
144}
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 147 of file TRT_StrawAlignDbSvc.h.

148{
150}

◆ getDxContainer()

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

access to containers

Definition at line 109 of file TRT_StrawAlignDbSvc.h.

109 {
110 const StrawDxContainer* rc = getConstDxContainer();
111 return const_cast<StrawDxContainer*>(rc) ;
112}
const StrawDxContainer * getConstDxContainer() const

◆ getDxErr()

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

get error on shift

Definition at line 153 of file TRT_StrawAlignDbSvc.h.

154{
156}

◆ 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_DEBUG(" dx container exists - do nothing ");
61
62 } else {
63
64 // create, record and update data handle
65 ATH_MSG_INFO ("Creating new dx container");
66 auto dxcontainer = std::make_unique<StrawDxContainer>();
67
68 // reading from file
69 if( !m_par_strawtextfile.empty() ) {
70 ATH_CHECK( this->readTextFile(dxcontainer.get(),
72 }
73
74 ATH_CHECK( m_detStore->record(std::move(dxcontainer), m_par_dxcontainerkey) );
75 }
76
77 return StatusCode::SUCCESS;
78}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_DEBUG(x)
virtual StatusCode readTextFile(const std::string &file)
read calibration from text file into TDS

◆ IOVCallBack()

StatusCode TRT_StrawAlignDbSvc::IOVCallBack ( )

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

Definition at line 202 of file TRT_StrawAlignDbSvc.cxx.

203{
204 /*
205 for (std::list<std::string>::const_iterator
206 itr=keys.begin(); itr!=keys.end(); ++itr)
207 ATH_MSG_INFO (" IOVCALLBACK for key " << *itr << " number " << I);
208 */
209
210 // if constants need to be read from textfile, we use the call back routine to refill the IOV objects
212
213 return StatusCode::SUCCESS;
214}

◆ readTextFile() [1/2]

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

read calibration from text file into TDS

Definition at line 122 of file TRT_StrawAlignDbSvc.cxx.

123{
124 return readTextFile( getDxContainer(), filename );
125}

◆ readTextFile() [2/2]

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

Definition at line 128 of file TRT_StrawAlignDbSvc.cxx.

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

◆ 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 182 of file TRT_StrawAlignDbSvc.cxx.

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

◆ setDx() [1/2]

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

set shifts

Definition at line 159 of file TRT_StrawAlignDbSvc.h.

160{
161 setDx( trtcondid(id,TRTCond::ExpandedIdentifier::STRAW), dx1, dx2, dxerr) ;
162}

◆ 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 134 of file TRT_StrawAlignDbSvc.h.

135{
136 //std::cout << " Setting the dx1 to " << dx1 << " dx2 to " << dx2 << std::endl;
137 getDxContainer()->setDx( id, dx1, dx2, dxerr);
138}

◆ streamOutObjects()

StatusCode TRT_StrawAlignDbSvc::streamOutObjects ( ) const

write the calibration objects to output, after cleaning

Definition at line 159 of file TRT_StrawAlignDbSvc.cxx.

160{
161 ATH_MSG_INFO ("entering streamOutObjects ");
162
163 // Get Output Stream tool for writing
164 ATH_CHECK( m_streamer.retrieve() );
165
166 IAthenaOutputStreamTool* streamer=const_cast<IAthenaOutputStreamTool*>(&(*m_streamer));
167
168 ATH_CHECK( streamer->connectOutput() );
169
171 typeKeys.push_back( IAthenaOutputStreamTool::TypeKeyPair(StrawDxContainer::classname(),m_par_dxcontainerkey)) ;
172 getDxContainer()->crunch() ;
173
174 ATH_CHECK( streamer->streamObjects(typeKeys) );
175 ATH_CHECK( streamer->commitOutput() );
176
177 ATH_MSG_INFO (" Streamed out and committed " << typeKeys.size() << " objects ");
178 return StatusCode::SUCCESS;
179}
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 125 of file TRT_StrawAlignDbSvc.h.

126{
127 return TRTCond::ExpandedIdentifier( m_trtid->barrel_ec(id),m_trtid->layer_or_wheel(id),
128 m_trtid->phi_module(id),m_trtid->straw_layer(id),
129 m_trtid->straw(id),level ) ;
130}

◆ writeTextFile()

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

write calibration constants to flat text file

Definition at line 87 of file TRT_StrawAlignDbSvc.cxx.

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

Member Data Documentation

◆ m_detStore

ServiceHandle<StoreGateSvc> TRT_StrawAlignDbSvc::m_detStore
private

Definition at line 94 of file TRT_StrawAlignDbSvc.h.

◆ m_par_dxcontainerkey

std::string TRT_StrawAlignDbSvc::m_par_dxcontainerkey
private

Definition at line 95 of file TRT_StrawAlignDbSvc.h.

◆ m_par_forcecallback

bool TRT_StrawAlignDbSvc::m_par_forcecallback
private

input text file

Definition at line 97 of file TRT_StrawAlignDbSvc.h.

◆ m_par_strawtextfile

std::string TRT_StrawAlignDbSvc::m_par_strawtextfile
private

folder name

Definition at line 96 of file TRT_StrawAlignDbSvc.h.

◆ m_streamer

ToolHandle<IAthenaOutputStreamTool> TRT_StrawAlignDbSvc::m_streamer
private

detector manager

Definition at line 101 of file TRT_StrawAlignDbSvc.h.

◆ m_trtid

const TRT_ID* TRT_StrawAlignDbSvc::m_trtid
private

force callback to manager

Definition at line 98 of file TRT_StrawAlignDbSvc.h.

◆ m_trtman

const InDetDD::TRT_DetectorManager* TRT_StrawAlignDbSvc::m_trtman
private

id helper

Definition at line 99 of file TRT_StrawAlignDbSvc.h.


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