ATLAS Offline Software
Loading...
Searching...
No Matches
dqi::HanConfig::RefVisitor Class Reference

#include <HanConfig.h>

Inheritance diagram for dqi::HanConfig::RefVisitor:
Collaboration diagram for dqi::HanConfig::RefVisitor:

Public Member Functions

 RefVisitor (TFile *outfile_, HanConfig::DirMap_t &directories_, TMap *refsourcedata)
virtual void Visit (const MiniConfigTreeNode *node)

Protected Attributes

TFile * m_outfile {}
HanConfig::DirMap_tm_directories
TMap * m_refsourcedata {}

Detailed Description

Definition at line 76 of file HanConfig.h.

Constructor & Destructor Documentation

◆ RefVisitor()

dqi::HanConfig::RefVisitor::RefVisitor ( TFile * outfile_,
HanConfig::DirMap_t & directories_,
TMap * refsourcedata )

Definition at line 366 of file HanConfig.cxx.

368 : m_outfile(outfile_)
369 , m_directories(directories_)
370 , m_refsourcedata(refsourcedata_)
371{
372}
HanConfig::DirMap_t & m_directories
Definition HanConfig.h:82

Member Function Documentation

◆ Visit()

void dqi::HanConfig::RefVisitor::Visit ( const MiniConfigTreeNode * node)
virtual

Implements dqi::MiniConfigTreeNode::Visitor.

Definition at line 376 of file HanConfig.cxx.

378{
379 TObject* obj;
380 std::string name = node->GetAttribute("name");
381 std::string fileName = node->GetAttribute("file");
382 if( fileName != "" && name != "" && name != "same_name" ) {
383 fileName = SplitReference(node->GetAttribute("location"), fileName);
384 std::string refInfo = node->GetAttribute("info");
385 if (refInfo == "") {
386 std::cerr << "INFO: Reference " << name << " is defined without an \"info\" attribute. Consider adding one"
387 << std::endl;
388 }
389 std::unique_ptr<TFile> infile( TFile::Open(fileName.c_str()) );
390 TKey* key = getObjKey( infile.get(), name );
391 if( key == 0 ) {
392 std::cerr << "WARNING: HanConfig::RefVisitor::Visit(): Reference not found: \"" << name << "\"\n";
393 return;
394 }
395// TDirectory* dir = ChangeOutputDir( m_outfile, name, m_directories );
396// dir->cd();
397 //sami
398 m_outfile->cd();
399 obj = key->ReadObj();
400 // obj->Write();
402 //node->SetAttribute("newname",newHistoName,false);//add new name to tree
403 // std::cout<<"Writing \""<<name<<"\" in \""<<fileName<<"\" with new name \""<<newHistoName<<"\""<<std::endl;
404 dqi::ConditionsSingleton::getInstance().setNewReferenceName(fileName+":/"+name,newHistoName);
405 obj->Write(newHistoName.c_str());
406 delete obj;
407 TObjString* fnameostr = new TObjString(fileName.c_str());
408 m_refsourcedata->Add(new TObjString(newHistoName.c_str()),
409 fnameostr);
410 if (! m_refsourcedata->FindObject(fileName.c_str())) {
411 m_refsourcedata->Add(fnameostr->Clone(), refInfo != "" ? new TObjString(refInfo.c_str())
412 : new TObjString("Reference"));
413 }
414 }
415}
static ConditionsSingleton & getInstance()
void setNewReferenceName(const std::string &, const std::string &)
std::string SplitReference(std::string refPath, const std::string &refName)
TKey * getObjKey(TDirectory *dir, const std::string &path)
Definition HanUtils.cxx:36

Member Data Documentation

◆ m_directories

HanConfig::DirMap_t& dqi::HanConfig::RefVisitor::m_directories
protected

Definition at line 82 of file HanConfig.h.

◆ m_outfile

TFile* dqi::HanConfig::RefVisitor::m_outfile {}
protected

Definition at line 81 of file HanConfig.h.

81{};

◆ m_refsourcedata

TMap* dqi::HanConfig::RefVisitor::m_refsourcedata {}
protected

Definition at line 83 of file HanConfig.h.

83{};

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