EvtGen 2.2.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
Loading...
Searching...
No Matches
EvtLambdacPHH.hh
Go to the documentation of this file.
1
2/***********************************************************************
3* Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
4* *
5* This file is part of EvtGen. *
6* *
7* EvtGen is free software: you can redistribute it and/or modify *
8* it under the terms of the GNU General Public License as published by *
9* the Free Software Foundation, either version 3 of the License, or *
10* (at your option) any later version. *
11* *
12* EvtGen is distributed in the hope that it will be useful, *
13* but WITHOUT ANY WARRANTY; without even the implied warranty of *
14* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15* GNU General Public License for more details. *
16* *
17* You should have received a copy of the GNU General Public License *
18* along with EvtGen. If not, see <https://www.gnu.org/licenses/>. *
19***********************************************************************/
20
21#ifndef EVTLAMBDACPHH_HH
22#define EVTLAMBDACPHH_HH
23
28
29#include <string>
30#include <vector>
31
32class EvtParticle;
33
34// Description: Decay model for Lambda_c -> K- pi+ p using amplitudes
35// from the Fermilab E791 analysis: arXiv:hep-ex/9912003v1
36
37class EvtLambdacPHH : public EvtDecayAmp {
38 public:
40
41 std::string getName() const override;
42 EvtDecayBase* clone() const override;
43
44 void init() override;
45 void initProbMax() override;
46 void decay( EvtParticle* p ) override;
47
48 protected:
49 // Resonance enumeration
50 enum class LcResLabel
51 {
56 };
57
58 // Amplitude functions
59 std::vector<EvtComplex> calcResAmpTerms( EvtLambdacPHH::LcResLabel resIndex,
60 const EvtResonance2& res,
61 double norm ) const;
62
64 int mprime, double theta_res, double phi_res,
65 double theta_prime_daughter_res,
66 double phi_prime_daughter_res ) const;
67
68 EvtComplex fampl3( double amplitude_res, double phi_res, int spinMother,
69 int m_spinMother, int m_prime_spinMother,
70 double theta_res, float spin_res, float m_spin_res,
71 float m_prime_spin_res, double theta_daughter_res,
72 double phi_prime_daughter_res ) const;
73
74 // Find resonance normalisation factors
75 void calcNormalisations();
76
77 void getFitFractions();
78
79 // Inverse cos/sin functions that checks for valid arguments
80 double getACos( double num, double denom ) const;
81 double getASin( double num, double denom ) const;
82
83 private:
84 // Daughter ordering for K-, pi+, p
85 int m_d1, m_d2, m_d3;
86
87 // Resonance parameters
92
98
101};
102
103#endif
EvtDecayBase()=default
double m_phiNminusplus
std::vector< EvtComplex > calcResAmpTerms(EvtLambdacPHH::LcResLabel resIndex, const EvtResonance2 &res, double norm) const
EvtVector4R m_p4_Lambda_c
void decay(EvtParticle *p) override
double m_phiNplusplus
double m_phiNplusminus
EvtDecayBase * clone() const override
double getACos(double num, double denom) const
void initProbMax() override
std::string getName() const override
double m_phiNminusminus
double m_p4_Lambdac_Mag
double getASin(double num, double denom) const
void calcNormalisations()
EvtComplex fampl3(double amplitude_res, double phi_res, int spinMother, int m_spinMother, int m_prime_spinMother, double theta_res, float spin_res, float m_spin_res, float m_prime_spin_res, double theta_daughter_res, double phi_prime_daughter_res) const
void init() override
EvtVector4R m_zprime
EvtComplex DecayAmp3(EvtLambdacPHH::LcResLabel resonance, int m, int mprime, double theta_res, double phi_res, double theta_prime_daughter_res, double phi_prime_daughter_res) const