ATLAS Offline Software
HanConfig.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef dqiHanConfig_h
6 #define dqiHanConfig_h
7 
8 #include <string>
9 #include <set>
10 #include <map>
11 #include <TList.h>
12 #include <TMap.h>
13 
14 #include <TObject.h>
15 
19 
20 #ifndef __CINT__
21 #include <boost/shared_ptr.hpp>
22 #endif
23 
25 ATLAS_NO_CHECK_FILE_THREAD_SAFETY; // standalone application
26 
27 class TDirectory;
28 class TFile;
29 class TKey;
30 
31 namespace dqm_core {
32  class Input;
33  class Output;
34  class Region;
35 }
36 
37 
38 namespace dqi {
39 
40 class MiniConfig;
41 class HanConfigGroup;
42 class HanOutput;
43 class HanInputRootFile;
44 
45 class HanConfig : public TObject {
46 public:
47 
49  virtual ~HanConfig();
50 
51 
52  virtual void AssembleAndSave( std::string infileName, std::string outfileName,
53  std::string connectionString="sqlite://;schema=/afs/cern.ch/user/a/atlasdqm/dqmdisk1/cherrypy-devel/RefDB.db;dbname=REFDB",
54  long runNumber=2147483646, bool bulk=false);
55 
56  virtual void BuildMonitors( std::string configName, HanInputRootFile& input, HanOutput& output );
57 #ifndef __CINT__
58  virtual boost::shared_ptr<dqm_core::Region> BuildMonitorsNewRoot( std::string configName, HanInputRootFile& input, dqm_core::Output& output );
59 #endif
60  virtual void BuildConfigOutput( std::string configName, TFile* inputFile, std::string path,
61  std::map<std::string,TSeqCollection*>* outputMap, TSeqCollection *outputList );
62 
63  virtual TObject* GetReference( std::string& groupName, std::string& name );
64  virtual const HanConfigAssessor* GetAssessor( std::string& groupName, std::string& name ) const;
65 
66  virtual void GetRegexList( std::set<std::string>& regexlist );
67 
68 protected:
69 
70  typedef std::map<std::string,TDirectory*> DirMap_t;
71 
72 
74  public:
75  RefVisitor( TFile* outfile_, HanConfig::DirMap_t& directories_, TMap* refsourcedata );
76  virtual void Visit( const MiniConfigTreeNode* node );
77  protected:
78  TFile* m_outfile;
81  };
82 
84  public:
85  RefWriter( DatabaseConfig& databaseConfig_, const bool bulk);
86  virtual void Write( MiniConfigTreeNode* node);
87  protected:
89  const bool m_bulk;
90  };
91 
93  public:
94  AssessmentVisitorBase( HanConfigGroup* root_, const MiniConfig& algConfig_,
95  const MiniConfig& thrConfig_, const MiniConfig& refConfig_,
96  TFile* outfile_, HanConfig::DirMap_t& directories_,
97  TMap* refsourcedata_ );
98 
99  protected:
100 
101  void GetAlgorithmConfiguration( HanConfigAssessor* dqpar, const std::string& algID,
102  const std::string& assessorName = "" );
103 
108  TFile* m_outfile;
111  // File cache
112  std::map<std::string, std::shared_ptr<TFile> > m_filecache;
113  // following is so we can skip repeated attempts to open nonexistent files
114  std::unordered_set<std::string> m_badPaths;
115  // following is a cache of the set of keys in each TFile
116  // vector since we are going to iterate through them
117  std::map<std::string, std::vector<std::string>> m_keycache;
118  std::shared_ptr<TFile> GetROOTFile(std::string& fname);
119  void PopulateKeyCache(std::string& fname, std::shared_ptr<TFile> file);
120  void EnsureKeyCache(std::string& fname);
121  };
122 
123 
125  public:
126  RegionVisitor( HanConfigGroup* root_, const MiniConfig& algConfig_,
127  const MiniConfig& thrConfig_, const MiniConfig& refConfig_,
128  HanConfig::DirMap_t& directories_ );
129  virtual void Visit( const MiniConfigTreeNode* node );
130  };
131 
132 
134  public:
135  AssessmentVisitor( HanConfigGroup* root_, const MiniConfig& algConfig_,
136  const MiniConfig& thrConfig_, const MiniConfig& refConfig_,
137  TFile* outfile_, HanConfig::DirMap_t& directories_,
138  TMap* refsourcedata_ );
139  virtual void Visit( const MiniConfigTreeNode* node );
140  };
141 
142 #ifndef __CINT__
144  public:
145  RegexVisitor( std::set<std::string>& regexes_ );
146  virtual boost::shared_ptr<dqm_core::Node>
147  Visit( const HanConfigAssessor* node, boost::shared_ptr<dqm_core::Region> );
148  protected:
149  std::set<std::string>& m_regexes;
150  };
151 
153  public:
154  ConfigVisitor( TFile* file_, dqm_core::Output* output_ );
155  virtual boost::shared_ptr<dqm_core::Node>
156  Visit( const HanConfigAssessor* node, boost::shared_ptr<dqm_core::Region> dqParent );
157  protected:
158  TFile* m_file;
160  };
161 #endif
162 
164  public:
165  CompAlgVisitor( TFile* outfile_ , const MiniConfig& compAlgConfig_);
166  virtual void Visit( const MiniConfigTreeNode* node );
167  protected:
168  TFile* m_outfile;
170  };
171 
173  public:
174  MetadataVisitor( TFile* outfile_ , const MiniConfig& metadataConfig_);
175  virtual void Visit( const MiniConfigTreeNode* node );
176  protected:
177  TFile* m_outfile;
179  };
180 
181 
182  bool Initialize( const std::string& configName );
183 
184 
185  TFile* m_config;
186 #ifndef __CINT__
187  boost::shared_ptr<dqm_core::Region> m_dqRoot;
188 #endif
190  TSeqCollection* m_metadata;
191 
192 //Get rid of Root macros that confuse Doxygen
194  ClassDef( HanConfig, 0 ) // Creates a Han configuration from a MiniConfig
196 
197 private:
198 
199  static TKey* GetObjKey( TDirectory* dir, std::string path );
200  static TDirectory* ChangeInputDir( TDirectory* dir, const std::string& path );
201  static TDirectory* ChangeOutputDir( TFile* file, const std::string& path, DirMap_t& directories );
202 
203 };
204 
205 } // namespace dqi
206 
207 #endif
dqi::HanConfig::AssessmentVisitorBase
Definition: HanConfig.h:92
dqi::HanConfig::AssessmentVisitorBase::m_thrConfig
const MiniConfig & m_thrConfig
Definition: HanConfig.h:106
dqi::MiniConfigTreeNode
A node of a tree structure holding a configuration, where each node may be given attributes,...
Definition: MiniConfigTreeNode.h:25
dqi::HanConfig::AssembleAndSave
virtual void AssembleAndSave(std::string infileName, std::string outfileName, std::string connectionString="sqlite://;schema=/afs/cern.ch/user/a/atlasdqm/dqmdisk1/cherrypy-devel/RefDB.db;dbname=REFDB", long runNumber=2147483646, bool bulk=false)
dqi::HanConfig::RefWriter
Definition: HanConfig.h:83
dqi::HanConfig::RegexVisitor::m_regexes
std::set< std::string > & m_regexes
Definition: HanConfig.h:149
dqi::HanConfig::RefVisitor::Visit
virtual void Visit(const MiniConfigTreeNode *node)
athena.path
path
python interpreter configuration --------------------------------------—
Definition: athena.py:126
directories
std::vector< std::string > directories
Definition: listroot.cxx:185
dqi::HanConfig::AssessmentVisitorBase::GetAlgorithmConfiguration
void GetAlgorithmConfiguration(HanConfigAssessor *dqpar, const std::string &algID, const std::string &assessorName="")
dqi::HanConfig::ConfigVisitor::Visit
virtual boost::shared_ptr< dqm_core::Node > Visit(const HanConfigAssessor *node, boost::shared_ptr< dqm_core::Region > dqParent)
MiniConfigTreeNode.h
RunTileMonitoring.groupName
groupName
Definition: RunTileMonitoring.py:158
dqi::HanConfig::MetadataVisitor
Definition: HanConfig.h:172
dqi::HanConfig::RegionVisitor::Visit
virtual void Visit(const MiniConfigTreeNode *node)
dqi::HanConfig::RegexVisitor::Visit
virtual boost::shared_ptr< dqm_core::Node > Visit(const HanConfigAssessor *node, boost::shared_ptr< dqm_core::Region >)
dqi::HanConfig::AssessmentVisitor::Visit
virtual void Visit(const MiniConfigTreeNode *node)
dqi::HanConfig::GetAssessor
virtual const HanConfigAssessor * GetAssessor(std::string &groupName, std::string &name) const
dqi::HanConfig::AssessmentVisitorBase::AssessmentVisitorBase
AssessmentVisitorBase(HanConfigGroup *root_, const MiniConfig &algConfig_, const MiniConfig &thrConfig_, const MiniConfig &refConfig_, TFile *outfile_, HanConfig::DirMap_t &directories_, TMap *refsourcedata_)
dqi::HanConfig::~HanConfig
virtual ~HanConfig()
dqi::HanOutput
Definition: HanOutput.h:39
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
dqi::HanConfig::MetadataVisitor::Visit
virtual void Visit(const MiniConfigTreeNode *node)
dqi::HanConfig::AssessmentVisitorBase::m_directories
HanConfig::DirMap_t & m_directories
Definition: HanConfig.h:109
dqi::HanConfig::RefWriter::m_bulk
const bool m_bulk
Definition: HanConfig.h:89
dqm_core
Definition: HanConfig.h:31
dqi::HanConfig::m_dqRoot
boost::shared_ptr< dqm_core::Region > m_dqRoot
Definition: HanConfig.h:187
dqi::HanConfig::MetadataVisitor::m_metadataConfig
const MiniConfig & m_metadataConfig
Definition: HanConfig.h:178
dqi::HanConfig::RefWriter::m_databaseConfig
DatabaseConfig & m_databaseConfig
Definition: HanConfig.h:88
dqi::HanConfig::Initialize
bool Initialize(const std::string &configName)
dqi::HanConfig::RefVisitor::m_directories
HanConfig::DirMap_t & m_directories
Definition: HanConfig.h:79
dqi::HanConfig::GetRegexList
virtual void GetRegexList(std::set< std::string > &regexlist)
dqi::HanConfigGroup
Definition: HanConfigGroup.h:23
dqi::HanConfig::AssessmentVisitorBase::m_badPaths
std::unordered_set< std::string > m_badPaths
Definition: HanConfig.h:114
dqi::HanConfig::DirMap_t
std::map< std::string, TDirectory * > DirMap_t
Definition: HanConfig.h:70
dqi::HanConfig::AssessmentVisitorBase::GetROOTFile
std::shared_ptr< TFile > GetROOTFile(std::string &fname)
dqi::HanConfig::AssessmentVisitorBase::m_algConfig
const MiniConfig & m_algConfig
Definition: HanConfig.h:105
dqi::HanConfig::BuildMonitors
virtual void BuildMonitors(std::string configName, HanInputRootFile &input, HanOutput &output)
dqi::HanConfig::RefVisitor::RefVisitor
RefVisitor(TFile *outfile_, HanConfig::DirMap_t &directories_, TMap *refsourcedata)
dqi::HanConfig::RegexVisitor::RegexVisitor
RegexVisitor(std::set< std::string > &regexes_)
CaloCondBlobAlgs_fillNoiseFromASCII.inputFile
string inputFile
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:17
dq_make_web_display.dqpar
dqpar
Definition: dq_make_web_display.py:45
dqi::HanConfig::CompAlgVisitor
Definition: HanConfig.h:163
dqi::DatabaseConfig
Definition: DatabaseConfig.h:15
dqi::HanConfig::ChangeInputDir
static TDirectory * ChangeInputDir(TDirectory *dir, const std::string &path)
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
file
TFile * file
Definition: tile_monitor.h:29
HanConfigAssessor.h
dqi::HanConfig::AssessmentVisitorBase::m_filecache
std::map< std::string, std::shared_ptr< TFile > > m_filecache
Definition: HanConfig.h:112
dqi::MiniConfigTreeNode::Visitor
Definition: MiniConfigTreeNode.h:28
dqi::HanConfig::m_config
TFile * m_config
Definition: HanConfig.h:185
Region
Region
Definition: TrigL2HitResidual.h:14
dqi::MiniConfigTreeNode::Writer
Definition: MiniConfigTreeNode.h:34
dqi::HanConfig::CompAlgVisitor::Visit
virtual void Visit(const MiniConfigTreeNode *node)
dqi::HanConfig::CompAlgVisitor::m_compAlgConfig
const MiniConfig & m_compAlgConfig
Definition: HanConfig.h:169
dqi::HanConfig::CompAlgVisitor::m_outfile
TFile * m_outfile
Definition: HanConfig.h:168
dqi::HanConfigAssessor
Definition: HanConfigAssessor.h:37
dqi::HanConfig::AssessmentVisitorBase::m_root
HanConfigGroup * m_root
Definition: HanConfig.h:104
dqi::HanConfig::ConfigVisitor::ConfigVisitor
ConfigVisitor(TFile *file_, dqm_core::Output *output_)
dqi::HanConfig::AssessmentVisitorBase::EnsureKeyCache
void EnsureKeyCache(std::string &fname)
dqi::MiniConfig
description
Definition: MiniConfig.h:25
dqi::HanConfig::AssessmentVisitor::AssessmentVisitor
AssessmentVisitor(HanConfigGroup *root_, const MiniConfig &algConfig_, const MiniConfig &thrConfig_, const MiniConfig &refConfig_, TFile *outfile_, HanConfig::DirMap_t &directories_, TMap *refsourcedata_)
dqi::HanConfig::RegionVisitor::RegionVisitor
RegionVisitor(HanConfigGroup *root_, const MiniConfig &algConfig_, const MiniConfig &thrConfig_, const MiniConfig &refConfig_, HanConfig::DirMap_t &directories_)
dqi::HanConfig::GetObjKey
static TKey * GetObjKey(TDirectory *dir, std::string path)
dqi::HanConfig::ConfigVisitor::m_file
TFile * m_file
Definition: HanConfig.h:158
beamspotman.dir
string dir
Definition: beamspotman.py:623
merge.output
output
Definition: merge.py:17
dqi::HanInputRootFile
Definition: HanInputRootFile.h:19
private
#define private
Definition: DetDescrConditionsDict_dict_fixes.cxx:13
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
dqi::HanConfig::BuildMonitorsNewRoot
virtual boost::shared_ptr< dqm_core::Region > BuildMonitorsNewRoot(std::string configName, HanInputRootFile &input, dqm_core::Output &output)
dqi::HanConfig::RefWriter::Write
virtual void Write(MiniConfigTreeNode *node)
dqi::HanConfig::AssessmentVisitorBase::m_outfile
TFile * m_outfile
Definition: HanConfig.h:108
dqi::HanConfigAssessor::Visitor
Definition: HanConfigAssessor.h:41
dqi::HanConfig::MetadataVisitor::m_outfile
TFile * m_outfile
Definition: HanConfig.h:177
python.AthDsoLogger.fname
string fname
Definition: AthDsoLogger.py:67
DeMoAtlasDataLoss.runNumber
string runNumber
Definition: DeMoAtlasDataLoss.py:64
dqi::HanConfig::GetReference
virtual TObject * GetReference(std::string &groupName, std::string &name)
dqi::HanConfig::RefWriter::RefWriter
RefWriter(DatabaseConfig &databaseConfig_, const bool bulk)
dqi::HanConfig::RefVisitor
Definition: HanConfig.h:73
dqi::HanConfig::ChangeOutputDir
static TDirectory * ChangeOutputDir(TFile *file, const std::string &path, DirMap_t &directories)
dqi::HanConfig
Definition: HanConfig.h:45
skel.Output
Output
Definition: skel.ABtoEVGEN.py:112
dqi::HanConfig::m_metadata
TSeqCollection * m_metadata
Definition: HanConfig.h:190
dqi::HanConfig::RefVisitor::m_outfile
TFile * m_outfile
Definition: HanConfig.h:78
dqi::HanConfig::m_top_level
HanConfigGroup * m_top_level
Definition: HanConfig.h:189
dqi::HanConfig::HanConfig
HanConfig()
dqi::HanConfig::ConfigVisitor::m_output
dqm_core::Output * m_output
Definition: HanConfig.h:159
dqi::HanConfig::AssessmentVisitor
Definition: HanConfig.h:133
dqi::HanConfig::AssessmentVisitorBase::m_refConfig
const MiniConfig & m_refConfig
Definition: HanConfig.h:107
dqi::HanConfig::AssessmentVisitorBase::m_keycache
std::map< std::string, std::vector< std::string > > m_keycache
Definition: HanConfig.h:117
NswErrorCalibData::Input
Helper struct to be parsed to the object to derive the specific error of the cluster.
Definition: NswErrorCalibData.h:25
ATLAS_NO_CHECK_FILE_THREAD_SAFETY
ATLAS_NO_CHECK_FILE_THREAD_SAFETY
Definition: HanConfig.h:25
dqi::HanConfig::MetadataVisitor::MetadataVisitor
MetadataVisitor(TFile *outfile_, const MiniConfig &metadataConfig_)
dqi::HanConfig::CompAlgVisitor::CompAlgVisitor
CompAlgVisitor(TFile *outfile_, const MiniConfig &compAlgConfig_)
dqi::HanConfig::AssessmentVisitorBase::PopulateKeyCache
void PopulateKeyCache(std::string &fname, std::shared_ptr< TFile > file)
checker_macros.h
Define macros for attributes used to control the static checker.
dqi
Definition: CompositeAlgorithm.h:16
dqi::HanConfig::BuildConfigOutput
virtual void BuildConfigOutput(std::string configName, TFile *inputFile, std::string path, std::map< std::string, TSeqCollection * > *outputMap, TSeqCollection *outputList)
dqi::HanConfig::AssessmentVisitorBase::m_refsourcedata
TMap * m_refsourcedata
Definition: HanConfig.h:110
DatabaseConfig.h
node
Definition: memory_hooks-stdcmalloc.h:74
dqi::HanConfig::RegionVisitor
Definition: HanConfig.h:124
dqi::HanConfig::RegexVisitor
Definition: HanConfig.h:143
dqi::HanConfig::ConfigVisitor
Definition: HanConfig.h:152
dqi::HanConfig::RefVisitor::m_refsourcedata
TMap * m_refsourcedata
Definition: HanConfig.h:80