This is a program written to calculate the cross-section, Vtb, and LLR (log-likelihood ratio) significance. This page is written as an introduction for users.
There are two major executables to care about, and these are located in the bin/Examples directory. The examples_x program calculates the cross-section and vtb. The examples_LLR_x program calculates the significance. In each case the code follows a similar format:
- allow for certain commandline options
- declare the channel and feed it information about the yield after cut, adding systematics info using AddSyst() for each systematic
- Add the channel to the class you are using (limit, or limit and ensemble) *NOTE: it is possible to add more than one channel. So you could declare two channels and add them both in within this step.
- Do some calculation and print out to screen
This section offers some addtional explaination and notes on these programs.
What you might need to modify within the program:
- If you have more than one channel, you will want to alter the code to declare two channels and add them both to the limit/limit, ensemble objects (this may be a feature in a future version)
- You will need to change the channel's signal and background yields in the lines with SetValue() as a method. The Signal+Background for MC or Data for data is set with channel.setObs()
- If you have systematics, you will need to change the SetSys() methods to your systematics and their values. If you don't comment them out
- NOTE: The name of some of the systematics matter. For instance, you must use "MCstats" for the MC statistical uncertainty, as this signals the program to use a Gamma Prior
- For the cross-section, you will need to change the inXS parameter at the beginning of the program to whatever your expected cross-section is for your energy
- The cross-section program will also calculate a scaled cross-section. This was a quick add-on recently, so you will want to be sure that the cross-section that you are scaling to is the one you are using for your collision energy.
How to run the programs
The cross-section program is the most straightforward. To generate a cross-section (pretty fast):
./example_x -nEns 10000
Where -nEns specifies the number of ensembles (a higher number takes longer to run but is more accurate)
To find vtb, just pass an arguement:
./example_x -vtb -nEns 10000
The significance program is a little more complicated because it involves multiple steps.
./example_LLR_x -xs 323. -out atlasLLR_st_323.root -nEns 5000
# figure out the mean LLR value from the above run (it is in the print out), and then feed it to the following as -checkLLR
./example_LLR_x -xs 0. -out atlasLLR_st_0.root -nEns 1000000 -checkLLR -16.6482
The checkLLR part isn't strictly nessesary, but you do need to generate ensembles at xs = 0 and xs = signal cross-section. The number of ensembles for the xs = signal cross-section case usually needs to be much larger than the xs = 0 case. The macro you will need to determine the actual significance (llr_plot.C, see below) will require both a xs = 0 and a xs = signal cross-section file to run.
If you think you will have a large significance, you will need lots of ensembles, which will take a long time to run. In this case, you may want to generate lots of smaller sets of ensembles that use different seeds, like
example_LLR_x -xs 323. -out atlasLLR_dt_323_623.root -nEns 1000000 -seed 623
Once the output files are written, you can add them together (with hadd) and run them in a program to determine the significance. This program is misc/macros/llr_plot.C
I have a slightly modified version of this macro, as well as a script to write lots of ensemble generation jobs for the grid. Please let me know if you would like either of these. Otherwise, I will put them on CVS after I have tried them out again.
- 13 Jan 2010