#ifndef DEFINITIONS_H #define DEFINITIONS_H #include #include const std::string GSEAGEN_INFO = "\n\n" "**********************************************************************************************************\n" "**********************************************************************************************************\n" "** **\n" "** **\n" "** **\n" "** .oooooo..o .oooooo. **\n" "** d8P' `Y8 d8P' `Y8b **\n" "** .oooooooo Y88bo. .ooooo. .oooo. 888 .ooooo. ooo. .oo. **\n" "** 888' `88b `\"Y8888o. d88' `88b `P )88b 888 d88' `88b `888P\"Y88b **\n" "** 888 888 `\"Y88b 888ooo888 .oP\"888 888 ooooo 888ooo888 888 888 **\n" "** `88bod8P' oo .d8P 888 .o d8( 888 `88. .88' 888 .o 888 888 **\n" "** `8oooooo. 8\"\"88888P' `Y8bod8P' `Y888\"\"8o `Y8bood8P' `Y8bod8P' o888o o888o **\n" "** d\" YD **\n" "** \"Y88888P' **\n" "** **\n" "** a GENIE-based code for neutrino telescopes **\n" "** **\n" "** version %20s **\n" "** **\n" "** The gSeaGen code is a neutrino event generator for neutrino telescopes. It simulates particles **\n" "** created in all-flavour neutrino interactions, which may produce detectable Cherenkov light. **\n" "** gSeaGen uses GENIE (http://www.genie-mc.org) to simulate the neutrino interactions. **\n" "** **\n" "** Developers: Carla Distefano, INFN-LNS, Via S.Sofia 62, 95123, Catania, Italy **\n" "** e-mail: distefano_c@lns.infn.it **\n" "** Alfonso Andres Garcia Soto, Nikhef, Science Park 904, Amsterdam 1098 XH, Netherlands **\n" "** e-mail: alfonsog@nikhef.nl **\n" "** Piotr Kalaczynski, 47National Centre for Nuclear Research, 02-093 Warsaw, Poland **\n" "** e-mail: pkalaczynski@km3net.de **\n" "** **\n" "** Repository: https://git.km3net.de/simulation/gseagen **\n" "** **\n" "** Reference: S. Aiello et al. (the KM3NeT Collaboration), **\n" "** Computer Physics Communications 256, 107477 (2020) **\n" "** **\n" "** Web page: https://git.km3net.de/simulation/gseagen/wikis **\n" "** **\n" "** Copyright (C) 2012-2021 The KM3NeT Collaboration **\n" "** **\n" "** This program is free software: you can redistribute it and/or modify it under the terms of the **\n" "** GNU General Public License as published by the Free Software Foundation, either version 3 of **\n" "** the License, or (at your option) any later version. **\n" "** This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; **\n" "** without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. **\n" "** See the GNU General Public License for more details. **\n" "** You should have received a copy of the GNU General Public License along with this program. **\n" "** If not, see . **\n" "** **\n" "**********************************************************************************************************\n" "**********************************************************************************************************\n\n"; const std::string ARGS_INFO = "\n" "\n **Syntax**" "\n gSeaNuEvGen " "\n [-a generation_spectral_index]" "\n [-b n_of_bins]" "\n [-bedrock bedrock_height]" "\n [-c can_definition]" "\n [-C]" "\n [--coord site_coordinate_definition]" #if defined _ANTARES_ENABLED__ || defined _KM3NET_ENABLED__ "\n [--site-dec site_declination]" #endif "\n [--cross-sections XSecName]" "\n [-d depth]" "\n [-e min_energy,max_energy]" "\n [--event-generator-list list_name]" "\n [-f simulation:flux[neutrino_code],...]" "\n [-format output_format]" #ifdef _ANTARES_ENABLED__ "\n [-l light_absorption_lenght,[n_light_absorption_lenght]]" #endif "\n [-n n_of_events]" "\n [-o output_event_file_prefix]" "\n [-origin X0,Y0,Z0]" "\n [-p]" "\n [-point source_info]" "\n [-prop prop_code]" "\n [-r run_number]" #ifdef _ANTARES_ENABLED__ "\n [-R coordinate_rotation_matrix]" #endif "\n [-rt RT_option]" "\n [--seed random_number_seed]" "\n [-t min_costheta,max_costheta]" "\n [-time time_format:StartTime,StopTime]" "\n [--tune generator_tune]" "\n [-utm]" #if defined _ANTARES_ENABLED__ || defined _KM3NET_ENABLED__ "\n [-write write_particles_mode]" #endif "\n [-save saved_particles]" "\n [-chances chances_per_shower]" "\n [--rot-showers UNIT:yaw,pitch,roll]" "\n [-wgt weighting_scheme]" "\n [--cr-flux CR_flux_model_name]" "\n [--corsika-max-nrecords nrec_limit]" "\n [--corsika-less-verbose verbosity_switch]" "\n [--corsika-only-convert only_convert_flag]" "\n [--muon-range-tolerance tolerance_value]" "\n [--propagation-step step_lenght]" "\n [--approach-dist dist_from_can]" #ifdef _HETAU_ENABLED__ "\n [-tau decay_mode]" #endif "\n" "\n **Code Options**" "\n" "\n [] Denotes an optional argument." "\n" "\n -a Specifies the generation spectral index [default: 1.4]." "\n" "\n -b Specifies the number of energy bins [default: 1]. " "\n" "\n -bedrock Specifies the height of the bedrock just below the seabottom (in meters) [default: 0.]. " "\n" "\n -c Specifies input for the detector can definition. " "\n Possible choices are: " "\n 1) '-c CAN:Zmin,Zmax,Rad' " "\n where Zmin (>=0) and Zmax (<=Depth) are bottom and top Z coordinates of the can in the code coordinate system" "\n and Rad is its radius in meters. eg. 'CAN:0.000,659.862,309.450' [default]." "\n The site depth will be set to the default value if not specified using -d option." "\n Take care that the depth site enters in the definition of the interaction volume for down-going neutrinos!" "\n The detector coordinate sites are set to the default values if not specified using -coord option." "\n" #ifdef _ANTARES_ENABLED__ "\n 2) '-c DET:/path/geometry.det' " "\n where geometry.det is the detector geometry file in the ANTARES format. " "\n In this case, the can will be defined from the detector size adding n [default n=3]" "\n times the light absorption lenght [default La=70 m] (see -l option). " "\n The site depth and coordinates are read from geometry.det file. Site declination is" "\n set to the default value of 2.28*kPi/180. RAD" "\n" "\n 3) '-c DETX:/path/geometry.detx' " "\n where geometry.detx is the detector geometry file in the KM3NeT format (vesion V2)." "\n In this case, the can will be defined from the detector size adding n [default n=3]" "\n times the light absorption lenght [default La=70 m] (see -l option). " "\n The site depth is computed from the UTM reference point, the site coordinates" "\n are computed from the detector barycenter UTM coordinates. Site declination is" "\n set to the default value of 2.28*kPi/180. RAD" "\n" #endif "\n -C Force the interaction volume to be the detector CAN. This option has " "\n an effect only in case of muon and tau CC interaction. In the other " "\n cases the interaction volume is already the CAN." "\n" "\n --coord Specifies the detector site coordinates. " "\n Possible choices are: " "\n 1) --coord UNIT:latitude,longitude [,declination] " "\n where detector site latitude and longitude are in radians (UNIT=RAD) or in degrees (UNIT=DEG) [default RAD:0.74700,0.10763]." "\n The longitude is positive eastwards from the meridian of Greenwich, and negative to the West." "\n Additionally, magnetic declination of the detector site may be specified in radians (UNIT=RAD) or in degrees (UNIT=DEG) [default RAD:2.28*kPi/180.]" "\n" "\n 2) --coord SITE:site_name " "\n detector site coordinates and magnetic declination are set by site name. Currently the predefined sites are: ARCA, ORCA, IceCube, GVD." "\n" #if defined _ANTARES_ENABLED__ || defined _KM3NET_ENABLED__ "\n --site-dec site_declination " "\n Set detector site declination by hand. May be used to overwrite the default value used when DET or DETX files are given in -c option" "\n Input ignored if option -c CAN:Zmin,Zmax,Rad is used " #endif "\n" "\n --cross-sections XSecName " "\n Name of an XML file with pre-computed" "\n cross-section values used for constructing splines [default: gxspl-FNALsmall.xml]" "\n" "\n eg. '--cross-sections gxspl-FNALsmall.xml' " "\n" "\n Despite their names, files in $GSEAGEN/dat directory contain cross sections also for Rock, Mantle and Crust media! " "\n" "\n -d Specifies the site depth in meters [default: 2475]. " "\n This option has an effect only if the detector can is defined by hand (see -c option)." "\n" "\n -e Specifies the neutrino energy in GeV [default: 1,1000]. " "\n Must be a comma-separated pair of numbers, eg. `-e 0.3,70' " "\n" "\n --event-generator-list list_name" "\n List of event generators to load. Valid settings are the XML block names appearing in" "\n config/EventGeneratorListAssembler.xml [default: 'Default']." "\n" "\n eg. '--event-generator-list CC' " "\n eg. '--event-generator-list NC' " "\n" "\n -f Specifies the neutrino types to be generated and the neutrino flux models used to weight the events." "\n The general syntax is: `-f simulation:flux,...[neutrino_code],flux...[neutrino_code];simulation:...`" "\n where the `simulation' string specifies the model, 'flux' is the neutrino flux or the file containing it" "\n and the 'neutrino_code' is the neutrino type in the PDG code (12: nu_e, -12: anti_nu_e, 14: nu_mu," "\n -14: anti_nu_mu, 16: nu_tau, -16: anti_nu_tau)." "\n" "\n Alternatively, if gSeaGen is not used to generate particles, but only propagate the ones generated" "\n with an external code (CORSIKA), -f keyword may be used in 2 ways:" "\n `-f EVT:corant_file.evt` for files preprocessed with corant (https://git.km3net.de/simulation/corant)" "\n and" "\n `-f BIN:corsika_binary_file` for binary CORSIKA output files" "\n" "\n Notes: " "\n - Possible values for `simulation' are: FLUKA, BARTOL, HONDA or FUNCX (where X=1,2,3)." "\n In case of FLUKA, BARTOL or HONDA, flux is the file name (incl. full path)." "\n See:" "\n Bartol fluxes: http://www-pnp.physics.ox.ac.uk/~barr/fluxfiles" "\n Fluka fluxes: http://pcbat1.mi.infn.it/~battist/neutrino.html" "\n Honda fluxes: http://www.icrr.u-tokyo.ac.jp/~mhonda/nflx2014/index.html" "\n" "\n eg. '-f BARTOL:dat/f210_3_z.kam_num[14],dat/f210_3_z.kam_nbm[-14]' " "\n" "\n - More than one file can be defined for each neutrino code. " "\n" "\n eg. '-f BARTOL:dat/fmin10_0401z.kam_nue,dat/f210_3_z.kam_nue[12]' " "\n" "\n In case of `FUNC1', flux is a mathematical function (c++ syntax) depending on x, which represents " "\n the neutrino energy in units of GeV. The flux is in unit of 1/(GeV m2 s sr). " "\n" "\n eg. '-f FUNC1:1E-5*pow(x,-2)[14]' " "\n" "\n Two-dimensional functions depending on x and y can be provided to define a dependence on the " "\n neutrino arrival direction. In this case the tag simul has value FUNC2 and the variable y represents cos(theta). " "\n Similarly three-dimensional functions depending also on the variable z (representing the angle phi in radians) " "\n can be provided by setting the tag simul to FUNC3. " "\n" "\n - More than one 'simulation' input can be defined. " "\n Fluxes corresponding to the same neutrino code will added. " "\n" "\n eg. '-f BARTOL:dat/f210_3_z.kam_num[14];FUNC1:x[14]' " "\n" "\n - More than one -f option is allowed. " "\n Fluxes corresponding to the same neutrino code will added. " "\n" "\n eg. '-f BARTOL:dat/f210_3_z.kam_nue[12] -f BGLRS:dat/f210_3_z.kam_nbm[-12]' " "\n" "\n - Values for `simulation' and 'flux' are not mandatory. In this case the code will set by default: " "\n simulation= FUNC1 and flux= 1E-5*pow(x,-2) " "\n" "\n eg. '-f [14]' " "\n eg. '-f [12,14]' " "\n eg. '-f [16,-16]' " "\n" #if defined _KM3NET_ENABLED__ "\n -format output_format [default: km3]" #else "\n -format output_format [default: et]" #endif "\n Specifies the output file format." "\n Possible choices are: " "\n - et --> native gSeaGen ROOT output file" #if defined _ANTARES_ENABLED__ "\n - evt --> ANTARES ASCII output file" #endif #if defined _KM3NET_ENABLED__ "\n - km3 --> KM3NeT ROOT output file" #endif "\n - gen --> native GENIE ROOT output file" "\n" "\n It is possible to write the output file in different formats among those available, e.g." #if defined _KM3NET_ENABLED__ "\n -format et,km3" #else "\n -format et,gen" #endif "\n " #ifdef _ANTARES_ENABLED__ "\n -l light_absorption_lenght,[n_light_absorption_lenght] " "\n" "\n Specifies the light absorption length in meters and the number of light absorption lengths to calculate " "\n the can size from a detector geometry file (see option -c) [default: 70,3]. " "\n It is possible to input only the light absorption length " "\n" "\n eg. '-l 60.' " "\n" "\n In this case default value of n_light_absorption_lenght=3 is used. " #endif "\n" "\n -n Specifies how many neutrinos to generate. " "\n" "\n -o Sets the prefix of the output event file [default: gseagen]. " "\n The output filename is built as: " "\n [prefix].[run_number].evt " "\n" "\n -origin X0,Y0,Z0 " "\n Sets the coordinates (in meters) of origin of the detector reference system in the code coordinate systems [default: 0.,0.,0.]. " "\n" "\n -p Activates the neutrino propagation through the Earth [default: no propagation]." "\n" "\n -prop Set the muon propagation code." "\n Possible choices are: " "\n 1) -prop 'PropaMuon' [internal code, default]" #ifdef _MUSIC_ENABLED__ "\n 2) -prop 'MUSIC' " #endif #ifdef _PROPOSAL_ENABLED__ "\n 3) -prop 'PROPOSAL' " #endif #ifdef _JPP_ENABLED__ "\n 3) -prop 'JPP' " #endif "\n" "\n -point Activates the generation from point-like (and extended) sources. " "\n Possible choices are: " "\n 1) -point 'DEC:src_decl'" "\n where src_decl is the source declination in degrees. The source right ascension will be RA=0; " "\n the generated interval time will be TGen = 31556926 sec (1 yr as in the diffuse mode); " "\n the Local Sidereal Time will be generated between 0h and 24h." "\n" "\n 2) -point 'FILE:AstroSource.xml'" "\n info about the source are read from file AstroSource.xml" "\n The user has the possibility to set:" "\n - the source coordinates using equatorial or galactic coordinates;" "\n - the source angular radius (extended source)" "\n See $GSEAGEN/dat/AstroSource.xml for an example." "\n" "\n If point/extended mode is activated, only tag FUNC for -f option is available." "\n" "\n -r Specifies the MC run number [default: 100000000]. " "\n" #ifdef _ANTARES_ENABLED__ "\n -R Input rotation matrix for transforming the flux neutrino coordinates " "\n from the default Topocentric Horizontal (see GENIE manual) coordinate " "\n system to the user-defined topocentric coordinate system. " "\n The rotation is specified by the 3 Euler angles (phi, theta, psi). " "\n The Euler angles are input as a comma separated list as: " "\n `-R :phi,theta,psi', " "\n where is either X (for X-convention), Y (for Y-convention), " "\n X^-1 or Y^-1 (as previously, but using the inverse matrix). " "\n By default, the X-convention (rotation about Z-axis, then about the " "\n new X-axis, then about the Z-axis) is used. " "\n Notes:" "\n - (Extract from TRotation documentation) " "\n 'Euler angles usually define the rotation of the new coordinate " "\n system with respect to the original system, however, the TRotation " "\n class specifies the rotation of the object in the original system " "\n (an active rotation). To recover the usual Euler rotations (ie. " "\n rotate the system not the object), you must take the inverse of " "\n the rotation.' " "\n Examples: " "\n 1. To set the Euler angles phi=3.14, theta=1.28, psi=1.0 using the " "\n X-convention, type: `-R 3.14,1.28,1.0', or `-R X:3.14,1.28,1.0' " "\n 2. To set the Euler angles phi=3.14, theta=1.28, psi=1.0 using the " "\n Y-convention, type: `-R Y:3.14,1.28,1.0' " "\n 3. To set the Euler angles phi=3.14, theta=1.28, psi=1.0 using the " "\n Y-convention, and then use the inverse rotation matrix, type: " "\n `-R Y^-1:3.14,1.28,1.0' " "\n" #endif "\n -rt Set option to define the generation area radius RT" "\n Possible choices are: " "\n 1) -rt 'can' " "\n the generation surface will be a circle covering the detector can projected onto a plane perpendicular to each neutrino direction." "\n 2) -rt 'vol' " "\n the generation surface will be a circle covering the interaction volume projected onto a plane perpendicular to each neutrino direction." "\n 3) -rt proj " "\n the generation surface will be the detector can projected onto a plane perpendicular to each neutrino direction." "\n 4) -rt value " "\n the generation surface radius will RT = value (in meters)." "\n" "\n --seed random_number_seed [default: 12345]" "\n" "\n -t Specifies the neutrino angular range. [default: 0.,1.] (up-going neutrinos)" "\n Must be a comma-separated pair of numbers, eg. `-t 0.,1.' " "\n" "\n -time Specifies the generation time interval. " "\n The general syntax is: `-time time_format:StartTime,StopTime" "\n where the time_format string specifies the format for StartTime and StopTime." "\n" "\n Notes: " "\n - Possible values for time_format are: " "\n TS: StartTime and StopTime are in Unix Time Stamp." "\n MJD: StartTime and StopTime are in Modified Julian Date." "\n DATE: StartTime and StopTime are in date in format dd-mm-yyyy;hh:mm:ss" "\n" "\n - Value for time_format is not mandatory. In this case the code will set by default:" "\n time_format= TS " "\n" "\n --tune Specifies the generator tune, required for GENIE version >=3.00.00 [default: G18_02a_00_000]" "\n Example: " "\n --tune G18_02a_00_000 " "\n" "\n -utm Use UTM detector system [default: false]" "\n" "\n" #if defined _ANTARES_ENABLED__ || defined _KM3NET_ENABLED__ "\n -write Choose the particles that are stored in the output file [default: 0] " "\n Possible choices are: " "\n 1) -write 0 " "\n only write events with lepton in can and store final tracks." "\n 2) -write 1 " "\n only write events with lepton in can and store intermediate and final tracks." "\n 3) -write 2 " "\n write all generated events and store intermediate and final tracks." "\n" #endif "\n -save Choose the particles produced in CORSIKA that are saved for propagation [default: 'mu']" "\n Must be used with -write 2 except for -save 'mu', which will work with any -write option" "\n Possible choices are: " "\n 1) -save 'mu' " "\n only saves muons." "\n 2) -save 'nu' " "\n only saves neutrinos." "\n 2) -save 'lep' " "\n saves both muons and neutrinos." "\n 3) -save 'all' " "\n saves muons, neutrinos and all other particles that reached the sea level." "\n" "\n -chances Number of extra chances each CORSIKA shower will get to hit the can [default: 0]" "\n" "\n --rot-showers Specifies the custom rotation of directional cosines for all the CORSIKA showers at the sea level" "\n in radians (UNIT=RAD) or in degrees (UNIT=DEG) [default: RAD:0.0,0.0,0.0]. The rotation is specified" "\n in terms of yaw (around z-axis), pitch (around y) and roll (around x) angle: --rot-showers UNIT:yaw,pitch,roll" "\n" "\n -wgt Weight the events according to interaction probabilty to increase statistics ((GENIE option)) [default: 1]" "\n Possible choices are: " "\n 1) -wgt 0 " "\n events are not weighted." "\n 2) -wgt 1 " "\n events are weighted according to a maximum probability." "\n 3) -wgt 2 " "\n events are weighted because they are force to interact in the volume (available since GENIE 3.2.0)." "\n" #ifdef _KM3NET_ENABLED__ "\n --cr-flux CR flux model needed to compute event weights for CORSIKA showers." "\n The default (and so far the only supported value) is 'GST3'." "\n" "\n --corsika-max-nrecords An upper limit on the number of records read from CORSIKA files." "\n The default is 0 (means no upper limit). All positive integer values are possible." "\n" "\n --corsika-less-verbose option to suppress the LOG-s from the CORSIKA file driver." "\n The default is 0 (verbose output). 1 will suppress the LOG output." "\n" "\n --corsika-only-convert option, which disables the propagation alltogether and simply converts the format to the specified one." "\n" "\n --muon-range-tolerance option to allow a certain tolerance in muon range estimation" "\n The default is 0 (exact value). The units are meters." "\n" "\n --propagation-step Step length passed to the muon propagator in meters. Default: 5m." "\n" "\n --approach-dist Distance from the can to which the first step in muon propagation will be done (in meters). Default: 100m." #endif #ifdef _HETAU_ENABLED__ "\n" "\n -tau decay_mode" "\n Choose the decay mode of tau. Needed for HEDIS NUTAU-CC channel" "\n Possible choices are: " "\n 1) -tau 'muon' " "\n tau will decay into muon." "\n 2) -tau 'shower' " "\n tau will decay into shower." #endif "\n" "\v -h Display this help and exit." "\n" "\n" "\n **Environmental Parameters**" "\n" "\n GSeaGen environmental parameters: " "\n" "\n GSEAGEN: pointing to the top directory of the code [mandatory]. " "\n" #ifdef _MUSIC_ENABLED__ "\n MUSICPATH: pointing to the directory with music input files [default: MUSICPATH = "+(std::string)BOOST_PP_STRINGIZE(_MUSICDATA__)+"]. " "\n" #endif "\n GMURNGFL: pointing to file with max muon ranges [default: GMURNGFL = $GSEAGEN/dat/muon_rmax_music.dat]. " "\n" "\n MEDIACOMP: overriding the default composition for target media: SeaWater, Rock, Mantle, Crust." "\n Eg. MEDIACOMP = $GSEAGEN/dat/MediaComposition.xml " "\n" "\n PROPOSALCONF: pointing to the PROPOSAL configuration file. Default inputs are used if the env. parameter does not exist." "\n Eg. PROPOSALCONF = proposaldir/resources/config.json" "\n" "\n SYSTLIST: pointing to the file defining the systematic parameters. The calculation is activated if the env. parameter exists." "\n Eg. SYSTLIST = $GSEAGEN/dat/SystParams.xml " "\n" "\n DEFPARAM: pointing to the file defining the new default valus of input systematic parameters. Values will be changed with running options if used." "\n Eg. DEFPARAM = $GSEAGEN/dat/SystParams.xml " "\n" "\n Based on GENIE, gSeaGen accepts all standard GENIE environmental parameters. For examples: " "\n" "\n GALGCONF: overriding the default configuration folder [default: GALGCONF = $GENIE/config]" "\n Eg. GALGCONF = $GENIE/config " "\n to use the default GENIE configuration folder. " "\n" "\n GXMLPATH: to get user XML input files using GXMLPATH + default locations." "\n" "\n" "\n" " Please also read the GENIE documentation at http://www.genie-mc.org" "\n"; #endif