Loading [MathJax]/extensions/tex2jax.js
The Gaudi Framework  v36r16 (ea80daf8)
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Print.cpp
Go to the documentation of this file.
1 /***********************************************************************************\
2 * (c) Copyright 1998-2020 CERN for the benefit of the LHCb and ATLAS collaborations *
3 * *
4 * This software is distributed under the terms of the Apache version 2 licence, *
5 * copied verbatim in the file "LICENSE". *
6 * *
7 * In applying this licence, CERN does not waive the privileges and immunities *
8 * granted to it by virtue of its status as an Intergovernmental Organization *
9 * or submit itself to any jurisdiction. *
10 \***********************************************************************************/
11 #include "GaudiAlg/Print.h"
12 #include "AIDA/IHistogram1D.h"
13 #include "AIDA/IHistogram2D.h"
14 #include "AIDA/IHistogram3D.h"
15 #include "AIDA/IProfile1D.h"
16 #include "AIDA/IProfile2D.h"
17 #include "GaudiAlg/HistoID.h"
18 #include "GaudiKernel/DataObject.h"
19 #include "GaudiKernel/INTuple.h"
20 #include "GaudiKernel/IRegistry.h"
21 #include "GaudiKernel/StatEntity.h"
22 #include <ctype.h>
23 #include <fmt/format.h>
24 #include <fmt/ostream.h>
25 #include <functional>
26 #include <string>
27 #include <vector>
28 // ============================================================================
34 // ============================================================================
35 namespace {
40  static const std::string s_invalidLocation = "<UNKNOWN LOCATION>";
41 } // namespace
42 // ============================================================================
43 const std::string& GaudiAlg::Print::location( const AIDA::IHistogram* aida ) {
44  if ( !aida ) { return s_invalidLocation; }
45  const DataObject* object = dynamic_cast<const DataObject*>( aida );
46  if ( !object ) { return s_invalidLocation; }
47  IRegistry* registry = object->registry();
48  if ( !registry ) { return s_invalidLocation; }
49  return registry->identifier();
50 }
51 // ============================================================================
52 void GaudiAlg::Print1D::print( MsgStream& stream, const AIDA::IHistogram1D* aida, const GaudiAlg::HistoID& ID ) {
53  stream << toString( aida, ID ) << endmsg;
54 }
55 // ============================================================================
56 std::string GaudiAlg::Print1D::toString( const AIDA::IHistogram1D* aida, const GaudiAlg::HistoID& ID ) {
57  return fmt::format( " ID={:25} {:47} Ents/All={:>5}/{:<5}<X>/sX={:.5g}/{:<.5g}", ID.idAsString(),
58  fmt::format( "\"{:.45}\"", aida->title() ), ( aida->allEntries() - aida->extraEntries() ),
59  aida->allEntries(), aida->mean(), aida->rms() );
60 }
61 // ============================================================================
62 void GaudiAlg::Print2D::print( MsgStream& stream, const AIDA::IHistogram2D* aida, const GaudiAlg::HistoID& ID ) {
63  stream << toString( aida, ID ) << endmsg;
64 }
65 // ============================================================================
66 std::string GaudiAlg::Print2D::toString( const AIDA::IHistogram2D* aida, const GaudiAlg::HistoID& ID ) {
67  return fmt::format( " ID={:25} {:47} Ents/All={:>5}/{:<5}<X>/sX={:.5g}/{:<.5g},<Y>/sY={:.5g}/{:<.5g}",
68  ID.idAsString(), fmt::format( "\"{:.45}\"", aida->title() ),
69  ( aida->allEntries() - aida->extraEntries() ), aida->allEntries(), aida->meanX(), aida->rmsX(),
70  aida->meanY(), aida->rmsY() );
71 }
72 // ============================================================================
73 void GaudiAlg::Print3D::print( MsgStream& stream, const AIDA::IHistogram3D* aida, const GaudiAlg::HistoID& ID ) {
74  stream << toString( aida, ID ) << endmsg;
75 }
76 // ============================================================================
77 std::string GaudiAlg::Print3D::toString( const AIDA::IHistogram3D* aida, const GaudiAlg::HistoID& ID ) {
78  return fmt::format(
79  " ID={:25} {:47} Ents/All={:>5}/{:<5}<X>/sX={:.5g}/{:<.5g},<Y>/sY={:.5g}/{:<.5g},<Z>/sZ={:.5g}/{:<.5g}",
80  ID.idAsString(), fmt::format( "\"{:.45}\"", aida->title() ), ( aida->allEntries() - aida->extraEntries() ),
81  aida->allEntries(), aida->meanX(), aida->rmsX(), aida->meanY(), aida->rmsY(), aida->meanZ(), aida->rmsZ() );
82 }
83 // ============================================================================
84 void GaudiAlg::Print1DProf::print( MsgStream& stream, const AIDA::IProfile1D* aida, const GaudiAlg::HistoID& ID ) {
85  stream << toString( aida, ID ) << endmsg;
86 }
87 // ============================================================================
88 std::string GaudiAlg::Print1DProf::toString( const AIDA::IProfile1D* aida, const GaudiAlg::HistoID& ID ) {
89  return fmt::format( " ID={:25} {:47} Ents/All={:>5}/{:<5}<X>/sX={:.5g}/{:<.5g}", ID.idAsString(),
90  fmt::format( "\"{:.45}\"", aida->title() ), ( aida->allEntries() - aida->extraEntries() ),
91  aida->allEntries(), aida->mean(), aida->rms() );
92 }
93 // ============================================================================
94 void GaudiAlg::Print2DProf::print( MsgStream& stream, const AIDA::IProfile2D* aida, const GaudiAlg::HistoID& ID ) {
95  stream << toString( aida, ID ) << endmsg;
96 }
97 // ============================================================================
98 std::string GaudiAlg::Print2DProf::toString( const AIDA::IProfile2D* aida, const GaudiAlg::HistoID& ID ) {
99  return fmt::format( " ID={:25} {:47} Ents/All={:>5}/{:<5}<X>/sX={:.5g}/{:<.5g},<Y>/sY={:.5g}/{:<.5g}",
100  ID.idAsString(), fmt::format( "\"{:.45}\"", aida->title() ),
101  ( aida->allEntries() - aida->extraEntries() ), aida->allEntries(), aida->meanX(), aida->rmsX(),
102  aida->meanY(), aida->rmsY() );
103 }
104 // ============================================================================
106  std::ostringstream ost;
107  stat.print( ost, true, tag );
108  return ost.str();
109 }
110 // ============================================================================
112  return fmt::format( " ID={:<14}{}", ID.idAsString(), print( tuple ) );
113 }
114 // ============================================================================
115 namespace {
116  std::string _print( const INTuple::ItemContainer& items ) {
117  std::string str;
118  for ( const auto& item : items ) {
119  if ( !item ) { continue; }
120  if ( !str.empty() ) { str += ","; }
121  str += item->name();
122  if ( 0 != item->ndim() ) { str += '[' + std::to_string( item->ndim() ) + ']'; }
123  if ( item->hasIndex() ) { str += "/V"; }
124  }
125  return str;
126  }
127 } // namespace
128 // ============================================================================
130  return fmt::format( "Title={:41} #items={:<3}{{{:.81}}}", fmt::format( "\"{:.39}\"", tuple->title() ),
131  tuple->items().size(), _print( tuple->items() ) );
132 }
133 // ============================================================================
134 
135 // ============================================================================
136 // The END
137 // ============================================================================
Write.stream
stream
Definition: Write.py:32
std::string
STL class.
GaudiAlg::ID
Definition: GaudiHistoID.h:53
std::vector
STL class.
std::vector::size
T size(T... args)
StatEntity
backward compatible StatEntity class.
Definition: StatEntity.h:23
GaudiAlg::Print2DProf::print
static void print(MsgStream &stream, const AIDA::IProfile2D *aida, const GaudiAlg::HistoID &ID)
Definition: Print.cpp:94
StatEntity.h
GaudiAlg::PrintStat::print
static std::string print(const StatEntity &stat, const std::string &tag)
Definition: Print.cpp:105
IRegistry
Definition: IRegistry.h:32
GaudiAlg::Print3D::print
static void print(MsgStream &stream, const AIDA::IHistogram3D *aida, const GaudiAlg::HistoID &ID)
Definition: Print.cpp:73
GaudiAlg::Print1D::print
static void print(MsgStream &stream, const AIDA::IHistogram1D *aida, const GaudiAlg::HistoID &ID)
Definition: Print.cpp:52
GaudiAlg::Print1DProf::toString
static std::string toString(const AIDA::IProfile1D *aida, const GaudiAlg::HistoID &ID)
Definition: Print.cpp:88
GaudiAlg::Print2DProf::toString
static std::string toString(const AIDA::IProfile2D *aida, const GaudiAlg::HistoID &ID)
Definition: Print.cpp:98
GaudiPluginService.cpluginsvc.registry
def registry()
Definition: cpluginsvc.py:84
INTuple::items
virtual ItemContainer & items()=0
Access item container.
GaudiAlg::Print3D::toString
static std::string toString(const AIDA::IHistogram3D *aida, const GaudiAlg::HistoID &ID)
Definition: Print.cpp:77
GaudiAlg::PrintTuple::print
static std::string print(const INTuple *tuple, const GaudiAlg::TupleID &ID)
Definition: Print.cpp:111
StatEntity::print
std::ostream & print(std::ostream &o, bool tableFormat, std::string_view name, bool flag=true, std::string_view fmtHead="%|-48.48s|%|27t|") const
Definition: StatEntity.h:159
GaudiAlg::Print1D::toString
static std::string toString(const AIDA::IHistogram1D *aida, const GaudiAlg::HistoID &ID)
Definition: Print.cpp:56
std::to_string
T to_string(T... args)
INTuple
Definition: INTuple.h:91
format
GAUDI_API std::string format(const char *,...)
MsgStream format utility "a la sprintf(...)".
Definition: MsgStream.cpp:119
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:203
IRegistry.h
MsgStream
Definition: MsgStream.h:34
GaudiAlg::Print2D::toString
static std::string toString(const AIDA::IHistogram2D *aida, const GaudiAlg::HistoID &ID)
Definition: Print.cpp:66
std::ostringstream
STL class.
Gaudi::Utils::toString
std::string toString(const TYPE &obj)
the generic implementation of the type conversion to the string
Definition: ToStream.h:353
Print.h
GaudiAlg::Print::location
static const std::string & location(const AIDA::IHistogram *aida)
Definition: Print.cpp:43
DataObject.h
INTuple::title
virtual const std::string & title() const =0
Object title.
DataObject
Definition: DataObject.h:40
HistoID.h
std::string::empty
T empty(T... args)
std::ostringstream::str
T str(T... args)
INTuple.h
GaudiAlg::ID::idAsString
GAUDI_API LiteralID idAsString() const
Return ID as string, for both numeric and literal IDs.
Definition: GaudiHistoID.cpp:30
GaudiAlg::Print1DProf::print
static void print(MsgStream &stream, const AIDA::IProfile1D *aida, const GaudiAlg::HistoID &ID)
Definition: Print.cpp:84
GaudiAlg::Print2D::print
static void print(MsgStream &stream, const AIDA::IHistogram2D *aida, const GaudiAlg::HistoID &ID)
Definition: Print.cpp:62
GaudiPython.Pythonizations.items
items
Definition: Pythonizations.py:546