3
#############################################################################
7
# FILE : split_banner.pl ##
9
# DATE : 6 April 2007 ##
10
# AUTHOR : Michel Herquet (UCL-CP3) ##
12
# DESCRIPTION : script to recover cards from a banner ##
13
# USAGE : split_banner.pl banner.txt ##
14
# OUTPUT : all found cards ##
15
#############################################################################
18
# Parse the command line arguments
21
die "This script must be called with one banner filename as argument!\n";
27
print "Reading input file ... \n";
28
open(BANNER,"$banner") || die "Cannot open banner file called $banner, stopping\n";
30
# Define tags and extract cards
32
my $begin_proc='# Begin proc_card.dat'."\n".'#'."\n";
33
my $end_proc="\n".'#'."\n".'# End proc_card.dat';
35
my $begin_param='# Begin param_card.dat'."\n".'#'."\n";
36
my $end_param="\n".'#'."\n".'# End param_card.dat';
38
my $begin_run='# Begin run_card.dat'."\n".'#'."\n";
39
my $end_run="\n".'#'."\n".'# End run_card.dat';
41
my $begin_pythia='# Begin pythia_card.dat'."\n".'#'."\n";
42
my $end_pythia="\n".'#'."\n".'# End pythia_card.dat';
44
my $begin_pgs='# Begin pgs_card.dat'."\n".'#'."\n";
45
my $end_pgs="\n".'# End pgs_card.dat';
54
if ( $fullbanner=~ /<MGProcCard>/ || $fullbanner=~ /<MG5ProcCard>/ ) {
55
# New version of banner
56
$begin_proc='<MGProcCard>'."\n";
57
$end_proc="\n".'<\/MGProcCard>';
59
$begin_mg5proc='<MG5ProcCard>'."\n";
60
$end_mg5proc="\n".'<\/MG5ProcCard>';
62
$begin_param='<slha>'."\n";
63
$end_param="\n".'<\/slha>';
65
$begin_run='<MGRunCard>'."\n";
66
$end_run="\n".'<\/MGRunCard>';
68
$begin_grid='<MGGridCard>'."\n";
69
$end_grid="\n".'<\/MGGridCard>';
71
$begin_pythia='<MGPythiaCard>'."\n";
72
$end_pythia="\n".'<\/MGPythiaCard>';
74
$begin_pgs='<MGPGSCard>'."\n";
75
$end_pgs="\n".'<\/MGPGSCard>';
77
$begin_delphes='<MGDelphesCard>'."\n";
78
$end_delphes="\n".'<\/MGDelphesCard>';
80
$begin_trigger='<MGDelphesTrigger>'."\n";
81
$end_trigger="\n".'<\/MGDelphesTrigger>';
84
if ( $fullbanner=~ m/$begin_proc/ ) {
85
print "proc_card found ... ";
86
($proc_card)= $fullbanner=~ m/$begin_proc(.*?)$end_proc/s;
87
open(PROC,">proc_card.dat") || die "Cannot open proc_card.dat for writing, stopping\n";
88
print PROC $proc_card."\n";
91
} else { print "proc_card not found!\n"; }
93
if ( $fullbanner=~ m/$begin_mg5proc/ ) {
94
print "proc_card_mg5 found ... ";
95
($proc_card_mg5)= $fullbanner=~ m/$begin_mg5proc(.*?)$end_mg5proc/s;
96
open(PROC,">proc_card_mg5.dat") || die "Cannot open proc_card_mg5.dat for writing, stopping\n";
97
print PROC $proc_card_mg5."\n";
100
} else { print "proc_card_mg5 not found!\n"; }
102
if ( $fullbanner=~ m/$begin_param/ ) {
103
print "param_card found ... ";
104
($param_card)= $fullbanner=~ m/$begin_param(.*?)$end_param/s;
105
open(PARAM,">param_card.dat") || die "Cannot open param_card.dat for writing, stopping\n";
106
print PARAM $param_card."\n";
109
} else { print "param_card not found!\n"; }
111
if ( $fullbanner=~ m/$begin_run/ ) {
112
print "run_card found ... ";
113
($run_card)= $fullbanner=~ m/$begin_run(.*?)$end_run/s;
114
open(RUN,">run_card.dat") || die "Cannot open run_card.dat for writing, stopping\n";
115
print RUN $run_card."\n";
118
} else { print "run_card not found!\n"; }
120
if ( $fullbanner=~ m/$begin_grid/ ) {
121
print "grid_card found ... ";
122
($grid_card)= $fullbanner=~ m/$begin_grid(.*?)$end_grid/s;
123
open(GRID,">grid_card.dat") || die "Cannot open grid_card.dat for writing, stopping\n";
124
print GRID $grid_card."\n";
127
} else { print "grid_card not found!\n"; }
129
if ( $fullbanner=~ m/$begin_pythia/ ) {
130
print "pythia_card found ... ";
131
($pythia_card)= $fullbanner=~ m/$begin_pythia(.*?)$end_pythia/s;
132
#remove LHA path tags that are locally defined
133
$pythia_card =~ s/\n\s*LHAPATH=.*/\n/g;
134
open(PYTHIA,">pythia_card.dat") || die "Cannot open pythia_card.dat for writing, stopping\n";
135
print PYTHIA $pythia_card."\n";
138
} else { print "pythia_card not found!\n"; }
140
if ( $fullbanner=~ m/$begin_pgs/ ) {
141
print "pgs_card found ... ";
142
($pgs_card)= $fullbanner=~ m/$begin_pgs(.*?)$end_pgs/s;
143
open(PGS,">pgs_card.dat") || die "Cannot open pgs_card.dat for writing, stopping\n";
144
print PGS $pgs_card."\n";
147
} else { print "pgs_card not found!\n"; }
149
if ( $fullbanner=~ m/$begin_delphes/ ) {
150
print "delphes_card found ... ";
151
($delphes_card)= $fullbanner=~ m/$begin_delphes(.*?)$end_delphes/s;
152
open(DELPHES,">delphes_card.dat") || die "Cannot open delphes_card.dat for writing, stopping\n";
153
print DELPHES $delphes_card."\n";
156
} else { print "delphes_card not found!\n"; }
158
if ( $fullbanner=~ m/$begin_trigger/ ) {
159
print "delphes_trigger found ... ";
160
($delphes_trigger)= $fullbanner=~ m/$begin_trigger(.*?)$end_trigger/s;
161
open(TRIGGER,">delphes_trigger.dat") || die "Cannot open delphes_trigger.dat for writing, stopping\n";
162
print TRIGGER $delphes_trigger."\n";
165
} else { print "delphes_trigger not found!\n"; }