\(\require{cancel}\) Final (main) Block C, describing \(s_{123} (\to p_3 + s_{12} (\to \cancel{p_1} p_2))\)
More...
\(\require{cancel}\) Final (main) Block C, describing \(s_{123} (\to p_3 + s_{12} (\to \cancel{p_1} p_2))\)
This Block addresses the change of variables needed to pass from the standard phase-space parametrisation for \(p_{1 \dots 3} \times \delta^4\) to a parametrisation in terms of the two (squared) masses of the intermediate propagators and the angular variables of \(p3\).
The integration is performed over \(s_{12}, s_{123}\, \theta_3, \phi_3\) with \(p_{1 \dots 3}\) as input. Per integration point, the LorentzVector of the invisible particle, \(p_1\), is computed as well as the energy of the (necessarily massless) particle \(p_3\), based on the following set of equations:
- \(s_{12} = (p_1 + p_2)^2\)
- \(s_{123} = (p_1 + p_2 + p_3)^2\)
- Conservation of momentum (with \(\vec{p}_T^{branches}\) the total transverse momentum of all branches represented):
- \(p_{1x} + E_3 \sin\theta_3\cos\phi_3 = - p_{Tx}^{branches}\)
- \(p_{1y} + E_3 \sin\theta_3\cos\phi_3 = - p_{Ty}^{branches}\)
Up to four solutions are possible for \((E1, \alpha)\), where \(\alpha = 2 p_1 \dot p_2\).
Integration dimension
This module requires 0 phase-space point.
Global parameters
Name | Type | Description |
energy | double | Collision energy. |
Parameters
Name | Type | Description |
pT_is_met | bool, default false | Fix \(\vec{p}_{T1} + \vec{p}_{T3} = \vec{\cancel{E_T}}\) (i.e. assume particles 1 and 3 are both invisible, and constrain them to the MET) or \(\vec{p}_{T1} + \vec{p}_{T3} = - \sum_{i \in \text{2, branches}} \vec{p}_i\) (enforce zero total transverse momentum no matter what) |
m1 | double, default 0 | Mass of the invisible particle |
Inputs
Name | Type | Description |
s12
s123
| double | Squared invariant masses of the propagators. Typically coming from a BreitWignerGenerator or NarrowWidthApproximation module. |
p2
p3 | LorentzVector | The LorentzVector of \(p_2\) and the angles and mass of \(p_3\) will be used to reconstruct the event according to the above method. |
branches | vector(LorentzVector) | LorentzVectors of all the other particles in the event, taken into account when computing \(\vec{p}_{T}^{branches}\) (if MET is not used), and checking if the solutions are physical. |
met | LorentzVector, default met::p4 | LorentzVector of the MET |
Outputs
Name | Type | Description |
solutions | vector(Solution) | Solutions of the change of variable. Each solution embeds the LorentzVectors of the invisible particle (ie. \((p_1)\)) and the massless particle (ie. \((p_3)\)) and the associated jacobian. These solutions should be fed as input to the Looper module. |
- Note
- This block has been partially validated and is probably safe to use.
- See also
- Looper module to loop over the solutions of this Block
Definition at line 81 of file BlockC.cc.
|
enum | Status : std::int8_t { OK,
NEXT,
ABORT
} |
|
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...
|
|
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) |
|
PoolPtr | m_pool |
|