ATLAS Offline Software
Loading...
Searching...
No Matches
Root::TGoodRunsListReader Class Reference

#include <TGoodRunsListReader.h>

Inheritance diagram for Root::TGoodRunsListReader:
Collaboration diagram for Root::TGoodRunsListReader:

Public Member Functions

 TGoodRunsListReader (Bool_t checkGRLInfo=kFALSE)
 TGoodRunsListReader (const TString &dataCardName, Bool_t checkGRLInfo=kFALSE)
 ~TGoodRunsListReader ()
Bool_t Interpret ()
const TString & GetXMLString () const
const TString & GetXMLFilename () const
void AddXMLFile (const TString &xmlfile)
void AddXMLString (const TString &xmlstring)
void SetXMLString (const TString &xmlstring)
void SetXMLFile (const TString &xmlfile)
void SetCheckGRLInfo (Bool_t check=kTRUE)
const TGoodRunsList GetMergedGoodRunsList (const Root::BoolOperation &operation=OR) const
const TGoodRunsList GetGoodRunsList (unsigned int idx) const
const TGRLCollection GetGRLCollection () const
const TGRLCollection GetMergedGRLCollection (const Root::BoolOperation &operation=OR) const
void Reset ()

Private Member Functions

void ReadNamedLumiRange (TXMLNode *)
void ReadLumiBlockCollection (TXMLNode *)
void ReadAttribs (TXMLNode *)
TGoodRun GetLumiBlockCollection (TXMLNode *dataNode)

Private Attributes

TString m_xmlstring
TString m_dataCardName
std::vector< TString > m_dataCardList
std::vector< TString > m_xmlstringList
TMsgLogger m_logger
TGRLCollection m_grlvec

Detailed Description

Definition at line 34 of file TGoodRunsListReader.h.

Constructor & Destructor Documentation

◆ TGoodRunsListReader() [1/2]

Root::TGoodRunsListReader::TGoodRunsListReader ( Bool_t checkGRLInfo = kFALSE)

Definition at line 36 of file TGoodRunsListReader.cxx.

37 : TObject()
38 , m_logger( "TGoodRunsListReader" )
39{
40 m_grlvec.SetCheckGRLInfo( checkGRLInfo );
41}

◆ TGoodRunsListReader() [2/2]

Root::TGoodRunsListReader::TGoodRunsListReader ( const TString & dataCardName,
Bool_t checkGRLInfo = kFALSE )

Definition at line 44 of file TGoodRunsListReader.cxx.

45 : TObject()
46 , m_logger( "TGoodRunsListReader" )
47{
48 m_dataCardList.push_back(dataCardName);
49 m_grlvec.SetCheckGRLInfo( checkGRLInfo );
50}
std::vector< TString > m_dataCardList

◆ ~TGoodRunsListReader()

Root::TGoodRunsListReader::~TGoodRunsListReader ( )

Definition at line 53 of file TGoodRunsListReader.cxx.

54{
55 this->Reset();
56}

Member Function Documentation

◆ AddXMLFile()

void Root::TGoodRunsListReader::AddXMLFile ( const TString & xmlfile)
inline

Definition at line 48 of file TGoodRunsListReader.h.

48{ m_dataCardList.push_back(xmlfile); }
static std::vector< std::string > xmlfile
Definition iLumiCalc.h:29

◆ AddXMLString()

void Root::TGoodRunsListReader::AddXMLString ( const TString & xmlstring)
inline

Definition at line 49 of file TGoodRunsListReader.h.

49{ m_xmlstringList.push_back(xmlstring); }
std::vector< TString > m_xmlstringList

◆ GetGoodRunsList()

const Root::TGoodRunsList Root::TGoodRunsListReader::GetGoodRunsList ( unsigned int idx) const

Definition at line 325 of file TGoodRunsListReader.cxx.

326{
327 return m_grlvec.GetGoodRunsList(idx);
328}

◆ GetGRLCollection()

const TGRLCollection Root::TGoodRunsListReader::GetGRLCollection ( ) const
inline

Definition at line 56 of file TGoodRunsListReader.h.

56{ return m_grlvec; }

◆ GetLumiBlockCollection()

Root::TGoodRun Root::TGoodRunsListReader::GetLumiBlockCollection ( TXMLNode * dataNode)
private

Definition at line 212 of file TGoodRunsListReader.cxx.

213{
214 Root::TGoodRun goodrun;
215
216 // sanity check
217 if (!dataNode->HasChildren()) {
218 m_logger << kWARNING << "<Data> ... </Data> Part does not contain any parameters" << GEndl;
219 return goodrun;
220 }
221
222 // retrieve childrens of node
223 TXMLNode* node = dataNode->GetChildren();
224
225 for (; node != 0; node = node->GetNextNode()) {
226 // read run
227 if (TString("Run")==node->GetNodeName()) {
228 m_logger << kDEBUG << "subchild node value: " << node->GetText() << GEndl;
229 goodrun.SetRunNumber(atoi(node->GetText()));
230 }
231 // read lumi block
232 if (TString("LBRange")==node->GetNodeName() && node->HasAttributes()) {
233 Root::TLumiBlockRange lbr;
234 lbr.SetEnd(2147483647); // set in case lb turns out to be open-ended
235 TXMLAttr* curAttr( 0 );
236 TListIter attribIt(node->GetAttributes());
237 while ((curAttr = (TXMLAttr*)attribIt()) != 0) {
238 if (TString("Start")==curAttr->GetName()) {
239 m_logger << kDEBUG << node->GetNodeName() << ": " << curAttr->GetName()
240 << " = \"" << curAttr->GetValue() << "\"" << GEndl;
241 lbr.SetBegin(atoi(curAttr->GetValue()));
242 } else if (TString("End")==curAttr->GetName()) {
243 m_logger << kDEBUG << node->GetNodeName() << ": " << curAttr->GetName()
244 << " = \"" << curAttr->GetValue() << "\"" << GEndl;
245 lbr.SetEnd(atoi(curAttr->GetValue()));
246 }
247 }
248 if (!lbr.IsEmpty()) goodrun.push_back(lbr);
249 }
250 }
251
252 goodrun.Sort();
253 return goodrun;
254}
#define GEndl
Definition TMsgLogger.h:147
void SetRunNumber(const Int_t &runnr)
Definition TGoodRun.h:43
void SetBegin(const Int_t &begin)
void SetEnd(const Int_t &end)
int atoi(std::string_view str)
Helper functions to unpack numbers decoded in string into integers and doubles The strings are requir...
@ kWARNING
Definition TMsgLogger.h:41
@ kDEBUG
Definition TMsgLogger.h:39

◆ GetMergedGoodRunsList()

const Root::TGoodRunsList Root::TGoodRunsListReader::GetMergedGoodRunsList ( const Root::BoolOperation & operation = OR) const

Definition at line 318 of file TGoodRunsListReader.cxx.

319{
320 return m_grlvec.GetMergedGoodRunsList(operation);
321}

◆ GetMergedGRLCollection()

const Root::TGRLCollection Root::TGoodRunsListReader::GetMergedGRLCollection ( const Root::BoolOperation & operation = OR) const

Definition at line 332 of file TGoodRunsListReader.cxx.

333{
334 return m_grlvec.GetMergedGRLCollection(operation);
335}

◆ GetXMLFilename()

const TString & Root::TGoodRunsListReader::GetXMLFilename ( ) const
inline

Definition at line 46 of file TGoodRunsListReader.h.

◆ GetXMLString()

const TString & Root::TGoodRunsListReader::GetXMLString ( ) const
inline

Definition at line 45 of file TGoodRunsListReader.h.

◆ Interpret()

Bool_t Root::TGoodRunsListReader::Interpret ( )

Definition at line 71 of file TGoodRunsListReader.cxx.

72{
73 Bool_t xmlInterpret(kTRUE);
74
75 if (m_dataCardList.empty() && m_xmlstringList.empty()) {
76 m_logger << kWARNING << "No xml data-card or string set. Return false." << GEndl;
77 return kFALSE;
78 }
79
80 Int_t parseCode(1);
81 TDOMParser* xmlparser = new TDOMParser();
82
84
85 // --------------- xml file read
86 for (unsigned int j=0; j<m_dataCardList.size() && xmlInterpret; ++j) {
88
89 if (!m_dataCardName.IsNull()) {
90 m_logger << kDEBUG << "Read xml data-card: \"" << m_dataCardName << "\"" << GEndl;
91 xmlparser->SetValidate(kFALSE); // MB 14/4/'10 : don't validate structure of dtd file in case runquery down
92 parseCode = xmlparser->ParseFile( m_dataCardName );
93 } else {
94 m_logger << kWARNING << "No xml data-card set. Skip." << GEndl;
95 continue;
96 }
97
98 m_logger << kDEBUG << "XML parser returned code: " << parseCode << GEndl;
99 if (parseCode != 0) {
100 m_logger << kERROR << "loading of xml document failed" << GEndl;
101 xmlInterpret = kFALSE;
102 } else {
103 // --------------- parse JobConfiguration
104 TXMLDocument* xmldoc = xmlparser->GetXMLDocument();
105
106 TXMLNode* jobConfig_node = xmldoc->GetRootNode();
107 TXMLNode* jobConfig_elem = jobConfig_node->GetChildren();
108
109 while (jobConfig_elem != 0) {
110 if (jobConfig_elem->GetNodeName() == TString("NamedLumiRange")) {
111 this->ReadNamedLumiRange ( jobConfig_elem );
112 }
113 // crawl on...
114 jobConfig_elem = jobConfig_elem->GetNextNode();
115 }
116 }
117 }
118 m_dataCardList.clear(); // Can now add fresh xml files
119
121
122 // --------------- xml string read
123 for (unsigned int j=0; j<m_xmlstringList.size() && xmlInterpret; ++j) {
125
126 if (!m_xmlstring.IsNull()) {
127 m_logger << kDEBUG << "Read xml string." << GEndl;
128 xmlparser->SetValidate(kFALSE); // MB 14/4/'10 : don't validate structure of dtd file in case runquery down
129 parseCode = xmlparser->ParseBuffer( m_xmlstring.Data(), m_xmlstring.Length() );
130 } else {
131 m_logger << kWARNING << "No xml string set. Skip." << GEndl;
132 continue;
133 }
134
135 m_logger << kDEBUG << "XML parser returned code: " << parseCode << GEndl;
136 if (parseCode != 0) {
137 m_logger << kERROR << "loading of xml document failed" << GEndl;
138 xmlInterpret = kFALSE;
139 } else {
140 // --------------- parse JobConfiguration
141 TXMLDocument* xmldoc = xmlparser->GetXMLDocument();
142
143 TXMLNode* jobConfig_node = xmldoc->GetRootNode();
144 TXMLNode* jobConfig_elem = jobConfig_node->GetChildren();
145
146 while (jobConfig_elem != 0) {
147 if (jobConfig_elem->GetNodeName() == TString("NamedLumiRange")) {
148 this->ReadNamedLumiRange ( jobConfig_elem );
149 }
150 // crawl on...
151 jobConfig_elem = jobConfig_elem->GetNextNode();
152 }
153 }
154 }
155 m_xmlstringList.clear(); // Can now add fresh xml strings
156
158
159 delete xmlparser;
160
161 return xmlInterpret;
162}
@ kERROR
Definition TMsgLogger.h:42

◆ ReadAttribs()

void Root::TGoodRunsListReader::ReadAttribs ( TXMLNode * node)
private

Definition at line 166 of file TGoodRunsListReader.cxx.

167{
168 if (!node->HasAttributes()) return;
169
170 TListIter attribIt( node->GetAttributes() );
171 TXMLAttr* curAttr( 0 );
172 while ((curAttr = (TXMLAttr*)attribIt()) != 0) {
173 m_logger << kDEBUG << node->GetNodeName() << ": " << curAttr->GetName()
174 << " = \"" << curAttr->GetValue() << "\"" << GEndl;
175 // add variable
176 }
177}

◆ ReadLumiBlockCollection()

void Root::TGoodRunsListReader::ReadLumiBlockCollection ( TXMLNode * dataNode)
private

Definition at line 181 of file TGoodRunsListReader.cxx.

182{
183 // retrieve childrens of node
184 TXMLNode* node = dataNode->GetChildren();
185
186 for (; node != 0; node = node->GetNextNode()) {
187
188 // read run
189 if (TString("Run")==node->GetNodeName()) {
190 m_logger << kDEBUG << "subchild node value: " << node->GetText() << GEndl;
191 }
192
193 // read lumi block
194 if (TString("LBRange")==node->GetNodeName() && node->HasAttributes()) {
195 TXMLAttr* curAttr( 0 );
196 TListIter attribIt(node->GetAttributes());
197 while ((curAttr = (TXMLAttr*)attribIt()) != 0) {
198 if (TString("Start")==curAttr->GetName()) {
199 m_logger << kDEBUG << node->GetNodeName() << ": " << curAttr->GetName()
200 << " = \"" << curAttr->GetValue() << "\"" << GEndl;
201 } else if (TString("End")==curAttr->GetName()) {
202 m_logger << kDEBUG << node->GetNodeName() << ": " << curAttr->GetName()
203 << " = \"" << curAttr->GetValue() << "\"" << GEndl;
204 }
205 }
206 }
207 }
208}

◆ ReadNamedLumiRange()

void Root::TGoodRunsListReader::ReadNamedLumiRange ( TXMLNode * dataNode)
private

set name

set version

set metadata

set run and lb range

Definition at line 258 of file TGoodRunsListReader.cxx.

259{
260 // sanity check
261 if (!dataNode->HasChildren()) {
262 m_logger << kWARNING << "<Data> ... </Data> Part does not contain any parameters" << GEndl;
263 return;
264 }
265
266 // retrieve childrens of node
267 TXMLNode* node = dataNode->GetChildren();
268 Root::TGoodRunsList grl(m_dataCardName.Data());
269 std::string nameStr, valueStr;
270
271 for (; node != 0; node = node->GetNextNode()) {
273 if (TString("Name") == node->GetNodeName()) {
274 if (node->GetText()!=0) {
275 m_logger << kDEBUG << "child node value: " << node->GetText() << GEndl;
276 nameStr=node->GetText();
277 } else { nameStr=""; }
278 GRLStrUtil::trim(nameStr);
279 grl.SetName(nameStr.c_str());
280 }
282 else if (TString("Version") == node->GetNodeName()) {
283 if (node->GetText()!=0) {
284 m_logger << kDEBUG << "child node value: " << node->GetText() << GEndl;
285 valueStr=node->GetText();
286 } else { valueStr=""; }
287 GRLStrUtil::trim(valueStr);
288 grl.SetVersion(valueStr);
289 }
291 else if (TString("Metadata") == node->GetNodeName()) {
292 if (node->GetText()!=0) m_logger << kDEBUG << node->GetNodeName() << " value: " << node->GetText() << GEndl;
293 this->ReadAttribs(node);
294
295 if (node->HasAttributes()) {
296 TListIter attribIt( node->GetAttributes() );
297 TXMLAttr* curAttr( 0 );
298 while ((curAttr = (TXMLAttr*)attribIt()) != 0) {
299 if (curAttr->GetValue()!=0) { nameStr=curAttr->GetValue(); } else { nameStr=""; }
300 if (node->GetText()!=0) { valueStr=node->GetText(); } else { valueStr=""; }
301 GRLStrUtil::trim(nameStr); GRLStrUtil::trim(valueStr);
302 if (!nameStr.empty() && !valueStr.empty()) grl.AddMetaData(nameStr,valueStr);
303 }
304 }
305 }
307 else if (TString("LumiBlockCollection") == node->GetNodeName()) {
308 Root::TGoodRun goodrun = this->GetLumiBlockCollection(node);
309 if (!goodrun.IsEmpty()) grl[goodrun.GetRunNumber()] = goodrun ;
310 }
311 }
312
313 if (!grl.IsEmpty()) m_grlvec.push_back(grl);
314}
Bool_t IsEmpty() const
Definition TGoodRun.cxx:251
Int_t GetRunNumber() const
Definition TGoodRun.h:42
TGoodRun GetLumiBlockCollection(TXMLNode *dataNode)
void trim(std::string &input)
Definition StrUtil.cxx:12

◆ Reset()

void Root::TGoodRunsListReader::Reset ( )

Definition at line 60 of file TGoodRunsListReader.cxx.

61{
62 m_grlvec.Reset();
63 m_dataCardList.clear();
64 m_xmlstringList.clear();
65 m_xmlstring=""; //Clear() only works in root5.24
67}

◆ SetCheckGRLInfo()

void Root::TGoodRunsListReader::SetCheckGRLInfo ( Bool_t check = kTRUE)
inline

Definition at line 52 of file TGoodRunsListReader.h.

52{ m_grlvec.SetCheckGRLInfo( check ); }

◆ SetXMLFile()

void Root::TGoodRunsListReader::SetXMLFile ( const TString & xmlfile)
inline

Definition at line 51 of file TGoodRunsListReader.h.

51{ Reset(); m_dataCardList.push_back(xmlfile); }

◆ SetXMLString()

void Root::TGoodRunsListReader::SetXMLString ( const TString & xmlstring)
inline

Definition at line 50 of file TGoodRunsListReader.h.

50{ Reset(); m_xmlstringList.push_back(xmlstring); }

Member Data Documentation

◆ m_dataCardList

std::vector<TString> Root::TGoodRunsListReader::m_dataCardList
private

Definition at line 71 of file TGoodRunsListReader.h.

◆ m_dataCardName

TString Root::TGoodRunsListReader::m_dataCardName
private

Definition at line 70 of file TGoodRunsListReader.h.

◆ m_grlvec

TGRLCollection Root::TGoodRunsListReader::m_grlvec
private

Definition at line 74 of file TGoodRunsListReader.h.

◆ m_logger

TMsgLogger Root::TGoodRunsListReader::m_logger
private

Definition at line 73 of file TGoodRunsListReader.h.

◆ m_xmlstring

TString Root::TGoodRunsListReader::m_xmlstring
private

Definition at line 69 of file TGoodRunsListReader.h.

◆ m_xmlstringList

std::vector<TString> Root::TGoodRunsListReader::m_xmlstringList
private

Definition at line 72 of file TGoodRunsListReader.h.


The documentation for this class was generated from the following files: