Skip to content
Snippets Groups Projects
Commit be3a12ab authored by Sylvester Joosten's avatar Sylvester Joosten
Browse files

packaged pythia with nanocernlib v1.0.0, to simplify the build

parent 5687274a
No related branches found
No related tags found
No related merge requests found
Showing
with 4366 additions and 1 deletion
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
cmake_minimum_required (VERSION 2.8) cmake_minimum_required (VERSION 2.8)
project (pythia6m) project (pythia6m)
set (PYTHIA6M_MAJOR_VERSION 2) set (PYTHIA6M_MAJOR_VERSION 2)
set (PYTHIA6M_MINOR_VERSION 0) set (PYTHIA6M_MINOR_VERSION 1)
set (PYTHIA6M_PATCH_VERSION 0) set (PYTHIA6M_PATCH_VERSION 0)
set (PYTHIA6M_VERSION set (PYTHIA6M_VERSION
${PYTHIA6M_MAJOR_VERSION}.${PYTHIA6M_MINOR_VERSION}.${PYTHIA6M_PATCH_VERSION}) ${PYTHIA6M_MAJOR_VERSION}.${PYTHIA6M_MINOR_VERSION}.${PYTHIA6M_PATCH_VERSION})
...@@ -31,6 +31,8 @@ add_subdirectory(pythia6m/radiator) ...@@ -31,6 +31,8 @@ add_subdirectory(pythia6m/radiator)
add_subdirectory(pythia6m/radgen) add_subdirectory(pythia6m/radgen)
add_subdirectory(pythia6m/pythia6) add_subdirectory(pythia6m/pythia6)
add_subdirectory(nanocernlib)
add_subdirectory(program) add_subdirectory(program)
################################################################################ ################################################################################
......
---
BasedOnStyle: LLVM
BreakConstructorInitializersBeforeComma: true
ConstructorInitializerAllOnOneLineOrOnePerLine: true
Cpp11BracedListStyle: true
Standard: Cpp11
#SpaceBeforeParens: ControlStatements
SpaceAfterControlStatementKeyword: true
PointerBindsToType: true
...
## CMake project file for nanocernlib
################################################################################
## PROJECT: nanocernlib
################################################################################
cmake_minimum_required (VERSION 2.8)
project (nanocernlib)
set (NANOCERNLIB_MAJOR_VERSION 1)
set (NANOCERNLIB_MINOR_VERSION 0)
set (NANOCERNLIB_PATCH_VERSION 0)
set (NANOCERNLIB_VERSION
${NANOCERNLIB_MAJOR_VERSION}.${NANOCERNLIB_MINOR_VERSION}.${NANOCERNLIB_PATCH_VERSION})
set (NANOCERNLIB_SOVERSION ${NANOCERNLIB_MAJOR_VERSION})
################################################################################
## CMAKE Settings
################################################################################
include(cmake/options.cmake)
include(cmake/compiler.cmake)
################################################################################
## Add subdirectories
################################################################################
set (TARGETS "")
add_subdirectory(geant321)
add_subdirectory(packlib)
add_subdirectory(mathlib)
add_subdirectory(mclibs)
add_subdirectory(cfortran)
################################################################################
## Prepare the project to be EXPORTed, generate configuration files
################################################################################
include(cmake/export.cmake)
# nanocernlib
A collection of commonly used cernlib routines packaged with cmake to easily build on modern systems.
# Installation
Note: the following instructions are given assuming you are using `bash` as your shell.
## Choose a working prefix
```bash
export PREFIX="/path/to/your/prefix"; mkdir -p $PREFIX
```
## Install all necessary dependencies
Ensure you have `cmake` and `gfortran` installed
## Build and install nanocernlib
```bash
mkdir -p ${PREFIX}/src && cd ${PREFIX}/src
git clone https://gitlab.com/tmdmc/nanocernlib.git
mkdir -p nanocernlib/BUILD && cd nanocernlib/BUILD
cmake .. -DCMAKE_INSTALL_PREFIX=${PREFIX} -DCMAKE_PREFIX_PATH=${PREFIX}
make -j4
make install
```
\ No newline at end of file
################################################################################
## Export and Install (headers only)
################################################################################
## install the headers
install(FILES "cfortran.h"
DESTINATION "${INSTALL_INCLUDE_DIR}/cfortran" COMPONENT dev)
This diff is collapsed.
################################################################################
## global cernlib defines
################################################################################
if (${UNIX})
add_definitions(
"-DCERNLIB_LINUX"
"-DCERNLIB_UNIX"
"-DCERNLIB_LNX"
"-DCERNLIB_QMGLIBC"
"-DLinux")
else ()
message( FATAL_ERROR "Unable to build on non-Unix system, aborting..." )
endif ()
## OSX specific
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
add_definitions("-DCERNLIB_MACOSX" "-DLinux")
endif ()
################################################################################
## C Compiler Settings
################################################################################
enable_language (C)
## set special compiler flags
get_filename_component(C_COMPILER_NAME ${CMAKE_C_COMPILER} NAME)
## gcc and clang
if (C_COMPILER_NAME MATCHES "cc.*" OR
C_COMPILER_NAME MATCHES "gcc.*" OR
C_COMPILER_NAME MATCHES "clang.*")
set (CC_EXTRA_FLAGS "-funroll-loops -fomit-frame-pointer -ftree-vectorize")
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CC_EXTRA_FLAGS}")
set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${CC_EXTRA_FLAGS}")
set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${CC_EXTRA_FLAGS}")
set (CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} ${CC_EXTRA_FLAGS}")
## add additional compilers here
## other compilers use the defaults:
else ()
message ("CMAKE_C_COMPILER full path: " ${CMAKE_C_COMPILER})
message ("C compiler: " ${C_COMPILER_NAME})
message ("No optimized C compiler flags are known, using the defaults...")
message ("Add the correct rules to cmake/compiler.cmake if other behavior is"
"required.")
endif ()
################################################################################
## Fortran Compiler Settings
################################################################################
enable_language (Fortran)
## set special compiler flags
get_filename_component (Fortran_COMPILER_NAME ${CMAKE_Fortran_COMPILER} NAME)
## gfortran
if (Fortran_COMPILER_NAME MATCHES "gfortran.*")
add_definitions("-DCERNLIB_GFORTRAN -Df2cFortran")
set (gfortran_EXTRA_FLAGS "-funroll-loops -fomit-frame-pointer -ftree-vectorize -fno-automatic -fno-second-underscore")
set (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${gfortran_EXTRA_FLAGS}")
set (CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} ${gfortran_EXTRA_FLAGS}")
set (CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG} ${gfortran_EXTRA_FLAGS}")
set (CMAKE_Fortran_FLAGS_RELWITHDEBINFO "${CMAKE_Fortran_FLAGS_RELWITHDEBINFO} ${gfortran_EXTRA_FLAGS}")
## g77
elseif (Fortran_COMPILER_NAME MATCHES "g77.*")
add_definitions("-Df2cFortran")
set (g77_EXTRA_FLAGS "-fugly-complex -fno-automatic -fno-second-underscore")
set (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${g77_EXTRA_FLAGS}")
set (CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} ${g77_EXTRA_FLAGS}")
set (CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG} ${g77_EXTRA_FLAGS}")
set (CMAKE_Fortran_FLAGS_RELWITHDEBINFO "${CMAKE_Fortran_FLAGS_RELWITHDEBINFO} ${g77_EXTRA_FLAGS}")
## add additional compilers here
## other compilers use the defaults:
else ()
message ("CMAKE_Fortran_COMPILER full path: " ${CMAKE_Fortran_COMPILER})
message ("Fortran compiler: " ${Fortran_COMPILER_NAME})
message ("No optimized Fortran compiler flags are known, using the defaults...")
message ("Add the correct rules to cmake/compiler.cmake if other behavior is"
"required.")
endif ()
## print out ALL available cmake variables
## include for debug purposes only
get_cmake_property(_variableNames VARIABLES)
foreach (_variableName ${_variableNames})
message(STATUS "${_variableName}=${${_variableName}}")
endforeach()
################################################################################
## Prepare the project to be EXPORTed, generate cmake configuration files
################################################################################
## utility string of project name in all caps
string(TOUPPER ${PROJECT_NAME} PROJECT_NAME_CAPS)
## lets get all the global defines associated with the project
get_directory_property(CONF_DEFINITIONS_RAW
DIRECTORY ${PROJECT_SOURCE_DIR}
COMPILE_DEFINITIONS)
foreach(define ${CONF_DEFINITIONS_RAW})
set(CONF_DEFINITIONS ${CONF_DEFINITIONS} "-D${define}")
endforeach ()
## Add all targets to the build-tree export set
export(TARGETS ${TARGETS}
FILE "${PROJECT_BINARY_DIR}/${PROJECT_NAME}-targets.cmake")
## Export the package for use from the build-tree
## (this registers the build-tree with a global CMake-registry)
export(PACKAGE ${PROJECT_NAME})
## Create the Project-config.cmake and Project-config-version.cmake files
file(RELATIVE_PATH REL_INCLUDE_DIR "${INSTALL_CMAKE_DIR}"
"${INSTALL_INCLUDE_DIR}")
## ... project-config.cmake for the build-tree
set(CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}")
configure_file("cmake/${PROJECT_NAME}-config.cmake.in"
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config.cmake" @ONLY)
## ... project-config.cmake for the install-tree
set(CONF_INCLUDE_DIRS
"\${${PROJECT_NAME_CAPS}_CMAKE_DIR}/${REL_INCLUDE_DIR}")
configure_file("cmake/${PROJECT_NAME}-config.cmake.in"
"${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${PROJECT_NAME}-config.cmake"
@ONLY)
## ... project-config-version.cmake for both
configure_file("cmake/${PROJECT_NAME}-config-version.cmake.in"
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake" @ONLY)
################################################################################
## INSTALL the configuration files
################################################################################
## Install the project-config.cmake and project-config-version.cmake files
install (FILES
"${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${PROJECT_NAME}-config.cmake"
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake"
DESTINATION ${INSTALL_CMAKE_DIR} COMPONENT dev)
## Install the export set to be used with the install-tree
install(EXPORT "${PROJECT_NAME}-targets"
DESTINATION ${INSTALL_CMAKE_DIR} COMPONENT dev)
set(PACKAGE_VERSION "@MINICERNLIB_VERSION@")
# Check whether the requested PACKAGE_FIND_VERSION is compatible
if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
set(PACKAGE_VERSION_COMPATIBLE FALSE)
else()
set(PACKAGE_VERSION_COMPATIBLE TRUE)
if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
set(PACKAGE_VERSION_EXACT TRUE)
endif()
endif()
# - Config file for the nanocernlib package
# It defines the following variables
# NANOCERNLIB_LIBRARIES - libraries to link against
# NANOCERNLIB_INCLUDE_DIR - project include directory
# NANOCERNLIB_DEFINITIONS - cernlib defines needed to compile with cernlib
# headers
# NANOCERNLIB_*_LIBRARY - single cernlib libraries (e.g.
# NANOCERNLIB_GEANT321_LIBRARY)
# NANOCERNLIB_*_INCLUDE_DIR - project component include dir (e.g.
# NANOCERNLIB_kernlib_INCLUDE_DIR)
# enable languages
enable_language(Fortran C)
# Compute paths
get_filename_component(NANOCERNLIB_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
set(NANOCERNLIB_INCLUDE_DIR "@CONF_INCLUDE_DIRS@")
# Cernlib defines
set(NANOCERNLIB_DEFINITIONS "@CONF_DEFINITIONS@;-DCERNLIB_TYPE")
# Our library dependencies (contains definitions for IMPORTED targets)
if (NOT TARGET nanocernlib_packlib AND
NOT TARGET nanocernlib_mathlib AND
NOT TARGET nanocernlib_geant321 AND
NOT nanocernlib_BINARY_DIR)
include("${NANOCERNLIB_CMAKE_DIR}/nanocernlib-targets.cmake")
endif()
# These are IMPORTED targets created by bosIO-targets.cmake
# all libraries are mentioned twice to satisfy gcc in the case of
# cross-dependencies
set(NANOCERNLIB_LIBRARIES
nanocernlib_packlib
nanocernlib_mathlib
nanocernlib_mclibs
nanocernlib_geant321)
set(NANOCERNLIB_LIBRARIES ${NANOCERNLIB_LIBRARIES} ${NANOCERNLIB_LIBRARIES})
## packlib
set(NANOCERNLIB_packlib_LIBRARY "@CONF_INCLUDE_DIRS@/nanocernlib_packlib")
set(NANOCERNLIB_packlib_INCLUDE_DIR "@CONF_INCLUDE_DIRS@/packlib")
set(NANOCERNLIB_cspack_INCLUDE_DIR "@CONF_INCLUDE_DIRS@/cspack")
set(NANOCERNLIB_epio_INCLUDE_DIR "@CONF_INCLUDE_DIRS@/epio")
set(NANOCERNLIB_ffread_INCLUDE_DIR "@CONF_INCLUDE_DIRS@/ffread")
set(NANOCERNLIB_hbook_INCLUDE_DIR "@CONF_INCLUDE_DIRS@/hbook")
set(NANOCERNLIB_zebra_INCLUDE_DIR "@CONF_INCLUDE_DIRS@/zebra")
set(NANOCERNLIB_kernlib_INCLUDE_DIR "@CONF_INCLUDE_DIRS@/kernlib")
set(NANOCERNLIB_kernbit_INCLUDE_DIR "@CONF_INCLUDE_DIRS@/kernbit")
set(NANOCERNLIB_kernnum_INCLUDE_DIR "@CONF_INCLUDE_DIRS@/kernnum")
set(NANOCERNLIB_kerngen_INCLUDE_DIR "@CONF_INCLUDE_DIRS@/kerngen")
## mathlib
set(NANOCERNLIB_mathlib_LIBRARY nanocernlib_mathlib)
set(NANOCERNLIB_gen_INCLUDE_DIR "@CONF_INCLUDE_DIRS@/gen")
## mclibs
set(NANOCERNLIB_mclibs_LIBRARY nanocernlib_mclibs)
set(NANOCERNLIB_pdf_INCLUDE_DIR "@CONF_INCLUDE_DIRS@/pdf")
## geant321
set(NANOCERNLIB_geant321_LIBRARY nanocernlib_geant321)
set(NANOCERNLIB_geant321_INCLUDE_DIR "@CONF_INCLUDE_DIRS@/geant321")
## cfortran
set(NANOCERNLIB_cfortran_INCLUDE_DIR "@CONF_INCLUDE_DIRS@/cfortran")
################################################################################
## CMAKE Settings
################################################################################
## make sure that the default is RELEASE
if (NOT CMAKE_BUILD_TYPE)
set (CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
"Choose the type of build, options are: None Debug Release RelWithDebInfo."
FORCE)
endif ()
## Offer the user the choice of overriding the installation directories
set(INSTALL_LIB_DIR lib CACHE PATH "Installation directory for libraries")
set(INSTALL_BIN_DIR bin CACHE PATH "Installation directory for executables")
set(INSTALL_INCLUDE_DIR include/${PROJECT_NAME} CACHE PATH
"Installation directory for header files")
if(WIN32 AND NOT CYGWIN)
set(DEF_INSTALL_CMAKE_DIR cmake)
else()
set(DEF_INSTALL_CMAKE_DIR lib/cmake/${PROJECT_NAME})
endif()
set(INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH
"Installation directory for CMake files")
## Make relative paths absolute (useful when auto-generating cmake configuration
## files)
foreach(p LIB BIN INCLUDE CMAKE)
set(var INSTALL_${p}_DIR)
if(NOT IS_ABSOLUTE "${${var}}")
set(${var} "${CMAKE_INSTALL_PREFIX}/${${var}}")
endif()
endforeach()
################################################################################
## CMAKE Settings
################################################################################
set (LIBRARY "nanocernlib_geant321")
set (TARGETS ${TARGETS} ${LIBRARY} PARENT_SCOPE)
################################################################################
## Sources and install headers
################################################################################
file (GLOB SOURCES "*/*.F")
################################################################################
## Include directories
################################################################################
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
################################################################################
## Compile and Link
################################################################################
add_library(${LIBRARY} STATIC ${SOURCES})
set_target_properties(${LIBRARY} PROPERTIES
VERSION ${NANOCERNLIB_VERSION}
SOVERSION ${NANOCERNLIB_SOVERSION})
################################################################################
## Export and Install
################################################################################
install(TARGETS ${LIBRARY}
EXPORT "${PROJECT_NAME}-targets"
RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
LIBRARY DESTINATION "${INSTALL_LIB_DIR}" COMPONENT lib
ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" COMPONENT lib)
## install the headers
install(DIRECTORY "geant321"
DESTINATION "${INSTALL_INCLUDE_DIR}" COMPONENT dev)
This diff is collapsed.
*
* $Id: gbhsta.F,v 1.1.1.1 1995/10/24 10:20:08 cernlib Exp $
*
* $Log: gbhsta.F,v $
* Revision 1.1.1.1 1995/10/24 10:20:08 cernlib
* Geant
*
*
#include "geant321/pilot.h"
*CMZ : 3.21/02 29/03/94 15.41.19 by S.Giani
*-- Author :
SUBROUTINE GBHSTA
C.
C. ******************************************************************
C. * *
C. * Books histograms statistics *
C. * *
C. * ==>Called by : <USER>, GUOUT *
C. * Author R.Brun ********* *
C. * *
C. ******************************************************************
C.
#include "geant321/gclist.inc"
C.
C. ------------------------------------------------------------------
C.
IF(NHSTA.GT.0)THEN
CALL GLOOK('TIME',LHSTA,NHSTA,ID)
IF(ID.NE.0) CALL HBOOK1(-ID,'Time per event$',100,0.,0.,0.)
*
CALL GLOOK('SIZE',LHSTA,NHSTA,ID)
IF(ID.NE.0) CALL HBOOK1(-ID,'Space used in IXDIV per event$',
+ 100,0.,0.,0.)
*
CALL GLOOK('MULT',LHSTA,NHSTA,ID)
IF(ID.NE.0) CALL HBOOK1(-ID,'Total number of tracks per event$'
+ ,100,0.,0.,0.)
*
CALL GLOOK('NTRA',LHSTA,NHSTA,ID)
IF(ID.NE.0) CALL HBOOK1(-ID,'Long life tracks per event$',100,
+ 0.,0.,0.)
*
CALL GLOOK('STAK',LHSTA,NHSTA,ID)
IF(ID.NE.0) CALL HBOOK1(-ID,'Maximum stack size per event$',
+ 100,0.,0.,0.)
*
ENDIF
END
*
* $Id: geamon.F,v 1.1.1.1 1995/10/24 10:20:08 cernlib Exp $
*
* $Log: geamon.F,v $
* Revision 1.1.1.1 1995/10/24 10:20:08 cernlib
* Geant
*
*
#include "geant321/pilot.h"
#if defined(CERNLIB_MONITOR)
*CMZ : 3.21/02 29/03/94 15.41.19 by S.Giani
*-- Author :
SUBROUTINE GEAMON(ICASE,CHINFO)
C.
C. ******************************************************************
C. * *
C. * Routine for GEANT monitoring *
C. * *
C. * ==>Called by : <USER>, GUOUT *
C. * Author R.Brun, F.Carminati ******** *
C. * *
C. ******************************************************************
C.
#include "geant321/gcunit.inc"
C.
C. ------------------------------------------------------------------
C.
COMMON/CWK/IWK
CHARACTER*5 ENTRY, EXIT, BATINT
LOGICAL FIRST, INTRAC
CHARACTER*(*) CHINFO
SAVE IWK1,IM1,TIM1,FIRST,ENTRY,EXIT,BATINT
DATA ENTRY /'GINIT'/
DATA EXIT /'GLAST'/
DATA BATINT /'BATCH'/
DATA FIRST /.TRUE./
*
*________________________________________________________
*
IF(ICASE.LE.1)THEN
IF(FIRST) THEN
CALL TIMEL(TIM1)
IWK1=IWK
CALL DATIME(IDAT1,ITIM1)
IH1=ITIM1/100
IM1=ITIM1-100*IH1+IH1*60
IF(INTRAC()) BATINT='INTER'
FIRST=.FALSE.
ENDIF
ENDIF
IF(ICASE.EQ.0) THEN
ENTRY='GXINT'
EXIT ='GXINT'
ELSE
IF(ICASE.EQ.1) THEN
WRITE(CHMAIL,10000)IWK1,CHINFO,ENTRY,BATINT
ELSEIF(ICASE.EQ.2) THEN
IF(ENTRY.EQ.'GXINT'.AND.CHINFO.EQ.'GLAST') THEN
EXIT='GLAST'
GOTO 999
ENDIF
CALL TIMEL(TIM2)
CPTIME=TIM1-TIM2
CALL DATIME(IDAT2,ITIM2)
IH2=ITIM2/100
IM2=ITIM2-100*IH2+IH2*60
IMD=IM2-IM1
IF(IMD.LT.0) IMD=IMD+24*60
IRTIME=MIN(9999,MAX(IMD,1))
CPTIME=MIN(99999.,CPTIME)
IF(IRTIME.GT.999)THEN
WRITE(CHMAIL,10101)IWK1,IRTIME,CPTIME,EXIT
ELSE
WRITE(CHMAIL,10100)IWK1,IRTIME,CPTIME,EXIT
ENDIF
ENDIF
*
CALL UMLOG('GEANTMON',CHMAIL(1:LNBLNK(CHMAIL)))
*
ENDIF
*
10000 FORMAT('LOG321 WTYP=',I6,1X,A,2(1X,A5))
10100 FORMAT('LOGOUT WTYP=',I6,' RT=',I3,' min CP=',F9.3,' sec ',A5)
10101 FORMAT('LOGOUT WTYP=',I6,' RT', I4,' min CP=',F9.3,' sec ',A5)
*
999 END
#endif
*
* $Id: getnum.F,v 1.1.1.1 1995/10/24 10:20:09 cernlib Exp $
*
* $Log: getnum.F,v $
* Revision 1.1.1.1 1995/10/24 10:20:09 cernlib
* Geant
*
*
#include "geant321/pilot.h"
*CMZ : 3.21/02 29/03/94 15.41.19 by S.Giani
*-- Author :
SUBROUTINE GETNUM(LIST,N)
C.
C. ******************************************************************
C. * *
C. * Routine to count the number of non blank elements *
C. * in the array LIST before the first blank one *
C. * *
C. * ==>Called by : GFFGO *
C. * ==>Author R.Brun ********* *
C. * *
C. ******************************************************************
C.
DIMENSION LIST(*)
SAVE IFIRST,IDFLT
DATA IFIRST/0/
C. ------------------------------------------------------------------
C.
IF(IFIRST.EQ.0)THEN
IFIRST=1
CALL UCTOH(' ',IDFLT,4,4)
ENDIF
C
N = 0
DO 10 I=1,20
IF(LIST(I).EQ.IDFLT) GO TO 99
N=N+1
10 CONTINUE
C
99 RETURN
END
*
* $Id: getver.F,v 1.15 2002/04/11 11:19:11 mclareni Exp $
*
* $Log: getver.F,v $
* Revision 1.15 2002/04/11 11:19:11 mclareni
* Updated version number to 3.21/14
*
* Revision 1.14 1999/11/15 15:30:33 mclareni
* Updated version number to 3.21/13
*
* Revision 1.13 1999/01/27 14:21:03 mclareni
* Updated version number to 3.21/12
*
* Revision 1.12 1998/02/10 18:13:44 japost
* Correct the version number HVERS returned (now 3.2111 not 3.2210 for 3.21/11)
*
* Revision 1.11 1997/11/13 16:06:04 mclareni
* Update the date also
*
* Revision 1.10 1997/11/13 13:04:29 mclareni
* Increase cradle no. to 0.10
*
* Revision 1.9 1997/10/17 10:26:20 mclareni
* Increase cradle no. to 0.09
*
* Revision 1.8 1997/06/20 18:40:43 japost
* Updating the version number after commiting several changes:
* to gthion, gflufin, ghetun
* Remaining problem: gdrawp, ghadr?
*
* Revision 1.7 1997/01/06 17:16:29 cernlib
* Remove ginit.F- and getver.F-
*
* Revision 1.6 1996/11/13 11:19:06 ravndal
* new cradle number /06
*
* Revision 1.5 1996/04/15 14:16:04 ravndal
* Slash instead of underscore
*
* Revision 1.4 1996/03/27 08:29:14 cernlib
* In line 40 the Hollerith had less than thespecified 40 characters.
*
* Time to get rid of these HOLLERITH
*
* Revision 1.3 1996/03/15 14:51:40 ravndal
* 96A version of GEANT
*
* Revision 1.2 1996/03/07 13:18:00 ravndal
* Preparing version number for 96A release
*
* Revision 1.1.1.1 1995/10/24 10:20:12 cernlib
* Geant
*
*
#include "geant321/pilot.h"
*CMZ : 3.21/04 06/12/94 15.11.22 by S.Ravndal
*-- Author :
SUBROUTINE GETVER(CHVER,CHDAT,HVERS)
C.
C. ******************************************************************
C. * *
C. * Routine to get the current version number from a pam *
C. * file. This routine is cracking the title given in *
C. * HOLLERITH format, because CMZ and old versions of PATCHY *
C. * do not support the character title sequence QFTITLCH *
C. * *
C. * ==>Called by : GINIT *
C. * Author F.Carminati ********* *
C. * *
C. ******************************************************************
C.
CHARACTER*60 CHTIT
CHARACTER*6 CHFOR
CHARACTER*8 CHVER,CHDAT
*
CHVER = ' '
HVERS = 0.
CHDAT = ' '
*
WRITE(CHTIT,'(
+ 40H GEANT 3.21/14 19032002
+)')
DO 10 JSLASH=1,60
IF(CHTIT(JSLASH:JSLASH).EQ.'/') THEN
JSL=JSLASH
GOTO 20
ENDIF
10 CONTINUE
GOTO 999
*
20 CONTINUE
DO 30 JBLA=JSL,1,-1
IF(CHTIT(JBLA-1:JBLA-1).EQ.' ') THEN
JBEG=JBLA
GOTO 40
ENDIF
30 CONTINUE
GOTO 999
*
40 CONTINUE
DO 50 JBLA=JSL,60
IF(CHTIT(JBLA+1:JBLA+1).EQ.' ') THEN
JEND=JBLA
GOTO 60
ENDIF
50 CONTINUE
GOTO 999
*
60 WRITE(CHFOR,'(''(F'',I1,''.2)'')') JSL-JBEG
READ(CHTIT(JBEG:JSL-1),CHFOR) HMAIN
READ(CHTIT(JSL+1:JEND),'(I2)') ISUBV
HVERS=HMAIN+ISUBV*.0001
NCHA=JEND-JBEG+1
CHVER=' '
IF(NCHA.EQ.8) THEN
CHVER=CHTIT(JBEG:JEND)
ELSE
CHVER=' '//CHTIT(JBEG:JEND)
ENDIF
*
CHDAT=CHTIT(JEND+3:JEND+11)
*
999 END
*
* $Id: gffgo.F,v 1.2 1996/09/30 13:40:37 ravndal Exp $
*
* $Log: gffgo.F,v $
* Revision 1.2 1996/09/30 13:40:37 ravndal
* IABAN initialization
*
* Revision 1.1.1.1 1995/10/24 10:20:09 cernlib
* Geant
*
*
#include "geant321/pilot.h"
*CMZ : 3.21/04 22/02/95 08.50.24 by S.Ravndal
*-- Author :
SUBROUTINE GFFGO
C.
C. ******************************************************************
C. * *
C. * Routine to define and read GEANT/FFREAD data cards *
C. * If user data cards have been defined via FFKEY *
C. * they will be read as well *
C. * *
C. * ==>Called by : <USER>, UGINIT *
C. * Author R.Brun ********* *
C. * *
C. ******************************************************************
C.
#include "geant321/gcphys.inc"
#include "geant321/gccuts.inc"
#include "geant321/gcflag.inc"
#include "geant321/gckine.inc"
#include "geant321/gclist.inc"
#include "geant321/gcparm.inc"
#include "geant321/gcstak.inc"
#include "geant321/gctime.inc"
#include "geant321/gctrak.inc"
#include "geant321/gcmulo.inc"
#include "geant321/gcscan.inc"
#include "geant321/gcunit.inc"
#include "geant321/gcopti.inc"
#include "geant321/gctmed.inc"
#include "geant321/gcrz.inc"
C.
C. ------------------------------------------------------------------
C.
IABAN = NINT(DPHYS1)
CALL FFKEY ('ANNI',IANNI , 1,'INTEGER')
CALL FFKEY ('BREM',IBREM , 1,'INTEGER')
CALL FFKEY ('COMP',ICOMP , 1,'INTEGER')
CALL FFKEY ('CUTS',CUTGAM,16,'REAL')
CALL FFKEY ('DEBU',IDEMIN, 3,'INTEGER')
CALL FFKEY ('DCAY',IDCAY , 1,'INTEGER')
CALL FFKEY ('DRAY',IDRAY , 1,'INTEGER')
CALL FFKEY ('LABS',ILABS , 1,'INTEGER')
CALL FFKEY ('GEOM',LGEOM ,20,'MIXED')
CALL FFKEY ('GET ',LGET ,20,'MIXED')
CALL FFKEY ('HADR',IHADR , 1,'INTEGER')
CALL FFKEY ('HSTA',LHSTA ,20,'MIXED')
CALL FFKEY ('KINE',IKINE ,11,'MIXED')
CALL FFKEY ('LOSS',ILOSS , 1,'INTEGER')
CALL FFKEY ('MULS',IMULS , 1,'INTEGER')
CALL FFKEY ('MUNU',IMUNU , 1,'INTEGER')
CALL FFKEY ('PAIR',IPAIR , 1,'INTEGER')
* CALL FFKEY ('PATR',NJTMAX, 4,'INTEGER')
CALL FFKEY ('SORD',ISTORD, 1,'INTEGER')
CALL FFKEY ('PFIS',IPFIS , 1,'INTEGER')
CALL FFKEY ('PHOT',IPHOT , 1,'INTEGER')
CALL FFKEY ('PLOT',LPLOT ,20,'MIXED')
CALL FFKEY ('PRIN',LPRIN ,20,'MIXED')
CALL FFKEY ('RAYL',IRAYL , 1,'INTEGER')
CALL FFKEY ('RGET',LRGET ,20,'MIXED')
CALL FFKEY ('RSAV',LRSAVE,20,'MIXED')
CALL FFKEY ('RNDM',NRNDM , 2,'INTEGER')
CALL FFKEY ('RUNG',IDRUN , 2,'INTEGER')
CALL FFKEY ('SAVE',LSAVE ,20,'MIXED')
CALL FFKEY ('SETS',LSETS ,20,'MIXED')
CALL FFKEY ('STAT',LSTAT ,20,'MIXED')
CALL FFKEY ('SWIT',ISWIT ,10,'INTEGER')
CALL FFKEY ('TIME',TIMINT, 3,'MIXED')
CALL FFKEY ('TRIG',NEVENT, 1,'INTEGER')
CALL FFKEY ('VIEW',LVIEW ,20,'MIXED')
CALL FFKEY ('ERAN',EKMIN , 3,'MIXED')
CALL FFKEY ('AUTO',IGAUTO, 1,'INTEGER')
CALL FFKEY ('OPTI',IOPTIM, 1,'INTEGER')
CALL FFKEY ('CKOV',ITCKOV, 1,'INTEGER')
CALL FFKEY ('SYNC',ISYNC, 1,'INTEGER')
CALL FFKEY ('STRA',ISTRA, 1,'INTEGER')
CALL FFKEY ('ABAN',IABAN, 1,'INTEGER')
*--------------- SCAN/Parametrize cards
CALL FFKEY ('SCAN',SCANFL, 8,'MIXED')
CALL FFKEY ('SCAL',ISLIST,MSLIST,'MIXED')
CALL FFKEY ('SCAP',VSCAN , 6,'REAL')
CALL FFKEY ('PCUT',IPARAM, 6,'MIXED')
CALL FFKEY ('PNUM',MPSTAK, 2,'MIXED')
C
C Now read data cards
C
CALL FFGO
C
C Get some parameters from the data cards
C
CALL GETNUM (LHSTA ,NHSTA)
CALL GETNUM (LGET ,NGET)
CALL GETNUM (LSAVE ,NSAVE)
CALL GETNUM (LRGET ,NRGET)
CALL GETNUM (LRSAVE,NRSAVE)
CALL GETNUM (LSETS ,NSETS)
CALL GETNUM (LPRIN ,NPRIN)
CALL GETNUM (LGEOM ,NGEOM)
CALL GETNUM (LVIEW ,NVIEW)
CALL GETNUM (LPLOT ,NPLOT)
CALL GETNUM (LSTAT ,NSTAT)
CALL GETNUM (ISLIST,NSLIST)
*
IF(ILABS.NE.0) THEN
IF(ITCKOV.NE.0) ILABS=1
ENDIF
*
IF (NINT(DPHYS1).NE.IABAN) THEN
DPHYS1 = IABAN
END IF
*
IF(MODTET.LT.1.OR.MODTET.GT.MAXMDT) THEN
WRITE(LOUT,10000) MODTET
10000 FORMAT(' MODTET = ',I2,' out of range - 1 assumed')
MODTET=1
ENDIF
TETMIN = TETMID(MODTET)
TETMAX = TETMAD(MODTET)
IF(IDEVT.GT.0)IDEVT=IDEVT-1
C
C Set IDEBUG flag for initialisation phase
C
IF(IDEMIN.LT.0.AND.IDEMAX.GE.0)THEN
IDEMIN=-IDEMIN
IDEBUG=1
ENDIF
C
C Initialise the random number generator
C
IF(NRNDM(2).NE.0)THEN
CALL GRNDMQ(NRNDM(1),NRNDM(2),1,'S')
ELSEIF(NRNDM(1).GT.0)THEN
ISEQ=NRNDM(1)
CALL GRNDMQ(NRNDM(1),NRNDM(2),ISEQ,'Q')
CALL GRNDMQ(NRNDM(1),NRNDM(2),ISEQ,'S')
ENDIF
C
999 END
*
* $Id: gfhead.F,v 1.1.1.1 1995/10/24 10:20:09 cernlib Exp $
*
* $Log: gfhead.F,v $
* Revision 1.1.1.1 1995/10/24 10:20:09 cernlib
* Geant
*
*
#include "geant321/pilot.h"
*CMZ : 3.21/02 29/03/94 15.41.19 by S.Giani
*-- Author :
SUBROUTINE GFHEAD (NWHEAD,IHEAD,NWBUF,UBUF)
C.
C. ******************************************************************
C. * *
C * Retrieves the parameter of the Header bank *
C. * *
C. * ==>Called by : <USER> *
C. * Author M.Maire *
C. * *
C. ******************************************************************
C.
#include "geant321/gcbank.inc"
#include "geant321/gcunit.inc"
#include "geant321/gcflag.inc"
*
DIMENSION IHEAD(1),UBUF(1)
*
IF (JHEAD.NE.0) THEN
NWHEAD = IQ(JHEAD-1)
DO 10 I=1,NWHEAD
IHEAD(I) = IQ(JHEAD+I)
10 CONTINUE
*
NWBUF = 0
IF (LQ(JHEAD-1).NE.0) THEN
JHU = LQ(JHEAD-1)
NWBUF = IQ(JHU-1)
DO 20 I=1,NWBUF
UBUF(I) = Q(JHU+I)
20 CONTINUE
ENDIF
*
ELSE
NWHEAD = 0
WRITE(CHMAIL,1000) IEVENT
CALL GMAIL(0,0)
ENDIF
*
1000 FORMAT(' **** GFHEAD: No Header bank in memory for ievent:',I7)
*
END
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment