Page Menu
Home
HEPForge
Search
Configure Global Search
Log In
Files
F10881454
mk-analysis-latex
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
8 KB
Subscribers
None
mk-analysis-latex
View Options
#! /usr/bin/env python
## Get output filename
OUTNAME
=
"analyses"
import
sys
if
len
(
sys
.
argv
)
<
2
:
pass
#print "Using output name '%s'" % OUTNAME
else
:
OUTNAME
=
sys
.
argv
[
1
]
## Get input paths to allow rivet module to be imported from the src dir
import
os
,
re
,
glob
pybuild
=
os
.
path
.
abspath
(
os
.
path
.
join
(
os
.
getcwd
(),
".."
,
"pyext"
,
"build"
))
dirs
=
[]
for
d
in
os
.
listdir
(
pybuild
):
if
re
.
match
(
r"lib\..*-.*-
%d
\.
%d
"
%
(
sys
.
version_info
[
0
],
sys
.
version_info
[
1
]),
d
):
dirs
.
append
(
os
.
path
.
join
(
pybuild
,
d
))
sys
.
path
=
dirs
+
sys
.
path
try
:
os
.
environ
[
"LD_LIBRARY_PATH"
]
=
os
.
environ
[
"LD_LIBRARY_PATH"
]
+
":"
+
\
os
.
path
.
abspath
(
os
.
path
.
join
(
os
.
getcwd
(),
".."
,
"src"
,
".libs"
))
except
:
pass
try
:
os
.
environ
[
"DYLD_LIBRARY_PATH"
]
=
os
.
environ
[
"DYLD_LIBRARY_PATH"
]
+
":"
+
\
os
.
path
.
abspath
(
os
.
path
.
join
(
os
.
getcwd
(),
".."
,
"src"
,
".libs"
))
except
:
pass
anadirs
=
glob
.
glob
(
os
.
path
.
join
(
os
.
getcwd
(),
".."
,
"src"
,
"Analyses"
,
".libs"
))
#print anadirs
os
.
environ
[
"RIVET_ANALYSIS_PATH"
]
=
":"
.
join
(
anadirs
)
## Change dlopen status to GLOBAL for Rivet lib
try
:
import
ctypes
sys
.
setdlopenflags
(
sys
.
getdlopenflags
()
|
ctypes
.
RTLD_GLOBAL
)
except
:
import
dl
sys
.
setdlopenflags
(
sys
.
getdlopenflags
()
|
dl
.
RTLD_GLOBAL
)
import
rivet
def
texify
(
s
):
t
=
s
\
.
replace
(
r"&"
,
r"\&"
)
\
.
replace
(
r"\\&"
,
r"\&"
)
\
.
replace
(
r"#"
,
r"\#"
)
\
.
replace
(
r"->"
,
r"\ensuremath{\to}"
)
\
.
replace
(
r"pT"
,
r"\pT"
)
\
.
replace
(
r"sqrt(s)"
,
r"\ensuremath{\sqrt{s}}"
)
# .replace(r"_", r"\_") \
# .replace(r"^", r"") \
return
t
## Build analysis pages
all_analyses
=
rivet
.
AnalysisLoader
.
analysisNames
()
pages
=
{
"LEP and SLC"
:[],
"Tevatron"
:[],
"LHC"
:[],
"SPS"
:[],
"HERA"
:[],
"RHIC"
:[],
"Monte Carlo"
:[],
"Example"
:[],
"Misc."
:[]
}
## Use list(...) ctor for 2.3 compatibility
bib
=
{}
for
aname
in
sorted
(
list
(
all_analyses
)):
#print "Handling analysis '%s'" % aname
page
=
""
page
+=
"
\\
typeout{Handling analysis
%s
}"
%
aname
safe_aname
=
aname
.
replace
(
r"_"
,
r"\_"
)
ana
=
rivet
.
AnalysisLoader
.
getAnalysis
(
aname
)
subtitle
=
"
\\
subsection{
%s
}
\n
"
%
safe_aname
if
ana
.
bibKey
()
and
ana
.
bibTeX
():
bib
[
ana
.
bibKey
()]
=
"
%%
(
%s
)
\n
"
%
aname
+
ana
.
bibTeX
()
citetex
=
r"\cite{
%s
}"
%
ana
.
bibKey
()
subtitle
=
"
\\
subsection[
%s
]{
%s
}
\n
"
%
(
safe_aname
,
safe_aname
+
"\,"
+
citetex
)
page
+=
subtitle
page
+=
"
\\
textbf{
%s
}
\\
newline
\n
"
%
ana
.
summary
()
if
ana
.
requiredBeams
():
def
pid_to_str
(
pid
):
if
pid
==
11
:
return
"$e^-$"
elif
pid
==
-
11
:
return
"$e^+$"
elif
pid
==
2212
:
return
"$p$"
elif
pid
==
-
2212
:
return
"$
\\
bar{p}$"
elif
pid
==
10000
:
return
"$*$"
else
:
return
str
(
pid
)
beamstrs
=
[]
for
bp
in
ana
.
requiredBeams
():
beamstrs
.
append
(
pid_to_str
(
bp
[
0
])
+
"
\\
,"
+
pid_to_str
(
bp
[
1
]))
page
+=
"
\\
textbf{Beams:}
%s
\\
newline
\n
"
%
", "
.
join
(
beamstrs
)
if
ana
.
requiredEnergies
():
page
+=
"
\\
textbf{Energies:}
%s
GeV
\\
newline
\n
"
%
\
", "
.
join
([
"(
%0.1f
,
%0.1f
)"
%
(
epair
[
0
],
epair
[
1
])
for
epair
in
ana
.
requiredEnergies
()])
if
ana
.
experiment
():
page
+=
"
\\
textbf{Experiment:}
%s
"
%
ana
.
experiment
()
if
ana
.
collider
():
page
+=
" (
%s
)"
%
ana
.
collider
()
page
+=
"
\\
newline
\n
"
if
ana
.
inspireId
():
spiresbase
=
"http://inspire-hep.net/record"
page
+=
"
\\
textbf{Inspire ID:}
\\
href{
%s
+
%s
}{
%s
}
\\
newline
\n
"
%
\
(
spiresbase
,
ana
.
inspireId
(),
ana
.
inspireId
())
elif
ana
.
spiresId
():
spiresbase
=
"http://inspire-hep.net/search?p=find+key"
page
+=
"
\\
textbf{Spires ID:}
\\
href{
%s
+
%s
}{
%s
}
\\
newline
\n
"
%
\
(
spiresbase
,
ana
.
spiresId
(),
ana
.
spiresId
())
page
+=
"
\\
textbf{Status:}
%s
\\
newline
\n
"
%
ana
.
status
()
if
ana
.
authors
():
page
+=
"
\\
textbf{Authors:}
\n
\\
penalty 100
\n
"
page
+=
"
\\
begin{itemize}
\n
"
for
a
in
ana
.
authors
():
s
=
a
import
re
if
re
.
search
(
".* <.*@.*>"
,
a
):
name
=
" "
.
join
(
a
.
split
()[:
-
1
])
email
=
a
.
split
()[
-
1
]
.
replace
(
"<"
,
""
)
.
replace
(
">"
,
""
)
#s = "\\href{mailto:%s}{%s}" % (email, name)
s
=
"
%s
$
\\
langle\,$
\\
href{mailto:
%s
}{
%s
}$\,
\\
rangle$"
%
(
name
,
email
,
email
)
page
+=
"
\\
item
%s
\n
"
%
s
page
+=
"
\\
end{itemize}
\n
"
else
:
page
+=
"
\\
textbf{No authors listed}
\\\\
\n
"
if
ana
.
references
():
page
+=
"
\\
textbf{References:}
\n
\\
penalty 100
\n
"
page
+=
"
\\
begin{itemize}
\n
"
for
r
in
ana
.
references
():
if
r
.
startswith
(
"arXiv:"
):
code
=
r
.
split
()[
0
]
.
replace
(
"arXiv:"
,
""
)
url
=
"http://arxiv.org/abs/"
+
code
page
+=
"
\\
item
%s
\\
href{
%s
}{
%s
}
\n
"
%
(
"arXiv:"
,
url
,
code
)
elif
r
.
startswith
(
"doi:"
):
code
=
r
.
replace
(
"doi:"
,
""
)
url
=
"http://dx.doi.org/"
+
code
page
+=
"
\\
item
%s
\\
href{
%s
}{
%s
}
\n
"
%
(
"DOI:"
,
url
,
code
)
else
:
page
+=
"
\\
item
%s
\n
"
%
r
page
+=
"
\\
end{itemize}
\n
"
else
:
page
+=
"
\\
textbf{No references listed}
\\\\
\n
"
if
ana
.
runInfo
():
page
+=
"
\\
textbf{Run details:}
\n
\\
penalty 100
\n
"
infos
=
ana
.
runInfo
()
.
split
(
" * "
)
#print ana.runInfo(), "->", infos
page
+=
"
\\
begin{itemize}
\n
"
for
i
in
infos
:
if
i
:
page
+=
"
\\
item
%s
\n
"
%
i
page
+=
"
\\
end{itemize}
\n
"
else
:
page
+=
"
\\
textbf{No run details listed}
\\\\
\n
"
for
para
in
ana
.
description
()
.
split
(
"
\n\n
"
):
page
+=
"
\n\\
noindent "
+
para
+
"
\n
"
try
:
import
readplot
info
=
readplot
.
plotinfo
(
ana
.
name
())
histpage
=
""
histcount
=
0
if
info
and
info
.
keys
():
histpage
+=
"
\n\\
vspace{1em}
\n\\
noindent
\n
"
histpage
+=
"
\\
textbf{Histograms:}
\n
\\
penalty 100
\n
"
try
:
histpage
+=
"
\\
begin{itemize}
\n
"
for
hpath
in
sorted
(
info
.
keys
()):
htitle
=
info
[
hpath
][
"TITLE"
]
histpage
+=
"
\\
item
%s
(\kbd{
%s
})
\n
"
%
(
htitle
,
hpath
.
replace
(
r"_"
,
r"\_"
))
histcount
+=
1
finally
:
histpage
+=
"
\\
end{itemize}
\n
"
if
histcount
>
0
:
page
+=
histpage
except
:
pass
page
+=
"
\n\\
clearpage
\n
"
page
=
texify
(
page
)
if
"MC_"
in
ana
.
name
()
.
upper
():
pages
[
"Monte Carlo"
]
.
append
(
page
)
elif
"LEP"
in
ana
.
collider
()
or
"SLC"
in
ana
.
collider
():
pages
[
"LEP and SLC"
]
.
append
(
page
)
elif
"Tevatron"
in
ana
.
collider
():
pages
[
"Tevatron"
]
.
append
(
page
)
elif
"LHC"
in
ana
.
collider
():
pages
[
"LHC"
]
.
append
(
page
)
elif
"SPS"
in
ana
.
collider
():
pages
[
"SPS"
]
.
append
(
page
)
elif
"HERA"
in
ana
.
collider
():
pages
[
"HERA"
]
.
append
(
page
)
elif
"RHIC"
in
ana
.
collider
():
pages
[
"RHIC"
]
.
append
(
page
)
elif
"EXAMPLE"
in
ana
.
name
()
.
upper
():
pages
[
"Example"
]
.
append
(
page
)
else
:
pages
[
"Misc."
]
.
append
(
page
)
## Write out LaTeX
prefix
=
"""\
\\makeatletter
\\renewcommand{\\d}[1]{\\ensuremath{\\mathrm{#1}}}
\\let\\old@eta\\eta
\\renewcommand{\\eta}{\\ensuremath{\\old@eta}\\xspace}
\\let\\old@phi\\phi
\\renewcommand{\\phi}{\\ensuremath{\\old@phi}\\xspace}
\\providecommand{\\pT}{\\ensuremath{p_\\perp}\\xspace}
\\providecommand{\\pTmin}{\\ensuremath{p_\\perp^\\text{min}}\\xspace}
\\makeatother
"""
groups
=
{}
for
group
,
ps
in
pages
.
iteritems
():
s
=
""
#if len(ps):
s
=
"
\\
section{
%s
analyses}"
%
group
+
"
\n\n\\
clearpage
\n\n
"
.
join
(
ps
)
groups
[
group
]
=
s
body
=
\
groups
[
"LEP and SLC"
]
+
"
\n\n
"
+
\
groups
[
"Tevatron"
]
+
"
\n\n
"
+
\
groups
[
"LHC"
]
+
"
\n\n
"
+
\
groups
[
"SPS"
]
+
"
\n\n
"
+
\
groups
[
"HERA"
]
+
"
\n\n
"
+
\
groups
[
"RHIC"
]
+
"
\n\n
"
+
\
groups
[
"Monte Carlo"
]
+
"
\n\n
"
+
\
groups
[
"Example"
]
+
"
\n\n
"
+
\
groups
[
"Misc."
]
+
"
\n\n
"
outstr
=
prefix
+
body
## Write out to TeX and BibTeX files
f
=
open
(
"
%s
.tex"
%
OUTNAME
,
"w"
)
f
.
write
(
"%auto-ignore
\n
"
)
f
.
write
(
outstr
)
f
.
close
()
f
=
open
(
"
%s
.bib"
%
OUTNAME
,
"w"
)
#
bibentries
=
"
\n\n
"
.
join
([
"
%%
%s
\n
%s
"
%
(
k
,
b
)
for
k
,
b
in
bib
.
iteritems
()])
f
.
write
(
bibentries
+
"
\n
"
)
f
.
close
()
File Metadata
Details
Attached
Mime Type
text/x-python
Expires
Sat, May 3, 6:24 AM (1 d, 14 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4983009
Default Alt Text
mk-analysis-latex (8 KB)
Attached To
rRIVETHG rivethg
Event Timeline
Log In to Comment