Page MenuHomeHEPForge

updatingHBpackage.html
No OneTemporary

updatingHBpackage.html

<HTML>
<HEAD>
<link rel="stylesheet" type="text/css"href="../webversion/HBstyle.css">
<TITLE>Updating HB</TITLE>
</HEAD>
<BODY>
<h1>Updating the HiggsBounds package</h1>
<h2>Useful Links</h2>
<h3>HiggsBounds</h3>
<ul>
<li><a href="http://projects.hepforge.org/higgsbounds/">HiggsBounds page on HepForge</a></li>
<li><a href="http://www.ippp.dur.ac.uk/HiggsBounds/">HiggsBounds page on IPPP, Durham</a></li>
</ul>
<h3>Higgs limits</h3>
<ul>
<li><a href="http://tevnphwg.fnal.gov/">Combined Tevatron results</a></li>
<li><a href="http://www-cdf.fnal.gov/physics/new/hdg/Results.html">CDF notes</a></li>
<li><a href="http://www-cdf.fnal.gov/physics/new/hdg/Published.html">CDF publications</a></li>
<li><a href="http://www-d0.fnal.gov/Run2Physics/WWW/results/higgs.htm">D0 Notes</a></li>
<li><a href="http://www-d0.fnal.gov/d0_publications/d0_pubs_list_runII_bytopic.html#higgs">D0 publications</a> </li>
</ul>
<h3>Higgs theory</h3>
<ul>
<li>The Higgs Hunter's Guide</li>
<li><a href="http://arxiv.org/abs/hep-ph/0503172">
The Anatomy of Electro-Weak Symmetry Breaking. I: The Higgs boson in the Standard Model</a>
<li><a href="http://arxiv.org/abs/hep-ph/0503173">
The Anatomy of Electro-Weak Symmetry Breaking. II: The Higgs bosons in the Minimal Supersymmetric Model</a>
</ul>
<h3>Programming</h3>
<ul>
<li><a href="http://tldp.org/LDP/abs/html/">Advanced Bash-Scripting Guide</a>: I love this site</li>
<li>Programming Perl, Larry Wall: wonderful book</li>
<li><a href="http://perldoc.perl.org">Perl programming documentation</a></li>
<li><a href="http://t16web.lanl.gov/Kawano/gnuplot/index-e.html">Gnuplot Not So Frequently Asked Questions</a>: If you have to use gnuplot, this makes it significantly less painful.</li>
<li><a href="http://svnbook.red-bean.com/">The Subversion Book</a></li>
</ul>
<h3>Miscellaneous</h3>
<ul>
<li><a href="http://arxiv.org/abs/0710.2896">EasyNData</a>: a program which makes it easy to read numbers from graphs</li>
</ul>
<h2>Updating the analyses in the fortran90 package</h2>
<h3>Example: replacing arXiv:0808.1970 by arXiv:1012.0874</a></h3>
<p>For our purposes, <a href="http://arxiv.org/abs/1012.0874"> arXiv:1012.0874</a> is a straight-forward update of <a href="http://arxiv.org/abs/0808.1970"> arXiv:0808.1970</a>.</p>
<ol>
<li>Choose a unique ID number for this analysis. Here we'll use the last 4 digits of the arXiv number: 0874 (For experimental notes, usually can use the CDF or D0 Note number). </li>
<li>Copy the .pdf to the folder ../Expt_tables_docs and start the file name with the ID number.</li>
<li>Copy out table of limits (see <a href="../HiggsBounds_KW/Expt_tables/D0tables/D0_WH_lnubb_5.3fb_0874.txt">here</a>). The first 5 lines will not be used by the code, so you can use this to store extra information about the analysis. </li>
<li>Now we need to edit <a href="../HiggsBounds_KW/S95tables_type1.f90">S95tables_type1.f90</a>. Table type 1 means that the process only involves one Higgs boson. The information about each table of limits is stored in the array S95_t1. (S95 is the name the LEP analyses gave this type of limit: S=scaling factor, 95 because the limits are at 95 per cent CL.) We add:
<pre>
x=x+1
S95_t1(x)%id=0874
S95_t1(x)%particle_x=Hneut ! process involves a neutral Higgs
S95_t1(x)%expt=' D0'
S95_t1(x)%label='[hep-ex] arXiv:1012.0874 (D0)' ! text for key.
S95_t1(x)%xmin=100.0D0 ! table of limits is from MHiggs=100 GeV to
S95_t1(x)%xmax=150.0D0 ! MHiggs=150 GeV in
S95_t1(x)%sep=5.0D0 ! intervals of 5 GeV
filename(x)='D0_WH_lnubb_5.3fb_0874' ! leave off the '.txt' bit
</pre>
Notes:
<ul><li>S95_t1(x)%deltax (if two Higgs have masses separated by less than S95_t1(x)%deltax, there's the option of adding up their cross sections) can also be set here. If it is not, is is set to a general value later in S95tables.f90 (e.g. if deltax is not specified for a Tevatron table type 1, then it is set to delta_Mh_TEV). </li>
<li>The ordering of the tables within the S95_t1 array is important when comparing to Oliver's code. Copy and paste so that the order is the same as Oliver's afterwards. (write this better)</li>
<li>S95_t1(x)%label should contain the arXiv number if it exists. (The function is_S95_t1x_published will look for this when determining whether to include this analysis in the list of 'published' results.)</li>
</ul>
</li>
<li>Now we need to edit <a href="../HiggsBounds_KW/S95tables.f90">S95tables.f90</a>.
<ul>
<li>We have added a type1 table, so need to add one to <code>ntable1</code> at the beginning of <code>subroutine setup_S95tables</code>. </li>
<li> Now search for the string '1970', which is the analysis we would like to replace. Change '1970' to '1970,0874'. In <code>subroutine calcfact_t1</code>, this means that we are choosing the same function of theoretical predictions to compare against the experimental limit as we used for 1970 (the numerator and denominator are specified separately). In <code>subroutine outputproc_t1</code>, this means we are setting the first bit of the decription of the process in the key to be the same as for 1970.</li>
</ul>
</li>
We have now added arXiv:1012.0874! The quickest way to check that this was successful is to try running HiggsBounds:
<pre>
cd example_programs
./demonstrateHiggsBounds_commandline.bat
</pre>
(have a look inside <code>demonstrateHiggsBounds_commandline.bat</code>... it's a very simple bash script that just runs HiggsBounds with some options and with the example data that is included in the HiggsBounds package.)
<li>
We want HiggsBounds to only contain the latest results i.e. the latest limits of each type from each experiment. Also, if the latest limits have not been published on the arXiv, we also want the most recent limits which have been. So, now we have 0874, we can remove 1970. This is done by commenting out its section in S95tables_type1.f90 i.e.
<pre>
!x=x+1
!S95_t1(x)%id=1970
!S95_t1(x)%particle_x=Hneut
!S95_t1(x)%expt=' D0'
!S95_t1(x)%label='[hep-ex] arXiv:0808.1970 (D0)'
!S95_t1(x)%xmin=100.0D0
!S95_t1(x)%xmax=150.0D0
!S95_t1(x)%sep=5.0D0
!filename(x)='D0_WH_lnubb_1.05fb_1970'
</pre>
and decreasing <code>ntable1</code> by one (recall that this is set at the beginning of <code>subroutine setup_S95tables</code>) and rerun <code>demonstrateHiggsBounds_commandline.bat</code> to check it's worked.
</li>
</ol>
Done!
<h3>Useful scripts</a></h3>
<ul>
<li><a href="../manipulate_input_files/interpol_v0-5.f90">interpol_v0-5.f90</a>: interpolates between points in the table if the masses given are not evenly spaced. E.g., turns <a href="../manipulate_input_files/sample/interpol_demo.txt">this</a> into <a href="../manipulate_input_files/sample/interpol_demo_interpol.txt">this</a>. </li>
<li><a href="../manipulate_input_files/swap_columns.f90">swap_columns.f90</a>: swaps the second and third column. E.g., turns <a href="../manipulate_input_files/sample/swap_columns_demo_bad_order.txt">this</a> into <a href="../manipulate_input_files/sample/swap_columns_demo_correct_order.txt">this</a>.</li>
<li><a href="../manipulate_input_files/generate_testdata_1-0.f90">generate_testdata_1-0.f90</a>: (a) generates files suitable for input into HiggsBounds, which are filled random numbers or zeros or (b) picks a particular line from a set of existing input files. Used when testing the code and comparing my code to Oliver's. E.g. can generate input files with 50,000 lines at arbitrary nH etc and run through both my HB and Oliver's HB. Then, if one of the points shows a discrepancy, can isolate this point and run it on its own with <code>#define DEBUGGING</code> uncommented in program HiggsBounds, so can get extra output which will help diagnose the problem.</li>
<li><a href="../HiggsBounds_KW/convert2bibtex.pl">convert2bibtex.pl</a>, <a href="../HiggsBounds_KW/convert2bibtex_collaborationnotes.pl">convert2bibtex_collaborationnotes.pl</a></li>
</ul>
<pre>
Dealing with analyses with SM-likeness tests (may be changed soon anyway)
</pre>
<h2>Comparing the fortran90 and fortran77 codes</h2>
<ol>
<li>First, need to make sure the analyses lists are in the same order
<pre>
Unpack Oliver's code somewhere
cd /home/Karina/Work/HiggsBounds/HBsvn/HiggsBounds/trunk/comparing_codes
In ./main_temp.bat, set the paths to fortran90 and fortran77 codes, npoints='10'
nHneut='1'
nHplus='1'
naddit='1'
whichexpt='LandT'
look at comparing_codes/output/Key_KW.dat and comparing_codes/output/Key_OB.dat
Copy and paste in <a href="../HiggsBounds_KW/S95tables_type1.f90">S95tables_type1.f90</a> such that the tables are in the same order as they are in Oliver's code (the order doesn't matter for the physics. But it's easier to write scripts to compare the results from the two codes if both codes use the same ordering). Check that the descriptions of the processes in Key.dat match eachother.
</pre>
</li>
<li>Check that any new tables in the codes are identical. To check the LEP type 1 tables, follow the instructions in <a href="../comparing_codes/notes_on_comparing_LEP_tables_type1.txt">notes_on_comparing_LEP_tables_type1.txt</a>. To check the TEV type 1 tables, follow the instructions in <a href="../comparing_codes/notes_on_comparing_TEV_tables_type1.txt">notes_on_comparing_TEV_tables_type1.txt</a>.
</li>
<li>Check the (sigma x Br) and SM-likeness tests for new analyses by eye. (This saves time later)</li>
<li>
<a href="../comparing_codes/main.bat">main.bat</a> runs both the fortran77 and fortran90 codes with some example input files and all possible options of whichexpt and whichinput. (see comments at beginning of file)
The set of checks I usually run with main.bat (if the code changes have only been mild e.g. some new tables added):
<ul>
<li>50,000 points, default deltaMh, default eps, nHneut='3', nHplus='1', naddit='2' </li>
<li>50,000 points, default deltaMh, big eps, nHneut='3', nHplus='1', naddit='2' </li>
<li>50,000 points, big deltaMh, default eps, nHneut='3', nHplus='1', naddit='2' </li>
<li>50,000 points, big deltaMh, big eps, nHneut='3', nHplus='1', naddit='2' </li>
</ul>
For 50,000 points, the output file is called cc_results_50000.txt. A successful output file looks like <a href="../comparing_codes/output/cc_results_50000.txt-for-comparison">this</a>. When starting, it's best to just use 50 points, as it's quicker and you can see if there's any major problems. Use <a href="../manipulate_input_files/generate_testdata_1-0.f90">generate_testdata_1-0.f90</a> (see above) to isolate problem points to run separately. (main_temp.bat is similar to main.bat except you can pick one particular combination of whichexpt, whichinput, which can be useful for debugging).
</li>
<li><a href="../comparing_codes/main_sub.bat">main_sub.bat</a> runs both the fortran77 and fortran90 subroutines and all possible options of whichexpt and whichinput. (see comments at beginning of file) The set of checks I usually run with main_sub.bat (if the code changes have only been mild e.g. some new tables added):
<ul>
<li>5000 points, default deltaMh, default eps, nHneut='4', nHplus='2' </li>
</ul>The output file is called cc_results_sub.txt. A successful output file looks like <a href="../comparing_codes/output/cc_results_sub.txt-for-comparison">this</a>. (Add: how to compare SM functions)
</li>
<li>
<a href="../comparing_codes/main_predratio.bat">main_predratio.bat</a> runs both the fortran77 and fortran90 codes with some example input files and all possible options of whichinput. (see comments at beginning of file) Checks the variable predratio directly. The set of checks I usually run with main_predratio.bat (if the code changes have only been mild e.g. some new tables added):
<ul>
<li>5000 points, default deltaMh, default eps, nHneut='3', nHplus='1', naddit='2' </li>
</ul>The output file is called cc_results_sub.txt. A successful output file looks like <a href="../comparing_codes/output/cc_results_5000_predratio.txt-for-comparison">this</a>
</li>
</ol>
<h2>Releasing a new HiggsBounds package</h2>
<ul>
<li>A package contains both the fortran90 and fortran77 codes.</li>
<li>run <a href="../HiggsBounds_KW/convert2bibtex.pl">convert2bibtex.pl</a>. This script creates minipaper.tex and preliminary minipaper.bib from example_data/HB_randomtest50points_Key.dat</li>
<li> After running it:</li>
<ul>
<li> copy and paste minipaper.tex to an email, subject 'generate bibtex', send to slaclib2@slac.stanford.edu</li>
<li> copy the response to minipaper.bib but make sure you don't copy over CDFnotes,D0notes,LHWGnotes</li>
<li> you may have to edit some of the bibtex e.g. in 1003.3363 need to change:
<pre>
Tevatron New Phenomena & Higgs Working Group -> Tevatron New Phenomena and Higgs Working Group
</pre></li>
<li> do
<pre>
latex minipaper.tex ; bibtex minipaper ; latex minipaper.tex ; bibtex minipaper ; latex minipaper.tex
dvipdf minipaper
</pre></li>
</ul>
</li>
<li>The fortran90 part is created by running the bash script <a href="../HiggsBounds_KW/create_package.bat">create_package.bat</a> (pay attention to the output messages).</li>
<li>Update the html pages, especially downloads.html (note: downloads_detailed.html is created from uncommenting a section in downloads.html. Also, index_debug.html is created from index.html)</li>
<li>install webversion on laptop, check it out</li>
<li>put fortran77 and fortran90 bits together to create package... needs more description</li>
<li>install new package on HepForge (see below) </li>
<li>announce the new package to the mailing list (see below)</li>
</ul>
<h2>mailing list.</h2>
<ul>
<li>Using mailman at HepForge. The email address is higgsbounds-announce@projects.hepforge.org. </li>
</ul>
<h2>Webversion</h2>
<ul>
<li>When testing the webversion, start from the page index_debug.html rather than index.html. This means you get a lot more debugging information, such as the list of arguments given to the fortran code. </li>
<li> The webversion works in conjunction with the fortran90 code. The input parameters are all read in as commandline arguments. There is a long list of these arguments, so, to make sure they are given in exactly the same order that the fortran code expects, the fortran90 code <code>#include</code>s the files <a href="../HiggsBounds_KW/read_commandline_from_web.txt">read_commandline_from_web.txt</a> which have been generated by the perl script <a href="../webversion/generatefortran.pl">generatefortran.pl</a>. (This script also generates the file <a href="../HiggsBounds_KW/write_out_input.txt"> write_out_input.txt </a>, which is included in <code> subroutine test_input</code> (in input.F90), which prints out all the input data for one particular parameter point - useful when debugging. For example, this subroutine is used if you start from the index_debug.html screen). </li>
</ul>
<h3>Installing the webversion</h3>
<ul>
<li>Once the package has been finished and is ready to be released, copy it over to the HiggsBounds HepForge account:
<p><code>scp HiggsBounds-2.1.0.tar.gz yourhepforgeusername@login.hepforge.org:/hepforge/home/higgsbounds/downloads/</code></p>
It should appear on <code>http://www.hepforge.org/downloads/higgsbounds</code></li>
<li><code>svn export</code> the <a href="../webversion">webversion</a> folder:
<p><code>svn export HiggsBounds/trunk/webversion ~/temp/webversion</code></p></li>
<li>log in to HepForge: <code>ssh -X yourhepforgeusername@login.hepforge.org</code></li>
<li>in your HepForge account:<code>mkdir /hepforge/home/higgsbounds/HBWebsiteSRC/HB-2.0.0</code></li>
<li>in your Bonn account: <code> scp -r ~/temp/webversion yourhepforgeusername@login.hepforge.org:/hepforge/home/higgsbounds/HBWebsiteSRC/HB-2.0.0/</code></li>
<li>in your HepForge account:<code>cd /hepforge/home/higgsbounds/HBWebsiteSRC/HB-2.0.0/webversion</code><br>
<code>./install_webversion_hepforge.bat 2.1.0</code>
</li>
<li>Download the new package from HepForge on to your local machine and run both the fortran90 and fortran77 with the sample files (50 point) to check that all the relevant files are there.</li>
</ul>
Done!
</BODY>
</HTML>

File Metadata

Mime Type
text/html
Expires
Wed, May 14, 11:19 AM (17 h, 3 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5102264
Default Alt Text
updatingHBpackage.html (15 KB)

Event Timeline