Branching Ratio
Hi Johan,
I implemented new model with FeynRules1,6
and used it in MG5
I generated this process p p >Zprime .
How i can get all branching ratio of Zprime from this process where i want to export the matrix elements source code to Pythia8150
Cheers
Nady
Question information
- Language:
- English Edit question
- Status:
- Answered
- Assignee:
- No assignee Edit question
- Last query:
- 2011-11-04
- Last reply:
- 2011-11-04
Dear Nady:
I am not an expert, I am not sure if you can do both things branching and cross section in a single run but if you split these calculations I am pretty sure it is possible (actually I did it myself). It only needs some extra work frm your side nt on MG team
regarding the partial decay width calculation (branching ratio), you can do the calculation directly in MG just make a process card where you put all possible decay process you have coded like
process zprime > x y @1
add process zprime > a b @2
....
as many as needed to compute the full decay width, then calculate branchings, I am pretty sure pythia has some command to include the new particles and branchings
hope it helps,
Johan Alwall (johan-alwall) said : | #2 |
Hello Nady,
Arian is exactly right, you simply generate all decay processes as he describes. You can then use the attached scripts calculate_
Cheers,
Johan
NADY (nady-bakhet) said : | #3 |
Hi Johan
Thanks Arian and Johan
I didn't find the scripts calculate_
and generate_
Where i can find it
Cheers,
Nady
Johan Alwall (johan-alwall) said : | #4 |
calculate_
#!/bin/bash
#
# This runs survey,
#
# First we need to get into the main directory
#
#
# Usage: generate_events compression events parallel [name]
#
# parallel is 0 for serial, 1 for PBS, 2 for multicore
# name is queue name for PBS or number of cores for multicore
#
function error_exit {
if [[ -e error ]]; then
date
cp -f error status
rm survey refine refine2 >& /dev/null
rm RunWeb
$dirbin/
$dirbin/
exit
fi
}
if [[ ! -d ./bin ]]; then
cd ../
if [[ ! -d ./bin ]]; then
echo "Error: it must be executed from the main, or bin directory"
exit
fi
fi
#
# Now let shell know where to find important executables
#
main=`pwd`
# Strip off last directory
mainpar=${main%/*}
dirbin=$main/bin
pydir=$
pgsdir=$pydir
delphesdir=
ERAdir=
MAdir=$
webbin=$dirbin
td=$mainpar/td
web=0
echo $$ >> myprocid
# For Linux
export LD_LIBRARY_
# For Mac OS X
export DYLD_LIBRARY_
if [[ "$1" == "" ]]; then
echo 'Enter 2 for multi-core, 1 for parallel, 0 for serial run'
read mode
else
mode=$1
fi
n=MadEvent
if [[ $mode -gt 0 ]]; then
if [[ "$2" == "" ]]; then
if [[ $mode -eq 1 ]]; then
echo 'Enter name for jobs on pbs queue'
elif [[ $mode -eq 2 ]]; then
echo 'Enter number of cores'
fi
read n
else
n=$2
fi
if [[ "$3" == "" ]]; then
echo 'Enter run name'
read t
else
t=$3
fi
else
if [[ "$2" == "" ]]; then
echo 'Enter run name'
read t
else
t=$2
fi
fi
#set t = TeV2
if [[ "$4" -ne "" ]]; then
web=1
webbin=
pydir=
pgsdir=$pydir
delphesdir=
ERAdir=
MAdir=
td=
touch Online
fi
date
#
# Check if run already exists. If so, store run w/ new name
# and remove old run before starting.
#
if [[ -e status ]]; then
rm status
fi
if [[ -e error ]]; then
rm error
fi
touch RunWeb
echo "Cleaning directories" > status
cat status
$dirbin/
$dirbin/clean
# Set gridpack in run_card.dat
sed -i.bak "s/^[^#
# Compile everything in Source
echo "Compiling Source" > status
cat status
$dirbin/
$dirbin/
# If any compilations failed
error_exit
touch survey
echo "Starting jobs" > status
cat status
$dirbin/
$dirbin/survey $mode $n $t
error_exit
#
# Now collect the events
#
echo "Combining Events" >& status
cat status
$dirbin/
pushd SubProcesses > /dev/null
$dirbin/run_combine $mode
mv events.lhe ../Events/
mv unweighted_
popd > /dev/null
#
# do the banner
#
cd ./Events
echo "putting the banner"
$dirbin/put_banner events.lhe
$dirbin/put_banner unweighted_
if [[ -e unweighted_
$dirbin/
fi
cd ..
$dirbin/store $t
$dirbin/
python $dirbin/
rm -f RunWeb
echo " " >& status
$dirbin/
$dirbin/
date
Johan Alwall (johan-alwall) said : | #5 |
collect_
#!/usr/bin/python
#
# Collect the decay widths and calculate BRs for all particles, and put in param_card form
import glob
import optparse
import os
import re
root_path = os.path.
# Main routine
if __name__ == "__main__":
# Find available runs
run_names = glob.glob(
run_names = [os.path.
run_names = [re.match(
usage = "usage: %prog run_name"
usage +="\n where run_name in (%s)" % ",".join(run_names)
parser = optparse.
(options, args) = parser.parse_args()
if len(args) != 1 or args[0] not in run_names:
if len(run_names) == 1:
args = run_names
else:
exit
run_name = args[0].strip()
print "Collecting results for run ", run_name
# Start collecting results
subproc_dirs = \
particle_dict = {}
for subdir in subproc_dirs[:-1]:
subdir = os.path.
leshouche = open(os.
particles = re.search(
if not particles:
particles = [int(p) for p in particles.
results = \
result = float(results.
try:
except KeyError:
lines = []
for key in sorted(
width = sum([r for p,r in particle_
if not width:
brs = [[val[1]/width, val[0]] for val in particle_dict[key] if val[1]]
for val in sorted(brs, reverse=True):
output_name = os.path.
decay_table = open(output_name, 'w')
decay_
print "Results written to ", output_name
NADY (nady-bakhet) said : | #6 |
Thanks Johan
I found " generate_events." only in bin directory of process
and didn't find generate_
Cheers,
Nady
Johan Alwall (johan-alwall) said : | #7 |
I just posted the two files you need here.
Cheers,
Johan
Can you help with this problem?
Provide an answer of your own, or ask NADY for more information if necessary.