This repository has been archived by the owner on Feb 18, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME
279 lines (190 loc) · 8.49 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
The APPLgrid project
====================
Introduction
------------
This contains the complete development installation of the
APPLgrid project allowing the user to also generation grids
using custom versions of mcfm and nlojet++ which are included.
If simply performing the fast convolution is required, only
the appl_grid directory is required, the hoppet installation
if arbitrary scale changes during the fast convolution is
required.
Installation prerequisites
--------------------------
Because the whole installation contains several distinct
packages these is the
install.sh
script, which can guide the installation, although the packages
can also be installed independently, although *please* ensure
that your path contains instances of the
root-config
lhapdf-config
package config utilities. In addition, if you have hoppet already
installed, please ensure that
hoppet-config
is in your path.
In addition, the APPLgrid convolution code generates a config
utility of it's own..
applgrid-config
Please ensure that this is placed in your path also.
All this can be ensured by specifying the usual
--prefix=<installation_base>
either to install.sh, or directly to the
./configure
script calls if building individually.
In addition, please ensure that your LD_LIBRARY_PATH is set to include
the installation directory for all the dynamic libraries, and that
if hoppet is installed independently it is installed with compile
option -fPIC for position independent code so it can be linked against
dynamic library code.
Installation
------------
By default, include files, libraries and the config utilities mentioned
above are installed in the include, lib and bin directories from the
installation directory.
The nlojet executable is installed in the bin directory below the
installation directory.
A: Install and run the code
1) run the install script
install.sh
the install script can be given arguments
usage: install.sh [OPTIONS]
--help| -h this help
--all|-a do everything
--none|-n don't do anything
--appl install appl_grid
--pdf install hoppet
--mcfm install mcfm
--nlo install nlojet
--mod install nlojet module
--runmcfm run mcfm
--runmod run nlojet module
The default is to install and run everything (except mcfm) so to
eg compile the appl_grid code only you should use
install.sh --none --appl
the argument --none being used to switch off everything before
enabling the appl_grid compilation.
Additional details, not checked, and which may be somewhat out of date,
but which may in any case, still be of help...
1) run the setup.sh script (Only if you *really* need to, shouldn't any longer)
2) run the install.sh script.
3) compile the fillgrid.cxx
cd $BASEDIR/jetmod
make fillgrid
4) Make the weighting tables with nlojet
nlojet++ --calculate -c full -u fillgrid.la --max-event 1000010
(This command explores first the phase space to optimise the
grid boundaries. In a next step the weighting tables are filled
There is a problem, if you run to few events, then the program
never stops, since no weight file is produce. This we have to change...)
The weighting tables are in the output directory
weight_c.root (central jets)
weight_f.root (forward jets)
5) Example to convolute the weighting tables with the PDFs and alphas
make stand
./stand output/weight_c.root
6) Check the result
open root
.x check.C
to look at the histogram compring the results of the convolution
of the grid with the reference histograms
B) Software organisation:
files and directories in BASEDIRECTORY:
README this files giving some basic explanations
setup.sh: setup.sh file to set variables need to run nlojet and standalone
install.sh: script to install all libraries and run some examples
appl_grid: The source code of the applgrid
jetmod: nlojet examples to make weight tables and validating them
lhpdf-1.0.0: The LHAPDF library interface for nlojet
mcfm: The source library of the mcfm program
nlojet++-4.0.1 The source library of the NLOJET progrom
bld-nlo: build directory of the nlojet program
bld-pdf: build directory of the nlojet pdf-code implementation
C) appl_grid software:
a) appl_grid.cxx and appl_grid.h (explained below)
b) appl_igrid.cxx and appl_igrid.h (explained below)
c) fappl_grid.cxx fortran callable wrapper
d) implementation of sparse matrix to store the weighting grid
tsparse1d.h tsparse2d.h
Sparse3d.h tsparse3d.h
sparse.h tsparse_base.h
SparseMatrix3d.cxx SparseMatrix3d.h
e) pdf class, stores the combinations of the variuos pdf
elements to the more generalised subprocesses, ie 7
for the pp combinations, rather than the 13x13
base class:
appl_pdf.cxx and appl_pdf.h
generalised pdf combinations for Z production:
mcfmz_pdf.h
mcfmz_pdf.cxx
for W production:
mcfmw_pdf.h
mcfmw_pdf.cxx
and for jet production using either nlojet or jetrad:
nlojet_pdf.cxx nlojet_pdf.h
jetrad_pdf.cxx jetrad_pdf.h
g) helper functions to test CPU performance
appl_timer.cxx
appl_timer.h
j) helper function: TObject string vector class for writing string vectors
TFileString.cxx
TFileString.h
The following dictionary files are generated automatically
TFileStringDict.h
TFileStringDict.cxx
Additional documentation (not checked)
1) appl_grid.cxx and appl_grid.h (explained below)
user interface for the grid software
2) appl_igrid.cxx and appl_igrid.h (explained below)
internal grid function where the action is
3) constructors/distructors
4) operators to add/copy grids
5) void grid::fill_phasespace(const double x1, const double x2, const double Q2,
const double obs,
const double* weight, const int iorder)
fill a default grid to explore the phase space in order to
make a optimised grid in the next step
6) void grid::trim() untrim() ??
7) void grid::print() ??
void grid::Write(const string& filename, const string& dirname)
write the grid to a root file
8) void grid::pdfinterp(double x, double Q2, double* f) interpolate the pdfs
9) convolute the grid with the pdf
TH1D* grid::convolute(void (*pdf)(const double& , const double&, double* ),
double (*alphas)(const double& ),
int nloops,
double rscale_factor,
double fscale_factor,
void (*splitting)(const double& , const double&, double* ) )
The use has to provide a pointer to the follwing functions:
pdf the interface to the pdf function
alphas the interface to the alphas function
splitting the interface to the splitting function needed for the
factorisation scale dependence
nloops =0 leading order =1: next to leading order =-1: only NLO
rscale_factor renormalisation scale factor
fscale_factor factorsation scale factor
make a new operator in this function should be avoided
10) TH1D* grid::convolute_subproc(int subproc,
void (*pdf)(const double& , const double&, double* ),
double (*alphas)(const double& ),
int nloops,
double rscale_factor,
double fscale_factor,
void (*splitting)(const double& , const double&, double* ) )
as 9, but for each sub-process
11) void grid::optimise()
void grid::optimise(int NQ2, int Nx)
optimise the grid boundaries
12) redefine grid boundaries by hand
void grid::redefine(int iobs, int iorder,
int NQ2, double Q2min, double Q2max,
int Nx, double xmin, double xmax )
C) Some problems:
1) on my ubunutu I had problems to run libtool in appl_grid
I got
libtool X-tag=CXX command not found
etc
running autoreconf -i
in ~/applgrid/appl_grid
solved the problem