ATLAS Offline Software
Loading...
Searching...
No Matches
HanApp.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4
5// **********************************************************************
6// $Id: HanApp.cxx,v 1.13 2008-12-07 03:25:37 ponyisi Exp $
7// **********************************************************************
8
10
11#include <TFile.h>
12#include <TROOT.h>
13
14#include "dqm_core/LibraryManager.h"
15#include "dqm_core/InputRootFile.h"
21
22#include <TCanvas.h>
23
24#include <utility>
25
27ATLAS_NO_CHECK_FILE_THREAD_SAFETY; // standalone application
28
29//Get rid of Root macros that confuse Doxygen
33
34 /*
35void HanApp_dummyMethod()
36{
37 TCanvas* dummyCanvas = new TCanvas("dummyCanvas","dummyCanvas", 450, 450 );
38 dummyCanvas->cd();
39}
40 */
41
42namespace {
43
44 void RecursivelyDeleteCollection(TCollection* seq) {
45 TIter it(seq);
46 while (TObject* obj = it()) {
47 TCollection* coll = dynamic_cast<TCollection*>(obj);
48 if (coll) {
49 RecursivelyDeleteCollection(coll);
50 }
51 }
52 seq->Delete();
53 }
54
55} // end unnamed namespace
56
57
58namespace dqi {
59
60// *********************************************************************
61// Public Methods
62// *********************************************************************
63
65HanApp()
66 : m_outputName("")
67{
68}
69
70
72HanApp( const std::string& configName, const std::string& inputName, const std::string& outputName, const std::string& path )
73{
74 HanApp::Analyze( configName, inputName, outputName, path );
75}
76
77
79~HanApp()
80{
81}
82
83
84int
86Analyze( const std::string& configName_, const std::string& inputName_, const std::string& outputName_, const std::string& path_ )
87{
88 DisableMustClean disabled;
89
90 auto& runtimeConfig = HanRuntimeConfigSingleton::getInstance();
91 runtimeConfig.setPath( path_ );
92
94 TSeqCollection *outputList = new TList();
95
96 m_outputName = outputName_;
97
98 //dqm_core::InputRootFile input( inputName_ );
99 HanInputRootFile input( inputName_, path_ ); // HanInputRootFile inherits from dqm_core::InputRootFile
100
101 HanOutput output( outputName_, outputMap, outputList );
102 output.setInput(const_cast<TDirectory*>(input.getBasedir()));
103
104 dqm_core::LibraryManager::instance().loadLibrary( "libdqm_algorithms.so" );
105 dqm_core::LibraryManager::instance().loadLibrary( "libdqm_summaries.so" );
106
108 std::cout << "Reading configuration and input histograms...\n" << std::flush;
109 config.BuildMonitors( configName_, input, output );
110 std::cout << "Preparing output...\n" << std::flush;
111 config.BuildConfigOutput( configName_, input.file(), path_, outputMap, outputList );
112
113 std::cout << "Analyzing histograms...\n" << std::flush;
114 output.activate();
115 input.activate();
116 output.publishMissingDQPars();
117
118 std::cout << "Writing output file...\n" << std::flush;
119 output.deactivate(); // essential for the HanOutput object since it writes the output file
120
121 std::cout << "Deleting objects from memory.\n" << std::flush;
122 RecursivelyDeleteCollection(outputList);
123 delete outputList;
124 delete outputMap;
125 return 0;
126}
127
128
129TFile*
131OpenResultsFile() const
132{
133 if( m_outputName == "" )
134 return 0;
135
136 return TFile::Open( m_outputName.c_str() );
137}
138
139} // namespace dqi
140
ClassImp(xAOD::Experimental::RFileChecker) namespace xAOD
Define macros for attributes used to control the static checker.
#define ATLAS_NO_CHECK_FILE_THREAD_SAFETY
virtual TFile * OpenResultsFile() const
Definition HanApp.cxx:131
virtual int Analyze(const std::string &configName_, const std::string &inputName_, const std::string &outputName_, const std::string &path_="")
Definition HanApp.cxx:86
virtual ~HanApp()
Definition HanApp.cxx:79
std::string m_outputName
Definition HanApp.h:35
std::map< std::string, TSeqCollection * > DQOutputMap_t
Definition HanOutput.h:45
static HanRuntimeConfigSingleton & getInstance()