Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

[RF] HS3 export: constraints serialized as product_dist factors with global observables as const parameters

Đang mở
#22,597 4 bình luận 0 reaction 1 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@guitargeek đang làm issue này rồi.

Từ ngày 13/6/2026.

Đánh giá

Issue này chưa được đánh giá.

Mô tả

in:RooFit new feature

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

  1. 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.

  2. Global observables become parameters. RNDM__* are observations of auxiliary measurements; serializing them as const: true parameter 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 the RNDM__ prefix convention. The misc.ROOT_internal.ModelConfigs block only records pdf/mc names, not the global-observable set.

  3. 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.

Ngôn ngữ chính
C++
Star
3.3k
Fork
1.6k
Merge trung bình
2 ngày 17 giờ
Pull request đã merge (30 ngày)
188

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của root-project/root

Tất cả issue của root-project/root

Issue tương tự

Thêm issue về C++

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.