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

This class compares two sets of TileRawChannels. More...

#include <TileRawChannelVerify.h>

Inheritance diagram for TileRawChannelVerify:
Collaboration diagram for TileRawChannelVerify:

Public Member Functions

 TileRawChannelVerify (const std::string &name, ISvcLocator *pSvcLocator)
 Constructor.
virtual ~TileRawChannelVerify ()
 Destructor.
StatusCode initialize ()
 initialize method
StatusCode execute ()
 execute method
StatusCode finalize ()
 finalize method
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

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

const TileHWIDm_tileHWID
 Pointer to TileHWID.
SG::ReadHandleKey< TileRawChannelContainerm_rawChannelContainer1Key
SG::ReadHandleKey< TileRawChannelContainerm_rawChannelContainer2Key
double m_precision
 maximum difference between the amplitudes of the TileRawChannels to be compared
bool m_dumpRawChannels
 if true=> Differences found in the TileRawChannels are dumped on the screen
bool m_sortFlag
 if true=> TileRawChannels are sorted by amplitude
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

This class compares two sets of TileRawChannels.

It is meant to check if both sets of TileRawChannels contain the same information, since the output is just one line confirming that. Optionally the differences are simply dumped to the screen. They TileRawChannels may have been obtained from different input data or from the same data reconstructed by different methods.

Definition at line 50 of file TileRawChannelVerify.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

◆ TileRawChannelVerify()

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

Constructor.

Definition at line 60 of file TileRawChannelVerify.cxx.

61 : AthAlgorithm(name, pSvcLocator)
62 , m_tileHWID(0)
63{
64 declareProperty("Precision", m_precision = 0);
65 declareProperty("DumpRawChannels", m_dumpRawChannels = false);
66 declareProperty("SortFlag", m_sortFlag = false);
67}
AthAlgorithm()
Default constructor:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
bool m_dumpRawChannels
if true=> Differences found in the TileRawChannels are dumped on the screen
double m_precision
maximum difference between the amplitudes of the TileRawChannels to be compared
const TileHWID * m_tileHWID
Pointer to TileHWID.
bool m_sortFlag
if true=> TileRawChannels are sorted by amplitude

◆ ~TileRawChannelVerify()

TileRawChannelVerify::~TileRawChannelVerify ( )
virtual

Destructor.

Definition at line 69 of file TileRawChannelVerify.cxx.

69 {
70}

Member Function Documentation

◆ 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 }

◆ 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.

◆ 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 TileRawChannelVerify::execute ( )

execute method

Definition at line 86 of file TileRawChannelVerify.cxx.

86 {
87
88 // step1: read two cell containers from TES
89 SG::ReadHandle<TileRawChannelContainer> rawChannelContainer1(m_rawChannelContainer1Key);
90 SG::ReadHandle<TileRawChannelContainer> rawChannelContainer2(m_rawChannelContainer2Key);
91
92 SelectAllObject<TileRawChannelContainer> selAll1(rawChannelContainer1.cptr());
93 SelectAllObject<TileRawChannelContainer>::const_iterator rawItr1 = selAll1.begin();
94 SelectAllObject<TileRawChannelContainer>::const_iterator end1 = selAll1.end();
95
96 SelectAllObject<TileRawChannelContainer> selAll2(rawChannelContainer2.cptr());
97 SelectAllObject<TileRawChannelContainer>::const_iterator rawItr2 = selAll2.begin();
98 SelectAllObject<TileRawChannelContainer>::const_iterator end2 = selAll2.end();
99
100 // step2: first compare the number of cells in the two containers
101 int nSize1 = 0;
102 for (; rawItr1 != end1; ++rawItr1) ++nSize1;
103
104 int nSize2 = 0;
105 for (; rawItr2 != end2; ++rawItr2) ++nSize2;
106
107 ATH_MSG_INFO( "The number of cells in " << m_rawChannelContainer1Key.key() << " is " << nSize1 );
108 ATH_MSG_INFO( "The number of cells in " << m_rawChannelContainer2Key.key() << " is " << nSize2 );
109
110 if (nSize1 != nSize2) {
111 ATH_MSG_ERROR( "The number of rawChannels is not equal in the two containers" );
112 return (StatusCode::SUCCESS);
113 }
114
115 // step3: to sort the cells in the containers by amplitude
116 vector<const TileRawChannel*> rawChannels1;
117 vector<const TileRawChannel*> rawChannels2;
118 const TileRawChannel* rawChannel1;
119 const TileRawChannel* rawChannel2;
120 if (m_sortFlag) {
121 rawItr1 = selAll1.begin();
122 end1 = selAll1.end();
123 for (; rawItr1 != end1; ++rawItr1)
124 rawChannels1.push_back((*rawItr1));
125
126 sort(rawChannels1.begin(), rawChannels1.end(), CompRawChannel());
127
128 rawItr2 = selAll2.begin();
129 end2 = selAll2.end();
130 for (; rawItr2 != end2; ++rawItr2)
131 rawChannels2.push_back((*rawItr2));
132
133 sort(rawChannels2.begin(), rawChannels2.end(), CompRawChannel());
134 }
135
136 rawItr1 = selAll1.begin();
137 end1 = selAll1.end();
138
139 rawItr2 = selAll2.begin();
140 end2 = selAll2.end();
141
142 // step4: then compare every cell-pair in the containers
143 bool bErrorFlag = false;
144 bool bHeaderFlag = true;
145 for (int i = 0; i < nSize1; ++i) {
146 if (m_sortFlag) {
147 rawChannel1 = rawChannels1[i];
148 rawChannel2 = rawChannels2[i];
149 } else {
150 rawChannel1 = (*rawItr1);
151 ++rawItr1;
152 rawChannel2 = (*rawItr2);
153 ++rawItr2;
154 }
155 HWIdentifier id1 = rawChannel1->adc_HWID();
156 HWIdentifier id2 = rawChannel2->adc_HWID();
157 double amp1 = rawChannel1->amplitude();
158 double amp2 = rawChannel2->amplitude();
159 double diff = fabs(amp1 - amp2);
160 if (id1 != id2 || diff > m_precision) bErrorFlag = true;
161 if (msgLvl(MSG::VERBOSE) && (m_dumpRawChannels || bErrorFlag)) {
162 if (bHeaderFlag) {
163 msg(MSG::VERBOSE) << " ===" << m_rawChannelContainer1Key.key()
164 << "=== ===" << m_rawChannelContainer2Key.key() << "===" << endmsg;
165 msg(MSG::VERBOSE) << " Index e1 id1 | e2 id2" << endmsg;
166 msg(MSG::VERBOSE) << "--------------------------------------------------------------------------------" << endmsg;
167 bHeaderFlag = false;
168 }
169 msg(MSG::VERBOSE) << setw(5) << i
170 << " " << setw(12) << amp1
171 << " [" << m_tileHWID->to_string(id1) << "]"
172 << " | " << setw(12) << amp2
173 << " [" << m_tileHWID->to_string(id2) << "]";
174 if (diff > m_precision) {
175 msg(MSG::VERBOSE) << " A* ";
176 }
177 if (id1 != id2) {
178 msg(MSG::VERBOSE) << " I* ";
179 }
180 msg(MSG::VERBOSE) << endmsg;
181 } else if (bErrorFlag) {
182 break;
183 }
184 }
185 if (!bHeaderFlag) {
186 msg(MSG::VERBOSE) << "--------------------------------------------------------------------------------" << endmsg;
187 }
188 if (!bErrorFlag) {
189 ATH_MSG_INFO( "The two cellContainers (" << m_rawChannelContainer1Key.key()
190 << " and " << m_rawChannelContainer2Key.key() << ") are the same!!!" );
191 } else {
192 ATH_MSG_INFO( "The two cellContainers (" << m_rawChannelContainer1Key.key()
193 << " and " << m_rawChannelContainer2Key.key() << ") are not the same!!!" );
194 }
195
196 // Execution completed.
197 ATH_MSG_INFO( "TileRawChannelVerify execution completed successfully" );
198
199 return StatusCode::SUCCESS;
200}
#define endmsg
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
HWIdentifier id2
void diff(const Jet &rJet1, const Jet &rJet2, std::map< std::string, double > varDiff)
Difference between jets - Non-Class function required by trigger.
Definition Jet.cxx:631
SelectAllObjectMT< DCC, OBJECT > SelectAllObject
bool msgLvl(const MSG::Level lvl) const
MsgStream & msg() const
SG::ReadHandleKey< TileRawChannelContainer > m_rawChannelContainer1Key
SG::ReadHandleKey< TileRawChannelContainer > m_rawChannelContainer2Key
float amplitude(int ind=0) const
HWIdentifier adc_HWID(void) const
Definition TileRawData.h:53
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.

◆ 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

◆ finalize()

StatusCode TileRawChannelVerify::finalize ( )

finalize method

Definition at line 202 of file TileRawChannelVerify.cxx.

202 {
203
204 ATH_MSG_INFO( "TileRawChannelVerify finalized successfully" );
205
206 return StatusCode::SUCCESS;
207}

◆ initialize()

StatusCode TileRawChannelVerify::initialize ( )

initialize method

Definition at line 73 of file TileRawChannelVerify.cxx.

73 {
74
75 // retrieve TileHWID helper from det store
77
80
81 ATH_MSG_INFO( "TileRawChannelVerify initialization completed" );
82
83 return StatusCode::SUCCESS;
84}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define CHECK(...)
Evaluate an expression and check for errors.
const ServiceHandle< StoreGateSvc > & detStore() const
retrieve(aClass, aKey=None)
Definition PyKernel.py:110

◆ 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_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_dumpRawChannels

bool TileRawChannelVerify::m_dumpRawChannels
private

if true=> Differences found in the TileRawChannels are dumped on the screen

Definition at line 75 of file TileRawChannelVerify.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_precision

double TileRawChannelVerify::m_precision
private

maximum difference between the amplitudes of the TileRawChannels to be compared

Definition at line 73 of file TileRawChannelVerify.h.

◆ m_rawChannelContainer1Key

SG::ReadHandleKey<TileRawChannelContainer> TileRawChannelVerify::m_rawChannelContainer1Key
private
Initial value:
{this, "TileRawChannelContainer1",
"", "Input Tile raw channel container 1 key"}

Definition at line 65 of file TileRawChannelVerify.h.

65 {this, "TileRawChannelContainer1",
66 "", "Input Tile raw channel container 1 key"};

◆ m_rawChannelContainer2Key

SG::ReadHandleKey<TileRawChannelContainer> TileRawChannelVerify::m_rawChannelContainer2Key
private
Initial value:
{this, "TileRawChannelContainer2",
"", "Input Tile raw channel container 2 key"}

Definition at line 69 of file TileRawChannelVerify.h.

69 {this, "TileRawChannelContainer2",
70 "", "Input Tile raw channel container 2 key"};

◆ m_sortFlag

bool TileRawChannelVerify::m_sortFlag
private

if true=> TileRawChannels are sorted by amplitude

Definition at line 76 of file TileRawChannelVerify.h.

◆ m_tileHWID

const TileHWID* TileRawChannelVerify::m_tileHWID
private

Pointer to TileHWID.

Definition at line 63 of file TileRawChannelVerify.h.

◆ 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: