Skip to content
Snippets Groups Projects
Commit b1cb7a2b authored by Edward Moyse's avatar Edward Moyse
Browse files

Merge branch 'thread-new.IOVSvc-20220923' into 'master'

IOVSvc: Fix thread-safety checker warnings.

See merge request !57002
parents 2c754ff7 15a5e031
18 merge requests!59674InDetPerformanceMonitoring with LumiBlock selection,!59383cppcheck in trigger code: Prefer prefix ++/-- operators for non-primitive types.,!58990Draft:Fixing bug in FTF config when running with Reco_tf,!58835DataQualityConfigurations: Modify L1Calo config for web display,!58791DataQualityConfigurations: Modify L1Calo config for web display,!58373Modification of V2.3 processing to work well with all clients,!58289New NVSI calibration,!58286New NVSI calibration,!58106Update NVSI example algorithm,!57937Draft: New nighlty test for trigger with a Run 4 single muon RDO,!57841Edits to ZDC signal processing in preparation for analysis of data from LHCf run,!57590Fixing LAr DT dumper,!57584Draft: LAr DB fixes,!57316ATR-26311 and ATR-25754 moving one dimuon and few egamma chains from dev to phys or MC,!57090ATLASRECTS-7305: fixes for large cluster building,!57002IOVSvc: Fix thread-safety checker warnings.,!56828Draft: [trigEGam] Integration beteween mongroups and TrigEgammaMonitoring,!55609Add Athena TEvent-based file access
/*
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
*/
#ifndef IOVSVC_CBNODE_H
......@@ -52,6 +52,7 @@ public:
};
typedef std::set<CBNode*, CBNode::nodeOrder> nodeSet;
typedef std::vector<const CBNode*> constNodeVec;
CBNode() = delete;
CBNode(const std::string& name, CBNode* parent);
......@@ -65,8 +66,10 @@ public:
bool delParent(CBNode* parent);
bool delChild(CBNode* child);
const nodeSet& children() const { return m_children; }
const nodeSet& parents() const { return m_parents; }
const nodeSet& children() { return m_children; }
const nodeSet& parents() { return m_parents; }
constNodeVec children() const { return constNodeVec (m_children.begin(), m_children.end()); }
constNodeVec parents() const { return constNodeVec (m_parents.begin(), m_parents.end()); }
std::string name() const { return m_name; }
int level() const { return m_level; }
......
/*
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
*/
/*****************************************************************************
......@@ -180,7 +180,7 @@ void CBTree::connectNode(const std::string& name, CBNode* parent) {
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
CBNode* CBTree::findNode(const SG::DataProxy* proxy) const {
CBNode* CBTree::findNode(const SG::DataProxy* proxy) {
return findNode(proxy, m_root);
......@@ -188,7 +188,7 @@ CBNode* CBTree::findNode(const SG::DataProxy* proxy) const {
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
CBNode* CBTree::findNode(const SG::DataProxy* proxy, CBNode* start) const {
CBNode* CBTree::findNode(const SG::DataProxy* proxy, CBNode* start) {
if ( start->proxy() == proxy ) {
return start;
......@@ -208,13 +208,13 @@ CBNode* CBTree::findNode(const SG::DataProxy* proxy, CBNode* start) const {
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
CBNode* CBTree::findNode(BFCN* fcn) const {
CBNode* CBTree::findNode(BFCN* fcn) {
return findNode(fcn, m_root);
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
CBNode* CBTree::findNode(BFCN* fcn, CBNode* start) const {
CBNode* CBTree::findNode(BFCN* fcn, CBNode* start) {
if (start->fcn() == fcn) {
return start;
......@@ -235,13 +235,13 @@ CBNode* CBTree::findNode(BFCN* fcn, CBNode* start) const {
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
CBNode* CBTree::findNode(const std::string& name) const {
CBNode* CBTree::findNode(const std::string& name) {
return findNode(name, m_root);
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
CBNode* CBTree::findNode(const std::string& name, CBNode* start) const {
CBNode* CBTree::findNode(const std::string& name, CBNode* start) {
if (start->name() == name) {
return start;
......@@ -270,7 +270,7 @@ void CBTree::printTree() const {
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void CBTree::printTree( CBNode* start ) const {
void CBTree::printTree( const CBNode* start ) const {
for (int i=0; i<start->level(); ++i) {
cout << " ";
......@@ -285,14 +285,13 @@ void CBTree::printTree( CBNode* start ) const {
}
cout << endl;
std::set<CBNode*>::const_iterator citr;
for (citr=start->children().begin(); citr!=start->children().end(); ++citr) {
printTree( *citr );
for (const CBNode* child : start->children()) {
printTree( child );
}
}
void CBTree::_printTree( CBNode* current, CBNode* parent ) {
void CBTree::_printTree( const CBNode* current, const CBNode* parent ) {
std::string np;
int lp;
if (parent == 0) {
......@@ -372,7 +371,7 @@ void CBTree::listNodes(const int& level,
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void CBTree::cascadeTrigger(const bool b, CBNode* start) const {
void CBTree::cascadeTrigger(const bool b, CBNode* start) {
if (start == 0) {
start = m_root;
}
......@@ -387,7 +386,7 @@ void CBTree::cascadeTrigger(const bool b, CBNode* start) const {
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void CBTree::cascadeTrigger(const bool b, BFCN* fcn) const {
void CBTree::cascadeTrigger(const bool b, BFCN* fcn) {
CBNode* start = findNode(fcn);
if (start == 0) {
......@@ -401,7 +400,7 @@ void CBTree::cascadeTrigger(const bool b, BFCN* fcn) const {
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void CBTree::cascadeTrigger(const bool b, const SG::DataProxy* proxy) const {
void CBTree::cascadeTrigger(const bool b, const SG::DataProxy* proxy) {
CBNode* start = findNode(proxy);
if (start == 0) {
......@@ -433,9 +432,8 @@ void CBTree::cascadeFlag(const bool b, CBNode* start) const {
start->setFlag(b);
std::set<CBNode*>::iterator citr = start->children().begin();
for (;citr!=start->children().end(); ++citr) {
cascadeFlag(b, *citr);
for (CBNode* child : start->children()) {
cascadeFlag(b, child);
}
}
......@@ -468,37 +466,35 @@ void CBTree::adjustLevels(CBNode* start) {
// Traverse full tree, applying function void fnc(current) to each node
void CBTree::traverse(void(*pf) (CBNode*)) const {
void CBTree::traverse(void(*pf) (const CBNode*)) const {
CBNode* current = m_root;
const CBNode* current = m_root;
traverse(current, pf);
}
void CBTree::traverse(CBNode* current, void(*pf) (CBNode*)) const {
void CBTree::traverse(const CBNode* current, void(*pf) (const CBNode*)) const {
if (current == 0) { return; }
(*pf)(current);
std::set<CBNode*>::const_iterator citr = current->children().begin();
for (; citr != current->children().end(); ++citr) {
traverse( *citr, pf);
for (const CBNode* child : current->children()) {
traverse( child, pf);
}
}
void CBTree::traverseR(CBNode* current, void(*pf) (CBNode*)) const {
void CBTree::traverseR(const CBNode* current, void(*pf) (const CBNode*)) const {
// traverse tree in reverse
if (current == 0) { return; }
(*pf)(current);
std::set<CBNode*>::const_iterator citr = current->parents().begin();
for (; citr != current->parents().end(); ++citr) {
traverseR( *citr, pf);
for (const CBNode* parent : current->parents()) {
traverseR( parent, pf);
}
}
......@@ -508,38 +504,36 @@ void CBTree::traverseR(CBNode* current, void(*pf) (CBNode*)) const {
// Traverse tree, applying function void fnc(current, parent) to each node.
void CBTree::traverse(void(*pf) (CBNode*,CBNode*)) const {
void CBTree::traverse(void(*pf) (const CBNode*,const CBNode*)) const {
CBNode* current = m_root;
const CBNode* current = m_root;
traverse(current,0, pf);
}
void CBTree::traverse(CBNode* current, CBNode* parent,
void(*pf) (CBNode*, CBNode*)) const {
void CBTree::traverse(const CBNode* current, const CBNode* parent,
void(*pf) (const CBNode*, const CBNode*)) const {
if (current == 0) { return; }
(*pf)(current,parent);
std::set<CBNode*>::const_iterator citr = current->children().begin();
for (; citr != current->children().end(); ++citr) {
traverse( *citr, current, pf);
for (const CBNode* child : current->children()) {
traverse( child, current, pf);
}
}
void CBTree::traverseR(CBNode* current, CBNode* child,
void(*pf) (CBNode*, CBNode*)) const {
void CBTree::traverseR(const CBNode* current, const CBNode* child,
void(*pf) (const CBNode*, const CBNode*)) const {
if (current == 0) { return; }
(*pf)(current,child);
std::set<CBNode*>::const_iterator citr = current->parents().begin();
for (; citr != current->parents().end(); ++citr) {
traverseR( *citr, current, pf);
for (const CBNode* parent : current->parents()) {
traverseR( parent, current, pf);
}
}
......@@ -549,24 +543,22 @@ void CBTree::traverseR(CBNode* current, CBNode* child,
// Traverse tree, stopping when function CBNode* fnc( current ) returns
// a non-null. Good for searches.
CBNode* CBTree::traverse(CBNode* (*pf) (CBNode*)) const {
const CBNode* CBTree::traverse(const CBNode* (*pf) (const CBNode*)) const {
return traverse(m_root, pf);
}
CBNode* CBTree::traverse(CBNode* current, CBNode* (*pf) (CBNode*)) const {
const CBNode* CBTree::traverse(const CBNode* current, const CBNode* (*pf) (const CBNode*)) const {
CBNode *n = (*pf)(current);
const CBNode *n = (*pf)(current);
if ( n != 0 ) {
return n;
} else {
CBNode *c;
std::set<CBNode*>::const_iterator citr = current->children().begin();
for (; citr != current->children().end(); ++citr) {
c = traverse(*citr, pf );
for (const CBNode* child : current->children()) {
const CBNode* c = traverse(child, pf );
if (c != 0) {
return c;
}
......@@ -577,18 +569,16 @@ CBNode* CBTree::traverse(CBNode* current, CBNode* (*pf) (CBNode*)) const {
}
CBNode* CBTree::traverseR(CBNode* current, CBNode* (*pf) (CBNode*)) const {
const CBNode* CBTree::traverseR(const CBNode* current, const CBNode* (*pf) (const CBNode*)) const {
CBNode *n = (*pf)(current);
const CBNode *n = (*pf)(current);
if ( n != 0 ) {
return n;
} else {
CBNode *c;
std::set<CBNode*>::const_iterator citr = current->parents().begin();
for (; citr != current->parents().end(); ++citr) {
c = traverseR(*citr, pf );
for (const CBNode* parent : current->parents()) {
const CBNode* c = traverseR(parent, pf );
if (c != 0) {
return c;
}
......
/*
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
*/
#ifndef IOVSVC_CBTREE_H
......@@ -50,19 +50,19 @@ public:
void connectNode(CBNode* node, CBNode* parent);
void connectNode(const std::string& name, CBNode* parent);
CBNode* findNode(const std::string& name) const;
CBNode* findNode(const std::string& name, CBNode* start) const;
CBNode* findNode(const std::string& name);
CBNode* findNode(const std::string& name, CBNode* start);
CBNode* findNode(const SG::DataProxy* proxy) const;
CBNode* findNode(const SG::DataProxy* proxy, CBNode* start) const;
CBNode* findNode(const SG::DataProxy* proxy);
CBNode* findNode(const SG::DataProxy* proxy, CBNode* start);
CBNode* findNode(BFCN* fcn) const;
CBNode* findNode(BFCN* fcn, CBNode* start) const;
CBNode* findNode(BFCN* fcn);
CBNode* findNode(BFCN* fcn, CBNode* start);
bool delNode(const SG::DataProxy* prx);
void printTree() const;
void printTree( CBNode* start ) const;
void printTree( const CBNode* start ) const;
int maxLevel() const;
void adjustLevels( CBNode* start );
......@@ -72,30 +72,30 @@ public:
nodeSet::const_iterator& start,
nodeSet::const_iterator& end ) const;
void cascadeTrigger(const bool b, CBNode* start) const;
void cascadeTrigger(const bool b, BFCN* fcn) const;
void cascadeTrigger(const bool b, const SG::DataProxy* proxy) const;
void cascadeTrigger(const bool b, CBNode* start);
void cascadeTrigger(const bool b, BFCN* fcn);
void cascadeTrigger(const bool b, const SG::DataProxy* proxy);
void clearTrigger() const;
void cascadeFlag(const bool b, CBNode* node) const;
void clearFlag() const;
void traverse( void (*pF) (CBNode*) ) const;
void traverse( CBNode*, void (*pF) (CBNode*) ) const;
void traverseR( CBNode*, void (*pF) (CBNode*) ) const;
void traverse( void (*pF) (const CBNode*) ) const;
void traverse( const CBNode*, void (*pF) (const CBNode*) ) const;
void traverseR( const CBNode*, void (*pF) (const CBNode*) ) const;
CBNode* traverse( CBNode* (*pF) (CBNode*) ) const;
CBNode* traverse( CBNode*, CBNode* (*pF) (CBNode*) ) const;
CBNode* traverseR( CBNode*, CBNode* (*pF) (CBNode*) ) const;
const CBNode* traverse( const CBNode* (*pF) (const CBNode*) ) const;
const CBNode* traverse( const CBNode*, const CBNode* (*pF) (const CBNode*) ) const;
const CBNode* traverseR( const CBNode*, const CBNode* (*pF) (const CBNode*) ) const;
void traverse( void (*pF) (CBNode*, CBNode*) ) const;
void traverse( CBNode*, CBNode*, void (*pF) (CBNode*, CBNode*) ) const;
void traverseR( CBNode*, CBNode*, void (*pF) (CBNode*, CBNode*) ) const;
void traverse( void (*pF) (const CBNode*, const CBNode*) ) const;
void traverse( const CBNode*, const CBNode*, void (*pF) (const CBNode*, const CBNode*) ) const;
void traverseR( const CBNode*, const CBNode*, void (*pF) (const CBNode*, const CBNode*) ) const;
private:
static void _printTree( CBNode*, CBNode* );
static void _printTree( const CBNode*, const CBNode* );
CBNode* m_root;
nodeSet m_allNodes;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment