[RF] HS3 export: constraints serialized as product_dist factors with global observables as const parameters
I maintainer di solito rispondono entro 1 giorno
@guitargeek ci sta già lavorando.
Dal 13/6/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Context: we are implementing an independent HS3 consumer (pyhs3) and validating it against quickFit NLL values on an ATLAS diHiggs (bbγγ) workspace exported via RooFit's HS3 JSON export. This is feedback on the export pattern for constraint terms — not a blocker (we reproduce RooFit's behavior), but it required reverse-engineering RooFit internals rather than reading the file.
cc @cburgard @Phmonski
What the export produces (per channel, ×14 channels, ×148 constraints)
// distribution block
{ "name": "constr__THEO_BR_Hbb", "type": "gaussian_dist",
"x": "THEO_BR_Hbb", // nuisance parameter
"mean": "RNDM__THEO_BR_Hbb", // global observable
"sigma": 1.0 }
// channel pdf
{ "name": "_model_Run2HM_1", "type": "product_dist",
"factors": ["_modelSB_Run2HM_1", "constr__THEO_BR_Hbb", "..."] }
// parameter_points
{ "name": "RNDM__THEO_BR_Hbb", "value": 0.0, "const": true }
Consequences for a non-RooFit consumer
-
Constraint-ness is not marked. Nothing in the file distinguishes a constraint factor from a shape factor except naming conventions (
constr__,RNDM__) and graph structure (the factor does not depend on the dataset's variables). We infer it structurally, but the likelihood counting semantics this forces are currently unspecified in HS3 — a factor independent of the data must enter the likelihood once per likelihood, not once per event nor once per channel (RooProdPdf's behavior). We have filed a matching HS3-spec issue: hep-statistics-serialization-standard/hep-statistics-serialization-standard#90. Flagging here because the export pattern is what triggers the ambiguity. -
Global observables become parameters.
RNDM__*are observations of auxiliary measurements; serializing them asconst: trueparameter points erases the distinction RooFit's ModelConfig maintains (GlobalObservables). A consumer cannot reconstruct which constants are global observables (e.g. to randomize them for toys) except by theRNDM__prefix convention. Themisc.ROOT_internal.ModelConfigsblock only records pdf/mc names, not the global-observable set. -
HS3 already has a cleaner encoding. Section 2.4 of the spec allows a constraint to be its own (distribution, datum) likelihood entry with the auxiliary measurement as inline numeric data:
"likelihoods": [{ "distributions": ["...", "constr__THEO_BR_Hbb"], "data": ["...", 0.0] }]That representation is unambiguous (counting is automatic), keeps data as data, and removes the need for
RNDM__*const parameters. Could the export move constraints there — or at least record the global-observables list in a standard location?
Minor observation, likely from the original workspace construction rather than the export: the constraint Gaussians have the NP as x and the global observable as mean (pdf over the NP), whereas the auxiliary-measurement reading is a pdf over the global observable with the NP as mean. Numerically identical for a symmetric Gaussian, but the declared random variable matters for normalization/toy semantics in a strict reading.
- Lingua principale
- C++
- Stelle
- 3.3k
- Fork
- 1.6k
- Merge medio
- 2g 17h
- PR unite (30g)
- 188
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di root-project/root
-
thisroot.sh: wrong ROOTSYS in zsh when the shell's command line has a newlineForse già presa @dpiparo l’ha presa 4 giorni fa. Apertabug in:Build System
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
root-project/root#23746 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
[tmva][sofie] Inputs of unsupported type (e.g. float16) give code that does not compile instead of an errorForse già presa @lmoneta l’ha presa 13 giorni fa. ApertaAI-Assisted bug in:SOFIE
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
root-project/root#23655 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
[RDataFrame] Code that transforms `#var` alias to `R_rdf_sizeof_var` does not respect string literalsForse già presa @vepadulano l’ha presa 1 giorno fa. Apertabug in:RDataFrame
Difficoltà 3/5 1-2 giorni Idoneità per principianti 71/100
root-project/root#23790 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
TDataMember::GetOffset interfers to TDataMember::GetOffsetCintForse già presa @pcanal l’ha presa oggi. Apertabug in:Core Libraries
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
root-project/root#23777 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
`TChain::GetEntries` internal caching ineffective?Forse già presa @pcanal l’ha presa 6 giorni fa. Apertaimprovement in:TTree
root-project/root#23738 · 2 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di root-project/root
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
telegramdesktop/tdesktop#31505 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
ll-builder shell completions omit existing lockfile commands and --lockedForse già presa @project-nju-learner l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
OpenAtom-Linyaps/linyaps#2291 ·
I maintainer di solito rispondono entro 1 giorno
-
area: ui bug P3: low value: low
Difficoltà 1/5 1-3 ore Idoneità per principianti 85/100
patrick-hudson/put.gd-desktop#494 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
prestonbrown/helixscreen#1867 ·
I maintainer di solito rispondono entro 2 giorni