%``ScannerS: Constraining the phase diagram of a complex scalar singlet at the LHC,''
Eur.\ Phys.\ J.\ C {\bf 73} (2013) 2428
[arXiv:1301.2599].
%%CITATION = ARXIV:1301.2599;%%
--------------------------
2) Minimal requirements --
--------------------------
To be able to successfully compile and run the standalone examples (i.e. without interfacing to MicrOmegas, Superiso, SusHi, HiggsBounds/Signals), you need to have the gnu scientific library (GSL). You also need a C++ compiler like g++ and gnu make (or equivalent) installed.
In order no generate input files with non-implemented potentials (see bellow) you will also need Mathematica 7 or later.
-----------------
3) Basic usage --
-----------------
3.1) Different input types
ScannerS was originally designed to study any scalar potential field, allowing the user to define any tests and parametrizations. In later versions, we developed model specific classes (currently for xSM2 and 2HDM) that are called when using a specific input file type and allow the user access to a series of functions (ex:HiggsBounds interface) specifically implemented for these models, as well as some pre-made analysis. If you wish to make use of these model specific interfaces, please refer to their respective README files inside the examples folder. If you wish to study another potential model, see bellow.
-----------------------
4) General Potential --
-----------------------
4.1) Mathematica Input
To generate an input file for the ScannerS C++ code, you need to enter in the Mathematica notebook ScannerSInput.nb:
- An expression for the scalar potential Vscalar.
- Values for the list of switches that control dimensions and options for the run (see list in ScannerSInput.nb).
- Values for the ranges of the parameters to be scanner over.
Finally, choose a name for the input file to be generated (ex: model.in) and evaluate the whole notebook.
You can use the ScannerSinput.nb files in the examples folder as a reference. Those files were used to generate the
4.2) Printing the Output (ScannerSUser.cpp)
For a minimal run, for example, you just need to edit the Potential::UserInitCalcs() and Potential::what2print().
- In UserInitCalcs, you need to use the function setprint(int,int) to indicate how many values you want to print per point.
- In what2print, you need to indicate what those values are. You can for example output the VEVs, Masses, Mixings and couplings generated. You do so by adding them to points2print[store_vector_index][] vector.
If you want ot calculate and print anything besindes the general potential data, you can use the extra_data vector.
- In UserInitCalcs, resize the vector to the size you want (and use setprint() accordingly).
- In what2print, add them to the points2print[store_vector_index][] vector.
4.3) Rejecting points (ScannerSUser.cpp)
In the ScannerSUser.cpp file you can also edit a series of bool functions (CheckStability(),CheckGlobal() and UserAnalysis()). This are used to reject points that do not meet some needed criteria for your model. You can implement whatever test you want, and return false if the point doesn't meet it.
4.4) Parametrizations (ScannerSUser.cpp)
In the ScannerSUser.cpp file there are also three functions that you can use to define parametrizations for the VeVs, Mixing angles and Mass/couplings relations (Potential::MyPhiParametrization(), Potential::MyInternalMixing and Potential::MyCoupMassRelations). Notice that you need to have these parametrizations turned on in the ScannerSInput.nb file.
4.5) Editable part of the makefile
In the makefile there is an editable "header" part where you can specify paths for the external interfaces, or non-standard library installations (ex: if GSL is not in a standard path), specify your compiler or turn on/off options (see makefile and comments)
4.6) Compiling and running
Once you have generated the input file model.in, created your user analysis and checked the makefile; to compile and run the code (5 points run) do
$ make
$ ./ScannerS -i model.in --nscan 5
If you wish to see what's going on in more detail you can compile in VERBOSE mode. To do so first clean the installation and then compile:
To compile the code with MicrOmegas, you need to set in the makefile the variable (otherwise leave blank):
MicromegasOn=ON
Furthermore you need to create a new project in the MicrOmegas installation directory and drop inside the ScannerS files and sub-directories (ScannerScore). Only after this step will you be able to compile the code since the makefile links MicrOmegas sources which are assumed to be one directory up (also check the MicrOmegas version in use in the ScannerS makefile and use the same version).
5.2) Superiso (http://superiso.in2p3.fr/)
To link Superiso you just need to indicate the correct path to the library in the makefile (if not in the standard search paths). Check the examples & the Superiso documentation for available functions
5.3) SusHi (http://sushi.hepforge.org/)
To link SusHi you need to indicate the correct path to the library in the makefile (if not in the standard search paths). SusHi is currently called to compute total cross-sections through a wrapped function & input file generating C++ functions. In the future other wrapped functions will be made available. Also check the examples.
Both HiggsBounds and HiggsSignals can be linked by indicating the correct path to the library in the makefile (if not in the standard search paths). All functions are available to be called (check declarations in ScannerScore/ExtInterfaces/HBWrap.h and ScannerScore/ExtInterfaces/HSWrap.h).
5.4) hdecay (arXiv:hep-ph/9704448)
Hdecay can be linked by indicating the correct path to the library in the makefile, and Wrapers were implement in ScannerScore/ExtInterfaces/ (HdecayWrap.h, HdecayWrap.f and HdecayWrapCppFuncs.cpp). Note however that this interface is not yet completely stable, so use it at your own risk.
-----------------------
6) Command line help --
-----------------------
This is a copy of the command line help you get if you run:
$ ./ScannerS --help
**** HELP *****************************************
To compile and run the program do:
$ make
$ ./ScannerS -i input_file_name
To clean the compilation do
$ make clean
To run the program in verbose mode, uncomment the following line in the makefile:
#MODE=-DVERBOSE
by removing the hash, i.e.
MODE=-DVERBOSE
Other runtime options are :
-i input_file_name
**************************************
Specify the Mathematica produced input file name where to read the potential from.
-o output_file_name [this is optional]
**************************************
Redirect cout to write the results of the scan to the the output file specified. Otherwise the file model.out is created.
--nscan number_of_points_to_generate [this is optional]
**************************************
Specify the number of points to be generated. If not provided, 1 point will be generated.
--seed seed_value [this is optional]
**************************************
Specify the seed for the pseudo-random number generator. If not provided, 0 will be used.
--log log_file_name [this is optional]
**************************************
Redirect clog to write the information printed on screen for the user, to the the log file specified.
--err err_file_name [this is optional]
**************************************
Redirect cerr to write the errors printed on screen for the user, to the the error file specified.
--model model_name [this is optional]
**************************************
Generates an input file to the specified type (currently xSM2 and 2HDM).
NOTE: The default output file is created with the name model.out
Compile in verbose mode: If you want to recompile the code in verbose mode with very detailed info of each point that was attempted, follow these steps:
$make clean
$make MODE=-DVERBOSE
**** END OF HELP *****************************************