StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
SusyWidthFunctions.h
1 // SusyResonanceWidths.h is a part of the PYTHIA event generator.
2 // Copyright (C) 2018 Torbjorn Sjostrand
3 // Main author of this file: N. Desai
4 // PYTHIA is licenced under the GNU GPL v2 or later, see COPYING for details.
5 // Please respect the MCnet Guidelines, see GUIDELINES for details.
6 
7 // Header file for resonance properties: dynamical widths etc.
8 // WidthFunctions: base class for SUSY 3-body decay width functions.
9 
10 #ifndef Pythia8_SusyWidthFunctions_H
11 #define Pythia8_SusyWidthFunctions_H
12 
13 #include "Pythia8/ParticleData.h"
14 #include "Pythia8/SusyCouplings.h"
15 
16 namespace Pythia8 {
17 
18 //==========================================================================
19 
20 class WidthFunction : public FunctionEncapsulator {
21 
22 public:
23 
24  // Constructor and destructor.
25  WidthFunction() { };
26  virtual ~WidthFunction() { };
27 
28  // Public methods.
29  void setPointers( ParticleData* particleDataPtrIn, CoupSUSY* coupSUSYPtrIn,
30  Info* infoPtrIn);
31  virtual double getWidth( int, int) { return 0.0; };
32 
33  // Definition of width function.
34  virtual double f(double xIn);
35 
36 protected:
37 
38  // Wrappers to simplify using FunctionEncapsulator's integrator.
39  virtual double f(vector<double> x) { return f(x[0]); }
40  bool integrateGauss(double& result, double xLo, double xHi, double tol) {
41  vector<double> tmp(1);
42  return FunctionEncapsulator::integrateGauss(result, 0, xLo, xHi, tmp, tol);
43  }
44 
45  ParticleData* particleDataPtr;
46  CoupSUSY* coupSUSYPtr;
47  Info* infoPtr;
48  int idRes, idInt, id1, id2, id3, id4;
49  double mRes, mInt, gammaInt, m1, m2 , m3, m4;
50 
51 };
52 
53 //==========================================================================
54 
55 // Class StauWidths.
56 
57 class StauWidths : public WidthFunction {
58 
59 public:
60 
61  // Destructor.
62  ~StauWidths() { };
63 
64  // Public method.
65  double getWidth(int idResIn, int idIn);
66 
67 protected:
68 
69  int fnSwitch; // Switch between multiple functions
70  void setChannel(int idResIn, int idIn);
71  double f(double xIn);
72 
73  double delm, f0, gf, cons, wparam;
74  complex gL, gR;
75 
76 };
77 
78 //==========================================================================
79 
80 } // end namespace Pythia8
81 
82 #endif // end Pythia8_SusyResonanceWidths_H