From dd16528dd3ce2123a75fc2e2145297e8a466c330 Mon Sep 17 00:00:00 2001 From: Giulio Eulisse <10544+ktf@users.noreply.github.com> Date: Thu, 15 Oct 2026 12:27:18 +0200 Subject: [PATCH] Add PCH for PWGDQ --- PWGDQ/Core/CMakeLists.txt | 18 ++++++++++++++++++ PWGDQ/Core/dqAnalysisPCH.cxx | 13 +++++++++++++ PWGDQ/TableProducer/CMakeLists.txt | 7 +++++++ PWGDQ/Tasks/CMakeLists.txt | 27 +++++++++++++++++++++++++++ 4 files changed, 65 insertions(+) create mode 100644 PWGDQ/Core/dqAnalysisPCH.cxx diff --git a/PWGDQ/Core/CMakeLists.txt b/PWGDQ/Core/CMakeLists.txt index 835c14c17ae..b8b50c71f30 100644 --- a/PWGDQ/Core/CMakeLists.txt +++ b/PWGDQ/Core/CMakeLists.txt @@ -22,3 +22,21 @@ o2physics_add_library(PWGDQCore MCProng.cxx MCSignal.cxx PUBLIC_LINK_LIBRARIES O2::Framework O2::DCAFitter O2::GlobalTracking O2Physics::AnalysisCore KFParticle::KFParticle O2Physics::MLCore) + +# Precompiled header shared across PWGDQ. Percentages are the share of the +# group's workflow translation units that include the header, measured over the tree. +# VarManager.h alone is ~8000 lines and is parsed by two thirds of the group. +# +# runDataProcessing.h is deliberately NOT precompiled: it requires each workflow's +# customize() to be declared before it is included, so precompiling it silently +# unregisters every option (the binary aborts at --dump-workflow, but links fine). +# +# Skipped under recc, which caches compilations remotely instead. +add_library(DQAnalysisPCH OBJECT dqAnalysisPCH.cxx) +target_link_libraries(DQAnalysisPCH PUBLIC O2::Framework O2Physics::AnalysisCore O2Physics::PWGDQCore) +if(NOT DEFINED ENV{USE_RECC}) + target_precompile_headers(DQAnalysisPCH PRIVATE + [["PWGDQ/DataModel/ReducedInfoTables.h"]] # 65% + [["PWGDQ/Core/VarManager.h"]] # 65%, ~8000 lines + ) +endif() diff --git a/PWGDQ/Core/dqAnalysisPCH.cxx b/PWGDQ/Core/dqAnalysisPCH.cxx new file mode 100644 index 00000000000..aab5454efc3 --- /dev/null +++ b/PWGDQ/Core/dqAnalysisPCH.cxx @@ -0,0 +1,13 @@ +// Copyright 2019-2026 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. + +// Carrier for the DQAnalysisPCH precompiled header; see this directory's +// CMakeLists.txt. It exists only to own the PCH, so it has no code of its own. diff --git a/PWGDQ/TableProducer/CMakeLists.txt b/PWGDQ/TableProducer/CMakeLists.txt index b8fd20d356d..5ba06a37cb5 100644 --- a/PWGDQ/TableProducer/CMakeLists.txt +++ b/PWGDQ/TableProducer/CMakeLists.txt @@ -11,35 +11,42 @@ o2physics_add_dpl_workflow(table-maker SOURCES tableMaker.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2::DetectorsBase O2Physics::AnalysisCCDB O2Physics::PWGDQCore O2Physics::EventFilteringUtils COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(table-maker-with-assoc SOURCES tableMaker_withAssoc.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2::DetectorsBase O2Physics::AnalysisCCDB O2Physics::PWGDQCore O2Physics::EventFilteringUtils COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(table-maker-mc SOURCES tableMakerMC.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2::DetectorsBase O2Physics::AnalysisCCDB O2Physics::PWGDQCore COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(table-maker-mc-with-assoc SOURCES tableMakerMC_withAssoc.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2::DetectorsBase O2Physics::AnalysisCCDB O2Physics::PWGDQCore COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(table-maker-jpsi-hf SOURCES tableMakerJpsiHf.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGDQCore COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(table-maker-muon-mch-trk-eff SOURCES tableMakerMuonMchTrkEfficiency.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGDQCore COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(generated-quarkonia-mc SOURCES generatedQuarkoniaMC.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2::DetectorsBase O2Physics::PWGDQCore COMPONENT_NAME Analysis) diff --git a/PWGDQ/Tasks/CMakeLists.txt b/PWGDQ/Tasks/CMakeLists.txt index 6e5ce44fb90..b8a0bfa35bd 100644 --- a/PWGDQ/Tasks/CMakeLists.txt +++ b/PWGDQ/Tasks/CMakeLists.txt @@ -26,6 +26,7 @@ endif() o2physics_add_dpl_workflow(table-reader SOURCES tableReader.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGDQCore O2Physics::MLCore COMPONENT_NAME Analysis) @@ -73,56 +74,67 @@ o2physics_add_dpl_workflow(table-reader-with-assoc-dilepton-track-track-pairing o2physics_add_dpl_workflow(table-reader-with-assoc-direct SOURCES tableReader_withAssoc_direct.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2::DetectorsBase O2Physics::AnalysisCore O2Physics::AnalysisCCDB O2Physics::PWGDQCore O2Physics::MLCore O2::ReconstructionDataFormats O2::DetectorsCommonDataFormats O2::DetectorsVertexing O2Physics::EventFilteringUtils COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(efficiency SOURCES dqEfficiency.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGDQCore COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(efficiency-with-assoc SOURCES dqEfficiency_withAssoc.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGDQCore COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(efficiency-with-assoc-direct SOURCES dqEfficiency_withAssoc_direct.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGDQCore O2::ReconstructionDataFormats O2::DetectorsCommonDataFormats O2::DetectorsVertexing COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(energy-correlator-direct SOURCES dqEnergyCorrelator_direct.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGDQCore COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(filter-pp SOURCES filterPP.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGDQCore COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(filter-pp-with-association SOURCES filterPPwithAssociation.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGDQCore COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(filter-pb-pb SOURCES filterPbPb.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGDQCore O2Physics::SGCutParHolder COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(v0-selector SOURCES v0selector.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2::DCAFitter O2Physics::AnalysisCore O2Physics::PWGDQCore COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(dalitz-selection SOURCES DalitzSelection.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGDQCore COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(flow SOURCES dqFlow.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGDQCore O2Physics::GFWCore COMPONENT_NAME Analysis) @@ -133,21 +145,25 @@ o2physics_add_dpl_workflow(task-muon-mch-trk-eff o2physics_add_dpl_workflow(task-j-psi-hf SOURCES taskJpsiHf.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGDQCore COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(task-muon-dca SOURCES muonDCA.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGDQCore COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(correlation SOURCES dqCorrelation.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGDQCore O2Physics::GFWCore COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(task-mch-align-record SOURCES mchAlignRecord.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore @@ -168,11 +184,13 @@ o2physics_add_dpl_workflow(task-mch-align-record o2physics_add_dpl_workflow(task-muon-mid-eff SOURCES MIDefficiency.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2::MIDBase COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(task-fwd-track-pid SOURCES taskFwdTrackPid.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGDQCore COMPONENT_NAME Analysis) @@ -183,45 +201,54 @@ o2physics_add_dpl_workflow(quarkonia-to-hyperons o2physics_add_dpl_workflow(model-converter-mult-pv SOURCES ModelConverterMultPv.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::PWGDQCore COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(model-converter-event-extended SOURCES ModelConverterEventExtended.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::PWGDQCore COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(model-converter-mc-reduced-event SOURCES ModelConverterReducedMCEvents.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::PWGDQCore COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(tag-and-probe SOURCES TagAndProbe.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2::DetectorsBase O2Physics::AnalysisCore O2Physics::AnalysisCCDB O2Physics::PWGDQCore COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(qa-matching SOURCES qaMatching.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGDQCore COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(mft-mch-matcher SOURCES mftMchMatcher.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGDQCore COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(muon-global-alignment SOURCES muonGlobalAlignment.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGDQCore O2::MCHGeometryTransformer COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(j-psi-muon-correlations SOURCES jPsiMuonCorrelations.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGDQCore O2::MCHGeometryTransformer COMPONENT_NAME Analysis) o2physics_add_dpl_workflow(global-muon-matcher SOURCES global-muon-matcher.cxx + REUSE_FROM DQAnalysisPCH PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGDQCore O2::MCHGeometryTransformer COMPONENT_NAME Analysis)