Commit 1e0ae05e authored by Marco Clemencic's avatar Marco Clemencic
Browse files

Apply new formatting

parent 5b7d3482
......@@ -10,6 +10,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
- Fully deprecate `DeclareFactoryEntries.h` ([mr !648][])
### Changed
- Applied new formatting (see [mr !651][], [mr !448][])
- Remove `DataHandle::commit()` ([mr !625][])
- Modernize Registry usage in (Ts)DataSvc ([mr !604][], [issue #5][])
- Improve Gitlab-CI configuration ([mr !651][], [mr !448][])
......
......@@ -300,8 +300,8 @@ namespace Gaudi
details2::push_back( m_containers, std::forward<T>( container ),
std::integral_constant<bool, is_optional>{} );
} // note: does not copy its argument, so we're not really a container...
iterator begin() const { return m_containers.begin(); }
iterator end() const { return m_containers.end(); }
iterator begin() const { return m_containers.begin(); }
iterator end() const { return m_containers.end(); }
size_type size() const { return m_containers.size(); }
const Container& operator[]( size_type i ) const { return *m_containers[i]; }
const Container& at( size_type i ) const
......@@ -406,21 +406,21 @@ namespace Gaudi
}
template <std::size_t N = 0>
const std::string& inputLocation() const
const std::string& inputLocation() const
{
return std::get<N>( m_inputs ).objKey();
}
constexpr unsigned int inputLocationSize() const { return N_in; }
template <std::size_t N = 0>
const std::string& outputLocation() const
const std::string& outputLocation() const
{
return std::get<N>( m_outputs ).objKey();
}
constexpr unsigned int outputLocationSize() const { return N_out; }
protected:
std::tuple<details::InputHandle_t<Traits_, In>...> m_inputs;
std::tuple<details::InputHandle_t<Traits_, In>...> m_inputs;
std::tuple<details::OutputHandle_t<Traits_, Out>...> m_outputs;
};
......@@ -458,7 +458,7 @@ namespace Gaudi
}
template <std::size_t N = 0>
const std::string& inputLocation() const
const std::string& inputLocation() const
{
return std::get<N>( m_inputs ).objKey();
}
......@@ -501,7 +501,7 @@ namespace Gaudi
}
template <std::size_t N = 0>
const std::string& outputLocation() const
const std::string& outputLocation() const
{
return std::get<N>( m_outputs ).objKey();
}
......
......@@ -322,7 +322,7 @@ public:
*/
template <class TYPE>
inline typename Gaudi::Utils::GetData<TYPE>::return_type get( const std::string& location,
const bool useRootInTES = true ) const
const bool useRootInTES = true ) const
{
return GaudiCommon<Algorithm>::get<TYPE>( evtSvc(), location, useRootInTES );
}
......@@ -361,7 +361,7 @@ public:
*/
template <class TYPE>
inline typename Gaudi::Utils::GetData<TYPE>::return_type getIfExists( const std::string& location,
const bool useRootInTES = true ) const
const bool useRootInTES = true ) const
{
return GaudiCommon<Algorithm>::getIfExists<TYPE>( evtSvc(), location, useRootInTES );
}
......@@ -413,7 +413,7 @@ public:
* @retval NULL If the detector object does not exist.
*/
template <class TYPE>
inline typename Gaudi::Utils::GetData<TYPE>::return_type getDetIfExists( IDataProviderSvc* svc,
inline typename Gaudi::Utils::GetData<TYPE>::return_type getDetIfExists( IDataProviderSvc* svc,
const std::string& location ) const
{
return GaudiCommon<Algorithm>::getIfExists<TYPE>( svc, location, false );
......@@ -637,7 +637,7 @@ public:
*/
template <class TYPE, class TYPE2>
inline typename Gaudi::Utils::GetData<TYPE>::return_type getOrCreate( const std::string& location,
const bool useRootInTES = true ) const
const bool useRootInTES = true ) const
{
return GaudiCommon<Algorithm>::getOrCreate<TYPE, TYPE2>( evtSvc(), location, useRootInTES );
}
......
......@@ -488,7 +488,7 @@ public:
* @param sc StatusCode
*/
void Exception( const std::string& msg = "no message",
const StatusCode sc = StatusCode( StatusCode::FAILURE, true ) ) const;
const StatusCode sc = StatusCode( StatusCode::FAILURE, true ) ) const;
public:
// ==========================================================================
......
......@@ -22,7 +22,7 @@
// ============================================================================
template <class PBASE>
inline const std::string GaudiCommon<PBASE>::fullTESLocation( const std::string& location,
const bool useRootInTES ) const
const bool useRootInTES ) const
{
// The logic is:
// if no R.I.T., give back location
......@@ -112,8 +112,8 @@ inline TOOL* GaudiCommon<PBASE>::tool( const std::string& type, const std::strin
if ( name.empty() ) return tool<TOOL>( type, parent, create );
Assert( this->toolSvc(), "tool():: IToolSvc* points to NULL!" );
// get the tool from Tool Service
TOOL* Tool = nullptr;
const StatusCode sc = this->toolSvc()->retrieveTool( type, name, Tool, parent, create );
TOOL* Tool = nullptr;
const StatusCode sc = this->toolSvc()->retrieveTool( type, name, Tool, parent, create );
if ( sc.isFailure() ) {
Exception( "tool():: Could not retrieve Tool '" + type + "'/'" + name + "'", sc );
}
......@@ -136,8 +136,8 @@ inline TOOL* GaudiCommon<PBASE>::tool( const std::string& type, const IInterface
// check the environment
Assert( PBASE::toolSvc(), "IToolSvc* points to NULL!" );
// retrieve the tool from Tool Service
TOOL* Tool = nullptr;
const StatusCode sc = this->toolSvc()->retrieveTool( type, Tool, parent, create );
TOOL* Tool = nullptr;
const StatusCode sc = this->toolSvc()->retrieveTool( type, Tool, parent, create );
if ( sc.isFailure() ) {
Exception( "tool():: Could not retrieve Tool '" + type + "'", sc );
}
......
......@@ -2785,8 +2785,8 @@ private:
"Top level histogram directory (take care that it ends with '/')"};
Gaudi::Property<std::string> m_histoDir{
this, "HistoDir", boost::algorithm::replace_all_copy( this->name(), ":", "_" ), "Histogram Directory"};
Gaudi::Property<bool> m_fullDetail{this, "FullDetail", false};
Gaudi::Property<bool> m_declareMoniHists{this, "MonitorHistograms", true};
Gaudi::Property<bool> m_fullDetail{this, "FullDetail", false};
Gaudi::Property<bool> m_declareMoniHists{this, "MonitorHistograms", true};
Gaudi::Property<std::string> m_histo1DTableFormat{this, "FormatFor1DHistoTable",
Gaudi::Utils::Histos::Formats::format(),
"Format string for printout of 1D histograms"};
......
......@@ -47,14 +47,14 @@ private:
void setReverse( bool flag ) { m_reverse = flag; }
Algorithm* algorithm() const { return m_algorithm; }
bool reverse() const { return m_reverse; }
bool reverse() const { return m_reverse; }
void setTimer( int nb ) { m_timer = nb; }
int timer() const { return m_timer; }
int timer() const { return m_timer; }
private:
Algorithm* m_algorithm = nullptr; ///< Algorithm pointer
bool m_reverse = false; ///< Indicates that the flag has to be inverted
int m_timer = 0; ///< Timer number for this algorithm
bool m_reverse = false; ///< Indicates that the flag has to be inverted
int m_timer = 0; ///< Timer number for this algorithm
};
/** Decode a vector of string. */
......@@ -67,17 +67,17 @@ private:
GaudiSequencer( const GaudiSequencer& a ) = delete;
GaudiSequencer& operator=( const GaudiSequencer& a ) = delete;
Gaudi::Property<std::vector<std::string>> m_names = {this, "Members", {}, "list of algorithms"};
Gaudi::Property<bool> m_sequential = {this, "Sequential", false, "execute members one at a time"};
Gaudi::Property<bool> m_modeOR = {this, "ModeOR", false, "use OR logic instead of AND"};
Gaudi::Property<bool> m_ignoreFilter = {this, "IgnoreFilterPassed", false, "always continue"};
Gaudi::Property<bool> m_measureTime = {this, "MeasureTime", false, "measure time"};
Gaudi::Property<std::vector<std::string>> m_names = {this, "Members", {}, "list of algorithms"};
Gaudi::Property<bool> m_sequential = {this, "Sequential", false, "execute members one at a time"};
Gaudi::Property<bool> m_modeOR = {this, "ModeOR", false, "use OR logic instead of AND"};
Gaudi::Property<bool> m_ignoreFilter = {this, "IgnoreFilterPassed", false, "always continue"};
Gaudi::Property<bool> m_measureTime = {this, "MeasureTime", false, "measure time"};
Gaudi::Property<bool> m_returnOK = {this, "ReturnOK", false, "forces the sequencer to return a good status"};
Gaudi::Property<bool> m_shortCircuit = {this, "ShortCircuit", true, "stop processing as soon as possible"};
Gaudi::Property<bool> m_invert = {this, "Invert", false, "invert the logic result of the sequencer"};
std::vector<AlgorithmEntry> m_entries; ///< List of algorithms to process.
ISequencerTimerTool* m_timerTool = nullptr; ///< Pointer to the timer tool
int m_timer; ///< Timer number for the sequencer
std::vector<AlgorithmEntry> m_entries; ///< List of algorithms to process.
ISequencerTimerTool* m_timerTool = nullptr; ///< Pointer to the timer tool
int m_timer; ///< Timer number for the sequencer
};
#endif // GAUDISEQUENCER_H
......@@ -340,7 +340,7 @@ public:
*/
template <class TYPE>
inline typename Gaudi::Utils::GetData<TYPE>::return_type get( const std::string& location,
const bool useRootInTES = true ) const
const bool useRootInTES = true ) const
{
return GaudiCommon<AlgTool>::get<TYPE>( evtSvc(), location, useRootInTES );
}
......@@ -379,7 +379,7 @@ public:
*/
template <class TYPE>
inline typename Gaudi::Utils::GetData<TYPE>::return_type getIfExists( const std::string& location,
const bool useRootInTES = true ) const
const bool useRootInTES = true ) const
{
return GaudiCommon<AlgTool>::getIfExists<TYPE>( evtSvc(), location, useRootInTES );
}
......@@ -431,7 +431,7 @@ public:
* @retval NULL If the detector object does not exist.
*/
template <class TYPE>
inline typename Gaudi::Utils::GetData<TYPE>::return_type getDetIfExists( IDataProviderSvc* svc,
inline typename Gaudi::Utils::GetData<TYPE>::return_type getDetIfExists( IDataProviderSvc* svc,
const std::string& location ) const
{
return GaudiCommon<AlgTool>::getIfExists<TYPE>( svc, location, false );
......@@ -649,7 +649,7 @@ public:
*/
template <class TYPE, class TYPE2>
inline typename Gaudi::Utils::GetData<TYPE>::return_type getOrCreate( const std::string& location,
const bool useRootInTES = true ) const
const bool useRootInTES = true ) const
{
return GaudiCommon<AlgTool>::getOrCreate<TYPE, TYPE2>( evtSvc(), location, useRootInTES );
}
......@@ -766,8 +766,8 @@ private:
/// Returns the current active algorithm name via the context service
inline std::string getCurrentAlgName() const
{
const IAlgContextSvc* asvc = this->contextSvc();
const IAlgorithm* current = ( asvc ? asvc->currentAlg() : NULL );
const IAlgContextSvc* asvc = this->contextSvc();
const IAlgorithm* current = ( asvc ? asvc->currentAlg() : NULL );
return ( current ? " [" + current->name() + "]" : "" );
}
// ==========================================================================
......
......@@ -336,9 +336,9 @@ private:
Gaudi::Property<bool> m_splitNTupleDir{this, "NTupleSplitDir", false,
"split long directory names into short pieces (suitable for HBOOK)"};
Gaudi::Property<TupleID::NumericID> m_nTupleOffSet{this, "NTupleOffSet", 0, "offset for numerical N-tuple ID"};
Gaudi::Property<std::string> m_nTupleLUN{this, "NTupleLUN", "FILE1", "Logical File Unit for N-tuples"};
Gaudi::Property<std::string> m_nTupleTopDir{this, "NTupleTopDir", "", "top-level directory for N-Tuples"};
Gaudi::Property<std::string> m_nTupleDir{
Gaudi::Property<std::string> m_nTupleLUN{this, "NTupleLUN", "FILE1", "Logical File Unit for N-tuples"};
Gaudi::Property<std::string> m_nTupleTopDir{this, "NTupleTopDir", "", "top-level directory for N-Tuples"};
Gaudi::Property<std::string> m_nTupleDir{
this, "NTupleDir", boost::algorithm::replace_all_copy( this->name(), ":", "_" ), "subdirectory for N-Tuples"};
Gaudi::Property<bool> m_produceEvtCols{this, "EvtColsProduce", false,
......@@ -353,8 +353,8 @@ private:
boost::algorithm::replace_all_copy( this->name(), ":", "_" ),
"Subdirectory for Event Tag Collections"};
struct nTupleMapItem final {
std::string title;
TupleID id;
std::string title;
TupleID id;
std::shared_ptr<Tuples::TupleObj> tuple;
};
struct title_t {
......
......@@ -113,8 +113,8 @@ template <class PBASE>
Tuples::Tuple GaudiTuples<PBASE>::nTuple( const std::string& title, const CLID& clid ) const
{
// look up in the table
auto& m = nTupleByTitle();
auto tuple = m.find( title );
auto& m = nTupleByTitle();
auto tuple = m.find( title );
if ( tuple != m.end() ) return Tuple( tuple->tuple ); // RETURN
// Create the tuple ID
TupleID ID;
......@@ -151,8 +151,8 @@ template <class PBASE>
Tuples::Tuple GaudiTuples<PBASE>::evtCol( const std::string& title, const CLID& clid ) const
{
// look up in the table
auto& m = evtColByTitle();
auto tuple = m.find( title );
auto& m = evtColByTitle();
auto tuple = m.find( title );
if ( tuple != m.end() ) return Tuple( tuple->tuple ); // RETURN
// Create the tuple ID
TupleID ID;
......@@ -195,8 +195,8 @@ Tuples::Tuple GaudiTuples<PBASE>::nTuple( const TupleID& ID, const std::string&
}
// look up in the table
auto& m = nTupleByID();
auto tuple = m.find( ID );
auto& m = nTupleByID();
auto tuple = m.find( ID );
if ( tuple != m.end() ) return Tuple( tuple->tuple ); // RETURN
// convert ID to the string
......@@ -246,7 +246,7 @@ Tuples::Tuple GaudiTuples<PBASE>::evtCol( const TupleID& ID, const std::string&
// look up in the table
auto& tuple = evtColByID();
auto i = tuple.find( ID );
auto i = tuple.find( ID );
if ( i != tuple.end() ) return Tuple( i->tuple ); // RETURN
// convert ID to the string
......
......@@ -160,7 +160,7 @@ namespace Gaudi
// ======================================================================
/// the actual return type
typedef Gaudi::Range_<std::vector<const TYPE*>> Type;
typedef typename _GetType<Type>::return_type return_type;
typedef typename _GetType<Type>::return_type return_type;
// ======================================================================
public:
// ======================================================================
......@@ -181,7 +181,7 @@ namespace Gaudi
if ( object ) {
/// 2. try to get the selection
typedef typename TYPE::Selection Selection_;
const Selection_* sel = dynamic_cast<Selection_*>( object );
const Selection_* sel = dynamic_cast<Selection_*>( object );
if ( sel ) {
if ( common.msgLevel( MSG::DEBUG ) ) {
common.debug() << "The object of type '" << System::typeinfoName( typeid( *object ) )
......@@ -191,7 +191,7 @@ namespace Gaudi
}
/// 3. try to get the container
typedef typename TYPE::Container Container_;
const Container_* cnt = dynamic_cast<Container_*>( object );
const Container_* cnt = dynamic_cast<Container_*>( object );
if ( cnt ) {
if ( common.msgLevel( MSG::DEBUG ) ) {
common.debug() << "The object of type '" << System::typeinfoName( typeid( *object ) )
......@@ -252,7 +252,7 @@ namespace Gaudi
// ======================================================================
/// the actual return type
typedef Gaudi::NamedRange_<std::vector<const TYPE*>> Type;
typedef typename _GetType<Type>::return_type return_type;
typedef typename _GetType<Type>::return_type return_type;
// ======================================================================
public:
// ======================================================================
......@@ -279,7 +279,7 @@ namespace Gaudi
return return_type();
}
static const std::string s_empty = "";
const IRegistry* reg = cnt->registry();
const IRegistry* reg = cnt->registry();
return return_type( m_range.make_range( cnt ), reg ? reg->identifier() : s_empty );
}
// create the range from the selection
......@@ -289,7 +289,7 @@ namespace Gaudi
return return_type();
}
static const std::string s_empty = "";
const IRegistry* reg = cnt->registry();
const IRegistry* reg = cnt->registry();
return return_type( m_range.make_range( cnt ), reg ? reg->identifier() : s_empty );
}
// ======================================================================
......@@ -517,7 +517,7 @@ namespace Gaudi
private:
// ======================================================================
typedef Gaudi::NamedRange_<std::vector<const TYPE*>> Range;
typedef Gaudi::Range_<std::vector<const TYPE*>> Range_;
typedef Gaudi::Range_<std::vector<const TYPE*>> Range_;
typedef GetOrCreateData<Range_, TYPE2> Helper;
/// the actual data getter
typedef GetData<Range> Getter; // the actual data getter
......
......@@ -39,7 +39,7 @@ namespace
std::string old( addr );
// remove long names
if ( 0 < maxLen && maxLen < (int)old.size() ) {
auto p1 = old.begin();
auto p1 = old.begin();
const char sep( '/' );
while ( old.end() != p1 ) {
p1 = std::find_if( p1, old.end(), [&]( const char& c ) { return c != sep; } );
......
......@@ -34,7 +34,7 @@ public:
DeclareInterfaceID( ITupleTool, 2, 0 );
typedef Tuples::TupleID TupleID;
typedef Tuples::Tuple Tuple;
typedef Tuples::Tuple Tuple;
/** get N-tuple object ( book on-demand ) with unique identifier
*
......
......@@ -41,15 +41,15 @@ namespace Gaudi
// if In is a pointer, it signals optional (as opposed to mandatory) input
template <typename T>
using InputHandle_t = details::InputHandle_t<Traits_, typename std::remove_pointer<T>::type>;
std::vector<std::string> m_inputLocations; // TODO/FIXME: remove this duplication...
std::vector<InputHandle_t<In>> m_inputs; // and make the handles properties instead...
std::vector<std::string> m_inputLocations; // TODO/FIXME: remove this duplication...
std::vector<InputHandle_t<In>> m_inputs; // and make the handles properties instead...
};
template <typename Out, typename In, typename Traits_>
MergingTransformer<Out( const vector_of_const_<In>& ), Traits_>::MergingTransformer( const std::string& name,
ISvcLocator* pSvcLocator,
ISvcLocator* pSvcLocator,
const KeyValues& inputs,
const KeyValue& output )
const KeyValue& output )
: base_class( name, pSvcLocator, output ), m_inputLocations( inputs.second )
{
// TODO/FIXME: replace vector of string property + call-back with a
......
......@@ -26,8 +26,8 @@ public:
/**
** Constructor(s)
**/
Sequencer( const std::string& name, // The path object's name
ISvcLocator* svcloc // A pointer to a service location service
Sequencer( const std::string& name, // The path object's name
ISvcLocator* svcloc // A pointer to a service location service
);
/*****************************
......@@ -116,9 +116,9 @@ public:
** directly via the new operator is preferred since then the framework
** may take care of all of the necessary book-keeping.
**/
StatusCode createAndAppend( const std::string& type, // The concrete algorithm class of the algorithm
const std::string& name, // The name to be given to the algorithm
Algorithm*& pAlgorithm // Set to point to the newly created algorithm object
StatusCode createAndAppend( const std::string& type, // The concrete algorithm class of the algorithm
const std::string& name, // The name to be given to the algorithm
Algorithm*& pAlgorithm // Set to point to the newly created algorithm object
);
/**
......@@ -150,7 +150,7 @@ public:
** by the first element, which is the filter algorithm.
**/
const std::vector<Algorithm*>& branchAlgorithms() const;
std::vector<Algorithm*>& branchAlgorithms();
std::vector<Algorithm*>& branchAlgorithms();
/// Decode Member Name list
StatusCode decodeMemberNames();
......@@ -173,9 +173,9 @@ protected:
** directly via the new operator is preferred since then the framework
** may take care of all of the necessary book-keeping.
**/
StatusCode createAndAppend( const std::string& type, // The concrete algorithm class of the algorithm
const std::string& name, // The name to be given to the algorithm
Algorithm*& pAlgorithm, // Set to point to the newly created algorithm object
StatusCode createAndAppend( const std::string& type, // The concrete algorithm class of the algorithm
const std::string& name, // The name to be given to the algorithm
Algorithm*& pAlgorithm, // Set to point to the newly created algorithm object
std::vector<Algorithm*>& theAlgs );
/**
......@@ -218,9 +218,9 @@ private:
Gaudi::Property<std::vector<std::string>> m_branchNames{this, "BranchMembers", {}, "branch member names"};
Gaudi::Property<bool> m_stopOverride{this, "StopOverride", false, "stop on filter failure override"};
std::vector<bool> m_isInverted; // Member logic inverted list
std::vector<Algorithm*> m_branchAlgs; // Branch algorithms
std::vector<bool> m_isBranchInverted; // Branch Member logic inverted list
std::vector<bool> m_isInverted; // Member logic inverted list
std::vector<Algorithm*> m_branchAlgs; // Branch algorithms
std::vector<bool> m_isBranchInverted; // Branch Member logic inverted list
bool m_branchFilterPassed = false; // Branch filter passed flag
};
......
......@@ -265,8 +265,8 @@ namespace Tuples
const ITEM& value() const { return m_value; }
private:
std::string m_name; ///< The column name
ITEM m_value; ///< The column value
std::string m_name; ///< The column name
ITEM m_value; ///< The column value
};
/** helper function to create 'on-the-fly' the
......
......@@ -175,7 +175,7 @@ namespace Tuples
private:
const OBJECT* m_obj = nullptr;
FUNCTION m_fun;
FUNCTION m_fun;
};
/** Templated helper functions allow to avoid heavy semantics of
......
......@@ -1515,8 +1515,8 @@ namespace Tuples
*len = std::distance( first, last );
// get the array itself
auto cols = std::distance( funF, funL );
FMatrix* var = fMatrix( name, len, cols );
auto cols = std::distance( funF, funL );
FMatrix* var = fMatrix( name, len, cols );
if ( !var ) return ErrorCodes::InvalidColumn;
/// fill the matrix
......
......@@ -123,7 +123,7 @@ inline StatusCode Tuples::TupleObj::put( const std::string& name, const TYPE* ob
} // RETURN
// static block: The type description & the flag
static bool s_fail = false; // STATIC
static bool s_fail = false; // STATIC
static TClass* s_type = nullptr; // STATIC
// check the status
if ( s_fail ) {
......
......@@ -38,7 +38,7 @@ StatusCode SequencerTimerTool::initialize()
{
const StatusCode sc = GaudiHistoTool::initialize();
if ( sc.isFailure() ) return sc;
double sum = 0;
double sum = 0;
TimerForSequencer norm( "normalize", m_headerSize, m_normFactor );
norm.start();
IRndmGenSvc* rsvc = svc<IRndmGenSvc>( "RndmGenSvc", true );
......@@ -105,13 +105,13 @@ void SequencerTimerTool::saveHistograms()
{
if ( produceHistos() ) {
info() << "Saving Timing histograms" << endmsg;
const size_t bins = m_timerList.size();
const size_t bins = m_timerList.size();
AIDA::IHistogram1D* histoTime = book( "ElapsedTime", 0, bins, bins );
AIDA::IHistogram1D* histoCPU = book( "CPUTime", 0, bins, bins );
AIDA::IHistogram1D* histoCount = book( "Count", 0, bins, bins );
TH1D* tHtime = Gaudi::Utils::Aida2ROOT::aida2root( histoTime );
TH1D* tHCPU = Gaudi::Utils::Aida2ROOT::aida2root( histoCPU );
TH1D* tHCount = Gaudi::Utils::Aida2ROOT::aida2root( histoCount );
TH1D* tHtime = Gaudi::Utils::Aida2ROOT::aida2root( histoTime );
TH1D* tHCPU = Gaudi::Utils::Aida2ROOT::aida2root( histoCPU );
TH1D* tHCount = Gaudi::Utils::Aida2ROOT::aida2root( histoCount );
for ( const auto& tfsq : m_timerList ) {
tHtime->Fill( tfsq.name().c_str(), tfsq.elapsedTotal() );
tHCPU->Fill( tfsq.name().c_str(), tfsq.cpuTotal() );
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment