From 7b2a22f166846d2e2eb14cd9831ca3c6f4b054fd Mon Sep 17 00:00:00 2001 From: Massimiliano Galli Date: Thu, 9 Apr 2026 16:16:23 +0200 Subject: [PATCH 1/4] add project for AD in Combine + Roofit --- projects/ad_combine_roofit.yml | 39 ++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 projects/ad_combine_roofit.yml diff --git a/projects/ad_combine_roofit.yml b/projects/ad_combine_roofit.yml new file mode 100644 index 0000000..3260e96 --- /dev/null +++ b/projects/ad_combine_roofit.yml @@ -0,0 +1,39 @@ +--- +name: Automatic Differentiation for CMS Combine and RooFit +postdate: 2026-04-09 +categories: + - Analysis tools +durations: + - 3 months + - 6 months +experiments: + - CMS +skillset: + - C++ + - Python + - Statistical Analysis +status: + - Complete +project: + - Any +location: + - Any +commitment: + - Full time +program: + - Any +shortdescription: Extend codegen backend support in CMS Combine and RooFit +description: | + Statistical inference in High Energy Physics relies on minimizing complex likelihood functions with thousands of parameters. In this regime, numerical gradient computation becomes the dominant cost of the minimization. Automatic differentiation (AD) addresses this problem by producing analytic gradients whose evaluation cost is essentially independent of the parameter count. + + RooFit has recently introduced an AD engine based on Clad, an AD tool based on source-code transformation that is implemented as a Clag comiler plugin. The RooFit AD engine is realized by a code generation (codegen) pipeline, which translates RooFit models to simple C++ likelihood code that Clad can process. Benchmarks on ATLAS and CMS models have already shown substantial reductions in minimization time with the Minuit 2 minimizer when using these analytic gradients. + + CMS Combine, the statistical inference tool used by the vast majority of CMS analyses, is actively integrating the RooFit AD codegen backend. However, Combine implements several custom classes that are not yet covered by the codegen pipeline. Full AD support in Combine requires extending the codegen backend to these classes, as well as to any RooFit primitives used in CMS workflows that are not yet supported. + + This project aims to extend the Clad-based codegen pipeline to cover the CMS Combine custom classes and the remaining RooFit primitives needed for CMS analyses. The work will involve implementing codegen support for each class, validating the generated gradients, benchmarking the resulting speedups on realistic CMS models, and contributing the developments upstream. + +contacts: + - name: Massimiliano Galli + email: massimiliano.galli@cern.ch + - name: Jonas Rembser + email: jonas.rembser@cern.ch From d7a75347493c048113566e75f973f5c9c649bec0 Mon Sep 17 00:00:00 2001 From: Massimiliano Galli Date: Fri, 10 Apr 2026 09:40:48 +0200 Subject: [PATCH 2/4] add Aliya as supervisor --- projects/ad_combine_roofit.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/ad_combine_roofit.yml b/projects/ad_combine_roofit.yml index 3260e96..09a7740 100644 --- a/projects/ad_combine_roofit.yml +++ b/projects/ad_combine_roofit.yml @@ -37,3 +37,5 @@ contacts: email: massimiliano.galli@cern.ch - name: Jonas Rembser email: jonas.rembser@cern.ch + - name: Aliya Nigamova + email: aliya.nigamova@cern.ch From 4c3f172f461b993e8c9b0529869be7a727c55956 Mon Sep 17 00:00:00 2001 From: Massimiliano Galli Date: Fri, 10 Apr 2026 09:42:27 +0200 Subject: [PATCH 3/4] add empty list for mentees --- projects/ad_combine_roofit.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/projects/ad_combine_roofit.yml b/projects/ad_combine_roofit.yml index 09a7740..d6ee328 100644 --- a/projects/ad_combine_roofit.yml +++ b/projects/ad_combine_roofit.yml @@ -39,3 +39,9 @@ contacts: email: jonas.rembser@cern.ch - name: Aliya Nigamova email: aliya.nigamova@cern.ch + +mentees: [] +# keep an empty list until the project has started or a student is identified +# when that happens add a list with name: and link: attributes for each students +# - name: Students name +# - link: #url for project page From ce19f64573a27bb2a5d727e191a273e80dc2f2b5 Mon Sep 17 00:00:00 2001 From: Massimiliano Galli Date: Fri, 10 Apr 2026 12:34:15 +0200 Subject: [PATCH 4/4] fix typo --- projects/ad_combine_roofit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/ad_combine_roofit.yml b/projects/ad_combine_roofit.yml index d6ee328..e67d47e 100644 --- a/projects/ad_combine_roofit.yml +++ b/projects/ad_combine_roofit.yml @@ -26,7 +26,7 @@ shortdescription: Extend codegen backend support in CMS Combine and RooFit description: | Statistical inference in High Energy Physics relies on minimizing complex likelihood functions with thousands of parameters. In this regime, numerical gradient computation becomes the dominant cost of the minimization. Automatic differentiation (AD) addresses this problem by producing analytic gradients whose evaluation cost is essentially independent of the parameter count. - RooFit has recently introduced an AD engine based on Clad, an AD tool based on source-code transformation that is implemented as a Clag comiler plugin. The RooFit AD engine is realized by a code generation (codegen) pipeline, which translates RooFit models to simple C++ likelihood code that Clad can process. Benchmarks on ATLAS and CMS models have already shown substantial reductions in minimization time with the Minuit 2 minimizer when using these analytic gradients. + RooFit has recently introduced an AD engine based on Clad, an AD tool based on source-code transformation that is implemented as a Clag compiler plugin. The RooFit AD engine is realized by a code generation (codegen) pipeline, which translates RooFit models to simple C++ likelihood code that Clad can process. Benchmarks on ATLAS and CMS models have already shown substantial reductions in minimization time with the Minuit 2 minimizer when using these analytic gradients. CMS Combine, the statistical inference tool used by the vast majority of CMS analyses, is actively integrating the RooFit AD codegen backend. However, Combine implements several custom classes that are not yet covered by the codegen pipeline. Full AD support in Combine requires extending the codegen backend to these classes, as well as to any RooFit primitives used in CMS workflows that are not yet supported.