source: HiSusy/trunk/Pythia8/pythia8170/phpdoc/SemiInternalResonances.php @ 1

Last change on this file since 1 was 1, checked in by zerwas, 11 years ago

first import of structure, PYTHIA8 and DELPHES

File size: 11.7 KB
Line 
1<html>
2<head>
3<title>Semi-Internal Resonances</title>
4<link rel="stylesheet" type="text/css" href="pythia.css"/>
5<link rel="shortcut icon" href="pythia32.gif"/>
6</head>
7<body>
8
9<script language=javascript type=text/javascript>
10function stopRKey(evt) {
11var evt = (evt) ? evt : ((event) ? event : null);
12var node = (evt.target) ? evt.target :((evt.srcElement) ? evt.srcElement : null);
13if ((evt.keyCode == 13) && (node.type=="text"))
14{return false;}
15}
16
17document.onkeypress = stopRKey;
18</script>
19<?php
20if($_POST['saved'] == 1) {
21if($_POST['filepath'] != "files/") {
22echo "<font color='red'>SETTINGS SAVED TO FILE</font><br/><br/>"; }
23else {
24echo "<font color='red'>NO FILE SELECTED YET.. PLEASE DO SO </font><a href='SaveSettings.php'>HERE</a><br/><br/>"; }
25}
26?>
27
28<form method='post' action='SemiInternalResonances.php'>
29
30<h2>Semi-Internal Resonances</h2>
31
32The introduction of a new <?php $filepath = $_GET["filepath"];
33echo "<a href='SemiInternalProcesses.php?filepath=".$filepath."' target='page'>";?>
34semi-internal process</a> may also involve a new particle,
35not currently implemented in PYTHIA. Often it is then enough to
36use the <?php $filepath = $_GET["filepath"];
37echo "<a href='ParticleDataScheme.php?filepath=".$filepath."' target='page'>";?>standard machinery</a>
38to introduce a new particle (<code>id:all = ...</code>) and new
39decay channels (<code>id:addChannel = ...</code>). By default this
40only allows you to define a fixed total width and fixed branching
41ratios. Using <code><?php $filepath = $_GET["filepath"];
42echo "<a href='ResonanceDecays.php?filepath=".$filepath."' target='page'>";?>meMode</a></code>
43values 100 or bigger provides the possibility of a very
44simple threshold behaviour.
45
46<p/>
47If you want to have complete freedom, however, there are two
48ways to go. One is that you make the resonance decay part of the
49hard process itself, either using the
50<?php $filepath = $_GET["filepath"];
51echo "<a href='LesHouchesAccord.php?filepath=".$filepath."' target='page'>";?>Les Houches interface</a> or
52a semi-internal process. The other is for you to create a new
53<code>ResonanceWidths</code> object, where you write the code
54needed for a calculation of the partial width of a particular
55channel.
56
57<p/>
58Here we will explain what is involved in setting up a resonance.
59Should you actually go ahead with this, it is strongly recommended
60to use an existing resonance as a template, to get the correct
61structure. There also exists a sample main program,
62<code>main22.cc</code>, that illustrates how you could combine
63a new process and a new resonance.
64
65<p/>
66There are three steps involved in implementing a new resonance:
67<br/>1) providing the standard particle information, as already
68outlined above (<code>id:all = ...</code>,
69<code>id:addChannel = ...</code>), except that now branching
70ratios need not be specified, since they anyway will be overwritten
71by the dynamically calculated values.
72<br/>2) writing the class that calculates the partial widths.
73<br/>3) handing in a pointer to an instance of this class to PYTHIA.
74<br/>We consider the latter two aspects in turn.
75
76<h3>The ResonanceWidths Class</h3> 
77
78The resonance-width calculation has to be encoded in a new class.
79The relevant code could either be put before the main program in the
80same file, or be stored separately, e.g. in a matched pair
81of <code>.h</code> and <code>.cc</code> files. The latter may be more
82convenient, in particular if the calculations are lengthy, or
83likely to be used in many different runs, but of course requires
84that these additional files are correctly compiled and linked.
85
86<p/>
87The class has to be derived  from the <code>ResonanceWidths</code>
88base class. It can implement a number of methods. The constructor
89and the <code>calcWidth</code> ones are always needed, while others
90are for convenience. Much of the administrativ machinery is handled
91by methods in the base class.
92
93<p/>Thus, in particular, you must implement expressions for all
94possible final states, whether switched on in the current run or not,
95since all contribute to the total width needed in the denominator of
96the Breit-Wigner expression. Then the methods in the base class take
97care of selecting only allowed channels where that is required, and
98also of including effects of closed channels in secondary decays.
99These methods can be accessed indirectly via the
100<code><?php $filepath = $_GET["filepath"];
101echo "<a href='ResonanceDecays.php?filepath=".$filepath."' target='page'>";?>res...</a></code>
102methods of the normal
103<code><?php $filepath = $_GET["filepath"];
104echo "<a href='ParticleDataScheme.php?filepath=".$filepath."' target='page'>";?>particle database</a></code>.
105
106<p/>
107A <b>constructor</b> for the derived class obviously must be available.
108Here you are quite free to allow a list of arguments, to set
109the parameters of your model. The constructor must call the
110base-class <code>initBasic(idResIn)</code> method, where the argument
111<code>idResIn</code> is the PDG-style identity code you have chosen
112for the new resonance. When you create several related resonances
113as instances of the same class you would naturally make
114<code>idResIn</code> an argument of the constructor; for the
115PYTHIA classes this convention is used also in cases when it is
116not needed.
117<br/>The <code>initBasic(...)</code> method will
118hook up the <code>ResonanceWidths</code> object with the corresponding
119entry in the generic particle database, i.e. with the normal particle
120information you set up in point 1) above. It will store, in base-class
121member variables, a number of quantities that you later may find useful:
122<br/><code>idRes</code> : the identity code you provide;
123<br/><code>hasAntiRes</code> : whether there is an antiparticle;
124<br/><code>mRes</code> : resonance mass;
125<br/><code>GammaRes</code> resonance width;
126<br/><code>m2Res</code> : the squared mass;
127<br/><code>GamMRat</code> : the ratio of width to mass.
128
129<p/>
130A <b>destructor</b> is only needed if you plan to delete the resonance
131before the natural end of the run, and require some special behaviour
132at that point. If you call such a destructor you will leave a pointer
133dangling inside the <code>Pythia</code> object you gave it in to,
134if that still exists.
135
136<a name="method1"></a>
137<p/><strong>void ResonanceWidths::initConstants() &nbsp;</strong> <br/>
138is called once during initialization, and can then be used to set up
139further parameters specific to this particle species, such as couplings,
140and perform calculations that need not be repeated for each new event,
141thereby saving time. This method needs not be implemented.
142 
143
144<a name="method2"></a>
145<p/><strong>void ResonanceWidths::calcPreFac(bool calledFromInit = false) &nbsp;</strong> <br/>
146is called once a mass has been chosen for the resonance, but before
147a specific final state is considered. This routine can therefore
148be used to perform calculations that otherwise might have to be repeated
149over and over again in <code>calcWidth</code> below. It is optional
150whether you want to use this method, however, or put
151everything in <code>calcWidth()</code>.
152<br/>The optional argument will have the value <code>true</code> when
153the resonance is initialized, and then be <code>false</code> throughout
154the event generation, should you wish to make a distinction.
155In PYTHIA such a distinction is made for <i>gamma^*/Z^0</i> and 
156<i>gamma^*/Z^0/Z'^0</i>, owing to the necessity of a special
157description of interference effects, but not for other resonances.
158<br/>In addition to the base-class member variables already described
159above, <code>mHat</code> contains the current mass of the resonance.
160At initialization this agrees with the nominal mass <code>mRes</code>,
161but during the run it will not (in general).
162 
163
164<a name="method3"></a>
165<p/><strong>void ResonanceWidths::calcWidth(bool calledFromInit = false) &nbsp;</strong> <br/>
166is the key method for width calculations and returns a partial width
167value, as further described below. It is called for a specific
168final state, typically in a loop over all allowed final states,
169subsequent to the <code>calcPreFac(...)</code> call above.
170Information on the final state is stored in a number of base-class
171variables, for you to use in your calculations:
172<br/><code>iChannel</code> : the channel number in the list of
173possible decay channels;
174<br/><code>mult</code> : the number of decay products;
175<br/><code>id1, id2, id3</code> : the identity code of up to the first
176three decay products, arranged in descending order of the absolute value
177of the identity code;
178<br/><code>id1Abs, id2Abs, id3Abs</code> : the absolute value of the
179above three identity codes;
180<br/><code>mHat</code> : the current resonance mass, which is the same
181as in the latest <code>calcPreFac(...)</code> call;
182<br/><code>mf1, mf2, mf3</code> : masses of the above decay products;
183<br/><code>mr1, mr2, mr3</code> : squared ratio of the product masses
184to the resonance mass;
185<br/><code>ps</code> : is only meaningful for two-body decays, where it
186gives the phase-space factor
187<i>ps = sqrt( (1. - mr1 - mr2)^2 - 4. * mr1 * mr2 )</i>;
188<br/>In two-body decays the third slot is zero for the above properties.
189Should there be more than three particles in the decay, you would have
190to take care of the subsequent products yourself, e.g. using
191<br/><code>particlePtr->decay[iChannel].product(j);</code>
192<br/>to extract the <code>j</code>'th decay products (with
193<code>j = 0</code> for the first, etc.). Currently we are not aware
194of any such examples.
195<br/>The base class also contains methods for <i>alpha_em</i> and
196<i>alpha_strong</i> evaluation, and can access many standard-model
197couplings; see the existing code for examples.
198<br/>The result of your calculation should be stored in
199<br/><code>widNow</code> : the partial width of the current channel,
200expressed in GeV.
201 
202
203<a name="method4"></a>
204<p/><strong>double ResonanceWidths::widthChan( double mHat, int idAbs1, int idAbs2) &nbsp;</strong> <br/>
205is not normally used. In PYTHIA the only exception is Higgs decays,
206where it is used to define the width (except for colour factors)
207associated with a specific incoming/outgoing state. It allows the
208results of some loop expressions to be pretabulated.
209 
210
211<h3>Access to resonance widths</h3> 
212
213Once you have implemented a class, it is straightforward to
214make use of it in a run. Assume you have written a new class
215<code>MyResonance</code>, which inherits from
216<code>ResonanceWidths</code>. You then create an instance of
217this class and hand it in to a <code>pythia</code> object with
218<pre>
219      ResonanceWidths* myResonance = new MyResonance();
220      pythia.setResonancePtr( myResonance);
221</pre>
222If you have several resonances you can repeat the procedure any number
223of times. When <code>pythia.init(...)</code> is called these resonances
224are initialized along with all the internal resonances, and treated in
225exactly the same manner. See also the <?php $filepath = $_GET["filepath"];
226echo "<a href='ProgramFlow.php?filepath=".$filepath."' target='page'>";?>Program
227Flow</a>
228description.
229
230<p/>
231If the code should be of good quality and general usefulness,
232it would be simple to include it as a permanently available process
233in the standard program distribution. The final step of that integration
234ought to be left for the PYTHIA authors, but basically all that is
235needed is to add one line in
236<code>ParticleData::initResonances</code>, where one creates an
237instance of the resonance in the same way as for the resonances already
238there. In addition, the particle data and decay table for the new
239resonance has to be added to the permanent
240<?php $filepath = $_GET["filepath"];
241echo "<a href='ParticleData.php?filepath=".$filepath."' target='page'>";?>particle database</a>, and the code itself
242to <code>include/ResonanceWidths.h</code> and
243<code>src/ResonanceWidths.cc</code>.
244
245</body>
246</html>
247
248<!-- Copyright (C) 2012 Torbjorn Sjostrand -->
Note: See TracBrowser for help on using the repository browser.