Commit 83c5e66b authored by Martin Errenst's avatar Martin Errenst
Browse files

Update ITHistSvc for better Athena migration

The previous changes in the interface were to drastic. They would have
required too many changes for a service that is likely to be rewritten
for ROOT7 within the next 2 years anyway. (2018, 2019)

So here we offer a deprecated version without proper ownership
management that still works the same in the new implementation.

Fix wrong naming in ITHistSvcMT

Update ITHistSvc for better legacy support

There is now a deprecated regHist method with the old interface.
Since we don't want to spam too much during the Athena build, the new
regHist method, that transfers ownership, can also return a raw pointer
directly. This supports a very common use case in Athena, where the
registered histogram is used afterwards.
The migration is likely to be scriptable in this case.

Adapt new interface in THistSvc.h

Fix small typo in THistSvc.h

Update InterfaceID version in ITHistSvc

Fix wrong default parameter in interface

Fit implementation to new interface

Fix THistSvc tests and ref files

Remove TODOs that are not relevant yet

Apply formatting from CI artifacts

Update IHistSvc to be more consistent

Add THistSvc tests and fix reference

The write tests now also contains tests for the new regHist and
regShared/getShared methods.

Update dbg reference as well

Apply formatting patch

Remove deprecation attribute from ITHistSvc

This would introduce an additional warning for every Gaudi build, while
the intention is to discourage the use of its implementation in
THistSvc.h.
The interface method is still marked as deprecated through a doxygen
comment.

Add accidentally deleated return type to regHist

Comment out deprecation attribute in THistSvc.h

Initialize pointer in THistSvc tests

Add GAUDI_API back to ITHistSvc

Initialize all pointers in THistSvc

Apply clang formatting patch from CI

Hide deprecation warning behind ATLAS includeguard

Let the thistwrite ignore specific file sizes

Revert sortgroup regex

The previous change did not cover all of the necessary cases and was
wrong.

Apply formatting artifacts

Change test regex also for reading
parent 12c13eaa
......@@ -34,45 +34,50 @@ StatusCode THistRead::initialize()
}
// stream read1, 1D in "/xxx"
StatusCode sc1 = m_ths->regHist( "/read1/xxx/1Dgauss" );
TH1* h1 = m_ths->getHistTH1( "/read1/xxx/1Dgauss" );
if ( sc1.isFailure() || h1 == nullptr ) {
StatusCode sc1a = m_ths->regHist( "/read1/xxx/1Dgauss" );
TH1* h1( nullptr );
StatusCode sc1b = m_ths->getHist( "/read1/xxx/1Dgauss", h1 );
if ( sc1a.isFailure() || sc1b.isFailure() || h1 == nullptr ) {
error() << "Couldn't read gauss1d" << endmsg;
} else {
info() << h1->GetName() << ": " << h1->GetEntries() << endmsg;
}
// stream read2, 2D tree in "/"
StatusCode sc2 = m_ths->regHist( "/read2/2Dgauss" );
TH2* h2 = m_ths->getHistTH2( "/read2/2Dgauss" );
if ( sc2.isFailure() || h2 == nullptr ) {
StatusCode sc2a = m_ths->regHist( "/read2/2Dgauss" );
TH2* h2( nullptr );
StatusCode sc2b = m_ths->getHist( "/read2/2Dgauss", h2 );
if ( sc2a.isFailure() || sc2b.isFailure() || h2 == nullptr ) {
error() << "Couldn't read 2Dgauss" << endmsg;
} else {
info() << h2->GetName() << ": " << h2->GetEntries() << endmsg;
}
// 3D tree in "/"
StatusCode sc3 = m_ths->regHist( "/read2/3Dgauss" );
TH3* h3 = m_ths->getHistTH3( "/read2/3Dgauss" );
if ( sc3.isFailure() || h3 == nullptr ) {
StatusCode sc3a = m_ths->regHist( "/read2/3Dgauss" );
TH3* h3( nullptr );
StatusCode sc3b = m_ths->getHist( "/read2/3Dgauss", h3 );
if ( sc3a.isFailure() || sc3b.isFailure() || h3 == nullptr ) {
error() << "Couldn't read 3Dgauss" << endmsg;
} else {
info() << h3->GetName() << ": " << h3->GetEntries() << endmsg;
}
// Profile in "/"
StatusCode sc4 = m_ths->regHist( "/read2/profile" );
TH1* tp = m_ths->getHistTH1( "/read2/profile" );
if ( sc4.isFailure() || tp == nullptr ) {
StatusCode sc4a = m_ths->regHist( "/read2/profile" );
TH1* tp( nullptr );
StatusCode sc4b = m_ths->getHist( "/read2/profile", tp );
if ( sc4a.isFailure() || sc4b.isFailure() || tp == nullptr ) {
error() << "Couldn't read profile" << endmsg;
} else {
info() << tp->GetName() << ": " << tp->GetEntries() << endmsg;
}
// Tree with branches in "/trees/stuff"
StatusCode sc5 = m_ths->regTree( "/read2/trees/stuff/treename" );
TTree* tr = m_ths->getTree( "/read2/trees/stuff/treename" );
if ( sc5.isFailure() || tr == nullptr ) {
StatusCode sc5a = m_ths->regTree( "/read2/trees/stuff/treename" );
TTree* tr( nullptr );
StatusCode sc5b = m_ths->getTree( "/read2/trees/stuff/treename", tr );
if ( sc5a.isFailure() || sc5b.isFailure() || tr == nullptr ) {
error() << "Couldn't read tree" << endmsg;
} else {
info() << tr->GetName() << ": " << tr->GetEntries() << endmsg;
......
......@@ -2,6 +2,7 @@
#include "THistWrite.h"
#include "GaudiKernel/ITHistSvc.h"
#include "GaudiKernel/LockedHandle.h"
#include "GaudiKernel/MsgStream.h"
#include "GaudiKernel/RndmGenerators.h"
#include <math.h>
......@@ -18,7 +19,8 @@
DECLARE_COMPONENT( THistWrite )
//------------------------------------------------------------------------------
THistWrite::THistWrite( const std::string& name, ISvcLocator* pSvcLocator ) : Algorithm( name, pSvcLocator ), m_ths( 0 )
THistWrite::THistWrite( const std::string& name, ISvcLocator* pSvcLocator )
: Algorithm( name, pSvcLocator ), m_ths( nullptr )
//------------------------------------------------------------------------------
{
}
......@@ -69,6 +71,22 @@ StatusCode THistWrite::initialize()
error() << "Couldn't register gauss3d" << endmsg;
}
TH1F* h5 = new TH1F( "TempHist5", "Temporary Tree 5", 100, 0., 100. );
if ( m_ths->regHist( "TempHist5", std::unique_ptr<TH1F>( h5 ) ).isFailure() ) {
error() << "Couldn't register TempHist5" << endmsg;
}
if ( strcmp( h5->GetName(), "TempHist5" ) ) {
error() << "Couldn't use TempHist5 afterwards. getName = " << h5->GetName() << endmsg;
}
TH1D* h6 = new TH1D( "TempHist6", "Temporary Tree 6", 100, 0., 100. );
if ( m_ths->regHist( "TempHist6", std::unique_ptr<TH1D>( h6 ), h6 ).isFailure() ) {
error() << "Couldn't register TempHist6" << endmsg;
}
if ( strcmp( h6->GetName(), "TempHist6" ) ) {
error() << "Couldn't use TempHist6 afterwards. getName = " << h6->GetName() << endmsg;
}
// Profile in "/"
std::unique_ptr<TH1> tp = std::make_unique<TProfile>( "profile", "profile", 100, -50., -50. );
if ( m_ths->regHist( "/rec/prof", std::move( tp ) ).isFailure() ) {
......@@ -81,6 +99,28 @@ StatusCode THistWrite::initialize()
error() << "Couldn't register tr" << endmsg;
}
// Update to stream "upd", dir "/xxx"
std::unique_ptr<TH1F> h3s = std::make_unique<TH1F>( "1Dgauss_shared", "1D Gaussian", 100, -50., 50. );
LockedHandle<TH1> lh1( nullptr, nullptr );
if ( m_ths->regShared( "/upd/xxx/gauss1d_shared", std::move( h3s ), lh1 ).isFailure() ) {
error() << "Couldn't register gauss1d_shared" << endmsg;
}
// Recreate 2D tree in "/"
std::unique_ptr<TH2F> h3sa = std::make_unique<TH2F>( "2Dgauss_shared", "2D Gaussian", 100, -50., 50., 100, -50, 50 );
LockedHandle<TH2> lh2( nullptr, nullptr );
if ( m_ths->regShared( "/rec/gauss2d_shared", std::move( h3sa ), lh2 ).isFailure() ) {
error() << "Couldn't register gauss2d_shared" << endmsg;
}
// 3D tree in "/"
std::unique_ptr<TH3F> h4s =
std::make_unique<TH3F>( "3Dgauss_shared", "3D Gaussian", 100, -50., 50., 100, -50, 50, 100, -50, 50 );
LockedHandle<TH3> lh3( nullptr, nullptr );
if ( m_ths->regShared( "/rec/gauss3d_shared", std::move( h4s ), lh3 ).isFailure() ) {
error() << "Couldn't register gauss3d_shared" << endmsg;
}
return StatusCode::SUCCESS;
}
......@@ -94,30 +134,26 @@ StatusCode THistWrite::execute()
double x = sin( double( n ) ) * 52. + 50.;
TH1* h( 0 );
h = m_ths->getHistTH1( "TempHist1" );
if ( h != nullptr ) {
TH1* h( nullptr );
if ( m_ths->getHist( "TempHist1", h ).isSuccess() ) {
h->Fill( x );
} else {
error() << "Couldn't retrieve TempHist 1" << endmsg;
}
h = m_ths->getHistTH1( "other/TempHist1a" );
if ( h != nullptr ) {
if ( m_ths->getHist( "other/TempHist1a", h ).isSuccess() ) {
h->Fill( x );
} else {
error() << "Couldn't retrieve TempHist 1a" << endmsg;
}
h = m_ths->getHistTH1( "/new/Tree2" );
if ( h != nullptr ) {
if ( m_ths->getHist( "/new/Tree2", h ).isSuccess() ) {
h->Fill( x );
} else {
error() << "Couldn't retrieve Tree2" << endmsg;
}
h = m_ths->getHistTH1( "/upd/xxx/gauss1d" );
if ( h != nullptr ) {
if ( m_ths->getHist( "/upd/xxx/gauss1d", h ).isSuccess() ) {
for ( int i = 0; i < 1000; ++i ) {
h->Fill( gauss(), 1. );
}
......@@ -125,9 +161,8 @@ StatusCode THistWrite::execute()
error() << "Couldn't retrieve 1Dgauss" << endmsg;
}
TH2* h2( 0 );
h2 = m_ths->getHistTH2( "/rec/gauss2d" );
if ( h2 != nullptr ) {
TH2* h2( nullptr );
if ( m_ths->getHist( "/rec/gauss2d", h2 ).isSuccess() ) {
for ( int i = 0; i < 1000; ++i ) {
h2->Fill( gauss(), gauss(), 1. );
}
......@@ -135,9 +170,8 @@ StatusCode THistWrite::execute()
error() << "Couldn't retrieve 2Dgauss" << endmsg;
}
TH3* h3( 0 );
h3 = m_ths->getHistTH3( "/rec/gauss3d" );
if ( h3 != nullptr ) {
TH3* h3( nullptr );
if ( m_ths->getHist( "/rec/gauss3d", h3 ).isSuccess() ) {
for ( int i = 0; i < 1000; ++i ) {
h3->Fill( gauss(), gauss(), gauss(), 1. );
}
......@@ -145,9 +179,47 @@ StatusCode THistWrite::execute()
error() << "Couldn't retrieve 3Dgauss" << endmsg;
}
TTree* tr;
tr = m_ths->getTree( "/rec/trees/stuff/tree1" );
if ( tr == nullptr ) {
if ( m_ths->getHist( "TempHist5", h ).isSuccess() ) {
h->Fill( x );
} else {
error() << "Couldn't retrieve TempHist 5" << endmsg;
}
if ( m_ths->getHist( "TempHist6", h ).isSuccess() ) {
h->Fill( x );
} else {
error() << "Couldn't retrieve TempHist 6" << endmsg;
}
LockedHandle<TH1> lh1( nullptr, nullptr );
if ( m_ths->getShared( "/upd/xxx/gauss1d_shared", lh1 ).isSuccess() ) {
for ( int i = 0; i < 1000; ++i ) {
lh1->Fill( gauss(), 1. );
}
} else {
error() << "Couldn't retrieve 1Dgauss_shared" << endmsg;
}
LockedHandle<TH2> lh2( nullptr, nullptr );
if ( m_ths->getShared( "/rec/gauss2d_shared", lh2 ).isSuccess() ) {
for ( int i = 0; i < 1000; ++i ) {
lh2->Fill( gauss(), gauss(), 1. );
}
} else {
error() << "Couldn't retrieve 2Dgauss_shared" << endmsg;
}
LockedHandle<TH3> lh3( nullptr, nullptr );
if ( m_ths->getShared( "/rec/gauss3d_shared", lh3 ).isSuccess() ) {
for ( int i = 0; i < 1000; ++i ) {
lh3->Fill( gauss(), gauss(), gauss(), 1. );
}
} else {
error() << "Couldn't retrieve 3Dgauss_shared" << endmsg;
}
TTree* tr( nullptr );
if ( m_ths->getTree( "/rec/trees/stuff/tree1", tr ).isFailure() ) {
error() << "Couldn't retrieve tree tree1" << endmsg;
} else {
if ( n == 0 ) {
......
......@@ -8,6 +8,9 @@
</set></argument>
<argument name="validator"><text>
preprocessor = normalizeExamples + \
RegexpReplacer(when = "^THistSvc",
orig = r"(stream: (read1|read2) name: tuple[0-9].rt size: )([0-9]*)",
repl = r"\1###") + \
RegexpReplacer(when = "^THistSvc",
orig = r"(.+M: )([0-9]+)(.*)",
repl = r"\1########\3") + \
......
......@@ -5,6 +5,9 @@
<argument name="reference"><text>refs/THistWrite.ref</text></argument>
<argument name="validator"><text>
preprocessor = normalizeExamples + \
RegexpReplacer(when = "^THistSvc",
orig = r"(stream: (rec|upd) name: tuple[0-9].rt size: )([0-9]*)",
repl = r"\1###") + \
RegexpReplacer(when = "^THistSvc",
orig = r"(.+M: )([0-9]+)(.*)",
repl = r"\1########\3") + \
......
JobOptionsSvc INFO # =======> /home/merrenst/git/Gaudi/GaudiExamples/options/THistRead.opts
JobOptionsSvc INFO # =======> /home/merrenst/athena_thistsvc_migration/Gaudi/GaudiExamples/options/THistRead.opts
JobOptionsSvc INFO # (5,1): AuditorSvc.Auditors = ["ChronoAuditor"]
JobOptionsSvc INFO # (12,1): ApplicationMgr.TopAlg = ["THistRead"]
JobOptionsSvc INFO # (15,1): MessageSvc.OutputLevel = 3
......@@ -12,11 +12,11 @@ JobOptionsSvc INFO # (25,1): THistSvc.Input += ["read2 DATAFILE='tuple3.r
JobOptionsSvc INFO # (27,1): THistSvc.PrintAll = 1
JobOptionsSvc INFO # (32,1): ApplicationMgr.EvtMax = 20
JobOptionsSvc INFO # (33,1): ApplicationMgr.EvtSel = "NONE"
JobOptionsSvc INFO Job options successfully read in from /home/merrenst/git/Gaudi/GaudiExamples/options/THistRead.opts
JobOptionsSvc INFO Job options successfully read in from /home/merrenst/athena_thistsvc_migration/Gaudi/GaudiExamples/options/THistRead.opts
ApplicationMgr SUCCESS
====================================================================================================================================
Welcome to ApplicationMgr (GaudiCoreSvc v29r0)
running on hpadpmt on Wed Oct 4 10:00:39 2017
Welcome to ApplicationMgr (GaudiCoreSvc v30r1)
running on hpadpmt on Thu Feb 1 09:38:17 2018
====================================================================================================================================
ApplicationMgr VERBOSE declareMultiSvcType: declared service EvtDataSvc/EventDataSvc
ApplicationMgr VERBOSE declareMultiSvcType: declared service DetDataSvc/DetectorDataSvc
......@@ -41,33 +41,33 @@ THistSvc INFO registered file [tuple2.rt]... [ok]
THistSvc INFO registered file [tuple3.rt]... [ok]
THistSvc DEBUG regHist_i obj: 0 id: /read1/xxx/1Dgauss s: 0
THistSvc DEBUG Read in TH1F "1Dgauss" from file tuple2.rt
TH1.Print Name = 1Dgauss, Entries= 20000, Total sum= 19984
TH1.Print Name = 1Dgauss, Entries= 20000, Total sum= 19982
THistSvc DEBUG Registering TH1F title: "1D Gaussian" id: "/read1/xxx/1Dgauss" dir: tuple2.rt:/xxx file: tuple2.rt
THistSvc DEBUG regHist_i THistID: id: /read1/xxx/1Dgauss t: 0 s: 0 M: 0 m: 0 o: 0x2bf0b60 TH1F
THistSvc DEBUG regHist_i THistID: id: /read1/xxx/1Dgauss t: 0 s: 0 M: 0 m: 0 o: 0x3015360 TH1F
THistRead INFO 1Dgauss: 20000
THistSvc DEBUG regHist_i obj: 0 id: /read2/2Dgauss s: 0
THistSvc DEBUG Read in TH2F "2Dgauss" from file tuple3.rt
TH1.Print Name = 2Dgauss, Entries= 20000, Total sum= 19978
TH1.Print Name = 2Dgauss, Entries= 20000, Total sum= 19974
THistSvc DEBUG Registering TH2F title: "2D Gaussian" id: "/read2/2Dgauss" dir: tuple3.rt:/ file: tuple3.rt
THistSvc DEBUG regHist_i THistID: id: /read2/2Dgauss t: 0 s: 0 M: 0 m: 0 o: 0x2bfe830 TH2F
THistSvc DEBUG regHist_i THistID: id: /read2/2Dgauss t: 0 s: 0 M: 0 m: 0 o: 0x30344a0 TH2F
THistRead INFO 2Dgauss: 20000
THistSvc DEBUG regHist_i obj: 0 id: /read2/3Dgauss s: 0
THistSvc DEBUG Read in TH3F "3Dgauss" from file tuple3.rt
TH1.Print Name = 3Dgauss, Entries= 20000, Total sum= 19944
TH1.Print Name = 3Dgauss, Entries= 20000, Total sum= 19947
THistSvc DEBUG Registering TH3F title: "3D Gaussian" id: "/read2/3Dgauss" dir: tuple3.rt:/ file: tuple3.rt
THistSvc DEBUG regHist_i THistID: id: /read2/3Dgauss t: 0 s: 0 M: 0 m: 0 o: 0x2bfd2f0 TH3F
THistSvc DEBUG regHist_i THistID: id: /read2/3Dgauss t: 0 s: 0 M: 0 m: 0 o: 0x3032fa0 TH3F
THistRead INFO 3Dgauss: 20000
THistSvc DEBUG regHist_i obj: 0 id: /read2/profile s: 0
THistSvc DEBUG Read in TProfile "profile" from file tuple3.rt
TH1.Print Name = profile, Entries= 0, Total sum= 0
THistSvc DEBUG Registering TProfile title: "profile" id: "/read2/profile" dir: tuple3.rt:/ file: tuple3.rt
THistSvc DEBUG regHist_i THistID: id: /read2/profile t: 0 s: 0 M: 0 m: 0 o: 0x2c17c60 TProfile
THistSvc DEBUG regHist_i THistID: id: /read2/profile t: 0 s: 0 M: 0 m: 0 o: 0x304dbc0 TProfile
THistRead INFO profile: 0
THistSvc DEBUG regHist_i obj: 0 id: /read2/trees/stuff/treename s: 0
THistSvc DEBUG Read in TTree "treename" from file tuple3.rt
******************************************************************************
*Tree :treename : tree title *
*Entries : 1000 : Total = 14027 bytes File Size = 2338 *
*Entries : 1000 : Total = 14027 bytes File Size = 2335 *
* : : Tree compression factor = 6.63 *
******************************************************************************
*Br 0 :branch1 : point1/I *
......@@ -83,7 +83,7 @@ THistSvc DEBUG Read in TTree "treename" from file tuple3.rt
*Baskets : 1 : Basket Size= 32000 bytes Compression= 25.49 *
*............................................................................*
THistSvc DEBUG Registering TTree title: "tree title" id: "/read2/trees/stuff/treename" dir: tuple3.rt:/trees/stuff file: tuple3.rt
THistSvc DEBUG regHist_i THistID: id: /read2/trees/stuff/treename t: 0 s: 0 M: 0 m: 0 o: 0x2c43040 TTree
THistSvc DEBUG regHist_i THistID: id: /read2/trees/stuff/treename t: 0 s: 0 M: 0 m: 0 o: 0x3078740 TTree
THistRead INFO treename: 1000
EventLoopMgr WARNING Unable to locate service "EventSelector" 
EventLoopMgr WARNING No events will be processed from external input.
......@@ -114,50 +114,50 @@ ApplicationMgr INFO Application Manager Stopped successfully
EventLoopMgr INFO Histograms converted successfully according to request.
THistSvc DEBUG dumping THistSvc contents
m_hlist: size: 5
- id: /read1/xxx/1Dgauss t: 0 s: 0 M: 0 m: 0 o: 0x2bf0b60 TH1F :: [0x2bd17d0] 1 {[0x2bf0b60]}
- id: /read2/2Dgauss t: 0 s: 0 M: 0 m: 0 o: 0x2bfe830 TH2F :: [0x2c30b40] 1 {[0x2bfe830]}
- id: /read2/3Dgauss t: 0 s: 0 M: 0 m: 0 o: 0x2bfd2f0 TH3F :: [0x2bfcc90] 1 {[0x2bfd2f0]}
- id: /read2/profile t: 0 s: 0 M: 0 m: 0 o: 0x2c17c60 TProfile :: [0x2c17c20] 1 {[0x2c17c60]}
- id: /read2/trees/stuff/treename t: 0 s: 0 M: 0 m: 0 o: 0x2c43040 TTree :: [0x3eb3120] 1 {[0x2c43040]}
- id: /read1/xxx/1Dgauss t: 0 s: 0 M: 0 m: 0 o: 0x3015360 TH1F :: [0x2fe0260] 1 {[0x3015360]}
- id: /read2/2Dgauss t: 0 s: 0 M: 0 m: 0 o: 0x30344a0 TH2F :: [0x2f38120] 1 {[0x30344a0]}
- id: /read2/3Dgauss t: 0 s: 0 M: 0 m: 0 o: 0x3032fa0 TH3F :: [0x304d190] 1 {[0x3032fa0]}
- id: /read2/profile t: 0 s: 0 M: 0 m: 0 o: 0x304dbc0 TProfile :: [0x3032920] 1 {[0x304dbc0]}
- id: /read2/trees/stuff/treename t: 0 s: 0 M: 0 m: 0 o: 0x3078740 TTree :: [0x23ef7d0] 1 {[0x3078740]}
m_uids: 5
- /read2/trees/stuff/treename [0x3eb3120]
- /read1/xxx/1Dgauss [0x2bd17d0]
- /read2/2Dgauss [0x2c30b40]
- /read2/3Dgauss [0x2bfcc90]
- /read2/profile [0x2c17c20]
- /read2/trees/stuff/treename [0x23ef7d0]
- /read1/xxx/1Dgauss [0x2fe0260]
- /read2/2Dgauss [0x2f38120]
- /read2/3Dgauss [0x304d190]
- /read2/profile [0x3032920]
m_ids: 5
- trees/stuff/treename [0x3eb3120]
- xxx/1Dgauss [0x2bd17d0]
- profile [0x2c17c20]
- 3Dgauss [0x2bfcc90]
- 2Dgauss [0x2c30b40]
- trees/stuff/treename [0x23ef7d0]
- xxx/1Dgauss [0x2fe0260]
- profile [0x3032920]
- 3Dgauss [0x304d190]
- 2Dgauss [0x2f38120]
m_tobjs: 5
- 0x2c43040 -> id: /read2/trees/stuff/treename t: 0 s: 0 M: 0 m: 0 o: 0x2c43040 TTree
- 0x2bf0b60 -> id: /read1/xxx/1Dgauss t: 0 s: 0 M: 0 m: 0 o: 0x2bf0b60 TH1F
- 0x2c17c60 -> id: /read2/profile t: 0 s: 0 M: 0 m: 0 o: 0x2c17c60 TProfile
- 0x2bfe830 -> id: /read2/2Dgauss t: 0 s: 0 M: 0 m: 0 o: 0x2bfe830 TH2F
- 0x2bfd2f0 -> id: /read2/3Dgauss t: 0 s: 0 M: 0 m: 0 o: 0x2bfd2f0 TH3F
- 0x3078740 -> id: /read2/trees/stuff/treename t: 0 s: 0 M: 0 m: 0 o: 0x3078740 TTree
- 0x3015360 -> id: /read1/xxx/1Dgauss t: 0 s: 0 M: 0 m: 0 o: 0x3015360 TH1F
- 0x3032fa0 -> id: /read2/3Dgauss t: 0 s: 0 M: 0 m: 0 o: 0x3032fa0 TH3F
- 0x304dbc0 -> id: /read2/profile t: 0 s: 0 M: 0 m: 0 o: 0x304dbc0 TProfile
- 0x30344a0 -> id: /read2/2Dgauss t: 0 s: 0 M: 0 m: 0 o: 0x30344a0 TH2F

THistSvc DEBUG THistSvc::finalize
THistSvc DEBUG updateFiles()
THistSvc DEBUG THistSvc::write()::List of Files connected in ROOT 
THistSvc DEBUG THistSvc::write()::List of Files connected in ROOT: "tuple2.rt"
THistSvc DEBUG THistSvc::write()::List of Files connected in ROOT: "tuple3.rt"
THistSvc DEBUG THistSvc::writeObjectsToFile()::List of Files connected in ROOT 
THistSvc DEBUG THistSvc::writeObjectsToFile()::List of Files connected in ROOT: "tuple2.rt"
THistSvc DEBUG THistSvc::writeObjectsToFile()::List of Files connected in ROOT: "tuple3.rt"
THistSvc INFO Listing contents of ROOT files: 
THistSvc INFO ==> File: tuple2.rt stream: read1
TFile: name=tuple2.rt, title=, option=READ
TH1.Print Name = 1Dgauss, Entries= 20000, Total sum= 19984
TH1.Print Name = 1Dgauss, Entries= 20000, Total sum= 19982
Title = 1D Gaussian
NbinsX= 100, xmin= -50, xmax=50
THistSvc INFO ==> File: tuple3.rt stream: read2
TFile: name=tuple3.rt, title=, option=READ
TH1.Print Name = 2Dgauss, Entries= 20000, Total sum= 19978
TH1.Print Name = 2Dgauss, Entries= 20000, Total sum= 19974
Title = 2D Gaussian
NbinsX= 100, xmin= -50, xmax=50, NbinsY= 100, ymin= -50, ymax=50
TH1.Print Name = 3Dgauss, Entries= 20000, Total sum= 19944
TH1.Print Name = 3Dgauss, Entries= 20000, Total sum= 19947
Title = 3D Gaussian
NbinsX= 100, xmin= -50, xmax=50, NbinsY= 100, ymin= -50, ymax=50, NbinsZ= 100, zmin= -50, zmax=50
TH1.Print Name = profile, Entries= 0, Total sum= 0
......@@ -165,7 +165,7 @@ TH1.Print Name = profile, Entries= 0, Total sum= 0
NbinsX= 100, xmin= -50, xmax=-50
******************************************************************************
*Tree :treename : tree title *
*Entries : 1000 : Total = 14027 bytes File Size = 2338 *
*Entries : 1000 : Total = 14027 bytes File Size = 2335 *
* : : Tree compression factor = 6.63 *
******************************************************************************
*Br 0 :branch1 : point1/I *
......
JobOptionsSvc INFO # =======> /home/merrenst/git/Gaudi/GaudiExamples/options/THistRead.opts
JobOptionsSvc INFO # =======> /home/merrenst/athena_thistsvc_migration/Gaudi/GaudiExamples/options/THistRead.opts
JobOptionsSvc INFO # (5,1): AuditorSvc.Auditors = ["ChronoAuditor"]
JobOptionsSvc INFO # (12,1): ApplicationMgr.TopAlg = ["THistRead"]
JobOptionsSvc INFO # (15,1): MessageSvc.OutputLevel = 3
......@@ -12,11 +12,11 @@ JobOptionsSvc INFO # (25,1): THistSvc.Input += ["read2 DATAFILE='tuple3.r
JobOptionsSvc INFO # (27,1): THistSvc.PrintAll = 1
JobOptionsSvc INFO # (32,1): ApplicationMgr.EvtMax = 20
JobOptionsSvc INFO # (33,1): ApplicationMgr.EvtSel = "NONE"
JobOptionsSvc INFO Job options successfully read in from /home/merrenst/git/Gaudi/GaudiExamples/options/THistRead.opts
JobOptionsSvc INFO Job options successfully read in from /home/merrenst/athena_thistsvc_migration/Gaudi/GaudiExamples/options/THistRead.opts
ApplicationMgr SUCCESS
====================================================================================================================================
Welcome to ApplicationMgr (GaudiCoreSvc v29r0)
running on hpadpmt on Wed Oct 4 13:58:51 2017
Welcome to ApplicationMgr (GaudiCoreSvc v30r1)
running on hpadpmt on Thu Feb 1 09:56:58 2018
====================================================================================================================================
ApplicationMgr VERBOSE declareMultiSvcType: declared service EvtDataSvc/EventDataSvc
ApplicationMgr VERBOSE declareMultiSvcType: declared service DetDataSvc/DetectorDataSvc
......@@ -41,33 +41,33 @@ THistSvc INFO registered file [tuple2.rt]... [ok]
THistSvc INFO registered file [tuple3.rt]... [ok]
THistSvc DEBUG regHist_i obj: 0 id: /read1/xxx/1Dgauss s: 0
THistSvc DEBUG Read in TH1F "1Dgauss" from file tuple2.rt
TH1.Print Name = 1Dgauss, Entries= 20000, Total sum= 19984
TH1.Print Name = 1Dgauss, Entries= 20000, Total sum= 19982
THistSvc DEBUG Registering TH1F title: "1D Gaussian" id: "/read1/xxx/1Dgauss" dir: tuple2.rt:/xxx file: tuple2.rt
THistSvc DEBUG regHist_i THistID: id: /read1/xxx/1Dgauss t: 0 s: 0 M: 0 m: 0 o: 0x1d1e9e0 TH1F
THistSvc DEBUG regHist_i THistID: id: /read1/xxx/1Dgauss t: 0 s: 0 M: 0 m: 0 o: 0x21cf200 TH1F
THistRead INFO 1Dgauss: 20000
THistSvc DEBUG regHist_i obj: 0 id: /read2/2Dgauss s: 0
THistSvc DEBUG Read in TH2F "2Dgauss" from file tuple3.rt
TH1.Print Name = 2Dgauss, Entries= 20000, Total sum= 19978
TH1.Print Name = 2Dgauss, Entries= 20000, Total sum= 19974
THistSvc DEBUG Registering TH2F title: "2D Gaussian" id: "/read2/2Dgauss" dir: tuple3.rt:/ file: tuple3.rt
THistSvc DEBUG regHist_i THistID: id: /read2/2Dgauss t: 0 s: 0 M: 0 m: 0 o: 0x1d266b0 TH2F
THistSvc DEBUG regHist_i THistID: id: /read2/2Dgauss t: 0 s: 0 M: 0 m: 0 o: 0x21ec5e0 TH2F
THistRead INFO 2Dgauss: 20000
THistSvc DEBUG regHist_i obj: 0 id: /read2/3Dgauss s: 0
THistSvc DEBUG Read in TH3F "3Dgauss" from file tuple3.rt
TH1.Print Name = 3Dgauss, Entries= 20000, Total sum= 19944
TH1.Print Name = 3Dgauss, Entries= 20000, Total sum= 19947
THistSvc DEBUG Registering TH3F title: "3D Gaussian" id: "/read2/3Dgauss" dir: tuple3.rt:/ file: tuple3.rt
THistSvc DEBUG regHist_i THistID: id: /read2/3Dgauss t: 0 s: 0 M: 0 m: 0 o: 0x1d25170 TH3F
THistSvc DEBUG regHist_i THistID: id: /read2/3Dgauss t: 0 s: 0 M: 0 m: 0 o: 0x21eb0e0 TH3F
THistRead INFO 3Dgauss: 20000
THistSvc DEBUG regHist_i obj: 0 id: /read2/profile s: 0
THistSvc DEBUG Read in TProfile "profile" from file tuple3.rt
TH1.Print Name = profile, Entries= 0, Total sum= 0
THistSvc DEBUG Registering TProfile title: "profile" id: "/read2/profile" dir: tuple3.rt:/ file: tuple3.rt
THistSvc DEBUG regHist_i THistID: id: /read2/profile t: 0 s: 0 M: 0 m: 0 o: 0x1d3e780 TProfile
THistSvc DEBUG regHist_i THistID: id: /read2/profile t: 0 s: 0 M: 0 m: 0 o: 0x22059a0 TProfile
THistRead INFO profile: 0
THistSvc DEBUG regHist_i obj: 0 id: /read2/trees/stuff/treename s: 0
THistSvc DEBUG Read in TTree "treename" from file tuple3.rt
******************************************************************************
*Tree :treename : tree title *
*Entries : 1000 : Total = 14027 bytes File Size = 2338 *
*Entries : 1000 : Total = 14027 bytes File Size = 2335 *
* : : Tree compression factor = 6.63 *
******************************************************************************
*Br 0 :branch1 : point1/I *
......@@ -83,7 +83,7 @@ THistSvc DEBUG Read in TTree "treename" from file tuple3.rt
*Baskets : 1 : Basket Size= 32000 bytes Compression= 25.49 *
*............................................................................*
THistSvc DEBUG Registering TTree title: "tree title" id: "/read2/trees/stuff/treename" dir: tuple3.rt:/trees/stuff file: tuple3.rt
THistSvc DEBUG regHist_i THistID: id: /read2/trees/stuff/treename t: 0 s: 0 M: 0 m: 0 o: 0x1d69b60 TTree
THistSvc DEBUG regHist_i THistID: id: /read2/trees/stuff/treename t: 0 s: 0 M: 0 m: 0 o: 0x2230a00 TTree
THistRead INFO treename: 1000
EventLoopMgr WARNING Unable to locate service "EventSelector" 
EventLoopMgr WARNING No events will be processed from external input.
......@@ -91,120 +91,120 @@ THistRead INFO treename: 1000
ApplicationMgr INFO Application Manager Initialized successfully
ApplicationMgr INFO Application Manager Started successfully
THistSvc DEBUG updateFiles()
THistSvc DEBUG stream: read1 name: tuple2.rt size: 48491
THistSvc DEBUG stream: read2 name: tuple3.rt size: 88966
THistSvc DEBUG stream: read1 name: tuple2.rt size: 6063
THistSvc DEBUG stream: read2 name: tuple3.rt size: 167837
THistSvc DEBUG updateFiles()
THistSvc DEBUG stream: read1 name: tuple2.rt size: 48491
THistSvc DEBUG stream: read2 name: tuple3.rt size: 88966
THistSvc DEBUG stream: read1 name: tuple2.rt size: 6063
THistSvc DEBUG stream: read2 name: tuple3.rt size: 167837
THistSvc DEBUG updateFiles()
THistSvc DEBUG stream: read1 name: tuple2.rt size: 48491
THistSvc DEBUG stream: read2 name: tuple3.rt size: 88966
THistSvc DEBUG stream: read1 name: tuple2.rt size: 6063
THistSvc DEBUG stream: read2 name: tuple3.rt size: 167837
THistSvc DEBUG updateFiles()
THistSvc DEBUG stream: read1 name: tuple2.rt size: 48491
THistSvc DEBUG stream: read2 name: tuple3.rt size: 88966
THistSvc DEBUG stream: read1 name: tuple2.rt size: 6063
THistSvc DEBUG stream: read2 name: tuple3.rt size: 167837
THistSvc DEBUG updateFiles()
THistSvc DEBUG stream: read1 name: tuple2.rt size: 48491
THistSvc DEBUG stream: read2 name: tuple3.rt size: 88966
THistSvc DEBUG stream: read1 name: tuple2.rt size: 6063
THistSvc DEBUG stream: read2 name: tuple3.rt size: 167837
THistSvc DEBUG updateFiles()
THistSvc DEBUG stream: read1 name: tuple2.rt size: 48491
THistSvc DEBUG stream: read2 name: tuple3.rt size: 88966
THistSvc DEBUG stream: read1 name: tuple2.rt size: 6063
THistSvc DEBUG stream: read2 name: tuple3.rt size: 167837
THistSvc DEBUG updateFiles()
THistSvc DEBUG stream: read1 name: tuple2.rt size: 48491
THistSvc DEBUG stream: read2 name: tuple3.rt size: 88966
THistSvc DEBUG stream: read1 name: tuple2.rt size: 6063
THistSvc DEBUG stream: read2 name: tuple3.rt size: 167837
THistSvc DEBUG updateFiles()
THistSvc DEBUG stream: read1 name: tuple2.rt size: 48491
THistSvc DEBUG stream: read2 name: tuple3.rt size: 88966
THistSvc DEBUG stream: read1 name: tuple2.rt size: 6063
THistSvc DEBUG stream: read2 name: tuple3.rt size: 167837
THistSvc DEBUG updateFiles()
THistSvc DEBUG stream: read1 name: tuple2.rt size: 48491
THistSvc DEBUG stream: read2 name: tuple3.rt size: 88966
THistSvc DEBUG stream: read1 name: tuple2.rt size: 6063
THistSvc DEBUG stream: read2 name: tuple3.rt size: 167837
THistSvc DEBUG updateFiles()
THistSvc DEBUG stream: read1 name: tuple2.rt size: 48491
THistSvc DEBUG stream: read2 name: tuple3.rt size: 88966
THistSvc DEBUG stream: read1 name: tuple2.rt size: 6063
THistSvc DEBUG stream: read2 name: tuple3.rt size: 167837
THistSvc DEBUG updateFiles()
THistSvc DEBUG stream: read1 name: tuple2.rt size: 48491
THistSvc DEBUG stream: read2 name: tuple3.rt size: 88966
THistSvc DEBUG stream: read1 name: tuple2.rt size: 6063
THistSvc DEBUG stream: read2 name: tuple3.rt size: 167837
THistSvc DEBUG updateFiles()
THistSvc DEBUG stream: read1 name: tuple2.rt size: 48491
THistSvc DEBUG stream: read2 name: tuple3.rt size: 88966
THistSvc DEBUG stream: read1 name: tuple2.rt size: 6063
THistSvc DEBUG stream: read2 name: tuple3.rt size: 167837
THistSvc DEBUG updateFiles()
THistSvc DEBUG stream: read1 name: tuple2.rt size: 48491
THistSvc DEBUG stream: read2 name: tuple3.rt size: 88966
THistSvc DEBUG stream: read1 name: tuple2.rt size: 6063
THistSvc DEBUG stream: read2 name: tuple3.rt size: 167837
THistSvc DEBUG updateFiles()
THistSvc DEBUG stream: read1 name: tuple2.rt size: 48491
THistSvc DEBUG stream: read2 name: tuple3.rt size: 88966
THistSvc DEBUG stream: read1 name: tuple2.rt size: 6063
THistSvc DEBUG stream: read2 name: tuple3.rt size: 167837
THistSvc DEBUG updateFiles()
THistSvc DEBUG stream: read1 name: tuple2.rt size: 48491
THistSvc DEBUG stream: read2 name: tuple3.rt size: 88966
THistSvc DEBUG stream: read1 name: tuple2.rt size: 6063
THistSvc DEBUG stream: read2 name: tuple3.rt size: 167837
THistSvc DEBUG updateFiles()
THistSvc DEBUG stream: read1 name: tuple2.rt size: 48491
THistSvc DEBUG stream: read2 name: tuple3.rt size: 88966
THistSvc DEBUG stream: read1 name: tuple2.rt size: 6063
THistSvc DEBUG stream: read2 name: tuple3.rt size: 167837
THistSvc DEBUG updateFiles()
THistSvc DEBUG stream: read1 name: tuple2.rt size: 48491
THistSvc DEBUG stream: read2 name: tuple3.rt size: 88966
THistSvc DEBUG stream: read1 name: tuple2.rt size: 6063
THistSvc DEBUG stream: read2 name: tuple3.rt size: 167837
THistSvc DEBUG updateFiles()
THistSvc DEBUG stream: read1 name: tuple2.rt size: 48491
THistSvc DEBUG stream: read2 name: tuple3.rt size: 88966
THistSvc DEBUG stream: read1 name: tuple2.rt size: 6063
THistSvc DEBUG stream: read2 name: tuple3.rt size: 167837
THistSvc DEBUG updateFiles()
THistSvc DEBUG stream: read1 name: tuple2.rt size: 48491
THistSvc DEBUG stream: read2 name: tuple3.rt size: 88966
THistSvc DEBUG stream: read1 name: tuple2.rt size: 6063
THistSvc DEBUG stream: read2 name: tuple3.rt size: 167837
THistSvc DEBUG updateFiles()
THistSvc DEBUG stream: read1 name: tuple2.rt size: 48491
THistSvc DEBUG stream: read2 name: tuple3.rt size: 88966
THistSvc DEBUG stream: read1 name: tuple2.rt size: 6063
THistSvc DEBUG stream: read2 name: tuple3.rt size: 167837
ApplicationMgr INFO Application Manager Stopped successfully
EventLoopMgr INFO Histograms converted successfully according to request.
THistSvc DEBUG dumping THistSvc contents