Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions Modules/FIT/Common/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ set(SRCS
src/HelperHist.cxx
src/HelperLUT.cxx
src/DigitSync.cxx
src/HelperGraph.cxx
)

set(HEADERS
Expand All @@ -18,6 +19,7 @@ set(HEADERS
include/FITCommon/HelperLUT.h
include/FITCommon/DigitSync.h
include/FITCommon/PostProcHelper.h
include/FITCommon/HelperGraph.h
)

# ---- Library ----
Expand Down Expand Up @@ -48,3 +50,6 @@ install(
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/FITCommon
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/QualityControl")
73 changes: 73 additions & 0 deletions Modules/FIT/Common/include/FITCommon/HelperGraph.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
// All rights not expressly granted are reserved.
//
// This software is distributed under the terms of the GNU General Public
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
//
// In applying this license CERN does not waive the privileges and immunities
// granted to it by virtue of its status as an Intergovernmental Organization
// or submit itself to any jurisdiction.

///
/// \file HelperGraph.h
/// \author Jakub Muszyński jakub.milosz.muszynski@cern.ch
/// \brief Graph helper

#ifndef QC_MODULE_FIT_FITHELPERGRAPH_H
#define QC_MODULE_FIT_FITHELPERGRAPH_H

#include <memory>
#include <string>
#include <type_traits>

#include <TGraph.h>
#include "QualityControl/QcInfoLogger.h"

namespace o2::quality_control_modules::fit::helper
{

/// \brief Factory that forwards ctor arguments to the chosen GraphType.
/// Example:
/// auto g = makeGraph<TGraphErrors>("name","title",n,x,y,ex,ey);
/// \author Jakub Muszyński jakub.milosz.muszynski@cern.ch
template <typename GraphType, typename... CtorArgs>
inline auto makeGraph(const std::string& name,
const std::string& title,
CtorArgs&&... args)
{
static_assert(std::is_base_of_v<TObject, GraphType>,
"GraphType must inherit from TObject / ROOT graph class");
auto ptr = std::make_unique<GraphType>(std::forward<CtorArgs>(args)...);
ptr->SetNameTitle(name.c_str(), title.c_str());
return ptr;
}

/// \brief Publishes graph through the QC ObjectsManager.
/// \author Jakub Muszyński jakub.milosz.muszynski@cern.ch
template <typename GraphType,
typename ManagerType,
typename PublicationPolicyType,
typename... CtorArgs>
inline auto registerGraph(ManagerType manager,
PublicationPolicyType publicationPolicy,
const std::string& defaultDrawOption,
const std::string& name,
const std::string& title,
CtorArgs&&... args)
{
auto ptrGraph = makeGraph<GraphType>(name, title,
std::forward<CtorArgs>(args)...);
manager->startPublishing(ptrGraph.get(), publicationPolicy);

if (!defaultDrawOption.empty()) {
manager->setDefaultDrawOptions(ptrGraph.get(), defaultDrawOption);
}
ILOG(Info, Support) << "Registered graph \"" << name
<< "\" with publication policy " << int(publicationPolicy)
<< ENDM;
return ptrGraph;
}

} // namespace o2::quality_control_modules::fit::helper
#endif // QC_MODULE_FIT_FITHELPERGRAPH_H
17 changes: 17 additions & 0 deletions Modules/FIT/Common/src/HelperGraph.cxx
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
// All rights not expressly granted are reserved.
//
// This software is distributed under the terms of the GNU General Public
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
//
// In applying this license CERN does not waive the privileges and immunities
// granted to it by virtue of its status as an Intergovernmental Organization
// or submit itself to any jurisdiction.

///
/// \file HelperGraph.h
/// \author Jakub Muszynski jakub.milosz.muszynski@cern.ch
/// \brief Graph helper

#include "FITCommon/HelperGraph.h"