This C++ version of BAT is still being maintained, but addition of new features is unlikely. Check out our new incarnation, BAT.jl, the Bayesian analysis toolkit in Julia. In addition to Metropolis-Hastings sampling, BAT.jl supports Hamiltonian Monte Carlo (HMC) with automatic differentiation, automatic prior-based parameter space transformations, and much more. See the BAT.jl documentation.

Charged current cross-section analysis - tutorial for BAT 0.9

Physics motivation

The charged current (CC) deep inelastic scattering cross-section in e+p interactions, σCC, was measured with a polarized positron beam provided by the HERA accelerator. The Standard Model predicts that the CC cross-section depends linearly on the polarization P, i.e., σCC = σCC (P) ∝ P, and vanishes for a polarization of P = -1 due to the (V-A) coupling of the W-boson to left-handed particles. A limit on a right-handed contribution to the cross-section is set in the following analysis, i.e., on the quantity σCC(-1). Further information on the details of the physics and the original analysis can be found here.

Tutorial

This tutorial shows how to implement a Bayesian model into BAT. In the first part a straight line fit is done in order to estimate the limit on the parameter under study. Subsequently, it is shown how prior knowledge from previous measurements can be used to improve the results. Sources of systematic uncertainties are taken into account as nuisance parameters in the third part. Finally, the result obtained is combined with a second meausrement of cross-section.

The tutorial is split into seven steps:

Steps marked with * are advanced examples and independent of the limit part of the tutorial. A proposal for additional studies is also given.


Step 1 - Getting started

Run the script CreateProject.sh in the tools directory to create a new project (CCXSecAnalysis) and a model class (CCXSec). Read through the code and compile it.

Solution


Step 2 - Reading in the data

The e+p data is stored in an ASCII file with three columns: polarization (P), measured cross-section (σ) and (symmetric) uncertainty on the measured cross-section (Δσ). The uncertainties on each measurement are assumed to be Gaussian. The file can be found here.

  1. Modify the runCCXSecAnalysis.cxx code to read in the data set. Use the method BCDataSet::ReadDataFromFile (find out more about the method in the introduction to BAT).

  2. Draw the data set (σ vs. P). The data can be accessed by the method BCDataSet::GetDataPoint(i)->GetValue(j).

  3. What do you expect (from the SM) for the cross-section at a polarization of P=-1?

Solution


Step 3 - Defining the model

It is experimentally difficult to reach a polarization of more than 50%. However, the Standard Model predicts a linear dependence of the cross-section on the polarization. This dependence can be used to extrapolate the cross-section to a polarization of P=-1. In the following, the data is fitted with a straight line. The two parameters of the line are chosen to be the cross-section at a polarization of P=0, σ0, and the cross-section at a polarization of P=-1, σ1. The cross-section can be parameterized as

σCC (P) = P (σ0 - σ1) + σ0

Using the Bayesian approach, the posterior probability density for the two parameters given the data set,

p(σ0, σ1 | data) ∝ p(data|σ0, σ1) ⋅ p00, σ1)

is maximized. The measurements at different polarizations are assumed to be independent. The likelihood can then be a product of Gaussian terms. Modify the model code accordingly:

  1. Add the two parameters to the model. No prior knowledge about the parameters is used in the fit, i.e., p00/1) = const. Choose the ranges of the parameters to be larger than zero. Why?

  2. Modify the method CCXSec::LogLikelihood(). The Gaussian terms are added logarithmically (mind the sign!). One can use the method BCMath::LogGaus()

  3. Run the Markov Chain. Call the method BCModel::MarginalizeAll() in the file runCCXSecAnalysis.cxx.

  4. Create the marginalized distributions of the parameters. Call the method BCModel::PrintAllMarginalized("plots.ps") in the file runCCXSecAnalysis.cxx. This will create all possible 1-D and 2-D marginalized distributions and write them in the file plots.ps.

  5. Print the marginalized distribution including the marked 95% probability region using BCModel::GetMarginalized("sig1")->Draw(0, -95).

  6. Write out the results into a .txt file. Use the method BCModel::PrintResults(const char * file).

Solution


Step 4 - Calculating the limit

Compile and run the code. Look at the 1-d and 2-d distributions. What is the 95% limit on the cross-section at a polarization of -1?

Note that the Markov Chains run for 100,000 iterations by default. Change this number in order to decrease the statistical uncertainty on the limit. Use the method BCModel::MCMCSetNIterationsRun(int n).

Solution


Step 5 - Including prior knowledge

The CC cross-section has previously been measured with a beam of unpolarized positrons. The measurement yielded σ0 = (36.2+1.1-0.49) pb. This result can be used as a prior for the parameter σ0 in the current analysis.

  1. Include the prior knowledge on the parameter σ0 into the model. The probability density can be parameterized by the following function
    p0)=(σ35.0 pb)⋅e-(σ- 35.0 pb)2/2.88 pb2 with σ0 > 35.0 pb.

  2. Repeat step number 4 and compare the limits obtained.

Solution


Step 6 - Including systematic uncertainties

So far, the uncertainties on the model parameters are calculated by propagating the uncertainties from the individual measurements. Additional systematic uncertainties can be included as nuisance parameters which have to be added to the model:

  1. Include the extra nuisance parameters dp and ds.

  2. Add the prior knowledge about the parameters to the model.

  3. Repeat step number 4 and compare the limit obtained.

Solution


Step 7 - Combining results

A second experiment measures the cross-section at a polarization of P=-1. The posterior for the parameter σ1 from the second experiment has the shape of a Gaussian centered around 0.5 pb with a width of 4 pb, and is zero for values smaller than 0 pb. Combine both results and calculate the 95% limit on σ1.

Solution


Additional studies


Further material and documentation

The original analysis can be found here:

Current results from ZEUS and H1:

For an overview on the V-A structure of the weak interaction, see e.g.,

For a short introduction to this tutorial, see this PDF.



Kevin Kröninger
Last modified: Thu Oct 6 03:27:34 CEST 2011