]>
Commit | Line | Data |
---|---|---|
5ad4eb21 | 1 | <chapter name="Beam Shape"> |
2 | ||
3 | <h2>Beam Shape</h2> | |
4 | ||
5 | The <aloc href="BeamParameters">Beam Parameters</aloc> | |
6 | page explains how you can set a momentum spread of the two incoming | |
7 | beams, and a spread and offset for the location of the interaction | |
8 | vertex. The spread is based on a simple parametrization in terms of | |
9 | independent Gaussians, however, which is likely to be too primitive | |
10 | for realistic applications. | |
11 | ||
12 | <p/> | |
13 | It is therefore possible to define your own class, derived from the | |
14 | <code>BeamShape</code> base class, and hand it in to Pythia with the | |
15 | <aloc href="ProgramFlow"> | |
16 | <code>pythia.setBeamShapePtr( BeamShape*)</code></aloc> method. | |
17 | Below we describe what such a class has to do. An explicit toy example | |
18 | is shown in <code>main27.cc</code>. | |
19 | ||
20 | <p/> | |
21 | The <code>BeamShape</code> base class has a very simple structure. | |
22 | It only has two virtual methods. The first, <code>init()</code>, is | |
23 | used for initialization. The second, <code>pick()</code>, selects | |
24 | beam momentum and production vertex in the current event. | |
25 | ||
26 | <p/> | |
27 | The base-class <code>init()</code> method simply reads in the values | |
28 | stored in the <code>Settings</code> data base. You are free to | |
29 | write your own derived initialization routine, or use the existing one. | |
30 | In the latter case you can then give your own modified interpretation | |
31 | to the beam spread parameters defined there. | |
32 | ||
33 | <p/> | |
34 | The two flags <code>Beams:allowMomentumSpread</code> and | |
35 | <code>Beams:allowVertexSpread</code> should not be tampered with, | |
36 | however. These are checked elsewhere to determine whether the beam | |
37 | shape should be set or not, whereas the other momentum-spread | |
38 | and vertex-spread parameters are local to this class. | |
39 | ||
40 | <p/> | |
41 | The <code>pick()</code> method is the key one to supply in the derived | |
42 | class. Here you are free to pick whatever parametrization you desire | |
43 | for beam momenta and vertex position, including correlations between | |
44 | the two. At the end of the day, you should set | |
45 | <br/><code>deltaPxA, deltaPyA, deltaPzA</code> for the three-momentum | |
46 | deviation of the first incoming beam, relative to the nominal values; | |
47 | <br/><code>deltaPxB, deltaPyB, deltaPzB</code> for the three-momentum | |
48 | deviation of the second incoming beam, relative to the nominal values; | |
49 | <br/><code>vertexX, vertexY, vertexZ, vertexT</code> for the | |
50 | production-vertex position and time. | |
51 | <br/>These values will then be read out with the three base-class methods | |
52 | <code>deltaPA()</code>, <code>deltaPB()</code> and <code>vertex()</code>. | |
53 | ||
54 | </chapter> | |
55 | ||
56 | <!-- Copyright (C) 2008 Torbjorn Sjostrand --> |