Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
GoodRunsListSelectorTool Class Reference

This file contains the class definition for the GoodRunsListSelectorTool class. More...

#include <GoodRunsListSelectorTool.h>

Inheritance diagram for GoodRunsListSelectorTool:
Collaboration diagram for GoodRunsListSelectorTool:

Public Member Functions

 GoodRunsListSelectorTool (const std::string &, const std::string &, const IInterface *)
 
virtual ~GoodRunsListSelectorTool ()
 
StatusCode initialize ()
 Initialize AlgTool. More...
 
bool passEvent (const EventIDBase &pEvent)
 called for each event by EventSelector to decide if the event should be passed More...
 
StatusCode finalize ()
 Finalize AlgTool. More...
 
bool passRunLB (int runNumber, int lumiBlockNr, const std::vector< std::string > &grlnameVec=std::vector< std::string >(), const std::vector< std::string > &brlnameVec=std::vector< std::string >())
 called for each event by GoodRunsListSelectorAlg to decide if the event should be passed More...
 
bool passThisRunLB (const std::vector< std::string > &grlnameVec=std::vector< std::string >(), const std::vector< std::string > &brlnameVec=std::vector< std::string >())
 called for each event by GoodRunsListSelectorAlg to decide if the event should be passed More...
 
bool registerGRLSelector (const std::string &name, const std::vector< std::string > &grlnameVec, const std::vector< std::string > &brlnameVec)
 register grl/brl combination More...
 
const std::map< std::string, vvPair > & getGRLSelectorRegistry ()
 get GRL selector registry More...
 
const Root::TGRLCollectiongetGRLCollection () const
 get grl/brl collection More...
 
const Root::TGRLCollectiongetBRLCollection () const
 

Protected Member Functions

bool fileExists (const char *fileName)
 

Protected Attributes

std::vector< std::string > m_goodrunslistVec
 
std::vector< std::string > m_blackrunslistVec
 
Root::TGRLCollectionm_grlcollection
 
Root::TGRLCollectionm_brlcollection
 
Root::TGoodRunsListReaderm_reader
 
std::map< std::string, TFormula * > m_dqformula
 
int m_boolop
 
bool m_passthrough
 
bool m_rejectanybrl
 
bool m_eventselectormode
 
std::map< std::string, vvPairm_registry
 

Detailed Description

This file contains the class definition for the GoodRunsListSelectorTool class.

Definition at line 35 of file GoodRunsListSelectorTool.h.

Constructor & Destructor Documentation

◆ GoodRunsListSelectorTool()

GoodRunsListSelectorTool::GoodRunsListSelectorTool ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

Definition at line 23 of file GoodRunsListSelectorTool.cxx.

24  : base_class( type, name, parent )
25  , m_reader(0)
26  , m_boolop(0)
27  , m_passthrough(true)
28  , m_rejectanybrl(false)
29  , m_eventselectormode(false)
30 {
31  declareProperty( "GoodRunsListVec", m_goodrunslistVec, "list of input xml files" );
32  declareProperty( "BlackRunsListVec", m_blackrunslistVec, "list of input xml files" );
33  declareProperty( "BoolOperation", m_boolop );
34  declareProperty( "PassThrough", m_passthrough = true);
35  declareProperty( "RejectBlackRunsInEventSelector", m_rejectanybrl = false );
36  declareProperty( "EventSelectorMode", m_eventselectormode = false );
37 
41 }

◆ ~GoodRunsListSelectorTool()

GoodRunsListSelectorTool::~GoodRunsListSelectorTool ( )
virtual

Definition at line 44 of file GoodRunsListSelectorTool.cxx.

45 {
46  if (m_grlcollection!=0) delete m_grlcollection;
47  if (m_brlcollection!=0) delete m_brlcollection;
48  if (m_reader!=0) delete m_reader;
49 
50  // delete all the formula pntrs in the map
51  while ( ! m_dqformula.empty() ) {
53  TFormula* form = (*itr).second;
54  m_dqformula.erase(itr);
55  delete form;
56  }
57 }

Member Function Documentation

◆ fileExists()

bool GoodRunsListSelectorTool::fileExists ( const char *  fileName)
protected

stat() is able to get the file attributes, so the file obviously exists if filesize==0 assume the copying failed.

stat() is not able to get the file attributes, so the file obviously does not exist.

Definition at line 276 of file GoodRunsListSelectorTool.cxx.

277 {
278  struct stat info;
279  int ret = -1;
280 
281  //get the file attributes
282  ret = stat(fileName, &info);
283 
284  if(ret == 0) {
287  //if (info.st_size == 0) return false;
288  //else
289  return true;
290  } else {
292  return false;
293  }
294 }

◆ finalize()

StatusCode GoodRunsListSelectorTool::finalize ( )

Finalize AlgTool.

Definition at line 268 of file GoodRunsListSelectorTool.cxx.

269 {
270  ATH_MSG_DEBUG ("finalize() ");
271  return StatusCode::SUCCESS;
272 }

◆ getBRLCollection()

const Root::TGRLCollection* GoodRunsListSelectorTool::getBRLCollection ( ) const
inline

Definition at line 62 of file GoodRunsListSelectorTool.h.

62 { return m_brlcollection; }

◆ getGRLCollection()

const Root::TGRLCollection* GoodRunsListSelectorTool::getGRLCollection ( ) const
inline

get grl/brl collection

Definition at line 61 of file GoodRunsListSelectorTool.h.

61 { return m_grlcollection; }

◆ getGRLSelectorRegistry()

const std::map< std::string, vvPair >& GoodRunsListSelectorTool::getGRLSelectorRegistry ( )
inline

get GRL selector registry

Definition at line 58 of file GoodRunsListSelectorTool.h.

58 { return m_registry; }

◆ initialize()

StatusCode GoodRunsListSelectorTool::initialize ( )

Initialize AlgTool.

reset pass-through mode

warn about pass-thru mode

checking existence of goodrunslists / blacklists

start reading xml files

this merge accounts for same identical metadata, version, name, etc.

this merge accounts for same identical metadata, version, name, etc.

Definition at line 61 of file GoodRunsListSelectorTool.cxx.

62 {
63  ATH_MSG_DEBUG ("initialize() ");
64 
65  Root::TMsgLogger::SetMinLevel(static_cast<Root::TMsgLevel>(msgLevel()));
66 
68  if (!m_goodrunslistVec.empty() || !m_blackrunslistVec.empty())
69  m_passthrough=false;
70 
72  if (m_passthrough) ATH_MSG_WARNING ("Set to pass-through mode.");
73 
76  for (itr=m_goodrunslistVec.begin(); itr!=m_goodrunslistVec.end(); ++itr) {
77  //const char* fname;
78  std::string fname;
79  if ( itr->find('/')==0 || itr->find('$')==0 || itr->find('.')==0 || itr->find(':')!=string::npos ) {
80  fname = gSystem->ExpandPathName( itr->c_str() );
81  }
82  else {
83  fname = (PathResolverFindXMLFile( *itr ));
84  }
85  if ( !fileExists(fname.c_str()) ) {
86  ATH_MSG_ERROR ("Cannot open file : " << fname);
87  return StatusCode::FAILURE;
88  }
89  }
90  for (itr=m_blackrunslistVec.begin(); itr!=m_blackrunslistVec.end(); ++itr) {
91  //const char* fname;
92  std::string fname;
93  if ( itr->find('/')==0 || itr->find('$')==0 || itr->find('.')==0 || itr->find(':')!=string::npos ) {
94  fname = gSystem->ExpandPathName( itr->c_str() );
95  }
96  else {
97  fname = (PathResolverFindXMLFile( *itr ));
98  }
99  if ( !fileExists(fname.c_str()) ) {
100  ATH_MSG_ERROR ("Cannot open file : " << fname);
101  return StatusCode::FAILURE;
102  }
103  }
105  if ( !m_goodrunslistVec.empty() ) {
106  m_reader->Reset();
107  for (itr=m_goodrunslistVec.begin(); itr!=m_goodrunslistVec.end(); ++itr) {
108  //const char* fname;
109  std::string fname;
110  if ( itr->find('/')==0 || itr->find('$')==0 || itr->find('.')==0 || itr->find(':')!=string::npos ) {
111  fname = gSystem->ExpandPathName( itr->c_str() );
112  }
113  else {
114  fname = (PathResolverFindXMLFile( *itr ));
115  }
117  }
118  m_reader->Interpret();
121  }
122  if ( !m_blackrunslistVec.empty() ) {
123  m_reader->Reset();
124  for (itr=m_blackrunslistVec.begin(); itr!=m_blackrunslistVec.end(); ++itr) {
125  //const char* fname;
126  std::string fname;
127  if ( itr->find('/')==0 || itr->find('$')==0 || itr->find('.')==0 || itr->find(':')!=string::npos ) {
128  fname = gSystem->ExpandPathName( itr->c_str() );
129  }
130  else {
131  fname = (PathResolverFindXMLFile( *itr ));
132  }
134  }
135  m_reader->Interpret();
138  }
139 
140  return StatusCode::SUCCESS;
141 }

◆ passEvent()

bool GoodRunsListSelectorTool::passEvent ( const EventIDBase &  pEvent)

called for each event by EventSelector to decide if the event should be passed

now make query decision ...

decide from XML files

Definition at line 145 of file GoodRunsListSelectorTool.cxx.

146 {
147  ATH_MSG_DEBUG ("passEvent() ");
148 
149  auto eventNumber = pEvent.event_number();
150  int runNumber = pEvent.run_number();
151  int lumiBlockNr = pEvent.lumi_block();
152  auto timeStamp = pEvent.time_stamp();
153 
154  ATH_MSG_DEBUG ("passEvent() :: run number = " << runNumber <<
155  " ; event number = " << eventNumber <<
156  " ; lumiblock number = " << lumiBlockNr <<
157  " ; timestamp = " << timeStamp
158  );
159 
161  bool pass(false);
162  if (m_passthrough) {
163  ATH_MSG_DEBUG ("passEvent() :: Pass through mode.");
164  pass = true;
165  }
167  else {
168  pass = this->passRunLB(runNumber,lumiBlockNr);
169  }
170 
171  return pass;
172 }

◆ passRunLB()

bool GoodRunsListSelectorTool::passRunLB ( int  runNumber,
int  lumiBlockNr,
const std::vector< std::string > &  grlnameVec = std::vector<std::string>(),
const std::vector< std::string > &  brlnameVec = std::vector<std::string>() 
)

called for each event by GoodRunsListSelectorAlg to decide if the event should be passed

pass through

decision based on merged blackrunslist

decision based on specific blackrunlists

decision based on specific goodrunlists

decision based on merged goodrunslist

Definition at line 210 of file GoodRunsListSelectorTool.cxx.

213 {
214  ATH_MSG_DEBUG ("passRunLB() ");
215 
217  if (m_passthrough) {
218  ATH_MSG_DEBUG ("passRunLB() :: Pass through mode.");
219  return true;
220  }
221 
224  if ( m_brlcollection->HasRunLumiBlock(runNumber,lumiBlockNr) ) {
225  ATH_MSG_DEBUG ("passRunLB() :: Event rejected by (_any_ of) merged black runs list.");
226  return false;
227  }
229  } else if (!brlnameVec.empty()) {
230  bool reject(false);
231  std::vector<Root::TGoodRunsList>::const_iterator brlitr;
232  for (unsigned int i=0; i<brlnameVec.size() && !reject; ++i) {
233  brlitr = m_brlcollection->find(brlnameVec[i]);
234  if (brlitr!=m_brlcollection->end())
235  reject = brlitr->HasRunLumiBlock(runNumber,lumiBlockNr);
236  }
237  if (reject) {
238  ATH_MSG_DEBUG ("passRunLB() :: Event rejected by specific black runs list.");
239  return false;
240  }
241  }
242 
244  if (!grlnameVec.empty()) {
245  bool pass(false);
246  std::vector<Root::TGoodRunsList>::const_iterator grlitr;
247  for (unsigned int i=0; i<grlnameVec.size() && !pass; ++i) {
248  grlitr = m_grlcollection->find(grlnameVec[i]);
249  if (grlitr!=m_grlcollection->end())
250  pass = grlitr->HasRunLumiBlock(runNumber,lumiBlockNr);
251  }
252  if (pass) {
253  ATH_MSG_DEBUG ("passRunLB() :: Event accepted by specific good runs list.");
254  return true;
255  }
257  } else if (m_grlcollection->HasRunLumiBlock(runNumber,lumiBlockNr)) {
258  ATH_MSG_DEBUG ("passRunLB() :: Event accepted by (_any_ of) merged good runs list.");
259  return true;
260  }
261 
262  ATH_MSG_DEBUG ("passRunLB() :: Event rejected, not in (any) good runs list.");
263  return false;
264 }

◆ passThisRunLB()

bool GoodRunsListSelectorTool::passThisRunLB ( const std::vector< std::string > &  grlnameVec = std::vector<std::string>(),
const std::vector< std::string > &  brlnameVec = std::vector<std::string>() 
)

called for each event by GoodRunsListSelectorAlg to decide if the event should be passed

now make query decision ...

decide from XML files

Definition at line 176 of file GoodRunsListSelectorTool.cxx.

178 {
179  ATH_MSG_DEBUG ("passThisRunLB() ");
180 
181  const EventContext& ctx = Gaudi::Hive::currentContext();
182 
183  int eventNumber = ctx.eventID().event_number();
184  int runNumber = ctx.eventID().run_number();
185  int lumiBlockNr = ctx.eventID().lumi_block();
186  int timeStamp = ctx.eventID().time_stamp();
187 
188  ATH_MSG_DEBUG ("passThisRunLB() :: run number = " << runNumber <<
189  " ; event number = " << eventNumber <<
190  " ; lumiblock number = " << lumiBlockNr <<
191  " ; timestamp = " << timeStamp
192  );
193 
195  bool pass(false);
196  if (m_passthrough) {
197  ATH_MSG_DEBUG ("passThisRunLB() :: Pass through mode.");
198  pass = true;
199  }
201  else {
202  pass = this->passRunLB(runNumber,lumiBlockNr,grlnameVec,brlnameVec);
203  }
204 
205  return pass;
206 }

◆ registerGRLSelector()

bool GoodRunsListSelectorTool::registerGRLSelector ( const std::string &  name,
const std::vector< std::string > &  grlnameVec,
const std::vector< std::string > &  brlnameVec 
)

register grl/brl combination

check if brl names are really known

check if grl names are really known

Definition at line 298 of file GoodRunsListSelectorTool.cxx.

299 {
300  if (m_registry.find(name)!=m_registry.end()) {
301  ATH_MSG_WARNING ("registerGRLSelector() :: GRL selector with name <" << name << "> already registered. Return false.");
302  return false;
303  }
304 
306  if (!brlnameVec.empty()) {
307  std::vector<Root::TGoodRunsList>::const_iterator brlitr;
308  for (unsigned int i=0; i<brlnameVec.size(); ++i) {
309  brlitr = m_brlcollection->find(brlnameVec[i]);
310  if (brlitr==m_brlcollection->end()) {
311  ATH_MSG_ERROR ("registerGRLSelector() :: requested BRL object with name <" << brlnameVec[i] << "> not found. Have you provided an object name from the BRL xml-file(s)?");
312  return false;
313  }
314  }
315  }
316 
318  if (!grlnameVec.empty()) {
319  std::vector<Root::TGoodRunsList>::const_iterator grlitr;
320  for (unsigned int i=0; i<grlnameVec.size(); ++i) {
321  grlitr = m_grlcollection->find(grlnameVec[i]);
322  if (grlitr==m_grlcollection->end()) {
323  ATH_MSG_ERROR ("registerGRLSelector() :: requested GRL object with name <" << grlnameVec[i] << "> not found. Have you provided an object name from the GRL xml-file(s)?");
324  return false;
325  }
326  }
327  }
328 
329  ATH_MSG_DEBUG ("registerGRLSelector() :: GRL selector with name <" << name << "> registered.");
330  m_registry[name] = vvPair(grlnameVec,brlnameVec);
331  return true;
332 }

Member Data Documentation

◆ m_blackrunslistVec

std::vector<std::string> GoodRunsListSelectorTool::m_blackrunslistVec
protected

Definition at line 69 of file GoodRunsListSelectorTool.h.

◆ m_boolop

int GoodRunsListSelectorTool::m_boolop
protected

Definition at line 78 of file GoodRunsListSelectorTool.h.

◆ m_brlcollection

Root::TGRLCollection* GoodRunsListSelectorTool::m_brlcollection
protected

Definition at line 72 of file GoodRunsListSelectorTool.h.

◆ m_dqformula

std::map< std::string,TFormula* > GoodRunsListSelectorTool::m_dqformula
protected

Definition at line 76 of file GoodRunsListSelectorTool.h.

◆ m_eventselectormode

bool GoodRunsListSelectorTool::m_eventselectormode
protected

Definition at line 81 of file GoodRunsListSelectorTool.h.

◆ m_goodrunslistVec

std::vector<std::string> GoodRunsListSelectorTool::m_goodrunslistVec
protected

Definition at line 68 of file GoodRunsListSelectorTool.h.

◆ m_grlcollection

Root::TGRLCollection* GoodRunsListSelectorTool::m_grlcollection
protected

Definition at line 71 of file GoodRunsListSelectorTool.h.

◆ m_passthrough

bool GoodRunsListSelectorTool::m_passthrough
protected

Definition at line 79 of file GoodRunsListSelectorTool.h.

◆ m_reader

Root::TGoodRunsListReader* GoodRunsListSelectorTool::m_reader
protected

Definition at line 74 of file GoodRunsListSelectorTool.h.

◆ m_registry

std::map< std::string, vvPair > GoodRunsListSelectorTool::m_registry
protected

Definition at line 83 of file GoodRunsListSelectorTool.h.

◆ m_rejectanybrl

bool GoodRunsListSelectorTool::m_rejectanybrl
protected

Definition at line 80 of file GoodRunsListSelectorTool.h.


The documentation for this class was generated from the following files:
grepfile.info
info
Definition: grepfile.py:38
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
Root::TGoodRunsListReader
Definition: TGoodRunsListReader.h:34
GoodRunsListSelectorTool::m_boolop
int m_boolop
Definition: GoodRunsListSelectorTool.h:78
GoodRunsListSelectorTool::m_grlcollection
Root::TGRLCollection * m_grlcollection
Definition: GoodRunsListSelectorTool.h:71
GoodRunsListSelectorTool::fileExists
bool fileExists(const char *fileName)
Definition: GoodRunsListSelectorTool.cxx:276
GoodRunsListSelectorTool::m_rejectanybrl
bool m_rejectanybrl
Definition: GoodRunsListSelectorTool.h:80
GoodRunsListSelectorTool::m_goodrunslistVec
std::vector< std::string > m_goodrunslistVec
Definition: GoodRunsListSelectorTool.h:68
Root::TGRLCollection::find
std::vector< TGoodRunsList >::iterator find(const TString &name)
Definition: TGRLCollection.cxx:226
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
GoodRunsListSelectorTool::m_eventselectormode
bool m_eventselectormode
Definition: GoodRunsListSelectorTool.h:81
vvPair
std::pair< std::vector< std::string >, std::vector< std::string > > vvPair
Definition: IGoodRunsListSelectorTool.h:13
GoodRunsListSelectorTool::passRunLB
bool passRunLB(int runNumber, int lumiBlockNr, const std::vector< std::string > &grlnameVec=std::vector< std::string >(), const std::vector< std::string > &brlnameVec=std::vector< std::string >())
called for each event by GoodRunsListSelectorAlg to decide if the event should be passed
Definition: GoodRunsListSelectorTool.cxx:210
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
lumiFormat.i
int i
Definition: lumiFormat.py:85
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
PathResolverFindXMLFile
std::string PathResolverFindXMLFile(const std::string &logical_file_name)
Definition: PathResolver.cxx:374
Root::TMsgLevel
TMsgLevel
Definition: TMsgLogger.h:42
GoodRunsListSelectorTool::m_brlcollection
Root::TGRLCollection * m_brlcollection
Definition: GoodRunsListSelectorTool.h:72
GoodRunsListSelectorTool::m_dqformula
std::map< std::string, TFormula * > m_dqformula
Definition: GoodRunsListSelectorTool.h:76
test_pyathena.parent
parent
Definition: test_pyathena.py:15
Root::TGRLCollection::HasRunLumiBlock
Bool_t HasRunLumiBlock(const Int_t &runnr, const Int_t &lumiblocknr) const
Definition: TGRLCollection.cxx:100
xAOD::eventNumber
eventNumber
Definition: EventInfo_v1.cxx:124
beamspotman.stat
stat
Definition: beamspotman.py:266
Root::TGRLCollection
Definition: TGRLCollection.h:29
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
xAOD::timeStamp
setEventNumber timeStamp
Definition: EventInfo_v1.cxx:128
python.AthDsoLogger.fname
string fname
Definition: AthDsoLogger.py:67
DeMoAtlasDataLoss.runNumber
string runNumber
Definition: DeMoAtlasDataLoss.py:64
GoodRunsListSelectorTool::m_blackrunslistVec
std::vector< std::string > m_blackrunslistVec
Definition: GoodRunsListSelectorTool.h:69
GoodRunsListSelectorTool::m_registry
std::map< std::string, vvPair > m_registry
Definition: GoodRunsListSelectorTool.h:83
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Root::TGoodRunsListReader::Interpret
Bool_t Interpret()
Definition: TGoodRunsListReader.cxx:71
Root::TGoodRunsListReader::GetMergedGRLCollection
const TGRLCollection GetMergedGRLCollection(const Root::BoolOperation &operation=OR) const
Definition: TGoodRunsListReader.cxx:332
GoodRunsListSelectorTool::m_passthrough
bool m_passthrough
Definition: GoodRunsListSelectorTool.h:79
jobOptions.fileName
fileName
Definition: jobOptions.SuperChic_ALP2.py:39
Root::TGoodRunsListReader::Reset
void Reset()
Definition: TGoodRunsListReader.cxx:60
Root::BoolOperation
BoolOperation
Definition: TGRLCollection.h:27
GoodRunsListSelectorTool::m_reader
Root::TGoodRunsListReader * m_reader
Definition: GoodRunsListSelectorTool.h:74
Root::TGoodRunsListReader::AddXMLFile
void AddXMLFile(const TString &xmlfile)
Definition: TGoodRunsListReader.h:48
Root::TMsgLogger::SetMinLevel
static void SetMinLevel(TMsgLevel minLevel)
Definition: TMsgLogger.h:96