diff --git a/Modules/FIT/Common/CMakeLists.txt b/Modules/FIT/Common/CMakeLists.txt index 5cb853a7fd..95cf1f5f58 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 ---- @@ -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") \ No newline at end of file diff --git a/Modules/FIT/Common/include/FITCommon/HelperGraph.h b/Modules/FIT/Common/include/FITCommon/HelperGraph.h new file mode 100644 index 0000000000..485f53ae7e --- /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"