From 1b9c562befbca6a33fb01743e17290fe33b9442c Mon Sep 17 00:00:00 2001 From: mvishiu11 Date: Tue, 12 Aug 2025 13:51:08 +0200 Subject: [PATCH 1/3] feat: add graph helper --- Modules/FIT/Common/CMakeLists.txt | 2 + .../Common/include/FITCommon/HelperGraph.h | 73 +++++++++++++++++++ Modules/FIT/Common/src/HelperGraph.cxx | 17 +++++ 3 files changed, 92 insertions(+) create mode 100644 Modules/FIT/Common/include/FITCommon/HelperGraph.h create mode 100644 Modules/FIT/Common/src/HelperGraph.cxx diff --git a/Modules/FIT/Common/CMakeLists.txt b/Modules/FIT/Common/CMakeLists.txt index 5cb853a7fd..5cf0286339 100644 --- a/Modules/FIT/Common/CMakeLists.txt +++ b/Modules/FIT/Common/CMakeLists.txt @@ -8,6 +8,7 @@ set(SRCS src/HelperHist.cxx src/HelperLUT.cxx src/DigitSync.cxx + src/HelperGraph.cxx ) set(HEADERS @@ -18,6 +19,7 @@ set(HEADERS include/FITCommon/HelperLUT.h include/FITCommon/DigitSync.h include/FITCommon/PostProcHelper.h + include/FITCommon/HelperGraph.h ) # ---- Library ---- diff --git a/Modules/FIT/Common/include/FITCommon/HelperGraph.h b/Modules/FIT/Common/include/FITCommon/HelperGraph.h new file mode 100644 index 0000000000..6fe1d1b0ff --- /dev/null +++ b/Modules/FIT/Common/include/FITCommon/HelperGraph.h @@ -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 +#include +#include + +#include +#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("name","title",n,x,y,ex,ey); +/// \author Jakub Muszyński jakub.milosz.muszynski@cern.ch +template +inline auto makeGraph(const std::string& name, + const std::string& title, + CtorArgs&&... args) +{ + static_assert(std::is_base_of_v, + "GraphType must inherit from TObject / ROOT graph class"); + auto ptr = std::make_unique(std::forward(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 +inline auto registerGraph(ManagerType manager, + PublicationPolicyType publicationPolicy, + const std::string& defaultDrawOption, + const std::string& name, + const std::string& title, + CtorArgs&&... args) +{ + auto ptrGraph = makeGraph(name, title, + std::forward(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 diff --git a/Modules/FIT/Common/src/HelperGraph.cxx b/Modules/FIT/Common/src/HelperGraph.cxx new file mode 100644 index 0000000000..2a0e639701 --- /dev/null +++ b/Modules/FIT/Common/src/HelperGraph.cxx @@ -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" From d248b10476d62c5c45fe61e7df8e3c993a45b4fe Mon Sep 17 00:00:00 2001 From: mvishiu11 Date: Tue, 12 Aug 2025 14:51:56 +0200 Subject: [PATCH 2/3] chore: docstring changes --- Modules/FIT/Common/include/FITCommon/HelperGraph.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/FIT/Common/include/FITCommon/HelperGraph.h b/Modules/FIT/Common/include/FITCommon/HelperGraph.h index 6fe1d1b0ff..485f53ae7e 100644 --- a/Modules/FIT/Common/include/FITCommon/HelperGraph.h +++ b/Modules/FIT/Common/include/FITCommon/HelperGraph.h @@ -28,7 +28,7 @@ namespace o2::quality_control_modules::fit::helper { /// \brief Factory that forwards ctor arguments to the chosen GraphType. -/// \example +/// Example: /// auto g = makeGraph("name","title",n,x,y,ex,ey); /// \author Jakub Muszyński jakub.milosz.muszynski@cern.ch template From eb2f22c9b7d736d8381829d736d67aa9c521bbaf Mon Sep 17 00:00:00 2001 From: Andreas Molander Date: Thu, 19 Jun 2025 11:23:23 +0300 Subject: [PATCH 3/3] Install FITCommon headers --- Modules/FIT/Common/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Modules/FIT/Common/CMakeLists.txt b/Modules/FIT/Common/CMakeLists.txt index 5cf0286339..95cf1f5f58 100644 --- a/Modules/FIT/Common/CMakeLists.txt +++ b/Modules/FIT/Common/CMakeLists.txt @@ -50,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") \ No newline at end of file