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 35 of file TGoodRunsListReader.cxx.

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

◆ TGoodRunsListReader() [2/2]

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

Definition at line 43 of file TGoodRunsListReader.cxx.

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

◆ ~TGoodRunsListReader()

Root::TGoodRunsListReader::~TGoodRunsListReader ( )

Definition at line 52 of file TGoodRunsListReader.cxx.

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

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 324 of file TGoodRunsListReader.cxx.

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

◆ 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 211 of file TGoodRunsListReader.cxx.

212{
213 Root::TGoodRun goodrun;
214
215 // sanity check
216 if (!dataNode->HasChildren()) {
217 m_logger << kWARNING << "<Data> ... </Data> Part does not contain any parameters" << GEndl;
218 return goodrun;
219 }
220
221 // retrieve childrens of node
222 TXMLNode* node = dataNode->GetChildren();
223
224 for (; node != 0; node = node->GetNextNode()) {
225 // read run
226 if (TString("Run")==node->GetNodeName()) {
227 m_logger << kDEBUG << "subchild node value: " << node->GetText() << GEndl;
228 goodrun.SetRunNumber(atoi(node->GetText()));
229 }
230 // read lumi block
231 if (TString("LBRange")==node->GetNodeName() && node->HasAttributes()) {
232 Root::TLumiBlockRange lbr;
233 lbr.SetEnd(2147483647); // set in case lb turns out to be open-ended
234 TXMLAttr* curAttr( 0 );
235 TListIter attribIt(node->GetAttributes());
236 while ((curAttr = (TXMLAttr*)attribIt()) != 0) {
237 if (TString("Start")==curAttr->GetName()) {
238 m_logger << kDEBUG << node->GetNodeName() << ": " << curAttr->GetName()
239 << " = \"" << curAttr->GetValue() << "\"" << GEndl;
240 lbr.SetBegin(atoi(curAttr->GetValue()));
241 } else if (TString("End")==curAttr->GetName()) {
242 m_logger << kDEBUG << node->GetNodeName() << ": " << curAttr->GetName()
243 << " = \"" << curAttr->GetValue() << "\"" << GEndl;
244 lbr.SetEnd(atoi(curAttr->GetValue()));
245 }
246 }
247 if (!lbr.IsEmpty()) goodrun.push_back(lbr);
248 }
249 }
250
251 goodrun.Sort();
252 return goodrun;
253}
#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 317 of file TGoodRunsListReader.cxx.

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

◆ GetMergedGRLCollection()

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

Definition at line 331 of file TGoodRunsListReader.cxx.

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

◆ 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 70 of file TGoodRunsListReader.cxx.

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

◆ ReadAttribs()

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

Definition at line 165 of file TGoodRunsListReader.cxx.

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

◆ ReadLumiBlockCollection()

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

Definition at line 180 of file TGoodRunsListReader.cxx.

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

◆ ReadNamedLumiRange()

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

set name

set version

set metadata

set run and lb range

Definition at line 257 of file TGoodRunsListReader.cxx.

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

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

◆ 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: