[[TOC]] == Installation == === Extraction === Get the latest version of Corsika from here (right now this is at least 7.64): https://www.ikp.kit.edu/corsika/ Extract Corsika {{{ [0] tar xvf corsika-76400.tar.bz2 }}} === Patching === To make the `TELESCOPE` keyword work properly, in `TELOUT` (search for this around line 75380) {{{#!fortran #if __CERENKOV__ && !__IACT__ *-- Author : R. Ulrich IKP KIT Karlsruhe 22/10/16 C======================================================================= INTEGER FUNCTION TELOUT(XPOSCER,YPOSCER,UDIRCER,VDIRCER) C----------------------------------------------------------------------- C ROUTINE TO CHECK WETHER CHERENKOV PHOTON HITS TELESCOPE C THIS FUNCTION IS CALLED FROM CERENK. C ARGUMENTS: C XPOSCER = X-POSITION OF PHOTON AT TELESCOPE C YPOSCER = Y-POSITION OF PHOTON AT TELESCOPE C UDIRCER = DIRECTION OF PHOTON RELATIVE TO X-DIRECTION C VDIRCER = DIRECTION OF PHOTON RELATIVE TO Y-DIRECTION C----------------------------------------------------------------------- }}} you have to replace {{{#!fortran TELZ = -OBSLEV(NOBSLV) + CERTELZ(J) DUMZ = -OBSLEV(NOBSLV) - TELZ }}} in `TELOUT` in `src/corsika.F` by {{{#!fortran TELZ = CERTELZ(J) DUMZ = TELZ }}} otherwise there is a z-distance between the sphere defining which photons are written to the output file and the telescope position. For inclined photons this leads to photons recorded far away from the telescope position. === Setup and Compilation === Now, call coconut {{{ [1] cd corsika-76400 [2] ./coconut }}} You can use the defaults (just press return) for * Compile in 32 or 64bit mode? [64 bit] * Which high energy hadronic interaction model do you want to use? [QGSJET 01C] * Which low energy hadronic interaction model do you want to use? [GHEISHA 2002d] * Which detector geometry do you have? [horizontal flat] Now you should get a long list of possible options {{{ Which additional CORSIKA program options do you need? }}} Enter {{{ (multiple selections accepted, leading '-' removes option): 1a 1c 1e 2a 7c 9 }}} These options correspond to: CERENKOV, IACT, CEFFIC, TRAJECT, VIEWCONE and ATMEXT. Now you will get asked more question, answer them as follows * Cherenkov light vertical (longitudinal) distribution option? [No Cherenkov light distribution at all] * Do you want Cherenkov light emission angle wavelength dependence? [depending on wavelength] {This corresponds to the CERWLEN option} Now, coconut can create the input files, configure the make system and make. To proceed, select `*** Finish selection ***`. You should see {{{ Are you sure you want to continue with these current option selection: CERENKOV NOCLONG THIN TRAJECT VIEWCONE ATMEXT BERNLOHRDIR CERWLEN CEFFIC yes or no ? (default: yes) > }}} Which you acknowledge. Now, go ahead! For completeness, here is the full session with Corsika 7.64 {{{#!Spoiler {{{#!bash |===========================================================================| | Welcome to COCONUT (v3.1) | | -- the CORSIKA CONfiguration UTility -- | |===========================================================================| | | | | | create an executable of a specific CORSIKA version | | | | | | Please read the documentation for a detailed description | | of the options and how to use it. | | | | Try './coconut -h' to get some help about COCONUT | | Use './coconut --expert' to enable additional configuration steps. | | | | (press 'Enter' to select an option followed by "[DEFAULT]" or "[CACHED]") | | | |===========================================================================| --------------------------------------------------------------------------- Compile in 32 or 64bit mode ? 1 - Force 32bit mode 2 - Use compiler default ('-m64' on a 64bit machine) [DEFAULT] r - restart (reset all options to cached values) x - exit make (only one choice possible): SELECTED : NOM32 --------------------------------------------------------------------------- Which high energy hadronic interaction model do you want to use ? 1 - DPMJET-III (2017.1) with PHOJET 1.20.0 2 - EPOS LHC 3 - NEXUS 3.97 4 - QGSJET 01C (enlarged commons) [DEFAULT] 5 - QGSJETII-04 6 - SIBYLL 2.3c 7 - VENUS 4.12 r - restart (reset all options to cached values) x - exit make (only one choice possible): SELECTED : QGSJET01 --------------------------------------------------------------------------- Which low energy hadronic interaction model do you want to use ? 1 - GHEISHA 2002d (double precision) [DEFAULT] 2 - FLUKA 3 - URQMD 1.3cr r - restart (reset all options to cached values) x - exit make (only one choice possible): SELECTED : GHEISHA --------------------------------------------------------------------------- Which detector geometry do you have ? 1 - horizontal flat detector array [DEFAULT] 2 - non-flat (volume) detector geometry 3 - vertical string detector geometry r - restart (reset all options to cached values) x - exit make (only one choice possible): SELECTED : HORIZONTAL --------------------------------------------------------------------------- options: GHEISHA TIMEAUTO QGSJET01 HORIZONTAL Which additional CORSIKA program options do you need ? 1a - Cherenkov version 1b - Cherenkov version using Bernlohr IACT routines (for telescopes) 1c - apply atm. absorption, mirror reflectivity & quantum eff. 1d - Auger Cherenkov longitudinal distribution 1e - TRAJECTory version to follow motion of source on the sky 2 - LPM-effect without thinning 2a - THINning version (includes LPM) 2b - MULTIple THINning version (includes LPM) 3 - PRESHOWER version for EeV gammas 4 - NEUTRINO version 4a - NUPRIM primary neutrino version with HERWIG 4b - ICECUBE1 FIFO version 4c - ICECUBE2 gzip/pipe output 5 - STACK INput of secondaries, no primary particle 6 - CHARMed particle/tau lepton version with PYTHIA 6a - TAU LEPton version with PYTHIA 7 - SLANT depth instead of vertical depth for longi-distribution 7a - CURVED atmosphere version 7b - UPWARD particles version 7c - VIEWCONE version 8a - shower PLOT version (PLOTSH) (only for single events) 8b - shower PLOT(C) version (PLOTSH2) (only for single events) 8c - ANAlysis HISTos & THIN (instead of particle file) 8d - Auger-histo file & THIN 8e - MUON-histo file 9 - external atmosphere functions (table interpolation) (using bernlohr C-routines) 9a - EFIELD version for electrical field in atmosphere 9b - RIGIDITY Ooty version rejecting low-energy primaries entering Earth-magnetic field 10a - DYNamic intermediate particle STACK 10b - Remote Control for Corsika a - CONEX for high energy MC and cascade equations b - PARALLEL treatment of subshowers (includes LPM) c - CoREAS Radio Simulations d1 - Inclined observation plane d2 - ROOT particle OUTput file e - interaction test version (only for 1st interaction) f - Auger-info file instead of dbase file g - COMPACT particle output file h - MUPROD to write decaying muons h2 - prEHISTORY of muons: mother and grandmother k - annitest cross-section version (obsolete) l - hit Auger detector (steered by AUGSCT) - ------------------------------------------ y - *** Reset selection *** z - *** Finish selection *** [DEFAULT] r - restart (reset all options to cached values) x - exit make (multiple selections accepted, leading '-' removes option): 1a 1c 1e 2a 7c 9 --------------------------------------------------------------------------- Cherenkov light vertical (longitudinal) distribution option ? 1 - Photons counted only in the step where emitted [DEFAULT] 2 - Photons counted in every step down to the observation level (compatible with old versions but inefficient) 3 - No Cherenkov light distribution at all r - restart (reset all options to cached values) x - exit make (only one choice possible): 3 SELECTED : NOCLONG --------------------------------------------------------------------------- Do you want Cherenkov light emission angle wavelength dependence ? 1 - Emission angle is wavelength independent [DEFAULT] 2 - Emission angle depending on wavelength r - restart (reset all options to cached values) x - exit make (only one choice possible): 2 SELECTED : CERWLEN SELECTED : CERENKOV NOT COMPATIBLE TO: COMPACT VOLUMECORR INTTEST ANAHIST AUGERHIST MUONHIST AUGCERLONG ICECUBE1 ICECUBE2 SELECTED : CEFFIC NOT COMPATIBLE TO: INTTEST CURVED AUGCERLONG SELECTED : TRAJECT NOT COMPATIBLE TO: INTTEST UPWARD SELECTED : THIN NOT COMPATIBLE TO: ICECUBE1 INTTEST LPM SELECTED : VIEWCONE NOT COMPATIBLE TO: VOLUMECORR INTTEST SELECTED path to installation: "/home/tbretz/SW/corsika-764xx/bernlohr" SELECTED : ATMEXT NOT COMPATIBLE TO: INTTEST --------------------------------------------------------------------------- options: GHEISHA TIMEAUTO QGSJET01 HORIZONTAL selection: BERNLOHRDIR CEFFIC THIN VIEWCONE TRAJECT NOCLONG CERWLEN CERENKOV ATMEXT Which additional CORSIKA program options do you need ? 1a - Cherenkov version 1b - Cherenkov version using Bernlohr IACT routines (for telescopes) 1c - apply atm. absorption, mirror reflectivity & quantum eff. 1d - Auger Cherenkov longitudinal distribution 1e - TRAJECTory version to follow motion of source on the sky 2 - LPM-effect without thinning 2a - THINning version (includes LPM) 2b - MULTIple THINning version (includes LPM) 3 - PRESHOWER version for EeV gammas 4 - NEUTRINO version 4a - NUPRIM primary neutrino version with HERWIG 4b - ICECUBE1 FIFO version 4c - ICECUBE2 gzip/pipe output 5 - STACK INput of secondaries, no primary particle 6 - CHARMed particle/tau lepton version with PYTHIA 6a - TAU LEPton version with PYTHIA 7 - SLANT depth instead of vertical depth for longi-distribution 7a - CURVED atmosphere version 7b - UPWARD particles version 7c - VIEWCONE version 8a - shower PLOT version (PLOTSH) (only for single events) 8b - shower PLOT(C) version (PLOTSH2) (only for single events) 8c - ANAlysis HISTos & THIN (instead of particle file) 8d - Auger-histo file & THIN 8e - MUON-histo file 9 - external atmosphere functions (table interpolation) (using bernlohr C-routines) 9a - EFIELD version for electrical field in atmosphere 9b - RIGIDITY Ooty version rejecting low-energy primaries entering Earth-magnetic field 10a - DYNamic intermediate particle STACK 10b - Remote Control for Corsika a - CONEX for high energy MC and cascade equations b - PARALLEL treatment of subshowers (includes LPM) c - CoREAS Radio Simulations d1 - Inclined observation plane d2 - ROOT particle OUTput file e - interaction test version (only for 1st interaction) f - Auger-info file instead of dbase file g - COMPACT particle output file h - MUPROD to write decaying muons h2 - prEHISTORY of muons: mother and grandmother k - annitest cross-section version (obsolete) l - hit Auger detector (steered by AUGSCT) - ------------------------------------------ y - *** Reset selection *** z - *** Finish selection *** [DEFAULT] r - restart (reset all options to cached values) x - exit make (multiple selections accepted, leading '-' removes option): Are you sure you want to continue with these current option selection: BERNLOHRDIR CEFFIC THIN VIEWCONE TRAJECT NOCLONG CERWLEN CERENKOV ATMEXT yes or no ? (default: yes) > ------------------------------------------------------------------------- Your final selection to build CORSIKA is: options: GHEISHA TIMEAUTO QGSJET01 HORIZONTAL selection: BERNLOHRDIR CEFFIC THIN VIEWCONE TRAJECT NOCLONG CERWLEN CERENKOV ATMEXT --------------------------------------------------------------------------- Configuration is finished. How do you want to proceed ? f - Compiling and remove temporary files [DEFAULT] k - Compile and keep extracted CORSIKA source code n - Just extract source code. Do not compile! r - restart (reset all options to cached values) x - exit make (only one choice possible): SELECTED : COMPILE checking whether to enable maintainer-specific portions of Makefiles... no checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking to compile without optimisation and system flags... (cached) no checking whether to generate debug... (cached) yes checking for pgf77... no checking for ifc... no checking for ifort... no checking for gfortran... gfortran checking whether the Fortran 77 compiler works... yes checking for Fortran 77 compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU Fortran 77 compiler... yes checking whether gfortran accepts -g... yes checking for cc... cc checking whether we are using the GNU C compiler... yes checking whether cc accepts -g... yes checking for cc option to accept ISO C89... none needed checking whether cc understands -c and -o together... yes checking for style of include used by make... GNU checking dependency style of cc... gcc3 checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... gcc3 checking for cpp... cpp checking how to run the C preprocessor... cpp checking how to get verbose linking output from gfortran... -v checking for Fortran 77 libraries of gfortran... -L/usr/lib/gcc/x86_64-linux-gnu/5 -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/5/../../.. -lgfortran -lm -lquadmath checking how to print strings... printf checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for fgrep... /bin/grep -F checking for ld used by cc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking whether the shell understands some XSI constructs... yes checking whether the shell understands "+="... yes checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop checking for /usr/bin/ld option to reload object files... -r checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for ar... ar checking for archiver @FILE support... @ checking for strip... strip checking for ranlib... ranlib checking command to parse /usr/bin/nm -B output from cc object... ok checking for sysroot... no checking for mt... mt checking if mt is a manifest tool... no checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for dlfcn.h... yes checking for objdir... .libs checking if cc supports -fno-rtti -fno-exceptions... no checking for cc option to produce PIC... -fPIC -DPIC checking if cc PIC flag -fPIC -DPIC works... yes checking if cc static flag -static works... yes checking if cc supports -c -o file.o... yes checking if cc supports -c -o file.o... (cached) yes checking whether the cc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking how to run the C++ preprocessor... g++ -E checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC -DPIC checking if g++ PIC flag -fPIC -DPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking if g++ supports -c -o file.o... (cached) yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... (cached) GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking for gfortran option to produce PIC... -fPIC checking if gfortran PIC flag -fPIC works... yes checking if gfortran static flag -static works... yes checking if gfortran supports -c -o file.o... yes checking if gfortran supports -c -o file.o... (cached) yes checking whether the gfortran linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... (cached) GNU/Linux ld.so checking how to hardcode library paths into programs... immediate ./configure: line 19111: BOOST_PROGRAM_OPTIONS: command not found checking to make dist... (cached) no checking 32 bits compatibility... no checking for stdint.h... (cached) yes checking explicitly use the -m32 flag... (cached) no checking explicitly use the -frecord-marker=4 flag... (cached) no checking detector geometry... horizontal checking time library... rc checking high energy model... qgsjet01 checking for fluka... no checking low energy model... gheisha checking for thinning... (cached) yes checking for Cherenkov grid detector... (cached) yes checking for bernlohr... /home/tbretz/SW/corsika-764xx/bernlohr checking for Cherenkov telescope detector... (cached) no checking new Cherenkov counting... (cached) no checking no cherenkov longitudinla profile... (cached) yes checking Cherenkov wavelength dependent... (cached) yes checking simulate telescope detector... (cached) yes checking for external IACT Cherenkov file... (cached) no checking external atmosphere... (cached) yes checking for multiple thinning... (cached) no checking neutrino primaries... (cached) no checking ICECUBE FiFo... (cached) no checking ICECUBE gzip/pipe output... (cached) no checking BAACK modules with C++0x option... (cached) no checking BAACK modules with C++11 option... (cached) no checking BAACK modules with C++14 option... (cached) no checking BAACK modules with C++1z option... (cached) no checking for BAACK... no checking DYNamic particle STACK... (cached) no checking emulation of normal stack... (cached) no checking stores every saved particle to file... (cached) no checking reimplementation of the ICECUBE1 module... (cached) no checking user defined intermediate particle stack... (cached) no checking Remote acces to corsika... (cached) no checking plot shower... (cached) no checking plot shower C... (cached) no checking for cernlib... no checking interaction test... (cached) no checking slant profile... (cached) no checking curved atmosphere... (cached) no checking upward particles... (cached) no checking viewcone... (cached) yes checking cerenkov longitudinal profile... (cached) no checking photon preshower... (cached) no checking MUPROD... (cached) no checking compact output... (cached) no checking annitest... (cached) no checking LPM effect... (cached) no checking stack input... (cached) no checking for pythia... no checking pythia charm production... (cached) no checking for herwig... no checking herwig neutrino production (NUPRIM)... (cached) no checking augerhit... (cached) no checking pythia tau lepton production... (cached) no checking particle history... (cached) no checking trajectory... (cached) yes checking electrical field... (cached) no checking rigidity... (cached) no checking for root... no checking particle output in root file... (cached) no checking machine independent output... (cached) no checking for COASTUSERLIB... no checking External COAST user library... (cached) no checking CoREAS radio simulations... (cached) no checking Inclined observation level... (cached) no checking for conex... no checking CONEX cascade equation (CONEX)... (cached) no checking produce analysis histograms... (cached) no checking augerinfo... (cached) no checking augerhist... (cached) no checking muonhist... (cached) no checking parallel computation... (cached) no checking for mpirunner_lib... no checking parallel computation with MPI... (cached) no checking do not compile binaries, just extract CORSIKA compilefile... (cached) no checking to keep the CORSIKA compilefile... (cached) no checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: creating baack/Makefile config.status: creating bernlohr/Makefile config.status: creating conex/Makefile config.status: creating dpmjet/Makefile config.status: creating epos/Makefile config.status: creating pythia/Makefile config.status: creating herwig/Makefile config.status: creating nexus/Makefile config.status: creating urqmd/Makefile config.status: creating src/Makefile config.status: creating run/Makefile config.status: creating doc/Makefile config.status: creating lib/Makefile config.status: creating coast/Makefile config.status: creating coast/Documentation/Makefile config.status: creating coast/CorsikaOptions/rootout/Makefile config.status: creating coast/CorsikaOptions/CoREAS/Makefile config.status: creating coast/CorsikaOptions/Makefile config.status: creating coast/CorsikaOptions/InclinedPlane/Makefile config.status: creating coast/CorsikaFileIO/Makefile config.status: creating coast/CorsikaInterface/Makefile config.status: creating coast/CorsikaToROOT/Makefile config.status: creating coast/CorsikaROOT/Makefile config.status: creating coast/CorsikaIntern/Makefile config.status: creating include/config.h config.status: executing depfiles commands config.status: executing libtool commands - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Compile CORSIKA in "/home/tbretz/SW/corsika-764xx/lib/unknown" and copy executable in "/home/tbretz/SW/corsika-764xx/run" Making install in bernlohr make[1]: Entering directory '/home/tbretz/SW/corsika-764xx/bernlohr' cc -DHAVE_CONFIG_H -I. -I../include -g -D_FILE_OFFSET_BITS=64 -MT libbern_a-fileopen.o -MD -MP -MF .deps/libbern_a-fileopen.Tpo -c -o libbern_a-fileopen.o `test -f 'fileopen.c' || echo './'`fileopen.c mv -f .deps/libbern_a-fileopen.Tpo .deps/libbern_a-fileopen.Po cc -DHAVE_CONFIG_H -I. -I../include -g -D_FILE_OFFSET_BITS=64 -MT libbern_a-straux.o -MD -MP -MF .deps/libbern_a-straux.Tpo -c -o libbern_a-straux.o `test -f 'straux.c' || echo './'`straux.c mv -f .deps/libbern_a-straux.Tpo .deps/libbern_a-straux.Po rm -f libbern.a ar cru libbern.a libbern_a-fileopen.o libbern_a-straux.o ar: `u' modifier ignored since `D' is the default (see `U') ranlib libbern.a cc -DHAVE_CONFIG_H -I. -I../include -g -D_FILE_OFFSET_BITS=64 -MT libatmext_a-atmo.o -MD -MP -MF .deps/libatmext_a-atmo.Tpo -c -o libatmext_a-atmo.o `test -f 'atmo.c' || echo './'`atmo.c mv -f .deps/libatmext_a-atmo.Tpo .deps/libatmext_a-atmo.Po cc -DHAVE_CONFIG_H -I. -I../include -g -D_FILE_OFFSET_BITS=64 -MT libatmext_a-fileopen.o -MD -MP -MF .deps/libatmext_a-fileopen.Tpo -c -o libatmext_a-fileopen.o `test -f 'fileopen.c' || echo './'`fileopen.c mv -f .deps/libatmext_a-fileopen.Tpo .deps/libatmext_a-fileopen.Po cc -DHAVE_CONFIG_H -I. -I../include -g -D_FILE_OFFSET_BITS=64 -MT libatmext_a-straux.o -MD -MP -MF .deps/libatmext_a-straux.Tpo -c -o libatmext_a-straux.o `test -f 'straux.c' || echo './'`straux.c mv -f .deps/libatmext_a-straux.Tpo .deps/libatmext_a-straux.Po rm -f libatmext.a ar cru libatmext.a libatmext_a-atmo.o libatmext_a-fileopen.o libatmext_a-straux.o ar: `u' modifier ignored since `D' is the default (see `U') ranlib libatmext.a make[2]: Entering directory '/home/tbretz/SW/corsika-764xx/bernlohr' /bin/mkdir -p '/home/tbretz/SW/corsika-764xx/lib/unknown' /usr/bin/install -c -m 644 libbern.a libatmext.a '/home/tbretz/SW/corsika-764xx/lib/unknown' ( cd '/home/tbretz/SW/corsika-764xx/lib/unknown' && ranlib libbern.a ) ( cd '/home/tbretz/SW/corsika-764xx/lib/unknown' && ranlib libatmext.a ) make[2]: Nothing to be done for 'install-data-am'. make[2]: Leaving directory '/home/tbretz/SW/corsika-764xx/bernlohr' make[1]: Leaving directory '/home/tbretz/SW/corsika-764xx/bernlohr' Making install in src make[1]: Entering directory '/home/tbretz/SW/corsika-764xx/src' cpp -DHAVE_CONFIG_H -I../include -traditional-cpp corsika.F > corsikacompilefile.f gfortran -O0 -g -std=legacy -c -o corsika-corsikacompilefile.o `test -f 'corsikacompilefile.f' || echo './'`corsikacompilefile.f depbase=`echo tobuf.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\ cc -DHAVE_CONFIG_H -I. -I../include -g -D_FILE_OFFSET_BITS=64 -MT tobuf.o -MD -MP -MF $depbase.Tpo -c -o tobuf.o tobuf.c &&\ mv -f $depbase.Tpo $depbase.Po gfortran -O0 -g -std=legacy -c -o corsika-qgsjet01d.o `test -f 'qgsjet01d.f' || echo './'`qgsjet01d.f gfortran -O0 -g -std=legacy -c -o corsika-gheisha_2002d.o `test -f 'gheisha_2002d.f' || echo './'`gheisha_2002d.f depbase=`echo timerc.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\ cc -DHAVE_CONFIG_H -I. -I../include -g -D_FILE_OFFSET_BITS=64 -MT timerc.o -MD -MP -MF $depbase.Tpo -c -o timerc.o timerc.c &&\ mv -f $depbase.Tpo $depbase.Po /bin/bash ../libtool --tag=F77 --mode=link gfortran -O0 -g -std=legacy -D_FILE_OFFSET_BITS=64 -o corsika corsika-corsikacompilefile.o tobuf.o corsika-qgsjet01d.o corsika-gheisha_2002d.o timerc.o -L/home/tbretz/SW/corsika-764xx/lib/unknown -lbern -latmext libtool: link: gfortran -O0 -g -std=legacy -D_FILE_OFFSET_BITS=64 -o corsika corsika-corsikacompilefile.o tobuf.o corsika-qgsjet01d.o corsika-gheisha_2002d.o timerc.o -L/home/tbretz/SW/corsika-764xx/lib/unknown -lbern -latmext make[2]: Entering directory '/home/tbretz/SW/corsika-764xx/src' /bin/mkdir -p '/home/tbretz/SW/corsika-764xx/run' /bin/bash ../libtool --mode=install /usr/bin/install -c corsika '/home/tbretz/SW/corsika-764xx/run' libtool: install: /usr/bin/install -c corsika /home/tbretz/SW/corsika-764xx/run/corsika make[2]: Nothing to be done for 'install-data-am'. make[2]: Leaving directory '/home/tbretz/SW/corsika-764xx/src' make[1]: Leaving directory '/home/tbretz/SW/corsika-764xx/src' Making install in . make[1]: Entering directory '/home/tbretz/SW/corsika-764xx' make[2]: Entering directory '/home/tbretz/SW/corsika-764xx' make install-exec-hook make[3]: Entering directory '/home/tbretz/SW/corsika-764xx' --> "corsika76400Linux_QGSJET_gheisha_thin" successfully installed in : /home/tbretz/SW/corsika-764xx/run/ --> You can run CORSIKA in /home/tbretz/SW/corsika-764xx/run/ using for instance : ./corsika76400Linux_QGSJET_gheisha_thin < all-inputs > output.txt make[3]: Leaving directory '/home/tbretz/SW/corsika-764xx' make[2]: Nothing to be done for 'install-data-am'. make[2]: Leaving directory '/home/tbretz/SW/corsika-764xx' make[1]: Leaving directory '/home/tbretz/SW/corsika-764xx' }}} }}} == Options description == CERENKOV[1a]: Enables production of Cherenkov photons IACT[1b]: Redirects photons to eventio (telescope.dat) file (CER files exists, but only for one telescope and it is empty), extends wavelength range to 2000nm. CERWLEN: Calculates a wavelength dependent refractive index for each step and replaces the production height (8-th) in the photon output by the wavelength. IACTEXT: Write also particles to eventio file CEFFIC[1c]: All three look-up-tables (QE, Atmabs, Mirror) are limited to 105 values between 180nm and 700nm -> This turns the extension to 2000nm in the IACT option off TRAJECT[1e]: To be able to simulate along a trajetory (zd, az, orientation to magnetic field) with "TRAFLG T" (Turn off with "TRAFLG F") THIN[2a]: Thinning is mainly interesting for >PeV showers and calculates average results for high densities. With CEFFIC and/or CERWLEN, the wavelength is written 8th value to the Cherenkov bunch into the CER-file instead of the weight. To turn the thinning off for the production use "THIN 0 1 0" (The production should behave like with no THIN option). To turn thinning only off for electromagnetic-particles use "THINEM 0 1" VIEWCONE[7c]: Logically allows to simulate a cone rather than a rectangle in !Alt/Az ATMEXT![9]: To use an atmosphere from an input file rather than a built-in atmosphere This is from the tracking of the electrons through the Earth's magnetic field {{{#!fortran C LIMITING FACTOR FOR STEP SIZE OF ELECTRON IN MAGNETIC FIELD #if __CERENKOV__ && __IACT__ C LIMIT IN DEFLECTION ANGLE IS 2.5 MILLIRADIAN = 0.143 DEG C WE USE A LIMIT OF ABOUT 0.05 DEG (APPROX. 1 MILLIRAD) BLIMIT = 0.001D0 / BNORM #else C WE USE A LIMIT OF ABOUT 11.4 DEG (0.2 RAD) BLIMIT = 0.2D0 / BNORM #endif }}} This is from the muon tracking (MUTRAC) {{{#!fortran #if __CERENKOV__ && __IACT__ C SCATTERING ANGLES OF MUONS SHOULD BE SMALLER THAN THE PIXEL SIZE. * AUX = MIN( 1.D0, 0.015D0*GAMMA ) C THE SAME SHOULD HOLD FOR DEFLECTION IN THE GEOMAGNETIC FIELD. C HERE USING A MAXIMUM RMS SCATTERING / DEFLECTION ANGLE OF 0.05 DEG C AND APPROXIMATE ALL BETA*GAMMA TERMS BY GAMMA. Cxx Write(*,*) 'mu step old-style step=',MIN( 1.D0,0.015D0*GAMMA ) C FOR A MEAN SCATTERING ANGLE THETA WE HAVE A STEP LENGTH OF ABOUT C (THETA / (13.6 MEV/(BETA*C*P))**2 RADIATION LENGTHS (PDG), C NOT TAKING INTO ACCOUNT THE NON-GAUSSIAN PART OF THE DISTIBUTION. C FOR THE MOMENT DON''T CARE ABOUT THE DIFFERENCE BETWEEN THE C 'COULOMB SCATTERING LENGTH' 37.7 G/CM**2 (=C(21)) AND THE C RADIATION LENGTH OF 36.66 OR 36.62 G/CM**2 IN AIR. C NOTE: PI/180/(13.6 MEV/(BETA*C*P)) APPROX 0.136*GAMMA FOR MUONS. AUX = MIN( 1.D0, ((0.05*0.136)*GAMMA)**2 ) IF ( BNORMC .GT. 0.D0 ) THEN C NOTE: PI/180*PAMA(5)*BETA*GAMMA APPROX 0.00185*GAMMA AUX = MIN( AUX, (0.05*0.00185)*GAMMA*RHOF(H)/(BNORMC*C(21)) ) ENDIF Cxx Write(*,*) 'mu step new-style step=',AUX #else AUX = MIN( 10.D0, 0.015D0*GAMMA ) #endif }}} For me this seems only relevant if someone wants to backtrack a single muon, i.e. determin its arrival direction. === An interesting possibility of the IACT option is: === > j) Starting with version 1.25, the package has been prepared for importance sampling ofcore position offsets. This would mean that actual core offsets can be generated in anon-uniform distribution and can extend to different distances, depending on primaryenergy, primary type, zenith angle and so on. This package, however, does not provide areal implementation of importance sampling (other than for testing that the later stagesof the processing properly get the weights for each event). If you do nothing about it,you will get uniformly distributed core offsets as before. If you plan to make use ofimportance sampling, you have to replace the file ’sampling.c’ with an implementationof your choice. === A problem with the IACT option might be this: === > m) Starting with version 1.38, the dynamic range in a telescope is basically unlimited dueto automatic thinning of bunches. When a detector sphere is hit by more than the givenmaximum number of bunches, the actual number of bunches is reduced by increasingpowers of two, by discarding every second bunch and increasing the bunch size of theremaining bunches by factors of two. Very large eventio buffers are now possible on64-bit machines. They were formerly limited to less than 1 GiB per telescope array andevent and now to 2 GiB on 32-bit machines but can be increased to 4 Terabytes on 64-bitmachines. === The secret of wavelength 999 and 9999 in eventio: === > **IACTEXT** The interface to theTELOUTfunction is extended by parameters describing theemitting particle. This extended information is stored as an additional photon bunch(after the normal one) with mass, charge, energy, and emission time replacing thecx,cy,photons, andzemfields, respectively, and are identified by a wavelength of 9999.The compact output format is disabled for making that possible. In addition, all particlesarriving at the CORSIKA observation level are included in the eventio format output file,in a photon-bunch like block identified by array and detector numbers 999. == The 700nm problem == This is were Corsika checks the limits {{{#!fortran #if __IACT__ && !__CEFFIC__ IF ( WAVLGL .LT. 100.D0 .OR. WAVLGU .GT. 2000.D0 * .OR. WAVLGL .GE. WAVLGU ) THEN #else IF ( WAVLGL .LT. 100.D0 .OR. WAVLGU .GT. 700.D0 * .OR. WAVLGL .GE. WAVLGU ) THEN #endif }}} This is were the data is read from the files {{{#!fortran C======================================================================= SUBROUTINE TPDINI( OBLECE ) C----------------------------------------------------------------------- [...] C READ THE TABLE OF ATMOSPHERIC EXTINCTION AND STORE IT IN THE C ATMABS MATRIX. [...] DO I = 1, 105 READ(MCERABS,21) WLT 21 FORMAT(I4) READ(MCERABS,*,ERR=995,END=995) (ATMABS(I,J), J=0,50) ENDDO [...] C CALCULATE THE ATM. EXTINCTION FOR OBS. LEVEL INTERPOLATING THE TABLE DO IWL = 1, 105 FX0 = ATMABS(IWL,X0) FX1 = ATMABS(IWL,X1) ATEOBS(IWL) = LINEAR(X,X0,X1,FX0,FX1) ENDDO [...] C READ THE QUANTUM EFFECIENCY OF THE PMT OPEN(UNIT=MCERQEF,FILE=DATDIR(1:INDEX(DATDIR,' ')-1)// * 'quanteff.dat',STATUS='OLD',FORM='FORMATTED',ERR=996) READ(MCERQEF,20) TEXTQEF READ(MCERQEF,23,ERR=997,END=997) (QUAEFF(I),I = 1,105) [...] C READ THE MIRROR REFLECTIVITY OPEN(UNIT=MCERMIR,FILE=DATDIR(1:INDEX(DATDIR,' ')-1)// * 'mirreff.dat',STATUS='OLD',FORM='FORMATTED',ERR=998) READ(MCERMIR,20) TEXTREF READ(MCERMIR,23,END=999,ERR=999) (MIRREF(I), I=1,105) }}} This is where the index or the y-value and the corresponding x-values are calculated for mirror and pde efficiency. {{{#!fortran C===================================================================== SUBROUTINE TELEFF( ABSORB ) C----------------------------------------------------------------------- [...] C CALCULATE THE REFERENCE WL AND INDEX OF WL FOR THE INTERPOLATIONS RIWL = 1 + INT( (WL-180.D0)/5.D0 ) WLI0 = RIWL*5 + 175 WLI1 = RIWL*5 + 175 + 5 }}} This is the atmospheric absorption {{{#!fortran *-- Author : V. de Souza Filho, Uni. Campinas 22/06/1999 C======================================================================= SUBROUTINE ATABSO( ABSORB ) C----------------------------------------------------------------------- [...] C CALCULATE THE REFERENCE WL AND INDEX OF WL FOR THE INTERPOLATIONS RIWL = 1 + INT( (WL-180.D0)/5.D0 ) WLI0 = RIWL*5 + 175 WLI1 = RIWL*5 + 175 + 5 }}} == MMCS == The current version of MARS is NOT compatible anymore with MMCS output. Although the code is still there and can be enables, it is turned off by default (see MPhotonData.cc) == Conclusion == If we want to do any absorption in Corsika (CEFFIC), we have to patch Corsika to allow wavelength larger than 700nm or accept that we will miss photons above 700nm. To be able to define telescope positions ("TELESCOPE"), the IACT option is **not** required. Plain Corsika can nowadays do that. Enabling IACT might make sense, due to the code snippets shown above, the automatic thinning (faster) and the work on improving runtime by faster interpolation algorithms. The disadvantage of the IACT option is that teh data of all telescopes end up in the same file and that *eventio* format has to be used. Although, the iACT options writes a temporary file for each individual telescope, they are sorted together into one file later. Using IACT means that we have to understand the automatic thinning and implement it and to make sure eventio works. I have the impression that eventio files are larger than the corsika output (which is a bit strange)... this has to be checked with long runs and high statistics! == Examples == Here is an example input card for gammas (not all options have yet reasonable values!) {{{#!Spoiler {{{ RUNNR 100 run number EVTNR 0 number of first shower event NSHOW 1 number of showers to be generated in one run SEED 62748 0 0 seed for hadronic part SEED 62749 0 0 seed for EGS4 part SEED 62750 0 0 seed for Cherenkov part SEED 62751 0 0 seed for 4. random number sequence SEED 62752 0 0 seed for 5. random number sequence PRMPAR 1 primary particle code: 1 = photon, 3 = e-, 14 = p+ FIXCHI 0 starting altitude of primary particle? TSTART T taken from IACT option (start emission at border of atmosphere) ERANGE 10000 10000 energy range of primary particle in GeV ESLOPE -2 slope of energy spectrum PHIP 0. 0. range of azimuth angle in deg THETAP 60. 60. range of zenith angle in deg VIEWCONE 0.0 0.0 range of viewcone in deg TRAFLG F TRAJECTORY option * SRCPOS ra dec source position * TRATM y m d h m s duration observation time * TLAT d m s N observatory latitude * TLONG d m s N observatory longitude CWAVLG 250. 700. simulation range of wavelength band for cherenkov radiation in nm CWAVRANG 250. 700 input range for all three CERQEFF files * CERFIL 1 cherenkov output file, last item of bunch gives wavelength (part of CERWLEN) * CERSIZ 1 maximal bunch size of CHphotons treated together CERQEF F T F quantum efficiency of PMT, atmospheric absorption of Cherenkov photons, mirror reflectivity of telescope * ATMOD 22 atmospheric parametrisation, here: US STD atm parametrised by Keilhauer * MAGNET OBSLEV 4100.E2 observation level above sea level in cm ATMOSPHERE 7 T TELESCOPE 0 0 0 2.0e2 0 they must not overlap... CSCAT 1 0 0 number of uses of each Cherenkov event, maximum scattering of core location in cm * ECUTS 0.3 0.3 0.03 0.03 low energy cutoffs, here are std. values in GeV * PAROUT T F * DATBAS F DIRECT ./ defines name of output directory DATDIR corsika-76400/run defines name of input directory USER tbretz THIN 0 0.1 0 turn off thinning }}} }}}