Generate points distributed according to a Breit-Wigner. More...
Detailed Description
Generate points distributed according to a Breit-Wigner.
Transform a phase-space point given by Cuba, distributed uniformly between 0 and 1, into a quantity distributed according to a relativistic Breit-Wigner distribution of mass \(m\) and width \(\Gamma\).
This transformation has the effect of removing a peak associated to a propagator in the integrand. Indeed, the change of variable applied is:
\[ x \to s(x) = m \Gamma \tan (y(x)) + m^2 \text{, with } y(x) = - \arctan (m/\Gamma) + \left( \pi/2 + \arctan (m/\Gamma) \right) x \]
with Jacobian:
\[ \frac{ds}{dx} = \left( \pi/2 + \arctan (m/\Gamma) \right) m \Gamma \cos^{-2}(y(x)) \]
If \(p(s)\) is a propagator to be integrated on \(s = 0 \to \infty\), applying this change of variable makes the calculation trivial:
\[ \int_0^{\infty} \! ds \, p(s) = \int_0^1 \! dx \frac{ds}{dx} \, p(s(x)) = \int_0^1 \! dx \text{ (constant)} \]
Integration dimension
This module requires 1 phase-space point.
Parameters
Name | Type | Description |
---|---|---|
mass | double | Mass of the propagator to be integrated over (GeV). |
width | double | Width of the propagator to be integrated over (GeV). |
Inputs
Name | Type | Description |
---|---|---|
ps_point | double | Phase-space point generated by CUBA. |
Outputs
Name | Type | Description |
---|---|---|
s | double | Invariant mass squared of the propagator |
jacobian | double | Jacobian associated to the transformation |
Definition at line 71 of file BreitWignerGenerator.cc.
Public Member Functions | |
BreitWignerGenerator (PoolPtr pool, const ParameterSet ¶meters) | |
virtual Status | work () override |
Main function. More... | |
Public Member Functions inherited from Module | |
Module (PoolPtr pool, const std::string &name) | |
Constructor. More... | |
virtual void | configure () |
Called once at the beginning of the job. | |
virtual void | beginIntegration () |
Called once at the beginning of the integration. | |
virtual void | beginPoint () |
Called once when a new PS point is started. More... | |
virtual void | beginLoop () |
Called once at the beginning of a loop. More... | |
virtual void | endLoop () |
Called once at the end of a loop. More... | |
virtual void | endPoint () |
Called once when a PS point is finished. More... | |
virtual void | endIntegration () |
Called once at the end of the integration. | |
virtual void | finish () |
Called once at the end of the job. | |
virtual std::string | name () const final |
Additional Inherited Members | |
Public Types inherited from Module | |
enum | Status : std::int8_t { OK, NEXT, ABORT } |
Static Public Member Functions inherited from Module | |
static std::string | statusToString (const Status &status) |
static bool | is_virtual_module (const std::string &name) |
Test if a given name correspond to a virtual module. More... | |
Protected Member Functions inherited from Module | |
template<typename T , typename... Args> | |
std::shared_ptr< T > | produce (const std::string &name, Args... args) |
Add a new output to the module. More... | |
template<typename T > | |
Value< T > | get (const std::string &module, const std::string &name) |
template<typename T > | |
Value< T > | get (const InputTag &tag) |
Protected Attributes inherited from Module | |
PoolPtr | m_pool |
Member Function Documentation
◆ work()
|
inlineoverridevirtual |
Main function.
This method is called for each integration step. The module's logic and work happen here.
You'll usually want to override this function if you want your module to perform some task.
Reimplemented from Module.
Definition at line 81 of file BreitWignerGenerator.cc.
The documentation for this class was generated from the following file:
- modules/BreitWignerGenerator.cc