Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision

Target

Select target project
  • jlab/hallc/simulation/simc-file-input
  • burcuduran/simc-file-input
2 results
Select Git revision
  • master
  • v0.1.0
  • v1.0.0
3 results
Show changes
Commits on Source (11)
...@@ -55,3 +55,5 @@ __pycache__/ ...@@ -55,3 +55,5 @@ __pycache__/
*.py[cod] *.py[cod]
*$py.class *$py.class
.ipynb_checkpoints .ipynb_checkpoints
.cache/*
image: eicweb.phy.anl.gov:4567/whit/image_recipes/root_base:latest image: eicweb.phy.anl.gov:4567/containers/image_recipes/ubuntu_dind:latest
#image: whit2333/root_base:latest
# #
simc_singularity: simc_singularity:
tags:
- singularity
script: script:
- cp containers/singularity/Singularity Singularity.simc - cp containers/singularity/Singularity Singularity.simc
- /bin/bash .gitlabci/setup.sh
- /bin/bash .gitlabci/build.sh Singularity.simc - /bin/bash .gitlabci/build.sh Singularity.simc
- mkdir -p build - mkdir -p build
- cp Singularity.simc.simg build/. - cp Singularity.simc.simg build/.
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
################################################################################ ################################################################################
cmake_minimum_required (VERSION 3.8) cmake_minimum_required (VERSION 3.8)
project (simc VERSION 1.0.0 LANGUAGES CXX ) project (simc VERSION 1.0.0 LANGUAGES C CXX Fortran)
################################################################################ ################################################################################
## CMAKE Settings ## CMAKE Settings
......
...@@ -9,7 +9,7 @@ set (PROGRAM "${PROJECT_NAME}_makereg") ...@@ -9,7 +9,7 @@ set (PROGRAM "${PROJECT_NAME}_makereg")
set (TARGETS ${TARGETS} ${LIBRARY} ${CLIENT_LIBRARY} ${PROGRAM} PARENT_SCOPE) set (TARGETS ${TARGETS} ${LIBRARY} ${CLIENT_LIBRARY} ${PROGRAM} PARENT_SCOPE)
## for RPC Command ${RPCCOM} ## for RPC Command ${RPCCOM} ${RPCGEN_FLAGS}
include (compiler.cmake) include (compiler.cmake)
################################################################################ ################################################################################
...@@ -42,23 +42,23 @@ ADD_CUSTOM_COMMAND( ...@@ -42,23 +42,23 @@ ADD_CUSTOM_COMMAND(
DEPENDS ${RPC_DEP_HEADER_SRC}) DEPENDS ${RPC_DEP_HEADER_SRC})
ADD_CUSTOM_COMMAND( ADD_CUSTOM_COMMAND(
OUTPUT ${RPC_XDR_SOURCE} OUTPUT ${RPC_XDR_SOURCE}
COMMAND ${RPCCOM} -o ${RPC_XDR_SOURCE} -c ${RPC_RAW} COMMAND ${RPCCOM} ${RPCGEN_FLAGS} -o ${RPC_XDR_SOURCE} -c ${RPC_RAW}
DEPENDS ${RPC_RAW}) DEPENDS ${RPC_RAW})
ADD_CUSTOM_COMMAND( ADD_CUSTOM_COMMAND(
OUTPUT ${RPC_SVC_SOURCE} OUTPUT ${RPC_SVC_SOURCE}
COMMAND ${RPCCOM} -o ${RPC_SVC_SOURCE} -m ${RPC_RAW} COMMAND ${RPCCOM} ${RPCGEN_FLAGS} -o ${RPC_SVC_SOURCE} -m ${RPC_RAW}
DEPENDS ${RPC_RAW}) DEPENDS ${RPC_RAW})
ADD_CUSTOM_COMMAND( ADD_CUSTOM_COMMAND(
OUTPUT ${RPC_SVC_PATCH_SOURCE} OUTPUT ${RPC_SVC_PATCH_SOURCE}
COMMAND sed -e 's/extern/static/g' ${RPC_SVC_SOURCE} > ${RPC_SVC_PATCH_SOURCE} COMMAND sed -e 's/extern/static/g' ${RPC_SVC_SOURCE} > ${RPC_SVC_PATCH_SOURCE}
DEPENDS ${RCP_SVC_SOURCE}) DEPENDS ${RPC_SVC_SOURCE})
ADD_CUSTOM_COMMAND( ADD_CUSTOM_COMMAND(
OUTPUT ${RPC_CLNT_SOURCE} OUTPUT ${RPC_CLNT_SOURCE}
COMMAND ${RPCCOM} -o ${RPC_CLNT_SOURCE} -l ${RPC_RAW} COMMAND ${RPCCOM} ${RPCGEN_FLAGS} -o ${RPC_CLNT_SOURCE} -l ${RPC_RAW}
DEPENDS ${RPC_RAW}) DEPENDS ${RPC_RAW})
ADD_CUSTOM_COMMAND( ADD_CUSTOM_COMMAND(
OUTPUT ${RPC_HEADER} OUTPUT ${RPC_HEADER}
COMMAND ${RPCCOM} -o ${RPC_HEADER} -h ${RPC_RAW} COMMAND ${RPCCOM} ${RPCGEN_FLAGS} -o ${RPC_HEADER} -h ${RPC_RAW}
DEPENDS ${RPC_RAW}) DEPENDS ${RPC_RAW})
################################################################################ ################################################################################
...@@ -66,6 +66,7 @@ ADD_CUSTOM_COMMAND( ...@@ -66,6 +66,7 @@ ADD_CUSTOM_COMMAND(
################################################################################ ################################################################################
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
include_directories(${CMAKE_CURRENT_BINARY_DIR}) include_directories(${CMAKE_CURRENT_BINARY_DIR})
include_directories(SYSTEM /usr/include/tirpc)
################################################################################ ################################################################################
## Compile and Link ## Compile and Link
...@@ -76,15 +77,18 @@ ${RPC_SVC_SOURCE} ${RPC_XDR_SOURCE} ${RPC_HEADER}) ...@@ -76,15 +77,18 @@ ${RPC_SVC_SOURCE} ${RPC_XDR_SOURCE} ${RPC_HEADER})
set_target_properties(${LIBRARY} PROPERTIES set_target_properties(${LIBRARY} PROPERTIES
VERSION ${PROJECT_VERSION} VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR}) SOVERSION ${PROJECT_VERSION_MAJOR})
set_property(TARGET ${LIBRARY} PROPERTY C_STANDARD 11)
add_library(${CLIENT_LIBRARY} STATIC add_library(${CLIENT_LIBRARY} STATIC
${CLIENT_SOURCES} ${CLIENT_SOURCES}
${RPC_CLNT_SOURCE} ${RPC_XDR_SOURCE} ${RPC_HEADER}) ${RPC_CLNT_SOURCE} ${RPC_XDR_SOURCE} ${RPC_HEADER})
set_target_properties(${LIBRARY} PROPERTIES set_target_properties(${CLIENT_LIBRARY} PROPERTIES
VERSION ${PROJECT_VERSION} VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR}) SOVERSION ${PROJECT_VERSION_MAJOR})
set_property(TARGET ${CLIENT_LIBRARY} PROPERTY C_STANDARD 11)
add_executable(${PROGRAM} ${MAKEREG_SOURCES}) add_executable(${PROGRAM} ${MAKEREG_SOURCES})
set_property(TARGET ${PROGRAM} PROPERTY C_STANDARD 11)
target_link_libraries(${PROGRAM} target_link_libraries(${PROGRAM}
${CLIENT_LIBRARY} ${LIBRARY} ${CLIENT_LIBRARY} ${LIBRARY}
${CLIENT_LIBRARY} ${LIBRARY} ${CLIENT_LIBRARY} ${LIBRARY}
......
...@@ -154,7 +154,7 @@ RVALLIST *davar_readmultiple_1(NAMELIST *argp, CLIENT *clnt) ...@@ -154,7 +154,7 @@ RVALLIST *davar_readmultiple_1(NAMELIST *argp, CLIENT *clnt)
} }
free(result.RVALLIST_val); free(result.RVALLIST_val);
#else #else
xdr_free(xdr_RVALLIST, (void *) &result); xdr_free((xdrproc_t)xdr_RVALLIST, (void *) &result);
#endif #endif
} else need_to_free = 1; } else need_to_free = 1;
/* minfo = mallinfo(); /* minfo = mallinfo();
...@@ -180,7 +180,7 @@ ERRLIST *davar_writemultiple_1(WVALLIST *argp, CLIENT *clnt) ...@@ -180,7 +180,7 @@ ERRLIST *davar_writemultiple_1(WVALLIST *argp, CLIENT *clnt)
static ERRLIST result; static ERRLIST result;
int i; int i;
xdr_free(xdr_ERRLIST, (void *) &result); xdr_free((xdrproc_t)xdr_ERRLIST, (void *) &result);
result.ERRLIST_len = argp->WVALLIST_len; result.ERRLIST_len = argp->WVALLIST_len;
result.ERRLIST_val = (int *) malloc(result.ERRLIST_len*sizeof(any)); result.ERRLIST_val = (int *) malloc(result.ERRLIST_len*sizeof(any));
...@@ -285,7 +285,7 @@ davar_readmultiple_test_cb_1(argp, clnt) ...@@ -285,7 +285,7 @@ davar_readmultiple_test_cb_1(argp, clnt)
#endif #endif
memset((char *)&clnt_res, 0, sizeof(clnt_res)); memset((char *)&clnt_res, 0, sizeof(clnt_res));
if ((clnt_stat = clnt_call(clnt, DAVAR_READMULTIPLE_TEST_CB, xdr_RVALLIST, argp, xdr_int, &clnt_res, TIMEOUT)) != RPC_SUCCESS) { if ((clnt_stat = clnt_call(clnt, DAVAR_READMULTIPLE_TEST_CB, (xdrproc_t)xdr_RVALLIST, argp, (xdrproc_t)xdr_int, &clnt_res, TIMEOUT)) != RPC_SUCCESS) {
printf("clnt call failed, clnt_stat = %d\n",clnt_stat); printf("clnt call failed, clnt_stat = %d\n",clnt_stat);
clnt_perrno(clnt_stat); clnt_perrno(clnt_stat);
return (NULL); return (NULL);
...@@ -319,7 +319,7 @@ WVALLIST *davar_readpatternmatch_1(char **argp, CLIENT *clnt) ...@@ -319,7 +319,7 @@ WVALLIST *davar_readpatternmatch_1(char **argp, CLIENT *clnt)
} }
free(result.WVALLIST_val); free(result.WVALLIST_val);
#else #else
xdr_free(xdr_WVALLIST, (void *) &result); xdr_free((xdrproc_t)xdr_WVALLIST, (void *) &result);
#endif #endif
} else need_to_free = 1; } else need_to_free = 1;
/* minfo = mallinfo(); /* minfo = mallinfo();
...@@ -439,9 +439,9 @@ int daVarCallBack() ...@@ -439,9 +439,9 @@ int daVarCallBack()
free(argp->test_condition); free(argp->test_condition);
#else #else
if(testresult) { if(testresult) {
xdr_free(xdr_RVALLIST, (void *) &rpc); xdr_free((xdrproc_t)xdr_RVALLIST, (void *) &rpc);
} }
xdr_free(xdr_TESTNAMELIST, (void *) argp); xdr_free((xdrproc_t)xdr_TESTNAMELIST, (void *) argp);
#endif #endif
free(argp); free(argp);
free(this->sock_in); free(this->sock_in);
......
...@@ -84,7 +84,7 @@ FCALLSCFUN1(INT,thPrintList,THPRTLIST,thprtlist,INT); ...@@ -84,7 +84,7 @@ FCALLSCFUN1(INT,thPrintList,THPRTLIST,thprtlist,INT);
/* Don't really understand the following. What about ultrix? /* Don't really understand the following. What about ultrix?
This is probably because of the _ in clnt_create */ This is probably because of the _ in clnt_create */
#ifndef __osf__ #ifndef __osf__
FCALLSCFUN4(INT,clnt_create,CLNT_CREATE,clnt_create,STRING,INT,INT,STRING); FCALLSCFUN4(INT,myClntCreate,CLNT_CREATE,clnt_create,STRING,INT,INT,STRING);
#else #else
#ifdef BIT64 #ifdef BIT64
FCALLSCFUN4(INT,myClntCreate,CLNT_CREATE,clnt_create,STRING,INT,INT,STRING); FCALLSCFUN4(INT,myClntCreate,CLNT_CREATE,clnt_create,STRING,INT,INT,STRING);
......
...@@ -5,6 +5,8 @@ set(RPCCOM rpcgen -b) ...@@ -5,6 +5,8 @@ set(RPCCOM rpcgen -b)
## C Compiler Settings ## C Compiler Settings
################################################################################ ################################################################################
enable_language (C) enable_language (C)
set(CMAKE_C_STANDARD 89)
set(CMAKE_C_STANDARD_REQUIRED yes)
## set special compiler flags ## set special compiler flags
get_filename_component(C_COMPILER_NAME ${CMAKE_C_COMPILER} NAME) get_filename_component(C_COMPILER_NAME ${CMAKE_C_COMPILER} NAME)
...@@ -12,7 +14,7 @@ get_filename_component(C_COMPILER_NAME ${CMAKE_C_COMPILER} NAME) ...@@ -12,7 +14,7 @@ get_filename_component(C_COMPILER_NAME ${CMAKE_C_COMPILER} NAME)
if (C_COMPILER_NAME MATCHES "cc.*" OR if (C_COMPILER_NAME MATCHES "cc.*" OR
C_COMPILER_NAME MATCHES "gcc.*" OR C_COMPILER_NAME MATCHES "gcc.*" OR
C_COMPILER_NAME MATCHES "clang.*") C_COMPILER_NAME MATCHES "clang.*")
set (CC_EXTRA_FLAGS "-Wall -W") set (CC_EXTRA_FLAGS "-Wall -W -fomit-frame-pointer -Wno-error=return-type -Wno-unused-but-set-variable -Wno-implicit-function-declaration -Wno-unused-parameter -Wno-unused-variable -Wno-sign-compare -Wno-parentheses")
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CC_EXTRA_FLAGS}") 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_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${CC_EXTRA_FLAGS}")
set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${CC_EXTRA_FLAGS}") set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${CC_EXTRA_FLAGS}")
...@@ -33,3 +35,27 @@ endif () ...@@ -33,3 +35,27 @@ endif ()
################################################################################ ################################################################################
## f2c settings ## f2c settings
add_definitions("-Df2cFortran") add_definitions("-Df2cFortran")
################################################################################
## RPCGEN Configuration (macOS Homebrew vs. default)
################################################################################
## On macOS, prefer Homebrew rpcsvc-proto rpcgen to avoid broken system rpcgen.
## On other Unix platforms, use the system-default rpcgen without changes.
set(RPCCOM "rpcgen") # default fallback
set(RPCGEN_FLAGS "")
if (APPLE)
find_program(HOMEBREW_RPCGEN NAMES rpcgen PATHS /opt/homebrew/opt/rpcsvc-proto/bin NO_DEFAULT_PATH)
if (HOMEBREW_RPCGEN)
message(STATUS "Using Homebrew rpcgen: ${HOMEBREW_RPCGEN}")
set(RPCCOM ${HOMEBREW_RPCGEN})
set(RPCGEN_FLAGS -b)
else ()
message(WARNING "Homebrew rpcgen not found. Using system default.")
set(RPCCOM rpcgen)
set(RPCGEN_FLAGS -b)
endif ()
else ()
set(RPCCOM rpcgen)
set(RPCGEN_FLAGS -b)
endif ()
...@@ -17,7 +17,7 @@ get_filename_component(C_COMPILER_NAME ${CMAKE_C_COMPILER} NAME) ...@@ -17,7 +17,7 @@ get_filename_component(C_COMPILER_NAME ${CMAKE_C_COMPILER} NAME)
if (C_COMPILER_NAME MATCHES "cc.*" OR if (C_COMPILER_NAME MATCHES "cc.*" OR
C_COMPILER_NAME MATCHES "gcc.*" OR C_COMPILER_NAME MATCHES "gcc.*" OR
C_COMPILER_NAME MATCHES "clang.*") C_COMPILER_NAME MATCHES "clang.*")
set (CC_EXTRA_FLAGS "-fomit-frame-pointer -Wno-error=return-type") set (CC_EXTRA_FLAGS "-fomit-frame-pointer -Wno-error=return-type -std=gnu89 -Wno-unused-but-set-variable -Wno-implicit-function-declaration -Wno-unused-parameter -Wno-unused-variable -Wno-sign-compare -Wno-parentheses")
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CC_EXTRA_FLAGS}") 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_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${CC_EXTRA_FLAGS}")
set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${CC_EXTRA_FLAGS}") set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${CC_EXTRA_FLAGS}")
...@@ -73,6 +73,9 @@ get_filename_component (Fortran_COMPILER_NAME ${CMAKE_Fortran_COMPILER} NAME) ...@@ -73,6 +73,9 @@ get_filename_component (Fortran_COMPILER_NAME ${CMAKE_Fortran_COMPILER} NAME)
if (Fortran_COMPILER_NAME MATCHES "gfortran.*") if (Fortran_COMPILER_NAME MATCHES "gfortran.*")
set (gfortran_EXTRA_FLAGS "-fomit-frame-pointer -fno-automatic -fno-second-underscore -ffixed-line-length-none -fno-range-check") set (gfortran_EXTRA_FLAGS "-fomit-frame-pointer -fno-automatic -fno-second-underscore -ffixed-line-length-none -fno-range-check")
if (${CMAKE_Fortran_COMPILER_VERSION} VERSION_GREATER 10.0.0)
set (gfortran_EXTRA_FLAGS "${gfortran_EXTRA_FLAGS} -fallow-argument-mismatch -fallow-invalid-boz")
endif()
set (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${gfortran_EXTRA_FLAGS}") 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_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} ${gfortran_EXTRA_FLAGS}")
set (CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG} ${gfortran_EXTRA_FLAGS}") set (CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG} ${gfortran_EXTRA_FLAGS}")
......
Bootstrap: docker Bootstrap: docker
From: eicweb.phy.anl.gov:4567/whit/image_recipes/root_base:latest From: eicweb.phy.anl.gov:4567/containers/image_recipes/root_base:latest
%help %help
Container for file-input simc Container for file-input simc
......
...@@ -51,7 +51,7 @@ tmp_data_path = os.path.basename(data_path) ...@@ -51,7 +51,7 @@ tmp_data_path = os.path.basename(data_path)
tmp_conf_path = os.path.basename(conf_path) tmp_conf_path = os.path.basename(conf_path)
tmp_conf_name, tmp_conf_ext = os.path.splitext(tmp_conf_path) tmp_conf_name, tmp_conf_ext = os.path.splitext(tmp_conf_path)
## make sure our tmp_conf_path ends on '.inp' ## make sure our tmp_conf_path ends on '.inp'
if tmp_conf_ext is '.inp': if tmp_conf_ext == '.inp':
pass pass
else: else:
tmp_conf_path = '{}.inp'.format(tmp_conf_name) tmp_conf_path = '{}.inp'.format(tmp_conf_name)
......
...@@ -49,7 +49,7 @@ tmp_data_path = os.path.basename(data_path) ...@@ -49,7 +49,7 @@ tmp_data_path = os.path.basename(data_path)
tmp_conf_path = os.path.basename(conf_path) tmp_conf_path = os.path.basename(conf_path)
tmp_conf_name, tmp_conf_ext = os.path.splitext(tmp_conf_path) tmp_conf_name, tmp_conf_ext = os.path.splitext(tmp_conf_path)
## make sure our tmp_conf_path ends on '.inp' ## make sure our tmp_conf_path ends on '.inp'
if tmp_conf_ext is '.inp': if tmp_conf_ext == '.inp':
pass pass
else: else:
tmp_conf_path = '{}.inp'.format(tmp_conf_name) tmp_conf_path = '{}.inp'.format(tmp_conf_name)
......
Subproject commit 13987d3179c837fd1e8a1c3e40848b8b31085fe5 Subproject commit 55a2f9a4ebea3d2339f54082c20a50d5c9aa842d
...@@ -11,7 +11,8 @@ if (Fortran_COMPILER_NAME MATCHES "gfortran.*") ...@@ -11,7 +11,8 @@ if (Fortran_COMPILER_NAME MATCHES "gfortran.*")
set (CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} ${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_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG} ${gfortran_EXTRA_FLAGS}")
set (CMAKE_Fortran_FLAGS_RELWITHDEBINFO "${CMAKE_Fortran_FLAGS_RELWITHDEBINFO} ${gfortran_EXTRA_FLAGS}") set (CMAKE_Fortran_FLAGS_RELWITHDEBINFO "${CMAKE_Fortran_FLAGS_RELWITHDEBINFO} ${gfortran_EXTRA_FLAGS}")
## gcc10 optimization
set (gfortran_EXTRA_FLAGS "${gfortran_EXTRA_FLAGS} -fallow-argument-mismatch -fallow-invalid-boz")
## g77 ## g77
elseif (Fortran_COMPILER_NAME MATCHES "g77.*") elseif (Fortran_COMPILER_NAME MATCHES "g77.*")
......
...@@ -9,12 +9,14 @@ ...@@ -9,12 +9,14 @@
! All roads lead to infinity ! All roads lead to infinity
! ... some physical constants ! ... some physical constants
real*8 Me, Me2, Mp, Mp2, Mn, Mn2, Mpi, Mpi2, Mpi0, Mpi02 real*8 Me, Me2, Mmu, Mmu2, Mp, Mp2, Mn, Mn2, Mpi, Mpi2, Mpi0, Mpi02
real*8 Mk, Mk2, Mrho, Mrho2,Md, Md2 real*8 Mk, Mk2, Mrho, Mrho2,Md, Md2
real*8 Mlambda, Msigma0, Msigma_minus real*8 Mlambda, Msigma0, Msigma_minus
real*8 amu, hbarc, pi, twopi, alpha, alpi, degrad, euler real*8 amu, hbarc, pi, twopi, alpha, alpi, degrad, euler
parameter (Me=0.51099906) parameter (Me=0.51099906)
parameter (Me2=Me**2) parameter (Me2=Me**2)
parameter (Mmu=113.4289257)
parameter (Mmu2=Mmu**2)
parameter (Mp=938.27231) parameter (Mp=938.27231)
parameter (Mp2=Mp**2) parameter (Mp2=Mp**2)
parameter (Mn=939.56563) parameter (Mn=939.56563)
......
...@@ -193,6 +193,9 @@ C DJG: ...@@ -193,6 +193,9 @@ C DJG:
else if (doing_positron) then else if (doing_positron) then
Mh = Me Mh = Me
doing_eep=.false. doing_eep=.false.
else if (doing_muons) then
Mh = Mmu
doing_eep=.false.
else !doing_eep if nothing else set. else !doing_eep if nothing else set.
Mh=Mp Mh=Mp
doing_eep = .true. doing_eep = .true.
...@@ -304,7 +307,7 @@ C DJG: ...@@ -304,7 +307,7 @@ C DJG:
sign_hadron=-1.0 sign_hadron=-1.0
endif endif
else if(doing_positron) then else if(doing_positron.or.doing_muons) then
targ%Mtar_struck = Mp targ%Mtar_struck = Mp
targ%Mrec_struck = Mp targ%Mrec_struck = Mp
...@@ -776,6 +779,8 @@ C DJG: ...@@ -776,6 +779,8 @@ C DJG:
endif endif
else if (doing_positron) then else if (doing_positron) then
write(6,*) ' ****-------- Doing positron --------****' write(6,*) ' ****-------- Doing positron --------****'
else if (doing_muons) then
write(6,*) ' ****-------- Doing muon --------****'
else if (doing_phsp) then else if (doing_phsp) then
write(6,*) ' ****-------- PHASE SPACE - NO physics, NO radiation --------****' write(6,*) ' ****-------- PHASE SPACE - NO physics, NO radiation --------****'
else else
...@@ -894,6 +899,7 @@ C DJG: ...@@ -894,6 +899,7 @@ C DJG:
ierr = regparmint('doing_2pi',doing_2pi,0) ierr = regparmint('doing_2pi',doing_2pi,0)
ierr = regparmint('doing_rho',doing_rho,0) ierr = regparmint('doing_rho',doing_rho,0)
ierr = regparmint('doing_positron',doing_positron,0) ierr = regparmint('doing_positron',doing_positron,0)
ierr = regparmint('doing_muons',doing_muons,0)
ierr = regparmint('doing_decay',doing_decay,0) ierr = regparmint('doing_decay',doing_decay,0)
ierr = regparmdouble('ctau',ctau,0) ierr = regparmdouble('ctau',ctau,0)
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
C+_____________________________________________________________________ C+_____________________________________________________________________
! !
! MUSC - Simulate multiple scattering of any particle. ! MUSC - Simulate multiple scattering of any particle.
! !
! ASSUMPTIONS: DTH and DPH given in milli-radians, RAD_LEN in radiation ! ASSUMPTIONS: DTH and DPH given in milli-radians, RAD_LEN in radiation
! lengths. The formula used is due to Rossi and Greisen (See the book ! lengths. The formula used is due to Rossi and Greisen (See the book
! by Segre, NUCLEI AND PARTICLES, 1982, p. 48.) The formula assumes a ! by Segre, NUCLEI AND PARTICLES, 1982, p. 48.) The formula assumes a
...@@ -24,11 +24,13 @@ C+_____________________________________________________________________ ...@@ -24,11 +24,13 @@ C+_____________________________________________________________________
C-_____________________________________________________________________ C-_____________________________________________________________________
implicit none implicit none
include '../simulate.inc'
real*8 musc_pdg, musc_with_tail real*8 musc_pdg, musc_with_tail
real*8 rad_len, dth, dph real*8 rad_len, dth, dph
real*8 beta, m2, p real*8 beta, m2, p
logical heavy_tail
if (rad_len.eq.0) return if (rad_len.eq.0) return
if (p.lt.25.) write(6,*) if (p.lt.25.) write(6,*)
...@@ -38,8 +40,13 @@ C-_____________________________________________________________________ ...@@ -38,8 +40,13 @@ C-_____________________________________________________________________
beta = p / sqrt(m2+p*p) beta = p / sqrt(m2+p*p)
dth = dth + musc_with_tail(beta, p, rad_len) if (doing_positron) then
dph = dph + musc_with_tail(beta, p, rad_len) dth = dth + musc_with_tail(beta, p, rad_len)
dph = dph + musc_with_tail(beta, p, rad_len)
else
dth = dth + musc_pdg(beta, p, rad_len)
dph = dph + musc_pdg(beta, p, rad_len)
endif
return return
end end
...@@ -795,6 +795,8 @@ c write(7,*) 'BP thingie in/out ',shmsSTOP_BP_in,shmsSTOP_BP_out ...@@ -795,6 +795,8 @@ c write(7,*) 'BP thingie in/out ',shmsSTOP_BP_in,shmsSTOP_BP_out
write(iun,*) ' ****--- PHASE SPACE - NO physics, NO radiation (may not work)---****' write(iun,*) ' ****--- PHASE SPACE - NO physics, NO radiation (may not work)---****'
else if (doing_positron) then else if (doing_positron) then
write(iun,*) ' ****--- doing positron****' write(iun,*) ' ****--- doing positron****'
else if (doing_muons) then
write(iun,*) ' ****--- doing muons****'
else else
stop 'I don''t have ANY idea what we''re doing!!!' stop 'I don''t have ANY idea what we''re doing!!!'
endif endif
...@@ -1319,6 +1321,7 @@ c enddo ...@@ -1319,6 +1321,7 @@ c enddo
real*8 eloss_E_arm, eloss_P_arm, r, beta, dangles(2), dang_in(2) real*8 eloss_E_arm, eloss_P_arm, r, beta, dangles(2), dang_in(2)
logical success logical success
logical ok_E_arm, ok_P_arm logical ok_E_arm, ok_P_arm
logical ms_flag, wcs_flag !Mult. scat. and wire chamber smearing
type(event):: orig, recon type(event):: orig, recon
type (event_main):: main type (event_main):: main
...@@ -1350,6 +1353,11 @@ c enddo ...@@ -1350,6 +1353,11 @@ c enddo
frx = 0.0 frx = 0.0
endif endif
! Disable multiple scattering for muons, but not the wire chamber
! smearing
ms_flag = mc_smear .and. (.not. doing_muons)
wcs_flag = mc_smear
!BEAM MULTIPLE SCATTERING: NOT YET IMPLEMENTED, JUST GETTING IT READY! !BEAM MULTIPLE SCATTERING: NOT YET IMPLEMENTED, JUST GETTING IT READY!
! ... multiple scattering of the beam. Generate angles for beam deflection, ! ... multiple scattering of the beam. Generate angles for beam deflection,
...@@ -1357,7 +1365,7 @@ c enddo ...@@ -1357,7 +1365,7 @@ c enddo
! ... The yptar offset goes directly to yptar of both arms (small angle approx). ! ... The yptar offset goes directly to yptar of both arms (small angle approx).
! ... xptar is multiplied by cos(theta) to get the xptar offsets. ! ... xptar is multiplied by cos(theta) to get the xptar offsets.
if (mc_smear) then if (ms_flag) then
call target_musc(orig%Ein,beta_electron,main%target%teff(1),dang_in) call target_musc(orig%Ein,beta_electron,main%target%teff(1),dang_in)
else else
dang_in(1)=0.0 !yp offset, goes directly to yp of both arms dang_in(1)=0.0 !yp offset, goes directly to yp of both arms
...@@ -1384,7 +1392,7 @@ c enddo ...@@ -1384,7 +1392,7 @@ c enddo
! ... multiple scattering ! ... multiple scattering
if (mc_smear) then if (ms_flag) then
beta = orig%p%p/orig%p%E beta = orig%p%p/orig%p%E
call target_musc(orig%p%p, beta, main%target%teff(3), dangles) call target_musc(orig%p%p, beta, main%target%teff(3), dangles)
else else
...@@ -1401,7 +1409,7 @@ c enddo ...@@ -1401,7 +1409,7 @@ c enddo
! ... change to P arm spectrometer coordinates (TRANSPORT system), ! ... change to P arm spectrometer coordinates (TRANSPORT system),
if (abs(cos(spec%p%phi)).gt.0.0001) then !phi not at +/- pi/2 if (abs(cos(spec%p%phi)).gt.0.0001) then !phi not at +/- pi/2
write(6,*) 'y_P_arm, z_P_arm will be incorrect if spec.p.phi <> pi/2 or 3*pi/2' write(6,*) 'y_P_arm, z_P_arm is incorrect if spec.p.phi <> pi/2 or 3pi/2'
write(6,*) 'spec%p%phi=',spec%p%phi,'=',spec%p%phi*180/pi,'degrees' write(6,*) 'spec%p%phi=',spec%p%phi,'=',spec%p%phi*180/pi,'degrees'
endif endif
delta_P_arm = main%SP%p%delta delta_P_arm = main%SP%p%delta
...@@ -1466,27 +1474,27 @@ C DJG moved this to the last part of generate!!! ...@@ -1466,27 +1474,27 @@ C DJG moved this to the last part of generate!!!
if (hadron_arm.eq.1) then if (hadron_arm.eq.1) then
call mc_hms(spec%p%P, spec%p%theta, delta_P_arm, x_P_arm, call mc_hms(spec%p%P, spec%p%theta, delta_P_arm, x_P_arm,
> y_P_arm, z_P_arm, dx_P_arm, dy_P_arm, xfp, dxfp, yfp, dyfp, > y_P_arm, z_P_arm, dx_P_arm, dy_P_arm, xfp, dxfp, yfp, dyfp,
> m2, mc_smear, mc_smear, doing_decay, > m2, ms_flag, wcs_flag, doing_decay,
> ntup%resfac, fry, ok_P_arm, pathlen) > ntup%resfac, fry, ok_P_arm, pathlen)
else if (hadron_arm.eq.2) then else if (hadron_arm.eq.2) then
call mc_sos(spec%p%P, spec%p%theta, delta_P_arm, x_P_arm, call mc_sos(spec%p%P, spec%p%theta, delta_P_arm, x_P_arm,
> y_P_arm, z_P_arm, dx_P_arm, dy_P_arm, xfp, dxfp, yfp, dyfp, > y_P_arm, z_P_arm, dx_P_arm, dy_P_arm, xfp, dxfp, yfp, dyfp,
> m2, mc_smear, mc_smear, doing_decay, > m2, ms_flag, wcs_flag, doing_decay,
> ntup%resfac, fry, ok_P_arm, pathlen) > ntup%resfac, fry, ok_P_arm, pathlen)
else if (hadron_arm.eq.3) then else if (hadron_arm.eq.3) then
call mc_hrsr(spec%p%P, spec%p%theta, delta_P_arm, x_P_arm, call mc_hrsr(spec%p%P, spec%p%theta, delta_P_arm, x_P_arm,
> y_P_arm, z_P_arm, dx_P_arm, dy_P_arm, xfp, dxfp, yfp, dyfp, > y_P_arm, z_P_arm, dx_P_arm, dy_P_arm, xfp, dxfp, yfp, dyfp,
> m2, mc_smear, mc_smear, doing_decay, > m2, ms_flag, wcs_flag, doing_decay,
> ntup%resfac, fry, ok_P_arm, pathlen) > ntup%resfac, fry, ok_P_arm, pathlen)
else if (hadron_arm.eq.4) then else if (hadron_arm.eq.4) then
call mc_hrsl(spec%p%P, spec%p%theta, delta_P_arm, x_P_arm, call mc_hrsl(spec%p%P, spec%p%theta, delta_P_arm, x_P_arm,
> y_P_arm, z_P_arm, dx_P_arm, dy_P_arm, xfp, dxfp, yfp, dyfp, > y_P_arm, z_P_arm, dx_P_arm, dy_P_arm, xfp, dxfp, yfp, dyfp,
> m2, mc_smear, mc_smear, doing_decay, > m2, ms_flag, wcs_flag, doing_decay,
> ntup%resfac, fry, ok_P_arm, pathlen) > ntup%resfac, fry, ok_P_arm, pathlen)
else if (hadron_arm.eq.5 .or. hadron_arm.eq.6) then else if (hadron_arm.eq.5 .or. hadron_arm.eq.6) then
call mc_shms(spec%p%P, spec%p%theta, delta_P_arm, x_P_arm, call mc_shms(spec%p%P, spec%p%theta, delta_P_arm, x_P_arm,
> y_P_arm, z_P_arm, dx_P_arm, dy_P_arm, xfp, dxfp, yfp, dyfp, > y_P_arm, z_P_arm, dx_P_arm, dy_P_arm, xfp, dxfp, yfp, dyfp,
> m2, mc_smear, mc_smear, doing_decay, > m2, ms_flag, wcs_flag, doing_decay,
> ntup%resfac, fry, ok_P_arm, pathlen, hadron_arm, use_first_cer) > ntup%resfac, fry, ok_P_arm, pathlen, hadron_arm, use_first_cer)
endif endif
...@@ -1578,12 +1586,7 @@ C recon%p%delta = (recon%p%P-spec%p%P)/spec%p%P*100. ...@@ -1578,12 +1586,7 @@ C recon%p%delta = (recon%p%P-spec%p%P)/spec%p%P*100.
! ... multiple scattering ! ... multiple scattering
if (mc_smear) then call target_musc(orig%e%p, beta_electron, main%target%teff(2), dangles)
call target_musc(orig%e%p, beta_electron, main%target%teff(2), dangles)
else
dangles(1)=0.0
dangles(2)=0.0
endif
main%SP%e%yptar = orig%e%yptar + dangles(1) + dang_in(1) main%SP%e%yptar = orig%e%yptar + dangles(1) + dang_in(1)
main%SP%e%xptar = orig%e%xptar + dangles(2) + dang_in(2)*spec%e%cos_th main%SP%e%xptar = orig%e%xptar + dangles(2) + dang_in(2)*spec%e%cos_th
...@@ -1595,7 +1598,7 @@ C recon%p%delta = (recon%p%P-spec%p%P)/spec%p%P*100. ...@@ -1595,7 +1598,7 @@ C recon%p%delta = (recon%p%P-spec%p%P)/spec%p%P*100.
! ... change to E arm spectrometer coordinates (TRANSPORT system), ! ... change to E arm spectrometer coordinates (TRANSPORT system),
if (abs(cos(spec%e%phi)).gt.0.0001) then !phi not at +/- pi/2 if (abs(cos(spec%e%phi)).gt.0.0001) then !phi not at +/- pi/2
write(6,*) 'y_E_arm, z_E_arm will be incorrect if spec.e.phi <> pi/2 or 3*pi/2' write(6,*) 'y_E_arm, z_E_arm is incorrect if spec.e.phi <> pi/2 or 3*pi/2'
write(6,*) 'spec.e.phi=',spec%e%phi,'=',spec%e%phi*180/pi,'degrees' write(6,*) 'spec.e.phi=',spec%e%phi,'=',spec%e%phi*180/pi,'degrees'
endif endif
delta_E_arm = main%SP%e%delta delta_E_arm = main%SP%e%delta
...@@ -1645,31 +1648,34 @@ C recon%p%delta = (recon%p%P-spec%p%P)/spec%p%P*100. ...@@ -1645,31 +1648,34 @@ C recon%p%delta = (recon%p%P-spec%p%P)/spec%p%P*100.
! ok flag ! ok flag
m2 = me2 m2 = me2
if (doing_muons) then
m2 = Mmu2
endif
pathlen = 0.0 pathlen = 0.0
if (electron_arm.eq.1) then if (electron_arm.eq.1) then
call mc_hms(spec%e%P, spec%e%theta, delta_E_arm, x_E_arm, call mc_hms(spec%e%P, spec%e%theta, delta_E_arm, x_E_arm,
> y_E_arm, z_E_arm, dx_E_arm, dy_E_arm, xfp, dxfp, yfp, dyfp, > y_E_arm, z_E_arm, dx_E_arm, dy_E_arm, xfp, dxfp, yfp, dyfp,
> me2, mc_smear, mc_smear, .false., > m2, ms_flag, wcs_flag, .false.,
> tmpfact, fry, ok_E_arm, pathlen) > tmpfact, fry, ok_E_arm, pathlen)
else if (electron_arm.eq.2) then else if (electron_arm.eq.2) then
call mc_sos(spec%e%P, spec%e%theta, delta_E_arm, x_E_arm, call mc_sos(spec%e%P, spec%e%theta, delta_E_arm, x_E_arm,
> y_E_arm, z_E_arm, dx_E_arm, dy_E_arm, xfp, dxfp, yfp, dyfp, > y_E_arm, z_E_arm, dx_E_arm, dy_E_arm, xfp, dxfp, yfp, dyfp,
> me2, mc_smear, mc_smear, .false., > m2, ms_flag, wcs_flag, .false.,
> tmpfact, fry, ok_E_arm, pathlen) > tmpfact, fry, ok_E_arm, pathlen)
else if (electron_arm.eq.3) then else if (electron_arm.eq.3) then
call mc_hrsr(spec%e%P, spec%e%theta, delta_E_arm, x_E_arm, call mc_hrsr(spec%e%P, spec%e%theta, delta_E_arm, x_E_arm,
> y_E_arm, z_E_arm, dx_E_arm, dy_E_arm, xfp, dxfp, yfp, dyfp, > y_E_arm, z_E_arm, dx_E_arm, dy_E_arm, xfp, dxfp, yfp, dyfp,
> me2, mc_smear, mc_smear, .false., > m2, ms_flag, wcs_flag, .false.,
> tmpfact, fry, ok_E_arm, pathlen) > tmpfact, fry, ok_E_arm, pathlen)
else if (electron_arm.eq.4) then else if (electron_arm.eq.4) then
call mc_hrsl(spec%e%P, spec%e%theta, delta_E_arm, x_E_arm, call mc_hrsl(spec%e%P, spec%e%theta, delta_E_arm, x_E_arm,
> y_E_arm, z_E_arm, dx_E_arm, dy_E_arm, xfp, dxfp, yfp, dyfp, > y_E_arm, z_E_arm, dx_E_arm, dy_E_arm, xfp, dxfp, yfp, dyfp,
> me2, mc_smear, mc_smear, .false., > m2, ms_flag, wcs_flag, .false.,
> tmpfact, fry, ok_E_arm, pathlen) > tmpfact, fry, ok_E_arm, pathlen)
else if (electron_arm.eq.5 .or. electron_arm.eq.6) then else if (electron_arm.eq.5 .or. electron_arm.eq.6) then
call mc_shms(spec%e%P, spec%e%theta, delta_E_arm, x_E_arm, call mc_shms(spec%e%P, spec%e%theta, delta_E_arm, x_E_arm,
> y_E_arm, z_E_arm, dx_E_arm, dy_E_arm, xfp, dxfp, yfp, dyfp, > y_E_arm, z_E_arm, dx_E_arm, dy_E_arm, xfp, dxfp, yfp, dyfp,
> me2, mc_smear, mc_smear, .false., > m2, ms_flag, wcs_flag, .false.,
> tmpfact, fry, ok_E_arm, pathlen, electron_arm, use_first_cer) > tmpfact, fry, ok_E_arm, pathlen, electron_arm, use_first_cer)
else if (electron_arm.eq.7 .or. electron_arm .eq. 8) then else if (electron_arm.eq.7 .or. electron_arm .eq. 8) then
if (abs(spec%p%phi-pi/2) .eq. 10.) then if (abs(spec%p%phi-pi/2) .eq. 10.) then
...@@ -1679,7 +1685,7 @@ C recon%p%delta = (recon%p%P-spec%p%P)/spec%p%P*100. ...@@ -1679,7 +1685,7 @@ C recon%p%delta = (recon%p%P-spec%p%P)/spec%p%P*100.
endif endif
call mc_calo(spec%e%p, spec%e%theta, delta_e_arm, x_e_arm, call mc_calo(spec%e%p, spec%e%theta, delta_e_arm, x_e_arm,
> y_e_arm, z_e_arm, dx_e_arm, dy_e_arm, xfp, dxfp, yfp, dyfp, > y_e_arm, z_e_arm, dx_e_arm, dy_e_arm, xfp, dxfp, yfp, dyfp,
> m2, mc_smear, mc_smear, doing_decay, > m2, ms_flag, wcs_flag, doing_decay,
> ntup%resfac, frx, fry, ok_e_arm, pathlen, using_tgt_field, > ntup%resfac, frx, fry, ok_e_arm, pathlen, using_tgt_field,
> zhadron,electron_arm,drift_to_cal) > zhadron,electron_arm,drift_to_cal)
endif endif
......
...@@ -68,8 +68,8 @@ ...@@ -68,8 +68,8 @@
logical doing_hyd_elast, doing_deuterium, doing_heavy logical doing_hyd_elast, doing_deuterium, doing_heavy
logical doing_eep, doing_pion, doing_delta, doing_2pi, doing_kaon, doing_rho logical doing_eep, doing_pion, doing_delta, doing_2pi, doing_kaon, doing_rho
logical doing_semi, doing_semipi, doing_semika, doing_hplus logical doing_semi, doing_semipi, doing_semika, doing_hplus
logical doing_positron logical doing_positron, doing_muons
integer*4 which_kaon, which_pion integer*4 padding, which_kaon, which_pion
logical using_cit_generation, using_Coulomb, using_Eloss logical using_cit_generation, using_Coulomb, using_Eloss
logical correct_Eloss, correct_raster,do_fermi logical correct_Eloss, correct_raster,do_fermi
logical using_tgt_field logical using_tgt_field
...@@ -92,10 +92,11 @@ ...@@ -92,10 +92,11 @@
> extra_dbase_file,tgt_field_file,using_E_arm_montecarlo,using_P_arm_montecarlo, > extra_dbase_file,tgt_field_file,using_E_arm_montecarlo,using_P_arm_montecarlo,
> doing_phsp, using_rad, hard_cuts, doing_hyd_elast, doing_deuterium, doing_heavy, > doing_phsp, using_rad, hard_cuts, doing_hyd_elast, doing_deuterium, doing_heavy,
> doing_eep, doing_pion, doing_delta, doing_2pi, doing_kaon, doing_rho, doing_semi,doing_positron, > doing_eep, doing_pion, doing_delta, doing_2pi, doing_kaon, doing_rho, doing_semi,doing_positron,
> doing_muons,
> doing_semipi, doing_semika, doing_hplus, which_kaon, > doing_semipi, doing_semika, doing_hplus, which_kaon,
> which_pion, using_cit_generation, using_Coulomb, using_Eloss, > which_pion, using_cit_generation, using_Coulomb, using_Eloss,
> correct_Eloss, correct_raster, do_fermi,using_tgt_field, > correct_Eloss, correct_raster, do_fermi,using_tgt_field,
> electron_arm, hadron_arm, use_first_cer, > electron_arm, hadron_arm, use_first_cer, padding,
> transparency, use_benhar_sf, random_state_file, random_seed > transparency, use_benhar_sf, random_state_file, random_seed
! ........ note: make these first two parameters at least ONE BIGGER than the actual dimensions you want to read in ! ........ note: make these first two parameters at least ONE BIGGER than the actual dimensions you want to read in
......