diff --git a/Generators/EvgenJobTransforms/python/EvgenConfig.py b/Generators/EvgenJobTransforms/python/EvgenConfig.py index 8f420585d5cc483258abf7ca6eb4bb520a72b475..c2dbfc83d9db798889d95b499ae511677037831c 100644 --- a/Generators/EvgenJobTransforms/python/EvgenConfig.py +++ b/Generators/EvgenJobTransforms/python/EvgenConfig.py @@ -1,11 +1,11 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -## Generators providing input events via the LHEF format (MC\@NLO produces LHEF +## Generators providing input events via the LHEF format (MC@NLO produces LHEF ## when used in connection with Herwig++, which is fine since this variable is ## just used to determine the input file dummy-naming strategy for C++ generators) lhefGenerators = ["Lhef", # generic name: prefer to use the names below "aMcAtNlo", "McAtNlo", "Powheg", "PowHel", "MadGraph", "CompHep", "CalcHep", - "Whizard", "MCFM", "JHU", "MEtop", "Charybdis", "Charybdis2", + "Whizard", "MCFM", "JHU", "MEtop", "Charybdis", "Charybdis2","BCVEGPY", "Dire4Pythia8", "BlackMax", "QBH", "gg2ww", "gg2zz", "gg2vv", "HvyN", "VBFNLO", "FPMC", "ProtosLHEF"] ## A more general list of generators which provide partonic input, including non-LHEF ones diff --git a/Generators/EvgenJobTransforms/python/evgenTrfArgs.py b/Generators/EvgenJobTransforms/python/evgenTrfArgs.py index f011371933a43bb37ac885e556a74298ef557af7..bacd77797510e373d8a06d3f9cfe4da43d3f4210 100644 --- a/Generators/EvgenJobTransforms/python/evgenTrfArgs.py +++ b/Generators/EvgenJobTransforms/python/evgenTrfArgs.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration import PyJobTransforms.trfArgClasses as trfArgClasses @@ -83,7 +83,7 @@ def addStdEvgenArgs(parser): parser.add_argument("--outputTXTFile", group="Evgen", help="optional output TXT file for LHEF events, default is None", - type=trfArgClasses.argFactory(trfArgClasses.argFile)) + type=trfArgClasses.argFactory(trfArgClasses.argLHEFile, io='output', runarg=True)) parser.add_argument("--generatorRunMode", group="Evgen", help="Run mode to pass on to the event generator", default=trfArgClasses.argString("run", runarg=True), @@ -99,4 +99,20 @@ def addStdEvgenArgs(parser): default=trfArgClasses.argInt(0, runarg=True), type=trfArgClasses.argFactory(trfArgClasses.argInt, runarg=True)) + parser.add_argument('--lheOnly', '--lheOnly', group='Evgen', + default=trfArgClasses.argInt(0, runarg=True), + type=trfArgClasses.argFactory(trfArgClasses.argInt, runarg=True), + help='Set to 1 if Evgen file should be removed') + + parser.add_argument("--localPath", group="Evgen", + help="Name of local path to JOs", + type=trfArgClasses.argFactory(trfArgClasses.argString, runarg=True)) + parser.add_argument('--saveList', '--saveList', group='Evgen', + help="a comma-separated list of files to be saved in output or a single digit if the whole output directory is to be saved", + type=trfArgClasses.argFactory(trfArgClasses.argSubstepList, runarg=True)) + + parser.add_argument('--cleanOut', '--cleanOut', group='Evgen', + default=trfArgClasses.argInt(0, runarg=True), + type=trfArgClasses.argFactory(trfArgClasses.argInt, runarg=True), + help='Set to any digit !=0 if the output files should be cleaned up --saveList may help to save selected files') diff --git a/Generators/EvgenJobTransforms/python/jo_proxy.py b/Generators/EvgenJobTransforms/python/jo_proxy.py new file mode 100644 index 0000000000000000000000000000000000000000..fdbd2b3a75e15d39eb199e7dde8d7dcab5e8604b --- /dev/null +++ b/Generators/EvgenJobTransforms/python/jo_proxy.py @@ -0,0 +1,46 @@ +# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + +# Helper functions for setting up a job options proxy +import os,shutil + +def get_immediate_subdirectories(a_dir): + return [name for name in os.listdir(a_dir) + if os.path.isdir(os.path.join(a_dir, name))] + +def mk_jo_proxy(targetbasepath, pkgname, proxypath, addtosearch=True): + "Make a JO proxy dir such that the MCxxJobOptions/dddd dirs contents are found via include(MCxxJobOptions/yyyy)" + if proxypath: + if os.path.exists(proxypath): + shutil.rmtree(proxypath) + os.mkdir(proxypath) + os.environ['LOCAL_INSTALL_DIR'] = (os.environ['JOBOPTSEARCHPATH']).split(":")[0] + os.environ['LOCAL_DATA_DIR'] = (os.environ['DATAPATH']).split(":")[0] + + dirlist = get_immediate_subdirectories(targetbasepath) + subdirlist=dirlist; + for dd in (dirlist): + if (('.svn' not in dd) and ('cmt' not in dd) and ('_joproxy' not in dd)): + deepdir = os.path.join(targetbasepath, dd) + subdirlist1 = get_immediate_subdirectories(deepdir) + subdirlist = subdirlist+["%s" % dd+"/%s" % item for item in subdirlist1] + for d in (subdirlist): + # TODO: we could _maybe_ add the appropriate share/DSIDxxxx/ dir to the path based on the jobConfig arg... too much magic? + if (('.svn' not in d) and ('cmt' not in d) and ('_joproxy' not in d) and ('share/' not in d)): + dpath = os.path.join(proxypath, d) + if proxypath: + os.mkdir(dpath) + + if ('nonStandard' in dpath): + dpath_ex = os.path.join(dpath,pkgname) + if proxypath: + os.mkdir(dpath_ex) + + os.symlink(os.path.join(targetbasepath, d), os.path.join(dpath_ex, "nonStandard")) + else : + os.symlink(os.path.join(targetbasepath, d), os.path.join(dpath, pkgname)) + if addtosearch: + os.environ["JOBOPTSEARCHPATH"] = dpath+":"+os.environ["JOBOPTSEARCHPATH"] + os.environ["DATAPATH"] =os.path.join(targetbasepath, d)+":"+os.environ["DATAPATH"] + + os.environ["JOBOPTSEARCHPATH"] = os.environ['LOCAL_INSTALL_DIR']+":"+os.environ["JOBOPTSEARCHPATH"] + os.environ["DATAPATH"] = os.environ['LOCAL_DATA_DIR']+":"+os.environ["DATAPATH"] \ No newline at end of file diff --git a/Generators/EvgenJobTransforms/scripts/AfterBurner_tf.py b/Generators/EvgenJobTransforms/scripts/AfterBurner_tf.py index 5880ed1849dd134271bb3ed80ccc31134721fc9a..232d15d400552a8deb98af2631a9740b45d0d6cc 100755 --- a/Generators/EvgenJobTransforms/scripts/AfterBurner_tf.py +++ b/Generators/EvgenJobTransforms/scripts/AfterBurner_tf.py @@ -1,6 +1,6 @@ -#! /usr/bin/env python +# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +#! /usr/bin/env python """ Run event simulation and produce an EVNT file. @@ -14,6 +14,7 @@ from PyJobTransforms.trfArgs import addAthenaArguments from PyJobTransforms.trfDecorators import stdTrfExceptionHandler, sigUsrStackTrace from EvgenJobTransforms.evgenTrfArgs import addStdEvgenArgs import PyJobTransforms.trfArgClasses as trfArgClasses +from EvgenJobTransforms.jo_proxy import mk_jo_proxy ## Prodsys1 hack... @@ -46,36 +47,6 @@ class EvgenExecutor(athenaExecutor): zf.extractall() zf.close() - def get_immediate_subdirectories(a_dir): - return [name for name in os.listdir(a_dir) - if os.path.isdir(os.path.join(a_dir, name))] - - def mk_jo_proxy(targetbasepath, pkgname, proxypath, addtosearch=True): - "Make a JO proxy dir such that the MCxxJobOptions/dddd dirs contents are found via include(MCxxJobOptions/yyyy)" - if proxypath: - if os.path.exists(proxypath): - shutil.rmtree(proxypath) - os.mkdir(proxypath) - os.environ['LOCAL_INSTALL_DIR'] = (os.environ['JOBOPTSEARCHPATH']).split(":")[0] - comdir = os.path.join(targetbasepath, "common") - subdirlist = get_immediate_subdirectories(comdir) - subdirlist1 = ['common/%s' % item for item in subdirlist] - dirlist = ['common','share','gencontrol','susycontrol'] - for d in (dirlist+subdirlist1): - # TODO: we could _maybe_ add the appropriate share/DSIDxxxx/ dir to the path based on the jobConfig arg... too much magic? - if (d != 'common/.svn'): - dpath = os.path.join(proxypath, d) - - if proxypath: - os.mkdir(dpath) - os.symlink(os.path.join(targetbasepath, d), os.path.join(dpath, pkgname)) - if addtosearch: - os.environ["JOBOPTSEARCHPATH"] = dpath+":"+os.environ["JOBOPTSEARCHPATH"] - os.environ["DATAPATH"] =os.path.join(targetbasepath, d)+":"+os.environ["DATAPATH"] - - os.environ["JOBOPTSEARCHPATH"] = os.environ['LOCAL_INSTALL_DIR']+":"+os.environ["JOBOPTSEARCHPATH"] - - ## Handle locating of evgen job options / fragments, either from a tarball or CVMFS if "evgenJobOpts" in self._trf.argdict: ## Use a specified JO tarball tarball = self._trf.argdict["evgenJobOpts"].value diff --git a/Generators/EvgenJobTransforms/scripts/Generate_tf.py b/Generators/EvgenJobTransforms/scripts/Generate_tf.py index 5c8d5fe835468d94261d6518fedb8351ef909202..3b2645e5aeea29d04bec48aabd8ea294587d65dd 100755 --- a/Generators/EvgenJobTransforms/scripts/Generate_tf.py +++ b/Generators/EvgenJobTransforms/scripts/Generate_tf.py @@ -1,8 +1,7 @@ #! /usr/bin/env python -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - """ +# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration Run event simulation and produce an EVNT file. """ @@ -14,11 +13,11 @@ from PyJobTransforms.trfArgs import addAthenaArguments from PyJobTransforms.trfDecorators import stdTrfExceptionHandler, sigUsrStackTrace from EvgenJobTransforms.evgenTrfArgs import addStdEvgenArgs import PyJobTransforms.trfArgClasses as trfArgClasses - +from EvgenJobTransforms.jo_proxy import mk_jo_proxy ## Prodsys1 hack... # TODO: Remove! -ListOfDefaultPositionalKeys=['--AMIConfig', '--AMITag', '--argJSON', '--asetup', '--athena', '--athenaMPMergeTargetSize', '--athenaopts', '--attempt', '--checkEventCount', '--command', '--dumpJSON', '--dumpPickle', '--ecmEnergy', '--env', '--eventAcceptanceEfficiency', '--evgenJobOpts', '--execOnly', '--fileValidation', '--firstEvent', '--ignoreErrors', '--ignoreFiles', '--ignorePatterns', '--imf', '--inputEVNT_PreFile', '--inputFileValidation', '--inputGenConfFile', '--inputGeneratorFile', '--jobConfig', '--jobid', '--maxEvents', '--orphanKiller', '--outputEVNTFile', '--outputEVNT_PreFile', '--outputFileValidation', '--outputNTUP_TRUTHFile', '--outputTXTFile', '--parallelFileValidation', '--postExec', '--postInclude', '--preExec', '--preInclude', '--printEvts', '--randomSeed', '--reportName', '--reportType', '--rivetAnas', '--runNumber', '--showGraph', '--showPath', '--showSteps', '--skipEvents', '--skipFileValidation', '--skipInputFileValidation', '--skipOutputFileValidation', '--steering', '--taskid', '--tcmalloc', '--valgrind', '--valgrindbasicopts', '--valgrindextraopts'] +ListOfDefaultPositionalKeys=['--AMIConfig', '--AMITag', '--argJSON', '--asetup', '--athena', '--athenaMPMergeTargetSize', '--athenaopts', '--attempt', '--checkEventCount', '--command', '--dumpJSON', '--dumpPickle', '--ecmEnergy', '--env', '--eventAcceptanceEfficiency', '--evgenJobOpts', '--execOnly', '--fileValidation', '--firstEvent', '--ignoreErrors', '--ignoreFiles', '--ignorePatterns', '--imf', '--inputEVNT_PreFile', '--inputFileValidation', '--inputGenConfFile', '--inputGeneratorFile', '--jobConfig', '--jobid', '--maxEvents', '--orphanKiller', '--outputEVNTFile', '--outputEVNT_PreFile', '--outputFileValidation', '--outputNTUP_TRUTHFile', '--outputTXTFile', '--parallelFileValidation', '--postExec', '--postInclude', '--preExec', '--preInclude', '--printEvts', '--randomSeed', '--reportName', '--reportType', '--rivetAnas', '--runNumber', '--showGraph', '--showPath', '--showSteps', '--skipEvents', '--skipFileValidation', '--skipInputFileValidation', '--skipOutputFileValidation', '--steering', '--taskid', '--tcmalloc', '--valgrind', '--valgrindbasicopts', '--valgrindextraopts', '--lheOnly', '--localPath', '--cleanOut', '--saveList'] class EvgenExecutor(athenaExecutor): "Specialised trf executor class for event generation jobs" @@ -45,49 +44,6 @@ class EvgenExecutor(athenaExecutor): zf.extractall() zf.close() - def get_immediate_subdirectories(a_dir): - return [name for name in os.listdir(a_dir) - if os.path.isdir(os.path.join(a_dir, name))] - - def mk_jo_proxy(targetbasepath, pkgname, proxypath, addtosearch=True): - "Make a JO proxy dir such that the MCxxJobOptions/dddd dirs contents are found via include(MCxxJobOptions/yyyy)" - if proxypath: - if os.path.exists(proxypath): - shutil.rmtree(proxypath) - os.mkdir(proxypath) - os.environ['LOCAL_INSTALL_DIR'] = (os.environ['JOBOPTSEARCHPATH']).split(":")[0] - os.environ['LOCAL_DATA_DIR'] = (os.environ['DATAPATH']).split(":")[0] - - dirlist = get_immediate_subdirectories(targetbasepath) - subdirlist=dirlist; - for dd in (dirlist): - if (('.svn' not in dd) and ('cmt' not in dd) and ('_joproxy' not in dd)): - deepdir = os.path.join(targetbasepath, dd) - subdirlist1 = get_immediate_subdirectories(deepdir) - subdirlist = subdirlist+["%s" % dd+"/%s" % item for item in subdirlist1] - for d in (subdirlist): - # TODO: we could _maybe_ add the appropriate share/DSIDxxxx/ dir to the path based on the jobConfig arg... too much magic? - if (('.svn' not in d) and ('cmt' not in d) and ('_joproxy' not in d) and ('share/' not in d)): - dpath = os.path.join(proxypath, d) - if proxypath: - os.mkdir(dpath) - - if ('nonStandard' in dpath): - dpath_ex = os.path.join(dpath,pkgname) - if proxypath: - os.mkdir(dpath_ex) - - os.symlink(os.path.join(targetbasepath, d), os.path.join(dpath_ex, "nonStandard")) - else : - os.symlink(os.path.join(targetbasepath, d), os.path.join(dpath, pkgname)) - if addtosearch: - os.environ["JOBOPTSEARCHPATH"] = dpath+":"+os.environ["JOBOPTSEARCHPATH"] - os.environ["DATAPATH"] =os.path.join(targetbasepath, d)+":"+os.environ["DATAPATH"] - - os.environ["JOBOPTSEARCHPATH"] = os.environ['LOCAL_INSTALL_DIR']+":"+os.environ["JOBOPTSEARCHPATH"] - os.environ["DATAPATH"] = os.environ['LOCAL_DATA_DIR']+":"+os.environ["DATAPATH"] - - ## Handle locating of evgen job options / fragments, either from a tarball or CVMFS # read the JO used joparam = self._trf.argdict["jobConfig"].value @@ -132,9 +88,16 @@ class EvgenExecutor(athenaExecutor): else: msg.info('ATLAS_SW_BASE path: %s' %sw_base) + local_path = None + if ("localPath" in self._trf.argdict ): + local_path = self._trf.argdict["localPath"].value + print("local path",local_path) cvmfs_path = os.path.join(sw_base, "atlas.cern.ch") - if os.path.exists(cvmfs_path): + if ((local_path is not None) and (os.path.exists(local_path))) : + mk_jo_proxy(local_path, "MC15JobOptions","_joproxy15") + print("JO fragments taken from local path i.e. ",local_path) + elif os.path.exists(cvmfs_path): # TODO: Make the package name configurable if "MC14" in str(joparam): cvmfs_mc14 = os.path.join(cvmfs_path, "repo/sw/Generators/MC14JobOptions/latest/") @@ -154,10 +117,29 @@ class EvgenExecutor(athenaExecutor): ## Expand tarball input event and generator conf files, if provided if "inputGeneratorFile" in self._trf.argdict: - expand_if_archive(self._trf.argdict["inputGeneratorFile"].value) +# expand_if_archive(self._trf.argdict["inputGeneratorFile"].value) + myinputfiles = self._trf.argdict["inputGeneratorFile"].value + genInputFiles = myinputfiles.split(',') + for file in genInputFiles: + expand_if_archive(file) if "inputGenConfFile" in self._trf.argdict: expand_if_archive(self._trf.argdict["inputGenConfFile"].value) +def move_files(main_dir,tmp_dir,whitelist): + files = os.listdir(tmp_dir) + print("list of files ",files) + print("white list ",whitelist) + files.sort() + for f in files: + for i in whitelist: + if i in f: + src = tmp_dir+"/"+f + dest = main_dir+"/"+f +# print("src ",src) +# print("dest ",dest) + os.rename(src,dest) + break + def getTransform(): exeSet = set() @@ -175,11 +157,67 @@ def getTransform(): @sigUsrStackTrace def main(): msg.info("This is %s" % sys.argv[0]) + main_dir = os.getcwd() trf = getTransform() trf.parseCmdLineArgs(sys.argv[1:]) +# print("main ",main_dir) + if (("cleanOut" in trf.argdict) and (trf.argdict["cleanOut"].value != 0)): + name_tmpdir = "tmprun" + tmp_dir = os.path.join(main_dir, name_tmpdir) +# print("tmpdir ",tmp_dir) + if os.path.isdir(tmp_dir): + shutil.rmtree(tmp_dir, ignore_errors=True) + os.mkdir("tmprun") + os.chdir("tmprun") + tmp_dir = os.getcwd() + whitelist_in = ['MC','group','TXT'] + move_files(tmp_dir,main_dir,whitelist_in) + +# trf = getTransform() +# trf.parseCmdLineArgs(sys.argv[1:]) trf.execute() trf.generateReport() msg.info("%s stopped at %s, trf exit code %d" % (sys.argv[0], time.asctime(), trf.exitCode)) + + +# if "outputTXTFile" in trf.argdict: +# whitelist_out.append('TXT') + +# read files/dirs that should be saved and if present in cwd - remove + + if (("cleanOut" in trf.argdict) and (trf.argdict["cleanOut"].value!=0)): +# print("mamy cleanOut !!!",trf.argdict["cleanOut"].value) + whitelist_out = ['log.generate','.root'] + if "outputTXTFile" in trf.argdict: + whitelist_out.append('TXT') + if "saveList" in trf.argdict: + saveList_dic= trf.argdict["saveList"].value + saveList_str= str(saveList_dic) + saveList_str=saveList_str[10:-3] + saveList= saveList_str.split(",") + for item in saveList: + test_ex = os.path.join(main_dir,str(item)) + if os.path.isdir(test_ex): + shutil.rmtree(test_ex, ignore_errors=True) +# print("directory removed ", test_ex) + elif os.path.isfile(test_ex): + os.remove(test_ex) +# print("file removed ", test_ex) +# new_list = list(list(int(a) for a in b) for b in T1 if a.isdigit()) + if not saveList[0].isdigit(): + whitelist_out=whitelist_out+saveList + + move_files(main_dir,tmp_dir,whitelist_out) + os.chdir(main_dir) + if "saveList" not in trf.argdict: + shutil.rmtree(tmp_dir, ignore_errors=True) +# elif firstSaveList!=1: + elif not saveList[0].isdigit(): + shutil.rmtree(tmp_dir, ignore_errors=True) + + if (("lheOnly" in trf.argdict ) and (trf.argdict["lheOnly"].value == 1)): + outputName = ''.join(trf.argdict["outputEVNTFile"].value) + os.remove(outputName) sys.exit(trf.exitCode) diff --git a/Generators/Pythia8_i/Pythia8_i/Pythia8_i.h b/Generators/Pythia8_i/Pythia8_i/Pythia8_i.h index 101697c36a2c1a8ebb934edfca719f74629e8770..82982f907bb29f65b7badf25487e79f5532d779b 100644 --- a/Generators/Pythia8_i/Pythia8_i/Pythia8_i.h +++ b/Generators/Pythia8_i/Pythia8_i/Pythia8_i.h @@ -79,6 +79,8 @@ public: double pythiaVersion()const; static std::string pythia_stream; + + static std::string xmlpath(); protected: @@ -89,9 +91,7 @@ protected: HepMC::Pythia8ToHepMC m_pythiaToHepMC; private: - - static std::string xmlpath(); - + static std::string findValue(const std::string &command, const std::string &key); int m_internal_event_number; diff --git a/Simulation/G4Extensions/G4ExternalDecay/CMakeLists.txt b/Simulation/G4Extensions/G4ExternalDecay/CMakeLists.txt index 9d4f767e05b21ebde5daaf3aee822a681848730d..55cbfb63d861976450131f8e576dcd0a5bc4a592 100644 --- a/Simulation/G4Extensions/G4ExternalDecay/CMakeLists.txt +++ b/Simulation/G4Extensions/G4ExternalDecay/CMakeLists.txt @@ -7,23 +7,41 @@ atlas_subdir( G4ExternalDecay ) # Declare the package's dependencies: atlas_depends_on_subdirs( PRIVATE - Generators/Pythia_i ) + Generators/Pythia8_i ) # External dependencies: find_package( CLHEP ) find_package( Geant4 ) find_package( HepMC ) find_package( Lhapdf ) -find_package( Pythia6 ) +find_package( Pythia8 ) find_package( XercesC ) +find_package( HEPUtils ) +find_package( MCUtils ) + +set( extra_includes ) +set( extra_libs ) +if( HEPUTILS_FOUND ) + list( APPEND extra_includes ${HEPUTILS_INCLUDE_DIRS} ) + list( APPEND extra_libs ${HEPUTILS_LIBRARIES} ) +endif() +if( MCUTILS_FOUND ) + list( APPEND extra_includes ${MCUTILS_INCLUDE_DIRS} ) + list( APPEND extra_libs ${MCUTILS_LIBRARIES} ) +endif() +if( HEPMC_FOUND ) + list( APPEND extra_includes ${HEPMC_INCLUDE_DIRS} ) + list( APPEND extra_libs ${HEPMC_LIBRARIES} ) +endif() + # Component(s) in the package: atlas_add_library( G4ExternalDecay src/*.cxx PUBLIC_HEADERS G4ExternalDecay - INCLUDE_DIRS ${XERCESC_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} ${PYTHIA6_INCLUDE_DIRS} ${LHAPDF_INCLUDE_DIRS} ${GEANT4_INCLUDE_DIRS} + INCLUDE_DIRS ${XERCESC_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} ${LHAPDF_INCLUDE_DIRS} ${GEANT4_INCLUDE_DIRS} ${PYTHIA8_INCLUDE_DIRS} ${extra_includes} PRIVATE_INCLUDE_DIRS ${HEPMC_INCLUDE_DIRS} DEFINITIONS ${CLHEP_DEFINITIONS} - LINK_LIBRARIES ${XERCESC_LIBRARIES} ${CLHEP_LIBRARIES} ${PYTHIA6_LIBRARIES} ${LHAPDF_LIBRARIES} ${GEANT4_LIBRARIES} Pythia_iLib + LINK_LIBRARIES ${XERCESC_LIBRARIES} ${CLHEP_LIBRARIES} ${PYTHIA8_LIBRARIES} ${LHAPDF_LIBRARIES} ${GEANT4_LIBRARIES} Pythia_iLib Pythia8_iLib ${extra_libs} PRIVATE_LINK_LIBRARIES ${HEPMC_LIBRARIES} ) diff --git a/Simulation/G4Extensions/G4ExternalDecay/G4ExternalDecay/Pythia8ForDecays.h b/Simulation/G4Extensions/G4ExternalDecay/G4ExternalDecay/Pythia8ForDecays.h new file mode 100644 index 0000000000000000000000000000000000000000..a782ed4ef76e98df701dc9bfe01bc1098e787ab4 --- /dev/null +++ b/Simulation/G4Extensions/G4ExternalDecay/G4ExternalDecay/Pythia8ForDecays.h @@ -0,0 +1,61 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// Abused from Geant4 version of Pythai6.hh from extended examples + +#ifndef Pythia8ForDecays_H +#define Pythia8ForDecays_H + +// For std::vector +#include <vector> +// G4 track function parameter +#include "G4Track.hh" +// For std::pair +#include <utility> +// For all the various Pythia8 classes used here +#include "Pythia8_i/Pythia8_i.h" +// For unique_ptr and once flag +#include <memory> +#include <mutex> + +class G4DynamicParticle; +class G4ParticleDefinition; + +class Pythia8ForDecays +{ + public: + + virtual ~Pythia8ForDecays() = default; + + static Pythia8ForDecays *Instance(); + + /// Function that decays the RHadron; returns products in G4 format + void Py1ent(const G4Track&, std::vector<G4DynamicParticle*> &); + + private: + + /// Private constructor for singleton pattern + Pythia8ForDecays(); + + /// Helper for getting G4ParticleDefinition from PDG ID + G4ParticleDefinition* GetParticleDefinition(const int) const; + + /// Fill a Pythia8 event with the information from a G4Track + void fillParticle(const G4Track&, Pythia8::Event& event) const; + + /// Get the quarks from a gluino R-hadron. From Pythia8 code. + std::pair<int,int> fromIdWithGluino( int idRHad, Pythia8::Rndm* rndmPtr) const; + std::pair<int,int> fromIdWithSquark( int idRHad) const; + bool isGluinoRHadron(int pdgId) const; + + /// My own class; singleton pattern; thread safe for future-proofing + static std::unique_ptr<Pythia8ForDecays> s_instance; + static std::once_flag m_onceFlag; + + /// The instance of Pythia8 that will do the work + std::unique_ptr<Pythia8::Pythia> m_pythia; +}; + +#endif + diff --git a/Simulation/G4Extensions/G4ExternalDecay/G4ExternalDecay/PythiaForDecays.h b/Simulation/G4Extensions/G4ExternalDecay/G4ExternalDecay/PythiaForDecays.h deleted file mode 100644 index 1bb31915b474a48e02f9cf6a874a1fe2d73c556a..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/G4ExternalDecay/G4ExternalDecay/PythiaForDecays.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Abused from Geant4 version of Pythai6.hh from extended examples - -#ifndef PythiaForDecays_H -#define PythiaForDecays_H - -#include <vector> -#include "G4DynamicParticle.hh" - -class PythiaForDecays -{ - public: - - PythiaForDecays(); - virtual ~PythiaForDecays(); - - static PythiaForDecays *Instance(); - - int Pycomp(int); - void Py1ent(int, int, double, double, double); - - void ImportParticles( std::vector<G4DynamicParticle*> &); - - void DecayRhadrons(int pdgid); - - private: - - G4ParticleDefinition* GetParticleDefinition(const int) const; - - static PythiaForDecays* s_instance; -}; - -#endif - diff --git a/Simulation/G4Extensions/G4ExternalDecay/src/Pythia8ForDecays.cxx b/Simulation/G4Extensions/G4ExternalDecay/src/Pythia8ForDecays.cxx new file mode 100644 index 0000000000000000000000000000000000000000..1bac7b120da58af04555c09423ef28db74079127 --- /dev/null +++ b/Simulation/G4Extensions/G4ExternalDecay/src/Pythia8ForDecays.cxx @@ -0,0 +1,313 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// Abused from Pythia6.cc in Geant4 extended examples + +// My own class definition +#include "G4ExternalDecay/Pythia8ForDecays.h" + +// Helper functions for Pythia8 and Pythia8 classes +#include "Pythia8_i/Pythia8_i.h" + +// Pythia8 RHadrons code that we call into +#include "Pythia8/RHadrons.h" + +// HepMC for translation into format Pythia likes +#include "HepMC/IO_HEPEVT.h" +#include "HepMC/GenEvent.h" +#include "HepMC/GenParticle.h" + +// G4 classes for translation into G4 format +#include "G4ParticleDefinition.hh" +#include "G4ParticleTable.hh" +#include "G4ThreeVector.hh" +#include "TLorentzVector.h" +#include "MCUtils/HepMCUtils.h" + +// STL includes +#include <cstdlib> +#include <cstring> +#include <cmath> +#include <fstream> + +std::unique_ptr<Pythia8ForDecays> Pythia8ForDecays::s_instance(nullptr); +std::once_flag Pythia8ForDecays::m_onceFlag; + +Pythia8ForDecays* Pythia8ForDecays::Instance() { + std::call_once(m_onceFlag, + [] { + s_instance.reset(new Pythia8ForDecays); + }); + return s_instance.get(); +} + +Pythia8ForDecays::Pythia8ForDecays() + { + // Pythia instance where RHadrons can decay + std::string docstring = Pythia8_i::xmlpath(); + m_pythia = std::make_unique<Pythia8::Pythia>(docstring); + m_pythia->readString("SLHA:file = SLHA_INPUT.DAT"); + m_pythia->readString("ProcessLevel:all = off"); + m_pythia->readString("Init:showChangedSettings = off"); + m_pythia->readString("RHadrons:allow = on"); + m_pythia->readString("RHadrons:allowDecay = on"); + m_pythia->readString("RHadrons:probGluinoball = 0.1"); + m_pythia->readString("PartonLevel:FSR = off"); + m_pythia->readString("Init:showAllParticleData = on"); + + // Process the file of commands left for us by the python layer + std::string line; + std::ifstream command_stream ("PYTHIA8_COMMANDS.TXT"); + while(getline(command_stream,line)){ + // Leaving it to the top-level to get this file right + m_pythia->readString(line); + } + command_stream.close(); + + m_pythia->init(); + +} + +G4ParticleDefinition* Pythia8ForDecays::GetParticleDefinition(const int pdgEncoding) const +{ + G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable(); + G4ParticleDefinition* particleDefinition(nullptr); + if (pdgEncoding != 0) particleDefinition = particleTable->FindParticle(pdgEncoding); + return particleDefinition; +} + + +std::pair<int,int> Pythia8ForDecays::fromIdWithSquark( int idRHad) const +{ + + // Find squark flavour content. + int idRSb = m_pythia->settings.mode("RHadrons:idSbottom"); + int idRSt = m_pythia->settings.mode("RHadrons:idStop"); + int idLight = (abs(idRHad) - 1000000) / 10; + int idSq = (idLight < 100) ? idLight/10 : idLight/100; + int id1 = (idSq == 6) ? idRSt : idRSb; + if (idRHad < 0) id1 = -id1; + + // Find light (di)quark flavour content. + int id2 = (idLight < 100) ? idLight%10 : idLight%100; + if (id2 > 10) id2 = 100 * id2 + abs(idRHad)%10; + if ((id2 < 10 && idRHad > 0) || (id2 > 10 && idRHad < 0)) id2 = -id2; + + // Done. + return std::make_pair( id1, id2); + +} + +// TODO: Would be nice for this to be a public function in Pythia8::RHadrons.hh +std::pair<int,int> Pythia8ForDecays::fromIdWithGluino( int idRHad, Pythia8::Rndm* rndmPtr) const +{ + // Find light flavour content of R-hadron. + int idLight = (abs(idRHad) - 1000000) / 10; + int id1, id2, idTmp, idA, idB, idC; + double diquarkSpin1RH = 0.5; + + // Gluinoballs: split g into d dbar or u ubar. + if (idLight < 100) { + id1 = (rndmPtr->flat() < 0.5) ? 1 : 2; + id2 = -id1; + + // Gluino-meson: split into q + qbar. + } else if (idLight < 1000) { + id1 = (idLight / 10) % 10; + id2 = -(idLight % 10); + // Flip signs when first quark of down-type. + if (id1%2 == 1) { + idTmp = id1; + id1 = -id2; + id2 = -idTmp; + } + + // Gluino-baryon: split to q + qq (diquark). + // Pick diquark at random, except if c or b involved. + } else { + idA = (idLight / 100) % 10; + idB = (idLight / 10) % 10; + idC = idLight % 10; + double rndmQ = 3. * rndmPtr->flat(); + if (idA > 3) rndmQ = 0.5; + if (rndmQ < 1.) { + id1 = idA; + id2 = 1000 * idB + 100 * idC + 3; + if (idB != idC && rndmPtr->flat() > diquarkSpin1RH) id2 -= 2; + } else if (rndmQ < 2.) { + id1 = idB; + id2 = 1000 * idA + 100 * idC + 3; + if (idA != idC && rndmPtr->flat() > diquarkSpin1RH) id2 -= 2; + } else { + id1 = idC; + id2 = 1000 * idA + 100 * idB +3; + if (idA != idB && rndmPtr->flat() > diquarkSpin1RH) id2 -= 2; + } + } + // Flip signs for anti-R-hadron. + if (idRHad < 0) { + idTmp = id1; + id1 = -id2; + id2 = -idTmp; + } + + // Done. + return std::make_pair( id1, id2); + +} + +/// Add a G4Track to a Pythia8 event to make it a single-particle gun. The particle must be a colour singlet. +/// Input: particle, Pythia8 event +void Pythia8ForDecays::fillParticle(const G4Track& aTrack, Pythia8::Event& event) const +{ + // Reset event record to allow for new event. + event.reset(); + + // Select particle mass; where relevant according to Breit-Wigner. + double mm = aTrack.GetDynamicParticle()->GetMass(); + + // Store the particle in the event record. + event.append( aTrack.GetDefinition()->GetPDGEncoding(), 1, 0, 0, aTrack.GetMomentum().x()/CLHEP::GeV, aTrack.GetMomentum().y()/CLHEP::GeV, + aTrack.GetMomentum().z()/CLHEP::GeV, aTrack.GetDynamicParticle()->GetTotalEnergy()/CLHEP::GeV, mm/CLHEP::GeV); + // Note: this function returns an int, but we don't need or use its output +} + +bool Pythia8ForDecays::isGluinoRHadron(int pdgId) const{ + // Checking what kind of RHadron this is based on the digits in its PDGID + const unsigned short digitValue_q1 = MCUtils::PID::_digit(MCUtils::PID::Location::nq1,pdgId); + const unsigned short digitValue_l = MCUtils::PID::_digit(MCUtils::PID::Location::nl,pdgId); + + // Gluino R-Hadrons have the form 109xxxx or 1009xxx + if (digitValue_l == 9 || (digitValue_l==0 && digitValue_q1 == 9) ){ + // This is a gluino R-Hadron + return true; + } + + // Special case : R-gluinoball + if (pdgId==1000993) return true; + + // This is not a gluino R-Hadron (probably a squark R-Hadron) + return false; + +} + +void Pythia8ForDecays::Py1ent(const G4Track& aTrack, std::vector<G4DynamicParticle*> & particles) +{ + + // Get members from Pythia8 instance where RHadrons can decay + Pythia8::Event& event = m_pythia->event; + Pythia8::ParticleData& pdt = m_pythia->particleData; + + // Use pythiaDecay information to fill event with the input particle + fillParticle(aTrack, event); + + // Copy and paste of RHadron decay code + int iRNow = 1; + int idRHad = event[iRNow].id(); + double mRHad = event[iRNow].m(); + int iR0 = 0; + int iR2 = 0; + + bool isTriplet = !isGluinoRHadron(idRHad); + + // Find flavour content of squark or gluino R-hadron. + std::pair<int,int> idPair = (isTriplet) ? fromIdWithSquark( idRHad) : fromIdWithGluino( idRHad, &(m_pythia->rndm)); + int id1 = idPair.first; + int id2 = idPair.second; + + // Sharing of momentum: the squark/gluino should be restored + // to original mass, but error if negative-mass spectators. + int idRSb = m_pythia->settings.mode("RHadrons:idSbottom"); + int idRSt = m_pythia->settings.mode("RHadrons:idStop"); + int idRGo = m_pythia->settings.mode("RHadrons:idGluino"); + int idLight = (abs(idRHad) - 1000000) / 10; + int idSq = (idLight < 100) ? idLight/10 : idLight/100; + int idRSq = (idSq == 6) ? idRSt : idRSb; + + // Handling R-Hadrons with anti-squarks + idRSq = idRSq * std::copysign(1, idRHad); + + int idRBef = isTriplet ? idRSq : idRGo; + + // Mass of the underlying sparticle + double mRBef = pdt.mSel(idRBef); + + // Fraction of the RHadron mass given by the sparticle + double fracR = mRBef / mRHad; + int counter=0; + while (fracR>=1.){ + if (counter==10){ + G4cout << "Needed more than 10 attempts with constituent " << idRBef << " mass (" << mRBef << " above R-Hadron " << idRHad << " mass " << mRHad << G4endl; + } else if (counter>100){ + G4cout << "Pythia8ForDecays::Py1ent ERROR Failed >100 times. Constituent " << idRBef << " mass (" << mRBef << " above R-Hadron " << idRHad << " mass " << mRHad << G4endl; + return; + } + mRBef = pdt.mSel(idRBef); + fracR = mRBef / mRHad; + counter++; + } + + // Squark case + if(isTriplet){ + int col = (event[idRBef].col() != 0) ? event.nextColTag() : 0; + int tmpSparticleColor = id1>0 ? col : 0; + int tmpSparticleAnticolor = id1>0 ? 0 : col; + + // Store the constituents of a squark R-hadron. + + // Sparticle + // (id, status, mother1, mother2, daughter1, daughter2, col, acol, px, py, pz, e, m=0., scaleIn=0., polIn=9.) + iR0 = event.append( id1, 106, iRNow, 0, 0, 0, tmpSparticleColor, tmpSparticleAnticolor, fracR * event[iRNow].p(), fracR * mRHad, 0.); + // Spectator quark + iR2 = event.append( id2, 106, iRNow, 0, 0, 0, tmpSparticleAnticolor, tmpSparticleColor, (1. - fracR) * event[iRNow].p(), (1. - fracR) * mRHad, 0.); + } + // Gluino case + else{ + double mOffsetCloudRH = 0.2; // could be read from internal data? + double m1Eff = pdt.constituentMass(id1) + mOffsetCloudRH; + double m2Eff = pdt.constituentMass(id2) + mOffsetCloudRH; + double frac1 = (1. - fracR) * m1Eff / ( m1Eff + m2Eff); + double frac2 = (1. - fracR) * m2Eff / ( m1Eff + m2Eff); + + // Two new colours needed in the breakups. + int col1 = event.nextColTag(); + int col2 = event.nextColTag(); + + // Store the constituents of a gluino R-hadron. + iR0 = event.append( idRBef, 106, iRNow, 0, 0, 0, col2, col1, fracR * event[iRNow].p(), fracR * mRHad, 0.); + event.append( id1, 106, iRNow, 0, 0, 0, col1, 0, frac1 * event[iRNow].p(), frac1 * mRHad, 0.); + iR2 = event.append( id2, 106, iRNow, 0, 0, 0, 0, col2, frac2 * event[iRNow].p(), frac2 * mRHad, 0.); + } + + // Mark R-hadron as decayed and update history. + event[iRNow].statusNeg(); + event[iRNow].daughters( iR0, iR2); + + // Generate events. Quit if failure. + if (!m_pythia->next()) { + m_pythia->forceRHadronDecays(); + } + + /////////////////////////////////////////////////////////////////////////// + // Add the particles from the Pythia event into the GEANT particle vector + /////////////////////////////////////////////////////////////////////////// + particles.clear(); + + for(int i=0; i<m_pythia->event.size(); i++){ + if ( m_pythia->event[i].status()<0 ) continue; // stable only + G4ThreeVector momentum( m_pythia->event[i].px() , m_pythia->event[i].py() , m_pythia->event[i].pz() ); + momentum*=1000.0;//GeV to MeV + const G4ParticleDefinition * particleDefinition = GetParticleDefinition( m_pythia->event[i].id() ); + + if (!particleDefinition){ + G4cout << "I don't know a definition for pdgid "<<m_pythia->event[i].id()<<"! Skipping it..." << G4endl; + continue; + } + + G4DynamicParticle* dynamicParticle = new G4DynamicParticle(particleDefinition, momentum); + particles.push_back( dynamicParticle ); + } + +} + diff --git a/Simulation/G4Extensions/G4ExternalDecay/src/PythiaForDecays.cxx b/Simulation/G4Extensions/G4ExternalDecay/src/PythiaForDecays.cxx deleted file mode 100644 index e088a1a3d8770ea9be5f607d7888b79f47b9a350..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/G4ExternalDecay/src/PythiaForDecays.cxx +++ /dev/null @@ -1,211 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Abused from Pythia6.cc in Geant4 extended examples - -#include "G4ExternalDecay/PythiaForDecays.h" -#include "Pythia_i/Pythia.h" -#include "Pythia_i/Pydat3.h" -#include "Pythia_i/Pydat2.h" -#include "Pythia_i/Pydat1.h" -#include "HepMC/IO_HEPEVT.h" -#include "HepMC/GenEvent.h" -#include "HepMC/GenParticle.h" - -#include "G4ParticleDefinition.hh" -#include "G4ParticleTable.hh" -#include "G4ThreeVector.hh" - -#include <iostream> -#include <cstdlib> -#include <cstring> -#include <cmath> - -struct PPYJETS{ - int n; - int npad; - int k[5][4000]; - double p[5][4000]; - double v[5][4000]; -}; - -extern "C" { - int pycomp_(int*); - void py1ent_(int&, int&, double&, double&, double&); - void pyhepc_(int*); - PPYJETS pyjets_; - void pylist_(int*); - void pyexec_(); -} -void pygldc_() {}//ACH for gluino decay -void pysqdc_(int*) {}//ACH for stop/sbottom decay - - -PythiaForDecays* PythiaForDecays::s_instance = 0; - -PythiaForDecays* PythiaForDecays::Instance() -{ - if ( ! s_instance ) s_instance = new PythiaForDecays(); - return s_instance; -} - -PythiaForDecays::PythiaForDecays() -{ - // Protect against multiple objects. All access should be via the - // Instance member function. - if ( s_instance ) { - std::cerr << "There's already an instance of PythiaForDecays" << std::endl; - exit (1); - } -} - -PythiaForDecays::~PythiaForDecays() -{;} // It's ok little class, I never owned anything either... - -int PythiaForDecays::Pycomp(int kf) -{ -/// Interface with fortran routine pycomp - return pycomp_(&kf); -} - -void PythiaForDecays::Py1ent(int ip, int kf, double pe, double theta, double phi) -{ -/// Add one entry to the event record, i.e. either a parton or a -/// particle. -/// -/// IP: normally line number for the parton/particle. There are two -/// exceptions: -/// -/// If IP = 0: line number 1 is used and PYEXEC is called. -/// If IP < 0: line -IP is used, with status code K(-IP,2)=2 -/// rather than 1; thus a parton system may be built -/// up by filling all but the last parton of the -/// system with IP < 0. -/// KF: parton/particle flavour code (PDG code) -/// PE: parton/particle energy. If PE is smaller than the mass, -/// the parton/particle is taken to be at rest. -/// THETA: -/// PHI: polar and azimuthal angle for the momentum vector of the -/// parton/particle. - - //std::cout<<"ACH start Py1ent 1"<<std::endl; - py1ent_(ip, kf, pe, theta, phi); - //int pyl=3; pylist_(&pyl); -} - -void PythiaForDecays::DecayRhadrons(int pdgid){ - //std::cout<<"ACH start DecayRhadrons for pdgid "<<pdgid<<std::endl; - int pyl=3;//level to list to output text - - //only decay daughter particles from the decay that are "near" the hadron - Pydat1 pydat1; - pydat1.mstj(21)=2; - pydat1.mstj(22)=3; - pydat1.parj(72)=0.001; - - //Deal with standard hadrons first... - if (abs(pdgid)<1000000){ - //std::cout<<"ACH decay standard hadron for pdgid "<<pdgid<<std::endl; - pyjets_.k[0][0]=5;//make it decay right away! - //pylist_(&pyl); - pyexec_(); - //pylist_(&pyl); - return; - } - - //Real Rhadron stuff... - pdgid=abs(pdgid); - pyjets_.k[0][0]=6; - Pydat3 pydat3; - Pydat2 pydat2; - //pylist_(&pyl); - if ( pdgid/10000==109 || pdgid/1000==1009 || pdgid/100==10009 ){ - //std::cout<<"ACH decay gluino rhadron .."<<std::endl; - int kfgl = 1000021;//gluino - pydat3.mdcy(pycomp_(&kfgl),1)=1;// MDCY(PYCOMP(KFGL),1)=1 //unstable gluino - float oldl=pydat2.pmas(pycomp_(&kfgl),4);//remember lifetime - pydat2.pmas(pycomp_(&kfgl),4)=0;//decay it promptly! - pygldc_();//gluino DECAY - pydat2.pmas(pycomp_(&kfgl),4)=oldl;//set lifetime back to what it was - //pylist_(&pyl); - } - else if ( pdgid/1000==1006 || pdgid/100==10006 ){ - //std::cout<<"ACH decay stop rhadron .."<<std::endl; - Pydat3 pydat3; - int kfgl = 1000006;//stop - pydat3.mdcy(pycomp_(&kfgl),1)=1;// MDCY(PYCOMP(KFGL),1)=1 //unstable stop - float oldl=pydat2.pmas(pycomp_(&kfgl),4);//remember lifetime - pydat2.pmas(pycomp_(&kfgl),4)=0;//decay it promptly! - pysqdc_(&kfgl);//stop DECAY! - pydat2.pmas(pycomp_(&kfgl),4)=oldl;//set lifetime back to what it was - //pylist_(&pyl); - } - else if ( pdgid/1000==1005 || pdgid/100==10005 ){ - //std::cout<<"ACH decay sbottom rhadron .."<<std::endl; - Pydat3 pydat3; - int kfgl = 1000005;//sbottom - pydat3.mdcy(pycomp_(&kfgl),1)=1;// MDCY(PYCOMP(KFGL),1)=1 //unstable sbottom - float oldl=pydat2.pmas(pycomp_(&kfgl),4);//remember lifetime - pydat2.pmas(pycomp_(&kfgl),4)=0;//decay it promptly! - pysqdc_(&kfgl);//sbottom DECAY! - pydat2.pmas(pycomp_(&kfgl),4)=oldl;//set lifetime back to what it was - //pylist_(&pyl); - } - else{ - std::cout<<"ACH ERROR !!! Can't decay unknown particle with abspdgid="<<pdgid<<std::endl; - pylist_(&pyl); - //exit(-19); - } - -} - -//______________________________________________________________________________ -void PythiaForDecays::ImportParticles( std::vector<G4DynamicParticle*> & particles) -{ - particles.clear(); - - int mconv=1; - pyhepc_(&mconv); - - // Fill up the HEP Event - HepMC::GenEvent* evt = new HepMC::GenEvent(1,1); - HepMC::IO_HEPEVT hepio; - hepio.set_print_inconsistency_errors(0); - hepio.fill_next_event(evt); - - for (HepMC::GenEvent::particle_const_iterator p=evt->particles_begin(); p!=evt->particles_end(); ++p){ - if (! (*p) ) continue; - - /* - double r=0; - if ((*p)->production_vertex()) { - double x=(*p)->production_vertex()->position().x(); - double y=(*p)->production_vertex()->position().y(); - r=sqrt(x*x+y*y); - } - std::cout<<"ImportParticles: "<<(*p)->pdg_id()<<", vertex r "<<r<<", status "<<(*p)->status()<<std::endl; - */ - - if ( (*p)->status()!=1 ) continue; // stable only - //if ( std::abs((*p)->pdg_id())==12 || std::abs((*p)->pdg_id())==14 || std::abs((*p)->pdg_id())==16 ) continue; // skip neutrinos - G4ThreeVector momentum( (*p)->momentum().x() , (*p)->momentum().y() , (*p)->momentum().z() ); - momentum*=1000.0;//GeV to MeV - const G4ParticleDefinition * particleDefinition = GetParticleDefinition( (*p)->pdg_id() ); - if (!particleDefinition){ - std::cout<<"WARNING: I don't know a definition for pdgid "<<(*p)->pdg_id()<<"! Skipping it..."<<std::endl; - continue; - } - G4DynamicParticle* dynamicParticle = new G4DynamicParticle(particleDefinition, momentum); - particles.push_back( dynamicParticle ); - } -} - -G4ParticleDefinition* PythiaForDecays::GetParticleDefinition(const int pdgEncoding) const -{ - G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable(); - G4ParticleDefinition* particleDefinition = 0; - if (pdgEncoding != 0) particleDefinition = particleTable->FindParticle(pdgEncoding); - return particleDefinition; -} - diff --git a/Simulation/G4Extensions/RHadrons/CMakeLists.txt b/Simulation/G4Extensions/RHadrons/CMakeLists.txt index 2e77e4b457c15f2b932ff7b76f3ef518defe0524..11fca94a6c082d2dede0bf470e132d3787bc8ba8 100644 --- a/Simulation/G4Extensions/RHadrons/CMakeLists.txt +++ b/Simulation/G4Extensions/RHadrons/CMakeLists.txt @@ -5,33 +5,32 @@ # Declare the package name: atlas_subdir( RHadrons ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - GaudiKernel - PRIVATE - Control/AthenaBaseComps - Control/CxxUtils - Simulation/G4Atlas/G4AtlasInterfaces - Simulation/G4Atlas/G4AtlasTools - Simulation/G4Extensions/G4ExternalDecay - Simulation/G4Sim/SimHelpers ) +if( NOT GENERATIONBASE ) + # Declare the package's dependencies: + atlas_depends_on_subdirs( PUBLIC + GaudiKernel + PRIVATE + Control/AthenaBaseComps + Control/CxxUtils + Simulation/G4Atlas/G4AtlasInterfaces + Simulation/G4Atlas/G4AtlasTools + Simulation/G4Extensions/G4ExternalDecay + Simulation/G4Sim/SimHelpers ) -# External dependencies: -find_package( CLHEP ) -find_package( Geant4 ) -find_package( XercesC ) + # External dependencies: + find_package( CLHEP ) + find_package( Geant4 ) + find_package( XercesC ) + find_package( Pythia8 ) -# Component(s) in the package: -atlas_add_component( RHadrons - src/*.cxx - src/components/*.cxx - INCLUDE_DIRS ${GEANT4_INCLUDE_DIRS} ${XERCESC_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} - LINK_LIBRARIES ${GEANT4_LIBRARIES} ${XERCESC_LIBRARIES} ${CLHEP_LIBRARIES} GaudiKernel AthenaBaseComps G4AtlasInterfaces G4AtlasToolsLib G4ExternalDecay SimHelpers ) + # Component(s) in the package: + atlas_add_component( RHadrons + src/*.cxx + src/components/*.cxx + INCLUDE_DIRS ${GEANT4_INCLUDE_DIRS} ${XERCESC_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} ${PYTHIA8_INCLUDE_DIRS} + LINK_LIBRARIES ${GEANT4_LIBRARIES} ${XERCESC_LIBRARIES} ${CLHEP_LIBRARIES} ${PYTHIA8_LIBRARIES} GaudiKernel AthenaBaseComps G4AtlasInterfaces G4AtlasToolsLib G4ExternalDecay SimHelpers Pythia8_iLib ) +endif() # Install files from the package: atlas_install_python_modules( python/*.py ) atlas_install_joboptions( share/*.py ) -atlas_install_generic( share/*.txt - DESTINATION share - EXECUTABLE ) - diff --git a/Simulation/G4Extensions/RHadrons/python/RHadronMasses.py b/Simulation/G4Extensions/RHadrons/python/RHadronMasses.py new file mode 100644 index 0000000000000000000000000000000000000000..9b3bb8ca0f53ade974b2a36b25e7a3aa361b08ac --- /dev/null +++ b/Simulation/G4Extensions/RHadrons/python/RHadronMasses.py @@ -0,0 +1,455 @@ +# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + +# This file contains a number of helper functions for defining R-hadron mass spectra +# A large data table at the top is then used in several of the helper functions + +""" +The offset options. Dictionary of PDG IDs with offsets. +Anti-particles by definition have the same mass as standard particles. +Columns are: + PDG ID + PDG ID of SUSY constituent + Has an anti-particle (i.e. need to define a particle with an opposite-signed PDG ID) + Name (for PDG table) + Charge (for PDG table) + + Mass Offset in the Pythia6 simulation configuration + 8 mass options documented in the INT note of the stopped particle analysis: + https://cds.cern.ch/record/2665511 + First 3 are the meson fits; 4th is the first specrum shifted to make the gluino R-glueball heaver + than the lightest R-mesons, but with the same relative splitting otherwise. + Second set of four follow the same pattern, but for the baryon fits. + +The list of possible R-hadrons comes from the Pythia8 code, in src/RHadrons.cc (at the top) +""" + +first_mass_set = 4 +offset_options = { +# Fundamental SUSY particles + 1000021 : [ 0 , False , '~g ' , 0 , 0.000 , 0.000 , 0.000 , 0.000 , 0.000 , 0.000 , 0.000 , 0.000 , 0.000 ] , + 1000022 : [ 0 , False , '~chi10 ' , 0 , 0.000 , 0.000 , 0.000 , 0.000 , 0.000 , 0.000 , 0.000 , 0.000 , 0.000 ] , + 1000039 : [ 0 , False , '~Gr ' , 0 , 0.000 , 0.000 , 0.000 , 0.000 , 0.000 , 0.000 , 0.000 , 0.000 , 0.000 ] , +# Gluino R-glueball + 1000993 : [ 1000021 , False , '~g_glueball ' , 0 , 0.700 , 0.700 , 0.700 , 0.700 , 0.700 , 0.700 , 0.700 , 0.700 , 0.700 ] , +# Gluino q-qbar R-mesons + 1009113 : [ 1000021 , False , '~g_pi0 ' , 0 , 0.650 , 0.682 , 0.551 , 0.770 , 0.000 , 0.770 , 0.551 , 0.770 , 0.000 ] , + 1009223 : [ 1000021 , False , '~g_omega ' , 0 , 0.650 , 0.609 , 0.402 , 0.716 , 0.000 , 0.716 , 0.402 , 0.716 , 0.000 ] , + 1009333 : [ 1000021 , False , '~g_phi ' , 0 , 1.800 , 0.923 , 0.827 , 1.073 , 0.000 , 1.053 , 0.827 , 1.073 , 0.000 ] , + 1009443 : [ 1000021 , False , '~g_eta_c ' , 0 , 3.400 , 3.262 , 3.102 , 3.421 , 0.000 , 3.401 , 3.102 , 3.421 , 0.000 ] , + 1009553 : [ 1000021 , False , '~g_eta_b ' , 0 , 9.460 , 9.460 ,11.000 ,10.000 ,10.000 , 9.460 , 9.460 ,11.000 ,10.000 ] , +# Light-flavor Gluino R-mesons + 1009213 : [ 1000021 , True , '~g_pi+ ' , 1 , 0.650 , 0.682 , 0.551 , 0.770 , 0.000 , 0.770 , 0.551 , 0.770 , 0.000 ] , +# Strange Gluino R-mesons + 1009313 : [ 1000021 , True , '~g_K*0 ' , 0 , 0.825 , 0.816 , 0.697 , 0.927 , 0.000 , 0.922 , 0.697 , 0.927 , 0.000 ] , + 1009323 : [ 1000021 , True , '~g_K*+ ' , 1 , 0.825 , 0.816 , 0.697 , 0.927 , 0.000 , 0.922 , 0.697 , 0.927 , 0.000 ] , +# Charm Gluino R-mesons + 1009413 : [ 1000021 , True , '~g_D+ ' , 1 , 2.000 , 1.954 , 1.863 , 2.078 , 0.000 , 2.073 , 1.863 , 2.078 , 0.000 ] , + 1009423 : [ 1000021 , True , '~g_D0 ' , 0 , 2.000 , 1.954 , 1.863 , 2.078 , 0.000 , 2.073 , 1.863 , 2.078 , 0.000 ] , + 1009433 : [ 1000021 , True , '~g_Ds+ ' , 1 , 2.200 , 2.103 , 2.043 , 2.255 , 0.000 , 2.235 , 2.043 , 2.255 , 0.000 ] , +# Bottom Gluino R-mesons + 1009513 : [ 1000021 , True , '~g_B0 ' , 0 , 5.000 , 5.047 , 5.043 , 5.862 , 0.000 , 5.098 , 5.043 , 5.862 , 0.000 ] , + 1009523 : [ 1000021 , True , '~g_B+ ' , 1 , 5.000 , 5.047 , 5.043 , 5.862 , 0.000 , 5.098 , 5.043 , 5.862 , 0.000 ] , + 1009533 : [ 1000021 , True , '~g_Bs0 ' , 0 , 5.200 , 5.198 , 5.198 , 6.041 , 0.000 , 5.262 , 5.198 , 6.041 , 0.000 ] , + 1009543 : [ 1000021 , True , '~g_Bc+ ' , 1 , 7.000 , 6.360 , 6.280 , 7.210 , 0.000 , 6.430 , 6.280 , 7.210 , 0.000 ] , +# Light-flavor singlet Gluino R-baryons + 1093214 : [ 1000021 , True , '~g_Lambda0 ' , 0 , 1.150 , 0.562 , 0.280 , 0.715 , 0.000 , 0.715 , 0.280 , 0.715 , 0.000 ] , +# Charm singlet Gluino R-baryons + 1094214 : [ 1000021 , True , '~g_Sigmac*+ ' , 1 , 2.300 , 1.726 , 1.489 , 1.885 , 0.000 , 1.885 , 1.489 , 1.885 , 0.000 ] , + 1094314 : [ 1000021 , True , '~g_Xic*0 ' , 0 , 2.300 , 1.878 , 1.688 , 2.050 , 0.000 , 2.050 , 1.688 , 2.050 , 0.000 ] , + 1094324 : [ 1000021 , True , '~g_Xic*+ ' , 1 , 2.300 , 1.878 , 1.688 , 2.050 , 0.000 , 2.050 , 1.688 , 2.050 , 0.000 ] , +# Bottom singlet Gluino R-baryons + 1095214 : [ 1000021 , True , '~g_Sigmab*0 ' , 0 , 5.600 , 4.826 , 4.796 , 5.660 , 0.000 , 4.915 , 4.796 , 5.660 , 0.000 ] , + 1095314 : [ 1000021 , True , '~g_Xib*- ' , -1 , 5.750 , 4.978 , 4.970 , 5.840 , 0.000 , 5.080 , 4.970 , 5.840 , 0.000 ] , + 1095324 : [ 1000021 , True , '~g_Xib*0 ' , 0 , 5.750 , 4.978 , 4.970 , 5.840 , 0.000 , 5.080 , 4.970 , 5.840 , 0.000 ] , +# Light flavor Gluino R-baryons + 1091114 : [ 1000021 , True , '~g_Delta- ' , -1 , 0.975 , 0.812 , 0.530 , 0.965 , 0.000 , 0.965 , 0.530 , 0.965 , 0.000 ] , + 1092114 : [ 1000021 , True , '~g_Delta0 ' , 0 , 0.975 , 0.812 , 0.530 , 0.965 , 0.000 , 0.965 , 0.530 , 0.965 , 0.000 ] , + 1092214 : [ 1000021 , True , '~g_Delta+ ' , 1 , 0.975 , 0.812 , 0.530 , 0.965 , 0.000 , 0.965 , 0.530 , 0.965 , 0.000 ] , + 1092224 : [ 1000021 , True , '~g_Delta++ ' , 2 , 0.975 , 0.812 , 0.530 , 0.965 , 0.000 , 0.965 , 0.530 , 0.965 , 0.000 ] , +# Strange Gluino R-baryons + 1093114 : [ 1000021 , True , '~g_Sigma*- ' , -1 , 1.150 , 1.094 , 0.858 , 1.260 , 0.000 , 1.260 , 0.858 , 1.260 , 0.000 ] , + 1093224 : [ 1000021 , True , '~g_Sigma*+ ' , 1 , 1.150 , 1.094 , 0.858 , 1.260 , 0.000 , 1.260 , 0.858 , 1.260 , 0.000 ] , + 1093314 : [ 1000021 , True , '~g_Xi*- ' , -1 , 1.300 , 1.246 , 1.058 , 1.440 , 0.000 , 1.425 , 1.058 , 1.440 , 0.000 ] , + 1093324 : [ 1000021 , True , '~g_Xi*0 ' , 0 , 1.300 , 1.246 , 1.058 , 1.440 , 0.000 , 1.425 , 1.058 , 1.440 , 0.000 ] , + 1093334 : [ 1000021 , True , '~g_Omega- ' , -1 , 1.600 , 1.398 , 1.257 , 1.620 , 0.000 , 1.590 , 1.257 , 1.620 , 0.000 ] , +# Charm Gluino R-baryons + 1094114 : [ 1000021 , True , '~g_Sigmac*0 ' , 0 , 2.300 , 2.258 , 2.068 , 2.430 , 0.000 , 2.430 , 2.068 , 2.430 , 0.000 ] , + 1094224 : [ 1000021 , True , '~g_Sigmac*++' , 2 , 2.300 , 2.258 , 2.068 , 2.430 , 0.000 , 2.430 , 2.068 , 2.430 , 0.000 ] , + 1094334 : [ 1000021 , True , '~g_Omegac*0 ' , 0 , 2.300 , 2.562 , 2.466 , 2.790 , 0.000 , 2.760 , 2.466 , 2.790 , 0.000 ] , +# Bottom Gluino R-baryons + 1095114 : [ 1000021 , True , '~g_Sigmab*- ' , -1 , 5.600 , 5.358 , 5.350 , 6.220 , 0.000 , 5.460 , 5.350 , 6.220 , 0.000 ] , + 1095224 : [ 1000021 , True , '~g_Sigmab*+ ' , 1 , 5.600 , 5.358 , 5.350 , 6.220 , 0.000 , 5.460 , 5.350 , 6.220 , 0.000 ] , + 1095334 : [ 1000021 , True , '~g_Omegab*- ' , -1 , 5.900 , 5.662 , 5.662 , 6.580 , 0.000 , 5.790 , 5.662 , 6.580 , 0.000 ] , + +# Sbottom R-mesons + 1000512 : [ 1000005 , True , '~B0 ' , 0 , 0.325 , 0.314 , 0.220 , 0.365 , 0.000 , 0.365 , 0.220 , 0.365 , 0.000 ] , + 1000522 : [ 1000005 , True , '~B- ' , -1 , 0.325 , 0.314 , 0.220 , 0.365 , 0.000 , 0.365 , 0.220 , 0.365 , 0.000 ] , + 1000532 : [ 1000005 , True , '~Bs0 ' , 0 , 0.500 , 0.466 , 0.419 , 0.540 , 0.000 , 0.530 , 0.419 , 0.540 , 0.000 ] , + 1000542 : [ 1000005 , True , '~Bc- ' , -1 , 1.500 , 1.630 , 1.550 , 1.710 , 0.000 , 1.700 , 1.550 , 1.710 , 0.000 ] , + 1000552 : [ 1000005 , True , '~etab0 ' , 0 , 4.800 , 4.730 , 4.730 , 5.500 , 0.000 , 4.730 , 4.730 , 5.500 , 0.000 ] , +# Sbottom R-baryons + 1005113 : [ 1000005 , True , '~Sigmab- ' , -1 , 0.650 , 0.671 , 0.529 , 0.762 , 0.000 , 0.762 , 0.529 , 0.762 , 0.000 ] , + 1005211 : [ 1000005 , True , '~Sigmab0 ' , 0 , 0.650 , 0.496 , 0.171 , 0.632 , 0.000 , 0.632 , 0.171 , 0.632 , 0.000 ] , + 1005213 : [ 1000005 , True , '~Sigmab*0 ' , 0 , 0.650 , 0.671 , 0.529 , 0.762 , 0.000 , 0.762 , 0.529 , 0.762 , 0.000 ] , + 1005223 : [ 1000005 , True , '~Sigmab+ ' , 1 , 0.650 , 0.671 , 0.529 , 0.762 , 0.000 , 0.762 , 0.529 , 0.762 , 0.000 ] , + 1005311 : [ 1000005 , True , '~Xib- ' , -1 , 0.825 , 0.691 , 0.497 , 0.833 , 0.000 , 0.827 , 0.497 , 0.833 , 0.000 ] , + 1005313 : [ 1000005 , True , '~Xib*- ' , -1 , 0.809 , 0.686 , 0.922 , 0.365 , 0.000 , 0.917 , 0.686 , 0.922 , 0.000 ] , + 1005321 : [ 1000005 , True , '~Xib0 ' , 0 , 0.825 , 0.691 , 0.497 , 0.833 , 0.000 , 0.827 , 0.497 , 0.833 , 0.000 ] , + 1005323 : [ 1000005 , True , '~Xib*0 ' , 0 , 0.809 , 0.686 , 0.922 , 0.365 , 0.000 , 0.917 , 0.686 , 0.922 , 0.000 ] , + 1005333 : [ 1000005 , True , '~Omegab- ' , -1 , 1.000 , 0.951 , 0.862 , 1.094 , 0.000 , 1.075 , 0.862 , 1.094 , 0.000 ] , +# Stop R-mesons + 1000612 : [ 1000006 , True , '~T+ ' , 1 , 0.325 , 0.314 , 0.220 , 0.365 , 0.000 , 0.365 , 0.220 , 0.365 , 0.000 ] , + 1000622 : [ 1000006 , True , '~T0 ' , 0 , 0.325 , 0.314 , 0.220 , 0.365 , 0.000 , 0.365 , 0.220 , 0.365 , 0.000 ] , + 1000632 : [ 1000006 , True , '~Ts+ ' , 1 , 0.500 , 0.466 , 0.419 , 0.540 , 0.000 , 0.530 , 0.419 , 0.540 , 0.000 ] , + 1000642 : [ 1000006 , True , '~Tc0 ' , 0 , 1.500 , 1.630 , 1.550 , 1.710 , 0.000 , 1.700 , 1.550 , 1.710 , 0.000 ] , + 1000652 : [ 1000006 , True , '~etat+ ' , 1 , 4.800 , 4.730 , 4.730 , 5.500 , 0.000 , 4.730 , 4.730 , 5.500 , 0.000 ] , +# Stop R-baryons + 1006113 : [ 1000006 , True , '~Sigmat0 ' , 0 , 0.650 , 0.671 , 0.529 , 0.762 , 0.000 , 0.762 , 0.529 , 0.762 , 0.000 ] , + 1006211 : [ 1000006 , True , '~Sigmat+ ' , 1 , 0.650 , 0.496 , 0.171 , 0.632 , 0.000 , 0.632 , 0.171 , 0.632 , 0.000 ] , + 1006213 : [ 1000006 , True , '~Sigmat*+ ' , 1 , 0.650 , 0.671 , 0.529 , 0.762 , 0.000 , 0.762 , 0.529 , 0.762 , 0.000 ] , + 1006223 : [ 1000006 , True , '~Sigmat++ ' , 2 , 0.650 , 0.671 , 0.529 , 0.762 , 0.000 , 0.762 , 0.529 , 0.762 , 0.000 ] , + 1006311 : [ 1000006 , True , '~Xit0 ' , 0 , 0.691 , 0.497 , 0.833 , 0.365 , 0.000 , 0.827 , 0.497 , 0.833 , 0.000 ] , + 1006313 : [ 1000006 , True , '~Xit*0 ' , 0 , 0.809 , 0.686 , 0.922 , 0.365 , 0.000 , 0.917 , 0.686 , 0.922 , 0.000 ] , + 1006321 : [ 1000006 , True , '~Xit+ ' , 1 , 0.691 , 0.497 , 0.833 , 0.365 , 0.000 , 0.827 , 0.497 , 0.833 , 0.000 ] , + 1006323 : [ 1000006 , True , '~Xit*+ ' , 1 , 0.809 , 0.686 , 0.922 , 0.365 , 0.000 , 0.917 , 0.686 , 0.922 , 0.000 ] , + 1006333 : [ 1000006 , True , '~Omegat0 ' , 0 , 1.000 , 0.951 , 0.862 , 1.094 , 0.000 , 1.075 , 0.862 , 1.094 , 0.000 ] , + } + +# Now programmatically calculate the missing spectra +for pid in offset_options: + # Skip fundamental SUSY particles and R-glueball + if offset_options[pid][0] == 0 or pid == 1000993: continue + # Setup #4 to be mass set #1 but with 1009113 matching mass set 5 + offset_options[pid][first_mass_set+4] = offset_options[pid][first_mass_set+1]+0.088 + # Setup #8 to be mass set #5 but with 1009113 matches mass set 2 + offset_options[pid][first_mass_set+8] = offset_options[pid][first_mass_set+5]-0.088 + + + +def charge( c ): + """ Function to return a PDG table formatted charge given an integer charge + Input is the charge either as a string or number + """ + n = int(c) + if n==0: return ' 0' + if n==1: return ' +' + if n==2: return '++' + if n==-1: return ' -' + if n==-2: return '--' + raise RuntimeError('Unexpected charge: '+str(n)) + + +def get_quarks( x ): + """ Function to return a list of quarks in a hadron + """ + # For mesons, just two quarks + if '00' in str(x): return str(x)[4:5] + # For baryons, three quarks + return str(x)[3:5] + + +def is_baryon( x ): + if '009' in str(x): return 0 # gluino meson + elif '09' in str(x): return 1 # gluino baryon + elif '006' in str(x): return 1 # stop baryon + elif '005' in str(x): return 1 # sbottom baryon + # Otherwise it's a meson + return 0 + + +def anti_name( x ): + """ Function to turn a particle name into an anti-particle name (mostly charge issues) + """ + # These look a little funny to get both + and ++ + if '*+' in x: return x.replace('*','bar*').replace('+','-') + if '*-' in x: return x.replace('*','bar*').replace('-','+') + if '++' in x: return x.replace('++','bar--') + if '--' in x: return x.replace('--','bar++') + if '+' in x: return x.replace('+','bar-') + if '-' in x: return x.replace('-','bar+') + if '*0' in x: return x.replace('*0','bar*0') + return x.replace('0','bar0') + + +def get_gluino_Rhadron_masses(input_file, mass_spectrum=1): + """ Function to return a dictionary of PDG IDs and masses based on an input param/SLHA/LHE file + First parameter: input file (string or file handle) + Second parameter: mass spectrum (enumeration value) + """ + # Expect a string file name or file handle + if type(input_file) not in [str,file]: + raise RuntimeError('Incorrect input file type: '+str(type(input_file))) + in_file = input_file if type(input_file)==file else open(input_file,'r') + + # Expect SLHA file format. Read for mass block, then look for relevant masses, then exit + masses = {} + mass_block = False + for l in in_file.readlines(): + # Are we entering the mass block? + if 'BLOCK' in l.upper().split('#')[0].split() and 'MASS' in l.upper().split('#')[0].split(): + mass_block = True + continue + # Otherwise, if we've not yet entered the mass block, keep reading + elif not mass_block: continue + # If we're past the mass block, then stop reading + if 'BLOCK' in l.upper().split('#')[0].split(): break + # Skip empty lines, comments, etc + if len(l.split('#')[0].split())<2: continue + pdg_id = int(l.split('#')[0].split()[0]) + # Set the input masses + if pdg_id in offset_options: + mass = float(l.split('#')[0].split()[1]) + # If we have decoupled the thing, don't include it! + if mass > 7e3: continue + # Otherwise, it goes in the list + masses[pdg_id] = mass + # Not an ID we care about otherwise! Skip! + # Done reading file; close if it's our responsibility + if type(input_file)==str: in_file.close() + + # Set the remainder of the masses + had_rhadron=False + for pid in offset_options: + # Skip fundamental particles - they should be read from the input file! + if offset_options[pid][0] == 0: continue + # Check if the constituent is in there (e.g. skip stop R-hadrons for gluino production) + if offset_options[pid][0] not in masses: continue + # Check if the mass spectrum is available + if mass_spectrum<0 or first_mass_set+mass_spectrum>len(offset_options[pid]): + raise RuntimeError("Unknown mass set requested: "+str(mass_spectrum)+" > number of options ("+str(len(offset_options[pid])-first_mass_set+1)+") for PID "+str(pid)) + # Add 'normal' R-hadron + masses[pid] = masses[ offset_options[pid][0] ] + offset_options[pid][first_mass_set+mass_spectrum] + # If needed, add anti-R-hadron + if offset_options[pid][1]: + masses[-pid] = masses[ offset_options[pid][0] ] + offset_options[pid][first_mass_set+mass_spectrum] + had_rhadron = True + + # Make sure we generated some R-hadrons + if not had_rhadron: + raise RuntimeError('No R-hadrons generated!') + + # Return the dictionary + return masses + + +def update_PDG_table(input_file, pdg_table, mass_spectrum=1): + """ Function to update a PDG table with R-hadron masses + First input parameter: input file (string or file handle) + Second input parameter: output PDG table (string or file handle) + Third input parameter: mass spectrum (enumeration value) + Gets R-hadron masses based on get_gluino_Rhadron_masses() + """ + # Check that we had the right output file type + if type(pdg_table) not in [str,file]: + raise RuntimeError('Incorrect output file type: '+str(type(pdg_table))) + # Get the masses that we need + masses = get_gluino_Rhadron_masses(input_file,mass_spectrum) + # Get the output file ready + # Open for appending (assume that's what was done if given a file handle) + out_file = pdg_table if type(pdg_table)==file else open(pdg_table,'a') + # Add all our R-hadrons to the table! + for pid in masses: + # For the PDG table, we only write positive-signed PDG ID particles + if pid<0: continue + # Note that we follow the Pythia6 convention of *including* fundamental SUSY particles + # The format is VERY specific; needs mass and width (we always set the width to 0) + # Mass is in MeV here, rather than GeV as in the dictionary + out_file.write('\nM %i %11.5E +0.0E+00 -0.0E+00 %s %s'%(pid,masses[pid]*1000.,offset_options[pid][2],charge(offset_options[pid][3]))) + out_file.write('\nW %i %11.5E +0.0E+00 -0.0E+00 %s %s'%(pid,0.E+00,offset_options[pid][2],charge(offset_options[pid][3]))) + + # Done writing all the lines! Clean up if necessary + if type(pdg_table) is str: out_file.close() + + # Nothing to return + + +def update_particle_table(input_file, particle_table='particles.txt', mass_spectrum=1): + """ Function to update a particle table with R-hadron masses + First input parameter: input file (string or file handle) + Second input parameter: output particle table (string or file handle) + Third input parameter: mass spectrum (enumeration value) + Gets R-hadron masses based on get_gluino_Rhadron_masses() + """ + # Check that we had the right output file type + if type(particle_table) not in [str,file]: + raise RuntimeError('Incorrect output file type: '+str(type(particle_table))) + # Get the masses that we need + masses = get_gluino_Rhadron_masses(input_file,mass_spectrum) + # Get the output file ready + # Open for appending (assume that's what was done if given a file handle) + out_file = particle_table if type(particle_table)==file else open(particle_table,'a') + # Add all our R-hadrons to the table! + # Note that we MUST write the primary first, followed by the compound particles + primaries = [] + extras = [] + for pid in masses: + if offset_options[abs(pid)][0]==0: extras += [pid] + elif not offset_options[abs(pid)][0] in primaries: primaries += [ offset_options[abs(pid)][0] ] + + # Rounds per primary + for p in primaries: + # Note that we follow the old convention of *including* fundamental SUSY particles + # The format is VERY specific; needs mass and width (we always set the width to 0) + # Mass is in MeV here, rather than GeV as in the dictionary + if p>0: out_file.write(' %i %04.3f # %s\n'%(p,masses[p],offset_options[abs(p)][2])) + # For the anti-particle, also need the anti-name + else: out_file.write(' %i %04.3f # %s\n'%(p,masses[p],anti_name(offset_options[abs(p)][2]))) + # Now include the secondaries + for pid in masses: + if offset_options[abs(pid)][0]!=p: continue + # Note that we follow the old convention of *including* fundamental SUSY particles + # The format is VERY specific; needs mass and width (we always set the width to 0) + # Mass is in MeV here, rather than GeV as in the dictionary + if pid>0: out_file.write(' %i %04.3f # %s\n'%(pid,masses[pid],offset_options[abs(pid)][2])) + # For the anti-particle, also need the anti-name + else: out_file.write(' %i %04.3f # %s\n'%(pid,masses[pid],anti_name(offset_options[abs(pid)][2]))) + # Done with secondaries for this primary + + for p in extras: + if p in primaries: continue + if p>0: out_file.write(' %i %04.3f # %s\n'%(p,masses[p],offset_options[abs(p)][2])) + # For the anti-particle, also need the anti-name + else: out_file.write(' %i %04.3f # %s\n'%(p,masses[p],anti_name(offset_options[abs(p)][2]))) + + # Done writing all the lines! Clean up if necessary + if type(particle_table) is str: out_file.close() + + # Nothing to return + + +def get_Pythia8_commands(input_file, mass_spectrum=1): + """ Function to return a list of Pythia8 commands to set up an R-hadron mass spectrum. + First input parameter: input file (string or file handle) + Second input parameter: mass spectrum (enumeration value) + """ + # Get the masses for this configuration + masses = get_gluino_Rhadron_masses(input_file,mass_spectrum) + # Tell Pythia8 we are going to use our own masses + commands = ['RHadrons:setMasses = off'] + + # Add commands to set all the masses + for pid in masses: + # Only set masses for particles (not anti-particles) + if pid<0: continue + # Actual command takes the form PDGID:m0 = somemass + commands += [ str(pid)+':m0 = '+str(masses[pid]) ] + + # All done! + return commands + + +def get_interaction_list(input_file, interaction_file='ProcessList.txt', mass_spectrum=1): + """ Function to write all possible interactiosn that we need + First input parameter: input file (string or file handle) + Second input parameter: output PDG table (string or file handle) + Third input parameter: mass spectrum (enumeration value) + Gets R-hadron masses based on get_gluino_Rhadron_masses() + """ + # Check that we had the right output file type + if type(interaction_file) not in [str,file]: + raise RuntimeError('Incorrect output file type: '+str(type(interaction_file))) + # Get the masses that we need. Note that we don't really need masses, just PDG IDs + masses = get_gluino_Rhadron_masses(input_file,mass_spectrum) + # Get the output file ready + # Open for appending (assume that's what was done if given a file handle) + out_file = interaction_file if type(interaction_file)==file else open(interaction_file,'a') + + # Helpful lists to move us along + sm_particles = { + # Name : Charge , Baryon # , Strangeness + 'pi0' : [ 0 , 0 , 0 ], + 'pi+' : [ 1 , 0 , 0 ], + 'pi-' : [ -1 , 0 , 0 ], + 'neutron' : [ 0 , 1 , 0 ], + 'proton' : [ 1 , 1 , 0 ], + 'kaon0' : [ 0 , 0 , 1 ], + 'anti_kaon0' : [ 0 , 0 , -1 ], + 'kaon+' : [ 1 , 0 , 1 ], + 'kaon-' : [ -1 , 0 , -1 ] + } + targets = [ 'proton' , 'neutron' ] + + incoming_rhadrons = {} + outgoing_rhadrons = {} + for pid in masses: + # Only for bound states + if offset_options[abs(pid)][0]==0: continue + # All of them are on the list of incoming RHadrons + # Deal with strangeness + # Approximation! Bottom number -> -Charm number -> Strangeness + # Approximation needed because I don't know how outgoing SM charms are treated in G4 at the moment + s_number = 0 + if '3' in get_quarks(pid) or '4' in get_quarks(pid) or '5' in get_quarks(pid): + if len(get_quarks(pid))>2: + s_number = -(get_quarks(pid).count('3')+get_quarks(pid).count('4')+get_quarks(pid).count('5')) if pid>0 else get_quarks(pid).count('3')+get_quarks(pid).count('4')+get_quarks(pid).count('5') + else: + if get_quarks(pid).count('3') + get_quarks(pid).count('4') + get_quarks(pid).count('5')>1: s_number=0 + elif offset_options[abs(pid)][3]==0 and ('3' in get_quarks(pid) or '5' in get_quarks(pid)): s_number=1 if pid>0 else -1 + elif offset_options[abs(pid)][3]==0 and '4' in get_quarks(pid): s_number=1 if pid<0 else -1 + elif '3' in get_quarks(pid) or '5' in get_quarks(pid): s_number=offset_options[abs(pid)][3] + elif '4' in get_quarks(pid): s_number=-offset_options[abs(pid)][3] + else: s_number=0 + # Build the dictionary + pid_name = offset_options[pid][2].strip() if pid>0 else anti_name(offset_options[abs(pid)][2]).strip() + incoming_rhadrons[pid_name] = [ offset_options[abs(pid)][3] , is_baryon(pid) , s_number ] + # Smaller list of outgoing rhadrons. + # No charm or bottom + if '4' in get_quarks(pid) or '5' in get_quarks(pid): continue + outgoing_rhadrons[pid_name] = [ offset_options[abs(pid)][3] , is_baryon(pid) , s_number ] + + # Add all our R-hadrons to the table + for proj in incoming_rhadrons: + # Loop over targets + for t in targets: + # Loop over possible outgoing R-hadrons + for orhad in outgoing_rhadrons: + # Possible 2>2 reactions + for osm1 in sm_particles: + # Check for charge conservation + total_charge = incoming_rhadrons[proj][0]+sm_particles[t][0]-outgoing_rhadrons[orhad][0]-sm_particles[osm1][0] + # Check for baryon number conservation + total_bnumber = incoming_rhadrons[proj][1]+sm_particles[t][1]-outgoing_rhadrons[orhad][1]-sm_particles[osm1][1] + # Check for strangeness conservation + total_snumber = incoming_rhadrons[proj][2]+sm_particles[t][2]-outgoing_rhadrons[orhad][2]-sm_particles[osm1][2] + # Check if it's an allowed reaction + if total_charge==0 and total_bnumber==0 and total_snumber==0: + out_file.write( ' # '.join([str(proj),str(t),str(orhad),str(osm1)])+'\n' ) + # Now loop over possible 2>3 reactions + for osm2 in sm_particles: + # Check for charge conservation + total_charge = incoming_rhadrons[proj][0]+sm_particles[t][0]-outgoing_rhadrons[orhad][0]-sm_particles[osm1][0]-sm_particles[osm2][0] + # Check for baryon number conservation + total_bnumber = incoming_rhadrons[proj][1]+sm_particles[t][1]-outgoing_rhadrons[orhad][1]-sm_particles[osm1][1]-sm_particles[osm2][1] + # Check for strangeness conservation + total_snumber = incoming_rhadrons[proj][2]+sm_particles[t][2]-outgoing_rhadrons[orhad][2]-sm_particles[osm1][2]-sm_particles[osm2][2] + # Check if it's an allowed reaction + if total_charge==0 and total_bnumber==0 and total_snumber==0: + out_file.write( ' # '.join([str(proj),str(t),str(orhad),str(osm1),str(osm2)])+'\n' ) + # Wrote out the reaction + # Loop over 2>3 + # Loop over 2>2 + # Loop over outgoing RHadrons + # Loop over targets + # Loop over projectiles + + # Done writing all the lines! Clean up if necessary + if type(interaction_file) is str: out_file.close() + + # Nothing to return + + +def print_masses(spectrum=-1): + """ Print the mass spectra. + Input parameter: spectrum number. If -1, print all spectra. + """ + for i in sorted(offset_options.keys()): + s= str(offset_options[i][2])+' '+str(i) + if spectrum<0: + for j in xrange(first_mass_set,len(offset_options[i])): s+=' '+str(offset_options[i][j]) + else: + if first_mass_set+spectrum>len(offset_options[i]): + raise RuntimeError('Spectrum #'+str(spectrum)+' not known for PID '+str(i)) + else: + s+=' '+str(offset_options[i][spectrum+first_mass_set]) + print s + # Done! diff --git a/Simulation/G4Extensions/RHadrons/python/RHadronsConfig.py b/Simulation/G4Extensions/RHadrons/python/RHadronsConfig.py index 7836a5cd34fd9f94476d0634ff014f945f28c769..e72e7c5a909ba352c5c2f356c12aa4545d563222 100644 --- a/Simulation/G4Extensions/RHadrons/python/RHadronsConfig.py +++ b/Simulation/G4Extensions/RHadrons/python/RHadronsConfig.py @@ -11,5 +11,14 @@ def getSG_StepNtupleTool(name="G4UA::SG_StepNtupleTool", **kwargs): #from AthenaCommon.AppMgr import theApp #theApp.exit(1) return False + # Get the PDG IDs for RHadrons + from RHadronMasses import offset_options + kwargs.setdefault('RHadronPDGIDList',offset_options.keys()) + if name in simFlags.UserActionConfig.get_Value().keys(): + for prop,value in simFlags.UserActionConfig.get_Value()[name].iteritems(): + kwargs.setdefault(prop,value) from RHadrons.RHadronsConf import G4UA__SG_StepNtupleTool return G4UA__SG_StepNtupleTool(name, **kwargs) + +def getRHadronsPhysicsTool(name='RHadronsPhysicsTool', **kwargs): + return CfgMgr.RHadronsPhysicsTool(name,**kwargs) diff --git a/Simulation/G4Extensions/RHadrons/python/RHadronsConfigDb.py b/Simulation/G4Extensions/RHadrons/python/RHadronsConfigDb.py index 9751a4f9f142a520f355ebb8b8d564adc7753d64..c8b300560fa9befaefec30bdb182269d26f0b6db 100644 --- a/Simulation/G4Extensions/RHadrons/python/RHadronsConfigDb.py +++ b/Simulation/G4Extensions/RHadrons/python/RHadronsConfigDb.py @@ -3,4 +3,4 @@ from AthenaCommon.CfgGetter import addTool addTool("RHadrons.RHadronsConfig.getSG_StepNtupleTool", "G4UA::SG_StepNtupleTool") - +addTool("RHadrons.RHadronsConfig.getRHadronsPhysicsTool", "RHadronsPhysicsTool") diff --git a/Simulation/G4Extensions/RHadrons/share/PhysicsConfiguration_generic.txt b/Simulation/G4Extensions/RHadrons/share/PhysicsConfiguration_generic.txt deleted file mode 100644 index 313551cf0c9869fc8e033b05f31c1ef1db89520b..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/PhysicsConfiguration_generic.txt +++ /dev/null @@ -1,9 +0,0 @@ -Resonant = 0. -XsecMultiplier = 1. -ResonanceEnergy = 200. -Gamma = 0.1 -Amplitude = 100. -ReggeSuppression = 0. -HadronLifeTime = 100. -ReggeModel = 0. -Mixing = 0. diff --git a/Simulation/G4Extensions/RHadrons/share/PhysicsConfiguration_regge.txt b/Simulation/G4Extensions/RHadrons/share/PhysicsConfiguration_regge.txt deleted file mode 100644 index 26a94d62713d66f4ff886829e0803e368e61acb1..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/PhysicsConfiguration_regge.txt +++ /dev/null @@ -1,9 +0,0 @@ -Resonant = 0. -XsecMultiplier = 1. -ResonanceEnergy = 200. -Gamma = 0.1 -Amplitude = 100. -ReggeSuppression = 0. -HadronLifeTime = 100. -ReggeModel = 1. -Mixing = 1. diff --git a/Simulation/G4Extensions/RHadrons/share/PhysicsConfiguration_regge_nomix.txt b/Simulation/G4Extensions/RHadrons/share/PhysicsConfiguration_regge_nomix.txt deleted file mode 100644 index 816a0814bfc38aed73b8f156b7ededb4776f881a..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/PhysicsConfiguration_regge_nomix.txt +++ /dev/null @@ -1,9 +0,0 @@ -Resonant = 0. -XsecMultiplier = 1. -ResonanceEnergy = 200. -Gamma = 0.1 -Amplitude = 100. -ReggeSuppression = 0. -HadronLifeTime = 100. -ReggeModel = 1. -Mixing = 0. diff --git a/Simulation/G4Extensions/RHadrons/share/ProcessList_generic_gluino.txt b/Simulation/G4Extensions/RHadrons/share/ProcessList_generic_gluino.txt deleted file mode 100644 index c6ae15ef1abf68f48bf8827191fd23628ae8e7d7..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/ProcessList_generic_gluino.txt +++ /dev/null @@ -1,487 +0,0 @@ -~g_rho+ # proton # ~g_rho+ # proton -~g_rho0 # proton # ~g_rho0 # proton -~g_rho- # proton # ~g_rho- # proton -~g_rho+ # proton # ~g_Delta++ # pi0 -~g_rho0 # proton # ~g_rho+ # neutron -~g_rho- # proton # ~g_rho0 # neutron -~g_rho+ # proton # ~g_Delta+ # pi+ -~g_rho0 # proton # ~g_Delta++ # pi- -~g_rho- # proton # ~g_Delta+ # pi- -~g_rho0 # proton # ~g_Delta+ # pi0 -~g_rho- # proton # ~g_Delta0 # pi0 -~g_rho0 # proton # ~g_Delta0 # pi+ -~g_rho+ # neutron # ~g_rho+ # neutron -~g_rho0 # neutron # ~g_rho0 # neutron -~g_rho- # neutron # ~g_rho- # neutron -~g_rho+ # neutron # ~g_rho0 # proton -~g_rho0 # neutron # ~g_rho- # proton -~g_rho- # neutron # ~g_rho0 # pi- -~g_rho+ # neutron # ~g_Delta++ # pi- -~g_rho0 # neutron # ~g_Delta+ # pi- -~g_rho- # neutron # ~g_Delta0 # pi- -~g_rho+ # neutron # ~g_Delta+ # pi0 -~g_rho0 # neutron # ~g_Delta0 # pi0 -~g_rho0 # neutron # ~g_Delta- # pi0 -~g_rho+ # neutron # ~g_Delta0 # pi+ -~g_rho0 # neutron # ~g_Delta- # pi+ -~g_rho+ # proton # ~g_rho+ # proton # pi0 -~g_rho0 # proton # ~g_rho0 # proton # pi0 -~g_rho- # proton # ~g_rho- # proton # pi0 -~g_rho0 # proton # ~g_rho+ # neutron # pi+ -~g_rho0 # proton # ~g_rho0 # neutron # pi+ -~g_rho- # proton # ~g_rho- # neutron # pi+ -~g_rho+ # proton # ~g_rho0 # proton # pi+ -~g_rho0 # proton # ~g_rho+ # proton # pi- -~g_rho- # proton # ~g_rho+ # neutron # pi- -~g_rho+ # proton # ~g_Delta++ # pi0 # pi0 -~g_rho0 # proton # ~g_rho+ # neutron # pi0 -~g_rho- # proton # ~g_rho0 # proton # pi- -~g_rho+ # proton # ~g_Delta++ # pi+ # pi- -~g_rho0 # proton # ~g_rho- # proton # pi+ -~g_rho- # proton # ~g_rho0 # neutron # pi0 -~g_rho+ # proton # ~g_Delta+ # pi+ # pi0 -~g_rho0 # proton # ~g_Delta++ # pi0 # pi- -~g_rho- # proton # ~g_Delta++ # pi- # pi- -~g_rho+ # proton # ~g_Delta0 # pi+ # pi+ -~g_rho0 # proton # ~g_Delta+ # pi0 # pi0 -~g_rho- # proton # ~g_Delta+ # pi0 # pi- -~g_rho0 # proton # ~g_Delta+ # pi+ # pi- -~g_rho- # proton # ~g_Delta0 # pi0 # pi0 -~g_rho0 # proton # ~g_Delta0 # pi+ # pi0 -~g_rho- # proton # ~g_Delta0 # pi+ # pi- -~g_rho0 # proton # ~g_Delta- # pi+ # pi+ -~g_rho- # proton # ~g_Delta- # pi+ # pi0 -~g_rho+ # neutron # ~g_rho+ # neutron # pi0 -~g_rho0 # neutron # ~g_rho0 # neutron # pi0 -~g_rho- # neutron # ~g_rho- # neutron # pi0 -~g_rho+ # neutron # ~g_rho+ # proton # pi- -~g_rho0 # neutron # ~g_rho0 # proton # pi- -~g_rho- # neutron # ~g_rho- # proton # pi- -~g_rho+ # neutron # ~g_rho0 # proton # pi0 -~g_rho0 # neutron # ~g_rho+ # neutron # pi- -~g_rho- # neutron # ~g_rho0 # neutron # pi- -~g_rho+ # neutron # ~g_rho0 # neutron # pi+ -~g_rho0 # neutron # ~g_rho- # proton # pi0 -~g_rho- # neutron # ~g_Delta+ # pi- # pi- -~g_rho+ # neutron # ~g_rho- # proton # pi+ -~g_rho0 # neutron # ~g_rho- # neutron # pi+ -~g_rho- # neutron # ~g_Delta0 # pi- # pi0 -~g_rho+ # neutron # ~g_Delta++ # pi0 # pi- -~g_rho0 # neutron # ~g_Delta++ # pi- # pi- -~g_rho- # neutron # ~g_Delta- # pi0 # pi0 -~g_rho+ # neutron # ~g_Delta+ # pi0 # pi0 -~g_rho0 # neutron # ~g_Delta+ # pi- # pi0 -~g_rho- # neutron # ~g_Delta- # pi+ # pi- -~g_rho+ # neutron # ~g_Delta+ # pi+ # pi- -~g_rho0 # neutron # ~g_Delta0 # pi0 # pi0 -~g_rho+ # neutron # ~g_Delta0 # pi+ # pi0 -~g_rho0 # neutron # ~g_Delta0 # pi+ # pi- -~g_rho+ # neutron # ~g_Delta- # pi+ # pi+ -~g_rho0 # neutron # ~g_Delta- # pi+ # pi0 -~g_Delta++ # proton # ~g_Delta++ # proton -~g_Delta+ # proton # ~g_Delta+ # proton -~g_Delta0 # proton # ~g_Delta0 # proton -~g_Delta- # proton # ~g_Delta- # proton -~g_Delta+ # proton # ~g_Delta++ # neutron -~g_Delta0 # proton # ~g_Delta+ # neutron -~g_Delta- # proton # ~g_Delta0 # neutron -~g_Delta++ # neutron # ~g_Delta++ # neutron -~g_Delta+ # neutron # ~g_Delta+ # neutron -~g_Delta0 # neutron # ~g_Delta0 # neutron -~g_Delta- # neutron # ~g_Delta- # neutron -~g_Delta++ # neutron # ~g_Delta+ # proton -~g_Delta+ # neutron # ~g_Delta0 # proton -~g_Delta0 # neutron # ~g_Delta- # proton -~g_Delta++ # proton # ~g_Delta++ # proton # pi0 -~g_Delta+ # proton # ~g_Delta+ # proton # pi0 -~g_Delta0 # proton # ~g_Delta0 # proton # pi0 -~g_Delta- # proton # ~g_Delta- # proton # pi0 -~g_Delta++ # proton # ~g_Delta++ # neutron # pi+ -~g_Delta+ # proton # ~g_Delta+ # neutron # pi+ -~g_Delta0 # proton # ~g_Delta0 # neutron # pi+ -~g_Delta- # proton # ~g_Delta- # neutron # pi+ -~g_Delta++ # proton # ~g_Delta+ # proton # pi+ -~g_Delta+ # proton # ~g_Delta++ # neutron # pi0 -~g_Delta0 # proton # ~g_Delta+ # neutron # pi0 -~g_Delta- # proton # ~g_Delta+ # proton # pi+ -~g_Delta+ # proton # ~g_Delta++ # proton # pi- -~g_Delta0 # proton # ~g_Delta+ # proton # pi- -~g_Delta- # proton # ~g_Delta0 # proton # pi- -~g_Delta+ # proton # ~g_Delta0 # proton # pi+ -~g_Delta0 # proton # ~g_Delta- # proton # pi+ -~g_Delta- # proton # ~g_Delta0 # neutron # pi0 -~g_Delta++ # neutron # ~g_Delta++ # neutron # pi0 -~g_Delta+ # neutron # ~g_Delta+ # neutron # pi0 -~g_Delta0 # neutron # ~g_Delta0 # neutron # pi0 -~g_Delta- # neutron # ~g_Delta- # neutron # pi0 -~g_Delta++ # neutron # ~g_Delta++ # proton # pi- -~g_Delta+ # neutron # ~g_Delta+ # proton # pi- -~g_Delta0 # neutron # ~g_Delta0 # proton # pi- -~g_Delta- # neutron # ~g_Delta- # proton # pi- -~g_Delta++ # neutron # ~g_Delta+ # proton # pi0 -~g_Delta+ # neutron # ~g_Delta++ # neutron # pi- -~g_Delta0 # neutron # ~g_Delta+ # neutron # pi- -~g_Delta- # neutron # ~g_Delta0 # neutron # pi- -~g_Delta++ # neutron # ~g_Delta+ # neutron # pi+ -~g_Delta+ # neutron # ~g_Delta0 # proton # pi0 -~g_Delta0 # neutron # ~g_Delta- # neutron # pi+ -~g_Delta++ # neutron # ~g_Delta0 # proton # pi+ -~g_Delta+ # neutron # ~g_Delta0 # neutron # pi+ -~g_Delta+ # neutron # ~g_Delta- # proton # pi+ -~g_K*+ # proton # ~g_rho+ # proton -~g_K*+ # proton # ~g_Delta++ # pi0 -~g_K*+ # proton # ~g_Delta+ # pi+ -~g_K*+ # neutron # ~g_rho+ # neutron -~g_K*+ # neutron # ~g_rho0 # proton -~g_K*+ # neutron # ~g_Delta++ # pi- -~g_K*+ # neutron # ~g_Delta+ # pi0 -~g_K*+ # neutron # ~g_Delta0 # pi+ -~g_K*+ # proton # ~g_rho+ # proton # pi0 -~g_K*+ # proton # ~g_rho0 # proton # pi+ -~g_K*+ # proton # ~g_Delta++ # pi0 # pi0 -~g_K*+ # proton # ~g_Delta++ # pi+ # pi- -~g_K*+ # proton # ~g_Delta+ # pi+ # pi0 -~g_K*+ # proton # ~g_Delta0 # pi+ # pi+ -~g_K*+ # neutron # ~g_rho+ # neutron # pi0 -~g_K*+ # neutron # ~g_rho+ # proton # pi- -~g_K*+ # neutron # ~g_rho0 # proton # pi0 -~g_K*+ # neutron # ~g_rho0 # neutron # pi+ -~g_K*+ # neutron # ~g_rho- # proton # pi+ -~g_K*+ # neutron # ~g_Delta++ # pi0 # pi- -~g_K*+ # neutron # ~g_Delta+ # pi0 # pi0 -~g_K*+ # neutron # ~g_Delta+ # pi+ # pi- -~g_K*+ # neutron # ~g_Delta0 # pi+ # pi0 -~g_K*+ # neutron # ~g_Delta- # pi+ # pi+ -~g_K*0 # proton # ~g_rho0 # proton -~g_K*0 # proton # ~g_rho+ # neutron -~g_K*0 # proton # ~g_Delta++ # pi- -~g_K*0 # proton # ~g_Delta+ # pi0 -~g_K*0 # proton # ~g_Delta0 # pi+ -~g_K*0 # neutron # ~g_rho0 # neutron -~g_K*0 # neutron # ~g_rho- # proton -~g_K*0 # neutron # ~g_Delta+ # pi- -~g_K*0 # neutron # ~g_Delta0 # pi0 -~g_K*0 # neutron # ~g_Delta- # pi0 -~g_K*0 # neutron # ~g_Delta- # pi+ -~g_K*0 # proton # ~g_rho0 # proton # pi0 -~g_K*0 # proton # ~g_rho+ # neutron # pi+ -~g_K*0 # proton # ~g_rho0 # neutron # pi+ -~g_K*0 # proton # ~g_rho+ # proton # pi- -~g_K*0 # proton # ~g_rho+ # neutron # pi0 -~g_K*0 # proton # ~g_rho- # proton # pi+ -~g_K*0 # proton # ~g_Delta++ # pi0 # pi- -~g_K*0 # proton # ~g_Delta+ # pi0 # pi0 -~g_K*0 # proton # ~g_Delta+ # pi+ # pi- -~g_K*0 # proton # ~g_Delta0 # pi+ # pi0 -~g_K*0 # proton # ~g_Delta- # pi+ # pi+ -~g_K*0 # neutron # ~g_rho0 # neutron # pi0 -~g_K*0 # neutron # ~g_rho0 # proton # pi- -~g_K*0 # neutron # ~g_rho+ # neutron # pi- -~g_K*0 # neutron # ~g_rho- # proton # pi0 -~g_K*0 # neutron # ~g_rho- # neutron # pi+ -~g_K*0 # neutron # ~g_Delta++ # pi- # pi- -~g_K*0 # neutron # ~g_Delta+ # pi- # pi0 -~g_K*0 # neutron # ~g_Delta0 # pi0 # pi0 -~g_K*0 # neutron # ~g_Delta0 # pi+ # pi- -~g_K*0 # neutron # ~g_Delta- # pi+ # pi0 -~g_omega # proton # ~g_rho0 # proton -~g_omega # proton # ~g_rho+ # neutron -~g_omega # proton # ~g_Delta++ # pi- -~g_omega # proton # ~g_Delta+ # pi0 -~g_omega # proton # ~g_Delta0 # pi+ -~g_omega # neutron # ~g_rho0 # neutron -~g_omega # neutron # ~g_rho- # proton -~g_omega # neutron # ~g_Delta+ # pi- -~g_omega # neutron # ~g_Delta0 # pi0 -~g_omega # neutron # ~g_Delta- # pi0 -~g_omega # neutron # ~g_Delta- # pi+ -~g_omega # proton # ~g_rho0 # proton # pi0 -~g_omega # proton # ~g_rho+ # neutron # pi+ -~g_omega # proton # ~g_rho0 # neutron # pi+ -~g_omega # proton # ~g_rho+ # proton # pi- -~g_omega # proton # ~g_rho+ # neutron # pi0 -~g_omega # proton # ~g_rho- # proton # pi+ -~g_omega # proton # ~g_Delta++ # pi0 # pi- -~g_omega # proton # ~g_Delta+ # pi0 # pi0 -~g_omega # proton # ~g_Delta+ # pi+ # pi- -~g_omega # proton # ~g_Delta0 # pi+ # pi0 -~g_omega # proton # ~g_Delta- # pi+ # pi+ -~g_omega # neutron # ~g_rho0 # neutron # pi0 -~g_omega # neutron # ~g_rho0 # proton # pi- -~g_omega # neutron # ~g_rho+ # neutron # pi- -~g_omega # neutron # ~g_rho- # proton # pi0 -~g_omega # neutron # ~g_rho- # neutron # pi+ -~g_omega # neutron # ~g_Delta++ # pi- # pi- -~g_omega # neutron # ~g_Delta+ # pi- # pi0 -~g_omega # neutron # ~g_Delta0 # pi0 # pi0 -~g_omega # neutron # ~g_Delta0 # pi+ # pi- -~g_omega # neutron # ~g_Delta- # pi+ # pi0 -~g_phi # proton # ~g_rho0 # proton -~g_phi # proton # ~g_rho+ # neutron -~g_phi # proton # ~g_Delta++ # pi- -~g_phi # proton # ~g_Delta+ # pi0 -~g_phi # proton # ~g_Delta0 # pi+ -~g_phi # neutron # ~g_rho0 # neutron -~g_phi # neutron # ~g_rho- # proton -~g_phi # neutron # ~g_Delta+ # pi- -~g_phi # neutron # ~g_Delta0 # pi0 -~g_phi # neutron # ~g_Delta- # pi0 -~g_phi # neutron # ~g_Delta- # pi+ -~g_phi # proton # ~g_rho0 # proton # pi0 -~g_phi # proton # ~g_rho+ # neutron # pi+ -~g_phi # proton # ~g_rho0 # neutron # pi+ -~g_phi # proton # ~g_rho+ # proton # pi- -~g_phi # proton # ~g_rho+ # neutron # pi0 -~g_phi # proton # ~g_rho- # proton # pi+ -~g_phi # proton # ~g_Delta++ # pi0 # pi- -~g_phi # proton # ~g_Delta+ # pi0 # pi0 -~g_phi # proton # ~g_Delta+ # pi+ # pi- -~g_phi # proton # ~g_Delta0 # pi+ # pi0 -~g_phi # proton # ~g_Delta- # pi+ # pi+ -~g_phi # neutron # ~g_rho0 # neutron # pi0 -~g_phi # neutron # ~g_rho0 # proton # pi- -~g_phi # neutron # ~g_rho+ # neutron # pi- -~g_phi # neutron # ~g_rho- # proton # pi0 -~g_phi # neutron # ~g_rho- # neutron # pi+ -~g_phi # neutron # ~g_Delta++ # pi- # pi- -~g_phi # neutron # ~g_Delta+ # pi- # pi0 -~g_phi # neutron # ~g_Delta0 # pi0 # pi0 -~g_phi # neutron # ~g_Delta0 # pi+ # pi- -~g_phi # neutron # ~g_Delta- # pi+ # pi0 -~g_Sigma*- # proton # ~g_Delta- # proton -~g_Sigma*- # proton # ~g_Delta0 # neutron -~g_Sigma*- # neutron # ~g_Delta- # neutron -~g_Sigma*- # proton # ~g_Delta- # proton # pi0 -~g_Sigma*- # proton # ~g_Delta- # neutron # pi+ -~g_Sigma*- # proton # ~g_Delta+ # proton # pi+ -~g_Sigma*- # proton # ~g_Delta0 # proton # pi- -~g_Sigma*- # proton # ~g_Delta0 # neutron # pi0 -~g_Sigma*- # neutron # ~g_Delta- # neutron # pi0 -~g_Sigma*- # neutron # ~g_Delta- # proton # pi- -~g_Sigma*- # neutron # ~g_Delta0 # neutron # pi- -~g_Sigma*0 # proton # ~g_Delta0 # proton -~g_Sigma*0 # proton # ~g_Delta+ # neutron -~g_Sigma*0 # neutron # ~g_Delta0 # neutron -~g_Sigma*0 # neutron # ~g_Delta- # proton -~g_Sigma*0 # proton # ~g_Delta0 # proton # pi0 -~g_Sigma*0 # proton # ~g_Delta0 # neutron # pi+ -~g_Sigma*0 # proton # ~g_Delta+ # neutron # pi0 -~g_Sigma*0 # proton # ~g_Delta+ # proton # pi- -~g_Sigma*0 # proton # ~g_Delta- # proton # pi+ -~g_Sigma*0 # neutron # ~g_Delta0 # neutron # pi0 -~g_Sigma*0 # neutron # ~g_Delta0 # proton # pi- -~g_Sigma*0 # neutron # ~g_Delta+ # neutron # pi- -~g_Sigma*0 # neutron # ~g_Delta- # neutron # pi+ -~g_Sigma*+ # proton # ~g_Delta+ # proton -~g_Sigma*+ # proton # ~g_Delta++ # neutron -~g_Sigma*+ # neutron # ~g_Delta+ # neutron -~g_Sigma*+ # neutron # ~g_Delta0 # proton -~g_Sigma*+ # proton # ~g_Delta+ # proton # pi0 -~g_Sigma*+ # proton # ~g_Delta+ # neutron # pi+ -~g_Sigma*+ # proton # ~g_Delta++ # neutron # pi0 -~g_Sigma*+ # proton # ~g_Delta++ # proton # pi- -~g_Sigma*+ # proton # ~g_Delta0 # proton # pi+ -~g_Sigma*+ # neutron # ~g_Delta+ # neutron # pi0 -~g_Sigma*+ # neutron # ~g_Delta+ # proton # pi- -~g_Sigma*+ # neutron # ~g_Delta++ # neutron # pi- -~g_Sigma*+ # neutron # ~g_Delta0 # proton # pi0 -~g_Sigma*+ # neutron # ~g_Delta0 # neutron # pi+ -~g_Sigma*+ # neutron # ~g_Delta- # proton # pi+ -~g_Xi*- # proton # ~g_Delta- # proton -~g_Xi*- # proton # ~g_Delta0 # neutron -~g_Xi*- # neutron # ~g_Delta- # neutron -~g_Xi*- # proton # ~g_Delta- # proton # pi0 -~g_Xi*- # proton # ~g_Delta- # neutron # pi+ -~g_Xi*- # proton # ~g_Delta+ # proton # pi+ -~g_Xi*- # proton # ~g_Delta0 # proton # pi- -~g_Xi*- # proton # ~g_Delta0 # neutron # pi0 -~g_Xi*- # neutron # ~g_Delta- # neutron # pi0 -~g_Xi*- # neutron # ~g_Delta- # proton # pi- -~g_Xi*- # neutron # ~g_Delta0 # neutron # pi- -~g_Xi*0 # proton # ~g_Delta0 # proton -~g_Xi*0 # proton # ~g_Delta+ # neutron -~g_Xi*0 # neutron # ~g_Delta0 # neutron -~g_Xi*0 # neutron # ~g_Delta- # proton -~g_Xi*0 # proton # ~g_Delta0 # proton # pi0 -~g_Xi*0 # proton # ~g_Delta0 # neutron # pi+ -~g_Xi*0 # proton # ~g_Delta+ # neutron # pi0 -~g_Xi*0 # proton # ~g_Delta+ # proton # pi- -~g_Xi*0 # proton # ~g_Delta- # proton # pi+ -~g_Xi*0 # neutron # ~g_Delta0 # neutron # pi0 -~g_Xi*0 # neutron # ~g_Delta0 # proton # pi- -~g_Xi*0 # neutron # ~g_Delta+ # neutron # pi- -~g_Xi*0 # neutron # ~g_Delta- # neutron # pi+ -~g_Omega- # proton # ~g_Delta- # proton -~g_Omega- # proton # ~g_Delta0 # neutron -~g_Omega- # neutron # ~g_Delta- # neutron -~g_Omega- # proton # ~g_Delta- # proton # pi0 -~g_Omega- # proton # ~g_Delta- # neutron # pi+ -~g_Omega- # proton # ~g_Delta+ # proton # pi+ -~g_Omega- # proton # ~g_Delta0 # proton # pi- -~g_Omega- # proton # ~g_Delta0 # neutron # pi0 -~g_Omega- # neutron # ~g_Delta- # neutron # pi0 -~g_Omega- # neutron # ~g_Delta- # proton # pi- -~g_Omega- # neutron # ~g_Delta0 # neutron # pi- -~g_K*- # proton # ~g_rho- # proton -~g_K*- # proton # ~g_rho0 # neutron -~g_K*- # proton # ~g_Delta+ # pi- -~g_K*- # proton # ~g_Delta0 # pi0 -~g_K*- # neutron # ~g_rho- # neutron -~g_K*- # neutron # ~g_rho0 # pi- -~g_K*- # neutron # ~g_Delta0 # pi- -~g_K*- # proton # ~g_rho- # proton # pi0 -~g_K*- # proton # ~g_rho- # neutron # pi+ -~g_K*- # proton # ~g_rho+ # neutron # pi- -~g_K*- # proton # ~g_rho0 # proton # pi- -~g_K*- # proton # ~g_rho0 # neutron # pi0 -~g_K*- # proton # ~g_Delta++ # pi- # pi- -~g_K*- # proton # ~g_Delta+ # pi0 # pi- -~g_K*- # proton # ~g_Delta0 # pi0 # pi0 -~g_K*- # proton # ~g_Delta0 # pi+ # pi- -~g_K*- # proton # ~g_Delta- # pi+ # pi0 -~g_K*- # neutron # ~g_rho- # neutron # pi0 -~g_K*- # neutron # ~g_rho- # proton # pi- -~g_K*- # neutron # ~g_rho0 # neutron # pi- -~g_K*- # neutron # ~g_Delta+ # pi- # pi- -~g_K*- # neutron # ~g_Delta0 # pi- # pi0 -~g_K*- # neutron # ~g_Delta- # pi0 # pi0 -~g_K*- # neutron # ~g_Delta- # pi+ # pi- -~g_glueball # proton # ~g_rho0 # proton -~g_glueball # proton # ~g_rho+ # neutron -~g_glueball # proton # ~g_Delta++ # pi- -~g_glueball # proton # ~g_Delta+ # pi0 -~g_glueball # proton # ~g_Delta0 # pi+ -~g_glueball # neutron # ~g_rho0 # neutron -~g_glueball # neutron # ~g_rho- # proton -~g_glueball # neutron # ~g_Delta+ # pi- -~g_glueball # neutron # ~g_Delta0 # pi0 -~g_glueball # neutron # ~g_Delta- # pi0 -~g_glueball # neutron # ~g_Delta- # pi+ -~g_glueball # proton # ~g_rho0 # proton # pi0 -~g_glueball # proton # ~g_rho+ # neutron # pi+ -~g_glueball # proton # ~g_rho0 # neutron # pi+ -~g_glueball # proton # ~g_rho+ # proton # pi- -~g_glueball # proton # ~g_rho+ # neutron # pi0 -~g_glueball # proton # ~g_rho- # proton # pi+ -~g_glueball # proton # ~g_Delta++ # pi0 # pi- -~g_glueball # proton # ~g_Delta+ # pi0 # pi0 -~g_glueball # proton # ~g_Delta+ # pi+ # pi- -~g_glueball # proton # ~g_Delta0 # pi+ # pi0 -~g_glueball # proton # ~g_Delta- # pi+ # pi+ -~g_glueball # neutron # ~g_rho0 # neutron # pi0 -~g_glueball # neutron # ~g_rho0 # proton # pi- -~g_glueball # neutron # ~g_rho+ # neutron # pi- -~g_glueball # neutron # ~g_rho- # proton # pi0 -~g_glueball # neutron # ~g_rho- # neutron # pi+ -~g_glueball # neutron # ~g_Delta++ # pi- # pi- -~g_glueball # neutron # ~g_Delta+ # pi- # pi0 -~g_glueball # neutron # ~g_Delta0 # pi0 # pi0 -~g_glueball # neutron # ~g_Delta0 # pi+ # pi- -~g_glueball # neutron # ~g_Delta- # pi+ # pi0 -~g_K*bar0 # proton # ~g_rho0 # proton -~g_K*bar0 # proton # ~g_rho+ # neutron -~g_K*bar0 # proton # ~g_Delta++ # pi- -~g_K*bar0 # proton # ~g_Delta+ # pi0 -~g_K*bar0 # proton # ~g_Delta0 # pi+ -~g_K*bar0 # neutron # ~g_rho0 # neutron -~g_K*bar0 # neutron # ~g_rho- # proton -~g_K*bar0 # neutron # ~g_Delta+ # pi- -~g_K*bar0 # neutron # ~g_Delta0 # pi0 -~g_K*bar0 # neutron # ~g_Delta- # pi0 -~g_K*bar0 # neutron # ~g_Delta- # pi+ -~g_K*bar0 # proton # ~g_rho0 # proton # pi0 -~g_K*bar0 # proton # ~g_rho+ # neutron # pi+ -~g_K*bar0 # proton # ~g_rho0 # neutron # pi+ -~g_K*bar0 # proton # ~g_rho+ # proton # pi- -~g_K*bar0 # proton # ~g_rho+ # neutron # pi0 -~g_K*bar0 # proton # ~g_rho- # proton # pi+ -~g_K*bar0 # proton # ~g_Delta++ # pi0 # pi- -~g_K*bar0 # proton # ~g_Delta+ # pi0 # pi0 -~g_K*bar0 # proton # ~g_Delta+ # pi+ # pi- -~g_K*bar0 # proton # ~g_Delta0 # pi+ # pi0 -~g_K*bar0 # proton # ~g_Delta- # pi+ # pi+ -~g_K*bar0 # neutron # ~g_rho0 # neutron # pi0 -~g_K*bar0 # neutron # ~g_rho0 # proton # pi- -~g_K*bar0 # neutron # ~g_rho+ # neutron # pi- -~g_K*bar0 # neutron # ~g_rho- # proton # pi0 -~g_K*bar0 # neutron # ~g_rho- # neutron # pi+ -~g_K*bar0 # neutron # ~g_Delta++ # pi- # pi- -~g_K*bar0 # neutron # ~g_Delta+ # pi- # pi0 -~g_K*bar0 # neutron # ~g_Delta0 # pi0 # pi0 -~g_K*bar0 # neutron # ~g_Delta0 # pi+ # pi- -~g_K*bar0 # neutron # ~g_Delta- # pi+ # pi0 -~g_Deltabar-- # proton # ~g_Deltabar-- # proton -~g_Deltabar-- # proton # ~g_rho0 # pi0 # pi- -~g_Deltabar-- # proton # ~g_rho- # pi0 # pi0 -~g_Deltabar- # proton # ~g_Deltabar- # proton -~g_Deltabar- # proton # ~g_rho0 # pi0 # pi0 -~g_Deltabar- # proton # ~g_rho+ # pi0 # pi- -~g_Deltabar- # proton # ~g_rho- # pi0 # pi+ -~g_Deltabar0 # proton # ~g_Deltabar0 # proton -~g_Deltabar0 # proton # ~g_rho0 # pi0 # pi+ -~g_Deltabar0 # proton # ~g_rho+ # pi0 # pi0 -~g_Deltabar0 # proton # ~g_rho+ # pi- # pi+ -~g_Deltabar0 # proton # ~g_rho- # pi+ # pi+ -~g_Deltabar+ # proton # ~g_Deltabar+ # proton -~g_Deltabar+ # proton # ~g_rho0 # pi+ # pi+ -~g_Deltabar+ # proton # ~g_rho+ # pi0 # pi+ -~g_Deltabar-- # neutron # ~g_Deltabar-- # neutron -~g_Deltabar-- # neutron # ~g_rho0 # pi- # pi- -~g_Deltabar-- # neutron # ~g_rho- # pi0 # pi- -~g_Deltabar- # neutron # ~g_Deltabar- # neutron -~g_Deltabar- # neutron # ~g_rho0 # pi0 # pi- -~g_Deltabar- # neutron # ~g_rho- # pi0 # pi0 -~g_Deltabar- # neutron # ~g_rho- # pi+ # pi- -~g_Deltabar- # neutron # ~g_rho+ # pi- # pi- -~g_Deltabar0 # neutron # ~g_Deltabar0 # neutron -~g_Deltabar0 # neutron # ~g_rho0 # pi0 # pi0 -~g_Deltabar0 # neutron # ~g_rho+ # pi- # pi0 -~g_Deltabar0 # neutron # ~g_rho- # pi+ # pi0 -~g_Deltabar+ # neutron # ~g_Deltabar+ # neutron -~g_Deltabar+ # neutron # ~g_rho+ # pi0 # pi0 -~g_Deltabar+ # neutron # ~g_rho0 # pi+ # pi0 -~g_Sigma*bar- # proton # ~g_Sigma*bar- # proton -~g_Sigma*bar- # proton # ~g_rho0 # pi0 # pi0 -~g_Sigma*bar- # proton # ~g_rho+ # pi0 # pi- -~g_Sigma*bar- # proton # ~g_rho- # pi0 # pi+ -~g_Sigma*bar0 # proton # ~g_Sigma*bar0 # proton -~g_Sigma*bar0 # proton # ~g_rho0 # pi0 # pi+ -~g_Sigma*bar0 # proton # ~g_rho+ # pi0 # pi0 -~g_Sigma*bar0 # proton # ~g_rho+ # pi- # pi+ -~g_Sigma*bar0 # proton # ~g_rho- # pi+ # pi+ -~g_Sigma*bar+ # proton # ~g_Sigma*bar+ # proton -~g_Sigma*bar+ # proton # ~g_rho0 # pi+ # pi+ -~g_Sigma*bar+ # proton # ~g_rho+ # pi0 # pi+ -~g_Sigma*bar- # neutron # ~g_Sigma*bar- # neutron -~g_Sigma*bar- # neutron # ~g_rho0 # pi0 # pi- -~g_Sigma*bar- # neutron # ~g_rho- # pi0 # pi0 -~g_Sigma*bar- # neutron # ~g_rho- # pi+ # pi- -~g_Sigma*bar- # neutron # ~g_rho+ # pi- # pi- -~g_Sigma*bar0 # neutron # ~g_Sigma*bar0 # neutron -~g_Sigma*bar0 # neutron # ~g_rho0 # pi0 # pi0 -~g_Sigma*bar0 # neutron # ~g_rho+ # pi- # pi0 -~g_Sigma*bar0 # neutron # ~g_rho- # pi+ # pi0 -~g_Sigma*bar+ # neutron # ~g_Sigma*bar+ # neutron -~g_Sigma*bar+ # neutron # ~g_rho+ # pi0 # pi0 -~g_Sigma*bar+ # neutron # ~g_rho0 # pi+ # pi0 -~g_Omegabar+ # proton # ~g_Omegabar+ # proton -~g_Omegabar+ # proton # ~g_rho0 # pi+ # pi+ -~g_Omegabar+ # proton # ~g_rho+ # pi0 # pi+ -~g_Omegabar+ # neutron # ~g_Omegabar+ # neutron -~g_Omegabar+ # neutron # ~g_rho+ # pi0 # pi0 -~g_Omegabar+ # neutron # ~g_rho0 # pi+ # pi0 -~g_Xi*bar+ # proton # ~g_Xi*bar+ # proton -~g_Xi*bar+ # proton # ~g_rho0 # pi+ # pi+ -~g_Xi*bar+ # proton # ~g_rho+ # pi0 # pi+ -~g_Xi*bar+ # neutron # ~g_Xi*bar+ # neutron -~g_Xi*bar+ # neutron # ~g_rho+ # pi0 # pi0 -~g_Xi*bar+ # neutron # ~g_rho0 # pi+ # pi0 -~g_Xi*bar0 # proton # ~g_Xi*bar0 # proton -~g_Xi*bar0 # proton # ~g_rho0 # pi0 # pi+ -~g_Xi*bar0 # proton # ~g_rho+ # pi0 # pi0 -~g_Xi*bar0 # proton # ~g_rho+ # pi- # pi+ -~g_Xi*bar0 # proton # ~g_rho- # pi+ # pi+ -~g_Xi*bar0 # neutron # ~g_Xi*bar0 # neutron -~g_Xi*bar0 # neutron # ~g_rho0 # pi0 # pi0 -~g_Xi*bar0 # neutron # ~g_rho+ # pi- # pi0 -~g_Xi*bar0 # neutron # ~g_rho- # pi+ # pi0 diff --git a/Simulation/G4Extensions/RHadrons/share/ProcessList_generic_stop.txt b/Simulation/G4Extensions/RHadrons/share/ProcessList_generic_stop.txt deleted file mode 100644 index 3d92eb0bbbfd1a961e0037000ee9366ff854a591..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/ProcessList_generic_stop.txt +++ /dev/null @@ -1,283 +0,0 @@ -~T0 # neutron # ~T0 # neutron -~T0 # neutron # ~T0 # neutron # pi0 -~T0 # neutron # ~T0 # proton # pi- -~T0 # neutron # ~T_dd10 # pi0 -~T0 # neutron # ~T_dd10 # pi0 # pi0 -~T0 # neutron # ~T_dd10 # pi- # pi+ -~T0 # neutron # ~T+ # neutron # pi- -~T0 # neutron # ~T_ud0+ # pi- -~T0 # neutron # ~T_ud0+ # pi- # pi0 -~T0 # proton # ~T0 # neutron # pi+ -~T0 # proton # ~T0 # proton -~T0 # proton # ~T0 # proton # pi0 -~T0 # proton # ~T+ # neutron -~T0 # proton # ~T+ # neutron # pi0 -~T0 # proton # ~T+ # proton # pi- -~T0 # proton # ~T_ud0+ # pi0 -~T0 # proton # ~T_ud0+ # pi0 # pi0 -~T0 # proton # ~T_ud0+ # pi- # pi+ -~T0 # proton # ~T_uu1++ # pi- -~T0 # proton # ~T_uu1++ # pi- # pi0 -~Tbar0 # neutron # ~Tbar0 # neutron -~Tbar0 # neutron # ~Tbar0 # neutron # pi0 -~Tbar0 # neutron # ~Tbar0 # proton # pi- -~Tbar0 # neutron # ~Tbar- # neutron # pi+ -~Tbar0 # neutron # ~Tbar- # proton -~Tbar0 # neutron # ~Tbar- # proton # pi0 -~Tbar0 # proton # ~Tbar0 # neutron # pi+ -~Tbar0 # proton # ~Tbar0 # proton -~Tbar0 # proton # ~Tbar0 # proton # pi0 -~Tbar0 # proton # ~Tbar- # proton # pi+ -~Tbar_dd10 # neutron # ~Tbar0 # pi0 -~Tbar_dd10 # neutron # ~Tbar_dd10 # neutron -~Tbar_dd10 # neutron # ~Tbar_dd10 # neutron # pi0 -~Tbar_dd10 # neutron # ~Tbar- # pi0 -~Tbar_dd10 # neutron # ~Tbar_ud0- # proton -~Tbar_dd10 # proton # ~Tbar0 # pi+ -~Tbar_dd10 # proton # ~Tbar_dd10 # proton -~Tbar_dd10 # proton # ~Tbar_dd10 # proton # pi0 -~Tbar- # neutron # ~Tbar0 # neutron # pi- -~Tbar- # neutron # ~Tbar- # neutron -~Tbar- # neutron # ~Tbar- # neutron # pi0 -~Tbar- # neutron # ~Tbar- # proton # pi- -~Tbar- # proton # ~Tbar0 # neutron -~Tbar- # proton # ~Tbar0 # neutron # pi0 -~Tbar- # proton # ~Tbar0 # proton # pi- -~Tbar- # proton # ~Tbar- # neutron # pi+ -~Tbar- # proton # ~Tbar- # proton -~Tbar- # proton # ~Tbar- # proton # pi0 -~Tbar_ud0- # neutron # ~Tbar0 # pi- -~Tbar_ud0- # neutron # ~Tbar_dd10 # neutron # pi- -~Tbar_ud0- # neutron # ~Tbar- # pi0 -~Tbar_ud0- # neutron # ~Tbar_ud0- # neutron -~Tbar_ud0- # neutron # ~Tbar_ud0- # neutron # pi0 -~Tbar_ud0- # neutron # ~Tbar_ud0- # proton # pi- -~Tbar_ud0- # neutron # ~Tbar_uu1-- # neutron # pi+ -~Tbar_ud0- # neutron # ~Tbar_uu1-- # proton -~Tbar_ud0- # neutron # ~Tbar_uu1-- # proton # pi0 -~Tbar_ud0- # proton # ~Tbar0 # pi0 -~Tbar_ud0- # proton # ~Tbar_dd10 # neutron -~Tbar_ud0- # proton # ~Tbar_dd10 # neutron # pi0 -~Tbar_ud0- # proton # ~Tbar_dd10 # proton # pi- -~Tbar_ud0- # proton # ~Tbar- # pi+ -~Tbar_ud0- # proton # ~Tbar_ud0- # neutron # pi+ -~Tbar_ud0- # proton # ~Tbar_ud0- # proton -~Tbar_ud0- # proton # ~Tbar_ud0- # proton # pi0 -~Tbar_ud0- # proton # ~Tbar_uu1-- # proton # pi+ -~Tbar_uu1-- # neutron # ~Tbar- # pi- -~Tbar_uu1-- # neutron # ~Tbar_ud0- # neutron # pi- -~Tbar_uu1-- # neutron # ~Tbar_uu1-- # neutron -~Tbar_uu1-- # neutron # ~Tbar_uu1-- # neutron # pi0 -~Tbar_uu1-- # neutron # ~Tbar_uu1-- # proton # pi- -~Tbar_uu1-- # proton # ~Tbar0 # pi- -~Tbar_uu1-- # proton # ~Tbar_dd10 # neutron # pi- -~Tbar_uu1-- # proton # ~Tbar- # pi0 -~Tbar_uu1-- # proton # ~Tbar_ud0- # neutron -~Tbar_uu1-- # proton # ~Tbar_ud0- # neutron # pi0 -~Tbar_uu1-- # proton # ~Tbar_ud0- # proton # pi- -~Tbar_uu1-- # proton # ~Tbar_uu1-- # neutron # pi+ -~Tbar_uu1-- # proton # ~Tbar_uu1-- # proton -~Tbar_uu1-- # proton # ~Tbar_uu1-- # proton # pi0 -~T_dd10 # neutron # ~T_dd10 # neutron -~T_dd10 # neutron # ~T_dd10 # neutron # pi0 -~T_dd10 # neutron # ~T_dd10 # proton # pi- -~T_dd10 # neutron # ~T_ud0+ # neutron # pi- -~T_dd10 # proton # ~T_dd10 # neutron # pi+ -~T_dd10 # proton # ~T_dd10 # proton -~T_dd10 # proton # ~T_dd10 # proton # pi0 -~T_dd10 # proton # ~T_ud0+ # neutron -~T_dd10 # proton # ~T_ud0+ # neutron # pi0 -~T_dd10 # proton # ~T_ud0+ # proton # pi- -~T_dd10 # proton # ~T_uu1++ # neutron # pi- -~T+ # neutron # ~T0 # neutron # pi- -~T+ # neutron # ~T0 # proton -~T+ # neutron # ~T0 # proton # pi0 -~T+ # neutron # ~T_dd10 # pi+ -~T+ # neutron # ~T_dd10 # pi+ # pi0 -~T+ # neutron # ~T+ # neutron -~T+ # neutron # ~T+ # neutron # pi0 -~T+ # neutron # ~T+ # proton # pi- -~T+ # neutron # ~T_ud0+ # pi0 -~T+ # neutron # ~T_ud0+ # pi0 # pi0 -~T+ # neutron # ~T_ud0+ # pi- # pi+ -~T+ # proton # ~T0 # proton # pi+ -~T+ # proton # ~T+ # neutron # pi+ -~T+ # proton # ~T+ # proton -~T+ # proton # ~T+ # proton # pi0 -~T+ # proton # ~T_ud0+ # pi+ -~T+ # proton # ~T_ud0+ # pi+ # pi0 -~T+ # proton # ~T_uu1++ # pi0 -~T+ # proton # ~T_uu1++ # pi0 # pi0 -~T+ # proton # ~T_uu1++ # pi+ # pi- -~T_ud0+ # neutron # ~T_dd10 # neutron # pi+ -~T_ud0+ # neutron # ~T_dd10 # proton -~T_ud0+ # neutron # ~T_dd10 # proton # pi0 -~T_ud0+ # neutron # ~T_ud0+ # neutron -~T_ud0+ # neutron # ~T_ud0+ # neutron # pi0 -~T_ud0+ # neutron # ~T_ud0+ # proton # pi- -~T_ud0+ # proton # ~T_dd10 # proton # pi+ -~T_ud0+ # proton # ~T_ud0+ # neutron # pi+ -~T_ud0+ # proton # ~T_ud0+ # proton -~T_ud0+ # proton # ~T_ud0+ # proton # pi0 -~T_ud0+ # proton # ~T_uu1++ # neutron -~T_ud0+ # proton # ~T_uu1++ # neutron # pi0 -~T_ud0+ # proton # ~T_uu1++ # proton # pi- -~T_uu1++ # neutron # ~T_ud0+ # neutron # pi+ -~T_uu1++ # neutron # ~T_ud0+ # proton -~T_uu1++ # neutron # ~T_ud0+ # proton # pi0 -~T_uu1++ # neutron # ~T_uu1++ # neutron -~T_uu1++ # neutron # ~T_uu1++ # neutron # pi0 -~T_uu1++ # neutron # ~T_uu1++ # proton # pi- -~T_uu1++ # proton # ~T_ud0+ # proton # pi+ -~T_uu1++ # proton # ~T_uu1++ # neutron # pi+ -~T_uu1++ # proton # ~T_uu1++ # proton -~T_uu1++ # proton # ~T_uu1++ # proton # pi0 -~T_s+ # neutron # ~T0 # neutron # pi- -~T_s+ # neutron # ~T0 # proton -~T_s+ # neutron # ~T0 # proton # pi0 -~T_s+ # neutron # ~T_dd10 # pi+ -~T_s+ # neutron # ~T_dd10 # pi+ # pi0 -~T_s+ # neutron # ~T+ # neutron -~T_s+ # neutron # ~T+ # neutron # pi0 -~T_s+ # neutron # ~T+ # proton # pi- -~T_s+ # neutron # ~T_ud0+ # pi0 -~T_s+ # neutron # ~T_ud0+ # pi0 # pi0 -~T_s+ # neutron # ~T_ud0+ # pi- # pi+ -~T_s+ # proton # ~T0 # proton # pi+ -~T_s+ # proton # ~T+ # neutron # pi+ -~T_s+ # proton # ~T+ # proton -~T_s+ # proton # ~T+ # proton # pi0 -~T_s+ # proton # ~T_ud0+ # pi+ -~T_s+ # proton # ~T_ud0+ # pi+ # pi0 -~T_s+ # proton # ~T_uu1++ # pi0 -~T_s+ # proton # ~T_uu1++ # pi0 # pi0 -~T_s+ # proton # ~T_uu1++ # pi+ # pi- -~T_sd00 # neutron # ~T_dd10 # neutron -~T_sd00 # neutron # ~T_dd10 # neutron # pi0 -~T_sd00 # neutron # ~T_dd10 # proton # pi- -~T_sd00 # neutron # ~T_ud0+ # neutron # pi- -~T_sd00 # proton # ~T_dd10 # neutron # pi+ -~T_sd00 # proton # ~T_dd10 # proton -~T_sd00 # proton # ~T_dd10 # proton # pi0 -~T_sd00 # proton # ~T_ud0+ # neutron -~T_sd00 # proton # ~T_ud0+ # neutron # pi0 -~T_sd00 # proton # ~T_ud0+ # proton # pi- -~T_sd00 # proton # ~T_uu1++ # neutron # pi- -~T_sd10 # neutron # ~T_dd10 # neutron -~T_sd10 # neutron # ~T_dd10 # neutron # pi0 -~T_sd10 # neutron # ~T_dd10 # proton # pi- -~T_sd10 # neutron # ~T_ud0+ # neutron # pi- -~T_sd10 # proton # ~T_dd10 # neutron # pi+ -~T_sd10 # proton # ~T_dd10 # proton -~T_sd10 # proton # ~T_dd10 # proton # pi0 -~T_sd10 # proton # ~T_ud0+ # neutron -~T_sd10 # proton # ~T_ud0+ # neutron # pi0 -~T_sd10 # proton # ~T_ud0+ # proton # pi- -~T_sd10 # proton # ~T_uu1++ # neutron # pi- -~T_su0+ # neutron # ~T_dd10 # neutron # pi+ -~T_su0+ # neutron # ~T_dd10 # proton -~T_su0+ # neutron # ~T_dd10 # proton # pi0 -~T_su0+ # neutron # ~T_ud0+ # neutron -~T_su0+ # neutron # ~T_ud0+ # neutron # pi0 -~T_su0+ # neutron # ~T_ud0+ # proton # pi- -~T_su0+ # proton # ~T_dd10 # proton # pi+ -~T_su0+ # proton # ~T_ud0+ # neutron # pi+ -~T_su0+ # proton # ~T_ud0+ # proton -~T_su0+ # proton # ~T_ud0+ # proton # pi0 -~T_su0+ # proton # ~T_uu1++ # neutron -~T_su0+ # proton # ~T_uu1++ # neutron # pi0 -~T_su0+ # proton # ~T_uu1++ # proton # pi- -~T_su1+ # neutron # ~T_dd10 # neutron # pi+ -~T_su1+ # neutron # ~T_dd10 # proton -~T_su1+ # neutron # ~T_dd10 # proton # pi0 -~T_su1+ # neutron # ~T_ud0+ # neutron -~T_su1+ # neutron # ~T_ud0+ # neutron # pi0 -~T_su1+ # neutron # ~T_ud0+ # proton # pi- -~T_su1+ # proton # ~T_dd10 # proton # pi+ -~T_su1+ # proton # ~T_ud0+ # neutron # pi+ -~T_su1+ # proton # ~T_ud0+ # proton -~T_su1+ # proton # ~T_ud0+ # proton # pi0 -~T_su1+ # proton # ~T_uu1++ # neutron -~T_su1+ # proton # ~T_uu1++ # neutron # pi0 -~T_su1+ # proton # ~T_uu1++ # proton # pi- -~T_ss10 # neutron # ~T_dd10 # neutron -~T_ss10 # neutron # ~T_dd10 # neutron # pi0 -~T_ss10 # neutron # ~T_dd10 # proton # pi- -~T_ss10 # neutron # ~T_ud0+ # neutron # pi- -~T_ss10 # proton # ~T_dd10 # neutron # pi+ -~T_ss10 # proton # ~T_dd10 # proton -~T_ss10 # proton # ~T_dd10 # proton # pi0 -~T_ss10 # proton # ~T_ud0+ # neutron -~T_ss10 # proton # ~T_ud0+ # neutron # pi0 -~T_ss10 # proton # ~T_ud0+ # proton # pi- -~T_ss10 # proton # ~T_uu1++ # neutron # pi- -~Tbar_s- # neutron # ~Tbar0 # neutron # pi- -~Tbar_s- # neutron # ~Tbar- # neutron -~Tbar_s- # neutron # ~Tbar- # neutron # pi0 -~Tbar_s- # neutron # ~Tbar- # proton # pi- -~Tbar_s- # proton # ~Tbar0 # neutron -~Tbar_s- # proton # ~Tbar0 # neutron # pi0 -~Tbar_s- # proton # ~Tbar0 # proton # pi- -~Tbar_s- # proton # ~Tbar- # neutron # pi+ -~Tbar_s- # proton # ~Tbar- # proton -~Tbar_s- # proton # ~Tbar- # proton # pi0 -~Tbar_sd00 # neutron # ~Tbar0 # pi0 -~Tbar_sd00 # neutron # ~Tbar_dd10 # neutron -~Tbar_sd00 # neutron # ~Tbar_dd10 # neutron # pi0 -~Tbar_sd00 # neutron # ~Tbar- # pi0 -~Tbar_sd00 # neutron # ~Tbar_ud0- # proton -~Tbar_sd00 # proton # ~Tbar0 # pi+ -~Tbar_sd00 # proton # ~Tbar_dd10 # proton -~Tbar_sd00 # proton # ~Tbar_dd10 # proton # pi0 -~Tbar_sd10 # neutron # ~Tbar0 # pi0 -~Tbar_sd10 # neutron # ~Tbar_dd10 # neutron -~Tbar_sd10 # neutron # ~Tbar_dd10 # neutron # pi0 -~Tbar_sd10 # neutron # ~Tbar- # pi0 -~Tbar_sd10 # neutron # ~Tbar_ud0- # proton -~Tbar_sd10 # proton # ~Tbar0 # pi+ -~Tbar_sd10 # proton # ~Tbar_dd10 # proton -~Tbar_sd10 # proton # ~Tbar_dd10 # proton # pi0 -~Tbar_su0- # neutron # ~Tbar0 # pi- -~Tbar_su0- # neutron # ~Tbar_dd10 # neutron # pi- -~Tbar_su0- # neutron # ~Tbar- # pi0 -~Tbar_su0- # neutron # ~Tbar_ud0- # neutron -~Tbar_su0- # neutron # ~Tbar_ud0- # neutron # pi0 -~Tbar_su0- # neutron # ~Tbar_ud0- # proton # pi- -~Tbar_su0- # neutron # ~Tbar_uu1-- # neutron # pi+ -~Tbar_su0- # neutron # ~Tbar_uu1-- # proton -~Tbar_su0- # neutron # ~Tbar_uu1-- # proton # pi0 -~Tbar_su0- # proton # ~Tbar0 # pi0 -~Tbar_su0- # proton # ~Tbar_dd10 # neutron -~Tbar_su0- # proton # ~Tbar_dd10 # neutron # pi0 -~Tbar_su0- # proton # ~Tbar_dd10 # proton # pi- -~Tbar_su0- # proton # ~Tbar- # pi+ -~Tbar_su0- # proton # ~Tbar_ud0- # neutron # pi+ -~Tbar_su0- # proton # ~Tbar_ud0- # proton -~Tbar_su0- # proton # ~Tbar_ud0- # proton # pi0 -~Tbar_su0- # proton # ~Tbar_uu1-- # proton # pi+ -~Tbar_su1- # neutron # ~Tbar0 # pi- -~Tbar_su1- # neutron # ~Tbar_dd10 # neutron # pi- -~Tbar_su1- # neutron # ~Tbar- # pi0 -~Tbar_su1- # neutron # ~Tbar_ud0- # neutron -~Tbar_su1- # neutron # ~Tbar_ud0- # neutron # pi0 -~Tbar_su1- # neutron # ~Tbar_ud0- # proton # pi- -~Tbar_su1- # neutron # ~Tbar_uu1-- # neutron # pi+ -~Tbar_su1- # neutron # ~Tbar_uu1-- # proton -~Tbar_su1- # neutron # ~Tbar_uu1-- # proton # pi0 -~Tbar_su1- # proton # ~Tbar0 # pi0 -~Tbar_su1- # proton # ~Tbar_dd10 # neutron -~Tbar_su1- # proton # ~Tbar_dd10 # neutron # pi0 -~Tbar_su1- # proton # ~Tbar_dd10 # proton # pi- -~Tbar_su1- # proton # ~Tbar- # pi+ -~Tbar_su1- # proton # ~Tbar_ud0- # neutron # pi+ -~Tbar_su1- # proton # ~Tbar_ud0- # proton -~Tbar_su1- # proton # ~Tbar_ud0- # proton # pi0 -~Tbar_su1- # proton # ~Tbar_uu1-- # proton # pi+ -~Tbar_ss10 # neutron # ~Tbar0 # pi0 -~Tbar_ss10 # neutron # ~Tbar_dd10 # neutron -~Tbar_ss10 # neutron # ~Tbar_dd10 # neutron # pi0 -~Tbar_ss10 # neutron # ~Tbar- # pi0 -~Tbar_ss10 # neutron # ~Tbar_ud0- # proton -~Tbar_ss10 # proton # ~Tbar0 # pi+ -~Tbar_ss10 # proton # ~Tbar_dd10 # proton -~Tbar_ss10 # proton # ~Tbar_dd10 # proton # pi0 diff --git a/Simulation/G4Extensions/RHadrons/share/ProcessList_intermediate_gluino.txt b/Simulation/G4Extensions/RHadrons/share/ProcessList_intermediate_gluino.txt deleted file mode 100644 index 860a4b31d2d6a63bb32e2438c624ccebb3fc9dc5..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/ProcessList_intermediate_gluino.txt +++ /dev/null @@ -1,251 +0,0 @@ -~g_glueball # neutron # ~g_glueball # neutron -~g_glueball # proton # ~g_glueball # proton -~g_Lambda0 # neutron # ~g_Lambda0 # neutron -~g_Lambda0 # proton # ~g_Lambda0 # proton -~g_Lambda0 # neutron # ~g_Lambda0 # neutron # pi0 -~g_Lambda0 # neutron # ~g_Lambda0 # proton # pi- -~g_Lambda0 # proton # ~g_Lambda0 # proton # pi0 -~g_Lambda0 # proton # ~g_Lambda0 # neutron # pi- -~g_Lambda0 # neutron # ~g_neutron # kaon0 # neutron -~g_Lambda0 # neutron # ~g_neutron # kaon- # proton -~g_Lambda0 # neutron # ~g_proton # kaon- # neutron -~g_Lambda0 # proton # ~g_proton # kaon0 # neutron -~g_Lambda0 # proton # ~g_proton # kaon- # proton -~g_Lambda0 # proton # ~g_neutron # kaon0 # proton -~g_neutron # neutron # ~g_neutron # neutron -~g_neutron # proton # ~g_neutron # proton -~g_neutron # proton # ~g_proton # neutron -~g_proton # neutron # ~g_proton # neutron -~g_proton # neutron # ~g_neutron # proton -~g_proton # proton # ~g_proton # proton -~g_Delta0 # neutron # ~g_Delta0 # neutron -~g_Delta0 # proton # ~g_Delta0 # proton -~g_Delta0 # proton # ~g_Delta+ # neutron -~g_Delta+ # neutron # ~g_Delta+ # neutron -~g_Delta+ # neutron # ~g_Delta0 # proton -~g_Delta+ # proton # ~g_Delta+ # proton -~g_neutron # neutron # ~g_neutron # neutron # pi0 -~g_neutron # neutron # ~g_neutron # proton # pi- -~g_neutron # neutron # ~g_proton # neutron # pi- -~g_neutron # proton # ~g_neutron # proton # pi0 -~g_neutron # proton # ~g_neutron # neutron # pi+ -~g_neutron # proton # ~g_proton # neutron # pi0 -~g_neutron # proton # ~g_proton # proton # pi- -~g_proton # neutron # ~g_proton # neutron # pi0 -~g_proton # neutron # ~g_neutron # proton # pi0 -~g_proton # neutron # ~g_neutron # neutron # pi+ -~g_proton # neutron # ~g_proton # proton # pi- -~g_proton # proton # ~g_proton # proton # pi0 -~g_proton # proton # ~g_proton # neutron # pi+ -~g_proton # proton # ~g_neutron # proton # pi+ -~g_Delta0 # neutron # ~g_Delta0 # neutron # pi0 -~g_Delta0 # neutron # ~g_Delta0 # proton # pi- -~g_Delta0 # neutron # ~g_Delta+ # neutron # pi- -~g_Delta0 # proton # ~g_Delta0 # proton # pi0 -~g_Delta0 # proton # ~g_Delta0 # neutron # pi+ -~g_Delta0 # proton # ~g_Delta+ # neutron # pi0 -~g_Delta0 # proton # ~g_Delta+ # proton # pi- -~g_Delta+ # neutron # ~g_Delta+ # neutron # pi0 -~g_Delta+ # neutron # ~g_Delta0 # proton # pi0 -~g_Delta+ # neutron # ~g_Delta0 # neutron # pi+ -~g_Delta+ # neutron # ~g_Delta+ # proton # pi- -~g_Delta+ # proton # ~g_Delta+ # proton # pi0 -~g_Delta+ # proton # ~g_Delta+ # neutron # pi+ -~g_Delta+ # proton # ~g_Delta0 # proton # pi+ -~g_neutron # neutron # ~g_Delta0 # neutron -~g_neutron # proton # ~g_Delta0 # proton -~g_neutron # proton # ~g_Delta+ # neutron -~g_proton # neutron # ~g_Delta+ # neutron -~g_proton # neutron # ~g_Delta0 # proton -~g_proton # proton # ~g_Delta+ # proton -~g_Delta0 # neutron # ~g_neutron # neutron -~g_Delta0 # proton # ~g_neutron # proton -~g_Delta0 # proton # ~g_proton # neutron -~g_Delta+ # neutron # ~g_proton # neutron -~g_Delta+ # neutron # ~g_neutron # proton -~g_Delta+ # proton # ~g_proton # proton -~g_neutron # neutron # ~g_Delta0 # neutron # pi0 -~g_neutron # neutron # ~g_Delta0 # proton # pi- -~g_neutron # neutron # ~g_Delta+ # neutron # pi- -~g_neutron # proton # ~g_Delta0 # proton # pi0 -~g_neutron # proton # ~g_Delta0 # neutron # pi+ -~g_neutron # proton # ~g_Delta+ # neutron # pi0 -~g_neutron # proton # ~g_Delta+ # proton # pi- -~g_proton # neutron # ~g_Delta+ # neutron # pi0 -~g_proton # neutron # ~g_Delta0 # proton # pi0 -~g_proton # neutron # ~g_Delta0 # neutron # pi+ -~g_proton # neutron # ~g_Delta+ # proton # pi- -~g_proton # proton # ~g_Delta+ # proton # pi0 -~g_proton # proton # ~g_Delta+ # neutron # pi+ -~g_proton # proton # ~g_Delta0 # proton # pi+ -~g_Delta0 # neutron # ~g_neutron # neutron # pi0 -~g_Delta0 # neutron # ~g_neutron # proton # pi- -~g_Delta0 # neutron # ~g_proton # neutron # pi- -~g_Delta0 # proton # ~g_neutron # proton # pi0 -~g_Delta0 # proton # ~g_neutron # neutron # pi+ -~g_Delta0 # proton # ~g_proton # neutron # pi0 -~g_Delta0 # proton # ~g_proton # proton # pi- -~g_Delta+ # neutron # ~g_proton # neutron # pi0 -~g_Delta+ # neutron # ~g_neutron # proton # pi0 -~g_Delta+ # neutron # ~g_neutron # neutron # pi+ -~g_Delta+ # neutron # ~g_proton # proton # pi- -~g_Delta+ # proton # ~g_proton # proton # pi0 -~g_Delta+ # proton # ~g_proton # neutron # pi+ -~g_Delta+ # proton # ~g_neutron # proton # pi+ -~g_neutron # neutron # ~g_Lambda0 # kaon0 # neutron -~g_neutron # proton # ~g_Lambda0 # kaon0 # proton -~g_neutron # proton # ~g_Lambda0 # kaon+ # neutron -~g_proton # neutron # ~g_Lambda0 # kaon0 # proton -~g_proton # neutron # ~g_Lambda0 # kaon+ # neutron -~g_proton # proton # ~g_Lambda0 # kaon+ # proton -~g_pi0 # neutron # ~g_pi0 # neutron -~g_pi0 # neutron # ~g_pi- # proton -~g_pi0 # proton # ~g_pi0 # proton -~g_pi0 # proton # ~g_pi+ # neutron -~g_pi- # neutron # ~g_pi- # neutron -~g_pi- # proton # ~g_pi- # proton -~g_pi- # proton # ~g_pi0 # neutron -~g_pi+ # neutron # ~g_pi+ # neutron -~g_pi+ # neutron # ~g_pi0 # proton -~g_pi+ # proton # ~g_pi+ # proton -~g_pi0 # neutron # ~g_pi0 # neutron # pi0 -~g_pi0 # neutron # ~g_pi0 # proton # pi- -~g_pi0 # neutron # ~g_pi+ # neutron # pi- -~g_pi0 # neutron # ~g_pi- # proton # pi0 -~g_pi0 # neutron # ~g_pi- # neutron # pi+ -~g_pi0 # proton # ~g_pi0 # proton # pi0 -~g_pi0 # proton # ~g_pi0 # neutron # pi+ -~g_pi0 # proton # ~g_pi+ # neutron # pi0 -~g_pi0 # proton # ~g_pi+ # proton # pi- -~g_pi0 # proton # ~g_pi- # proton # pi+ -~g_pi0 # neutron # ~g_neutron # pi0 -~g_pi0 # neutron # ~g_proton # pi- -~g_pi0 # proton # ~g_neutron # pi+ -~g_pi0 # proton # ~g_proton # pi0 -~g_pi+ # neutron # ~g_proton # pi0 -~g_pi+ # neutron # ~g_neutron # pi+ -~g_pi+ # proton # ~g_proton # pi+ -~g_pi- # neutron # ~g_neutron # pi- -~g_pi- # proton # ~g_neutron # pi0 -~g_pi- # proton # ~g_proton # pi- -~g_pi0 # neutron # ~g_neutron # pi0 # pi0 -~g_pi0 # neutron # ~g_neutron # pi+ # pi- -~g_pi0 # neutron # ~g_proton # pi- # pi0 -~g_pi0 # proton # ~g_neutron # pi+ # pi0 -~g_pi0 # proton # ~g_proton # pi0 # pi0 -~g_pi0 # proton # ~g_proton # pi+ # pi- -~g_pi+ # neutron # ~g_proton # pi0 # pi0 -~g_pi+ # neutron # ~g_proton # pi+ # pi- -~g_pi+ # neutron # ~g_neutron # pi+ # pi0 -~g_pi+ # proton # ~g_proton # pi+ # pi- -~g_pi+ # proton # ~g_neutron # pi+ # pi+ -~g_pi- # neutron # ~g_neutron # pi- # pi0 -~g_pi- # neutron # ~g_proton # pi- # pi- -~g_pi- # proton # ~g_neutron # pi0 # pi0 -~g_pi- # proton # ~g_neutron # pi+ # pi- -~g_pi- # proton # ~g_proton # pi- # pi0 -~g_pi0 # neutron # ~g_Lambda0 # kaon0 -~g_pi0 # proton # ~g_Lambda0 # kaon+ -~g_pi+ # neutron # ~g_Lambda0 # kaon+ -~g_pi- # proton # ~g_Lambda0 # kaon0 -~g_pi0 # neutron # ~g_Lambda0 # kaon0 # pi0 -~g_pi0 # neutron # ~g_Lambda0 # kaon+ # pi- -~g_pi0 # proton # ~g_Lambda0 # kaon+ # pi0 -~g_pi0 # proton # ~g_Lambda0 # kaon0 # pi+ -~g_pi+ # neutron # ~g_Lambda0 # kaon+ # pi0 -~g_pi+ # neutron # ~g_Lambda0 # kaon0 # pi+ -~g_pi+ # proton # ~g_Lambda0 # kaon+ # pi+ -~g_pi- # neutron # ~g_Lambda0 # kaon0 # pi- -~g_pi- # proton # ~g_Lambda0 # kaon0 # pi0 -~g_pi- # proton # ~g_Lambda0 # kaon+ # pi- -~g_K+ # neutron # ~g_K+ # neutron -~g_K+ # neutron # ~g_K0 # proton -~g_K+ # proton # ~g_K+ # proton -~g_K- # neutron # ~g_K- # neutron -~g_K- # proton # ~g_K- # proton -~g_K- # proton # ~g_K0bar # neutron -~g_K0 # neutron # ~g_K0 # neutron -~g_K0 # proton # ~g_K0 # proton -~g_K0 # proton # ~g_K+ # neutron -~g_K0bar # neutron # ~g_K0bar # neutron -~g_K0bar # neutron # ~g_K- # proton -~g_K0bar # proton # ~g_K0bar # proton -~g_K+ # neutron # ~g_K+ # neutron # pi0 -~g_K+ # neutron # ~g_K0 # proton # pi0 -~g_K+ # neutron # ~g_K0 # neutron # pi+ -~g_K+ # neutron # ~g_K+ # proton # pi- -~g_K+ # proton # ~g_K+ # proton # pi0 -~g_K+ # proton # ~g_K+ # neutron # pi+ -~g_K+ # proton # ~g_K0 # proton # pi+ -~g_K- # neutron # ~g_K- # neutron # pi0 -~g_K- # neutron # ~g_K- # proton # pi- -~g_K- # neutron # ~g_K0bar # neutron # pi- -~g_K- # proton # ~g_K- # proton # pi0 -~g_K- # proton # ~g_K- # neutron # pi+ -~g_K- # proton # ~g_K0bar # neutron # pi0 -~g_K- # proton # ~g_K0bar # proton # pi- -~g_K0 # neutron # ~g_K0 # neutron # pi0 -~g_K0 # neutron # ~g_K0 # proton # pi- -~g_K0 # neutron # ~g_K+ # neutron # pi- -~g_K0 # proton # ~g_K0 # proton # pi0 -~g_K0 # proton # ~g_K0 # neutron # pi+ -~g_K0 # proton # ~g_K+ # neutron # pi0 -~g_K0 # proton # ~g_K+ # proton # pi- -~g_K0bar # neutron # ~g_K0bar # neutron # pi0 -~g_K0bar # neutron # ~g_K0bar # proton # pi- -~g_K0bar # neutron # ~g_K- # proton # pi0 -~g_K0bar # neutron # ~g_K- # neutron # pi+ -~g_K0bar # proton # ~g_K0bar # proton # pi0 -~g_K0bar # proton # ~g_K0bar # neutron # pi+ -~g_K0bar # proton # ~g_K- # proton # pi+ -~g_K- # neutron # ~g_Lambda0 # pi- -~g_K- # proton # ~g_Lambda0 # pi0 -~g_K0bar # neutron # ~g_Lambda0 # pi0 -~g_K0bar # proton # ~g_Lambda0 # pi+ -~g_K- # neutron # ~g_Lambda0 # pi- # pi0 -~g_K- # proton # ~g_Lambda0 # pi0 # pi0 -~g_K- # proton # ~g_Lambda0 # pi+ # pi- -~g_K0bar # neutron # ~g_Lambda0 # pi0 # pi0 -~g_K0bar # neutron # ~g_Lambda0 # pi+ # pi- -~g_K0bar # proton # ~g_Lambda0 # pi+ # pi0 -~g_K+ # neutron # ~g_neutron # kaon+ -~g_K+ # neutron # ~g_proton # kaon0 -~g_K+ # proton # ~g_proton # kaon+ -~g_K+ # proton # ~g_neutron # kaon0 -~g_K- # neutron # ~g_neutron # kaon- -~g_K- # proton # ~g_proton # kaon- -~g_K- # proton # ~g_neutron # kaon0 -~g_K0 # neutron # ~g_neutron # kaon0 -~g_K0 # proton # ~g_proton # kaon0 -~g_K0 # proton # ~g_neutron # kaon+ -~g_K0bar # neutron # ~g_neutron # kaon0 -~g_K0bar # neutron # ~g_proton # kaon- -~g_K0bar # proton # ~g_proton # kaon0 -~g_K+ # neutron # ~g_neutron # kaon+ # pi0 -~g_K+ # neutron # ~g_neutron # kaon0 # pi+ -~g_K+ # neutron # ~g_proton # kaon0 # pi0 -~g_K+ # neutron # ~g_proton # kaon+ # pi- -~g_K+ # proton # ~g_proton # kaon+ # pi0 -~g_K+ # proton # ~g_proton # kaon0 # pi+ -~g_K+ # proton # ~g_neutron # kaon+ # pi+ -~g_K- # neutron # ~g_neutron # kaon- # pi0 -~g_K- # neutron # ~g_neutron # kaon0 # pi- -~g_K- # neutron # ~g_proton # kaon- # pi- -~g_K- # proton # ~g_proton # kaon- # pi0 -~g_K- # proton # ~g_proton # kaon0 # pi- -~g_K- # proton # ~g_neutron # kaon0 # pi0 -~g_K- # proton # ~g_neutron # kaon- # pi+ -~g_K0bar # neutron # ~g_neutron # kaon0 # pi0 -~g_K0bar # neutron # ~g_neutron # kaon- # pi+ -~g_K0bar # neutron # ~g_proton # kaon- # pi0 -~g_K0bar # neutron # ~g_proton # kaon0 # pi- -~g_K0bar # proton # ~g_proton # kaon0 # pi0 -~g_K0bar # proton # ~g_proton # kaon- # pi+ -~g_K0bar # proton # ~g_neutron # kaon0 # pi+ -~g_K0 # neutron # ~g_neutron # kaon- # pi0 -~g_K0 # neutron # ~g_neutron # kaon0 # pi- -~g_K0 # neutron # ~g_proton # kaon- # pi- -~g_K0 # proton # ~g_proton # kaon- # pi0 -~g_K0 # proton # ~g_proton # kaon0 # pi- -~g_K0 # proton # ~g_neutron # kaon0 # pi0 -~g_K0 # proton # ~g_neutron # kaon- # pi+ diff --git a/Simulation/G4Extensions/RHadrons/share/ProcessList_regge_gluino.txt b/Simulation/G4Extensions/RHadrons/share/ProcessList_regge_gluino.txt deleted file mode 100644 index 34baacd1e268225ac3664fb5503b9bddaf3ee351..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/ProcessList_regge_gluino.txt +++ /dev/null @@ -1,146 +0,0 @@ -~g_rho+ # proton # ~g_rho+ # proton -~g_rho0 # proton # ~g_rho0 # proton -~g_rho- # proton # ~g_rho- # proton -~g_rho0 # proton # ~g_rho+ # neutron -~g_rho- # proton # ~g_rho0 # neutron -~g_rho- # proton # ~g_Lambda0 # pi0 -~g_rho0 # proton # ~g_Lambda0 # pi+ -~g_rho+ # neutron # ~g_rho+ # neutron -~g_rho0 # neutron # ~g_rho0 # neutron -~g_rho- # neutron # ~g_rho- # neutron -~g_rho+ # neutron # ~g_rho0 # proton -~g_rho0 # neutron # ~g_rho- # proton -~g_rho- # neutron # ~g_rho0 # pi- -~g_rho- # neutron # ~g_Lambda0 # pi- -~g_rho0 # neutron # ~g_Lambda0 # pi0 -~g_rho+ # neutron # ~g_Lambda0 # pi+ -~g_rho+ # proton # ~g_rho+ # proton # pi0 -~g_rho0 # proton # ~g_rho0 # proton # pi0 -~g_rho- # proton # ~g_rho- # proton # pi0 -~g_rho0 # proton # ~g_rho+ # neutron # pi+ -~g_rho0 # proton # ~g_rho0 # neutron # pi+ -~g_rho- # proton # ~g_rho- # neutron # pi+ -~g_rho+ # proton # ~g_rho0 # proton # pi+ -~g_rho0 # proton # ~g_rho+ # proton # pi- -~g_rho- # proton # ~g_rho+ # neutron # pi- -~g_rho0 # proton # ~g_rho+ # neutron # pi0 -~g_rho- # proton # ~g_rho0 # proton # pi- -~g_rho0 # proton # ~g_rho- # proton # pi+ -~g_rho- # proton # ~g_rho0 # neutron # pi0 -~g_rho+ # proton # ~g_Lambda0 # pi+ # pi+ -~g_rho- # proton # ~g_Lambda0 # pi0 # pi0 -~g_rho0 # proton # ~g_Lambda0 # pi+ # pi0 -~g_rho- # proton # ~g_Lambda0 # pi+ # pi- -~g_rho+ # neutron # ~g_rho+ # neutron # pi0 -~g_rho0 # neutron # ~g_rho0 # neutron # pi0 -~g_rho- # neutron # ~g_rho- # neutron # pi0 -~g_rho+ # neutron # ~g_rho+ # proton # pi- -~g_rho0 # neutron # ~g_rho0 # proton # pi- -~g_rho- # neutron # ~g_rho- # proton # pi- -~g_rho+ # neutron # ~g_rho0 # proton # pi0 -~g_rho0 # neutron # ~g_rho+ # neutron # pi- -~g_rho- # neutron # ~g_rho0 # neutron # pi- -~g_rho+ # neutron # ~g_rho0 # neutron # pi+ -~g_rho0 # neutron # ~g_rho- # proton # pi0 -~g_rho+ # neutron # ~g_rho- # proton # pi+ -~g_rho0 # neutron # ~g_rho- # neutron # pi+ -~g_rho- # neutron # ~g_Lambda0 # pi- # pi0 -~g_rho0 # neutron # ~g_Lambda0 # pi0 # pi0 -~g_rho+ # neutron # ~g_Lambda0 # pi+ # pi0 -~g_rho0 # neutron # ~g_Lambda0 # pi+ # pi- -~g_K+ # proton # ~g_rho+ # proton -~g_K0 # proton # ~g_rho0 # proton -~g_K0bar # proton # ~g_rho0 # proton -~g_K- # proton # ~g_rho- # proton -~g_K0 # proton # ~g_rho+ # neutron -~g_K0bar # proton # ~g_rho+ # neutron -~g_K- # proton # ~g_rho0 # neutron -~g_K- # proton # ~g_Lambda0 # pi0 -~g_K0 # proton # ~g_Lambda0 # pi+ -~g_K0bar # proton # ~g_Lambda0 # pi+ -~g_K+ # neutron # ~g_rho+ # neutron -~g_K0 # neutron # ~g_rho0 # neutron -~g_K0bar # neutron # ~g_rho0 # neutron -~g_K- # neutron # ~g_rho- # neutron -~g_K+ # neutron # ~g_rho0 # proton -~g_K0 # neutron # ~g_rho- # proton -~g_K0bar # neutron # ~g_rho- # proton -~g_K- # neutron # ~g_rho0 # pi- -~g_K- # neutron # ~g_Lambda0 # pi- -~g_K0 # neutron # ~g_Lambda0 # pi0 -~g_K0bar # neutron # ~g_Lambda0 # pi0 -~g_K+ # neutron # ~g_Lambda0 # pi+ -~g_K+ # proton # ~g_rho+ # proton # pi0 -~g_K0 # proton # ~g_rho0 # proton # pi0 -~g_K0bar # proton # ~g_rho0 # proton # pi0 -~g_K- # proton # ~g_rho- # proton # pi0 -~g_K0 # proton # ~g_rho+ # neutron # pi+ -~g_K0 # proton # ~g_rho0 # neutron # pi+ -~g_K0bar # proton # ~g_rho+ # neutron # pi+ -~g_K0bar # proton # ~g_rho0 # neutron # pi+ -~g_K- # proton # ~g_rho- # neutron # pi+ -~g_K+ # proton # ~g_rho0 # proton # pi+ -~g_K0 # proton # ~g_rho+ # proton # pi- -~g_K0bar # proton # ~g_rho+ # proton # pi- -~g_K- # proton # ~g_rho+ # neutron # pi- -~g_K0 # proton # ~g_rho+ # neutron # pi0 -~g_K0bar # proton # ~g_rho+ # neutron # pi0 -~g_K- # proton # ~g_rho0 # proton # pi- -~g_K0 # proton # ~g_rho- # proton # pi+ -~g_K0bar # proton # ~g_rho- # proton # pi+ -~g_K- # proton # ~g_rho0 # neutron # pi0 -~g_K+ # proton # ~g_Lambda0 # pi+ # pi+ -~g_K- # proton # ~g_Lambda0 # pi0 # pi0 -~g_K0 # proton # ~g_Lambda0 # pi+ # pi0 -~g_K0bar # proton # ~g_Lambda0 # pi+ # pi0 -~g_K- # proton # ~g_Lambda0 # pi+ # pi- -~g_K+ # neutron # ~g_rho+ # neutron # pi0 -~g_K0 # neutron # ~g_rho0 # neutron # pi0 -~g_K0bar # neutron # ~g_rho0 # neutron # pi0 -~g_K- # neutron # ~g_rho- # neutron # pi0 -~g_K+ # neutron # ~g_rho+ # proton # pi- -~g_K0 # neutron # ~g_rho0 # proton # pi- -~g_K0bar # neutron # ~g_rho0 # proton # pi- -~g_K- # neutron # ~g_rho- # proton # pi- -~g_K+ # neutron # ~g_rho0 # proton # pi0 -~g_K0 # neutron # ~g_rho+ # neutron # pi- -~g_K0bar # neutron # ~g_rho+ # neutron # pi- -~g_K- # neutron # ~g_rho0 # neutron # pi- -~g_K+ # neutron # ~g_rho0 # neutron # pi+ -~g_K0 # neutron # ~g_rho- # proton # pi0 -~g_K0bar # neutron # ~g_rho- # proton # pi0 -~g_K+ # neutron # ~g_rho- # proton # pi+ -~g_K0 # neutron # ~g_rho- # neutron # pi+ -~g_K0bar # neutron # ~g_rho- # neutron # pi+ -~g_K- # neutron # ~g_Lambda0 # pi- # pi0 -~g_K0 # neutron # ~g_Lambda0 # pi0 # pi0 -~g_K0bar # neutron # ~g_Lambda0 # pi0 # pi0 -~g_K+ # neutron # ~g_Lambda0 # pi+ # pi0 -~g_K0 # neutron # ~g_Lambda0 # pi+ # pi- -~g_K0bar # neutron # ~g_Lambda0 # pi+ # pi- -~g_Lambda0 # proton # ~g_Lambda0 # proton -~g_Lambda0 # neutron # ~g_Lambda0 # neutron -~g_Lambda0 # proton # ~g_Lambda0 # proton # pi0 -~g_Lambda0 # proton # ~g_Lambda0 # neutron # pi+ -~g_Lambda0 # neutron # ~g_Lambda0 # neutron # pi0 -~g_Lambda0 # neutron # ~g_Lambda0 # proton # pi- -~g_glueball # proton # ~g_rho0 # proton -~g_glueball # proton # ~g_rho+ # neutron -~g_glueball # proton # ~g_Lambda0 # pi+ -~g_glueball # neutron # ~g_rho0 # neutron -~g_glueball # neutron # ~g_rho- # proton -~g_glueball # neutron # ~g_Lambda0 # pi0 -~g_glueball # proton # ~g_rho0 # proton # pi0 -~g_glueball # proton # ~g_rho+ # neutron # pi+ -~g_glueball # proton # ~g_rho0 # neutron # pi+ -~g_glueball # proton # ~g_rho+ # proton # pi- -~g_glueball # proton # ~g_rho+ # neutron # pi0 -~g_glueball # proton # ~g_rho- # proton # pi+ -~g_glueball # proton # ~g_Lambda0 # pi+ # pi0 -~g_glueball # neutron # ~g_rho0 # neutron # pi0 -~g_glueball # neutron # ~g_rho0 # proton # pi- -~g_glueball # neutron # ~g_rho+ # neutron # pi- -~g_glueball # neutron # ~g_rho- # proton # pi0 -~g_glueball # neutron # ~g_rho- # neutron # pi+ -~g_glueball # neutron # ~g_Lambda0 # pi0 # pi0 -~g_glueball # neutron # ~g_Lambda0 # pi+ # pi- diff --git a/Simulation/G4Extensions/RHadrons/share/ProcessList_regge_sbottom.txt b/Simulation/G4Extensions/RHadrons/share/ProcessList_regge_sbottom.txt deleted file mode 100644 index ef296aefe06a11656100fcad92ed3c538f54b0f6..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/ProcessList_regge_sbottom.txt +++ /dev/null @@ -1,66 +0,0 @@ -~B- # neutron # ~B- # neutron -~B- # neutron # ~B- # neutron # pi0 -~B- # neutron # ~B- # proton # pi- -~B- # neutron # ~B0 # neutron # pi- -~B- # neutron # ~B_ud0 # pi- -~B- # neutron # ~B_ud0 # pi- # pi0 -~B- # proton # ~B- # neutron # pi+ -~B- # proton # ~B- # proton -~B- # proton # ~B- # proton # pi0 -~B- # proton # ~B0 # neutron -~B- # proton # ~B0 # neutron # pi0 -~B- # proton # ~B0 # proton # pi- -~B- # proton # ~B_ud0 # pi0 -~B- # proton # ~B_ud0 # pi0 # pi0 -~B- # proton # ~B_ud0 # pi- # pi+ -~Bbar+ # neutron # ~Bbar+ # neutron -~Bbar+ # neutron # ~Bbar+ # neutron # pi0 -~Bbar+ # neutron # ~Bbar+ # proton # pi- -~Bbar+ # neutron # ~Bbar0 # neutron # pi+ -~Bbar+ # neutron # ~Bbar0 # proton -~Bbar+ # neutron # ~Bbar0 # proton # pi0 -~Bbar+ # proton # ~Bbar+ # neutron # pi+ -~Bbar+ # proton # ~Bbar+ # proton -~Bbar+ # proton # ~Bbar+ # proton # pi0 -~Bbar+ # proton # ~Bbar0 # proton # pi+ -~Bbar0 # neutron # ~Bbar+ # neutron # pi- -~Bbar0 # neutron # ~Bbar0 # neutron -~Bbar0 # neutron # ~Bbar0 # neutron # pi0 -~Bbar0 # neutron # ~Bbar0 # proton # pi- -~Bbar0 # proton # ~Bbar+ # neutron -~Bbar0 # proton # ~Bbar+ # neutron # pi0 -~Bbar0 # proton # ~Bbar+ # proton # pi- -~Bbar0 # proton # ~Bbar0 # neutron # pi+ -~Bbar0 # proton # ~Bbar0 # proton -~Bbar0 # proton # ~Bbar0 # proton # pi0 -~Bbar_ud0 # neutron # ~Bbar+ # pi- -~Bbar_ud0 # neutron # ~Bbar0 # pi0 -~Bbar_ud0 # neutron # ~Bbar_ud0 # neutron -~Bbar_ud0 # neutron # ~Bbar_ud0 # neutron # pi0 -~Bbar_ud0 # neutron # ~Bbar_ud0 # proton # pi- -~Bbar_ud0 # proton # ~Bbar+ # pi0 -~Bbar_ud0 # proton # ~Bbar0 # pi+ -~Bbar_ud0 # proton # ~Bbar_ud0 # neutron # pi+ -~Bbar_ud0 # proton # ~Bbar_ud0 # proton -~Bbar_ud0 # proton # ~Bbar_ud0 # proton # pi0 -~B0 # neutron # ~B- # neutron # pi- -~B0 # neutron # ~B- # proton -~B0 # neutron # ~B- # proton # pi0 -~B0 # neutron # ~B0 # neutron -~B0 # neutron # ~B0 # neutron # pi0 -~B0 # neutron # ~B0 # proton # pi- -~B0 # neutron # ~B_ud0 # pi0 -~B0 # neutron # ~B_ud0 # pi0 # pi0 -~B0 # neutron # ~B_ud0 # pi- # pi+ -~B0 # proton # ~B- # proton # pi+ -~B0 # proton # ~B0 # neutron # pi+ -~B0 # proton # ~B0 # proton -~B0 # proton # ~B0 # proton # pi0 -~B0 # proton # ~B_ud0 # pi+ -~B0 # proton # ~B_ud0 # pi+ # pi0 -~B_ud0 # neutron # ~B_ud0 # neutron -~B_ud0 # neutron # ~B_ud0 # neutron # pi0 -~B_ud0 # neutron # ~B_ud0 # proton # pi- -~B_ud0 # proton # ~B_ud0 # neutron # pi+ -~B_ud0 # proton # ~B_ud0 # proton -~B_ud0 # proton # ~B_ud0 # proton # pi0 diff --git a/Simulation/G4Extensions/RHadrons/share/ProcessList_regge_stop.txt b/Simulation/G4Extensions/RHadrons/share/ProcessList_regge_stop.txt deleted file mode 100644 index 47c0a518ef775adbb9ac2700921bcd07d17ec5fa..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/ProcessList_regge_stop.txt +++ /dev/null @@ -1,66 +0,0 @@ -~T0 # neutron # ~T0 # neutron -~T0 # neutron # ~T0 # neutron # pi0 -~T0 # neutron # ~T0 # proton # pi- -~T0 # neutron # ~T+ # neutron # pi- -~T0 # neutron # ~T_ud0+ # pi- -~T0 # neutron # ~T_ud0+ # pi- # pi0 -~T0 # proton # ~T0 # neutron # pi+ -~T0 # proton # ~T0 # proton -~T0 # proton # ~T0 # proton # pi0 -~T0 # proton # ~T+ # neutron -~T0 # proton # ~T+ # neutron # pi0 -~T0 # proton # ~T+ # proton # pi- -~T0 # proton # ~T_ud0+ # pi0 -~T0 # proton # ~T_ud0+ # pi0 # pi0 -~T0 # proton # ~T_ud0+ # pi- # pi+ -~Tbar0 # neutron # ~Tbar0 # neutron -~Tbar0 # neutron # ~Tbar0 # neutron # pi0 -~Tbar0 # neutron # ~Tbar0 # proton # pi- -~Tbar0 # neutron # ~Tbar- # neutron # pi+ -~Tbar0 # neutron # ~Tbar- # proton -~Tbar0 # neutron # ~Tbar- # proton # pi0 -~Tbar0 # proton # ~Tbar0 # neutron # pi+ -~Tbar0 # proton # ~Tbar0 # proton -~Tbar0 # proton # ~Tbar0 # proton # pi0 -~Tbar0 # proton # ~Tbar- # proton # pi+ -~Tbar- # neutron # ~Tbar0 # neutron # pi- -~Tbar- # neutron # ~Tbar- # neutron -~Tbar- # neutron # ~Tbar- # neutron # pi0 -~Tbar- # neutron # ~Tbar- # proton # pi- -~Tbar- # proton # ~Tbar0 # neutron -~Tbar- # proton # ~Tbar0 # neutron # pi0 -~Tbar- # proton # ~Tbar0 # proton # pi- -~Tbar- # proton # ~Tbar- # neutron # pi+ -~Tbar- # proton # ~Tbar- # proton -~Tbar- # proton # ~Tbar- # proton # pi0 -~Tbar_ud0- # neutron # ~Tbar0 # pi- -~Tbar_ud0- # neutron # ~Tbar- # pi0 -~Tbar_ud0- # neutron # ~Tbar_ud0- # neutron -~Tbar_ud0- # neutron # ~Tbar_ud0- # neutron # pi0 -~Tbar_ud0- # neutron # ~Tbar_ud0- # proton # pi- -~Tbar_ud0- # proton # ~Tbar0 # pi0 -~Tbar_ud0- # proton # ~Tbar- # pi+ -~Tbar_ud0- # proton # ~Tbar_ud0- # neutron # pi+ -~Tbar_ud0- # proton # ~Tbar_ud0- # proton -~Tbar_ud0- # proton # ~Tbar_ud0- # proton # pi0 -~T+ # neutron # ~T0 # neutron # pi- -~T+ # neutron # ~T0 # proton -~T+ # neutron # ~T0 # proton # pi0 -~T+ # neutron # ~T+ # neutron -~T+ # neutron # ~T+ # neutron # pi0 -~T+ # neutron # ~T+ # proton # pi- -~T+ # neutron # ~T_ud0+ # pi0 -~T+ # neutron # ~T_ud0+ # pi0 # pi0 -~T+ # neutron # ~T_ud0+ # pi- # pi+ -~T+ # proton # ~T0 # proton # pi+ -~T+ # proton # ~T+ # neutron # pi+ -~T+ # proton # ~T+ # proton -~T+ # proton # ~T+ # proton # pi0 -~T+ # proton # ~T_ud0+ # pi+ -~T+ # proton # ~T_ud0+ # pi+ # pi0 -~T_ud0+ # neutron # ~T_ud0+ # neutron -~T_ud0+ # neutron # ~T_ud0+ # neutron # pi0 -~T_ud0+ # neutron # ~T_ud0+ # proton # pi- -~T_ud0+ # proton # ~T_ud0+ # neutron # pi+ -~T_ud0+ # proton # ~T_ud0+ # proton -~T_ud0+ # proton # ~T_ud0+ # proton # pi0 diff --git a/Simulation/G4Extensions/RHadrons/share/SG_StepNtuple.py b/Simulation/G4Extensions/RHadrons/share/SG_StepNtuple.py index 2b0cf17972cd18a440f93b8de6e71306f0c3d946..5fc5c1ec370105a89fcf38cfb05c26bb9a33b0b9 100644 --- a/Simulation/G4Extensions/RHadrons/share/SG_StepNtuple.py +++ b/Simulation/G4Extensions/RHadrons/share/SG_StepNtuple.py @@ -1,5 +1,7 @@ +# Simple include for setting up SG Step Ntuple Tool + from G4AtlasApps.SimFlags import simFlags -simFlags.OptionalUserActionList.addAction('G4UA::SG_StepNtupleTool') +simFlags.OptionalUserActionList.addAction('G4UA::SG_StepNtupleTool',['Run','Event','Step']) theApp.HistogramPersistency = "ROOT" NTupleSvc = Service( "NTupleSvc" ) diff --git a/Simulation/G4Extensions/RHadrons/share/decays.txt b/Simulation/G4Extensions/RHadrons/share/decays.txt deleted file mode 100644 index 393e8cd38ad3a764a392fd3892ddff3119af556e..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/decays.txt +++ /dev/null @@ -1,3 +0,0 @@ -~g_Delta+ proton s_chi_0_1 1 -~g_Delta0 neutron s_chi_0_1 0.5 -~g_Delta0 neutron pi0 s_chi_0_1 0.5 diff --git a/Simulation/G4Extensions/RHadrons/share/jobOptions.R-hadron_Sim.py b/Simulation/G4Extensions/RHadrons/share/jobOptions.R-hadron_Sim.py deleted file mode 100644 index 7c2a60fac2a36da24b7c83629a7beb29d824fe48..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/jobOptions.R-hadron_Sim.py +++ /dev/null @@ -1,79 +0,0 @@ -#============================================================== -# -# Job options file for Geant4 Simulations of R-hadrons -# -# Models are : -# "generic": Eur.Phys.J.C50:353-362,2007 -# "regge": arXiv:0909.5104arXiv:0909.5104 -# -# Prerequisites for your run-dir: -# - PhysicsConfiguration.txt: -# Three variations exist in this package: -# - PhysicsConfiguration_generic.txt -# - PhysicsConfiguration_regge.txt -# - PhysicsConfiguration_regge_nomix.txt -# - particles.txt: Can be get_file'd from particles_<model>_<sparticle>_<mass>GeV.txt in this package -# - PDGTABLE.MeV: Get as PDGTABLE_<model>_<sparticle>_<mass>GeV.MeV -# - ProcessList.txt: Get as ProcessList_<model>_<sparticle>.txt -# -# For instructions on how to run with R-hadron decays see further down -#============================================================== - -from AthenaCommon.DetFlags import DetFlags -DetFlags.ID_setOn() -DetFlags.Calo_setOn() -DetFlags.Muon_setOn() -DetFlags.simulate.Truth_setOn() - -from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.PoolHitsOutput = 'atlas_MyOutputFile.root' -athenaCommonFlags.EvtMax = 3 - -## Global conditions tag -from AthenaCommon.GlobalFlags import globalflags -globalflags.ConditionsTag = "OFLCOND-SDR-BS7T-04-03" - -from G4AtlasApps.SimFlags import SimFlags -SimFlags.load_atlas_flags() -SimFlags.SimLayout.set_On() -SimFlags.EventFilter.set_On() - -## Run ParticleGenerator -import AthenaCommon.AtlasUnixGeneratorJob -print "Particle PDG code is ", PDGcode -spgorders = ['pdgcode: constant 1009213', - 'vertX: constant 0.0', - 'vertY: constant 0.0', - 'vertZ: constant 0.0', - 't: constant 0.0', - 'eta: constant 0.5', - 'phi: flat 0 6.28318', - 'energy: constant 1300975'] # 300975 # 301000 - -## If you want decays, place decays.txt in your run-dir and uncomment this block -## to define the neutralino and set the neutralino mass to something sensible -#def enable_rhadron_decays(): -# from G4AtlasApps import AtlasG4Eng -# AtlasG4Eng.G4Eng._ctrl.load("Gauginos") -# lsp = AtlasG4Eng.G4Eng.gbl.ParticleDataModifier("s_chi_0_1") -# lsp.SetParticleMass(150*GeV) -# lsp.Stable(True) -#SimFlags.initFunctions.add_function("preInitPhysics", enable_rhadron_decays) - -## Load RHadrons library in the sim init flow -def load_rhadrons_lib(): - from G4AtlasApps import AtlasG4Eng - AtlasG4Eng.G4Eng.load_Lib("RHadrons") -SimFlags.initFunctions.add_function("preInitPhysics", load_rhadrons_lib) - -## Populate alg sequence -from AthenaCommon.AlgSequence import AlgSequence -topSeq = AlgSequence() -from ParticleGenerator.ParticleGeneratorConf import ParticleGenerator -topSeq += ParticleGenerator() -topSeq.ParticleGenerator.orders = sorted(spgorders) - -include("G4AtlasApps/G4Atlas.flat.configuration.py") - -from AthenaCommon.CfgGetter import getAlgorithm -topSeq += getAlgorithm("G4AtlasAlg",tryDefaultConfigurable=True) diff --git a/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_1000GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_1000GeV.txt deleted file mode 100644 index 7cfa435b76a608ecbe778bd19186df550e918d75..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_1000GeV.txt +++ /dev/null @@ -1,32 +0,0 @@ - 1000021 1000.000 # ~g - 1000993 1000.700 # ~g_glueball - 1009213 1000.650 # ~g_rho+ - 1009313 1000.825 # ~g_K*0 - 1009323 1000.825 # ~g_K*+ - 1009113 1000.650 # ~g_rho0 - 1009223 1000.650 # ~g_omega - 1009333 1001.800 # ~g_phi - 1091114 1000.975 # ~g_Delta- - 1092114 1000.975 # ~g_Delta0 - 1092214 1000.975 # ~g_Delta+ - 1092224 1000.975 # ~g_Delta++ - 1093114 1001.150 # ~g_Sigma*- - 1093214 1001.150 # ~g_Sigma*0 - 1093224 1001.150 # ~g_Sigma*+ - 1093314 1001.300 # ~g_Xi*- - 1093324 1001.300 # ~g_Xi*0 - 1093334 1001.600 # ~g_Omega- - -1009213 1000.650 # ~g_rho- - -1009313 1000.825 # ~g_K*bar0 - -1009323 1000.825 # ~g_K*- - -1091114 1000.975 # ~g_Deltabar+ - -1092114 1000.975 # ~g_Deltabar0 - -1092214 1000.975 # ~g_Deltabar- - -1092224 1000.975 # ~g_Deltabar-- - -1093114 1001.150 # ~g_Sigma*bar+ - -1093214 1001.150 # ~g_Sigma*bar0 - -1093224 1001.150 # ~g_Sigma*bar- - -1093314 1001.300 # ~g_Xi*bar+ - -1093324 1001.300 # ~g_Xi*bar0 - -1093334 1001.600 # ~g_Omegabar+ - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_100GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_100GeV.txt deleted file mode 100644 index 93353cb6cc62f8f95cd7a9bddad63305d7098b9f..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_100GeV.txt +++ /dev/null @@ -1,32 +0,0 @@ - 1000021 100.000 # ~g - 1000993 100.700 # ~g_glueball - 1009213 100.650 # ~g_rho+ - 1009313 100.825 # ~g_K*0 - 1009323 100.825 # ~g_K*+ - 1009113 100.650 # ~g_rho0 - 1009223 100.650 # ~g_omega - 1009333 101.800 # ~g_phi - 1091114 100.975 # ~g_Delta- - 1092114 100.975 # ~g_Delta0 - 1092214 100.975 # ~g_Delta+ - 1092224 100.975 # ~g_Delta++ - 1093114 101.150 # ~g_Sigma*- - 1093214 101.150 # ~g_Sigma*0 - 1093224 101.150 # ~g_Sigma*+ - 1093314 101.300 # ~g_Xi*- - 1093324 101.300 # ~g_Xi*0 - 1093334 101.600 # ~g_Omega- - -1009213 100.650 # ~g_rho- - -1009313 100.825 # ~g_K*bar0 - -1009323 100.825 # ~g_K*- - -1091114 100.975 # ~g_Deltabar+ - -1092114 100.975 # ~g_Deltabar0 - -1092214 100.975 # ~g_Deltabar- - -1092224 100.975 # ~g_Deltabar-- - -1093114 101.150 # ~g_Sigma*bar+ - -1093214 101.150 # ~g_Sigma*bar0 - -1093224 101.150 # ~g_Sigma*bar- - -1093314 101.300 # ~g_Xi*bar+ - -1093324 101.300 # ~g_Xi*bar0 - -1093334 101.600 # ~g_Omegabar+ - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_1300GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_1300GeV.txt deleted file mode 100644 index 092eb889e538d0b8e8dbebb713ad78169f25106e..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_1300GeV.txt +++ /dev/null @@ -1,32 +0,0 @@ - 1000021 1300.000 # ~g - 1000993 1300.700 # ~g_glueball - 1009213 1300.650 # ~g_rho+ - 1009313 1300.825 # ~g_K*0 - 1009323 1300.825 # ~g_K*+ - 1009113 1300.650 # ~g_rho0 - 1009223 1300.650 # ~g_omega - 1009333 1301.800 # ~g_phi - 1091114 1300.975 # ~g_Delta- - 1092114 1300.975 # ~g_Delta0 - 1092214 1300.975 # ~g_Delta+ - 1092224 1300.975 # ~g_Delta++ - 1093114 1301.150 # ~g_Sigma*- - 1093214 1301.150 # ~g_Sigma*0 - 1093224 1301.150 # ~g_Sigma*+ - 1093314 1301.300 # ~g_Xi*- - 1093324 1301.300 # ~g_Xi*0 - 1093334 1301.600 # ~g_Omega- - -1009213 1300.650 # ~g_rho- - -1009313 1300.825 # ~g_K*bar0 - -1009323 1300.825 # ~g_K*- - -1091114 1300.975 # ~g_Deltabar+ - -1092114 1300.975 # ~g_Deltabar0 - -1092214 1300.975 # ~g_Deltabar- - -1092224 1300.975 # ~g_Deltabar-- - -1093114 1301.150 # ~g_Sigma*bar+ - -1093214 1301.150 # ~g_Sigma*bar0 - -1093224 1301.150 # ~g_Sigma*bar- - -1093314 1301.300 # ~g_Xi*bar+ - -1093324 1301.300 # ~g_Xi*bar0 - -1093334 1301.600 # ~g_Omegabar+ - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_1600GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_1600GeV.txt deleted file mode 100644 index 650b3dc921fdcb7a2ed6bd68701f31977d967e4b..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_1600GeV.txt +++ /dev/null @@ -1,32 +0,0 @@ - 1000021 1600.000 # ~g - 1000993 1600.700 # ~g_glueball - 1009213 1600.650 # ~g_rho+ - 1009313 1600.825 # ~g_K*0 - 1009323 1600.825 # ~g_K*+ - 1009113 1600.650 # ~g_rho0 - 1009223 1600.650 # ~g_omega - 1009333 1601.800 # ~g_phi - 1091114 1600.975 # ~g_Delta- - 1092114 1600.975 # ~g_Delta0 - 1092214 1600.975 # ~g_Delta+ - 1092224 1600.975 # ~g_Delta++ - 1093114 1601.150 # ~g_Sigma*- - 1093214 1601.150 # ~g_Sigma*0 - 1093224 1601.150 # ~g_Sigma*+ - 1093314 1601.300 # ~g_Xi*- - 1093324 1601.300 # ~g_Xi*0 - 1093334 1601.600 # ~g_Omega- - -1009213 1600.650 # ~g_rho- - -1009313 1600.825 # ~g_K*bar0 - -1009323 1600.825 # ~g_K*- - -1091114 1600.975 # ~g_Deltabar+ - -1092114 1600.975 # ~g_Deltabar0 - -1092214 1600.975 # ~g_Deltabar- - -1092224 1600.975 # ~g_Deltabar-- - -1093114 1601.150 # ~g_Sigma*bar+ - -1093214 1601.150 # ~g_Sigma*bar0 - -1093224 1601.150 # ~g_Sigma*bar- - -1093314 1601.300 # ~g_Xi*bar+ - -1093324 1601.300 # ~g_Xi*bar0 - -1093334 1601.600 # ~g_Omegabar+ - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_2000GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_2000GeV.txt deleted file mode 100644 index de1f890ee7becb0c95a2664d25c5fa3fa7583559..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_2000GeV.txt +++ /dev/null @@ -1,32 +0,0 @@ - 1000021 2000.000 # ~g - 1000993 2000.700 # ~g_glueball - 1009213 2000.650 # ~g_rho+ - 1009313 2000.825 # ~g_K*0 - 1009323 2000.825 # ~g_K*+ - 1009113 2000.650 # ~g_rho0 - 1009223 2000.650 # ~g_omega - 1009333 2001.800 # ~g_phi - 1091114 2000.975 # ~g_Delta- - 1092114 2000.975 # ~g_Delta0 - 1092214 2000.975 # ~g_Delta+ - 1092224 2000.975 # ~g_Delta++ - 1093114 2001.150 # ~g_Sigma*- - 1093214 2001.150 # ~g_Sigma*0 - 1093224 2001.150 # ~g_Sigma*+ - 1093314 2001.300 # ~g_Xi*- - 1093324 2001.300 # ~g_Xi*0 - 1093334 2001.600 # ~g_Omega- - -1009213 2000.650 # ~g_rho- - -1009313 2000.825 # ~g_K*bar0 - -1009323 2000.825 # ~g_K*- - -1091114 2000.975 # ~g_Deltabar+ - -1092114 2000.975 # ~g_Deltabar0 - -1092214 2000.975 # ~g_Deltabar- - -1092224 2000.975 # ~g_Deltabar-- - -1093114 2001.150 # ~g_Sigma*bar+ - -1093214 2001.150 # ~g_Sigma*bar0 - -1093224 2001.150 # ~g_Sigma*bar- - -1093314 2001.300 # ~g_Xi*bar+ - -1093324 2001.300 # ~g_Xi*bar0 - -1093334 2001.600 # ~g_Omegabar+ - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_200GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_200GeV.txt deleted file mode 100644 index bf87feaa20ca7cca2036a175c14b5068463eb360..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_200GeV.txt +++ /dev/null @@ -1,32 +0,0 @@ - 1000021 200.000 # ~g - 1000993 200.700 # ~g_glueball - 1009213 200.650 # ~g_rho+ - 1009313 200.825 # ~g_K*0 - 1009323 200.825 # ~g_K*+ - 1009113 200.650 # ~g_rho0 - 1009223 200.650 # ~g_omega - 1009333 201.800 # ~g_phi - 1091114 200.975 # ~g_Delta- - 1092114 200.975 # ~g_Delta0 - 1092214 200.975 # ~g_Delta+ - 1092224 200.975 # ~g_Delta++ - 1093114 201.150 # ~g_Sigma*- - 1093214 201.150 # ~g_Sigma*0 - 1093224 201.150 # ~g_Sigma*+ - 1093314 201.300 # ~g_Xi*- - 1093324 201.300 # ~g_Xi*0 - 1093334 201.600 # ~g_Omega- - -1009213 200.650 # ~g_rho- - -1009313 200.825 # ~g_K*bar0 - -1009323 200.825 # ~g_K*- - -1091114 200.975 # ~g_Deltabar+ - -1092114 200.975 # ~g_Deltabar0 - -1092214 200.975 # ~g_Deltabar- - -1092224 200.975 # ~g_Deltabar-- - -1093114 201.150 # ~g_Sigma*bar+ - -1093214 201.150 # ~g_Sigma*bar0 - -1093224 201.150 # ~g_Sigma*bar- - -1093314 201.300 # ~g_Xi*bar+ - -1093324 201.300 # ~g_Xi*bar0 - -1093334 201.600 # ~g_Omegabar+ - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_300GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_300GeV.txt deleted file mode 100644 index 2883dbb7fb0193c2e2adaf207bd7bbb73f17f668..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_300GeV.txt +++ /dev/null @@ -1,32 +0,0 @@ - 1000021 300.000 # ~g - 1000993 300.700 # ~g_glueball - 1009213 300.650 # ~g_rho+ - 1009313 300.825 # ~g_K*0 - 1009323 300.825 # ~g_K*+ - 1009113 300.650 # ~g_rho0 - 1009223 300.650 # ~g_omega - 1009333 301.800 # ~g_phi - 1091114 300.975 # ~g_Delta- - 1092114 300.975 # ~g_Delta0 - 1092214 300.975 # ~g_Delta+ - 1092224 300.975 # ~g_Delta++ - 1093114 301.150 # ~g_Sigma*- - 1093214 301.150 # ~g_Sigma*0 - 1093224 301.150 # ~g_Sigma*+ - 1093314 301.300 # ~g_Xi*- - 1093324 301.300 # ~g_Xi*0 - 1093334 301.600 # ~g_Omega- - -1009213 300.650 # ~g_rho- - -1009313 300.825 # ~g_K*bar0 - -1009323 300.825 # ~g_K*- - -1091114 300.975 # ~g_Deltabar+ - -1092114 300.975 # ~g_Deltabar0 - -1092214 300.975 # ~g_Deltabar- - -1092224 300.975 # ~g_Deltabar-- - -1093114 301.150 # ~g_Sigma*bar+ - -1093214 301.150 # ~g_Sigma*bar0 - -1093224 301.150 # ~g_Sigma*bar- - -1093314 301.300 # ~g_Xi*bar+ - -1093324 301.300 # ~g_Xi*bar0 - -1093334 301.600 # ~g_Omegabar+ - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_400GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_400GeV.txt deleted file mode 100644 index e71cc8576f6c8fd7a2a5c22453d3a8496c540ac3..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_400GeV.txt +++ /dev/null @@ -1,32 +0,0 @@ - 1000021 400.000 # ~g - 1000993 400.700 # ~g_glueball - 1009213 400.650 # ~g_rho+ - 1009313 400.825 # ~g_K*0 - 1009323 400.825 # ~g_K*+ - 1009113 400.650 # ~g_rho0 - 1009223 400.650 # ~g_omega - 1009333 401.800 # ~g_phi - 1091114 400.975 # ~g_Delta- - 1092114 400.975 # ~g_Delta0 - 1092214 400.975 # ~g_Delta+ - 1092224 400.975 # ~g_Delta++ - 1093114 401.150 # ~g_Sigma*- - 1093214 401.150 # ~g_Sigma*0 - 1093224 401.150 # ~g_Sigma*+ - 1093314 401.300 # ~g_Xi*- - 1093324 401.300 # ~g_Xi*0 - 1093334 401.600 # ~g_Omega- - -1009213 400.650 # ~g_rho- - -1009313 400.825 # ~g_K*bar0 - -1009323 400.825 # ~g_K*- - -1091114 400.975 # ~g_Deltabar+ - -1092114 400.975 # ~g_Deltabar0 - -1092214 400.975 # ~g_Deltabar- - -1092224 400.975 # ~g_Deltabar-- - -1093114 401.150 # ~g_Sigma*bar+ - -1093214 401.150 # ~g_Sigma*bar0 - -1093224 401.150 # ~g_Sigma*bar- - -1093314 401.300 # ~g_Xi*bar+ - -1093324 401.300 # ~g_Xi*bar0 - -1093334 401.600 # ~g_Omegabar+ - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_500GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_500GeV.txt deleted file mode 100644 index 1798ba20136fe07088d9c9613eb65984460b5e09..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_500GeV.txt +++ /dev/null @@ -1,32 +0,0 @@ - 1000021 500.000 # ~g - 1000993 500.700 # ~g_glueball - 1009213 500.650 # ~g_rho+ - 1009313 500.825 # ~g_K*0 - 1009323 500.825 # ~g_K*+ - 1009113 500.650 # ~g_rho0 - 1009223 500.650 # ~g_omega - 1009333 501.800 # ~g_phi - 1091114 500.975 # ~g_Delta- - 1092114 500.975 # ~g_Delta0 - 1092214 500.975 # ~g_Delta+ - 1092224 500.975 # ~g_Delta++ - 1093114 501.150 # ~g_Sigma*- - 1093214 501.150 # ~g_Sigma*0 - 1093224 501.150 # ~g_Sigma*+ - 1093314 501.300 # ~g_Xi*- - 1093324 501.300 # ~g_Xi*0 - 1093334 501.600 # ~g_Omega- - -1009213 500.650 # ~g_rho- - -1009313 500.825 # ~g_K*bar0 - -1009323 500.825 # ~g_K*- - -1091114 500.975 # ~g_Deltabar+ - -1092114 500.975 # ~g_Deltabar0 - -1092214 500.975 # ~g_Deltabar- - -1092224 500.975 # ~g_Deltabar-- - -1093114 501.150 # ~g_Sigma*bar+ - -1093214 501.150 # ~g_Sigma*bar0 - -1093224 501.150 # ~g_Sigma*bar- - -1093314 501.300 # ~g_Xi*bar+ - -1093324 501.300 # ~g_Xi*bar0 - -1093334 501.600 # ~g_Omegabar+ - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_600GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_600GeV.txt deleted file mode 100644 index 26fca2b1472111413eff0328624fbceae8aaa8db..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_600GeV.txt +++ /dev/null @@ -1,32 +0,0 @@ - 1000021 600.000 # ~g - 1000993 600.700 # ~g_glueball - 1009213 600.650 # ~g_rho+ - 1009313 600.825 # ~g_K*0 - 1009323 600.825 # ~g_K*+ - 1009113 600.650 # ~g_rho0 - 1009223 600.650 # ~g_omega - 1009333 601.800 # ~g_phi - 1091114 600.975 # ~g_Delta- - 1092114 600.975 # ~g_Delta0 - 1092214 600.975 # ~g_Delta+ - 1092224 600.975 # ~g_Delta++ - 1093114 601.150 # ~g_Sigma*- - 1093214 601.150 # ~g_Sigma*0 - 1093224 601.150 # ~g_Sigma*+ - 1093314 601.300 # ~g_Xi*- - 1093324 601.300 # ~g_Xi*0 - 1093334 601.600 # ~g_Omega- - -1009213 600.650 # ~g_rho- - -1009313 600.825 # ~g_K*bar0 - -1009323 600.825 # ~g_K*- - -1091114 600.975 # ~g_Deltabar+ - -1092114 600.975 # ~g_Deltabar0 - -1092214 600.975 # ~g_Deltabar- - -1092224 600.975 # ~g_Deltabar-- - -1093114 601.150 # ~g_Sigma*bar+ - -1093214 601.150 # ~g_Sigma*bar0 - -1093224 601.150 # ~g_Sigma*bar- - -1093314 601.300 # ~g_Xi*bar+ - -1093324 601.300 # ~g_Xi*bar0 - -1093334 601.600 # ~g_Omegabar+ - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_700GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_700GeV.txt deleted file mode 100644 index 13d3aecc58310dd26372e42c86632aea55a93eee..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_700GeV.txt +++ /dev/null @@ -1,32 +0,0 @@ - 1000021 700.000 # ~g - 1000993 700.700 # ~g_glueball - 1009213 700.650 # ~g_rho+ - 1009313 700.825 # ~g_K*0 - 1009323 700.825 # ~g_K*+ - 1009113 700.650 # ~g_rho0 - 1009223 700.650 # ~g_omega - 1009333 701.800 # ~g_phi - 1091114 700.975 # ~g_Delta- - 1092114 700.975 # ~g_Delta0 - 1092214 700.975 # ~g_Delta+ - 1092224 700.975 # ~g_Delta++ - 1093114 701.150 # ~g_Sigma*- - 1093214 701.150 # ~g_Sigma*0 - 1093224 701.150 # ~g_Sigma*+ - 1093314 701.300 # ~g_Xi*- - 1093324 701.300 # ~g_Xi*0 - 1093334 701.600 # ~g_Omega- - -1009213 700.650 # ~g_rho- - -1009313 700.825 # ~g_K*bar0 - -1009323 700.825 # ~g_K*- - -1091114 700.975 # ~g_Deltabar+ - -1092114 700.975 # ~g_Deltabar0 - -1092214 700.975 # ~g_Deltabar- - -1092224 700.975 # ~g_Deltabar-- - -1093114 701.150 # ~g_Sigma*bar+ - -1093214 701.150 # ~g_Sigma*bar0 - -1093224 701.150 # ~g_Sigma*bar- - -1093314 701.300 # ~g_Xi*bar+ - -1093324 701.300 # ~g_Xi*bar0 - -1093334 701.600 # ~g_Omegabar+ - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_800GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_800GeV.txt deleted file mode 100644 index 1c213e89fe2db6ab4110b687a0cde4468f41f05f..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_800GeV.txt +++ /dev/null @@ -1,32 +0,0 @@ - 1000021 800.000 # ~g - 1000993 800.700 # ~g_glueball - 1009213 800.650 # ~g_rho+ - 1009313 800.825 # ~g_K*0 - 1009323 800.825 # ~g_K*+ - 1009113 800.650 # ~g_rho0 - 1009223 800.650 # ~g_omega - 1009333 801.800 # ~g_phi - 1091114 800.975 # ~g_Delta- - 1092114 800.975 # ~g_Delta0 - 1092214 800.975 # ~g_Delta+ - 1092224 800.975 # ~g_Delta++ - 1093114 801.150 # ~g_Sigma*- - 1093214 801.150 # ~g_Sigma*0 - 1093224 801.150 # ~g_Sigma*+ - 1093314 801.300 # ~g_Xi*- - 1093324 801.300 # ~g_Xi*0 - 1093334 801.600 # ~g_Omega- - -1009213 800.650 # ~g_rho- - -1009313 800.825 # ~g_K*bar0 - -1009323 800.825 # ~g_K*- - -1091114 800.975 # ~g_Deltabar+ - -1092114 800.975 # ~g_Deltabar0 - -1092214 800.975 # ~g_Deltabar- - -1092224 800.975 # ~g_Deltabar-- - -1093114 801.150 # ~g_Sigma*bar+ - -1093214 801.150 # ~g_Sigma*bar0 - -1093224 801.150 # ~g_Sigma*bar- - -1093314 801.300 # ~g_Xi*bar+ - -1093324 801.300 # ~g_Xi*bar0 - -1093334 801.600 # ~g_Omegabar+ - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_900GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_900GeV.txt deleted file mode 100644 index b21f679dff01aca151478867ff8ce0951e1b4004..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_generic_gluino_900GeV.txt +++ /dev/null @@ -1,32 +0,0 @@ - 1000021 900.000 # ~g - 1000993 900.700 # ~g_glueball - 1009213 900.650 # ~g_rho+ - 1009313 900.825 # ~g_K*0 - 1009323 900.825 # ~g_K*+ - 1009113 900.650 # ~g_rho0 - 1009223 900.650 # ~g_omega - 1009333 901.800 # ~g_phi - 1091114 900.975 # ~g_Delta- - 1092114 900.975 # ~g_Delta0 - 1092214 900.975 # ~g_Delta+ - 1092224 900.975 # ~g_Delta++ - 1093114 901.150 # ~g_Sigma*- - 1093214 901.150 # ~g_Sigma*0 - 1093224 901.150 # ~g_Sigma*+ - 1093314 901.300 # ~g_Xi*- - 1093324 901.300 # ~g_Xi*0 - 1093334 901.600 # ~g_Omega- - -1009213 900.650 # ~g_rho- - -1009313 900.825 # ~g_K*bar0 - -1009323 900.825 # ~g_K*- - -1091114 900.975 # ~g_Deltabar+ - -1092114 900.975 # ~g_Deltabar0 - -1092214 900.975 # ~g_Deltabar- - -1092224 900.975 # ~g_Deltabar-- - -1093114 901.150 # ~g_Sigma*bar+ - -1093214 901.150 # ~g_Sigma*bar0 - -1093224 901.150 # ~g_Sigma*bar- - -1093314 901.300 # ~g_Xi*bar+ - -1093324 901.300 # ~g_Xi*bar0 - -1093334 901.600 # ~g_Omegabar+ - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_1000GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_1000GeV.txt deleted file mode 100644 index ecb7229f77ef662dd1dcc663137b2045611bffc0..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_1000GeV.txt +++ /dev/null @@ -1,30 +0,0 @@ - 1000006 1000.000 # ~t_1 - 1000612 1000.325 # ~T+ - 1000622 1000.325 # ~T0 - 1000632 1000.500 # ~T_s+ - 1000642 1001.500 # ~T_c0 - 1000652 1004.800 # ~T_b+ - 1006113 1000.650 # ~T_dd10 - 1006211 1000.650 # ~T_ud0+ - 1006213 1000.650 # ~T_ud1+ - 1006223 1000.650 # ~T_uu1++ - 1006311 1000.825 # ~T_sd00 - 1006313 1000.825 # ~T_sd10 - 1006321 1000.825 # ~T_su0+ - 1006323 1000.825 # ~T_su1+ - 1006333 1001.000 # ~T_ss10 - -1000006 1000.000 # ~t_1bar - -1000612 1000.325 # ~Tbar- - -1000622 1000.325 # ~Tbar0 - -1000632 1000.500 # ~Tbar_s- - -1000642 1001.500 # ~Tbar_c0 - -1000652 1004.800 # ~Tbar_b- - -1006113 1000.650 # ~Tbar_dd10 - -1006211 1000.650 # ~Tbar_ud0- - -1006213 1000.650 # ~Tbar_ud1- - -1006223 1000.650 # ~Tbar_uu1-- - -1006311 1000.825 # ~Tbar_sd00 - -1006313 1000.825 # ~Tbar_sd10 - -1006321 1000.825 # ~Tbar_su0- - -1006323 1000.825 # ~Tbar_su1- - -1006333 1001.000 # ~Tbar_ss10 diff --git a/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_100GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_100GeV.txt deleted file mode 100644 index 1429a7e43407e60fd978085a20bb1c6cfe18a785..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_100GeV.txt +++ /dev/null @@ -1,31 +0,0 @@ - 1000006 100.000 # ~t_1 - 1000612 100.325 # ~T+ - 1000622 100.325 # ~T0 - 1000632 100.500 # ~T_s+ - 1000642 101.500 # ~T_c0 - 1000652 104.800 # ~T_b+ - 1006113 100.650 # ~T_dd10 - 1006211 100.650 # ~T_ud0+ - 1006213 100.650 # ~T_ud1+ - 1006223 100.650 # ~T_uu1++ - 1006311 100.825 # ~T_sd00 - 1006313 100.825 # ~T_sd10 - 1006321 100.825 # ~T_su0+ - 1006323 100.825 # ~T_su1+ - 1006333 101.000 # ~T_ss10 - -1000006 100.000 # ~t_1bar - -1000612 100.325 # ~Tbar- - -1000622 100.325 # ~Tbar0 - -1000632 100.500 # ~Tbar_s- - -1000642 101.500 # ~Tbar_c0 - -1000652 104.800 # ~Tbar_b- - -1006113 100.650 # ~Tbar_dd10 - -1006211 100.650 # ~Tbar_ud0- - -1006213 100.650 # ~Tbar_ud1- - -1006223 100.650 # ~Tbar_uu1-- - -1006311 100.825 # ~Tbar_sd00 - -1006313 100.825 # ~Tbar_sd10 - -1006321 100.825 # ~Tbar_su0- - -1006323 100.825 # ~Tbar_su1- - -1006333 101.000 # ~Tbar_ss10 - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_200GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_200GeV.txt deleted file mode 100644 index 6b65bcab4fea2cac11c1c711c00e51b3aee5adba..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_200GeV.txt +++ /dev/null @@ -1,31 +0,0 @@ - 1000006 200.000 # ~t_1 - 1000612 200.325 # ~T+ - 1000622 200.325 # ~T0 - 1000632 200.500 # ~T_s+ - 1000642 201.500 # ~T_c0 - 1000652 204.800 # ~T_b+ - 1006113 200.650 # ~T_dd10 - 1006211 200.650 # ~T_ud0+ - 1006213 200.650 # ~T_ud1+ - 1006223 200.650 # ~T_uu1++ - 1006311 200.825 # ~T_sd00 - 1006313 200.825 # ~T_sd10 - 1006321 200.825 # ~T_su0+ - 1006323 200.825 # ~T_su1+ - 1006333 201.000 # ~T_ss10 - -1000006 200.000 # ~t_1bar - -1000612 200.325 # ~Tbar- - -1000622 200.325 # ~Tbar0 - -1000632 200.500 # ~Tbar_s- - -1000642 201.500 # ~Tbar_c0 - -1000652 204.800 # ~Tbar_b- - -1006113 200.650 # ~Tbar_dd10 - -1006211 200.650 # ~Tbar_ud0- - -1006213 200.650 # ~Tbar_ud1- - -1006223 200.650 # ~Tbar_uu1-- - -1006311 200.825 # ~Tbar_sd00 - -1006313 200.825 # ~Tbar_sd10 - -1006321 200.825 # ~Tbar_su0- - -1006323 200.825 # ~Tbar_su1- - -1006333 201.000 # ~Tbar_ss10 - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_300GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_300GeV.txt deleted file mode 100644 index 44be36d50cbb445ceea0a0d69ad823bda9c70b14..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_300GeV.txt +++ /dev/null @@ -1,31 +0,0 @@ - 1000006 300.000 # ~t_1 - 1000612 300.325 # ~T+ - 1000622 300.325 # ~T0 - 1000632 300.500 # ~T_s+ - 1000642 301.500 # ~T_c0 - 1000652 304.800 # ~T_b+ - 1006113 300.650 # ~T_dd10 - 1006211 300.650 # ~T_ud0+ - 1006213 300.650 # ~T_ud1+ - 1006223 300.650 # ~T_uu1++ - 1006311 300.825 # ~T_sd00 - 1006313 300.825 # ~T_sd10 - 1006321 300.825 # ~T_su0+ - 1006323 300.825 # ~T_su1+ - 1006333 301.000 # ~T_ss10 - -1000006 300.000 # ~t_1bar - -1000612 300.325 # ~Tbar- - -1000622 300.325 # ~Tbar0 - -1000632 300.500 # ~Tbar_s- - -1000642 301.500 # ~Tbar_c0 - -1000652 304.800 # ~Tbar_b- - -1006113 300.650 # ~Tbar_dd10 - -1006211 300.650 # ~Tbar_ud0- - -1006213 300.650 # ~Tbar_ud1- - -1006223 300.650 # ~Tbar_uu1-- - -1006311 300.825 # ~Tbar_sd00 - -1006313 300.825 # ~Tbar_sd10 - -1006321 300.825 # ~Tbar_su0- - -1006323 300.825 # ~Tbar_su1- - -1006333 301.000 # ~Tbar_ss10 - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_400GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_400GeV.txt deleted file mode 100644 index 1882ddba94c7c71ea416e9153ee9fab8f836f1f1..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_400GeV.txt +++ /dev/null @@ -1,31 +0,0 @@ - 1000006 400.000 # ~t_1 - 1000612 400.325 # ~T+ - 1000622 400.325 # ~T0 - 1000632 400.500 # ~T_s+ - 1000642 401.500 # ~T_c0 - 1000652 404.800 # ~T_b+ - 1006113 400.650 # ~T_dd10 - 1006211 400.650 # ~T_ud0+ - 1006213 400.650 # ~T_ud1+ - 1006223 400.650 # ~T_uu1++ - 1006311 400.825 # ~T_sd00 - 1006313 400.825 # ~T_sd10 - 1006321 400.825 # ~T_su0+ - 1006323 400.825 # ~T_su1+ - 1006333 401.000 # ~T_ss10 - -1000006 400.000 # ~t_1bar - -1000612 400.325 # ~Tbar- - -1000622 400.325 # ~Tbar0 - -1000632 400.500 # ~Tbar_s- - -1000642 401.500 # ~Tbar_c0 - -1000652 404.800 # ~Tbar_b- - -1006113 400.650 # ~Tbar_dd10 - -1006211 400.650 # ~Tbar_ud0- - -1006213 400.650 # ~Tbar_ud1- - -1006223 400.650 # ~Tbar_uu1-- - -1006311 400.825 # ~Tbar_sd00 - -1006313 400.825 # ~Tbar_sd10 - -1006321 400.825 # ~Tbar_su0- - -1006323 400.825 # ~Tbar_su1- - -1006333 401.000 # ~Tbar_ss10 - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_500GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_500GeV.txt deleted file mode 100644 index c73b757d8147d7d6796d88f372a07f24ee0adb2d..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_500GeV.txt +++ /dev/null @@ -1,31 +0,0 @@ - 1000006 500.000 # ~t_1 - 1000612 500.325 # ~T+ - 1000622 500.325 # ~T0 - 1000632 500.500 # ~T_s+ - 1000642 501.500 # ~T_c0 - 1000652 504.800 # ~T_b+ - 1006113 500.650 # ~T_dd10 - 1006211 500.650 # ~T_ud0+ - 1006213 500.650 # ~T_ud1+ - 1006223 500.650 # ~T_uu1++ - 1006311 500.825 # ~T_sd00 - 1006313 500.825 # ~T_sd10 - 1006321 500.825 # ~T_su0+ - 1006323 500.825 # ~T_su1+ - 1006333 501.000 # ~T_ss10 - -1000006 500.000 # ~t_1bar - -1000612 500.325 # ~Tbar- - -1000622 500.325 # ~Tbar0 - -1000632 500.500 # ~Tbar_s- - -1000642 501.500 # ~Tbar_c0 - -1000652 504.800 # ~Tbar_b- - -1006113 500.650 # ~Tbar_dd10 - -1006211 500.650 # ~Tbar_ud0- - -1006213 500.650 # ~Tbar_ud1- - -1006223 500.650 # ~Tbar_uu1-- - -1006311 500.825 # ~Tbar_sd00 - -1006313 500.825 # ~Tbar_sd10 - -1006321 500.825 # ~Tbar_su0- - -1006323 500.825 # ~Tbar_su1- - -1006333 501.000 # ~Tbar_ss10 - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_600GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_600GeV.txt deleted file mode 100644 index 32a46c4eab80c42128f5f8f046b284110f091bb4..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_600GeV.txt +++ /dev/null @@ -1,31 +0,0 @@ - 1000006 600.000 # ~t_1 - 1000612 600.325 # ~T+ - 1000622 600.325 # ~T0 - 1000632 600.500 # ~T_s+ - 1000642 601.500 # ~T_c0 - 1000652 604.800 # ~T_b+ - 1006113 600.650 # ~T_dd10 - 1006211 600.650 # ~T_ud0+ - 1006213 600.650 # ~T_ud1+ - 1006223 600.650 # ~T_uu1++ - 1006311 600.825 # ~T_sd00 - 1006313 600.825 # ~T_sd10 - 1006321 600.825 # ~T_su0+ - 1006323 600.825 # ~T_su1+ - 1006333 601.000 # ~T_ss10 - -1000006 600.000 # ~t_1bar - -1000612 600.325 # ~Tbar- - -1000622 600.325 # ~Tbar0 - -1000632 600.500 # ~Tbar_s- - -1000642 601.500 # ~Tbar_c0 - -1000652 604.800 # ~Tbar_b- - -1006113 600.650 # ~Tbar_dd10 - -1006211 600.650 # ~Tbar_ud0- - -1006213 600.650 # ~Tbar_ud1- - -1006223 600.650 # ~Tbar_uu1-- - -1006311 600.825 # ~Tbar_sd00 - -1006313 600.825 # ~Tbar_sd10 - -1006321 600.825 # ~Tbar_su0- - -1006323 600.825 # ~Tbar_su1- - -1006333 601.000 # ~Tbar_ss10 - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_700GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_700GeV.txt deleted file mode 100644 index 3028afffab5d7794cfa0bf4a71db68e05d49ab23..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_700GeV.txt +++ /dev/null @@ -1,31 +0,0 @@ - 1000006 700.000 # ~t_1 - 1000612 700.325 # ~T+ - 1000622 700.325 # ~T0 - 1000632 700.500 # ~T_s+ - 1000642 701.500 # ~T_c0 - 1000652 704.800 # ~T_b+ - 1006113 700.650 # ~T_dd10 - 1006211 700.650 # ~T_ud0+ - 1006213 700.650 # ~T_ud1+ - 1006223 700.650 # ~T_uu1++ - 1006311 700.825 # ~T_sd00 - 1006313 700.825 # ~T_sd10 - 1006321 700.825 # ~T_su0+ - 1006323 700.825 # ~T_su1+ - 1006333 701.000 # ~T_ss10 - -1000006 700.000 # ~t_1bar - -1000612 700.325 # ~Tbar- - -1000622 700.325 # ~Tbar0 - -1000632 700.500 # ~Tbar_s- - -1000642 701.500 # ~Tbar_c0 - -1000652 704.800 # ~Tbar_b- - -1006113 700.650 # ~Tbar_dd10 - -1006211 700.650 # ~Tbar_ud0- - -1006213 700.650 # ~Tbar_ud1- - -1006223 700.650 # ~Tbar_uu1-- - -1006311 700.825 # ~Tbar_sd00 - -1006313 700.825 # ~Tbar_sd10 - -1006321 700.825 # ~Tbar_su0- - -1006323 700.825 # ~Tbar_su1- - -1006333 701.000 # ~Tbar_ss10 - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_800GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_800GeV.txt deleted file mode 100644 index a46a2ffe1546f7a6c2e7aca27978e949e12b748d..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_800GeV.txt +++ /dev/null @@ -1,31 +0,0 @@ - 1000006 800.000 # ~t_1 - 1000612 800.325 # ~T+ - 1000622 800.325 # ~T0 - 1000632 800.500 # ~T_s+ - 1000642 801.500 # ~T_c0 - 1000652 804.800 # ~T_b+ - 1006113 800.650 # ~T_dd10 - 1006211 800.650 # ~T_ud0+ - 1006213 800.650 # ~T_ud1+ - 1006223 800.650 # ~T_uu1++ - 1006311 800.825 # ~T_sd00 - 1006313 800.825 # ~T_sd10 - 1006321 800.825 # ~T_su0+ - 1006323 800.825 # ~T_su1+ - 1006333 801.000 # ~T_ss10 - -1000006 800.000 # ~t_1bar - -1000612 800.325 # ~Tbar- - -1000622 800.325 # ~Tbar0 - -1000632 800.500 # ~Tbar_s- - -1000642 801.500 # ~Tbar_c0 - -1000652 804.800 # ~Tbar_b- - -1006113 800.650 # ~Tbar_dd10 - -1006211 800.650 # ~Tbar_ud0- - -1006213 800.650 # ~Tbar_ud1- - -1006223 800.650 # ~Tbar_uu1-- - -1006311 800.825 # ~Tbar_sd00 - -1006313 800.825 # ~Tbar_sd10 - -1006321 800.825 # ~Tbar_su0- - -1006323 800.825 # ~Tbar_su1- - -1006333 801.000 # ~Tbar_ss10 - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_900GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_900GeV.txt deleted file mode 100644 index e4f891f0afed8061b1cf44e16abb87e73314e0df..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_generic_stop_900GeV.txt +++ /dev/null @@ -1,31 +0,0 @@ - 1000006 900.000 # ~t_1 - 1000612 900.325 # ~T+ - 1000622 900.325 # ~T0 - 1000632 900.500 # ~T_s+ - 1000642 901.500 # ~T_c0 - 1000652 904.800 # ~T_b+ - 1006113 900.650 # ~T_dd10 - 1006211 900.650 # ~T_ud0+ - 1006213 900.650 # ~T_ud1+ - 1006223 900.650 # ~T_uu1++ - 1006311 900.825 # ~T_sd00 - 1006313 900.825 # ~T_sd10 - 1006321 900.825 # ~T_su0+ - 1006323 900.825 # ~T_su1+ - 1006333 901.000 # ~T_ss10 - -1000006 900.000 # ~t_1bar - -1000612 900.325 # ~Tbar- - -1000622 900.325 # ~Tbar0 - -1000632 900.500 # ~Tbar_s- - -1000642 901.500 # ~Tbar_c0 - -1000652 904.800 # ~Tbar_b- - -1006113 900.650 # ~Tbar_dd10 - -1006211 900.650 # ~Tbar_ud0- - -1006213 900.650 # ~Tbar_ud1- - -1006223 900.650 # ~Tbar_uu1-- - -1006311 900.825 # ~Tbar_sd00 - -1006313 900.825 # ~Tbar_sd10 - -1006321 900.825 # ~Tbar_su0- - -1006323 900.825 # ~Tbar_su1- - -1006333 901.000 # ~Tbar_ss10 - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_1000GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_1000GeV.txt deleted file mode 100644 index a899f7a6036bc039cd26734ca70d3ebcca1ab951..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_1000GeV.txt +++ /dev/null @@ -1,15 +0,0 @@ - 1000021 1000.0 # ~g - 1000991 1000.330 # ~g_glueball - 1009211 1000.330 # ~g_pi+ - -1009211 1000.330 # ~g_pi- - 1009111 1000.330 # ~g_pi0 - 1009311 1000.460 # ~g_K0 - -1009311 1000.460 # ~g_K0bar - 1009321 1000.460 # ~g_K+ - -1009321 1000.460 # ~g_K- - 1093122 1000.280 # ~g_Lambda0 - 1092212 1000.660 # ~g_proton - 1092112 1000.660 # ~g_neutron - 1092214 1000.530 # ~g_Delta+ - 1092114 1000.530 # ~g_Delta0 - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_100GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_100GeV.txt deleted file mode 100644 index 9da6e116ede37baef026f71ad5d5b7b6478cc648..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_100GeV.txt +++ /dev/null @@ -1,15 +0,0 @@ - 1000021 100.0 # ~g - 1000991 100.330 # ~g_glueball - 1009211 100.330 # ~g_pi+ - -1009211 100.330 # ~g_pi- - 1009111 100.330 # ~g_pi0 - 1009311 100.460 # ~g_K0 - -1009311 100.460 # ~g_K0bar - 1009321 100.460 # ~g_K+ - -1009321 100.460 # ~g_K- - 1093122 100.280 # ~g_Lambda0 - 1092212 100.660 # ~g_proton - 1092112 100.660 # ~g_neutron - 1092214 100.530 # ~g_Delta+ - 1092114 100.530 # ~g_Delta0 - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_200GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_200GeV.txt deleted file mode 100644 index d235ed6f7981fb8b2953f6f9fa1d1af8baa3eac7..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_200GeV.txt +++ /dev/null @@ -1,15 +0,0 @@ - 1000021 200.0 # ~g - 1000991 200.330 # ~g_glueball - 1009211 200.330 # ~g_pi+ - -1009211 200.330 # ~g_pi- - 1009111 200.330 # ~g_pi0 - 1009311 200.460 # ~g_K0 - -1009311 200.460 # ~g_K0bar - 1009321 200.460 # ~g_K+ - -1009321 200.460 # ~g_K- - 1093122 200.280 # ~g_Lambda0 - 1092212 200.660 # ~g_proton - 1092112 200.660 # ~g_neutron - 1092214 200.530 # ~g_Delta+ - 1092114 200.530 # ~g_Delta0 - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_300GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_300GeV.txt deleted file mode 100644 index f6708ef4783f40c40773e17628498e16136c325c..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_300GeV.txt +++ /dev/null @@ -1,15 +0,0 @@ - 1000021 300.0 # ~g - 1000991 300.330 # ~g_glueball - 1009211 300.330 # ~g_pi+ - -1009211 300.330 # ~g_pi- - 1009111 300.330 # ~g_pi0 - 1009311 300.460 # ~g_K0 - -1009311 300.460 # ~g_K0bar - 1009321 300.460 # ~g_K+ - -1009321 300.460 # ~g_K- - 1093122 300.280 # ~g_Lambda0 - 1092212 300.660 # ~g_proton - 1092112 300.660 # ~g_neutron - 1092214 300.530 # ~g_Delta+ - 1092114 300.530 # ~g_Delta0 - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_400GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_400GeV.txt deleted file mode 100644 index 986cde5281c5365b126fdc83d30d56e0c4d669ed..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_400GeV.txt +++ /dev/null @@ -1,15 +0,0 @@ - 1000021 400.0 # ~g - 1000991 400.330 # ~g_glueball - 1009211 400.330 # ~g_pi+ - -1009211 400.330 # ~g_pi- - 1009111 400.330 # ~g_pi0 - 1009311 400.460 # ~g_K0 - -1009311 400.460 # ~g_K0bar - 1009321 400.460 # ~g_K+ - -1009321 400.460 # ~g_K- - 1093122 400.280 # ~g_Lambda0 - 1092212 400.660 # ~g_proton - 1092112 400.660 # ~g_neutron - 1092214 400.530 # ~g_Delta+ - 1092114 400.530 # ~g_Delta0 - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_500GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_500GeV.txt deleted file mode 100644 index 1e093a8b28d642520203ce9651d7400132f88a9f..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_500GeV.txt +++ /dev/null @@ -1,15 +0,0 @@ - 1000021 500.0 # ~g - 1000991 500.330 # ~g_glueball - 1009211 500.330 # ~g_pi+ - -1009211 500.330 # ~g_pi- - 1009111 500.330 # ~g_pi0 - 1009311 500.460 # ~g_K0 - -1009311 500.460 # ~g_K0bar - 1009321 500.460 # ~g_K+ - -1009321 500.460 # ~g_K- - 1093122 500.280 # ~g_Lambda0 - 1092212 500.660 # ~g_proton - 1092112 500.660 # ~g_neutron - 1092214 500.530 # ~g_Delta+ - 1092114 500.530 # ~g_Delta0 - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_600GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_600GeV.txt deleted file mode 100644 index 09ce83e98b507982d9a9340556b01af8a40a6a87..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_600GeV.txt +++ /dev/null @@ -1,15 +0,0 @@ - 1000021 600.0 # ~g - 1000991 600.330 # ~g_glueball - 1009211 600.330 # ~g_pi+ - -1009211 600.330 # ~g_pi- - 1009111 600.330 # ~g_pi0 - 1009311 600.460 # ~g_K0 - -1009311 600.460 # ~g_K0bar - 1009321 600.460 # ~g_K+ - -1009321 600.460 # ~g_K- - 1093122 600.280 # ~g_Lambda0 - 1092212 600.660 # ~g_proton - 1092112 600.660 # ~g_neutron - 1092214 600.530 # ~g_Delta+ - 1092114 600.530 # ~g_Delta0 - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_700GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_700GeV.txt deleted file mode 100644 index 7f8c814d3a15e950aa3afedc22fca592457e56af..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_700GeV.txt +++ /dev/null @@ -1,15 +0,0 @@ - 1000021 700.0 # ~g - 1000991 700.330 # ~g_glueball - 1009211 700.330 # ~g_pi+ - -1009211 700.330 # ~g_pi- - 1009111 700.330 # ~g_pi0 - 1009311 700.460 # ~g_K0 - -1009311 700.460 # ~g_K0bar - 1009321 700.460 # ~g_K+ - -1009321 700.460 # ~g_K- - 1093122 700.280 # ~g_Lambda0 - 1092212 700.660 # ~g_proton - 1092112 700.660 # ~g_neutron - 1092214 700.530 # ~g_Delta+ - 1092114 700.530 # ~g_Delta0 - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_800GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_800GeV.txt deleted file mode 100644 index 3cc264a709a7032dd802754f826c802428a2e1c9..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_800GeV.txt +++ /dev/null @@ -1,15 +0,0 @@ - 1000021 800.0 # ~g - 1000991 800.330 # ~g_glueball - 1009211 800.330 # ~g_pi+ - -1009211 800.330 # ~g_pi- - 1009111 800.330 # ~g_pi0 - 1009311 800.460 # ~g_K0 - -1009311 800.460 # ~g_K0bar - 1009321 800.460 # ~g_K+ - -1009321 800.460 # ~g_K- - 1093122 800.280 # ~g_Lambda0 - 1092212 800.660 # ~g_proton - 1092112 800.660 # ~g_neutron - 1092214 800.530 # ~g_Delta+ - 1092114 800.530 # ~g_Delta0 - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_900GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_900GeV.txt deleted file mode 100644 index dd0d0bd41683e84dd8fafc94c0cd17060d80ec4d..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_intermediate_gluino_900GeV.txt +++ /dev/null @@ -1,15 +0,0 @@ - 1000021 900.0 # ~g - 1000991 900.330 # ~g_glueball - 1009211 900.330 # ~g_pi+ - -1009211 900.330 # ~g_pi- - 1009111 900.330 # ~g_pi0 - 1009311 900.460 # ~g_K0 - -1009311 900.460 # ~g_K0bar - 1009321 900.460 # ~g_K+ - -1009321 900.460 # ~g_K- - 1093122 900.280 # ~g_Lambda0 - 1092212 900.660 # ~g_proton - 1092112 900.660 # ~g_neutron - 1092214 900.530 # ~g_Delta+ - 1092114 900.530 # ~g_Delta0 - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_1000GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_1000GeV.txt deleted file mode 100644 index 3b7fd8a7325a55bd67381ba6d04d8e182e371f08..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_1000GeV.txt +++ /dev/null @@ -1,10 +0,0 @@ - 1000021 1000.0 # ~g - 1000993 1000.700 # ~g_glueball - 1009213 1000.700 # ~g_rho+ - 1009113 1000.700 # ~g_rho0 - 1009313 1000.700 # ~g_K0 - 1009323 1000.700 # ~g_K+ - 1093122 1000.700 # ~g_Lambda0 - -1009213 1000.700 # ~g_rho- - -1009313 1000.700 # ~g_K0bar - -1009323 1000.700 # ~g_K- diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_100GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_100GeV.txt deleted file mode 100644 index 7cdb35973b48546661ae8420ef6c2ac2c3e31b7c..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_100GeV.txt +++ /dev/null @@ -1,10 +0,0 @@ - 1000021 100.0 # ~g - 1000993 100.700 # ~g_glueball - 1009213 100.700 # ~g_rho+ - 1009113 100.700 # ~g_rho0 - 1009313 100.700 # ~g_K0 - 1009323 100.700 # ~g_K+ - 1093122 100.700 # ~g_Lambda0 - -1009213 100.700 # ~g_rho- - -1009313 100.700 # ~g_K0bar - -1009323 100.700 # ~g_K- diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_200GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_200GeV.txt deleted file mode 100644 index aa80aa41a21289691c2de39270f67719968238bf..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_200GeV.txt +++ /dev/null @@ -1,10 +0,0 @@ - 1000021 200.0 # ~g - 1000993 200.700 # ~g_glueball - 1009213 200.700 # ~g_rho+ - 1009113 200.700 # ~g_rho0 - 1009313 200.700 # ~g_K0 - 1009323 200.700 # ~g_K+ - 1093122 200.700 # ~g_Lambda0 - -1009213 200.700 # ~g_rho- - -1009313 200.700 # ~g_K0bar - -1009323 200.700 # ~g_K- diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_300GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_300GeV.txt deleted file mode 100644 index e1cd797fb2fc4628389d48457b5eab3e1d5ce738..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_300GeV.txt +++ /dev/null @@ -1,10 +0,0 @@ - 1000021 300.0 # ~g - 1000993 300.700 # ~g_glueball - 1009213 300.700 # ~g_rho+ - 1009113 300.700 # ~g_rho0 - 1009313 300.700 # ~g_K0 - 1009323 300.700 # ~g_K+ - 1093122 300.700 # ~g_Lambda0 - -1009213 300.700 # ~g_rho- - -1009313 300.700 # ~g_K0bar - -1009323 300.700 # ~g_K- diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_400GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_400GeV.txt deleted file mode 100644 index 19af0254d6cfe2508edeeea264684fd8e2d07bc8..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_400GeV.txt +++ /dev/null @@ -1,10 +0,0 @@ - 1000021 400.0 # ~g - 1000993 400.700 # ~g_glueball - 1009213 400.700 # ~g_rho+ - 1009113 400.700 # ~g_rho0 - 1009313 400.700 # ~g_K0 - 1009323 400.700 # ~g_K+ - 1093122 400.700 # ~g_Lambda0 - -1009213 400.700 # ~g_rho- - -1009313 400.700 # ~g_K0bar - -1009323 400.700 # ~g_K- diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_500GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_500GeV.txt deleted file mode 100644 index 4a1c984a1258cd03901e33ea04038bc955e01544..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_500GeV.txt +++ /dev/null @@ -1,10 +0,0 @@ - 1000021 500.0 # ~g - 1000993 500.700 # ~g_glueball - 1009213 500.700 # ~g_rho+ - 1009113 500.700 # ~g_rho0 - 1009313 500.700 # ~g_K0 - 1009323 500.700 # ~g_K+ - 1093122 500.700 # ~g_Lambda0 - -1009213 500.700 # ~g_rho- - -1009313 500.700 # ~g_K0bar - -1009323 500.700 # ~g_K- diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_600GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_600GeV.txt deleted file mode 100644 index 2d0c754ab38d2a59d7265a87af9b8c08341b438f..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_600GeV.txt +++ /dev/null @@ -1,10 +0,0 @@ - 1000021 600.0 # ~g - 1000993 600.700 # ~g_glueball - 1009213 600.700 # ~g_rho+ - 1009113 600.700 # ~g_rho0 - 1009313 600.700 # ~g_K0 - 1009323 600.700 # ~g_K+ - 1093122 600.700 # ~g_Lambda0 - -1009213 600.700 # ~g_rho- - -1009313 600.700 # ~g_K0bar - -1009323 600.700 # ~g_K- diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_700GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_700GeV.txt deleted file mode 100644 index 3e8786af9d51d550c137e9a92a0999cad289e131..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_700GeV.txt +++ /dev/null @@ -1,10 +0,0 @@ - 1000021 700.0 # ~g - 1000993 700.700 # ~g_glueball - 1009213 700.700 # ~g_rho+ - 1009113 700.700 # ~g_rho0 - 1009313 700.700 # ~g_K0 - 1009323 700.700 # ~g_K+ - 1093122 700.700 # ~g_Lambda0 - -1009213 700.700 # ~g_rho- - -1009313 700.700 # ~g_K0bar - -1009323 700.700 # ~g_K- diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_800GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_800GeV.txt deleted file mode 100644 index d434c131a6743fdb0172ca5d6b50b01809c47ea7..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_800GeV.txt +++ /dev/null @@ -1,10 +0,0 @@ - 1000021 800.0 # ~g - 1000993 800.700 # ~g_glueball - 1009213 800.700 # ~g_rho+ - 1009113 800.700 # ~g_rho0 - 1009313 800.700 # ~g_K0 - 1009323 800.700 # ~g_K+ - 1093122 800.700 # ~g_Lambda0 - -1009213 800.700 # ~g_rho- - -1009313 800.700 # ~g_K0bar - -1009323 800.700 # ~g_K- diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_900GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_900GeV.txt deleted file mode 100644 index 82b25cef5677931bd0dbff92339f694673417741..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_gluino_900GeV.txt +++ /dev/null @@ -1,10 +0,0 @@ - 1000021 900.0 # ~g - 1000993 900.700 # ~g_glueball - 1009213 900.700 # ~g_rho+ - 1009113 900.700 # ~g_rho0 - 1009313 900.700 # ~g_K0 - 1009323 900.700 # ~g_K+ - 1093122 900.700 # ~g_Lambda0 - -1009213 900.700 # ~g_rho- - -1009313 900.700 # ~g_K0bar - -1009323 900.700 # ~g_K- diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_1000GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_1000GeV.txt deleted file mode 100644 index 133aa3a1fdb3fb92cc98a39697f56dfeafb0a49a..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_1000GeV.txt +++ /dev/null @@ -1,8 +0,0 @@ - 1000005 1000.000 # ~b - 1000512 1000.325 # ~B0 - 1000522 1000.325 # ~B- - 1005211 1000.650 # ~B_ud0 - -1000005 1000.000 # ~bbar - -1000512 1000.325 # ~Bbar0 - -1000522 1000.325 # ~Bbar+ - -1005211 1000.650 # ~Bbar_ud0 diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_100GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_100GeV.txt deleted file mode 100644 index 39a725b681e1a1e5c736c981ae80bffabd6dafb9..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_100GeV.txt +++ /dev/null @@ -1,8 +0,0 @@ - 1000005 100.000 # ~b - 1000512 100.325 # ~B0 - 1000522 100.325 # ~B- - 1005211 100.650 # ~B_ud0 - -1000005 100.000 # ~bbar - -1000512 100.325 # ~Bbar0 - -1000522 100.325 # ~Bbar+ - -1005211 100.650 # ~Bbar_ud0 diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_200GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_200GeV.txt deleted file mode 100644 index ae89963317001e70083ec3790f1cdbf2ea7410b3..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_200GeV.txt +++ /dev/null @@ -1,8 +0,0 @@ - 1000005 200.000 # ~b - 1000512 200.325 # ~B0 - 1000522 200.325 # ~B- - 1005211 200.650 # ~B_ud0 - -1000005 200.000 # ~bbar - -1000512 200.325 # ~Bbar0 - -1000522 200.325 # ~Bbar+ - -1005211 200.650 # ~Bbar_ud0 diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_300GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_300GeV.txt deleted file mode 100644 index 29ad75c96831156855f6ba2037718d5bbd0a7071..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_300GeV.txt +++ /dev/null @@ -1,8 +0,0 @@ - 1000005 300.000 # ~b - 1000512 300.325 # ~B0 - 1000522 300.325 # ~B- - 1005211 300.650 # ~B_ud0 - -1000005 300.000 # ~bbar - -1000512 300.325 # ~Bbar0 - -1000522 300.325 # ~Bbar+ - -1005211 300.650 # ~Bbar_ud0 diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_400GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_400GeV.txt deleted file mode 100644 index b8ec985ce69b3b5ce677d4cad883e6aaf012c99a..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_400GeV.txt +++ /dev/null @@ -1,8 +0,0 @@ - 1000005 400.000 # ~b - 1000512 400.325 # ~B0 - 1000522 400.325 # ~B- - 1005211 400.650 # ~B_ud0 - -1000005 400.000 # ~bbar - -1000512 400.325 # ~Bbar0 - -1000522 400.325 # ~Bbar+ - -1005211 400.650 # ~Bbar_ud0 diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_500GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_500GeV.txt deleted file mode 100644 index 5ff4a69636487f67845fa4fb4dd3d34d3b5d7a47..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_500GeV.txt +++ /dev/null @@ -1,8 +0,0 @@ - 1000005 500.000 # ~b - 1000512 500.325 # ~B0 - 1000522 500.325 # ~B- - 1005211 500.650 # ~B_ud0 - -1000005 500.000 # ~bbar - -1000512 500.325 # ~Bbar0 - -1000522 500.325 # ~Bbar+ - -1005211 500.650 # ~Bbar_ud0 diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_600GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_600GeV.txt deleted file mode 100644 index d6f6226e50ca00c8ad22347e2a5333ebaff5548c..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_600GeV.txt +++ /dev/null @@ -1,8 +0,0 @@ - 1000005 600.000 # ~b - 1000512 600.325 # ~B0 - 1000522 600.325 # ~B- - 1005211 600.650 # ~B_ud0 - -1000005 600.000 # ~bbar - -1000512 600.325 # ~Bbar0 - -1000522 600.325 # ~Bbar+ - -1005211 600.650 # ~Bbar_ud0 diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_700GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_700GeV.txt deleted file mode 100644 index 562b2c311283ed9072dee0a025c0e19dc29b187b..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_700GeV.txt +++ /dev/null @@ -1,8 +0,0 @@ - 1000005 700.000 # ~b - 1000512 700.325 # ~B0 - 1000522 700.325 # ~B- - 1005211 700.650 # ~B_ud0 - -1000005 700.000 # ~bbar - -1000512 700.325 # ~Bbar0 - -1000522 700.325 # ~Bbar+ - -1005211 700.650 # ~Bbar_ud0 diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_800GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_800GeV.txt deleted file mode 100644 index 1c58aed0fd1fe45a31f8e51db1c6a32e571c6d48..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_800GeV.txt +++ /dev/null @@ -1,8 +0,0 @@ - 1000005 800.000 # ~b - 1000512 800.325 # ~B0 - 1000522 800.325 # ~B- - 1005211 800.650 # ~B_ud0 - -1000005 800.000 # ~bbar - -1000512 800.325 # ~Bbar0 - -1000522 800.325 # ~Bbar+ - -1005211 800.650 # ~Bbar_ud0 diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_900GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_900GeV.txt deleted file mode 100644 index d31ebd605ad88b620b9498787a531908a78f50da..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_sbottom_900GeV.txt +++ /dev/null @@ -1,8 +0,0 @@ - 1000005 900.000 # ~b - 1000512 900.325 # ~B0 - 1000522 900.325 # ~B- - 1005211 900.650 # ~B_ud0 - -1000005 900.000 # ~bbar - -1000512 900.325 # ~Bbar0 - -1000522 900.325 # ~Bbar+ - -1005211 900.650 # ~Bbar_ud0 diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_1000GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_1000GeV.txt deleted file mode 100644 index 0cb6c0681f2dc97798b5298f6ab48b2ae9712fd8..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_1000GeV.txt +++ /dev/null @@ -1,9 +0,0 @@ - 1000006 1000.000 # ~t_1 - 1000612 1000.325 # ~T+ - 1000622 1000.325 # ~T0 - 1006211 1000.650 # ~T_ud0+ - -1000006 1000.000 # ~t_1bar - -1000612 1000.325 # ~Tbar- - -1000622 1000.325 # ~Tbar0 - -1006211 1000.650 # ~Tbar_ud0- - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_100GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_100GeV.txt deleted file mode 100644 index 0f4eb02c7c669cb7b91af0766f39d735bac13705..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_100GeV.txt +++ /dev/null @@ -1,9 +0,0 @@ - 1000006 100.000 # ~t_1 - 1000612 100.325 # ~T+ - 1000622 100.325 # ~T0 - 1006211 100.650 # ~T_ud0+ - -1000006 100.000 # ~t_1bar - -1000612 100.325 # ~Tbar- - -1000622 100.325 # ~Tbar0 - -1006211 100.650 # ~Tbar_ud0- - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_200GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_200GeV.txt deleted file mode 100644 index ceddb4c24166f835c62bb189374dda06f329802e..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_200GeV.txt +++ /dev/null @@ -1,9 +0,0 @@ - 1000006 200.000 # ~t_1 - 1000612 200.325 # ~T+ - 1000622 200.325 # ~T0 - 1006211 200.650 # ~T_ud0+ - -1000006 200.000 # ~t_1bar - -1000612 200.325 # ~Tbar- - -1000622 200.325 # ~Tbar0 - -1006211 200.650 # ~Tbar_ud0- - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_300GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_300GeV.txt deleted file mode 100644 index 0d40c04b9e54c2b20b32d8c022690cd6c1bf87b3..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_300GeV.txt +++ /dev/null @@ -1,9 +0,0 @@ - 1000006 300.000 # ~t_1 - 1000612 300.325 # ~T+ - 1000622 300.325 # ~T0 - 1006211 300.650 # ~T_ud0+ - -1000006 300.000 # ~t_1bar - -1000612 300.325 # ~Tbar- - -1000622 300.325 # ~Tbar0 - -1006211 300.650 # ~Tbar_ud0- - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_400GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_400GeV.txt deleted file mode 100644 index a75991aef09a791883e1c9eb4fb9ec86920d936b..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_400GeV.txt +++ /dev/null @@ -1,9 +0,0 @@ - 1000006 400.000 # ~t_1 - 1000612 400.325 # ~T+ - 1000622 400.325 # ~T0 - 1006211 400.650 # ~T_ud0+ - -1000006 400.000 # ~t_1bar - -1000612 400.325 # ~Tbar- - -1000622 400.325 # ~Tbar0 - -1006211 400.650 # ~Tbar_ud0- - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_500GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_500GeV.txt deleted file mode 100644 index 9d41725e43d23a2e53b8a6b4673b240cfa0dcbef..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_500GeV.txt +++ /dev/null @@ -1,9 +0,0 @@ - 1000006 500.000 # ~t_1 - 1000612 500.325 # ~T+ - 1000622 500.325 # ~T0 - 1006211 500.650 # ~T_ud0+ - -1000006 500.000 # ~t_1bar - -1000612 500.325 # ~Tbar- - -1000622 500.325 # ~Tbar0 - -1006211 500.650 # ~Tbar_ud0- - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_600GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_600GeV.txt deleted file mode 100644 index ee77f559b37197c6dd3d04799a025bd7af617252..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_600GeV.txt +++ /dev/null @@ -1,9 +0,0 @@ - 1000006 600.000 # ~t_1 - 1000612 600.325 # ~T+ - 1000622 600.325 # ~T0 - 1006211 600.650 # ~T_ud0+ - -1000006 600.000 # ~t_1bar - -1000612 600.325 # ~Tbar- - -1000622 600.325 # ~Tbar0 - -1006211 600.650 # ~Tbar_ud0- - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_700GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_700GeV.txt deleted file mode 100644 index 756cc80888856b42a483c7fcbc9c394248e348ab..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_700GeV.txt +++ /dev/null @@ -1,9 +0,0 @@ - 1000006 700.000 # ~t_1 - 1000612 700.325 # ~T+ - 1000622 700.325 # ~T0 - 1006211 700.650 # ~T_ud0+ - -1000006 700.000 # ~t_1bar - -1000612 700.325 # ~Tbar- - -1000622 700.325 # ~Tbar0 - -1006211 700.650 # ~Tbar_ud0- - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_800GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_800GeV.txt deleted file mode 100644 index 22e95d4064ba12966a716257a0f45b998446e86f..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_800GeV.txt +++ /dev/null @@ -1,9 +0,0 @@ - 1000006 800.000 # ~t_1 - 1000612 800.325 # ~T+ - 1000622 800.325 # ~T0 - 1006211 800.650 # ~T_ud0+ - -1000006 800.000 # ~t_1bar - -1000612 800.325 # ~Tbar- - -1000622 800.325 # ~Tbar0 - -1006211 800.650 # ~Tbar_ud0- - diff --git a/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_900GeV.txt b/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_900GeV.txt deleted file mode 100644 index 27aef79bb1884d7c76892e02efbc3b456bae4074..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/particles_regge_stop_900GeV.txt +++ /dev/null @@ -1,9 +0,0 @@ - 1000006 900.000 # ~t_1 - 1000612 900.325 # ~T+ - 1000622 900.325 # ~T0 - 1006211 900.650 # ~T_ud0+ - -1000006 900.000 # ~t_1bar - -1000612 900.325 # ~Tbar- - -1000622 900.325 # ~Tbar0 - -1006211 900.650 # ~Tbar_ud0- - diff --git a/Simulation/G4Extensions/RHadrons/share/rhadrontruth.py b/Simulation/G4Extensions/RHadrons/share/rhadrontruth.py deleted file mode 100644 index f1092cc9c8e4e685346285e4fdc9c62fecaf8a14..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/share/rhadrontruth.py +++ /dev/null @@ -1,17 +0,0 @@ - -def rhadron_modify_truth_strategies(): - print "ERROR rhadron_modify_truth_strategies is obsolete" - print "Please request replacment configuration." - import sys - sys.exit(1) - ## from G4AtlasApps import AtlasG4Eng - ## AtlasG4Eng.G4Eng._ctrl.mctruthMenu.activateStrategy('LLP', 'Muon::MuonSys',1) - ## AtlasG4Eng.G4Eng._ctrl.mctruthMenu.activateStrategy('LLP', 'MUONQ02::MUONQ02',1) - ## AtlasG4Eng.G4Eng._ctrl.mctruthMenu.activateStrategy('LLP', 'IDET::IDET',1) - ## AtlasG4Eng.G4Eng._ctrl.mctruthMenu.activateStrategy('LLP', 'CALO::CALO',1) - ## AtlasG4Eng.G4Eng._ctrl.mctruthMenu.activateStrategy('LLP', 'BeamPipe::BeamPipe',1) - ## AtlasG4Eng.G4Eng._ctrl.mctruthMenu.listStrategies() - - -from G4AtlasApps.SimFlags import simFlags -simFlags.InitFunctions.add_function("postInit", rhadron_modify_truth_strategies) diff --git a/Simulation/G4Extensions/RHadrons/src/CustomParticleFactory.cxx b/Simulation/G4Extensions/RHadrons/src/CustomParticleFactory.cxx index 2fe31d74495da49f1143e6b3a1d71e827beb39fb..a8d21adaf4620493121b098545709fe9ada8eacb 100644 --- a/Simulation/G4Extensions/RHadrons/src/CustomParticleFactory.cxx +++ b/Simulation/G4Extensions/RHadrons/src/CustomParticleFactory.cxx @@ -30,7 +30,6 @@ void CustomParticleFactory::loadCustomParticles() if(loaded) return; loaded = true; std::ifstream configFile("particles.txt"); - // std::ifstream configFile("stophadrons.txt"); G4String pType="custom"; G4String pSubType=""; G4double spectatormass = 0; @@ -40,154 +39,129 @@ void CustomParticleFactory::loadCustomParticles() int pdgCode; std::string name,line; // This should be compatible IMO to SLHA - while(getline(configFile,line)) - { - std::string::size_type beg_idx,end_idx; - - beg_idx = line.find_first_not_of("\t #"); - if(beg_idx > 0 && line[beg_idx-1] == '#') continue; - end_idx = line.find_first_of( "\t ", beg_idx); - if (end_idx == std::string::npos) continue; - char *endptr; - pdgCode = strtol(line.substr( beg_idx, end_idx - beg_idx ).c_str(), &endptr, 0); - if (endptr[0] != '\0') { - throw std::invalid_argument("Could not convert string to int: " + line.substr( beg_idx, end_idx - beg_idx )); - } - - beg_idx = line.find_first_not_of("\t ",end_idx); - end_idx = line.find_first_of( "\t #", beg_idx); - if (end_idx == std::string::npos) continue; - mass = atof(line.substr( beg_idx, end_idx - beg_idx ).c_str()); - - beg_idx = line.find_first_not_of("\t# ",end_idx); - end_idx = line.length(); - if (beg_idx==std::string::npos) beg_idx = end_idx; - name = line.substr( beg_idx, end_idx - beg_idx ); - while(name.c_str()[0] == ' ') name.erase(0,1); - while(name[name.size()-1] == ' ') name.erase(name.size()-1,1); - - // std::cout << name << std::endl; - - if(abs(pdgCode) / 1000000 == 0) - { - std::cout << "Pdg code too low " << pdgCode << " "<<abs(pdgCode) / 1000000 << std::endl; - continue; - } - - pType="custom"; - if(CustomPDGParser::s_isRHadron(pdgCode)) pType = "rhadron"; - if(CustomPDGParser::s_isSLepton(pdgCode)) pType = "sLepton"; - if(CustomPDGParser::s_isMesonino(pdgCode)) pType = "mesonino"; - if(CustomPDGParser::s_isSbaryon(pdgCode)) pType = "sbaryon"; - - - std::cout<<"pType: "<<pType<<std::endl; - std::cout<<"Charge of "<<name<<" is "<<CustomPDGParser::s_charge(pdgCode)<<std::endl; - - CustomParticle *particle = new CustomParticle( - name, mass * CLHEP::GeV , 0.0*CLHEP::MeV, CLHEP::eplus* CustomPDGParser::s_charge(pdgCode), - (int)CustomPDGParser::s_spin(pdgCode)-1, +1, 0, - 0, 0, 0, - pType, 0, +1, pdgCode, - true, -1.0, NULL ); - if (pType=="custom") { - spectatormass = mass; - spectator=particle; - particle->SetCloud(0); - particle->SetSpectator(0); - } - if(first){ - first = false; - spectatormass = mass; - spectator=particle; - particle->SetCloud(0); - particle->SetSpectator(0); - } else { - G4String cloudname = name+"cloud"; - G4String cloudtype = pType+"cloud"; - G4double cloudmass = mass-spectatormass; - CustomParticle *tmpParticle = new CustomParticle( - cloudname, cloudmass * CLHEP::GeV , 0.0*CLHEP::MeV, 0 , - 0, +1, 0, - 0, 0, 0, - cloudtype, 0, +1, 0, - true, -1.0, NULL ); - particle->SetCloud(tmpParticle); - particle->SetSpectator(spectator); - - G4cout<<name<<" being assigned "<<particle->GetCloud()->GetParticleName()<<" and "<<particle->GetSpectator()->GetParticleName()<<G4endl; - G4cout<<"Masses: " - <<particle->GetPDGMass()/CLHEP::GeV<<" Gev, " - <<particle->GetCloud()->GetPDGMass()/CLHEP::GeV<<" GeV and " - <<particle->GetSpectator()->GetPDGMass()/CLHEP::GeV<<" GeV." - <<G4endl; - } - - - /* - if(name=="~g_Delta+") - { - G4DecayTable* table = new G4DecayTable(); - G4VDecayChannel** mode = new G4VDecayChannel*[2]; - mode[0] = new G4PhaseSpaceDecayChannel("~g_Delta+",0.5,2,"proton","Neutralino"); - mode[1] = new G4PhaseSpaceDecayChannel("~g_Delta+",0.5,2,"neutron","pi0","Neutralino"); - for (G4int index=0; index <2; index++ ) table->Insert(mode[index]); - delete [] mode; - particle->SetPDGLifeTime(10*s); - particle->SetPDGStable(false); - particle->SetDecayTable(table); + while(getline(configFile,line)) { + std::string::size_type beg_idx,end_idx; + + beg_idx = line.find_first_not_of("\t #"); + if(beg_idx > 0 && line[beg_idx-1] == '#') continue; + end_idx = line.find_first_of( "\t ", beg_idx); + if (end_idx == std::string::npos) continue; + char *endptr; + pdgCode = strtol(line.substr( beg_idx, end_idx - beg_idx ).c_str(), &endptr, 0); + if (endptr[0] != '\0') { + throw std::invalid_argument("Could not convert string to int: " + line.substr( beg_idx, end_idx - beg_idx )); + } - } - */ + beg_idx = line.find_first_not_of("\t ",end_idx); + end_idx = line.find_first_of( "\t #", beg_idx); + if (end_idx == std::string::npos) continue; + mass = atof(line.substr( beg_idx, end_idx - beg_idx ).c_str()); + + beg_idx = line.find_first_not_of("\t# ",end_idx); + end_idx = line.length(); + if (beg_idx==std::string::npos) beg_idx = end_idx; + name = line.substr( beg_idx, end_idx - beg_idx ); + while(name.c_str()[0] == ' ') name.erase(0,1); + while(name[name.size()-1] == ' ') name.erase(name.size()-1,1); + + if(abs(pdgCode) / 1000000 == 0){ + G4cout << "Pdg code too low " << pdgCode << " "<<abs(pdgCode) / 1000000 << std::endl; + continue; + } - m_particles.insert(particle); + pType="custom"; + if(CustomPDGParser::s_isRHadron(pdgCode)) pType = "rhadron"; + if(CustomPDGParser::s_isSLepton(pdgCode)) pType = "sLepton"; + if(CustomPDGParser::s_isMesonino(pdgCode)) pType = "mesonino"; + if(CustomPDGParser::s_isSbaryon(pdgCode)) pType = "sbaryon"; + + G4cout<<"pType: "<<pType<<G4endl; + G4cout<<"Charge of "<<name<<" is "<<CustomPDGParser::s_charge(pdgCode)<<G4endl; + + CustomParticle *particle = new CustomParticle( + name, mass * CLHEP::GeV , 0.0*CLHEP::MeV, CLHEP::eplus* CustomPDGParser::s_charge(pdgCode), + (int)CustomPDGParser::s_spin(pdgCode)-1, +1, 0, + 0, 0, 0, + pType, 0, +1, pdgCode, + true, -1.0, NULL ); + if (pType=="custom") { + spectatormass = mass; + spectator=particle; + particle->SetCloud(0); + particle->SetSpectator(0); + } + if(first){ + first = false; + spectatormass = mass; + spectator=particle; + particle->SetCloud(0); + particle->SetSpectator(0); + } else { + G4String cloudname = name+"cloud"; + G4String cloudtype = pType+"cloud"; + G4double cloudmass = mass-spectatormass; + CustomParticle *tmpParticle = new CustomParticle( + cloudname, cloudmass * CLHEP::GeV , 0.0*CLHEP::MeV, 0 , + 0, +1, 0, + 0, 0, 0, + cloudtype, 0, +1, 0, + true, -1.0, NULL ); + particle->SetCloud(tmpParticle); + particle->SetSpectator(spectator); + + G4cout<<name<<" being assigned "<<particle->GetCloud()->GetParticleName()<<" and "<<particle->GetSpectator()->GetParticleName()<<G4endl; + G4cout<<"Masses: " + <<particle->GetPDGMass()/CLHEP::GeV<<" Gev, " + <<particle->GetCloud()->GetPDGMass()/CLHEP::GeV<<" GeV and " + <<particle->GetSpectator()->GetPDGMass()/CLHEP::GeV<<" GeV." + <<G4endl; } + + m_particles.insert(particle); + } configFile.close(); // Reading decays from file std::vector<std::vector<std::string>* > decays; std::ifstream decayFile("decays.txt"); - while(getline(decayFile,line)) - { - std::istringstream is(line); - std::vector<std::string>* txtvec = new std::vector<std::string>(std::istream_iterator<std::string>(is),std::istream_iterator<std::string>()); - decays.push_back(txtvec); - } + while(getline(decayFile,line)) { + std::istringstream is(line); + std::vector<std::string>* txtvec = new std::vector<std::string>(std::istream_iterator<std::string>(is),std::istream_iterator<std::string>()); + decays.push_back(txtvec); + } decayFile.close(); // Looping over custom particles to add decays - for (std::set<G4ParticleDefinition *>::iterator part=m_particles.begin();part!=m_particles.end();part++) - { - name=(*part)->GetParticleName(); - std::vector<std::vector<std::string> > mydecays; - for (unsigned int i = 0; i!= decays.size(); i++) - if(name==(*(decays[i]))[0]) // Is this decay for me? - mydecays.push_back(*(decays[i])); - - if (mydecays.size()>0) // Did I get any decays? - { - int ndec=mydecays.size(); - G4DecayTable* table = new G4DecayTable(); - G4VDecayChannel** mode = new G4VDecayChannel*[ndec]; - for (int i=0;i!=ndec;i++) - { - std::vector<std::string> thisdec=mydecays[i]; - double branch = atof(thisdec[thisdec.size()-1].c_str()); // Reading branching ratio - thisdec.pop_back(); // Removing the number from the vector - for (unsigned int j = 0;j!=thisdec.size();j++) std::cout<<thisdec[j]<<std::endl; - if(thisdec.size()==3) - mode[i] = new G4PhaseSpaceDecayChannel(thisdec[0],branch,2,thisdec[1],thisdec[2]); - else if(thisdec.size()==4) - mode[i] = new G4PhaseSpaceDecayChannel(thisdec[0],branch,3,thisdec[1],thisdec[2],thisdec[3]); - else - std::cout<<"Decay chain invalid!!!"<<std::endl; - } - for (G4int index=0; index <ndec; index++ ) table->Insert(mode[index]); - delete [] mode; - // (*part)->SetPDGLifeTime(0.1*CLHEP::ns); - // (*part)->SetPDGStable(false); - (*part)->SetDecayTable(table); + for (std::set<G4ParticleDefinition *>::iterator part=m_particles.begin();part!=m_particles.end();part++) { + name=(*part)->GetParticleName(); + std::vector<std::vector<std::string> > mydecays; + for (unsigned int i = 0; i!= decays.size(); i++){ + if(name==(*(decays[i]))[0]){ + // Is this decay for me? + mydecays.push_back(*(decays[i])); + } + } // End of the for loop + if (mydecays.size()>0){ // Did I get any decays? + int ndec=mydecays.size(); + G4DecayTable* table = new G4DecayTable(); + G4VDecayChannel** mode = new G4VDecayChannel*[ndec]; + for (int i=0;i!=ndec;i++){ + std::vector<std::string> thisdec=mydecays[i]; + double branch = atof(thisdec[thisdec.size()-1].c_str()); // Reading branching ratio + thisdec.pop_back(); // Removing the number from the vector + for (unsigned int j = 0;j!=thisdec.size();j++) G4cout<<thisdec[j]<<G4endl; + if(thisdec.size()==3){ + mode[i] = new G4PhaseSpaceDecayChannel(thisdec[0],branch,2,thisdec[1],thisdec[2]); + } else if(thisdec.size()==4){ + mode[i] = new G4PhaseSpaceDecayChannel(thisdec[0],branch,3,thisdec[1],thisdec[2],thisdec[3]); + } else { + G4cout<<"Decay chain invalid!!!"<<std::endl; } + } + for (G4int index=0; index <ndec; index++ ) table->Insert(mode[index]); + delete [] mode; + (*part)->SetDecayTable(table); } + } return; } diff --git a/Simulation/G4Extensions/RHadrons/src/Decay3Body.h b/Simulation/G4Extensions/RHadrons/src/Decay3Body.h deleted file mode 100644 index ac7999a9df2d50cd94da6cc8d841cf1ba12bcf15..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/src/Decay3Body.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef DECAY3BODY_H -#define DECAY3BODY_H -#include "CLHEP/Vector/LorentzVector.h" - -class Decay3Body { -public: - Decay3Body(); - ~Decay3Body(); - - void doDecay(const CLHEP::HepLorentzVector & mother, - CLHEP::HepLorentzVector & daughter1, - CLHEP::HepLorentzVector & daughter2, - CLHEP::HepLorentzVector & daughter3); - -private: - inline double sqr(double a); -}; - -#endif diff --git a/Simulation/G4Extensions/RHadrons/src/FullModelHadronicProcess.cxx b/Simulation/G4Extensions/RHadrons/src/FullModelHadronicProcess.cxx index 6548589f77452e3624d75901f1d96af8dc72d9aa..997bd0806f2b6fbcf9fefea705c478f269d1396e 100644 --- a/Simulation/G4Extensions/RHadrons/src/FullModelHadronicProcess.cxx +++ b/Simulation/G4Extensions/RHadrons/src/FullModelHadronicProcess.cxx @@ -216,7 +216,7 @@ G4VParticleChange* FullModelHadronicProcess::PostStepDoIt(const G4Track& aTrack, outgoingCloud=tempCust->GetCloud(); if(outgoingCloud == 0) { - std::cout << "FullModelHadronicProcess::PostStepDoIt Definition of outgoing particle cloud not available!!" << std::endl; + std::cout << "FullModelHadronicProcess::PostStepDoIt Definition of outgoing particle cloud for " << tempDef->GetParticleName() << " not available!!" << std::endl; } } @@ -356,7 +356,10 @@ G4VParticleChange* FullModelHadronicProcess::PostStepDoIt(const G4Track& aTrack, aPosition); aParticleChange.AddSecondary(Track0); - if(p0->GetKineticEnergy()>e_kin_0) { + // Because of the above calculations, and the use of mass, there's going to be a lot of squaring and + // square rooting to get the total energy. For that reason, we should allow a little buffer before + // we freak out over energy non-conservation... + if(p0->GetKineticEnergy()>e_kin_0+1.e-9) { // Allow 1 meV of energy non-conservation in an interaction G4cout<<"ALAAAAARM!!! (incident changed from " <<IncidentRhadron->GetDefinition()->GetParticleName() <<" to "<<p0->GetDefinition()->GetParticleName()<<")"<<G4endl; diff --git a/Simulation/G4Extensions/RHadrons/src/G4DecayProducts2.h b/Simulation/G4Extensions/RHadrons/src/G4DecayProducts2.h deleted file mode 100644 index 6ec8963b2ab8b6475b6ec3b50011506b7be262a4..0000000000000000000000000000000000000000 --- a/Simulation/G4Extensions/RHadrons/src/G4DecayProducts2.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef G4DecayProducts2_H -#define G4DecayProducts2_H - -//Copy of G4DecayProducts class, with up to 2000 entries -#include "G4DecayProducts.hh" -class G4DecayProducts2 : public G4DecayProducts{ -public: - enum {MaxNumberOfProducts=2000}; - - //So we can "access" the private members of G4DecayProducts! (Don't try this at home!!) - struct G4DecayProductsStruct{ - enum {MaxNumberOfProducts = 64}; - G4int numberOfProducts; - G4DynamicParticle* theParentParticle; - G4DynamicParticle* theProductVector[MaxNumberOfProducts]; - }; - - G4int PushProducts(G4DynamicParticle *aParticle) - { - G4int & numberOfProducts2 = ((G4DecayProductsStruct*)this)->numberOfProducts;//number of products in G4DecayProducts - if ( numberOfProducts2 < MaxNumberOfProducts) { - G4DynamicParticle** theProductVector2 = ((G4DecayProductsStruct*)this)->theProductVector;//going to push the products onto the list in G4DecayProducts, even though it's only 64 long... fortunately, it's the last member variable of the class, and we allocated enough room past the end of the class in memory... - theProductVector2[numberOfProducts2]= aParticle; - numberOfProducts2 += 1; - G4cout << "G4DecayProducts2::PushProducts " - << " has numberOfProducts=" - << numberOfProducts2 << G4endl; - } else { - G4cerr << "G4DecayProducts2::PushProducts " - << " exceeds MaxNumberOfProducts(=" - << G4int(MaxNumberOfProducts) << ")" << G4endl; - } - return numberOfProducts2; - } - -}; -#endif // G4DecayProducts2_H diff --git a/Simulation/G4Extensions/RHadrons/src/G4ProcessHelper.cxx b/Simulation/G4Extensions/RHadrons/src/G4ProcessHelper.cxx index 858ac8ccc291fd949a998e65ddfec61756db5bfc..19ed5ca80e56df8c530f9fdca9c3bec29b281cc8 100644 --- a/Simulation/G4Extensions/RHadrons/src/G4ProcessHelper.cxx +++ b/Simulation/G4Extensions/RHadrons/src/G4ProcessHelper.cxx @@ -57,10 +57,9 @@ G4ProcessHelper::G4ProcessHelper() "Initialization: The reaction product list contained an unknown particle"); } } - if (target == "proton") - { - pReactionMap[incidentPDG].push_back(prod); - } else if (target == "neutron") { + if (target == "proton"){ + pReactionMap[incidentPDG].push_back(prod); + } else if (target == "neutron") { nReactionMap[incidentPDG].push_back(prod); } else { G4Exception("G4ProcessHelper", "IllegalTarget", FatalException, @@ -184,24 +183,26 @@ G4double G4ProcessHelper::GetInclusiveCrossSection(const G4DynamicParticle *aPar G4double theXsec = 0; G4String name = aParticle->GetDefinition()->GetParticleName(); - if(!reggemodel) - { + if(!reggemodel){ //Flat cross section if(CustomPDGParser::s_isRGlueball(thePDGCode)) { theXsec = 24 * CLHEP::millibarn; } else { std::vector<G4int> nq=CustomPDGParser::s_containedQuarks(thePDGCode); - // G4cout<<"Number of quarks: "<<nq.size()<<G4endl; for (std::vector<G4int>::iterator it = nq.begin(); it != nq.end(); it++) { - // G4cout<<"Quarkvector: "<<*it<<G4endl; + // 12 mb taken from asymptotic pion-nucleon scattering cross sections if (*it == 1 || *it == 2) theXsec += 12 * CLHEP::millibarn; - if (*it == 3) theXsec += 6 * CLHEP::millibarn; + // 6 mb taken from asymptotic kaon-nucleon scattering cross sections + // No data for D or B, so setting to behave like a kaon + if (*it == 3 || *it == 4 || *it == 5) theXsec += 6 * CLHEP::millibarn; } } - } else { + } else { + // From Eur. Phys. J. C (2010) 66: 493-501 + // DOI 10.1140/epjc/s10052-010-1262-1 double R = Regge(boost); double P = Pom(boost); if(thePDGCode>0) @@ -226,6 +227,8 @@ G4double G4ProcessHelper::GetInclusiveCrossSection(const G4DynamicParticle *aPar if(resonant) { + // Described in Section 5.1 of http://r-hadrons.web.cern.ch/r-hadrons/download/mackeprang_thesis.pdf + // mentioned but dismissed in Section 3.3 of https://arxiv.org/pdf/hep-ex/0404001.pdf double e_0 = ek_0 + aParticle->GetDefinition()->GetPDGMass(); //Now total energy e_0 = sqrt(aParticle->GetDefinition()->GetPDGMass()*aParticle->GetDefinition()->GetPDGMass() @@ -268,11 +271,10 @@ ReactionProduct G4ProcessHelper::GetFinalState(const G4Track& aTrack, G4Particle NumberOfNucleons += NbOfAtomsPerVolume[elm]*(*theElementVector)[elm]->GetN(); } - if(CLHEP::RandFlat::shoot()<NumberOfProtons/NumberOfNucleons) - { + if(CLHEP::RandFlat::shoot()<NumberOfProtons/NumberOfNucleons){ theReactionMap = &pReactionMap; theTarget = theProton; - } else { + } else { theReactionMap = &nReactionMap; theTarget = theNeutron; } @@ -432,7 +434,6 @@ ReactionProduct G4ProcessHelper::GetFinalState(const G4Track& aTrack, G4Particle } else { // 2 -> 3 processes require a phase space lookup if (PhaseSpace(theReactionProductList[i],aDynamicParticle)>CLHEP::RandFlat::shoot()) selected = true; - //selected = true; } // double suppressionfactor=0.5; if(selected&&particleTable->FindParticle(theReactionProductList[i][0])->GetPDGCharge()!=aDynamicParticle->GetDefinition()->GetPDGCharge()) @@ -467,7 +468,7 @@ ReactionProduct G4ProcessHelper::GetFinalState(const G4Track& aTrack, G4Particle return theReactionProductList[i]; } -G4double G4ProcessHelper::ReactionProductMass(const ReactionProduct& aReaction,const G4DynamicParticle* aDynamicParticle){ +G4double G4ProcessHelper::ReactionProductMass(const ReactionProduct& aReaction,const G4DynamicParticle* aDynamicParticle) const { // Incident energy: G4double E_incident = aDynamicParticle->GetTotalEnergy(); //G4cout<<"Total energy: "<<E_incident<<" Kinetic: "<<aDynamicParticle->GetKineticEnergy()<<G4endl; @@ -487,27 +488,27 @@ G4double G4ProcessHelper::ReactionProductMass(const ReactionProduct& aReaction,c return sqrts - M_after; } -G4bool G4ProcessHelper::ReactionIsPossible(const ReactionProduct& aReaction,const G4DynamicParticle* aDynamicParticle){ +G4bool G4ProcessHelper::ReactionIsPossible(const ReactionProduct& aReaction,const G4DynamicParticle* aDynamicParticle) const{ if (ReactionProductMass(aReaction,aDynamicParticle)>0) return true; return false; } -G4bool G4ProcessHelper::ReactionGivesBaryon(const ReactionProduct& aReaction){ +G4bool G4ProcessHelper::ReactionGivesBaryon(const ReactionProduct& aReaction) const{ for (ReactionProduct::const_iterator it = aReaction.begin();it!=aReaction.end();it++) if(CustomPDGParser::s_isSbaryon(*it)||CustomPDGParser::s_isRBaryon(*it)) return true; return false; } -G4double G4ProcessHelper::PhaseSpace(const ReactionProduct& aReaction,const G4DynamicParticle* aDynamicParticle){ +G4double G4ProcessHelper::PhaseSpace(const ReactionProduct& aReaction,const G4DynamicParticle* aDynamicParticle) const{ G4double qValue = ReactionProductMass(aReaction,aDynamicParticle); - + // Eq 4 of https://arxiv.org/pdf/hep-ex/0404001.pdf G4double phi = sqrt(1+qValue/(2*0.139*CLHEP::GeV))*pow(qValue/(1.1*CLHEP::GeV),3./2.); return (phi/(1+phi)); } void G4ProcessHelper::ReadAndParse(const G4String& str, std::vector<G4String>& tokens, - const G4String& delimiters) + const G4String& delimiters) const { // Skip delimiters at beginning. G4String::size_type lastPos = str.find_first_not_of(delimiters, 0); @@ -535,8 +536,10 @@ void G4ProcessHelper::ReadAndParse(const G4String& str, } } -double G4ProcessHelper::Regge(const double boost) +double G4ProcessHelper::Regge(const double boost) const { + // https://link.springer.com/content/pdf/10.1140%2Fepjc%2Fs10052-010-1262-1.pdf Eq 1 + // Originally from https://arxiv.org/pdf/0710.3930.pdf double a=2.165635078566177; double b=0.1467453738547229; double c=-0.9607903711871166; @@ -544,8 +547,10 @@ double G4ProcessHelper::Regge(const double boost) } -double G4ProcessHelper::Pom(const double boost) +double G4ProcessHelper::Pom(const double boost) const { + // https://link.springer.com/content/pdf/10.1140%2Fepjc%2Fs10052-010-1262-1.pdf Eq 2 + // Originally from https://arxiv.org/pdf/0710.3930.pdf double a=4.138224000651535; double b=1.50377557581421; double c=-0.05449742257808247; diff --git a/Simulation/G4Extensions/RHadrons/src/G4ProcessHelper.hh b/Simulation/G4Extensions/RHadrons/src/G4ProcessHelper.hh index 897162d34604725f4ccf7a8e07e51706611bfb86..f833bcf6cdfb4a1c09bbd2d459ad7a53ff04378a 100644 --- a/Simulation/G4Extensions/RHadrons/src/G4ProcessHelper.hh +++ b/Simulation/G4Extensions/RHadrons/src/G4ProcessHelper.hh @@ -54,18 +54,18 @@ private: static G4ProcessHelper* pinstance; - G4double Regge(const double boost); - G4double Pom(const double boost); + G4double Regge(const double boost) const; + G4double Pom(const double boost) const; - G4double PhaseSpace(const ReactionProduct& aReaction,const G4DynamicParticle* aDynamicParticle); + G4double PhaseSpace(const ReactionProduct& aReaction,const G4DynamicParticle* aDynamicParticle) const; - G4double ReactionProductMass(const ReactionProduct& aReaction,const G4DynamicParticle* aDynamicParticle); + G4double ReactionProductMass(const ReactionProduct& aReaction,const G4DynamicParticle* aDynamicParticle) const; - G4bool ReactionIsPossible(const ReactionProduct& aReaction,const G4DynamicParticle* aDynamicParticle); - G4bool ReactionGivesBaryon(const ReactionProduct& aReaction); + G4bool ReactionIsPossible(const ReactionProduct& aReaction,const G4DynamicParticle* aDynamicParticle) const; + G4bool ReactionGivesBaryon(const ReactionProduct& aReaction) const; void ReadAndParse(const G4String& str, std::vector<G4String>& tokens, - const G4String& delimiters = " "); + const G4String& delimiters = " ") const; //Map of applicable particles std::map<const G4ParticleDefinition*,G4bool> known_particles; diff --git a/Simulation/G4Extensions/RHadrons/src/RHadronPythiaDecayer.cxx b/Simulation/G4Extensions/RHadrons/src/RHadronPythiaDecayer.cxx index 0386ef6ea2ffee205f60f731a5d689b47c11053d..fde98956feacef532bfd88146381ce45c56f13e2 100644 --- a/Simulation/G4Extensions/RHadrons/src/RHadronPythiaDecayer.cxx +++ b/Simulation/G4Extensions/RHadrons/src/RHadronPythiaDecayer.cxx @@ -2,56 +2,55 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ +// Header for my class #include "RHadronPythiaDecayer.h" + +// The actual decayers. Singleton classes, not toolhandles +#include "G4ExternalDecay/Pythia8ForDecays.h" + +// For passing things around +#include "CLHEP/Vector/LorentzVector.h" #include "G4Track.hh" #include "G4DynamicParticle.hh" -#include "CLHEP/Vector/LorentzVector.h" -#include "G4ExternalDecay/PythiaForDecays.h" -#include <iostream> +#include "G4DecayProducts.hh" + +RHadronPythiaDecayer::RHadronPythiaDecayer( const std::string s ) + : G4VExtDecayer(s) +{ + // In the constructor, make a decayer instance, so that it's initialized here and not in the event loop + Pythia8ForDecays::Instance(); +} G4DecayProducts* RHadronPythiaDecayer::ImportDecayProducts(const G4Track& aTrack){ -#ifdef USEG4DECAYPRODUCTS2 - G4DecayProducts2 * dp = new G4DecayProducts2[1000];//allocate enough space so we can store all the additional products -#else G4DecayProducts * dp = new G4DecayProducts(); -#endif dp->SetParentParticle( *(aTrack.GetDynamicParticle()) ); - // get particle momentum - G4ThreeVector momentum = aTrack.GetMomentum(); + // get properties for later print outs G4double etot = aTrack.GetDynamicParticle()->GetTotalEnergy(); - CLHEP::HepLorentzVector p; - p[0] = momentum.x() / CLHEP::GeV; - p[1] = momentum.y() / CLHEP::GeV; - p[2] = momentum.z() / CLHEP::GeV; - p[3] = etot / CLHEP::GeV; - G4int pdgEncoding = aTrack.GetDefinition()->GetPDGEncoding(); - // let Pythia6Decayer decay the particle - // and import the decay products - PythiaForDecays::Instance()->Py1ent(0, pdgEncoding, p.e(), p.theta(), p.phi()); - PythiaForDecays::Instance()->DecayRhadrons(pdgEncoding); + // Outgoing particle std::vector<G4DynamicParticle*> particles; - PythiaForDecays::Instance()->ImportParticles(particles); - std::cout << "Decayed an RHadron with ID " << pdgEncoding << " and momentum " << p << " in Pythia. Decay products are:" << std::endl; + // Pythia8 decay the particle and import the decay products + Pythia8ForDecays::Instance()->Py1ent(aTrack, particles); + + G4cout << "Decayed an RHadron with ID " << pdgEncoding << " and momentum " << aTrack.GetMomentum() << " in Pythia. Decay products are:" << G4endl; double totalE=0.0; for (unsigned int i=0; i<particles.size(); ++i){ if (particles[i]) { - std::cout<<i<<" "; dp->PushProducts(particles[i]); + dp->PushProducts(particles[i]); totalE += particles[i]->GetTotalEnergy(); } else { - std::cout << i << " null pointer!" << std::endl; + G4cout << i << " null pointer!" << G4endl; } } - std::cout << std::endl; - //std::cout <<"\nSummary:" << std::endl; - std::cout<<" total energy in was "<<etot<<std::endl; - std::cout<<" total energy out is "<<totalE<<std::endl; - //std::cout << std::endl; - //dp->DumpInfo(); + + G4cout << "Total energy in was "<<etot << G4endl; + G4cout << "Total energy out is "<<totalE << G4endl; + + dp->DumpInfo(); return dp; } diff --git a/Simulation/G4Extensions/RHadrons/src/RHadronPythiaDecayer.h b/Simulation/G4Extensions/RHadrons/src/RHadronPythiaDecayer.h index 21a25a94fbe9331b0837cc32642dbd30290c9b75..deb7940264d932c77112d9c0d17596f40c1fdc36 100644 --- a/Simulation/G4Extensions/RHadrons/src/RHadronPythiaDecayer.h +++ b/Simulation/G4Extensions/RHadrons/src/RHadronPythiaDecayer.h @@ -5,25 +5,17 @@ #ifndef RHadronPythiaDecayer_H #define RHadronPythiaDecayer_H -//Use this to override the G4DecayProducts class and use up to 2000 decay products -//#define USEG4DECAYPRODUCTS2 - -#ifdef USEG4DECAYPRODUCTS2 -#include "RHadrons/G4DecayProducts2.h" -#else -#include "G4DecayProducts.hh" -#endif - #include "G4VExtDecayer.hh" #include "G4Track.hh" #include <string> +class G4DecayProducts; + class RHadronPythiaDecayer: public G4VExtDecayer { public: - RHadronPythiaDecayer( const std::string s) : G4VExtDecayer(s) {} + RHadronPythiaDecayer( const std::string s ); virtual G4DecayProducts* ImportDecayProducts(const G4Track&); - private: }; #endif diff --git a/Simulation/G4Extensions/RHadrons/src/RHadronsPhysicsTool.cxx b/Simulation/G4Extensions/RHadrons/src/RHadronsPhysicsTool.cxx index f841633b3f567ac3c74ed6cd0e674d9564bc8c44..5992cfda646644f98fc7b946b62777e0586b48f9 100644 --- a/Simulation/G4Extensions/RHadrons/src/RHadronsPhysicsTool.cxx +++ b/Simulation/G4Extensions/RHadrons/src/RHadronsPhysicsTool.cxx @@ -20,8 +20,9 @@ #include "G4Decay.hh" #include "G4BaryonConstructor.hh" #include "G4ProcessManager.hh" + // STL headers -#include <iostream> +#include <string> //----------------------------------------------------------------------------- @@ -30,14 +31,6 @@ // 2015-05-14 Edoardo Farina //----------------------------------------------------------------------------- -#if G4VERSION_NUMBER > 1029 -#define PARTICLEITERATOR (this->GetParticleIterator()) -#elif G4VERSION_NUMBER > 1009 -#define PARTICLEITERATOR aParticleIterator -#else -#define PARTICLEITERATOR theParticleIterator -#endif - //============================================================================= // Standard constructor, initializes variables //============================================================================= @@ -82,7 +75,8 @@ void RHadronsPhysicsTool::ConstructProcess() ATH_MSG_DEBUG("RHadronProcessDefinition::ConstructProcess() called"); G4Decay* theDecayProcess = new G4Decay(); theDecayProcess->SetExtDecayer( new RHadronPythiaDecayer("RHadronPythiaDecayer") ); - PARTICLEITERATOR->reset(); + G4ParticleTable::G4PTblDicIterator* particleIterator = G4ParticleTable::GetParticleTable()->GetIterator(); + particleIterator->reset(); //First deal with the standard particles that G4 doesn't know about... //G4Etac::Definition(); @@ -185,114 +179,81 @@ void RHadronsPhysicsTool::ConstructProcess() // standardpdgidtodecay.push_back(551); // standardpdgidtodecay.push_back(-551); - for (unsigned int i=0; i<standardpdgidtodecay.size(); ++i) - { - int pid=standardpdgidtodecay[i]; - ATH_MSG_VERBOSE ( "ACH 3830 - Adding decay for "<<pid ); - G4ParticleDefinition *particle = G4ParticleTable::GetParticleTable()->FindParticle( pid ); - if (particle) - { - ATH_MSG_VERBOSE ( particle->GetParticleName()<<" is standard for Pythia6, lifetime is "<<particle->GetPDGLifeTime() ); - G4ProcessManager *pmanager = particle->GetProcessManager(); - if (!pmanager) - { - - //ATH_MSG_VERBOSE ( "ACH: Adding process manager from 4122 (one we know works) to this lady" ); - //particle->SetProcessManager(G4ParticleTable::GetParticleTable()->FindParticle(4122)->GetProcessManager()); - - ATH_MSG_VERBOSE ( "ACH: Copying process manager from 4122 (one we know works) to this lady" ); - particle->SetProcessManager(new G4ProcessManager(*(G4ParticleTable::GetParticleTable()->FindParticle(4122)->GetProcessManager()))); - - //G4cout<<"ACH: Adding new process manager to this lady"<<G4endl; - //particle->SetProcessManager(new G4ProcessManager(particle)); - - pmanager = particle->GetProcessManager(); - } - G4ProcessVector *pros = pmanager->GetProcessList(); - for (int pi=0; pi<pros->size(); ++pi) - { - if ((*pros)[pi]->GetProcessType()==fDecay) - { - pmanager->RemoveProcess(pi); - break; - } - } - for (int pi=0; pi<pros->size(); ++pi) - { - if ((*pros)[pi]->GetProcessType()==fDecay) - { - ATH_MSG_WARNING ( "there is still another decay process for this particle already defined!" ); - pmanager ->DumpInfo(); - } - } - pmanager ->AddProcess(theDecayProcess); - pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep); pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest); - //pmanager ->DumpInfo(); + for (unsigned int i=0; i<standardpdgidtodecay.size(); ++i) { + int pid=standardpdgidtodecay[i]; + ATH_MSG_VERBOSE ( "Adding decay for "<<pid ); + G4ParticleDefinition *particle = G4ParticleTable::GetParticleTable()->FindParticle( pid ); + if (particle) { + ATH_MSG_VERBOSE ( particle->GetParticleName()<<" is standard for Pythia, lifetime is "<<particle->GetPDGLifeTime() ); + G4ProcessManager *pmanager = particle->GetProcessManager(); + if (!pmanager) { + ATH_MSG_VERBOSE ( "Copying process manager from 4122 (one we know works) to this particle" ); + particle->SetProcessManager(new G4ProcessManager(*(G4ParticleTable::GetParticleTable()->FindParticle(4122)->GetProcessManager()))); + pmanager = particle->GetProcessManager(); + } + G4ProcessVector *pros = pmanager->GetProcessList(); + for (int pi=0; pi<pros->size(); ++pi) { + if ((*pros)[pi]->GetProcessType()==fDecay) { + pmanager->RemoveProcess(pi); + break; } - else - { - ATH_MSG_WARNING ( "particle with pdgid "<<pid<<" has no definition in G4?" ); + } + for (int pi=0; pi<pros->size(); ++pi) { + if ((*pros)[pi]->GetProcessType()==fDecay) { + ATH_MSG_WARNING ( "There is another decay process for this particle already defined!" ); + pmanager ->DumpInfo(); } + } + pmanager ->AddProcess(theDecayProcess); + pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep); pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest); + //pmanager ->DumpInfo(); + } else { + ATH_MSG_WARNING ( "Particle with pdgid "<<pid<<" has no definition in G4?" ); } + } // Loop over all particles that we need to define - - //Now add Rhadrons... - + // Now add RHadrons... Keep a vector of those we've already dealt with std::vector<int> handled; - - - while((*PARTICLEITERATOR)()) - { - G4ParticleDefinition *particle = PARTICLEITERATOR->value(); - if(CustomParticleFactory::isCustomParticle(particle)) - { - if(find(handled.begin(),handled.end(),particle->GetPDGEncoding())==handled.end()) - { - handled.push_back(particle->GetPDGEncoding()); - ATH_MSG_VERBOSE ( particle->GetParticleName() << " is Custom" ); - G4ProcessManager *pmanager = particle->GetProcessManager(); - if(particle->GetParticleType()=="rhadron" || - particle->GetParticleType()=="mesonino" || - particle->GetParticleType()=="sbaryon" ) { - pmanager->AddDiscreteProcess(new FullModelHadronicProcess()); - if (theDecayProcess->IsApplicable(*particle)) - { - ATH_MSG_VERBOSE ( "Adding decay..." ); - pmanager ->AddProcess(theDecayProcess); - // set ordering for PostStepDoIt and AtRestDoIt - pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep); - pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest); - } - else - { - ATH_MSG_VERBOSE ( "No decay allowed for " << particle->GetParticleName() ); - if (!particle->GetPDGStable() && particle->GetPDGLifeTime()<0.1*CLHEP::ns) - { - ATH_MSG_VERBOSE ( "Gonna decay it anyway!!!" ); - pmanager ->AddProcess(theDecayProcess); - // set ordering for PostStepDoIt and AtRestDoIt - pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep); - pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest); - } - } - } - if (particle->GetPDGCharge()/CLHEP::eplus != 0) - { - pmanager->AddProcess(new G4hMultipleScattering,-1, 1,1); - pmanager->AddProcess(new G4hIonisation, -1, 2,2); - ATH_MSG_VERBOSE ( " Processes for charged particle added." ); - } - else - { - ATH_MSG_VERBOSE ( " It is neutral!!" ); - } - pmanager->DumpInfo(); - } - else - { - ATH_MSG_VERBOSE ( "Skipping already handled particle: "<<particle->GetParticleName() ); + // Use the G4 particle iterator + while((*particleIterator)()) { + G4ParticleDefinition *particle = particleIterator->value(); + if(CustomParticleFactory::isCustomParticle(particle)) { + if(find(handled.begin(),handled.end(),particle->GetPDGEncoding())==handled.end()) { + handled.push_back(particle->GetPDGEncoding()); + ATH_MSG_VERBOSE ( particle->GetParticleName() << " is Custom" ); + G4ProcessManager *pmanager = particle->GetProcessManager(); + if(particle->GetParticleType()=="rhadron" || + particle->GetParticleType()=="mesonino" || + particle->GetParticleType()=="sbaryon" ) { + pmanager->AddDiscreteProcess(new FullModelHadronicProcess()); + if (theDecayProcess->IsApplicable(*particle)) { + ATH_MSG_VERBOSE ( "Adding decay..." ); + pmanager ->AddProcess(theDecayProcess); + // set ordering for PostStepDoIt and AtRestDoIt + pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep); + pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest); + } else { + ATH_MSG_VERBOSE ( "No decay allowed for " << particle->GetParticleName() ); + if (!particle->GetPDGStable() && particle->GetPDGLifeTime()<0.1*CLHEP::ns) { + ATH_MSG_VERBOSE ( "Gonna decay it anyway!!!" ); + pmanager ->AddProcess(theDecayProcess); + // set ordering for PostStepDoIt and AtRestDoIt + pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep); + pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest); } + } } - - } + if (particle->GetPDGCharge()/CLHEP::eplus != 0) { + pmanager->AddProcess(new G4hMultipleScattering,-1, 1,1); + pmanager->AddProcess(new G4hIonisation, -1, 2,2); + ATH_MSG_VERBOSE ( "Processes for charged particle added." ); + } else { + ATH_MSG_VERBOSE ( "It is neutral!!" ); + } + pmanager->DumpInfo(); + } else { + ATH_MSG_VERBOSE ( "Skipping already handled particle: "<<particle->GetParticleName() ); + } // If it has not been handled yet + } // If this is one of our custom particles (RHadrons) + } // End of the particle iterator } diff --git a/Simulation/G4Extensions/RHadrons/src/RHadronsPhysicsTool.h b/Simulation/G4Extensions/RHadrons/src/RHadronsPhysicsTool.h index 0612bd41f393e5a105d1f587555b76473f368ba6..d18996849709f043b632a31fdc07aa532c579cde 100644 --- a/Simulation/G4Extensions/RHadrons/src/RHadronsPhysicsTool.h +++ b/Simulation/G4Extensions/RHadrons/src/RHadronsPhysicsTool.h @@ -36,8 +36,6 @@ public: virtual RHadronsPhysicsTool* GetPhysicsOption(); -protected: - }; diff --git a/Simulation/G4Extensions/RHadrons/src/SG_StepNtuple.cxx b/Simulation/G4Extensions/RHadrons/src/SG_StepNtuple.cxx index a95e18797ef32194829660e7da1e0524f5cbf111..d98c74d81ca2b6a2e62f67aa7501db55c29a647b 100644 --- a/Simulation/G4Extensions/RHadrons/src/SG_StepNtuple.cxx +++ b/Simulation/G4Extensions/RHadrons/src/SG_StepNtuple.cxx @@ -23,10 +23,15 @@ namespace G4UA { - SG_StepNtuple::SG_StepNtuple() + SG_StepNtuple::SG_StepNtuple(const std::vector<int>& pdgids) : AthMessaging(Gaudi::svcLocator()->service< IMessageSvc >( "MessageSvc" ), "SG_StepNtuple") - {} + { + // Load up the PDG IDs + for (int i : pdgids ){ + m_rhs.insert(i); + } + } void SG_StepNtuple::BeginOfRunAction(const G4Run*) { @@ -81,58 +86,6 @@ namespace G4UA //set initial values m_nevents=0; - //These are the RHadron pdg_id - - //newest codes for intermediate states - rhs.insert(1000991); - rhs.insert(1009211); - rhs.insert(1009111); - rhs.insert(1009311); - rhs.insert(1009321); - rhs.insert(1093122); - rhs.insert(1092212); - rhs.insert(1092112); - //All other Rhadron codes - rhs.insert(1000993); - rhs.insert(1009213); - rhs.insert(1009313); - rhs.insert(1009323); - rhs.insert(1009113); - rhs.insert(1009223); - rhs.insert(1009333); - rhs.insert(1091114); - rhs.insert(1092114); - rhs.insert(1092214); - rhs.insert(1092224); - rhs.insert(1093114); - rhs.insert(1093214); - rhs.insert(1093224); - rhs.insert(1093314); - rhs.insert(1093324); - rhs.insert(1093334); - //adding to stop rhadron values by pdg_id - rhs.insert(1000612); - rhs.insert(1000622); - rhs.insert(1000632); - rhs.insert(1000642); - rhs.insert(1000652); - rhs.insert(1006113); - rhs.insert(1006211); - rhs.insert(1006213); - rhs.insert(1006223); - rhs.insert(1006311); - rhs.insert(1006313); - rhs.insert(1006321); - rhs.insert(1006323); - rhs.insert(1006333); - //adding to sbottom rhadron values by pdg_id - rhs.insert(1000512); - rhs.insert(1000522); - rhs.insert(1005211); - //adding the stau by pdg_id - rhs.insert(1000015); - assert(rhs.size()==43); - } void SG_StepNtuple::BeginOfEventAction(const G4Event*) @@ -157,7 +110,7 @@ namespace G4UA if(m_nsteps<50000){ int pdg = aStep->GetTrack()->GetDefinition()->GetPDGEncoding(); bool rhad=false; - if (std::find(rhs.begin(),rhs.end(),std::abs(pdg))!=rhs.end()) { + if (std::find(m_rhs.begin(),m_rhs.end(),std::abs(pdg))!=m_rhs.end()) { rhad=true; } diff --git a/Simulation/G4Extensions/RHadrons/src/SG_StepNtuple.h b/Simulation/G4Extensions/RHadrons/src/SG_StepNtuple.h index 13771d19edc3c25ea3dc0f1ad7000b4b04ef2f62..ed689844a28bf14078ebaa1356b2852a1dd8520e 100644 --- a/Simulation/G4Extensions/RHadrons/src/SG_StepNtuple.h +++ b/Simulation/G4Extensions/RHadrons/src/SG_StepNtuple.h @@ -23,7 +23,7 @@ namespace G4UA public: - SG_StepNtuple(); + SG_StepNtuple(const std::vector<int>&); virtual void BeginOfRunAction(const G4Run*) override; virtual void BeginOfEventAction(const G4Event*) override; @@ -42,7 +42,7 @@ namespace G4UA NTuple::Array<float> m_dep, m_mass; NTuple::Array<float> m_ke1, m_ke2; NTuple::Array<int> m_rh, m_rhid, m_step; - std::set<int> rhs;//rhadron pdgid's + std::set<int> m_rhs;//rhadron pdgid's long m_nevents = 0; long m_rhadronIndex = 0; diff --git a/Simulation/G4Extensions/RHadrons/src/SG_StepNtupleTool.cxx b/Simulation/G4Extensions/RHadrons/src/SG_StepNtupleTool.cxx index 642b6df54366fbb88023f229389ae560ba229a77..3bf63a424726afa2d17e9b2faa7863f8ded24bcd 100644 --- a/Simulation/G4Extensions/RHadrons/src/SG_StepNtupleTool.cxx +++ b/Simulation/G4Extensions/RHadrons/src/SG_StepNtupleTool.cxx @@ -12,13 +12,15 @@ namespace G4UA const std::string& name, const IInterface* parent) : UserActionToolBase<SG_StepNtuple>(type, name, parent) - {} + { + declareProperty("RHadronPDGIDList",m_pdgids,"List of R-Hadron PDG IDs"); + } std::unique_ptr<SG_StepNtuple> SG_StepNtupleTool::makeAndFillAction(G4AtlasUserActions& actionList) { ATH_MSG_DEBUG("Constructing an SG_StepNtuple action"); - auto action = CxxUtils::make_unique<SG_StepNtuple>(); + auto action = CxxUtils::make_unique<SG_StepNtuple>(m_pdgids); actionList.runActions.push_back( action.get() ); actionList.eventActions.push_back( action.get() ); actionList.steppingActions.push_back( action.get() ); diff --git a/Simulation/G4Extensions/RHadrons/src/SG_StepNtupleTool.h b/Simulation/G4Extensions/RHadrons/src/SG_StepNtupleTool.h index 627e3c15139fd01a5e51119f83bfc39628065ae0..af11c7d33c8a1713cf025e07bc96c85d601af0f7 100644 --- a/Simulation/G4Extensions/RHadrons/src/SG_StepNtupleTool.h +++ b/Simulation/G4Extensions/RHadrons/src/SG_StepNtupleTool.h @@ -5,10 +5,14 @@ #ifndef RHADRONS_G4UA__SG_STEPNTUPLETOOL_H #define RHADRONS_G4UA__SG_STEPNTUPLETOOL_H +// Base class #include "G4AtlasTools/UserActionToolBase.h" +// UA to be constructed #include "SG_StepNtuple.h" +#include <vector> + namespace G4UA { @@ -31,6 +35,9 @@ namespace G4UA virtual std::unique_ptr<SG_StepNtuple> makeAndFillAction(G4AtlasUserActions&) override final; + private: + std::vector<int> m_pdgids; /// List of PDG IDs for R-Hadrons + }; // class SG_StepNtupleTool } // namespace G4UA diff --git a/Simulation/ISF/ISF_Config/share/ISF_ConfigJobInclude.py b/Simulation/ISF/ISF_Config/share/ISF_ConfigJobInclude.py index dda72ad7952f8ab62072a84040c67c5a1f6a22db..afd47de03688f8ced7ae8763a99a0c6ebebac1e7 100644 --- a/Simulation/ISF/ISF_Config/share/ISF_ConfigJobInclude.py +++ b/Simulation/ISF/ISF_Config/share/ISF_ConfigJobInclude.py @@ -53,6 +53,11 @@ if globalflags.DetDescrVersion() not in simFlags.SimLayout.get_Value(): simFlags.load_atlas_flags() simFlags.EventFilter.set_Off() +# --- Read in special simulation job option fragments based on +# --- metadata passed by the evgen stage (move earlier?) +from ISF_Example.ISF_Metadata import checkForSpecialConfigurationMetadata +checkForSpecialConfigurationMetadata() + #-------------------------------------------------------------- # Job setup #-------------------------------------------------------------- diff --git a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.RHadronsPythia8.py b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.RHadronsPythia8.py new file mode 100644 index 0000000000000000000000000000000000000000..a754539c66e124ff106dd68760b7f4f35b2240d2 --- /dev/null +++ b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.RHadronsPythia8.py @@ -0,0 +1,195 @@ +######################################################################### +# preInclude.RHadronsPythia8.py +# Re-write of preInclude.RHadrons.py , relying on Pythia8 and +# new mass spectrum infrastructure and helper functions +######################################################################### + +import os + +from AthenaCommon import Logging +rhlog = Logging.logging.getLogger('RHadronConfig') + +def create_rhadron_particles_file(input_param_card='SLHA_INPUT.DAT',spectrum=1): + """Create a list of particles for custom particle creation""" + # Just use our helper function + from RHadrons.RHadronMasses import update_particle_table + update_particle_table(input_param_card, 'particles.txt', mass_spectrum=spectrum) + + +def create_rhadron_pdgtable(input_param_card='SLHA_INPUT.DAT',spectrum=1): + """Add lines to the PDG table""" + + # Download generic PDGTABLE (overwrite existing one if it exists) + os.system('get_files -remove -data PDGTABLE.MeV') + + # Update the PDG table using our helper function + from RHadrons.RHadronMasses import update_PDG_table + update_PDG_table('SLHA_INPUT.DAT','PDGTABLE.MeV',spectrum) + + +def addLineToPhysicsConfiguration(KEY, VALUE): + """Add lines to the physics configuration""" + os.system('touch PhysicsConfiguration.txt') + newphysconfig = "{key} = {value}".format(key=KEY, value=VALUE) + os.system('echo "%s" >> PhysicsConfiguration.txt' % newphysconfig) + + +def load_files_for_rhadrons_scenario(input_param_card='SLHA_INPUT.DAT',spectrum=1): + """ Load all the files needed for a given scenario""" + # Create custom PDGTABLE.MeV file + create_rhadron_pdgtable(input_param_card,spectrum) + + # Create particles.txt file + create_rhadron_particles_file(input_param_card,spectrum) + + from RHadrons.RHadronMasses import get_interaction_list + get_interaction_list(input_param_card, interaction_file='ProcessList.txt', mass_spectrum=spectrum) + + # Remove existing physics configuration file ([MDJ]: FIXME: Is this happening earlier, or is it needed?) + if os.path.isfile('PhysicsConfiguration.txt'): + rhlog.warning("load_files_for_rhadrons_scenario() Found pre-existing PhysicsConfiguration.txt file - deleting.") + os.remove('PhysicsConfiguration.txt') + + +# Whether we're in sim or digi +doG4SimConfig = True + +# Keep the run number, aka DSID +runNumber = -1 +from AthenaCommon.AthenaCommonFlags import athenaCommonFlags +import PyUtils.AthFile as af +try: + f = af.fopen(athenaCommonFlags.FilesInput()[0]) + if 'generators' in f.infos['tag_info']: + usePythia8 = 'Py8' in f.infos['tag_info']['generators'] or 'Pythia8' in f.infos['tag_info']['generators'] + if not usePythia8: raise RuntimeError('Pythia8 not found in generator metadata - will abort') + # MC Channel Number. Try the standard two spots, and fall back to the run number for evgen + if 'mc_channel_number' in f.infos and len(f.infos['mc_channel_number'])>0: + runNumber = f.infos['mc_channel_number'][0] + if runNumber<=0 and 'mc_channel_number' in f.infos['tag_info']: + runNumber = f.infos['tag_info']['mc_channel_number'] + if runNumber<=0: + runNumber = f.infos['run_number'][0] + # This is also used for digitization, so protect in case we're there + if "StreamHITS" in f.infos["stream_names"]: + from Digitization.DigitizationFlags import digitizationFlags + simdict = digitizationFlags.specialConfiguration.get_Value() + doG4SimConfig = False + else: + from G4AtlasApps.SimFlags import simFlags + simdict = simFlags.specialConfiguration.get_Value() +except: + from G4AtlasApps.SimFlags import simFlags + simdict = simFlags.specialConfiguration.get_Value() + +# Add the appropriate physics tool +from G4AtlasApps.SimFlags import simFlags +simFlags.PhysicsOptions += ["RHadronsPhysicsTool"] + + +# From the run number, load up the configuration. Not the most beautiful thing, but this works. +from glob import glob +# Default position: look in cvmfs for job options +cvmfs_mc15 = '/cvmfs/atlas.cern.ch/repo/sw/Generators/MC15JobOptions/latest/' +JO = glob(cvmfs_mc15+'/share/DSID'+str(runNumber/1000)+'xxx/MC15.'+str(runNumber)+'*.py') +if len(JO)>0: + JO = JO[0] +else: + # Miss. Try local + JO = glob('MC15.'+str(runNumber)+'*.py') + if len(JO)>0: JO=JO[0] + else: + # Miss. Try one directory deeper + JO = glob('*/MC15.'+str(runNumber)+'*.py') + if len(JO)>0: JO=JO[0] + else: + # Miss. Fall back to datapath + for adir in os.environ['DATAPATH'].split(":"): + JO = glob(adir+'/MC15.'+str(runNumber)+'*.py') + if len(JO)>0: + JO=JO[0] + break +if not JO: + raise RuntimeError('Could not locate job options for DSID '+str(runNumber)) +# add any necessary elements to the runArgs here! +runArgs.jobConfig = [JO.split('/')[-1] if '/' in JO else JO] +runArgs.runNumber = runNumber +# Set up evgenLog logger - use this one +evgenLog=rhlog +# Set up evgenConfig just for a holder +class dummyClass(): + def __init(self): + pass + keywords = [] # So that they can be +='d in +evgenConfig = dummyClass() +evgenConfig.generators = [] +evgenConfig.auxfiles = [] +# Set up a fake pythia8... +genSeq = dummyClass() +genSeq.Pythia8 = dummyClass() +# Standard list of commands stolen from the Pythia8 base fragment +genSeq.Pythia8.Commands = [ + "6:m0 = 172.5", + "23:m0 = 91.1876", + "23:mWidth = 2.4952", + "24:m0 = 80.399", + "24:mWidth = 2.085", + "StandardModel:sin2thetaW = 0.23113", + "StandardModel:sin2thetaWbar = 0.23146", + "ParticleDecays:limitTau0 = on", + "ParticleDecays:tau0Max = 10.0"] +# Set up a fake TestHepMC +testSeq = dummyClass() +testSeq.TestHepMC = dummyClass() +# Block includes that we don't want running +include.block('MC15JobOptions/MadGraphControl_SimplifiedModelPostInclude.py') +include.block('MC15JobOptions/Pythia8_Base_Fragment.py') +include.block('MC15JobOptions/Pythia8_EvtGen.py') +include.block('MC15JobOptions/Pythia8_LHEF.py') + +# Make sure all the files can be found +from EvgenJobTransforms.jo_proxy import mk_jo_proxy +mk_jo_proxy(cvmfs_mc15, "MC15JobOptions", "_joproxy15") + +# Updating JOBOPTSEARCHPATH env var on the athena side +import re,os +from AthenaCommon import Include +Include.optionsPathEnv = os.environ[ 'JOBOPTSEARCHPATH' ] +Include.optionsPath = re.split( ',|' + os.pathsep, Include.optionsPathEnv ) + +# Include the job options themselves +include(JO) + +# Build the param card, aka SLHA file +from MadGraphControl.MadGraphUtils import build_param_card +build_param_card(param_card_old='param_card.SM.%s.%s.dat'%(gentype,decaytype),param_card_new='SLHA_INPUT.DAT',masses=masses,decays=decays) + +# Get the spectrum number if it's in the metadata +spectrum = 1 if 'SPECTRUM' not in simdict else simdict['SPECTRUM'] + +# Last step, load up the files +load_files_for_rhadrons_scenario('SLHA_INPUT.DAT',spectrum) + + +# Add any lines that were missing +# In case we want to use Pythia8 for decays during simulation +lifetime = float(simdict['LIFETIME']) if simdict.has_key("LIFETIME") else -1. +if lifetime<1. and hasattr(runArgs,'outputEVNT_TRFile'): + rhlog.warning('Lifetime specified at <1ns, but you are writing stopped particle positions.') + rhlog.warning('Assuming that you mean to use infinite lifetimes, and ignoring the setting') +else: + addLineToPhysicsConfiguration("DoDecays","1") + addLineToPhysicsConfiguration("HadronLifeTime", str(lifetime)) +# If we reading particle records, and the lifetime is short, stop them as well +if lifetime<1. and hasattr(runArgs,'inputEVNT_TRFile'): + addLineToPhysicsConfiguration("DoDecays","1") + addLineToPhysicsConfiguration("HadronLifeTime", 0.000001) + +# Capture Pythia8 commands +# Set up R-hadron masses in Pythia8 +from RHadrons.RHadronMasses import get_Pythia8_commands +genSeq.Pythia8.Commands += get_Pythia8_commands('SLHA_INPUT.DAT',spectrum) +f = open('PYTHIA8_COMMANDS.TXT','w') +f.write('\n'.join(genSeq.Pythia8.Commands)) +f.close() +# Done with the Pythia8 setup diff --git a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Rhadrons.py b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Rhadrons.py deleted file mode 100644 index 8e2d9e3cdd877d22ddf474e6a8320d1f5161f493..0000000000000000000000000000000000000000 --- a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Rhadrons.py +++ /dev/null @@ -1,703 +0,0 @@ -######################################################################### -# preInclude.Rhadrons.py - Chiara Debenedetti, 3 Jun 2011 # -# - Andy Haas, 4 Apr 2012 -######################################################################### - -import os -import shutil -import sys - -def create_rhadron_particles_file(CASE, MASS, MODEL, MASSX): - """particles.txt Templates""" - - print 'INFO: MASSX is ',MASSX,' GeV' - MASS = (float(MASS)-100) # The table masses are by default 100 GeV, so that part is subtracted - - particles = { - "gluino" : { - "generic" : [ - ' 1000021 %3.3f # ~g' % ( MASS + 100.000 ), - ' 1000993 %3.3f # ~g_glueball' % ( MASS + 100.700 ), - ' 1009213 %3.3f # ~g_rho+' % ( MASS + 100.650 ), - ' 1009313 %3.3f # ~g_K*0' % ( MASS + 100.825 ), - ' 1009323 %3.3f # ~g_K*+' % ( MASS + 100.825 ), - ' 1009113 %3.3f # ~g_rho0' % ( MASS + 100.650 ), - ' 1009223 %3.3f # ~g_omega' % ( MASS + 100.650 ), - ' 1009333 %3.3f # ~g_phi' % ( MASS + 101.800 ), - ' 1091114 %3.3f # ~g_Delta-' % ( MASS + 100.975 ), - ' 1092114 %3.3f # ~g_Delta0' % ( MASS + 100.975 ), - ' 1092214 %3.3f # ~g_Delta+' % ( MASS + 100.975 ), - ' 1092224 %3.3f # ~g_Delta++' % ( MASS + 100.975 ), - ' 1093114 %3.3f # ~g_Sigma*-' % ( MASS + 101.150 ), - ' 1093214 %3.3f # ~g_Sigma*0' % ( MASS + 101.150 ), - ' 1093224 %3.3f # ~g_Sigma*+' % ( MASS + 101.150 ), - ' 1093314 %3.3f # ~g_Xi*-' % ( MASS + 101.300 ), - ' 1093324 %3.3f # ~g_Xi*0' % ( MASS + 101.300 ), - ' 1093334 %3.3f # ~g_Omega-' % ( MASS + 101.600 ), - ' -1009213 %3.3f # ~g_rho-' % ( MASS + 100.650 ), - ' -1009313 %3.3f # ~g_K*bar0' % ( MASS + 100.825 ), - ' -1009323 %3.3f # ~g_K*-' % ( MASS + 100.825 ), - ' -1091114 %3.3f # ~g_Deltabar+' % ( MASS + 100.975 ), - ' -1092114 %3.3f # ~g_Deltabar0' % ( MASS + 100.975 ), - ' -1092214 %3.3f # ~g_Deltabar-' % ( MASS + 100.975 ), - ' -1092224 %3.3f # ~g_Deltabar--' % ( MASS + 100.975 ), - ' -1093114 %3.3f # ~g_Sigma*bar+' % ( MASS + 101.150 ), - ' -1093214 %3.3f # ~g_Sigma*bar0' % ( MASS + 101.150 ), - ' -1093224 %3.3f # ~g_Sigma*bar-' % ( MASS + 101.150 ), - ' -1093314 %3.3f # ~g_Xi*bar+' % ( MASS + 101.300 ), - ' -1093324 %3.3f # ~g_Xi*bar0' % ( MASS + 101.300 ), - ' -1093334 %3.3f # ~g_Omegabar+' % ( MASS + 101.600 ), - ' 1000039 %3.3f # ~Gravitino' % ( MASSX ), - ' 1000022 %3.3f # ~chi_10' % ( MASSX ) - ], - "regge" : [ - ' 1000021 %3.3f # ~g' % (MASS + 100.0 ), - ' 1000993 %3.3f # ~g_glueball' % (MASS + 100.700 ), - ' 1009213 %3.3f # ~g_rho+' % (MASS + 100.700 ), - ' 1009113 %3.3f # ~g_rho0' % (MASS + 100.700 ), - ' 1009313 %3.3f # ~g_K0' % (MASS + 100.700 ), - ' 1009323 %3.3f # ~g_K+' % (MASS + 100.700 ), - ' 1093122 %3.3f # ~g_Lambda0' % (MASS + 100.700 ), - ' -1009213 %3.3f # ~g_rho-' % (MASS + 100.700 ), - ' -1009313 %3.3f # ~g_K0bar' % (MASS + 100.700 ), - ' -1009323 %3.3f # ~g_K-' % (MASS + 100.700 ), - ' -1093212 %3.3f # ~g_Sigma0' % (MASS + 100.700 ), # guess - ' 1093212 %3.3f # ~g_aSigma0' % (MASS + 100.700 ), # guess - ' 1000039 %3.3f # ~Gravitino' % ( MASSX ), - ' 1000022 %3.3f # ~chi_10' % ( MASSX ) - ], - "intermediate" : [ - ' 1000021 %3.3f # ~g' % ( MASS + 100.0), - ' 1000991 %3.3f # ~g_glueball' % ( MASS + 100.330), - ' 1009211 %3.3f # ~g_pi+' % ( MASS + 100.330), - ' -1009211 %3.3f # ~g_pi-' % ( MASS + 100.330), - ' 1009111 %3.3f # ~g_pi0' % ( MASS + 100.330), - ' 1009311 %3.3f # ~g_K0' % ( MASS + 100.460), - ' -1009311 %3.3f # ~g_K0bar' % ( MASS + 100.460), - ' 1009321 %3.3f # ~g_K+' % ( MASS + 100.460), - ' -1009321 %3.3f # ~g_K-' % ( MASS + 100.460), - ' 1093122 %3.3f # ~g_Lambda0' % ( MASS + 100.280), - ' 1092212 %3.3f # ~g_proton' % ( MASS + 100.660), - ' -1092212 %3.3f # ~g_aproton' % ( MASS + 100.660), - ' 1092112 %3.3f # ~g_neutron' % ( MASS + 100.660), - ' -1092112 %3.3f # ~g_aneutron' % ( MASS + 100.660), - ' 1092214 %3.3f # ~g_Delta+' % ( MASS + 100.530), - ' -1092214 %3.3f # ~g_Delta-' % ( MASS + 100.530), - ' 1092114 %3.3f # ~g_Delta0' % ( MASS + 100.530), - ' -1092114 %3.3f # ~g_aDelta0' % ( MASS + 100.530), - ' 1000039 %3.3f # ~Gravitino' % ( MASSX ), - ' 1000022 %3.3f # ~chi_10' % ( MASSX ) - ] - }, # end of gluino cases - "stop" : { - "generic" :[ - ' 1000006 %3.3f # ~t_1' % ( MASS + 100.000 ), - ' 1000612 %3.3f # ~T+ ' % ( MASS + 100.325 ), - ' 1000622 %3.3f # ~T0 ' % ( MASS + 100.325 ), - ' 1000632 %3.3f # ~T_s+' % ( MASS + 100.500 ), - ' 1000642 %3.3f # ~T_c0' % ( MASS + 101.500 ), - ' 1000652 %3.3f # ~T_b+' % ( MASS + 104.800 ), - ' 1006113 %3.3f # ~T_dd10' % ( MASS + 100.650 ), - ' 1006211 %3.3f # ~T_ud0+' % ( MASS + 100.650 ), - ' 1006213 %3.3f # ~T_ud1+' % ( MASS + 100.650 ), - ' 1006223 %3.3f # ~T_uu1++ ' % ( MASS + 100.650 ), - ' 1006311 %3.3f # ~T_sd00 ' % ( MASS + 100.825 ), - ' 1006313 %3.3f # ~T_sd10 ' % ( MASS + 100.825 ), - ' 1006321 %3.3f # ~T_su0+ ' % ( MASS + 100.825 ), - ' 1006323 %3.3f # ~T_su1+ ' % ( MASS + 100.825 ), - ' 1006333 %3.3f # ~T_ss10 ' % ( MASS + 101.000 ), - ' -1000006 %3.3f # ~t_1bar' % ( MASS + 100.000 ), - ' -1000612 %3.3f # ~Tbar- ' % ( MASS + 100.325 ), - ' -1000622 %3.3f # ~Tbar0 ' % ( MASS + 100.325 ), - ' -1000632 %3.3f # ~Tbar_s-' % ( MASS + 100.500 ), - ' -1000642 %3.3f # ~Tbar_c0' % ( MASS + 101.500 ), - ' -1000652 %3.3f # ~Tbar_b-' % ( MASS + 104.800 ), - ' -1006113 %3.3f # ~Tbar_dd10' % ( MASS + 100.650 ), - ' -1006211 %3.3f # ~Tbar_ud0-' % ( MASS + 100.650 ), - ' -1006213 %3.3f # ~Tbar_ud1-' % ( MASS + 100.650 ), - ' -1006223 %3.3f # ~Tbar_uu1--'% ( MASS + 100.650 ), - ' -1006311 %3.3f # ~Tbar_sd00 '% ( MASS + 100.825 ), - ' -1006313 %3.3f # ~Tbar_sd10 '% ( MASS + 100.825 ), - ' -1006321 %3.3f # ~Tbar_su0- '% ( MASS + 100.825 ), - ' -1006323 %3.3f # ~Tbar_su1- '% ( MASS + 100.825 ), - ' -1006333 %3.3f # ~Tbar_ss10 '% ( MASS + 101.000 ), - ' 1000039 %3.3f # ~Gravitino' % ( MASSX ), - ' 1000022 %3.3f # ~chi_10' % ( MASSX ) - ], - "regge" : [ - ' 1000006 %3.3f # ~t_1' % ( MASS + 100.000 ), - ' 1000612 %3.3f # ~T+ ' % ( MASS + 100.325 ), - ' 1000622 %3.3f # ~T0 ' % ( MASS + 100.325 ), - ' 1006211 %3.3f # ~T_ud0+' % ( MASS + 100.650 ), - ' -1000006 %3.3f # ~t_1bar' % ( MASS + 100.000 ), - ' -1000612 %3.3f # ~Tbar- ' % ( MASS + 100.325 ), - ' -1000622 %3.3f # ~Tbar0 ' % ( MASS + 100.325 ), - ' -1006211 %3.3f # ~Tbar_ud0-' % ( MASS + 100.650 ), - ' 1000039 %3.3f # ~Gravitino' % ( MASSX ), - ' 1000022 %3.3f # ~chi_10' % ( MASSX ) - ], - "intermediate" : [] - }, # end of stop cases - "sbottom" : { - "generic" : [], - "regge" : [ - ' 1000005 %3.3f # ~b' % ( MASS + 100.000 ), - ' 1000512 %3.3f # ~B0 ' % ( MASS + 100.325 ), - ' 1000522 %3.3f # ~B- ' % ( MASS + 100.325 ), - ' 1005211 %3.3f # ~B_ud0' % ( MASS + 100.650 ), - ' -1000005 %3.3f # ~bbar' % ( MASS + 100.000 ), - ' -1000512 %3.3f # ~Bbar0 ' % ( MASS + 100.325 ), - ' -1000522 %3.3f # ~Bbar+ ' % ( MASS + 100.325 ), - ' -1005211 %3.3f # ~Bbar_ud0' % ( MASS + 100.650 ), - ' 1000039 %3.3f # ~Gravitino' % ( MASSX ), - ' 1000022 %3.3f # ~chi_10' % ( MASSX ) - ], - "intermediate" : [] - } # end of sbottom cases - } # end of pdgtable dict - - # Write a new particle.txt file - with open('particles.txt','w') as f: - for line in particles[CASE][MODEL]: - f.writelines(line + "\n") - -def create_rhadron_pdgtable(CASE, MASS, MODEL): - """PDGTABLE Templates""" - - MASS = (float(MASS)-100) * 1000.0 # Convert mass to MeV (the table masses are by default 100 GeV, so that part is subtracted) - - pdgtable = { - "gluino" : { - "generic" : [ - 'M 1000021 %11.5E +0.0E+00 -0.0E+00 ~g 0' % ( MASS + 100.E+03 ), - 'W 1000021 %11.5E +0.0E+00 -0.0E+00 ~g 0' % ( 0.E+00 ), - 'M 1009213 %11.5E +0.0E+00 -0.0E+00 ~g_rho+ +' % ( MASS + 100.65E+03 ), - 'W 1009213 %11.5E +0.0E+00 -0.0E+00 ~g_rho+ +' % ( 0.E+00 ), - 'M 1009113 %11.5E +0.0E+00 -0.0E+00 ~g_rho0 0' % ( MASS + 100.65E+03 ), - 'W 1009113 %11.5E +0.0E+00 -0.0E+00 ~g_rho0 0' % ( 0.E+00 ), - 'M 1091114 %11.5E +0.0E+00 -0.0E+00 ~g_Delta- -' % ( MASS + 100.975E+03 ), - 'W 1091114 %11.5E +0.0E+00 -0.0E+00 ~g_Delta- -' % ( 0.E+00 ), - 'M 1092114 %11.5E +0.0E+00 -0.0E+00 ~g_Delta0 0' % ( MASS + 100.975E+03 ), - 'W 1092114 %11.5E +0.0E+00 -0.0E+00 ~g_Delta0 0' % ( 0.E+00 ), - 'M 1092214 %11.5E +0.0E+00 -0.0E+00 ~g_Delta+ +' % ( MASS + 100.975E+03 ), - 'W 1092214 %11.5E +0.0E+00 -0.0E+00 ~g_Delta+ +' % ( 0.E+00 ), - 'M 1092224 %11.5E +0.0E+00 -0.0E+00 ~g_Delta++ ++' % ( MASS + 100.975E+03 ), - 'W 1092224 %11.5E +0.0E+00 -0.0E+00 ~g_Delta++ ++' % ( 0.E+00 ), - 'M 1000993 %11.5E +0.0E+00 -0.0E+00 ~g_glueball 0' % ( MASS + 100.700E+03 ), - 'W 1000993 %11.5E +0.0E+00 -0.0E+00 ~g_glueball 0' % ( 0.E+00 ), - 'M 1009313 %11.5E +0.0E+00 -0.0E+00 ~g_K*0 0' % ( MASS + 100.825E+03 ), - 'W 1009313 %11.5E +0.0E+00 -0.0E+00 ~g_K*0 0' % ( 0.E+00 ), - 'M 1009323 %11.5E +0.0E+00 -0.0E+00 ~g_K*+ +' % ( MASS + 100.825E+03 ), - 'W 1009323 %11.5E +0.0E+00 -0.0E+00 ~g_K*+ +' % ( 0.E+00 ), - 'M 1009223 %11.5E +0.0E+00 -0.0E+00 ~g_omega 0' % ( MASS + 100.650E+03 ), - 'W 1009223 %11.5E +0.0E+00 -0.0E+00 ~g_omega 0' % ( 0.E+00 ), - 'M 1009333 %11.5E +0.0E+00 -0.0E+00 ~g_phi 0' % ( MASS + 101.800E+03 ), - 'W 1009333 %11.5E +0.0E+00 -0.0E+00 ~g_phi 0' % ( 0.E+00 ), - 'M 1093114 %11.5E +0.0E+00 -0.0E+00 ~g_Sigma*- -' % ( MASS + 101.150E+03 ), - 'W 1093114 %11.5E +0.0E+00 -0.0E+00 ~g_Sigma*- -' % ( 0.E+00 ), - 'M 1093214 %11.5E +0.0E+00 -0.0E+00 ~g_Sigma*0 0' % ( MASS + 101.150E+03 ), - 'W 1093214 %11.5E +0.0E+00 -0.0E+00 ~g_Sigma*0 0' % ( 0.E+00 ), - 'M 1093224 %11.5E +0.0E+00 -0.0E+00 ~g_Sigma*+ +' % ( MASS + 101.150E+03 ), - 'W 1093224 %11.5E +0.0E+00 -0.0E+00 ~g_Sigma*+ +' % ( 0.E+00 ), - 'M 1093314 %11.5E +0.0E+00 -0.0E+00 ~g_Xi*- -' % ( MASS + 101.300E+03 ), - 'W 1093314 %11.5E +0.0E+00 -0.0E+00 ~g_Xi*- -' % ( 0.E+00 ), - 'M 1093324 %11.5E +0.0E+00 -0.0E+00 ~g_Xi*0 0' % ( MASS + 101.300E+03 ), - 'W 1093324 %11.5E +0.0E+00 -0.0E+00 ~g_Xi*0 0' % ( 0.E+00 ), - 'M 1093334 %11.5E +0.0E+00 -0.0E+00 ~g_Omega- -' % ( MASS + 101.600E+03 ), - 'W 1093334 %11.5E +0.0E+00 -0.0E+00 ~g_Omega- -' % ( 0.E+00 ) - ], - "regge" : [ - 'M 1000021 %11.5E +0.0E+00 -0.0E+00 ~g 0' % ( MASS + 100.E+03 ), - 'W 1000021 %11.5E +0.0E+00 -0.0E+00 ~g 0' % ( 0.E+00 ), - 'M 1000993 %11.5E +0.0E+00 -0.0E+00 ~g_glueball 0' % ( MASS + 100.700E+03 ), - 'W 1000993 %11.5E +0.0E+00 -0.0E+00 ~g_glueball 0' % ( 0.E+00 ), - 'M 1009213 %11.5E +0.0E+00 -0.0E+00 ~g_rho+ +' % ( MASS + 100.700E+03 ), - 'W 1009213 %11.5E +0.0E+00 -0.0E+00 ~g_rho+ +' % ( 0.E+00 ), - 'M 1009113 %11.5E +0.0E+00 -0.0E+00 ~g_rho0 0' % ( MASS + 100.700E+03 ), - 'W 1009113 %11.5E +0.0E+00 -0.0E+00 ~g_rho0 0' % ( 0.E+00 ), - 'M 1009313 %11.5E +0.0E+00 -0.0E+00 ~g_K0 0' % ( MASS + 100.700E+03 ), - 'W 1009313 %11.5E +0.0E+00 -0.0E+00 ~g_K0 0' % ( 0.E+00 ), - 'M 1093122 %11.5E +0.0E+00 -0.0E+00 ~g_Lambda0 0' % ( MASS + 100.280E+03 ), - 'W 1093122 %11.5E +0.0E+00 -0.0E+00 ~g_Lambda0 0' % ( 0.E+00 ), - 'M 1009323 %11.5E +0.0E+00 -0.0E+00 ~g_K+ +' % ( MASS + 100.700E+03 ), - 'W 1009323 %11.5E +0.0E+00 -0.0E+00 ~g_K+ +' % ( 0.E+00 ), - 'M 1009113 %11.5E +0.0E+00 -0.0E+00 ~g_Lambda0 0' % ( MASS + 100.700E+03 ), - 'W 1009113 %11.5E +0.0E+00 -0.0E+00 ~g_Lambda0 0' % ( 0.E+00 ) - ], - "intermediate" : [ - 'M 1000021 %11.5E +0.0E+00 -0.0E+00 ~g 0' % ( MASS + 100.E+03 ), - 'W 1000021 %11.5E +0.0E+00 -0.0E+00 ~g 0' % ( 0.E+00 ), - 'M 1000991 %11.5E +0.0E+00 -0.0E+00 ~g_glueball 0' % ( MASS + 100.330E+03 ), - 'W 1000991 %11.5E +0.0E+00 -0.0E+00 ~g_glueball 0' % ( 0.E+00 ), - 'M 1009211 %11.5E +0.0E+00 -0.0E+00 ~g_pi+ +' % ( MASS + 100.330E+03 ), - 'W 1009211 %11.5E +0.0E+00 -0.0E+00 ~g_pi+ +' % ( 0.E+00 ), - 'M 1009111 %11.5E +0.0E+00 -0.0E+00 ~g_pi0 0' % ( MASS + 100.330E+03 ), - 'W 1009111 %11.5E +0.0E+00 -0.0E+00 ~g_pi0 0' % ( 0.E+00 ), - 'M 1009311 %11.5E +0.0E+00 -0.0E+00 ~g_K0 0' % ( MASS + 100.460E+03 ), - 'W 1009311 %11.5E +0.0E+00 -0.0E+00 ~g_K0 0' % ( 0.E+00 ), - 'M 1009321 %11.5E +0.0E+00 -0.0E+00 ~g_K+ +' % ( MASS + 100.460E+03 ), - 'W 1009321 %11.5E +0.0E+00 -0.0E+00 ~g_K+ +' % ( 0.E+00 ), - 'M 1093122 %11.5E +0.0E+00 -0.0E+00 ~g_Lambda0 0' % ( MASS + 100.280E+03 ), - 'W 1093122 %11.5E +0.0E+00 -0.0E+00 ~g_Lambda0 0' % ( 0.E+00 ), - 'M 1092212 %11.5E +0.0E+00 -0.0E+00 ~g_proton +' % ( MASS + 100.660E+03 ), - 'W 1092212 %11.5E +0.0E+00 -0.0E+00 ~g_proton +' % ( 0.E+00 ), - 'M 1092112 %11.5E +0.0E+00 -0.0E+00 ~g_neutron 0' % ( MASS + 100.660E+03 ), - 'W 1092112 %11.5E +0.0E+00 -0.0E+00 ~g_neutron 0' % ( 0.E+00 ), - 'M 1092214 %11.5E +0.0E+00 -0.0E+00 ~g_Delta+ +' % ( MASS + 100.530E+03 ), - 'W 1092214 %11.5E +0.0E+00 -0.0E+00 ~g_Delta+ +' % ( 0.E+00 ), - 'M 1092114 %11.5E +0.0E+00 -0.0E+00 ~g_Delta0 0' % ( MASS + 100.530E+03 ), - 'W 1092114 %11.5E +0.0E+00 -0.0E+00 ~g_Delta0 0' % ( 0.E+00 ) - ] - }, # end of gluino cases - "stop" : { - "generic" : [ - 'M 1000006 %11.5E +0.0E+00 -0.0E+00 ~t_1 0' % ( MASS + 100.000E+03 ), - 'W 1000006 %11.5E +0.0E+00 -0.0E+00 ~t_1 0' % ( 0.E+00 ), - 'M 1000612 %11.5E +0.0E+00 -0.0E+00 ~T+ +' % ( MASS + 100.325E+03 ), - 'W 1000612 %11.5E +0.0E+00 -0.0E+00 ~T+ +' % ( 0.E+00 ), - 'M 1000622 %11.5E +0.0E+00 -0.0E+00 ~T0 0' % ( MASS + 100.325E+03 ), - 'W 1000622 %11.5E +0.0E+00 -0.0E+00 ~T0 0' % ( 0.E+00 ), - 'M 1000632 %11.5E +0.0E+00 -0.0E+00 ~T_s+ +' % ( MASS + 100.500E+03 ), - 'W 1000632 %11.5E +0.0E+00 -0.0E+00 ~T_s+ +' % ( 0.E+00 ), - 'M 1000642 %11.5E +0.0E+00 -0.0E+00 ~T_c0 0' % ( MASS + 101.500E+03 ), - 'W 1000642 %11.5E +0.0E+00 -0.0E+00 ~T_c0 0' % ( 0.E+00 ), - 'M 1000652 %11.5E +0.0E+00 -0.0E+00 ~T_b+ +' % ( MASS + 104.800E+03 ), - 'W 1000652 %11.5E +0.0E+00 -0.0E+00 ~T_b+ +' % ( 0.E+00 ), - 'M 1006113 %11.5E +0.0E+00 -0.0E+00 ~T_dd10 0' % ( MASS + 100.650E+03 ), - 'W 1006113 %11.5E +0.0E+00 -0.0E+00 ~T_dd10 0' % ( 0.E+00 ), - 'M 1006211 %11.5E +0.0E+00 -0.0E+00 ~T_ud0+ +' % ( MASS + 100.650E+03 ), - 'W 1006211 %11.5E +0.0E+00 -0.0E+00 ~T_ud0+ +' % ( 0.E+00 ), - 'M 1006213 %11.5E +0.0E+00 -0.0E+00 ~T_ud1+ +' % ( MASS + 100.650E+03 ), - 'W 1006213 %11.5E +0.0E+00 -0.0E+00 ~T_ud1+ +' % ( 0.E+00 ), - 'M 1006223 %11.5E +0.0E+00 -0.0E+00 ~T_uu1++ ++' % ( MASS + 100.650E+03 ), - 'W 1006223 %11.5E +0.0E+00 -0.0E+00 ~T_uu1++ ++' % ( 0.E+00 ), - 'M 1006311 %11.5E +0.0E+00 -0.0E+00 ~T_sd00 0' % ( MASS + 100.825E+03 ), - 'W 1006311 %11.5E +0.0E+00 -0.0E+00 ~T_sd00 0' % ( 0.E+00 ), - 'M 1006313 %11.5E +0.0E+00 -0.0E+00 ~T_sd10 0' % ( MASS + 100.825E+03 ), - 'W 1006313 %11.5E +0.0E+00 -0.0E+00 ~T_sd10 0' % ( 0.E+00 ), - 'M 1006321 %11.5E +0.0E+00 -0.0E+00 ~T_su0+ +' % ( MASS + 100.825E+03 ), - 'W 1006321 %11.5E +0.0E+00 -0.0E+00 ~T_su0+ +' % ( 0.E+00 ), - 'M 1006323 %11.5E +0.0E+00 -0.0E+00 ~T_su1+ +' % ( MASS + 100.825E+03 ), - 'W 1006323 %11.5E +0.0E+00 -0.0E+00 ~T_su1+ +' % ( 0.E+00 ), - 'M 1006333 %11.5E +0.0E+00 -0.0E+00 ~T_ss10 0' % ( MASS + 101.000E+03 ), - 'W 1006333 %11.5E +0.0E+00 -0.0E+00 ~T_ss10 0' % ( 0.E+00 ) - ], - "regge" : [ - 'M 1000006 %11.5E +0.0E+00 -0.0E+00 ~t_1 0' % ( MASS + 100.000E+03 ), - 'W 1000006 %11.5E +0.0E+00 -0.0E+00 ~t_1 0' % ( 0.E+00 ), - 'M 1000612 %11.5E +0.0E+00 -0.0E+00 ~T+ +' % ( MASS + 100.325E+03 ), - 'W 1000612 %11.5E +0.0E+00 -0.0E+00 ~T+ +' % ( 0.E+00 ), - 'M 1000622 %11.5E +0.0E+00 -0.0E+00 ~T0 0' % ( MASS + 100.325E+03 ), - 'W 1000622 %11.5E +0.0E+00 -0.0E+00 ~T0 0' % ( 0.E+00 ), - 'M 1006211 %11.5E +0.0E+00 -0.0E+00 ~T_ud0+ +' % ( MASS + 100.650E+03 ), - 'W 1006211 %11.5E +0.0E+00 -0.0E+00 ~T_ud0+ +' % ( 0.E+00 ) - ], - "intermediate" : [] - }, # end of stop cases - "sbottom" : { - "generic" : [], - "regge" : [ - 'M 1000005 %11.5E +0.0E+00 -0.0E+00 ~b 0' % ( MASS + 100.000E+03 ), - 'W 1000005 %11.5E +0.0E+00 -0.0E+00 ~b 0' % ( 0.E+00 ), - 'M 1000512 %11.5E +0.0E+00 -0.0E+00 ~B0 0' % ( MASS + 100.325E+03 ), - 'W 1000512 %11.5E +0.0E+00 -0.0E+00 ~B0 0' % ( 0.E+00 ), - 'M 1000522 %11.5E +0.0E+00 -0.0E+00 ~B- -' % ( MASS + 100.325E+03 ), - 'W 1000522 %11.5E +0.0E+00 -0.0E+00 ~B- -' % ( 0.E+00 ), - 'M 1005211 %11.5E +0.0E+00 -0.0E+00 ~B_ud0 0' % ( MASS + 100.650E+03 ), - 'W 1005211 %11.5E +0.0E+00 -0.0E+00 ~B_ud0 0' % ( 0.E+00 ) - ], - "intermediate" : [] - } # end of sbottom cases - } # end of pdgtable dict - - # Download generic PDGTABLE (overwrite existing one if it exists) - os.system('get_files -remove -data PDGTABLE.MeV') - - # Append the R-Hadron particles to the PDGTABLE.MeV file - with open('PDGTABLE.MeV','a') as f: - f.writelines("* R-Hadron additions: Case=%s, Model=%s, Mass=%d MeV\n" % (CASE, MODEL, (MASS + 100000))) - for line in pdgtable[CASE][MODEL]: - f.writelines(line + "\n") - -def addLineToPhysicsConfiguration(KEY, VALUE): - os.system('touch PhysicsConfiguration.txt') - newphysconfig = "{key} = {value}".format(key=KEY, value=VALUE) - os.system('echo "%s" >> PhysicsConfiguration.txt' % newphysconfig) - -def load_files_for_rhadrons_scenario(CASE, MASS, MODEL, MASSX): - print "MASS: "+str(MASS) - print "CASE: "+CASE - print "MODEL: "+MODEL - print "MASSX: "+str(MASSX) - - # Create custom PDGTABLE.MeV file - create_rhadron_pdgtable(CASE, MASS, MODEL) - - # Download the process list - proclistname = "ProcessList_{model}_{case}.txt".format(case=CASE, model=MODEL) - os.system('get_files -remove -data %s' % proclistname) - shutil.move(proclistname, 'ProcessList.txt') - - # Create particles.txt file - create_rhadron_particles_file(CASE, MASS, MODEL, MASSX) - - # Remove existing physics configuration file ([MDJ]: FIXME: Is this happening earlier, or is it needed?) - if os.path.isfile('PhysicsConfiguration.txt'): - print "SimulationJobOptions/preInclude.Rhadrons.py:load_files_for_rhadrons_scenario() WARNING Found pre-existing PhysicsConfiguration.txt file - deleting." - os.remove('PhysicsConfiguration.txt') - - # Add additional physics configuration options - if MODEL == "regge": - addLineToPhysicsConfiguration("ReggeModel", "1.") - - -doG4SimConfig = True -from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -import PyUtils.AthFile as af -try: - f = af.fopen(athenaCommonFlags.FilesInput()[0]) - - if "StreamHITS" in f.infos["stream_names"]: - from Digitization.DigitizationFlags import digitizationFlags - simdict = digitizationFlags.specialConfiguration.get_Value() - doG4SimConfig = False - else: - from G4AtlasApps.SimFlags import simFlags - simdict = simFlags.specialConfiguration.get_Value() -except: - from G4AtlasApps.SimFlags import simFlags - simdict = simFlags.specialConfiguration.get_Value() - -## Compulsory keys -assert "MASS" in simdict -assert "MODEL" in simdict -assert "CASE" in simdict -MASSX=100.0 -if simdict.has_key("MASSX"): - MASSX = float(simdict["MASSX"]) -print 'INFO: MASSX (neutralino/gravitino mass) set to ',MASSX,' GeV' -load_files_for_rhadrons_scenario(simdict["CASE"], simdict["MASS"], simdict["MODEL"], MASSX) -## Optional keys -if simdict.has_key("XsecMultiplier"): - addLineToPhysicsConfiguration("XsecMultiplier", simdict["XsecMultiplier"]) -if simdict.has_key("Mixing"): - addLineToPhysicsConfiguration("Mixing", simdict["Mixing"]) - -if doG4SimConfig: - from G4AtlasApps.SimFlags import simFlags - simFlags.PhysicsOptions += ["RHadronsPhysicsTool"] - -# In case we want to use Pythia for decays in line... -if simdict.has_key("DECAYS"): - addLineToPhysicsConfiguration("DoDecays","1") - if simdict.has_key("LIFETIME"): - addLineToPhysicsConfiguration("HadronLifeTime", simdict["LIFETIME"]) - else: - addLineToPhysicsConfiguration("HadronLifeTime", "0.000001") - - def rhad_applycalomctruthstrategy(): - print "ERROR rhad_applycalomctruthstrategy is obsolete" - print "Please request replacment configuration." - import sys - sys.exit(1) - ## from G4AtlasApps import AtlasG4Eng - ## myDecay = AtlasG4Eng.G4Eng.Dict_MCTruthStrg.get('Decay') - ## myDecay.add_Volumes('CALO::CALO', 1) - ## AtlasG4Eng.G4Eng.menu_MCTruth.set_TruthStrategiesParameter("DecayPrimaryMinEnergy", -1) - ## AtlasG4Eng.G4Eng.menu_MCTruth.set_TruthStrategiesParameter("DecaySecondaryMinEnergy", -1) - - - simFlags.InitFunctions.add_function("preInitMCTruth", rhad_applycalomctruthstrategy) - - from AthenaCommon.AlgSequence import AlgSequence - genSeq = AlgSequence() - - from PythiaRhad_i.PythiaRhad_iConf import PythiaRhad - genSeq +=PythiaRhad() - genSeq.PythiaRhad.useAtlasPythiaTune09=False - genSeq.PythiaRhad.Tune_Name="PYTUNE_103" - #genSeq.PythiaRhad.Tune_Name="ATLAS_20110003" - genSeq.PythiaRhad.PythiaCommand += [ - "pyinit pylisti 12", - "pyinit pylistf 1", - "pystat 1 3 4 5", - "pyinit dumpr 1 5", - "pydat2 pmas 6 1 172.5", # TOP mass - "pydat2 pmas 24 1 80.399", # PDG2010 W mass - "pydat2 pmas 23 1 91.1876", # PDG2010 Z0 mass - ] - - #-------------------------# - # R-hadron commands below # - #-------------------------# - - # Add some commands valid for both gluino and stop cases - genSeq.PythiaRhad.PythiaCommand += [ - "pysubs ckin 3 18.", # pT cut at 18 GeV - #"pypars mstp 81 1", # Old shower/multiple-interaction model (new model is not compatible with R-hadron fragmentation) - #"pydat1 mstj 11 4", # Set longitudinal fragmentation function to Pythia default - "pymssm imss 1 1", # General MSSM simulation - "pymssm imss 3 1", # Tell Pythia that rmss 3 below should be interpreted as the gluino pole mass - "pymssm imss 5 1", # Set stop, sbottom and stau masses and mixing by hand (26-28 for mixing not set!) - #"pymssm rmss 1 4000.0", # Photino mass - "pymssm rmss 2 8000.0", # Wino/Zino mass - #"pymssm rmss 3 10000.0", # Gluino mass - "pymssm rmss 4 40000.0", # Higgsino mass parameter - "pymssm rmss 6 1500.0", # Left slepton mass - "pymssm rmss 7 1200.0", # Right slepton mass - "pymssm rmss 8 4800.0", # Left squark mass - "pymssm rmss 9 4200.0", # Right squark mass - "pymssm rmss 10 4800.0", # stop2 mass - #"pymssm rmss 11 8000.0", # sbottom1 mass - #"pymssm rmss 12 8000.0", # stop1 mass - "pymssm rmss 13 1500.0", # Left stau mass - "pymssm rmss 14 1200.0", # Right stau mass - #"pymssm rmss 21 10000.0e9", # Gravitino mass - "pysubs msel 0", # Turn off all processes - "pypars mstp 111 0", # Turn off master switch for fragmentation and decay - #"pyinit pylisti 12", # dumps the full decay table, etc. - "pyinit pylistf 3" # dumps pythia event - #"pystat 2" - ] - - pdg={} - q3={} - apflag={} - names={} - antinames={} - masses={} - - # Gluino setups - pdg[("generic", "gluino")] = [1000993, 1009213, 1009313, 1009323, 1009113, 1009223, 1009333, 1091114, 1092114, 1092214, 1092224, 1093114, 1093214, 1093224, 1093314, 1093324, 1093334, 0, 0, 0] - q3[("generic", "gluino")] = [0, 3, 0, 3, 0, 0, 0, -3, 0, 3, 6, -3, 0, 3, -3, 0, -3, 0, 0, 0] - apflag[("generic", "gluino")] = [0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0] - names[("generic", "gluino")] = ["~g_ball", "~g_rho+", "~g_K*0", "~g_K*+", "~g_rho0", "~g_omega", "~g_phi", "~g_Dlt-", "~g_Dlt0", "~g_Dlt+", "~g_Dlt++", "~g_Sgm*-", "~g_Sgm*0", "~g_Sgm*+", "~g_Xi*-", "~g_Xi*0 ", "~g_Omg-", " ", " ", " "] - antinames[("generic", "gluino")] = [" ", "~g_rho-", "~g_K*br0", "~g_K*-", " ", " ", " ", "~g_Dltb+", "~g_Dltb0", "~g_Dltb-", "~g_Dlb--", "~g_Sgmb+", "~g_Sgmb0", "~g_Sgmb-", "~g_Xibr+", "~g_Xib0", "~g_Omgb+", " ", " ", " "] - masses[("generic", "gluino")] = [0.700, 0.650, 0.825, 0.825, 0.650, 0.650, 1.800, 0.975, 0.975, 0.975, 0.975, 1.150, 1.150, 1.150, 1.300, 1.300, 1.600, 0.650, 0.825, 0.825, 0.975, 0.975, 0.975, 0.975, 1.150, 1.150, 1.150, 1.300, 1.300, 1.600] - - pdg[("regge", "gluino")] = [1000993, 1009213, 1009113, 1009313, 1009323, 1093122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - q3[("regge", "gluino")] = [0, 3, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - apflag[("regge", "gluino")] = [0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - names[("regge", "gluino")] = ["~g_gball", "~g_rho+", "~g_rho0", "~g_K0", "~g_K+", "~g_L0", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "] - antinames[("regge", "gluino")] = [" ", "~g_rho-", " ", "~g_K0bar", "~g_K-", "~g_L0bar", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "] - masses[("regge", "gluino")] = [0.330, 0.330, 0.330, 0.460, 0.460, 0.280, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.] - - pdg[("intermediate", "gluino")] = [1000991, 1009211, 1009111, 1009311, 1009321, 1093122, 1092212, 1092112, 1092214, 1092114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - q3[("intermediate", "gluino")] = [0, 3, 0, 0, 3, 0, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - apflag[("intermediate", "gluino")] = [0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - names[("intermediate", "gluino")] = ["~g_gball", "~g_pi+", "~g_pi0", "~g_K0", "~g_K+", "~g_L0", "~g_prot", "~g_neutr", "~g_Delt+", "~g_Delt0", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "] - antinames[("intermediate", "gluino")] = [" ", "~g_pi-", " ", "~g_K0bar", "~g_K-", "~g_L0bar", "~g_aprot", "~g_aneut", "~g_Dltb-", "~g_Dltb0", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "] - masses[("intermediate", "gluino")] = [0.330, 0.330, 0.330, 0.460, 0.460, 0.280, 0.660, 0.660, 0.530, 0.530, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.] - - # Stop setups - pdg[("generic", "stop")] = [1000612, 1000622, 1000632, 1000642, 1000652, 1006113, 1006211, 1006213, 1006223, 1006311, 1006313, 1006321, 1006323, 1006333, 0, 0, 0, 0, 0, 0] - q3[("generic", "stop")] = [3, 0, 3, 0, 3, 0, 3, 3, 6, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0] - apflag[("generic", "stop")] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0] - names[("generic", "stop")] = ["~T+", "~T0", "~T_s+", "~T_c0", "~T_b+", "~T_dd10", "~T_ud0+", "~T_ud1+", "~T_uu1++", "~T_sd00", "~T_sd10", "~T_su0+", "~T_su1+", "~T_ss10", " ", " ", " ", " ", " ", " "] - antinames[("generic", "stop")] = ["~Tb-", "~Tb0", "~Tb_s-", "~Tb_c0", "~Tb_b-", "~Tb_dd10", "~Tb_ud0-", "~Tb_ud1-", "~Tb_uu--", "~Tb_sd00", "~Tb_sd10", "~Tb_su0-", "~Tb_su1-", "~Tb_ss10", " ", " ", " ", " ", " ", " "] - masses[("generic", "stop")] = [0.330, 0.330, 0.330, 0.460, 0.460, 0.280, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.] - - pdg[("regge", "stop")] = [1000612, 1000622, 1006211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - q3[("regge", "stop")] = [3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - apflag[("regge", "stop")] = [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - names[("regge", "stop")] = ["~T+", "~T0", "~T_ud0+", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "] - antinames[("regge", "stop")] = ["~Tb-", "~Tb0", "~Tb_ud-", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "] - masses[("regge", "stop")] = [0.330, 0.330, 0.330, 0.460, 0.460, 0.280, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.] - - # Sbottom - pdg[("regge", "sbottom")] = [1000512, 1000522, 1005211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - q3[("regge", "sbottom")] = [0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - apflag[("regge", "sbottom")] = [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - names[("regge", "sbottom")] = ["~B0", "~B-", "~B_ud0", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "] - antinames[("regge", "sbottom")] = ["~Bb0", "~Bb+", "~Bb_ud0", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "] - masses[("regge", "sbottom")] = [0.330, 0.330, 0.330, 0.460, 0.460, 0.280, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.] - - genSeq.PythiaRhad.RHadronPDGids = pdg[(simdict["MODEL"],simdict["CASE"])] - genSeq.PythiaRhad.PygiveCommand = [] - for i in range(1,20): - KC = str(400+i) - genSeq.PythiaRhad.PygiveCommand += [ - "KCHG("+KC+",1)="+str(q3[(simdict["MODEL"],simdict["CASE"])][i-1]), - "KCHG("+KC+",2)=0", - "KCHG("+KC+",3)="+str(apflag[(simdict["MODEL"],simdict["CASE"])][i-1]), - "KCHG("+KC+",4)="+str(pdg[(simdict["MODEL"],simdict["CASE"])][i-1]), - "CHAF("+KC+",1)="+names[(simdict["MODEL"],simdict["CASE"])][i-1], - "CHAF("+KC+",2)="+antinames[(simdict["MODEL"],simdict["CASE"])][i-1], - ] - genSeq.PythiaRhad.PygiveCommand += [ - "PMAS("+KC+",1)="+str(float(simdict["MASS"])+masses[(simdict["MODEL"],simdict["CASE"])][i-1])+"D0", - "PMAS("+KC+",2)="+str(float(simdict["MASS"])+masses[(simdict["MODEL"],simdict["CASE"])][i-1])+"D0" - ] - print "preInclude.Rhadrons PygiveCommand is:" - print genSeq.PythiaRhad.PygiveCommand - - if (simdict["MODEL"]=='regge'): - genSeq.PythiaRhad.RunReggeModel=True - genSeq.PythiaRhad.RunIntermediateModel=False - if (simdict["MODEL"]=='intermediate'): - genSeq.PythiaRhad.RunReggeModel=False - genSeq.PythiaRhad.RunIntermediateModel=True - - if (simdict["CASE"]=='gluino'): - genSeq.PythiaRhad.RunGluinoHadrons=True - genSeq.PythiaRhad.RunStopHadrons=False - genSeq.PythiaRhad.RunSbottomHadrons=False - genSeq.PythiaRhad.randomtshift=50 # +-X ns, overrides tshift if non-zero - genSeq.PythiaRhad.rh_decay=True - genSeq.PythiaRhad.strip_out_rh=True - genSeq.PythiaRhad.boost_rh_to_rest_frame=True - genSeq.PythiaRhad.rotate_rh=True - genSeq.PythiaRhad.translate_rh_to_stopping_position=True - genSeq.PythiaRhad.EnableAfterInitialize=False # added for PythiaRhad_i-00-04-02 - genSeq.PythiaRhad.StoppingInput = [ [ 0,0,0,0,0,0 ] ] - try: - include("StoppingInput.txt") - except: - pass - genSeq.PythiaRhad.PythiaCommand += [ - "pymssm imss 1 1", # General MSSM simulation - "pymssm imss 3 1", # Tell Pythia that rmss 3 below should be interpreted as the gluino pole mass - "pymssm imss 5 0", # allow pythia to calculate squark masses/mixings - "pymssm rmss 1 "+str(MASSX), # # Photino mass - #"pymssm rmss 2 10000.0", # Wino/Zino mass - "pymssm rmss 3 "+str(simdict["MASS"])+".0", # Gluino mass - #"pymssm rmss 4 10000.0", # Higgsino mass parameter - #"pymssm rmss 7 10000.0", # Right slepton mass - "pymssm rmss 8 4800.0", # Left squark mass - "pymssm rmss 9 4200.0", # Right squark mass - "pymssm rmss 10 4800.0", # stop2 mass - "pymssm rmss 11 4200.0", # sbottom1 mass - "pymssm rmss 12 4100.0", # stop1 mass - "pymssm rmss 21 "+str(MASSX)+"e9", # Gravitino mass (was MASSX before) - "pymssm imss 11 1", # make N1 the LSP (1 would make N1 NLSP and gravitino LSP) (default is 0) - "pymssm rmss 29 7.0e5", # Planck mass, controls BR(g~ -> g+Gravitino), leave high to avoid gravitino production (default is 2.4e18) - "pydat3 mdcy 1000022 1 0", # kill neutralino decays - # "pydat1 mstj 45 6", # allow CMshower->ttbar in gluino decays - # "pydat1 mstj 43 1", # z definition in CM shower - "pysubs msel 0", # Turn off all processes - "pysubs msub 243 1", # turn on ffbar -> ~g~g - "pysubs msub 244 1", # turn on gg -> ~g~g - "pypars mstp 111 0", # Turn off master switch for fragmentation and decay - "pypars mstp 127 1", # allow to continue even if there's no processes with non-vanishing xs - "pyinit pylisti 12", # dumps the full decay table, etc. - # "pyinit pylistf 1", # dumps pythia event - "pyinit dumpr 0 100", # write out events 1 to 100 - "pystat 2" - ] - if simdict.has_key("NOGLUINOGLUONDECAY"): - print "preInclude.Rhadrons: NOGLUINOGLUONDECAY" - genSeq.PythiaRhad.PythiaCommand += [ - "pydat3 mdme 1975 1 0", - "pymssm imss 11 0" # switch off gravitino, just to be sure we don't get gluon decay through it - ] - if simdict.has_key("NOGLUINOLIGHTSQUARKDECAY"): - print "preInclude.Rhadrons: NOGLUINOLIGHTSQUARKDECAY" - genSeq.PythiaRhad.PythiaCommand += [ - "pydat3 mdme 2000 1 0", - "pydat3 mdme 2001 1 0", - "pydat3 mdme 2002 1 0", - "pydat3 mdme 2003 1 0", - "pydat3 mdme 2004 1 0" - ] - if simdict.has_key("NOGLUINOTTBARDECAY"): - print "preInclude.Rhadrons: NOGLUINOTTBARDECAY" - genSeq.PythiaRhad.PythiaCommand += [ - "pydat3 mdme 2005 1 0" - ] - if ('GBALLPROB' in globals()): - genSeq.PythiaRhad.GluinoBallProbability=GBALLPROB - elif (simdict["CASE"]=='stop'): - genSeq.PythiaRhad.RunGluinoHadrons=False - genSeq.PythiaRhad.RunStopHadrons=True - genSeq.PythiaRhad.RunSbottomHadrons=False - genSeq.PythiaRhad.randomtshift=50 # +-X ns, overrides tshift if non-zero - genSeq.PythiaRhad.rh_decay=True - genSeq.PythiaRhad.strip_out_rh=True - genSeq.PythiaRhad.boost_rh_to_rest_frame=True - genSeq.PythiaRhad.rotate_rh=True - genSeq.PythiaRhad.translate_rh_to_stopping_position=True - genSeq.PythiaRhad.EnableAfterInitialize=False # added for PythiaRhad_i-00-04-02 - genSeq.PythiaRhad.StoppingInput = [ [ 0,0,0,0,0,0 ] ] - try: - include("StoppingInput.txt") - except: - pass - genSeq.PythiaRhad.PythiaCommand += [ - "pymssm imss 1 1", # General MSSM simulation - "pymssm imss 3 1", # Tell Pythia that rmss 3 below should be interpreted as the gluino pole mass - "pymssm imss 5 1", # Set stop, sbottom and stau masses and mixing by hand (26-28 for mixing not set!) - "pymssm rmss 1 "+str(MASSX), # Photino mass - #"pymssm rmss 2 10000.0", # Wino/Zino mass - "pymssm rmss 3 25000.0", # Gluino mass - #"pymssm rmss 4 10000.0", # Higgsino mass parameter - #"pymssm rmss 7 10000.0", # Right slepton mass - "pymssm rmss 8 4800.0", # Left squark mass - "pymssm rmss 9 4200.0", # Right squark mass - "pymssm rmss 10 4800.0", # stop2 mass - "pymssm rmss 11 4200.0", # sbottom1 mass - "pymssm rmss 12 "+str(simdict["MASS"])+".0", # stop1 mass - "pymssm rmss 21 "+str(MASSX)+"e9", # Gravitino mass - "pymssm imss 11 1", # make N1 the LSP (1 would make N1 NLSP and gravitino LSP) - "pymssm rmss 29 7.0e5", # Planck mass, controls BR(g~ -> g+Gravitino), leave high to avoid gravitino production - "pydat3 mdcy 1000022 1 0", # kill neutralino decays - # "pydat1 mstj 45 6", # allow CMshower->ttbar in gluino decays - # "pydat1 mstj 43 1", # z definition in CM shower - "pysubs msel 0", # Turn off all processes - "pysubs msub 261 1", # turn on ffbar -> stop1stop1bar - "pysubs msub 264 1", # turn on gg -> stop1stop1bar - "pypars mstp 111 0", # Turn off master switch for fragmentation and decay - "pyinit pylisti 12", # dumps the full decay table, etc. - # "pyinit pylistf 1", # dumps pythia event - "pyinit dumpr 0 100", # write out events 1 to 100 - "pystat 2" - ] - elif (simdict["CASE"]=='sbottom'): - genSeq.PythiaRhad.RunGluinoHadrons=False - genSeq.PythiaRhad.RunStopHadrons=False - genSeq.PythiaRhad.RunSbottomHadrons=True - genSeq.PythiaRhad.randomtshift=50 # +-X ns, overrides tshift if non-zero - genSeq.PythiaRhad.rh_decay=True - genSeq.PythiaRhad.strip_out_rh=True - genSeq.PythiaRhad.boost_rh_to_rest_frame=True - genSeq.PythiaRhad.rotate_rh=True - genSeq.PythiaRhad.translate_rh_to_stopping_position=True - genSeq.PythiaRhad.EnableAfterInitialize=False # added for PythiaRhad_i-00-04-02 - genSeq.PythiaRhad.StoppingInput = [ [ 0,0,0,0,0,0 ] ] - try: - include("StoppingInput.txt") - except: - pass - genSeq.PythiaRhad.PythiaCommand += [ - "pymssm imss 1 1", # General MSSM simulation - "pymssm imss 3 1", # Tell Pythia that rmss 3 below should be interpreted as the gluino pole mass - "pymssm imss 5 1", # Set stop, sbottom and stau masses and mixing by hand (26-28 for mixing not set!) - "pymssm rmss 1 "+str(MASSX), # Photino mass - #"pymssm rmss 2 10000.0", # Wino/Zino mass - "pymssm rmss 3 25000.0", # Gluino mass - #"pymssm rmss 4 10000.0", # Higgsino mass parameter - #"pymssm rmss 7 10000.0", # Right slepton mass - "pymssm rmss 8 4800.0", # Left squark mass - "pymssm rmss 9 4200.0", # Right squark mass - "pymssm rmss 10 4800.0", # stop2 mass - "pymssm rmss 11 "+str(simdict["MASS"])+".0", # sbottom1 mass - "pymssm rmss 12 4100.0", # stop1 mass - "pymssm rmss 21 "+str(MASSX)+"e9", # Gravitino mass - "pymssm imss 11 1", # make N1 the LSP (1 would make N1 NLSP and gravitino LSP) - "pymssm rmss 29 7.0e5", # Planck mass, controls BR(g~ -> g+Gravitino), leave high to avoid gravitino production - "pydat3 mdcy 1000022 1 0", # kill neutralino decays - # "pydat1 parj 64 -10000000.0", - # "pydat3 mdcy 5 1 1", - # "pydat1 mstj 45 6", # allow CMshower->ttbar in gluino decays - # "pydat1 mstj 43 1", # z definition in CM shower - "pysubs msel 0", # Turn off all processes - "pysubs msub 287 1", # turn on ffbar -> sbottom1sbottom1bar - "pysubs msub 289 1", # turn on gg -> sbottom1sbottom1bar - "pysubs msub 291 1", # turn on bb -> sbottom1sbottom1 - "pypars mstp 111 0", # Turn off master switch for fragmentation and decay - "pyinit pylisti 12", # dumps the full decay table, etc. - # "pyinit pylistf 1", # dumps pythia event - "pyinit dumpr 0 100", # write out events 1 to 100 - "pystat 2" - ] - -del doG4SimConfig, simdict, MASSX