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