Belle II Software development
generators

Topics

 generators data objects
 
 
 generators modules
 
 

Classes

class  AAFHInterface
 Class to interface AAFH/DIAG36 Generator written in Fortran. More...
 
class  BabayagaNLO
 C++ Interface for the Fortran Bhabha and exclusive two photon generator BABAYAGA.NLO. More...
 
class  BBBrem
 Generator for low scattering angle radiative Bhabha events (Beam-Beam Bremsstrahlung). More...
 
class  BHWide
 C++ Interface for the Fortran Bhabha scattering generator BHWide. More...
 
class  SGCosmic
 Class to generate tracks in the cosmics generator and store them in a MCParticle graph. More...
 
class  CRY
 C++ Interface for the generator CRY. More...
 
class  EvtBSemiTauonicDecayRateCalculator
 Class to calculate the differential decay rate, R(D), R(D*), polarizations of tau and D* using BSTD model based on [M. More...
 
class  EvtGenInterface
 Class to interface EvtGen. More...
 
class  EvtGenModelRegister
 Class to keep a register of all Belle2 EvtDecayBases. More...
 
class  EvtD0ToKpipi0pi0
 
class  EvtD0ToKpipipi
 
class  EvtD0TopipiEta
 
class  EvtD0Topippim2pi0
 
class  EvtDsToKKpi
 
class  EvtDsToKpipi
 
class  EvtDToKSKpi0
 
class  EvtDToKSpipi0pi0
 
class  EvtDToKSpipipi
 
class  EvtDTopipi0Eta
 
class  EvtB0toKsKK
 Register Decay model EvtB0toKsKK. More...
 
class  EvtBCL
 The class provides the form factors for orbitally excited semileptonic decays. More...
 
class  EvtBCLFF
 BCL Form Factors. More...
 
class  EvtBSemiTauonic
 The EvtGen model of semi-tauonic B decays including new physics effects based on [M. More...
 
class  EvtBSemiTauonic2HDMType2
 The EvtGen model of semi-tauonic B decays including the charged higgs effect of 2HDM Type2 based on [M. More...
 
class  EvtBSemiTauonicAmplitude
 The base class for the calculation of the spin dependent amplitudes for the BSemiTauonic model based on [M. More...
 
class  EvtBSemiTauonicHelicityAmplitudeCalculator
 The class calculates the helicity amplitude of semi-tauonic B decays including new physics effects based on [M. More...
 
class  EvtBSemiTauonicScalarMesonAmplitude
 The class calculates the spin dependent amplitudes of B->Dtaunu decays for the BSemiTauonic model based on [M. More...
 
class  EvtBSemiTauonicVectorMesonAmplitude
 The class calculates the spin dependent amplitudes of B->D*taunu decays for the BSemiTauonic model based on [M. More...
 
class  EvtBtoXsnunu_FERMI
 The evtgen model to produce non-resonant B-> Xs nu nubar decay sample. More...
 
class  EvtEtaFullDalitz
 Class for the simulation of the eta -> pi+pi-pi0 decay with an improved dalitz description. More...
 
class  EvtEtaPi0Dalitz
 Class for the simulation of the eta -> 3pi0 and eta'->3pi0 decays. More...
 
class  EvtEtaPrimeDalitz
 Class for the simulation of the eta' -> pi+ pi- eta and pi0 pi0 eta decays. More...
 
class  EvtFlatDaughter
 The evtgen model to produce flat invariant mass distribution for 2nd and 3rd daughters. More...
 
class  EvtHNLBCL
 The class provides the form factors for orbitally excited semileptonic decays. More...
 
class  EvtKnunu
 The evtgen model to produce B-> K nu nubar decay sample. More...
 
class  EvtKstarnunu_REV
 The evtgen model to produce B-> Kstar nu nubar decay sample. More...
 
class  EvtPhspCP
 Register Decay model EvtPhspCP. More...
 
class  HepevtReader
 Class to read Hepevt files and store the content in a MCParticle graph. More...
 
class  HepMCReader
 Class to read HepMC files and store the content in a MCParticle graph. More...
 
class  KKGenInterface
 Interface class for using the KKMC generator. More...
 
class  KoralW
 C++ interface for the FORTRAN 4-fermion final state generator KoralW. More...
 
class  LHEReader
 Class to read LHE files and store the content in a MCParticle graph. More...
 
class  ParticleGun
 Class to generate tracks in the particle gun and store them in a MCParticle graph. More...
 
class  Phokhara
 C++ Interface for the Fortran generator PHOKHARA. More...
 
class  ReaderSAD
 Class to read files that have been created by SAD and store their content in a MCParticle graph. More...
 
class  Teegg
 C++ Interface for the Fortran generator TEEGG. More...
 
class  TouschekReaderTURTLE
 Class to read Touschek files and store their content in a MCParticle graph. More...
 
struct  DualNumber
 Simple structure implementing dual numbers which are used for exact evaluation of the derivatives, see https://en.wikipedia.org/wiki/Automatic_differentiation#Automatic_differentiation_using_dual_numbers. More...
 
struct  GeneralVector< T >
 3-vector with members of arbitrary type, especially members can be dual numbers More...
 
class  InitialParticleGeneration
 Generate Collision. More...
 

Macros

#define B2_EVTGEN_REGISTER_MODEL(classname)
 Class to register B2_EVTGEN_REGISTER_MODEL.
 

Functions

 B2_EVTGEN_REGISTER_MODEL (EvtD0ToKpipi0pi0)
 register the model in EvtGen
 
 B2_EVTGEN_REGISTER_MODEL (EvtD0ToKpipipi)
 
 B2_EVTGEN_REGISTER_MODEL (EvtD0TopipiEta)
 
 B2_EVTGEN_REGISTER_MODEL (EvtD0Topippim2pi0)
 register the model in EvtGen
 
 B2_EVTGEN_REGISTER_MODEL (EvtDsToKKpi)
 register the model in EvtGen
 
 B2_EVTGEN_REGISTER_MODEL (EvtDsToKpipi)
 register the model in EvtGen
 
 B2_EVTGEN_REGISTER_MODEL (EvtDToKSKpi0)
 register the model in EvtGen
 
 B2_EVTGEN_REGISTER_MODEL (EvtDToKSpipi0pi0)
 register the model in EvtGen
 
 B2_EVTGEN_REGISTER_MODEL (EvtDToKSpipipi)
 register the model in EvtGen
 
 B2_EVTGEN_REGISTER_MODEL (EvtDTopipi0Eta)
 register the model in EvtGen
 
 B2_EVTGEN_REGISTER_MODEL (EvtB0toK0K0K0)
 register the model in EvtGen
 
 B2_EVTGEN_REGISTER_MODEL (EvtB0toKsKK)
 register the model in EvtGen
 
double s13_min (const double &s12, const double &M, const double &m1, const double &m2, const double &m3)
 minimum s13
 
double s13_max (const double &s12, const double &M, const double &m1, const double &m2, const double &m3)
 maximum s13
 
 B2_EVTGEN_REGISTER_MODEL (EvtBCL)
 register the model in EvtGen
 
 B2_EVTGEN_REGISTER_MODEL (EvtBSemiTauonic)
 register the model in EvtGen
 
 B2_EVTGEN_REGISTER_MODEL (EvtBSemiTauonic2HDMType2)
 register the model in EvtGen
 
 B2_EVTGEN_REGISTER_MODEL (EvtBtoKK0K0)
 register the model in EvtGen
 
 B2_EVTGEN_REGISTER_MODEL (EvtBtoXsnunu_FERMI)
 register the model in EvtGen
 
 B2_EVTGEN_REGISTER_MODEL (EvtEtaFullDalitz)
 register the model in EvtGen
 
 B2_EVTGEN_REGISTER_MODEL (EvtEtaPi0Dalitz)
 register the model in EvtGen
 
 B2_EVTGEN_REGISTER_MODEL (EvtEtaPrimeDalitz)
 register the model in EvtGen
 
 B2_EVTGEN_REGISTER_MODEL (EvtFlatDaughter)
 register the model in EvtGen
 
 B2_EVTGEN_REGISTER_MODEL (EvtHNLBCL)
 register the model in EvtGen
 
 B2_EVTGEN_REGISTER_MODEL (EvtKnunu)
 register the model in EvtGen
 
 B2_EVTGEN_REGISTER_MODEL (EvtKstarnunu_REV)
 register the model in EvtGen
 
 B2_EVTGEN_REGISTER_MODEL (EvtPhspCP)
 register the model in EvtGen
 
double sqrt (double a)
 sqrt for double
 
double tan (double a)
 tan for double
 
double atan (double a)
 atan for double
 
DualNumber operator+ (DualNumber a, DualNumber b)
 addition of dual numbers
 
DualNumber operator+ (DualNumber a, double b)
 addition of dual number and double
 
DualNumber operator- (DualNumber a, double b)
 subtraction of dual number and double
 
DualNumber operator- (double a, DualNumber b)
 subtraction of double and dual number
 
DualNumber operator/ (double a, DualNumber b)
 division of double and dual number
 
DualNumber operator/ (DualNumber a, DualNumber b)
 division of two dual numbers
 
DualNumber operator- (DualNumber a, DualNumber b)
 subtraction of two dual numbers
 
DualNumber operator* (DualNumber a, DualNumber b)
 multiplication of two dual numbers
 
DualNumber operator* (double a, DualNumber b)
 multiplication of double and dual number
 
DualNumber sqrt (DualNumber a)
 sqrt of dual number
 
DualNumber atan (DualNumber a)
 atan of dual number
 
DualNumber tan (DualNumber a)
 tan of dual number
 
template<typename T>
GeneralVector< T > operator+ (GeneralVector< T > a, GeneralVector< T > b)
 addition of two general vectors
 
template<typename T>
dot (GeneralVector< T > a, GeneralVector< T > b)
 dot product of two general vectors
 
template<typename T>
GeneralVector< T > operator* (T a, GeneralVector< T > b)
 product of scalar and general vector
 
template<typename T>
getEcms (GeneralVector< T > p1, GeneralVector< T > p2)
 get CMS energy from HER & LER momentum 3-vectors
 
template<typename T>
GeneralVector< T > getBoost (GeneralVector< T > p1, GeneralVector< T > p2)
 get boost vector from HER & LER momentum 3-vectors
 
template<typename T>
std::pair< T, T > getAnglesCMS (GeneralVector< T > p1, GeneralVector< T > p2)
 get collision axis angles in CM frame from HER & LER momentum 3-vectors
 
template<typename T>
GeneralVector< T > getFourVector (T energy, T angleX, T angleY, bool isHER)
 get 4-momentum from energy and angles of beam
 
Eigen::MatrixXd getGradientMatrix (double eH, double thXH, double thYH, double eL, double thXL, double thYL)
 get gradient matrix of (eH, thXH, thYH, eL, thXL, thYL) -> (eCMS, boostX, boostY, boostY, angleXZ, angleYZ) transformation
 
Eigen::VectorXd getCentralValues (double eH, double thXH, double thYH, double eL, double thXL, double thYL)
 get vector including (Ecms, boostX, boostY, boostZ, angleXZ, angleYZ) from beam energies and angles
 
Eigen::MatrixXd transformCov (const Eigen::MatrixXd &covHER, const Eigen::MatrixXd &covLER, const Eigen::MatrixXd &grad)
 transform covariance matrix to the variables (Ecms, boostX, boostY, boostZ, angleXZ, angleYZ)
 
double getTotalEnergy (const std::vector< ROOT::Math::PxPyPzMVector > &ps)
 Main function scaleParticleEnergies in this header scales momenta in CMS of all particles in the final state by a constant factor such that the overall collision energy is slightly changed.
 
double getScaleFactor (const std::vector< ROOT::Math::PxPyPzMVector > &ps, double EcmsTarget)
 Find approximative value of the momentum scaling factor which makes the total energy of the particles provided in the vector ps equal to EcmsTarget.
 
std::vector< ROOT::Math::PxPyPzMVector > scaleMomenta (const std::vector< ROOT::Math::PxPyPzMVector > &ps, double C)
 Scale momenta of the particles in the vector ps with a factor C.
 
void scaleParticleEnergies (MCParticleGraph &mpg, double EcmsTarget)
 Scale momenta of the particles by a constant factor such that total energy is changed to EcmsTarget.
 
static Eigen::MatrixXd toEigen (TMatrixDSym m)
 transform matrix from ROOT to Eigen format
 
void init ()
 Initializes the generator.
 
void generateEvent (MCParticleGraph &mcGraph)
 Generates one single event.
 
void term ()
 Terminates the generator.
 
std::string getName ()
 
EvtDecayBase * clone ()
 
void init ()
 
void initProbMax ()
 
void decay (EvtParticle *p)
 
double PDF (double *Km, double *Pip, double *Pi01, double *Pi02)
 Probability distribution function of the decay.
 
EvtComplex KPiSFormfactor (const double sa, const double sb, const double sc, const double r)
 K pi S-wave form factor.
 
EvtComplex D2VV (const double *P1, const double *P2, const double *P3, const double *P4, int *g, const int flag)
 Amplitude modes.
 
EvtComplex D2AP_A2VP (const double *P1, const double *P2, const double *P3, const double *P4, int *g, const int flag)
 
EvtComplex D2AP_A2SP (const double *P1, const double *P2, const double *P3, const double *P4, const int flag)
 
EvtComplex D2PP_P2VP (const double *P1, const double *P2, const double *P3, const double *P4, const int flag)
 
EvtComplex D2VP_V2VP (const double *P1, const double *P2, const double *P3, const double *P4, const int flag)
 
EvtComplex D2VS (const double *P1, const double *P2, const double *P3, const double *P4, int g, const int flag)
 
EvtComplex D2TS (const double *P1, const double *P2, const double *P3, const double *P4, const int flag)
 
EvtComplex PHSP (double *Km, double *Pip)
 
double energyDependentWidth (const double mass, const double sa, const double sb, const double sc, const double r, const int l) const
 Energy dependent width.
 
double h (const double m, const double q) const
 h function in Gounaris-Sakurai lineshape
 
double dh (double mass, const double q0) const
 derivative h function in Gounaris-Sakurai lineshape
 
double f (double mass, const double sx, const double q0, const double q) const
 f function in Gounaris-Sakurai lineshape
 
double d (double mass, const double q0) const
 d function in Gounaris-Sakurai lineshape
 
EvtComplex propagatorRBW (double mass, double width, const double sa, const double sb, const double sc, const double r, const int l) const
 Relativistic Breit-Wigner lineshape function.
 
EvtComplex propagatorGS (double mass, double width, const double sa, const double sb, const double sc, const double r, const int l) const
 Gounaris-Sakurai lineshape function.
 
double LorentzDotProduct (const double *a1, const double *a2) const
 Four-vector dot product.
 
double Qabcs (const double sa, const double sb, const double sc) const
 Magnitudes of daughter particle momenta in the rest system of the mother particle.
 
double BWBarrierFactor (const double l, const double sa, const double sb, const double sc, const double r) const
 Blatt-Weisskopf barrier factors.
 
void covariantTensor1 (const double *daug1, const double *daug2, double *t1) const
 Covariant Spin-1 Projector.
 
void covariantTensor2 (const double *daug1, const double *daug2, double(*t2)[4]) const
 Covariant Spin-2 Projector.
 
std::string getName ()
 
EvtDecayBase * clone ()
 
void init ()
 
void initProbMax ()
 
void decay (EvtParticle *p)
 
double calPDF (double *Km, double *Pip1, double *Pip2, double *Pim)
 Probability distribution function of the decay.
 
EvtComplex KPiSFormfactor (const double sa, const double sb, const double sc, const double r)
 K pi S-wave form factor.
 
EvtComplex D2VV (const double *P1, const double *P2, const double *P3, const double *P4, int *g)
 Amplitude modes.
 
EvtComplex D2AP_A2VP (const double *P1, const double *P2, const double *P3, const double *P4, int *g, const int flag)
 
EvtComplex D2AP_A2SP (const double *P1, const double *P2, const double *P3, const double *P4, const int flag)
 
EvtComplex D2PP_P2VP (const double *P1, const double *P2, const double *P3, const double *P4, const int flag)
 
EvtComplex D2VP_V2VP (const double *P1, const double *P2, const double *P3, const double *P4, const int flag)
 
EvtComplex D2VS (const double *P1, const double *P2, const double *P3, const double *P4, int g, const int flag)
 
EvtComplex D2TS (const double *P1, const double *P2, const double *P3, const double *P4, const int flag)
 
EvtComplex PHSP (double *Km, double *Pip)
 
EvtComplex propogator (double mass, double width, const double sx) const
 Relativistic Breit-Wigner Lineshape Function (Fixed Width)
 
double wid (double mass, const double sa, const double sb, const double sc, const double r, const int l) const
 Energy dependent width.
 
double h (const double m, const double q) const
 h function in Gounaris-Sakurai lineshape
 
double dh (double mass, const double q0) const
 derivative h function in Gounaris-Sakurai lineshape
 
double f (double mass, const double sx, const double q0, const double q) const
 f function in Gounaris-Sakurai lineshape
 
double d (double mass, const double q0) const
 d function in Gounaris-Sakurai lineshape
 
EvtComplex propagatorRBW (double mass, double width, const double sa, const double sb, const double sc, const double r, const int l) const
 Relativistic Breit-Wigner Lineshape Function.
 
EvtComplex propagatorGS (double mass, double width, const double sa, const double sb, const double sc, const double r, const int l) const
 Gounaris-Sakurai lineshape Function.
 
double dot (const double *a1, const double *a2) const
 Four-Vector Scalar Product.
 
double Qabcs (const double sa, const double sb, const double sc) const
 Magnitudes of daughter particle momenta in the rest system of the mother particle.
 
double barrier (const double l, const double sa, const double sb, const double sc, const double r) const
 Blatt-Weisskopf barrier factors.
 
void calt1 (const double *daug1, const double *daug2, double *t1) const
 Covariant Spin-1 Projector.
 
void calt2 (const double *daug1, const double *daug2, double(*t2)[4]) const
 Covariant Spin-2 Projector.
 
std::string getName ()
 
EvtDecayBase * clone ()
 
void init ()
 
void initProbMax ()
 
void decay (EvtParticle *p)
 
double calDalEva (double P1[], double P2[], double P3[])
 
EvtComplex Spin_factor (double P1[], double P2[], double P3[], int spin, int flag, double mass_R, double width_R)
 
double dot (double *a1, double *a2)
 
double Qabcs (double sa, double sb, double sc)
 
double barrier (double l, double sa, double sb, double sc, double r, double mass)
 
void calt1 (double daug1[], double daug2[], double t1[])
 
void calt2 (double daug1[], double daug2[], double t2[][4])
 
double wid (double mass, double sa, double sb, double sc, double r, int l)
 
EvtComplex propagatorRBW (double mass, double width, double sa, double sb, double sc, double r, int l)
 
double h (double m, double q)
 
double dh (double mass, double q0)
 
double f (double mass, double sx, double q0, double q)
 
double d (double mass, double q0)
 
EvtComplex propagatorGS (double mass, double width, double sa, double sb, double sc, double r, int l)
 
EvtComplex Flatte_rhoab (double sa, double sb, double sc)
 
EvtComplex propagatorFlatte (double mass, double width, double sx, double *sb, double *sc)
 
std::string getName ()
 
EvtDecayBase * clone ()
 
void init ()
 
void initProbMax ()
 
void decay (EvtParticle *p)
 
void setInput (double *pip, double *pim, double *pi01, double *pi02)
 
std::vector< double > sum_tensor (std::vector< double > pa, std::vector< double > pb)
 
double contract_11_0 (std::vector< double > pa, std::vector< double > pb)
 
std::vector< double > contract_21_1 (std::vector< double > pa, std::vector< double > pb)
 
double contract_22_0 (std::vector< double > pa, std::vector< double > pb)
 
std::vector< double > contract_31_2 (std::vector< double > pa, std::vector< double > pb)
 
std::vector< double > contract_41_3 (std::vector< double > pa, std::vector< double > pb)
 
std::vector< double > contract_42_2 (std::vector< double > pa, std::vector< double > pb)
 
std::vector< double > contract_22_2 (std::vector< double > pa, std::vector< double > pb)
 
std::vector< double > OrbitalTensors (std::vector< double > pa, std::vector< double > pb, std::vector< double > pc, double r, int rank)
 
std::vector< double > ProjectionTensors (std::vector< double > pa, int rank)
 
double fundecaymomentum (double mr2, double m1_2, double m2_2)
 
std::complex< double > breitwigner (double mx2, double mr, double wr)
 
double h (double m, double q)
 
double dh (double m0, double q0)
 
double f (double m0, double sx, double q0, double q)
 
double d (double m0, double q0)
 
double fundecaymomentum2 (double mr2, double m1_2, double m2_2)
 
double wid (double mass, double sa, double sb, double sc, double r, int l)
 
std::complex< double > GS (double mx2, double mr, double wr, double m1_2, double m2_2, double r, int l)
 
std::complex< double > irho (double mr2, double m1_2, double m2_2)
 
std::complex< double > Flatte (double mx2, double mr, double g1, double g2, double m1a, double m1b, double m2a, double m2b)
 
std::complex< double > RBW (double mx2, double mr, double wr, double m1_2, double m2_2, double r, int l)
 
double widT1260 (int i, double g1, double g2)
 
double anywid1260 (double sc, double g1, double g2)
 
std::complex< double > RBWa1260 (double mx2, double mr, double g1, double g2)
 
double widT1300 (int i)
 
double anywid1300 (double sc)
 
std::complex< double > RBWpi1300 (double mx2, double mr, double wr)
 
double widT1640 (int i)
 
double anywid1640 (double sc)
 
std::complex< double > RBWa1640 (double mx2, double mr, double wr)
 
double widT1170 (int i)
 
double anywid1170 (double sc)
 
std::complex< double > RBWh11170 (double mx2, double mr, double wr)
 
double rho22 (double sc)
 
std::complex< double > rhoMTX (int i, int j, double s)
 
std::complex< double > KMTX (int i, int j, double s)
 
std::complex< double > IMTX (int i, int j)
 
std::complex< double > FMTX (double Kijx, double Kijy, double rhojjx, double rhojjy, int i, int j)
 
double FINVMTX (double s, double *FINVx, double *FINVy)
 
std::complex< double > PVTR (int ID, double s)
 
std::complex< double > Fvector (double sa, double s0, int l)
 
std::complex< double > CalD0Amp ()
 
std::complex< double > CalDbAmp ()
 
std::complex< double > Amp (std::vector< double > Pip1, std::vector< double > Pim1, std::vector< double > Pip2, std::vector< double > Pim2)
 
int CalAmp ()
 
double mag2 (std::complex< double > x)
 
double arg (std::complex< double > x)
 
double Get_strongPhase ()
 
double AmplitudeSquare (int charm, int tagmode)
 
std::string getName ()
 
EvtDecayBase * clone ()
 
void init ()
 
void initProbMax ()
 
void decay (EvtParticle *p)
 
void MIP_LineShape (double sa, double pro[2])
 
void calEvaMy (double *pKm, double *pKp, double *pPi, double *mass1, double *width1, double *amp, double *phase, int *g0, int *modetype, int nstates, double &Result)
 
void Com_Multi (double a1[2], double a2[2], double res[2])
 
void Com_Divide (double a1[2], double a2[2], double res[2])
 
double SCADot (double a1[4], double a2[4])
 
double barrier (int l, double sa, double sb, double sc, double r)
 
double barrierNeo (int l, double sa, double sb, double sc, double r, double mR)
 
double barrierNeoDs (int l, double sa, double sb, double sc, double r, double mR, double mb)
 
void calt1 (double daug1[4], double daug2[4], double t1[4])
 
void calt2 (double daug1[4], double daug2[4], double t2[4][4])
 
void propagator (double mass, double width, double sx, double prop[2])
 
double wid (double mass, double sa, double sb, double sc, double r, int l)
 
void Flatte_rhoab (double sa, double sb, double sc, double rho[2])
 
void propagatorFlatte (double mass, double width, double sx, double *sb, double *sc, double prop[2])
 
void propagator980 (double mass, double sx, double *sb, double *sc, double prop[2])
 
void propagatora0980 (double mass, double sx, double *sb, double *sc, double prop[2])
 
void propagatorKstr1430 (double mass, double sx, double *sb, double *sc, double prop[2])
 
void propagatorRBW (double mass, double width, double sa, double sb, double sc, double r, int l, double prop[2])
 
void propagatorRBWNeo (double mass, double width, double sa, double sb, double sc, double r, int l, double prop[2])
 
void propagatorRBWNeoKstr892 (double mass, double width, double sa, double sb, double sc, double r, int l, double prop[2])
 
double h (double m, double q)
 
double dh (double mass, double q0)
 
double f (double mass, double sx, double q0, double q)
 
double d (double mass, double q0)
 
void propagatorGS (double mass, double width, double sa, double sb, double sc, double r, int l, double prop[2])
 
std::string getName ()
 
EvtDecayBase * clone ()
 
void init ()
 
void initProbMax ()
 
void decay (EvtParticle *p)
 
void Com_Multi (double a1[2], double a2[2], double res[2])
 
void Com_Divide (double a1[2], double a2[2], double res[2])
 
double SCADot (double a1[4], double a2[4])
 
double barrier (int l, double sa, double sb, double sc, double r, double mass)
 
void calt1 (double daug1[4], double daug2[4], double t1[4])
 
void calt2 (double daug1[4], double daug2[4], double t2[4][4])
 
void propagatorCBW (double mass, double width, double sx, double prop[2])
 
double wid (double mass2, double mass, double sa, double sb, double sc, double r2, int l)
 
double widl1 (double mass2, double mass, double sa, double sb, double sc, double r2)
 
void propagatorRBW (double mass, double width, double sa, double sb, double sc, double r2, int l, double prop[2])
 
void propagatorFlatte (double mass, double width, double sa, double prop[2])
 
void propagatorGS (double mass, double width, double sa, double sb, double sc, double r2, double prop[2])
 
void Flatte_rhoab (double sa, double sb, double sc, double rho[2])
 
void propagatorKstr1430 (double mass, double sx, double *sb, double *sc, double prop[2])
 
double DDalitz (double P1[4], double P2[4], double P3[4], int Ang, double mass)
 
void rhoab (double sa, double sb, double sc, double res[2])
 
void rho4Pi (double sa, double res[2])
 
void propagatorsigma500 (double sa, double sb, double sc, double prop[2])
 
void calEva (double *K, double *Pi1, double *Pi2, double *mass1, double *width1, double *amp, double *phase, int *g0, int *spin, int *modetype, int nstates, double &Result)
 
std::string getName ()
 
EvtDecayBase * clone ()
 
void init ()
 
void initProbMax ()
 
void decay (EvtParticle *p)
 
double twoBodyCMmom (double rMassSq, double d1m, double d2m)
 
double dampingFactorSquare (const double &cmmom, const int &spin, const double &mRadius)
 
double spinFactor (int spin, double motherMass, double daug1Mass, double daug2Mass, double daug3Mass, double m12, double m13, double m23)
 
EvtComplex RBW (int id, double resmass, double reswidth, int spin)
 
EvtComplex Flatte (int id, double resmass, double g1, double rg2og1)
 
EvtComplex LASS (int id, double resmass, double reswidth)
 
double AmplitudeSquare ()
 
std::string getName ()
 
EvtDecayBase * clone ()
 
void init ()
 
void initProbMax ()
 
void decay (EvtParticle *p)
 
double calPDF (const double Ks[], const double Pip[], const double Pi01[], const double Pi02[], double &Result)
 Probability distribution function of the decay.
 
void Com_Multi (const double a1[2], const double a2[2], double res[2])
 Complex Multiplication.
 
void Com_Divide (const double a1[2], const double a2[2], double res[2])
 Complex Division.
 
double SCADot (const double a1[4], const double a2[4])
 Four-Vector Scalar Product.
 
double Barrier (const double mass2, const int l, const double sa, const double sb, const double sc, const double r2)
 Blatt-Weisskopf barrier factors.
 
void calt1 (const double daug1[4], const double daug2[4], double t1[4])
 Covariant Spin-1 Projector.
 
void calt2 (const double daug1[4], const double daug2[4], double t2[4][4])
 Covariant Spin-2 Projector.
 
double wid (const double mass2, const double mass, const double sa, const double sb, const double sc, const double r2, const int l)
 Energy Dependent Width.
 
double widl1 (const double mass2, const double mass, const double sa, const double sb, const double sc, const double r2)
 Energy Dependent Width (L=1)
 
void propagatorRBW (const double mass2, const double mass, const double width, const double sa, const double sb, const double sc, const double r2, const int l, double prop[2])
 Relativistic Breit-Wigner Lineshape Function.
 
void propagatorRBWl1 (const double mass2, const double mass, const double width, const double sa, const double sb, const double sc, const double r2, double prop[2])
 Relativistic Breit-Wigner Lineshape Function (L=1)
 
void propagatorRBW_a1 (const double mass2, const double mass, const double width, const double sa, const double sb, const double sc, const double r2, const int l, double prop[2])
 Relativistic Breit-Wigner Lineshape Function (Specific to a_1)
 
void propagatorGS (const double mass2, const double mass, const double width, const double sa, const double sb, const double sc, const double r2, double prop[2])
 Gounaris-Sakurai lineshape Function.
 
void rhoab (const double sa, const double sb, const double sc, double res[2])
 Two-body Phase-space Function.
 
void rho4Pi (const double sa, double res[2])
 Two-body Phase-space Function (Two Pions)
 
void propagatorsigma500 (const double sa, const double sb, const double sc, double prop[2])
 sigma(500) Lineshape Function
 
void KPiSLASS (const double sa, const double sb, const double sc, double prop[2])
 LASS Parameterization Kpi S-Wave Function.
 
std::string getName ()
 
EvtDecayBase * clone ()
 
void init ()
 
void initProbMax ()
 
void decay (EvtParticle *p)
 
double calPDF (double Km[], double Pip1[], double Pip2[], double Pim[])
 Probability distribution function of the decay.
 
EvtComplex KPiSFormfactor (const double sa, const double sb, const double sc, const double r)
 K pi S-wave form factor.
 
EvtComplex D2AP_A2VP (double P1[], double P2[], double P3[], double P4[], int L)
 Amplitude modes.
 
EvtComplex D2AP_A2SP (double P1[], double P2[], double P3[], double P4[])
 
EvtComplex D2PP_P2VP (double P1[], double P2[], double P3[], double P4[])
 
EvtComplex PHSP (double Km[], double Pip[])
 
EvtComplex getprop (double daug1[], double daug2[], double mass, double width, int flag, int L)
 Propagator Lineshapes.
 
EvtComplex rhoab (const double sa, const double sb, const double sc)
 Two-body Phase-space Function.
 
EvtComplex rho4Pi (const double sa)
 Two-body Phase-space Function (Two Pions)
 
EvtComplex propogator (const double mass, const double width, const double sx) const
 Relativistic Breit-Wigner Lineshape Function (Fixed Width)
 
double wid (const double mass, const double sa, const double sb, const double sc, const double r, const int l) const
 Energy Dependent Width.
 
double h (const double m, const double q) const
 h function in Gounaris-Sakurai lineshape
 
double dh (const double mass, const double q0) const
 derivative h function in Gounaris-Sakurai lineshape
 
double f (const double mass, const double sx, const double q0, const double q) const
 f function in Gounaris-Sakurai lineshape
 
double d (const double mass, const double q0) const
 d function in Gounaris-Sakurai lineshape
 
EvtComplex propagatorRBW (const double mass, const double width, const double sa, const double sb, const double sc, const double r, const int l) const
 Relativistic Breit-Wigner Lineshape Function.
 
EvtComplex propagatorGS (const double mass, const double width, const double sa, const double sb, const double sc, const double r, const int l) const
 Gounaris-Sakurai lineshape Function.
 
double dot (double *a1, double *a2) const
 Four-Vector Scalar Product.
 
double Qabcs (const double sa, const double sb, const double sc) const
 Magnitudes of daughter particle momenta in the rest system of the mother particle.
 
double barrier (const double l, const double sa, const double sb, const double sc, const double r) const
 Blatt-Weisskopf barrier factors.
 
void calt1 (double daug1[], double daug2[], double t1[]) const
 Covariant Spin-1 Projector.
 
void calt2 (double daug1[], double daug2[], double t2[][4]) const
 Covariant Spin-2 Projector.
 
std::string getName ()
 
EvtDecayBase * clone ()
 
void init ()
 
void initProbMax ()
 
void decay (EvtParticle *p)
 
double calDalEva (double P1[], double P2[], double P3[])
 
EvtComplex Spin_factor (double P1[], double P2[], double P3[], int spin, int flag, double mass_R, double width_R)
 
double dot (double *a1, double *a2)
 
double Qabcs (double sa, double sb, double sc)
 
double barrier (double l, double sa, double sb, double sc, double r, double mass)
 
void calt1 (double daug1[], double daug2[], double t1[])
 
void calt2 (double daug1[], double daug2[], double t2[][4])
 
double wid (double mass, double sa, double sb, double sc, double r, int l)
 
EvtComplex propagatorRBW (double mass, double width, double sa, double sb, double sc, double r, int l)
 
double h (double m, double q)
 
double dh (double mass, double q0)
 
double f (double mass, double sx, double q0, double q)
 
double d (double mass, double q0)
 
EvtComplex propagatorGS (double mass, double width, double sa, double sb, double sc, double r, int l)
 
EvtComplex Flatte_rhoab (double sa, double sb, double sc)
 
EvtComplex propagatorFlatte (double mass, double width, double sx, double *sb, double *sc)
 
std::string getName ()
 Get function Name.
 
EvtDecayBase * clone ()
 Clone the decay of B0toKsKK.
 
void init ()
 Initialize standard stream objects.
 
void initProbMax ()
 Initialize standard stream objects for probability function.
 
void decay (EvtParticle *p)
 Member of particle in EvtGen.
 
EvtVector4R umu (const EvtVector4R &p4a, const EvtVector4R &p4b, const EvtVector4R &p4c)
 Function 4Vector umu.
 
EvtVector4R Smu (const EvtVector4R &p4a, const EvtVector4R &p4b, const EvtVector4R &p4c)
 Function 4Vector Smu.
 
EvtVector4R Lmu (const EvtVector4R &p4a, const EvtVector4R &p4b, const EvtVector4R &p4c)
 Function 4Vector Lmu.
 
EvtTensor4C gmunu_tilde (const EvtVector4R &p4a, const EvtVector4R &p4b, const EvtVector4R &p4c)
 Function Tensor gmunu.
 
EvtTensor4C Tmunu (const EvtVector4R &p4a, const EvtVector4R &p4b, const EvtVector4R &p4c)
 Function Tensor Tmunu.
 
EvtTensor4C Multiply (const EvtTensor4C &t1, const EvtTensor4C &t2)
 Function Tensor Multiply.
 
EvtTensor4C RaiseIndices (const EvtTensor4C &t)
 Function RaiseIndices.
 
void RaiseIndex (EvtVector4R &vector)
 Member function RaiseIndices.
 
EvtTensor4C Mmunu (const EvtVector4R &p4a, const EvtVector4R &p4b, const EvtVector4R &p4c)
 Function Tensor Mmunu.
 
double BWBF (const double &q, const unsigned int &L)
 Meson radius.
 
double BWBF (const double &q, const double &q0, const unsigned int &L)
 Meson radius.
 
EvtComplex BreitWigner (const double &m, const double &m0, const double &Gamma0, const double &q, const double &q0, const unsigned int &L)
 BreitWigner Shape.
 
EvtVector4R Boost (const EvtVector4R &p4, const EvtVector4R &boost)
 Parameter for boost frame.
 
double p (const double &mab, const double &M, const double &mc)
 Constants p.
 
double q (const double &mab, const double &ma, const double &mb)
 Constants q.
 
EvtComplex Flatte_k (const double &s, const double &m_h)
 Constant Flatte_k.
 
EvtComplex Flatte (const double &m, const double &m0)
 Constant Flatte.
 
EvtComplex A_f0ks (const EvtVector4R &p4ks, const EvtVector4R &p4kp, const EvtVector4R &p4km)
 A_f0ks is amplitude of f0.
 
EvtComplex A_phiks (const EvtVector4R &p4ks, const EvtVector4R &p4kp, const EvtVector4R &p4km)
 A_phiks is amplitude of phi.
 
EvtComplex A_fxks (const EvtVector4R &p4ks, const EvtVector4R &p4kp, const EvtVector4R &p4km)
 A_fxks is amplitude of fxks.
 
EvtComplex A_chic0ks (const EvtVector4R &p4ks, const EvtVector4R &p4kp, const EvtVector4R &p4km)
 A_chic0ks is amplitude of chic0ks.
 
EvtComplex A_kknr (const EvtVector4R &p4k1, const EvtVector4R &p4k2, const double &alpha_kk)
 A_kknr is amplitude of kknr.
 
 EvtBCL ()
 Default constructor.
 
virtual ~EvtBCL ()
 virtual destructor
 
std::string getName ()
 Returns name of module.
 
EvtDecayBase * clone ()
 Clones module.
 
void decay (EvtParticle *p)
 Creates a decay.
 
void initProbMax ()
 Sets maximal probab.
 
void init ()
 Initializes module.
 
 EvtBCLFF (int numarg, double *arglist)
 constructor
 
void getscalarff (EvtId parent, EvtId daughter, double t, double, double *fpf, double *f0f)
 Scalar FF's.
 
void getvectorff (EvtId parent, EvtId daughter, double t, double, double *a1f, double *a2f, double *vf, double *a0f)
 Vector FF's.
 
void gettensorff (EvtId parent, EvtId daughter, double t, double, double *hf, double *kf, double *bp, double *bm)
 Not Implemented.
 
void getbaryonff (EvtId, EvtId, double, double, double *, double *, double *, double *)
 Not Implemented.
 
void getdiracff (EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *)
 Not Implemented.
 
void getraritaff (EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *, double *, double *)
 Not Implemented.
 
 EvtBSemiTauonic ()
 The default constructor.
 
virtual ~EvtBSemiTauonic ()
 The destructor.
 
std::string getName ()
 The function returns the model name.
 
EvtDecayBase * clone ()
 The function makes a copy of an EvtBSTD object.
 
void decay (EvtParticle *p)
 The function evaluates the decay amplitude of the parent particle.
 
void initProbMax ()
 The function sets the maximum value of the probability.
 
void init ()
 The function initializes the decay.
 
 EvtBSemiTauonic2HDMType2 ()
 The default constructor.
 
virtual ~EvtBSemiTauonic2HDMType2 ()
 The destructor.
 
std::string getName ()
 The function returns the model name.
 
EvtDecayBase * clone ()
 The function makes a copy of an EvtBSemiTauonic2HDMType2 object.
 
void decay (EvtParticle *p)
 The function evaluates the decay amplitude of the parent particle.
 
void initProbMax ()
 The function sets the maximum value of the probability.
 
void init ()
 The function initializes the decay.
 
EvtSpinDensity RotateToHelicityBasisInBoostedFrame (const EvtParticle *p, EvtVector4R p4boost)
 The function calculates the rotation matrix to convert the spin basis to the helicity basis in the boosted frame.
 
double CalcMaxProb (EvtId parent, EvtId meson, EvtId lepton, EvtId nudaug, EvtBSemiTauonicHelicityAmplitudeCalculator *HelicityAmplitudeCalculator)
 The function calculates the maximum probability.
 
 EvtBSemiTauonicHelicityAmplitudeCalculator ()
 The default constructor.
 
 EvtBSemiTauonicHelicityAmplitudeCalculator (const double rho12, const double rhoA12, const double ffR11, const double ffR21, const double AS1, const double AR3, const double bottomMass, const double charmMass, const EvtComplex &CV1, const EvtComplex &CV2, const EvtComplex &CS1, const EvtComplex &CS2, const EvtComplex &CT, const double parentMass, const double DMass, const double DstarMass)
 The constructor with HQET form factor parameters, Wilson coefficients of new physics contributions and parent B, daughter D(*) meson masses.
 
EvtComplex helAmp (double mtau, int tauhel, int Dhel, double w, double costau) const
 The function calculates the helicity amplitude.
 
EvtComplex helAmp (const EvtComplex &CV1, const EvtComplex &CV2, const EvtComplex &CS1, const EvtComplex &CS2, const EvtComplex &CT, double mtau, int tauhel, int Dhel, double w, double costau) const
 The function calculates helicity amplitudes with given Wilson coefficients.
 
double Lep (const double mtau, int tauhel, int whel, double q2, double costau) const
 The function to calculate the Leptonic Amplitudes for B->D*taunu decay of the vector type contribution.
 
double Lep (const double mtau, int tauhel, double q2, double costau) const
 The function to calculate the Leptonic Amplitudes for B->Dtaunu decay of the scalar type contribution.
 
double Lep (const double mtau, int tauhel, int whel1, int whel2, double q2, double costau) const
 The function to calculate the Leptonic Amplitudes for B->D*taunu decay of the tensor type contribution.
 
double HadV1 (int Dhel, int whel, double w) const
 The function to calculate the Hadronic Amplitudes of left handed (V-A) type contribution.
 
double HadV2 (int Dhel, int whel, double w) const
 The function to calculate the Hadronic Amplitudes of right handed (V+A) type contribution.
 
double HadS1 (int Dhel, double w) const
 The function to calculate the Hadronic Amplitudes of scalar (S+P) type contribution.
 
double HadS2 (int Dhel, double w) const
 The function to calculate the Hadronic Amplitudes of scalar (S-P) type contribution.
 
double HadT (int Dhel, int whel1, int whel2, double w) const
 The function to calculate the Hadronic Amplitudes of tensor type contribution.
 
double helampSM (double mtau, int tauhel, int Dhel, double w, double costau) const
 Helicity Amplitudes of SM (left handed) contribution.
 
double helampV1 (double mtau, int tauhel, int Dhel, double w, double costau) const
 Helicity Amplitudes of left handed (V-A) contribution.
 
double helampV2 (double mtau, int tauhel, int Dhel, double w, double costau) const
 Helicity Amplitudes of right handed (V+A) contribution.
 
double helampS1 (double mtau, int tauhel, int Dhel, double w, double costau) const
 Helicity Amplitudes of scalar (S+P) type contribution.
 
double helampS2 (double mtau, int tauhel, int Dhel, double w, double costau) const
 Helicity Amplitudes of scalar (S-P) type contribution.
 
double helampT (double mtau, int tauhel, int Dhel, double w, double costau) const
 Helicity Amplitudes of tensor type contribution.
 
double hp (double w) const
 HQET D vector form factor h_+(w).
 
double hm (double w) const
 HQET D vector form factor h_-(w).
 
double hA1 (double w) const
 HQET D* axial vector form factor h_{A1}(w).
 
double hV (double w) const
 HQET D* axial vector form factor h_V(w).
 
double hA2 (double w) const
 HQET D* axial vector form factor h_{A2}(w).
 
double hA3 (double w) const
 HQET D* axial vector form factor h_{A3}(w).
 
double hS (double w) const
 D scalar form factor h_S(w) in terms of vector form factors.
 
double hP (double w) const
 D* pseudo scalar form factor h_P(w) in terms of axial vector form factors.
 
double hT (double w) const
 D tensor form factor h_T(w) in terms of vector form factors.
 
double hT1 (double w) const
 D* tensor form factor h_{T1}(w) in terms of axial vector form factors.
 
double hT2 (double w) const
 D* tensor form factor h_{T2}(w).
 
double hT3 (double w) const
 D* tensor form factor h_{T3}(w).
 
double z (double w) const
 CLN form factor z.
 
double ffV1 (double w) const
 CLN form factor V1.
 
double ffS1 (double w) const
 CLN form factor S1.
 
double ffA1 (double w) const
 CLN form factor A1.
 
double ffR1 (double w) const
 CLN form factor R1.
 
double ffR2 (double w) const
 CLN form factor R2.
 
double ffR3 (double w) const
 CLN form factor R3.
 
double dS1 (double w) const
 HQET correction factor for the scalar form factor for B->Dtaunu.
 
double dR3 (double w) const
 HQET correction factor for the scalar form factor for B->D*taunu.
 
double mD (int Dhel) const
 Daughter D(*) meson mass.
 
double v (double mtau, double q2) const
 Function to calculate the tau velocity.
 
double qh2 (int Dhel, double w) const
 Function to calculate the q^2 divided by the square of parent mass (m_B^2).
 
double q2 (int Dhel, double w) const
 Function to calculate the q^2 of the decay (square of l+nu invariant mass).
 
bool chkDhel (int Dhel) const
 sanity checkers
 
bool chkwhel (int whel) const
 Function to check if whel is in the valid range.
 
bool chktauhel (int tauhel) const
 Function to check if tauhel is in the valid range.
 
void CalcAmp (EvtParticle *parent, EvtAmp &amp, EvtBSemiTauonicHelicityAmplitudeCalculator *HelicityAmplitudeCalculator) override
 The function calculates the spin dependent amplitude.
 
void CalcAmp (EvtParticle *parent, EvtAmp &amp, EvtBSemiTauonicHelicityAmplitudeCalculator *HelicityAmplitudeCalculator) override
 The function calculates the spin dependent amplitude.
 
virtual ~EvtBtoXsnunu_FERMI ()
 Destructor.
 
std::string getName ()
 The function which returns the name of the model.
 
EvtDecayBase * clone ()
 The function which makes a copy of the model.
 
void decay (EvtParticle *p)
 The function to determine kinematics of daughter particles based on dGdsb distribution.
 
void initProbMax ()
 The function to sets a maximum probability.
 
void init ()
 The function for an initialization.
 
double dGdsbProb (double _sb)
 The function returns the probability density value depending on sb.
 
double FermiMomentum (double pf)
 The function returns a momentum of b quark.
 
double FermiMomentumProb (double pb, double pf)
 The function returns a probability based on the Fermi motion model.
 
virtual ~EvtEtaFullDalitz ()
 Default Destructor.
 
std::string getName ()
 Returns the model name: ETA_FULLDALITZ.
 
EvtDecayBase * clone ()
 Makes a copy of the pointer to the class.
 
void init ()
 Checks that the number of input parameters are correct:
 
void initProbMax ()
 Sets the Maximum probability for the PHSP reweight.
 
void decay (EvtParticle *p)
 Function that implements the energy-dependent Dalitz.
 
virtual ~EvtEtaPi0Dalitz ()
 Default destructor.
 
std::string getName ()
 Returns the name of the model: ETA_PI0DALITZ.
 
EvtDecayBase * clone ()
 Makes a copy of the class object.
 
void init ()
 Checks that the number of input parameters are correct:
 
void initProbMax ()
 Sets the Maximum probability for the PHSP reweight.
 
void decay (EvtParticle *p)
 Function that implements the energy-dependent Dalitz.
 
virtual ~EvtEtaPrimeDalitz ()
 Default destructor.
 
std::string getName ()
 Returns the model name: ETAPRIME_DALITZ.
 
EvtDecayBase * clone ()
 Returns a copy of the class object.
 
void init ()
 Checks that the number of input parameters are correct:
 
void initProbMax ()
 Sets the Maximum probability for the PHSP reweight.
 
void decay (EvtParticle *p)
 Function that implements the energy-dependent Dalitz.
 
virtual ~EvtFlatDaughter ()
 Destructor.
 
std::string getName ()
 The function which returns the name of the model.
 
EvtDecayBase * clone ()
 The function which makes a copy of the model.
 
void decay (EvtParticle *p)
 The function to determine kinematics of daughter particles.
 
void initProbMax ()
 The function to sets a maximum probability.
 
void init ()
 The function for an initialization.
 
 EvtHNLBCL ()
 Default constructor.
 
virtual ~EvtHNLBCL ()
 virtual destructor
 
std::string getName ()
 Returns name of module.
 
EvtDecayBase * clone ()
 Clones module.
 
void decay (EvtParticle *p)
 Creates a decay.
 
void initProbMax ()
 Sets maximal probab.
 
void init ()
 Initializes module.
 
virtual ~EvtKnunu ()
 Destructor.
 
std::string getName ()
 The function which returns the name of the model.
 
EvtDecayBase * clone ()
 The function which makes a copy of the model.
 
void decay (EvtParticle *p)
 The function to calculate a quark decay amplitude.
 
void init ()
 The function for an initialization.
 
void initProbMax ()
 The function to sets a maximum probability.
 
virtual ~EvtKstarnunu_REV ()
 Destructor.
 
std::string getName ()
 The function which returns the name of the model.
 
EvtDecayBase * clone ()
 The function which makes a copy of the model.
 
void decay (EvtParticle *p)
 The function to calculate a quark decay amplitude.
 
void init ()
 The function for an initialization.
 
void initProbMax ()
 The function to sets a maximum probability.
 
std::string getName ()
 Get function Name.
 
EvtDecayBase * clone ()
 Clone the decay.
 
void init ()
 Initialize standard stream objects.
 
void initProbMax ()
 Initialize standard stream objects for probability function.
 
void decay (EvtParticle *p)
 Member of particle in EvtGen.
 
double dGammadwdcostau (const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, double mtau, int tauhel, int Dhel, double w, double costau)
 Function calculates the differential decay rate dGamma/dw/dcostau.
 
double dGammadw (const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, double mtau, int tauhel, int Dhel, double w)
 Function calculates the differential decay rate dGamma/dw, integrated for costau.
 
double dGammadcostau (const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, double mtau, int tauhel, int Dhel, double costau)
 Function calculates the differential decay rate dGamma/dcostau, integrated for w.
 
double Gamma (const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, double mtau, int tauhel, int Dhel)
 Function calculates the helicity dependent decay rate Gamma, integrated for w and costau.
 
double GammaD (const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, double mtau)
 Function calculates the decay rate Gamma for Dtaunu decay, integrated for w and costau and summed for helicities.
 
double GammaDstar (const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, double mtau)
 Function calculates the differential decay rate Gamma for D*taunu decay, integrated for w and costau and summed for helicities.
 
double GammaSMD (const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, const double mlep=0.0005110)
 Function calculates the SM decay rate Gamma for Dlnu decay, integrated for w and costau and summed for helicities.
 
double GammaSMDstar (const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, const double mlep=0.0005110)
 Function calculates the SM decay rate Gamma for D*lnu decay, integrated for w and costau and summed for helicities.
 
double RGammaD (const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, const double mtau, const double mlep=0.0005110)
 Function calculates the ratio of Br(B->Dtaunu)/Br(B->Dlnu), R(D).
 
double RGammaDstar (const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, const double mtau, const double mlep=0.0005110)
 Function calculates the ratio of Br(B->Dtaunu)/Br(B->Dlnu), R(D*).
 
double PtauD (const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, const double mtau)
 Function calculates the polarization of tau, (RH - LH)/(LH + RH), in B->Dtaunu decay.
 
double PtauDstar (const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, const double mtau)
 Function calculates the polarization of tau, (RH - LH)/(LH + RH), in B->D*taunu decay.
 
double PDstar (const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, const double mtau)
 Function calculates the polarization of D*, longitudinal/(longitudinal + transverse), in B->D*taunu decay.
 
double pf (const EvtBSemiTauonicHelicityAmplitudeCalculator &BSTD, double mtau, int Dhel, double w)
 Phase space factor, which is multiplied to the helicity amplitude to calculate the decay rate.
 
double EvaluateByW (double *x, double *param)
 Function used internally for numerical integration.
 
double EvaluateByCostau (double *x, double *param)
 Function used internally for numerical integration.
 
double EvaluateBy2D (double *x, double *param)
 Function used internally for numerical integration.
 
static EvtGenModelRegistergetInstance ()
 Return reference to the instance.
 
static std::list< EvtDecayBase * > getModels ()
 Return a list of models.
 
void initialize ()
 function to be executed on initialize()
 
ROOT::Math::XYZVector generateVertex (const ROOT::Math::XYZVector &initial, const TMatrixDSym &cov, MultivariateNormalGenerator &gen) const
 generate the vertex
 
TMatrixDSym adjustCovMatrix (TMatrixDSym cov) const
 adjust smearing covariance matrix based on the generation flags
 
ConditionalGaussGenerator initConditionalGenerator (const ROOT::Math::PxPyPzEVector &pHER, const ROOT::Math::PxPyPzEVector &pLER, const TMatrixDSym &covHER, const TMatrixDSym &covLER)
 Initialize the conditional generator using HER & LER 4-vectors and HER & LER covariance matrices describing spread.
 
ROOT::Math::PxPyPzEVector generateBeam (const ROOT::Math::PxPyPzEVector &initial, const TMatrixDSym &cov, MultivariateNormalGenerator &gen) const
 generate 4 vector for one beam
 
MCInitialParticlesgenerate ()
 Generate a new event.
 
MCInitialParticlesgenerate (int allowedFlags)
 Generate a new event with a particular set of allowed flags.
 
ROOT::Math::XYZVector getVertexConditional ()
 Generate vertex position and possibly update the generator of Lorentz transformation.
 
ROOT::Math::XYZVector updateVertex (bool force=false)
 Update the vertex position:
 

Variables

static const double me = Const::electron.getMass()
 electron mass
 

Detailed Description

Macro Definition Documentation

◆ B2_EVTGEN_REGISTER_MODEL

#define B2_EVTGEN_REGISTER_MODEL ( classname)
Value:
namespace {\
Belle2::EvtGenModelRegister::Factory<classname> EvtGenModelFactory_##classname; \
}
Helper Class to easily register new EvtDecayBases for Belle2.

Class to register B2_EVTGEN_REGISTER_MODEL.

Definition at line 75 of file EvtGenModelRegister.h.

75#define B2_EVTGEN_REGISTER_MODEL(classname) namespace {\
76 Belle2::EvtGenModelRegister::Factory<classname> EvtGenModelFactory_##classname; \
77 }

Function Documentation

◆ A_chic0ks()

EvtComplex A_chic0ks ( const EvtVector4R & p4ks,
const EvtVector4R & p4kp,
const EvtVector4R & p4km )

A_chic0ks is amplitude of chic0ks.

Definition at line 800 of file EvtB0toKsKK.cc.

803 {
804 static EvtId chic0 = EvtPDL::getId("chi_c0");
805
806 const double chic0_m = EvtPDL::getMeanMass(chic0);
807 const double chic0_w = EvtPDL::getWidth(chic0);
808
809 const EvtVector4R p4kpkm = p4kp + p4km;
810 const double mkpkm = p4kpkm.mass();
811
812 //Angular distribution
813 const EvtComplex H_chic0ks = 1.0;
814
815 //Barrier factors
816 const EvtComplex D_chic0ks = 1.0;
817
818 //Line shape
819 const EvtVector4R p4kp_kpkm = Boost(p4kp, p4kpkm);
820 const double q0_chic0 = q(chic0_m, p4kp.mass(), p4km.mass());
821 const EvtComplex L_chic0ks =
822 BreitWigner(mkpkm, chic0_m, chic0_w, p4kp_kpkm.d3mag(), q0_chic0, 0);
823
824 //Amplitude
825 const EvtComplex A_chic0ks = D_chic0ks * H_chic0ks * L_chic0ks;
826
827 return A_chic0ks;
828 }

◆ A_f0ks()

EvtComplex A_f0ks ( const EvtVector4R & p4ks,
const EvtVector4R & p4kp,
const EvtVector4R & p4km )

A_f0ks is amplitude of f0.

Definition at line 639 of file EvtB0toKsKK.cc.

642 {
643 static EvtId f0 = EvtPDL::getId("f_0");
644
645 const double f0_m = EvtPDL::getMeanMass(f0);
646
647 const EvtVector4R p4kpkm = p4kp + p4km;
648 const double mkpkm = p4kpkm.mass();
649
650 //Angular distribution
651 const EvtComplex H_f0ks = 1.0;
652
653 //Barrier factors
654 const EvtComplex D_f0ks = 1.0;
655
656 //Line shape
657 const EvtComplex L_f0ks = Flatte(mkpkm, f0_m);
658
659 //Amplitude
660 const EvtComplex A_f0ks = D_f0ks * H_f0ks * L_f0ks;
661
662 return A_f0ks;
663 }

◆ A_fxks()

EvtComplex A_fxks ( const EvtVector4R & p4ks,
const EvtVector4R & p4kp,
const EvtVector4R & p4km )

A_fxks is amplitude of fxks.

Definition at line 770 of file EvtB0toKsKK.cc.

773 {
774 static EvtId fx = EvtPDL::getId("f_0(1500)");
775
776 const double fx_m = EvtPDL::getMeanMass(fx);
777 const double fx_w = EvtPDL::getWidth(fx);
778
779 const EvtVector4R p4kpkm = p4kp + p4km;
780 const double mkpkm = p4kpkm.mass();
781
782 //Angular distribution
783 const EvtComplex H_fxks = 1.0;
784
785 //Barrier factors
786 const EvtComplex D_fxks = 1.0;
787
788 //Line shape
789 const EvtVector4R p4kp_kpkm = Boost(p4kp, p4kpkm);
790 const double q0_fx = q(fx_m, p4kp.mass(), p4km.mass());
791 const EvtComplex L_fxks =
792 BreitWigner(mkpkm, fx_m, fx_w, p4kp_kpkm.d3mag(), q0_fx, 0);
793
794 //Amplitude
795 const EvtComplex A_fxks = D_fxks * H_fxks * L_fxks;
796
797 return A_fxks;
798 }

◆ A_kknr()

EvtComplex A_kknr ( const EvtVector4R & p4k1,
const EvtVector4R & p4k2,
const double & alpha_kk )

A_kknr is amplitude of kknr.

Definition at line 830 of file EvtB0toKsKK.cc.

833 {
834 const EvtVector4R p4kk = p4k1 + p4k2;
835 const double m2kk = p4kk.mass2();
836
837 const EvtComplex A_kknr = exp(-alpha_kk * m2kk);
838
839 return A_kknr;
840 }

◆ A_phiks()

EvtComplex A_phiks ( const EvtVector4R & p4ks,
const EvtVector4R & p4kp,
const EvtVector4R & p4km )

A_phiks is amplitude of phi.

Definition at line 695 of file EvtB0toKsKK.cc.

698 {
699 static EvtId phi = EvtPDL::getId("phi");
700
701 const double phi_m = EvtPDL::getMeanMass(phi);
702 const double phi_w = EvtPDL::getWidth(phi);
703
704 const EvtVector4R p4kpkm = p4kp + p4km;
705 const double mkpkm = p4kpkm.mass();
706
707 //Angular distribution
708 const EvtVector4R S_mu = Smu(p4kp, p4km, p4ks);
709 const EvtVector4R L_mu = Lmu(p4kp, p4km, p4ks);
710
711 const EvtTensor4C g_munu_tilde = gmunu_tilde(p4kp, p4km, p4ks);
712 const EvtTensor4C g__munu_tilde = RaiseIndices(g_munu_tilde);
713
714 EvtComplex H_phiks = 0.0;
715 for (unsigned int i = 0; i < 4; i++)
716 for (unsigned int j = 0; j < 4; j++)
717 H_phiks += g__munu_tilde.get(i, j) * S_mu.get(i) * L_mu.get(j);
718
719 //Barrier factors
720 const EvtVector4R p4kp_kpkm = Boost(p4kp, p4kpkm);
721
722 const EvtComplex D_phiks = BWBF(p4kp_kpkm.d3mag(), 1);
723
724 //Line shape
725 const double q0_phi = q(phi_m, p4kp.mass(), p4km.mass());
726 const EvtComplex L_phiks =
727 BreitWigner(mkpkm, phi_m, phi_w, p4kp_kpkm.d3mag(), q0_phi, 1);
728
729 //Amplitude
730 const EvtComplex A_phiks = D_phiks * H_phiks * L_phiks;
731
733 /*const EvtVector4R p4ks_kpkm = Boost(p4ks, p4kpkm);
734 const double p4ks_kpkm_alt = p(mkpkm, (p4ks+p4kp+p4km).mass(), p4ks.mass());
735 const double p4kp_kpkm_alt = q(mkpkm, p4kp.mass(), p4km.mass());
736 //std::cout << p4ks_kpkm.d3mag() << std::endl;
737 //std::cout << p4ks_kpkm_alt << std::endl;
738 //std::cout << p4kp_kpkm.d3mag() << std::endl;
739 //std::cout << p4kp_kpkm_alt << std::endl;
740 const double costheta =
741 p4ks_kpkm.dot(p4kp_kpkm)/p4ks_kpkm.d3mag()/p4kp_kpkm.d3mag();
742 //const double z = p4ks_kpkm.d3mag()/(p4ks+p4kp+p4km).mass();
743 //const double H_phiks_alt = -sqrt(1.0+(z*z))*costheta;
744 const double sp_min =
745 s13_min( mkpkm*mkpkm, (p4ks+p4kp+p4km).mass(),
746 p4kp.mass(), p4km.mass(), p4ks.mass() );
747 const double sp_max =
748 s13_max( mkpkm*mkpkm, (p4ks+p4kp+p4km).mass(),
749 p4kp.mass(), p4km.mass(), p4ks.mass() );
750 const double sp = (p4ks+p4kp).mass2();
751 const double costheta_alt = (sp_max + sp_min - (2.0*sp))/(sp_max - sp_min);
752 //std::cout << costheta << std::endl;
753 //std::cout << costheta_alt << std::endl;
754 //exit(1);
755 const double z_alt = p4ks_kpkm_alt/(p4ks+p4kp+p4km).mass();
756 const double H_phiks_alt = -sqrt(1.0+(z_alt*z_alt))*costheta_alt;
757 //std::cout << H_phiks << std::endl;
758 //std::cout << H_phiks_alt << std::endl;
759 if( real(H_phiks) != H_phiks_alt )
760 {
761 std::cout << H_phiks << std::endl;
762 std::cout << H_phiks_alt << std::endl;
763 }
764 const EvtComplex A_phiks = D_phiks*H_phiks_alt*L_phiks;*/
766
767 return A_phiks;
768 }

◆ adjustCovMatrix()

TMatrixDSym adjustCovMatrix ( TMatrixDSym cov) const
private

adjust smearing covariance matrix based on the generation flags

Definition at line 38 of file InitialParticleGeneration.cc.

39 {
40 // no smearing
41 if (!m_beamParams->hasGenerationFlags(BeamParameters::c_smearBeam))
42 return TMatrixDSym(3);
43
44 // don't smear energy
45 if (!m_beamParams->hasGenerationFlags(BeamParameters::c_smearBeamEnergy)) {
46 for (int i = 0; i < 3; ++i)
47 cov(i, 0) = cov(0, i) = 0;
48 }
49
50 // don't smear angles
51 if (!m_beamParams->hasGenerationFlags(BeamParameters::c_smearBeamDirection)) {
52 for (int i = 1; i < 3; ++i)
53 for (int j = 1; j < 3; ++j)
54 cov(i, j) = cov(j, i) = 0;
55 }
56
57 return cov;
58
59 }

◆ Amp()

std::complex< double > Amp ( std::vector< double > Pip1,
std::vector< double > Pim1,
std::vector< double > Pip2,
std::vector< double > Pim2 )
private

Definition at line 1543 of file EvtD0Topippim2pi0.cc.

1545 {
1546
1547 auto PipPim = sum_tensor(Pip, Pim);
1548 auto PipPi01 = sum_tensor(Pip, Pi01);
1549 auto PipPi02 = sum_tensor(Pip, Pi02);
1550 auto PimPi01 = sum_tensor(Pim, Pi01);
1551 auto PimPi02 = sum_tensor(Pim, Pi02);
1552 auto Pi01Pi02 = sum_tensor(Pi01, Pi02);
1553
1554 auto PipPimPi01 = sum_tensor(PipPim, Pi01);
1555 auto PipPimPi02 = sum_tensor(PipPim, Pi02);
1556 auto PipPi01Pi02 = sum_tensor(PipPi01, Pi02);
1557 auto PimPi01Pi02 = sum_tensor(PimPi01, Pi02);
1558
1559 auto D0 = sum_tensor(PipPimPi01, Pi02);
1560
1561 double M2_PipPim = contract_11_0(PipPim, PipPim);
1562 double M2_PipPi01 = contract_11_0(PipPi01, PipPi01);
1563 double M2_PipPi02 = contract_11_0(PipPi02, PipPi02);
1564 double M2_PimPi01 = contract_11_0(PimPi01, PimPi01);
1565 double M2_PimPi02 = contract_11_0(PimPi02, PimPi02);
1566 double M2_Pi01Pi02 = contract_11_0(Pi01Pi02, Pi01Pi02);
1567
1568 double M2_PipPimPi01 = contract_11_0(PipPimPi01, PipPimPi01);
1569 double M2_PipPimPi02 = contract_11_0(PipPimPi02, PipPimPi02);
1570 double M2_PipPi01Pi02 = contract_11_0(PipPi01Pi02, PipPi01Pi02);
1571 double M2_PimPi01Pi02 = contract_11_0(PimPi01Pi02, PimPi01Pi02);
1572
1573 std::complex<double> GS_rho770_pm = GS(M2_PipPim, m0_rho7700, w0_rho7700, m2_Pi, m2_Pi, rRes, 1);
1574 std::complex<double> GS_rho770_p1 = GS(M2_PipPi01, m0_rho770p, w0_rho770p, m2_Pi, m2_Pi0, rRes, 1);
1575 std::complex<double> GS_rho770_p2 = GS(M2_PipPi02, m0_rho770p, w0_rho770p, m2_Pi, m2_Pi0, rRes, 1);
1576 std::complex<double> GS_rho770_m1 = GS(M2_PimPi01, m0_rho770p, w0_rho770p, m2_Pi, m2_Pi0, rRes, 1);
1577 std::complex<double> GS_rho770_m2 = GS(M2_PimPi02, m0_rho770p, w0_rho770p, m2_Pi, m2_Pi0, rRes, 1);
1578 std::complex<double> GS_rho1450_m1 = GS(M2_PimPi01, m0_rho1450, w0_rho1450, m2_Pi, m2_Pi0, rRes, 1);
1579 std::complex<double> GS_rho1450_m2 = GS(M2_PimPi02, m0_rho1450, w0_rho1450, m2_Pi, m2_Pi0, rRes, 1);
1580
1581 std::complex<double> FT_f0980_00 = Flatte(M2_Pi01Pi02, m0_f0980, g1_f0980, g2_f0980, m_Pi, m_Pi, m_Ka, m_Ka);
1582 std::complex<double> RBW_f21270_pm = RBW(M2_PipPim, m0_f21270, w0_f21270, m2_Pi, m2_Pi, rRes, 2);
1583 std::complex<double> RBW_f21270_00 = RBW(M2_Pi01Pi02, m0_f21270, w0_f21270, m2_Pi0, m2_Pi0, rRes, 2);
1584
1585 std::complex<double> PiPiS_pm_0 = Fvector(M2_PipPim, s0_prod, 0);
1586 std::complex<double> PiPiS_00_0 = Fvector(M2_Pi01Pi02, s0_prod, 0);
1587
1588 std::complex<double> PiPiS_pm_1 = Fvector(M2_PipPim, s0_prod, 1);
1589 std::complex<double> PiPiS_00_1 = Fvector(M2_Pi01Pi02, s0_prod, 1);
1590
1591 std::complex<double> PiPiS_pm_5 = Fvector(M2_PipPim, s0_prod, 5);
1592 std::complex<double> PiPiS_00_5 = Fvector(M2_Pi01Pi02, s0_prod, 5);
1593
1594 std::complex<double> PiPiS_pm_6 = Fvector(M2_PipPim, s0_prod, 6);
1595 std::complex<double> PiPiS_00_6 = Fvector(M2_Pi01Pi02, s0_prod, 6);
1596
1597 std::complex<double> RBW_a11260_p = RBWa1260(M2_PipPi01Pi02, m0_a11260, g1_a11260, g2_a11260);
1598 std::complex<double> RBW_a11260_m = RBWa1260(M2_PimPi01Pi02, m0_a11260, g1_a11260, g2_a11260);
1599 std::complex<double> RBW_a11260_01 = RBWa1260(M2_PipPimPi01, m0_a11260, g1_a11260, g2_a11260);
1600 std::complex<double> RBW_a11260_02 = RBWa1260(M2_PipPimPi02, m0_a11260, g1_a11260, g2_a11260);
1601
1602 std::complex<double> RBW_a11420_p = RBW(M2_PipPi01Pi02, m0_a11420, w0_a11420, -1, -1, -1, -1);
1603
1604 std::complex<double> RBW_a11640_p = RBWa1640(M2_PipPi01Pi02, m0_a11640, w0_a11640);
1605 std::complex<double> RBW_a11640_m = RBWa1640(M2_PimPi01Pi02, m0_a11640, w0_a11640);
1606
1607 std::complex<double> RBW_omega_01 = RBW(M2_PipPimPi01, m0_omega, w0_omega, -1, -1, -1, -1);
1608 std::complex<double> RBW_omega_02 = RBW(M2_PipPimPi02, m0_omega, w0_omega, -1, -1, -1, -1);
1609
1610 std::complex<double> RBW_phi_01 = RBW(M2_PipPimPi01, m0_phi, w0_phi, -1, -1, -1, -1);
1611 std::complex<double> RBW_phi_02 = RBW(M2_PipPimPi02, m0_phi, w0_phi, -1, -1, -1, -1);
1612
1613 std::complex<double> RBW_a21320_p = RBW(M2_PipPi01Pi02, m0_a21320, w0_a21320, -1, -1, -1, -1);
1614 std::complex<double> RBW_a21320_m = RBW(M2_PimPi01Pi02, m0_a21320, w0_a21320, -1, -1, -1, -1);
1615
1616 std::complex<double> RBW_pi1300_p = RBWpi1300(M2_PipPi01Pi02, m0_pi1300, w0_pi1300);
1617 std::complex<double> RBW_pi1300_m = RBWpi1300(M2_PimPi01Pi02, m0_pi1300, w0_pi1300);
1618 std::complex<double> RBW_pi1300_01 = RBWpi1300(M2_PipPimPi01, m0_pi1300, w0_pi1300);
1619 std::complex<double> RBW_pi1300_02 = RBWpi1300(M2_PipPimPi02, m0_pi1300, w0_pi1300);
1620
1621 std::complex<double> RBW_h11170_01 = RBWh11170(M2_PipPimPi01, m0_h11170, w0_h11170);
1622 std::complex<double> RBW_h11170_02 = RBWh11170(M2_PipPimPi02, m0_h11170, w0_h11170);
1623
1624 std::complex<double> RBW_pi21670_01 = RBW(M2_PipPimPi01, m0_pi21670, w0_pi21670, -1, -1, -1, -1);
1625 std::complex<double> RBW_pi21670_02 = RBW(M2_PipPimPi02, m0_pi21670, w0_pi21670, -1, -1, -1, -1);
1626
1627 // D->XX Projection
1628 auto Proj1_3p = ProjectionTensors(PipPi01Pi02, 1);
1629 auto Proj1_3m = ProjectionTensors(PimPi01Pi02, 1);
1630 auto Proj1_3z1 = ProjectionTensors(PipPimPi01, 1);
1631 auto Proj1_3z2 = ProjectionTensors(PipPimPi02, 1);
1632
1633 auto Proj2_3p = ProjectionTensors(PipPi01Pi02, 2);
1634 auto Proj2_3m = ProjectionTensors(PimPi01Pi02, 2);
1635 auto Proj2_3z1 = ProjectionTensors(PipPimPi01, 2);
1636 auto Proj2_3z2 = ProjectionTensors(PipPimPi02, 2);
1637
1638 // X->PP Orbital
1639 auto T1_PipPim = OrbitalTensors(PipPim, Pip, Pim, rRes, 1);
1640 auto T1_PipPi01 = OrbitalTensors(PipPi01, Pip, Pi01, rRes, 1);
1641 auto T1_PipPi02 = OrbitalTensors(PipPi02, Pip, Pi02, rRes, 1);
1642 auto T1_PimPi01 = OrbitalTensors(PimPi01, Pim, Pi01, rRes, 1);
1643 auto T1_PimPi02 = OrbitalTensors(PimPi02, Pim, Pi02, rRes, 1);
1644 auto T1_Pi01Pi02 = OrbitalTensors(Pi01Pi02, Pi01, Pi02, rRes, 1);
1645
1646 std::vector<double> T2_PipPim;
1647 std::vector<double> T2_Pi01Pi02;
1648
1649 T2_PipPim = OrbitalTensors(PipPim, Pip, Pim, rRes, 2);
1650 T2_Pi01Pi02 = OrbitalTensors(Pi01Pi02, Pi01, Pi02, rRes, 2);
1651
1652 // X->YP Orbital
1653 auto T1_PipPimPi01 = OrbitalTensors(PipPimPi01, PipPim, Pi01, rRes, 1);
1654 auto T1_PipPimPi02 = OrbitalTensors(PipPimPi02, PipPim, Pi02, rRes, 1);
1655 auto T1_PipPi01Pi02 = OrbitalTensors(PipPi01Pi02, PipPi01, Pi02, rRes, 1);
1656 auto T1_PipPi02Pi01 = OrbitalTensors(PipPi01Pi02, PipPi02, Pi01, rRes, 1);
1657 auto T1_PimPi01Pi02 = OrbitalTensors(PimPi01Pi02, PimPi01, Pi02, rRes, 1);
1658 auto T1_PimPi02Pi01 = OrbitalTensors(PimPi01Pi02, PimPi02, Pi01, rRes, 1);
1659 auto T1_PipPi01Pim = OrbitalTensors(PipPimPi01, PipPi01, Pim, rRes, 1);
1660 auto T1_PipPi02Pim = OrbitalTensors(PipPimPi02, PipPi02, Pim, rRes, 1);
1661 auto T1_PimPi01Pip = OrbitalTensors(PipPimPi01, PimPi01, Pip, rRes, 1);
1662 auto T1_PimPi02Pip = OrbitalTensors(PipPimPi02, PimPi02, Pip, rRes, 1);
1663 auto T1_Pi01Pi02Pip = OrbitalTensors(PipPi01Pi02, Pi01Pi02, Pip, rRes, 1);
1664 auto T1_Pi01Pi02Pim = OrbitalTensors(PimPi01Pi02, Pi01Pi02, Pim, rRes, 1);
1665
1666 auto T2_PipPimPi01 = OrbitalTensors(PipPimPi01, PipPim, Pi01, rRes, 2);
1667 auto T2_PipPimPi02 = OrbitalTensors(PipPimPi02, PipPim, Pi02, rRes, 2);
1668 auto T2_PipPi01Pi02 = OrbitalTensors(PipPi01Pi02, PipPi01, Pi02, rRes, 2);
1669 auto T2_PipPi02Pi01 = OrbitalTensors(PipPi01Pi02, PipPi02, Pi01, rRes, 2);
1670 auto T2_PimPi01Pi02 = OrbitalTensors(PimPi01Pi02, PimPi01, Pi02, rRes, 2);
1671 auto T2_PimPi02Pi01 = OrbitalTensors(PimPi01Pi02, PimPi02, Pi01, rRes, 2);
1672 auto T2_PipPi01Pim = OrbitalTensors(PipPimPi01, PipPi01, Pim, rRes, 2);
1673 auto T2_PipPi02Pim = OrbitalTensors(PipPimPi02, PipPi02, Pim, rRes, 2);
1674 auto T2_PimPi01Pip = OrbitalTensors(PipPimPi01, PimPi01, Pip, rRes, 2);
1675 auto T2_PimPi02Pip = OrbitalTensors(PipPimPi02, PimPi02, Pip, rRes, 2);
1676 auto T2_Pi01Pi02Pip = OrbitalTensors(PipPi01Pi02, Pi01Pi02, Pip, rRes, 2);
1677 auto T2_Pi01Pi02Pim = OrbitalTensors(PimPi01Pi02, Pi01Pi02, Pim, rRes, 2);
1678
1679 // D->XX Orbital
1680 auto T1_2pm12 = OrbitalTensors(D0, PipPim, Pi01Pi02, rD, 1);
1681 auto T1_2p1m2 = OrbitalTensors(D0, PipPi01, PimPi02, rD, 1);
1682 auto T1_2p2m1 = OrbitalTensors(D0, PipPi02, PimPi01, rD, 1);
1683
1684 auto T2_2pm12 = OrbitalTensors(D0, PipPim, Pi01Pi02, rD, 2);
1685 auto T2_2p1m2 = OrbitalTensors(D0, PipPi01, PimPi02, rD, 2);
1686 auto T2_2p2m1 = OrbitalTensors(D0, PipPi02, PimPi01, rD, 2);
1687
1688 // D->XP Orbital
1689 auto T1_3pm = OrbitalTensors(D0, PipPi01Pi02, Pim, rD, 1);
1690 auto T1_3mp = OrbitalTensors(D0, PimPi01Pi02, Pip, rD, 1);
1691 auto T1_3z12 = OrbitalTensors(D0, PipPimPi01, Pi02, rD, 1);
1692 auto T1_3z21 = OrbitalTensors(D0, PipPimPi02, Pi01, rD, 1);
1693
1694 auto T2_3pm = OrbitalTensors(D0, PipPi01Pi02, Pim, rD, 2);
1695 auto T2_3mp = OrbitalTensors(D0, PimPi01Pi02, Pip, rD, 2);
1696 auto T2_3z12 = OrbitalTensors(D0, PipPimPi01, Pi02, rD, 2);
1697 auto T2_3z21 = OrbitalTensors(D0, PipPimPi02, Pi01, rD, 2);
1698
1699 std::complex<double> amplitude(0, 0);
1700
1701 // D0 -> a1(1260)+ {rho(770)+ pi0[S]} pi-
1702 double SF_Ap_S_Vp1P = contract_11_0(contract_21_1(Proj1_3p, T1_PipPi01), T1_3pm);
1703 double SF_Ap_S_Vp2P = contract_11_0(contract_21_1(Proj1_3p, T1_PipPi02), T1_3pm);
1704
1705 amplitude += fitpara[0] * (SF_Ap_S_Vp1P * RBW_a11260_p * GS_rho770_p1 + SF_Ap_S_Vp2P * RBW_a11260_p * GS_rho770_p2);
1706
1707 // D0 -> a1(1260)+ {rho(770)+ pi0[D]} pi-
1708 double SF_Ap_D_Vp1P = contract_11_0(contract_21_1(T2_PipPi01Pi02, T1_PipPi01), T1_3pm);
1709 double SF_Ap_D_Vp2P = contract_11_0(contract_21_1(T2_PipPi02Pi01, T1_PipPi02), T1_3pm);
1710
1711 amplitude += fitpara[1] * (SF_Ap_D_Vp1P * RBW_a11260_p * GS_rho770_p1 + SF_Ap_D_Vp2P * RBW_a11260_p * GS_rho770_p2);
1712
1713 // D0 -> a1(1260)+ {f2(1270) pi+ [P]} pi-
1714 double SF_Ap_P_TP = contract_11_0(contract_21_1(contract_42_2(Proj2_3p, T2_Pi01Pi02), T1_Pi01Pi02Pip), T1_3pm);
1715
1716 amplitude += fitpara[2] * (SF_Ap_P_TP * RBW_a11260_p * RBW_f21270_00);
1717
1718 // D0 -> a1(1260)+ {f0 pi+ [P]} pi-
1719 double SF_Ap_P_SP = contract_11_0(T1_3pm, T1_Pi01Pi02Pip);
1720
1721 amplitude += fitpara[3] * (SF_Ap_P_SP * RBW_a11260_p * PiPiS_00_0);
1722 amplitude += fitpara[4] * (SF_Ap_P_SP * RBW_a11260_p * PiPiS_00_5);
1723 amplitude += fitpara[5] * (SF_Ap_P_SP * RBW_a11260_p * PiPiS_00_6);
1724
1725 // D0 -> a1(1260)- { rho(770)- pi0 [S]} pi+
1726 double SF_Am_S_Vm1P = contract_11_0(contract_21_1(Proj1_3m, T1_PimPi01), T1_3mp);
1727 double SF_Am_S_Vm2P = contract_11_0(contract_21_1(Proj1_3m, T1_PimPi02), T1_3mp);
1728
1729 amplitude += fitpara[6] * fitpara[0] * (SF_Am_S_Vm1P * RBW_a11260_m * GS_rho770_m1 + SF_Am_S_Vm2P * RBW_a11260_m * GS_rho770_m2);
1730
1731 // D0 -> a1(1260)- {rho(770)- pi0[D]} pi+
1732 double SF_Am_D_Vm1P = contract_11_0(contract_21_1(T2_PimPi01Pi02, T1_PimPi01), T1_3mp);
1733 double SF_Am_D_Vm2P = contract_11_0(contract_21_1(T2_PimPi02Pi01, T1_PimPi02), T1_3mp);
1734
1735 amplitude += fitpara[6] * fitpara[1] * (SF_Am_D_Vm1P * RBW_a11260_m * GS_rho770_m1 + SF_Am_D_Vm2P * RBW_a11260_m * GS_rho770_m2);
1736
1737 // D0 -> a1(1260)- {f2(1270) pi- [P]} pi+
1738 double SF_Am_P_TP = contract_11_0(contract_21_1(contract_42_2(Proj2_3m, T2_Pi01Pi02), T1_Pi01Pi02Pim), T1_3mp);
1739
1740 amplitude += fitpara[6] * fitpara[2] * (SF_Am_P_TP * RBW_a11260_m * RBW_f21270_00);
1741
1742 // D0 -> a1(1260)- {f0 pi- [P]} pi+
1743 double SF_Am_P_SP = contract_11_0(T1_3mp, T1_Pi01Pi02Pim);
1744
1745 amplitude += fitpara[6] * fitpara[3] * (SF_Am_P_SP * RBW_a11260_m * PiPiS_00_0);
1746 amplitude += fitpara[6] * fitpara[4] * (SF_Am_P_SP * RBW_a11260_m * PiPiS_00_5);
1747 amplitude += fitpara[6] * fitpara[5] * (SF_Am_P_SP * RBW_a11260_m * PiPiS_00_6);
1748
1749 // D -> a1(1260)0 pi0
1750 double SF_A01_S_Vp1P = contract_11_0(contract_21_1(Proj1_3z1, T1_PipPi01), T1_3z12);
1751 double SF_A02_S_Vp2P = contract_11_0(contract_21_1(Proj1_3z2, T1_PipPi02), T1_3z21);
1752 double SF_A01_S_Vm1P = contract_11_0(contract_21_1(Proj1_3z1, T1_PimPi01), T1_3z12);
1753 double SF_A02_S_Vm2P = contract_11_0(contract_21_1(Proj1_3z2, T1_PimPi02), T1_3z21);
1754 double SF_A01_S_VzP = contract_11_0(contract_21_1(Proj1_3z1, T1_PipPim), T1_3z12);
1755 double SF_A02_S_VzP = contract_11_0(contract_21_1(Proj1_3z2, T1_PipPim), T1_3z21);
1756
1757 amplitude += fitpara[7] * fitpara[0] * (SF_A01_S_Vp1P * RBW_a11260_01 * GS_rho770_p1 + SF_A02_S_Vp2P * RBW_a11260_02 * GS_rho770_p2
1758 + SF_A01_S_Vm1P * RBW_a11260_01 * GS_rho770_m1 + SF_A02_S_Vm2P * RBW_a11260_02 * GS_rho770_m2);
1759
1760 double SF_A01_D_Vp1P = contract_11_0(contract_21_1(T2_PipPi01Pim, T1_PipPi01), T1_3z12);
1761 double SF_A02_D_Vp2P = contract_11_0(contract_21_1(T2_PipPi02Pim, T1_PipPi02), T1_3z21);
1762 double SF_A01_D_Vm1P = contract_11_0(contract_21_1(T2_PimPi01Pip, T1_PimPi01), T1_3z12);
1763 double SF_A02_D_Vm2P = contract_11_0(contract_21_1(T2_PimPi02Pip, T1_PimPi02), T1_3z21);
1764
1765 amplitude += fitpara[7] * fitpara[1] * (SF_A01_D_Vp1P * RBW_a11260_01 * GS_rho770_p1 + SF_A02_D_Vp2P * RBW_a11260_02 * GS_rho770_p2
1766 + SF_A01_D_Vm1P * RBW_a11260_01 * GS_rho770_m1 + SF_A02_D_Vm2P * RBW_a11260_02 * GS_rho770_m2);
1767
1768 double SF_A01_P_TP = contract_11_0(contract_21_1(contract_42_2(Proj2_3z1, T2_PipPim), T1_PipPimPi01), T1_3z12);
1769 double SF_A02_P_TP = contract_11_0(contract_21_1(contract_42_2(Proj2_3z2, T2_PipPim), T1_PipPimPi02), T1_3z21);
1770
1771 amplitude += fitpara[7] * fitpara[2] * (-1.0) * (SF_A01_P_TP * RBW_a11260_01 * RBW_f21270_pm + SF_A02_P_TP * RBW_a11260_02 *
1772 RBW_f21270_pm);
1773
1774 double SF_A01_P_SP = contract_11_0(T1_3z12, T1_PipPimPi01);
1775 double SF_A02_P_SP = contract_11_0(T1_3z21, T1_PipPimPi02);
1776
1777 amplitude += fitpara[7] * fitpara[3] * (-1.0) * (SF_A01_P_SP * RBW_a11260_01 * PiPiS_pm_0 + SF_A02_P_SP * RBW_a11260_02 *
1778 PiPiS_pm_0);
1779 amplitude += fitpara[7] * fitpara[4] * (-1.0) * (SF_A01_P_SP * RBW_a11260_01 * PiPiS_pm_5 + SF_A02_P_SP * RBW_a11260_02 *
1780 PiPiS_pm_5);
1781 amplitude += fitpara[7] * fitpara[5] * (-1.0) * (SF_A01_P_SP * RBW_a11260_01 * PiPiS_pm_6 + SF_A02_P_SP * RBW_a11260_02 *
1782 PiPiS_pm_6);
1783
1784 // D0 -> a1(1420)+ {f0 pi0+[S]} pi-
1785 amplitude += fitpara[8] * (SF_Ap_P_SP * RBW_a11420_p * FT_f0980_00);
1786
1787 // D0 -> a1(1640)+ {rho pi[S]} pi-
1788 amplitude += fitpara[9] * (SF_Ap_S_Vp1P * RBW_a11640_p * GS_rho770_p1 + SF_Ap_S_Vp2P * RBW_a11640_p * GS_rho770_p2);
1789
1790 // D0 -> a1(1640)- {rho pi[S]} pi+
1791 amplitude += fitpara[10] * (SF_Am_S_Vm1P * RBW_a11640_m * GS_rho770_m1 + SF_Am_S_Vm2P * RBW_a11640_m * GS_rho770_m2);
1792
1793 // D0 -> a2(1320)+ {rho+ pi0} pi-
1794 double SF_Tp_D_Vp1P = contract_22_0(contract_22_2(contract_31_2(contract_41_3(epsilon_uvmn, contract_21_1(Proj1_3p, T1_PipPi01)),
1795 PipPi01Pi02), contract_42_2(Proj2_3p, T2_3pm)), T2_PipPi01Pi02);
1796 double SF_Tp_D_Vp2P = contract_22_0(contract_22_2(contract_31_2(contract_41_3(epsilon_uvmn, contract_21_1(Proj1_3p, T1_PipPi02)),
1797 PipPi01Pi02), contract_42_2(Proj2_3p, T2_3pm)), T2_PipPi02Pi01);
1798
1799 amplitude += fitpara[11] * (SF_Tp_D_Vp1P * GS_rho770_p1 * RBW_a21320_p + SF_Tp_D_Vp2P * GS_rho770_p2 * RBW_a21320_p);
1800
1801 // D0 -> a2(1320)- {rho- pi0} pi+
1802 double SF_Tm_D_Vm1P = contract_22_0(contract_22_2(contract_31_2(contract_41_3(epsilon_uvmn, contract_21_1(Proj1_3m, T1_PimPi01)),
1803 PimPi01Pi02), contract_42_2(Proj2_3m, T2_3mp)), T2_PimPi01Pi02);
1804 double SF_Tm_D_Vm2P = contract_22_0(contract_22_2(contract_31_2(contract_41_3(epsilon_uvmn, contract_21_1(Proj1_3m, T1_PimPi02)),
1805 PimPi01Pi02), contract_42_2(Proj2_3m, T2_3mp)), T2_PimPi02Pi01);
1806 amplitude += fitpara[12] * (SF_Tm_D_Vm1P * GS_rho770_m1 * RBW_a21320_m + SF_Tm_D_Vm2P * GS_rho770_m2 * RBW_a21320_m);
1807
1808 // D0 -> h1(1170)0 {rho pi0} pi0
1809 amplitude += fitpara[13] * (SF_A01_S_Vp1P * RBW_h11170_01 * GS_rho770_p1 + SF_A02_S_Vp2P * RBW_h11170_02 * GS_rho770_p2 -
1810 SF_A01_S_Vm1P * RBW_h11170_01 * GS_rho770_m1 - SF_A02_S_Vm2P * RBW_h11170_02 * GS_rho770_m2 - SF_A01_S_VzP * RBW_h11170_01 *
1811 GS_rho770_pm - SF_A02_S_VzP * RBW_h11170_02 * GS_rho770_pm);
1812
1813 // D0 -> pi(1300)- {rho(770)- pi0} pi+
1814 double SF_Pm_P_Vm1P = contract_11_0(T1_PimPi01, T1_PimPi01Pi02);
1815 double SF_Pm_P_Vm2P = contract_11_0(T1_PimPi02, T1_PimPi02Pi01);
1816
1817 amplitude += fitpara[14] * (SF_Pm_P_Vm1P * GS_rho770_m1 * RBW_pi1300_m + SF_Pm_P_Vm2P * GS_rho770_m2 * RBW_pi1300_m);
1818
1819 // D0 -> pi(1300)- {f2 pi-} pi+
1820// double SF_Pm_D_TP = contract_22_0(T2_Pi01Pi02,T2_Pi01Pi02Pim);
1821// amplitude += fitpara[14]*fitpara[13]*(SF_Pm_D_TP*RBW_f21270_00*RBW_pi1300_m);
1822
1823 // D0 -> pi(1300)- {f0 pi-} pi+
1824 amplitude += fitpara[15] * fitpara[14] * (RBW_pi1300_m * PiPiS_00_0);
1825// amplitude += fitpara[15]*fitpara[13]*(RBW_pi1300_m*PiPiS_00_5);
1826 amplitude += fitpara[16] * fitpara[14] * (RBW_pi1300_m * PiPiS_00_6);
1827
1828 // D0 -> pi(1300)+ {rho(770)+ pi0} pi-
1829 double SF_Pp_P_Vp1P = contract_11_0(T1_PipPi01, T1_PipPi01Pi02);
1830 double SF_Pp_P_Vp2P = contract_11_0(T1_PipPi02, T1_PipPi02Pi01);
1831
1832 amplitude += fitpara[17] * (SF_Pp_P_Vp1P * GS_rho770_p1 * RBW_pi1300_p + SF_Pp_P_Vp2P * GS_rho770_p2 * RBW_pi1300_p);
1833
1834 // D0 -> pi(1300)+ {f2 pi-} pi+
1835// double SF_Pp_D_TP = contract_22_0(T2_Pi01Pi02,T2_Pi01Pi02Pip);
1836// amplitude += fitpara[14]*fitpara[17]*(SF_Pp_D_TP*RBW_f21270_00*RBW_pi1300_p);
1837
1838 // D0 -> pi(1300)+ {f0 pi+} pi-
1839 amplitude += fitpara[15] * fitpara[17] * (RBW_pi1300_p * PiPiS_00_0);
1840// amplitude += fitpara[15]*fitpara[17]*(RBW_pi1300_p*PiPiS_00_5);
1841 amplitude += fitpara[16] * fitpara[17] * (RBW_pi1300_p * PiPiS_00_6);
1842
1843 // D0 -> pi(1300)0 {rho pi} pi0
1844 double SF_P01_P_Vp1P = contract_11_0(T1_PipPi01, T1_PipPi01Pim);
1845 double SF_P02_P_Vp2P = contract_11_0(T1_PipPi02, T1_PipPi02Pim);
1846 double SF_P01_P_Vm1P = contract_11_0(T1_PimPi01, T1_PimPi01Pip);
1847 double SF_P02_P_Vm2P = contract_11_0(T1_PimPi02, T1_PimPi02Pip);
1848
1849 amplitude += fitpara[18] * (SF_P01_P_Vp1P * RBW_pi1300_01 * GS_rho770_p1 + SF_P02_P_Vp2P * RBW_pi1300_02 * GS_rho770_p2 +
1850 SF_P01_P_Vm1P * RBW_pi1300_01 * GS_rho770_m1 + SF_P02_P_Vm2P * RBW_pi1300_02 * GS_rho770_m2);
1851
1852
1853// double SF_P01_D_TP = contract_22_0(T2_PipPim,T2_PipPimPi01);
1854// double SF_P02_D_TP = contract_22_0(T2_PipPim,T2_PipPimPi02);
1855// amplitude += fitpara[14]*fitpara[18]*(-1.0)*(SF_P01_D_TP*RBW_f21270_pm*RBW_pi1300_01 + SF_P02_D_TP*RBW_f21270_pm*RBW_pi1300_02);
1856
1857 amplitude += fitpara[15] * fitpara[18] * (-1.0) * (RBW_pi1300_01 * PiPiS_pm_0 + RBW_pi1300_02 * PiPiS_pm_0);
1858// amplitude += fitpara[15]*fitpara[18]*(-1.0)*(RBW_pi1300_01*PiPiS_pm_5 + RBW_pi1300_02*PiPiS_pm_5);
1859 amplitude += fitpara[16] * fitpara[18] * (-1.0) * (RBW_pi1300_01 * PiPiS_pm_6 + RBW_pi1300_02 * PiPiS_pm_6);
1860
1861 // D0 -> pi2(1670)0[f2(1270) pi0] pi0
1862 double SF_PT01_S_TP = contract_22_0(contract_42_2(Proj2_3z1, T2_PipPim), T2_3z12);
1863 double SF_PT02_S_TP = contract_22_0(contract_42_2(Proj2_3z2, T2_PipPim), T2_3z21);
1864
1865 amplitude += fitpara[19] * (-1.0) * (SF_PT01_S_TP * RBW_f21270_pm * RBW_pi21670_01 + SF_PT02_S_TP * RBW_f21270_pm * RBW_pi21670_02);
1866
1867 // D0 -> rho+ rho- [S]
1868 double SF_Vp1Vm2_S = contract_11_0(T1_PipPi01, T1_PimPi02);
1869 double SF_Vp2Vm1_S = contract_11_0(T1_PipPi02, T1_PimPi01);
1870
1871 amplitude += fitpara[20] * (SF_Vp1Vm2_S * GS_rho770_p1 * GS_rho770_m2 + SF_Vp2Vm1_S * GS_rho770_p2 * GS_rho770_m1);
1872
1873 // D0 -> rho+ rho- [P]
1874 double SF_Vp1Vm2_P = contract_11_0(contract_21_1(contract_31_2(contract_41_3(epsilon_uvmn, T1_PipPi01), T1_PimPi02), T1_2p1m2), D0);
1875 double SF_Vp2Vm1_P = contract_11_0(contract_21_1(contract_31_2(contract_41_3(epsilon_uvmn, T1_PipPi02), T1_PimPi01), T1_2p2m1), D0);
1876
1877 amplitude += fitpara[21] * (SF_Vp1Vm2_P * GS_rho770_p1 * GS_rho770_m2 + SF_Vp2Vm1_P * GS_rho770_p2 * GS_rho770_m1);
1878
1879 // D0 -> rho+ rho- [D]
1880 double SF_Vp1Vm2_D = contract_11_0(contract_21_1(T2_2p1m2, T1_PipPi01), T1_PimPi02);
1881 double SF_Vp2Vm1_D = contract_11_0(contract_21_1(T2_2p2m1, T1_PipPi02), T1_PimPi01);
1882 amplitude += fitpara[22] * (SF_Vp1Vm2_D * GS_rho770_p1 * GS_rho770_m2 + SF_Vp2Vm1_D * GS_rho770_p2 * GS_rho770_m1);
1883
1884 amplitude += fitpara[23] * (SF_Vp1Vm2_D * GS_rho770_p1 * GS_rho1450_m2 + SF_Vp2Vm1_D * GS_rho770_p2 * GS_rho1450_m1);
1885
1886 // D0 -> rho0 (Pi0 Pi0)S
1887 double SF_VpmS12_P = contract_11_0(T1_PipPim, T1_2pm12);
1888
1889 amplitude += fitpara[24] * (SF_VpmS12_P * GS_rho770_pm * PiPiS_00_0);
1890 amplitude += fitpara[25] * (SF_VpmS12_P * GS_rho770_pm * PiPiS_00_5);
1891 amplitude += fitpara[26] * (SF_VpmS12_P * GS_rho770_pm * PiPiS_00_6);
1892
1893 // D0 -> f0f0
1894 //00
1895 amplitude += fitpara[27] * (PiPiS_pm_0 * PiPiS_00_0 + PiPiS_00_0 * PiPiS_pm_0);
1896 amplitude += fitpara[28] * (PiPiS_pm_0 * PiPiS_00_1 + PiPiS_00_0 * PiPiS_pm_1);
1897 amplitude += fitpara[29] * (PiPiS_pm_1 * PiPiS_00_5 + PiPiS_00_1 * PiPiS_pm_5);
1898 amplitude += fitpara[30] * (PiPiS_pm_5 * PiPiS_00_5 + PiPiS_00_5 * PiPiS_pm_5);
1899 amplitude += fitpara[31] * (PiPiS_pm_5 * PiPiS_00_6 + PiPiS_00_5 * PiPiS_pm_6);
1900
1901 // D0 -> f2(1270) f0
1902 double SF_TpmS00_D = contract_22_0(T2_PipPim, T2_2pm12);
1903 double SF_T00Spm_D = contract_22_0(T2_Pi01Pi02, T2_2pm12);
1904
1905 amplitude += fitpara[32] * (SF_TpmS00_D * RBW_f21270_pm * PiPiS_00_5 + SF_T00Spm_D * RBW_f21270_00 * PiPiS_pm_5);
1906 amplitude += fitpara[33] * (SF_TpmS00_D * RBW_f21270_pm * PiPiS_00_6 + SF_T00Spm_D * RBW_f21270_00 * PiPiS_pm_6);
1907
1908
1909 // D -> 1--(rho pi) pi0
1910 double SF_V1_Vz = contract_11_0(contract_21_1(contract_31_2(contract_41_3(epsilon_uvmn, PipPimPi01), T1_PipPimPi01), T1_PipPim),
1911 contract_21_1(Proj1_3z1, T1_3z12));
1912 double SF_V1_Vp1 = contract_11_0(contract_21_1(contract_31_2(contract_41_3(epsilon_uvmn, PipPimPi01), T1_PipPi01Pim), T1_PipPi01),
1913 contract_21_1(Proj1_3z1, T1_3z12));
1914 double SF_V1_Vm1 = contract_11_0(contract_21_1(contract_31_2(contract_41_3(epsilon_uvmn, PipPimPi01), T1_PimPi01Pip), T1_PimPi01),
1915 contract_21_1(Proj1_3z1, T1_3z12));
1916
1917 double SF_V2_Vz = contract_11_0(contract_21_1(contract_31_2(contract_41_3(epsilon_uvmn, PipPimPi02), T1_PipPimPi02), T1_PipPim),
1918 contract_21_1(Proj1_3z2, T1_3z21));
1919 double SF_V2_Vp2 = contract_11_0(contract_21_1(contract_31_2(contract_41_3(epsilon_uvmn, PipPimPi02), T1_PipPi02Pim), T1_PipPi02),
1920 contract_21_1(Proj1_3z2, T1_3z21));
1921 double SF_V1_Vm2 = contract_11_0(contract_21_1(contract_31_2(contract_41_3(epsilon_uvmn, PipPimPi02), T1_PimPi02Pip), T1_PimPi02),
1922 contract_21_1(Proj1_3z2, T1_3z21));
1923
1924
1925 // D0 -> omega(rho pi) pi0
1926 amplitude += (-1.0) * fitpara[34] * (SF_V1_Vp1 * RBW_omega_01 * GS_rho770_p1 - SF_V1_Vz * RBW_omega_01 * GS_rho770_pm - SF_V1_Vm1 *
1927 RBW_omega_01 * GS_rho770_m1 + SF_V2_Vp2 * RBW_omega_02 * GS_rho770_p2 - SF_V2_Vz * RBW_omega_02 * GS_rho770_pm - SF_V1_Vm2 *
1928 RBW_omega_02 * GS_rho770_m2);
1929
1930
1931 // D0 -> phi(rho pi) pi0
1932 amplitude += (-1.0) * fitpara[35] * (SF_V1_Vp1 * RBW_phi_01 * GS_rho770_p1 - SF_V1_Vz * RBW_phi_01 * GS_rho770_pm - SF_V1_Vm1 *
1933 RBW_phi_01 * GS_rho770_m1 + SF_V2_Vp2 * RBW_phi_02 * GS_rho770_p2 - SF_V2_Vz * RBW_phi_02 * GS_rho770_pm - SF_V1_Vm2 * RBW_phi_02 *
1934 GS_rho770_m2);
1935
1936 return amplitude;
1937
1938 }

◆ AmplitudeSquare() [1/2]

double AmplitudeSquare ( int charm,
int tagmode )
private

Definition at line 1973 of file EvtD0Topippim2pi0.cc.

1974 {
1975
1976 EvtVector4R dp1 = GetDaugMomLab(0), dp2 = GetDaugMomLab(1), dp3 = GetDaugMomLab(2), dp4 = GetDaugMomLab(3); // pi+ pi- pi0 pi0
1977 EvtVector4R mp = dp1 + dp2 + dp3 + dp4;
1978
1979 double emp = mp.get(0);
1980 EvtVector3R boostp3(-mp.get(1) / emp, -mp.get(2) / emp, -mp.get(3) / emp);
1981
1982 EvtVector4R dp1bst = boostTo(dp1, boostp3);
1983 EvtVector4R dp2bst = boostTo(dp2, boostp3);
1984 EvtVector4R dp3bst = boostTo(dp3, boostp3);
1985 EvtVector4R dp4bst = boostTo(dp4, boostp3);
1986
1987 double p4pip[4], p4pim[4], p4pi01[4], p4pi02[4];
1988 for (int i = 0; i < 3; i++) {
1989 p4pip[i] = dp1bst.get(i + 1);
1990 p4pim[i] = dp2bst.get(i + 1);
1991 p4pi01[i] = dp3bst.get(i + 1);
1992 p4pi02[i] = dp4bst.get(i + 1);
1993 }
1994 p4pip[3] = dp1bst.get(0);
1995 p4pim[3] = dp2bst.get(0);
1996 p4pi01[3] = dp3bst.get(0);
1997 p4pi02[3] = dp4bst.get(0);
1998
1999 setInput(p4pip, p4pim, p4pi01, p4pi02);
2000 CalAmp();
2001 std::complex<double> ampD0, ampDb;
2002 if (Charm > 0) {
2003 ampD0 = Get_AmpD0();
2004 ampDb = Get_AmpDb();
2005 } else {
2006 ampD0 = Get_AmpDb();
2007 ampDb = Get_AmpD0();
2008 }
2009
2010 double ampsq = 1e-20;
2011 double r_tag = 0, R_tag = 0, delta_tag = 0;
2012
2013 if (Tagmode == 1 || Tagmode == 2 || Tagmode == 3) {
2014 if (Tagmode == 1) { // Kpi
2015 r_tag = 0.0586;
2016 R_tag = 1;
2017 delta_tag = 192.1 / 180.0 * 3.1415926;
2018 } else if (Tagmode == 2) { // Kpipi0
2019 r_tag = 0.0441;
2020 R_tag = 0.79;
2021 delta_tag = 196.0 / 180.0 * 3.1415926;
2022 } else if (Tagmode == 3) { // K3pi
2023 r_tag = 0.0550;
2024 R_tag = 0.44;
2025 delta_tag = 161.0 / 180.0 * 3.1415926;
2026 }
2027 std::complex<double> qcf(r_tag * R_tag * cos(-delta_tag), r_tag * R_tag * sin(-delta_tag));
2028 std::complex<double> ampD0_part1 = ampD0 - qcf * ampDb;
2029 ampsq = mag2(ampD0_part1) + r_tag * r_tag * (1 - R_tag * R_tag) * (mag2(ampDb));
2030 } else {
2031 ampsq = mag2(ampD0);
2032 }
2033 return (ampsq <= 0) ? 1e-20 : ampsq;
2034 }

◆ AmplitudeSquare() [2/2]

double AmplitudeSquare ( )
private

Definition at line 321 of file EvtDToKSKpi0.cc.

322 {
323 EvtVector4R dp1 = GetDaugMomLab(0);
324 EvtVector4R dp2 = GetDaugMomLab(1);
325 EvtVector4R dp3 = GetDaugMomLab(2);
326 _pd[0] = dp3;
327 _pd[1] = dp2;
328 _pd[2] = dp1;
329
330 const double K892pMass = 0.89176;
331 const double K892pWidth = 0.0503;
332
333 const double K892zeroMass = 0.89555;
334 const double K892zeroWidth = 0.0473;
335
336 const double SwaveKppi0Mass = 1.441;
337 const double SwaveKppi0Width = 0.193;
338
339 const double SwaveKspi0Mass = 1.441;
340 const double SwaveKspi0Width = 0.193;
341
342 EvtComplex temp(0.0, 0.0);
343
344 EvtComplex amp_K892p(1, 0);
345 EvtComplex amp_K892zero(-0.3903972065719, 0.1298035433874);
346 EvtComplex amp_SwaveKppi0(-1.543197997647, 1.30109134697);
347 EvtComplex amp_SwaveKspi0(-3.123793580183, -0.3449005761848);
348
349 temp += amp_K892p * (RBW(1, K892pMass, K892pWidth, 1));
350 temp += amp_K892zero * (RBW(2, K892zeroMass, K892zeroWidth, 1));
351 temp += amp_SwaveKppi0 * (LASS(1, SwaveKppi0Mass, SwaveKppi0Width));
352 temp += amp_SwaveKspi0 * (LASS(2, SwaveKspi0Mass, SwaveKspi0Width));
353
354 double ret = pow(abs(temp), 2);
355 return (ret <= 0) ? 1e-20 : ret;
356 }

◆ anywid1170()

double anywid1170 ( double sc)
private

Definition at line 971 of file EvtD0Topippim2pi0.cc.

972 {
973
974 double smin = (0.13957 * 3) * (0.13957 * 3);
975 double dh = 0.01;
976 int od = (sc - 0.18) / dh;
977 double sc_m = 0.18 + od * dh;
978 double widuse = 0;
979 if (sc >= 0.18 && sc <= 3.17) {
980 widuse = ((sc - sc_m) / dh) * (widT1170(od + 1) - widT1170(od)) + widT1170(od);
981 } else if (sc < 0.18 && sc > smin) {
982 widuse = ((sc - smin) / (0.18 - smin)) * widT1170(0);
983 } else if (sc > 3.17) {
984 widuse = widT1170(299);
985 } else {
986 widuse = 0;
987 }
988 return widuse;
989 }

◆ anywid1260()

double anywid1260 ( double sc,
double g1,
double g2 )
private

Definition at line 740 of file EvtD0Topippim2pi0.cc.

741 {
742
743 double smin = (0.13957 * 3) * (0.13957 * 3);
744 double dh = 0.01;
745 int od = (sc - 0.18) / dh;
746 double sc_m = 0.18 + od * dh;
747 double widuse = 0;
748 if (sc >= 0.18 && sc <= 3.17) {
749 widuse = ((sc - sc_m) / dh) * (widT1260(od + 1, g1, g2) - widT1260(od, g1, g2)) + widT1260(od, g1, g2);
750 } else if (sc < 0.18 && sc > smin) {
751 widuse = ((sc - smin) / (0.18 - smin)) * widT1260(0, g1, g2);
752 } else if (sc > 3.17) {
753 widuse = widT1260(299, g1, g2);
754 } else {
755 widuse = 0;
756 }
757 return widuse;
758
759 }

◆ anywid1300()

double anywid1300 ( double sc)
private

Definition at line 818 of file EvtD0Topippim2pi0.cc.

819 {
820
821 double smin = (0.13957 * 3) * (0.13957 * 3);
822 double dh = 0.01;
823 int od = (sc - 0.18) / dh;
824 double sc_m = 0.18 + od * dh;
825 double widuse = 0;
826 if (sc >= 0.18 && sc <= 3.17) {
827 widuse = ((sc - sc_m) / dh) * (widT1300(od + 1) - widT1300(od)) + widT1300(od);
828 } else if (sc < 0.18 && sc > smin) {
829 widuse = ((sc - smin) / (0.18 - smin)) * widT1300(0);
830 } else if (sc > 3.17) {
831 widuse = widT1300(299);
832 } else {
833 widuse = 0;
834 }
835 return widuse;
836 }

◆ anywid1640()

double anywid1640 ( double sc)
private

Definition at line 895 of file EvtD0Topippim2pi0.cc.

896 {
897
898 double smin = (0.13957 * 3) * (0.13957 * 3);
899 double dh = 0.01;
900 int od = (sc - 0.18) / dh;
901 double sc_m = 0.18 + od * dh;
902 double widuse = 0;
903 if (sc >= 0.18 && sc <= 3.17) {
904 widuse = ((sc - sc_m) / dh) * (widT1640(od + 1) - widT1640(od)) + widT1640(od);
905 } else if (sc < 0.18 && sc > smin) {
906 widuse = ((sc - smin) / (0.18 - smin)) * widT1640(0);
907 } else if (sc > 3.17) {
908 widuse = widT1640(299);
909 } else {
910 widuse = 0;
911 }
912 return widuse;
913 }

◆ arg()

double arg ( std::complex< double > x)
private

Definition at line 1955 of file EvtD0Topippim2pi0.cc.

1956 {
1957 double temp = atan(x.imag() / x.real());
1958 if (x.real() < 0) temp = temp + TMath::Pi();
1959 return temp;
1960 }

◆ atan() [1/2]

double atan ( double a)
inline

atan for double

Definition at line 34 of file beamHelpers.h.

34{ return std::atan(a); }

◆ atan() [2/2]

DualNumber atan ( DualNumber a)
inline

atan of dual number

Definition at line 121 of file beamHelpers.h.

122 {
123 return DualNumber(std::atan(a.x), 1. / (1 + a.x * a.x) * a.dx);
124 }
Simple structure implementing dual numbers which are used for exact evaluation of the derivatives,...
Definition beamHelpers.h:38

◆ Barrier()

double Barrier ( const double mass2,
const int l,
const double sa,
const double sb,
const double sc,
const double r2 )
private

Blatt-Weisskopf barrier factors.

Definition at line 816 of file EvtDToKSpipi0pi0.cc.

818 {
819 double F;
820 double tmp = sa + sb - sc;
821 double q = fabs(0.25 * tmp * tmp / sa - sb);
822 double tmp2 = mass2 + sb - sc;
823 double q0 = fabs(0.25 * tmp2 * tmp2 / mass2 - sb);
824 double z = q * r2;
825 double z0 = q0 * r2;
826 if (l == 1) {
827 F = sqrt((1.0 + z0) / (1.0 + z));
828 } else if (l == 2) {
829 double z2 = z * z; double z02 = z0 * z0;
830 F = sqrt((9.0 + 3.0 * z0 + z02) / (9.0 + 3.0 * z + z2));
831 } else {
832 F = 1.0;
833 }
834 return F;
835 }
double sqrt(double a)
sqrt for double
Definition beamHelpers.h:28

◆ barrier() [1/6]

double barrier ( const double l,
const double sa,
const double sb,
const double sc,
const double r ) const
private

Blatt-Weisskopf barrier factors.

Definition at line 717 of file EvtD0ToKpipipi.cc.

718 {
719 double q = Qabcs(sa, sb, sc);
720 q = sqrt(q);
721 double z = q * r;
722 z = z * z;
723 double F = 1;
724 if (l > 2) F = 0;
725 if (l == 0)
726 F = 1;
727 if (l == 1) {
728 F = sqrt((2 * z) / (1 + z));
729 }
730 if (l == 2) {
731 F = sqrt((13 * z * z) / (9 + 3 * z + z * z));
732 }
733 return F;
734 }

◆ barrier() [2/6]

double barrier ( double l,
double sa,
double sb,
double sc,
double r,
double mass )
private

Definition at line 257 of file EvtD0TopipiEta.cc.

258 {
259 double sa0 = mass * mass;
260 double q0 = Qabcs(sa0, sb, sc);
261 double z0 = q0 * r * r;
262 double q = Qabcs(sa, sb, sc);
263 q = sqrt(q);
264 double z = q * r;
265 z = z * z;
266 double F = 1;
267 if (l > 2) F = 0;
268 if (l == 0) F = 1;
269 if (l == 1) F = sqrt((1 + z0) / (1 + z));
270 if (l == 2) F = sqrt((9 + 3 * z0 + z0 * z0) / (9 + 3 * z + z * z));
271 return F;
272 }

◆ barrier() [3/6]

double barrier ( int l,
double sa,
double sb,
double sc,
double r )
private

Definition at line 328 of file EvtDsToKKpi.cc.

329 {
330 double q = (sa + sb - sc) * (sa + sb - sc) / (4 * sa) - sb;
331 if (q < 0) q = 1e-16;
332 double z;
333 z = q * r * r;
334 double F = 0.0;
335 if (l == 0) F = 1;
336 if (l == 1) F = sqrt(2 * z / (1 + z));
337 if (l == 2) F = sqrt(13 * z * z / (9 + 3 * z + z * z));
338 return F;
339 }

◆ barrier() [4/6]

double barrier ( int l,
double sa,
double sb,
double sc,
double r,
double mass )
private

Definition at line 197 of file EvtDsToKpipi.cc.

198 {
199 double q = (sa + sb - sc) * (sa + sb - sc) / (4 * sa) - sb;
200 if (q < 0) q = 1e-16;
201 double z;
202 z = q * r * r;
203 double sa0;
204 sa0 = mass_param * mass_param;
205 double q0 = (sa0 + sb - sc) * (sa0 + sb - sc) / (4 * sa0) - sb;
206 if (q0 < 0) q0 = 1e-16;
207 double z0 = q0 * r * r;
208 double F = 0.0;
209 if (l == 0) F = 1;
210 if (l == 1) F = sqrt((1 + z0) / (1 + z));
211 if (l == 2) F = sqrt((9 + 3 * z0 + z0 * z0) / (9 + 3 * z + z * z));
212 return F;
213 }

◆ barrier() [5/6]

double barrier ( const double l,
const double sa,
const double sb,
const double sc,
const double r ) const
private

Blatt-Weisskopf barrier factors.

Definition at line 574 of file EvtDToKSpipipi.cc.

575 {
576 double q = Qabcs(sa, sb, sc);
577 q = sqrt(q);
578 double z = q * r;
579 z = z * z;
580 double F = 1;
581 if (l > 2) F = 0;
582 if (l == 0)
583 F = 1;
584 if (l == 1) {
585 F = sqrt((2 * z) / (1 + z));
586 }
587 if (l == 2) {
588 F = sqrt((13 * z * z) / (9 + 3 * z + z * z));
589 }
590 return F;
591 }

◆ barrier() [6/6]

double barrier ( double l,
double sa,
double sb,
double sc,
double r,
double mass )
private

Definition at line 233 of file EvtDTopipi0Eta.cc.

234 {
235 double sa0 = mass * mass;
236 double q0 = Qabcs(sa0, sb, sc);
237 double z0 = q0 * r * r;
238 double q = Qabcs(sa, sb, sc);
239 q = sqrt(q);
240 double z = q * r;
241 z = z * z;
242 double F = 1;
243 if (l > 2) F = 0;
244 if (l == 0) F = 1;
245 if (l == 1) F = sqrt((1 + z0) / (1 + z));
246 if (l == 2) F = sqrt((9 + 3 * z0 + z0 * z0) / (9 + 3 * z + z * z));
247 return F;
248 }

◆ barrierNeo()

double barrierNeo ( int l,
double sa,
double sb,
double sc,
double r,
double mR )
private

Definition at line 340 of file EvtDsToKKpi.cc.

341 {
342 double pAB = ((sa - sb - sc) * (sa - sb - sc) / 4.0 - (sb * sc)) / sa;
343 double pR = ((mR * mR - sb - sc) * (mR * mR - sb - sc) / 4.0 - (sb * sc)) / (mR * mR);
344 double zAB = pAB * r * r;
345 double zR = pR * r * r;
346 double F = 0.0;
347 if (l == 0) F = 1;
348 if (l == 1) F = sqrt((1 + zR) / (1 + zAB));
349 if (l == 2) F = sqrt((9 + 3 * zAB + zAB * zAB) / (9 + 3 * zAB + zAB * zAB));
350 return F;
351 }

◆ barrierNeoDs()

double barrierNeoDs ( int l,
double sa,
double sb,
double sc,
double r,
double mR,
double mb )
private

Definition at line 352 of file EvtDsToKKpi.cc.

353 {
354 double pAB = ((sa - sb - sc) * (sa - sb - sc) / 4.0 - (sb * sc)) / sa;
355 double pR = ((sa - mb * mb - sc) * (sa - mb * mb - sc) / 4.0 - (mb * mb * sc)) / (mR * mR);
356 double zAB = pAB * r * r;
357 double zR = pR * r * r;
358 double F = 0.0;
359 if (l == 0) F = 1;
360 if (l == 1) F = sqrt((1 + zR) / (1 + zAB));
361 if (l == 2) F = sqrt((9 + 3 * zAB + zAB * zAB) / (9 + 3 * zAB + zAB * zAB));
362 return F;
363 }

◆ Boost()

EvtVector4R Boost ( const EvtVector4R & p4,
const EvtVector4R & boost )

Parameter for boost frame.

Definition at line 538 of file EvtB0toKsKK.cc.

540 {
541 const double bx = boost.get(1) / boost.get(0);
542 const double by = boost.get(2) / boost.get(0);
543 const double bz = boost.get(3) / boost.get(0);
544
545 const double bx2 = bx * bx;
546 const double by2 = by * by;
547 const double bz2 = bz * bz;
548
549 const double b2 = bx2 + by2 + bz2;
550 if (b2 == 0.0)
551 return p4;
552 assert(b2 < 1.0);
553
554 const double gamma = 1.0 / sqrt(1 - b2);
555
556 const double gb2 = (gamma - 1.0) / b2;
557
558 const double gb2xy = gb2 * bx * by;
559 const double gb2xz = gb2 * bx * bz;
560 const double gb2yz = gb2 * by * bz;
561
562 const double gbx = gamma * bx;
563 const double gby = gamma * by;
564 const double gbz = gamma * bz;
565
566 const double e_b =
567 (gamma * p4.get(0)) - (gbx * p4.get(1)) - (gby * p4.get(2)) - (gbz * p4.get(3));
568 const double x_b =
569 (-gbx * p4.get(0)) + ((1.0 + (gb2 * bx2)) * p4.get(1)) +
570 (gb2xy * p4.get(2)) + (gb2xz * p4.get(3));
571 const double y_b =
572 (-gby * p4.get(0)) + (gb2xy * p4.get(1)) +
573 ((1.0 + (gb2 * by2)) * p4.get(2)) + (gb2yz * p4.get(3));
574 const double z_b =
575 (-gbz * p4.get(0)) + (gb2xz * p4.get(1)) +
576 (gb2yz * p4.get(2)) + ((1.0 + (gb2 * bz2)) * p4.get(3));
577
578 const EvtVector4R p4_b(e_b, x_b, y_b, z_b);
579
580 return p4_b;
581 }

◆ BreitWigner()

EvtComplex BreitWigner ( const double & m,
const double & m0,
const double & Gamma0,
const double & q,
const double & q0,
const unsigned int & L )

BreitWigner Shape.

Definition at line 521 of file EvtB0toKsKK.cc.

525 {
526 const double s = m * m;
527 const double s0 = m0 * m0;
528
529 const double Gamma =
530 Gamma0 * m0 / m * pow(q / q0, (2 * L) + 1) *
531 BWBF(q, q0, L) * BWBF(q, q0, L);
532
533 const EvtComplex BreitWigner = 1.0 / EvtComplex(s0 - s, -m0 * Gamma);
534
535 return BreitWigner;
536 }

◆ breitwigner()

std::complex< double > breitwigner ( double mx2,
double mr,
double wr )
private

Definition at line 508 of file EvtD0Topippim2pi0.cc.

509 {
510 double output_x = 0;
511 double output_y = 0;
512
513 double mr2 = mr * mr;
514 double diff = mr2 - mx2;
515 double denom = diff * diff + wr * wr * mr2;
516 if (wr < 0) {
517 output_x = 0;
518 output_y = 0;
519 } else if (wr < 10) {
520 output_x = diff / denom;
521 output_y = wr * mr / denom;
522 } else { /* phase space */
523 output_x = 1;
524 output_y = 0;
525 }
526 std::complex<double> output(output_x, output_y);
527 return output;
528 }

◆ BWBarrierFactor()

double BWBarrierFactor ( const double l,
const double sa,
const double sb,
const double sc,
const double r ) const
private

Blatt-Weisskopf barrier factors.

Definition at line 795 of file EvtD0ToKpipi0pi0.cc.

796 {
797 double q = Qabcs(sa, sb, sc);
798 q = sqrt(q);
799 double z = q * r;
800 z = z * z;
801 double F = 1;
802 if (l > 2) F = 0;
803 if (l == 0)
804 F = 1;
805 if (l == 1) {
806 F = sqrt((2 * z) / (1 + z));
807 }
808 if (l == 2) {
809 F = sqrt((13 * z * z) / (9 + 3 * z + z * z));
810 }
811 return F;
812 }

◆ BWBF() [1/2]

double BWBF ( const double & q,
const double & q0,
const unsigned int & L )

Meson radius.

Definition at line 499 of file EvtB0toKsKK.cc.

501 {
502 //Meson radius
503 const double d = 1.0;
504
505 const double z = q * q * d * d;
506 const double z0 = q0 * q0 * d * d;
507
508 double bwbf = 1.0;
509
510 if (L == 1)
511 bwbf = sqrt((1.0 + z0) / (1.0 + z));
512 if (L == 2)
513 bwbf = sqrt((((z0 - 3.0) * (z0 - 3.0)) + (9.0 * z0)) / (((z - 3.0) * (z - 3.0)) + (9.0 * z)));
514 if (L > 2) {
515 std::cout << "ERROR: BWBF not implemented for L>2" << std::endl;
516 exit(1);
517 }
518 return bwbf;
519 }

◆ BWBF() [2/2]

double BWBF ( const double & q,
const unsigned int & L )

Meson radius.

Definition at line 479 of file EvtB0toKsKK.cc.

480 {
481 //Meson radius
482 const double d = 1.0;
483
484 const double z = q * q * d * d;
485
486 double bwbf = 1.0;
487
488 if (L == 1)
489 bwbf = sqrt(2.0 * z / (1.0 + z));
490 if (L == 2)
491 bwbf = sqrt(13.0 * z * z / (((z - 3.0) * (z - 3.0)) + (9.0 * z)));
492 if (L > 2) {
493 std::cout << "ERROR: BWBF not implemented for L>2" << std::endl;
494 exit(1);
495 }
496 return bwbf;
497 }

◆ CalAmp()

int CalAmp ( )
private

Definition at line 1940 of file EvtD0Topippim2pi0.cc.

1941 {
1942
1943 m_AmpD0 = CalD0Amp();
1944 m_AmpDb = CalDbAmp();
1945
1946 return 0;
1947 }

◆ CalcAmp() [1/2]

void CalcAmp ( EvtParticle * parent,
EvtAmp & amp,
EvtBSemiTauonicHelicityAmplitudeCalculator * HelicityAmplitudeCalculator )
overridevirtual

The function calculates the spin dependent amplitude.

Parameters
parenta pointer to the parent particle.
ampa pointer to fill the calculated spin dependent amplitude.
HelicityAmplitudeCalculatora pointer to the calculator of the helicity dependent amplitude. The function calculate the spin dependent amplitude of the semi-tauonic decay to a scalar meson (D meson).

Implements EvtBSemiTauonicAmplitude.

Definition at line 25 of file EvtBSemiTauonicScalarMesonAmplitude.cc.

28 {
29
30 static EvtId EM = EvtPDL::getId("e-");
31 static EvtId MUM = EvtPDL::getId("mu-");
32 static EvtId TAUM = EvtPDL::getId("tau-");
33// static EvtId EP = EvtPDL::getId("e+");
34// static EvtId MUP = EvtPDL::getId("mu+");
35// static EvtId TAUP = EvtPDL::getId("tau+");
36
37 // calculate w and costau
38
39 EvtVector4R p4d = p->getDaug(0)->getP4();
40 EvtVector4R p4l = p->getDaug(1)->getP4();
41 EvtVector4R p4n = p->getDaug(2)->getP4();
42 EvtVector4R p4ln(p4l + p4n);
43
44 EvtVector4R p4dln = boostTo(p4d, p4ln, true);
45 EvtVector4R p4lln = boostTo(p4l, p4ln, true);
46
47 const double gmB = p->getP4().mass();
48 const double gmd = p4d.mass();
49 const double gr = gmd / gmB;
50
51 const double q2 = (p4l + p4n).mass2();
52 const double w = (1. + gr * gr - q2 / gmB / gmB) / 2. / gr;
53 // const double w=CalcHelAmp->wfunc(2,q2); avoid possible w<0 caused by the decay width
54 const double costau = p4dln.dot(p4lln) / p4dln.d3mag() / p4lln.d3mag();
55 const double ml = p4l.mass();
56
57 // obtain helicity amplitudes
58 EvtComplex helamp[2]; // tauhel={1,-1}
59 helamp[0] = CalcHelAmp->helAmp(ml, 1, 2, w, costau); // note the parameter order is tauhel, Dhel
60 helamp[1] = CalcHelAmp->helAmp(ml, -1, 2, w, costau); // Dhel=2 ==> D meson
61
62 // lepton theta and phi in l+nu rest frame
63 //const double l_theta=acos(p4lln.get(3)/p4lln.d3mag());
64 //const double l_phi=atan2(p4lln.get(2),p4lln.get(1));
65
66 // spin (in l rest frame) -> helicity (in l+nu rest frame) rotation matrix
67 // ( sp0->hel0 , sp1->hel0 )
68 // ( sp0->hel1 , sp1->hel1 )
69 EvtSpinDensity l_HelFromSp = RotateToHelicityBasisInBoostedFrame(p->getDaug(1),
70 p4ln);
71// l_phi,
72// l_theta,
73// -l_phi);
74
75 // helicity (in l+nu rest frame) -> spin (in l rest frame) rotation matrix
76 // ( hel0->sp0 , hel1->sp0 )
77 // ( hel0->sp1 , hel1->sp1 )
78 EvtComplex l_SpFromHel[2][2]; // {0,1} from {1,-1}
79 EvtId l_num = p->getDaug(1)->getId();
80// if (l_num == EM || l_num == MUM || l_num == TAUM) {
81 l_SpFromHel[0][0] = conj(l_HelFromSp.get(0, 0));
82 l_SpFromHel[0][1] = conj(l_HelFromSp.get(1, 0));
83 l_SpFromHel[1][0] = conj(l_HelFromSp.get(0, 1));
84 l_SpFromHel[1][1] = conj(l_HelFromSp.get(1, 1));
85// } else {
86// l_SpFromHel[0][1] = conj(l_HelFromSp.get(0, 0));
87// l_SpFromHel[0][0] = conj(l_HelFromSp.get(1, 0));
88// l_SpFromHel[1][1] = conj(l_HelFromSp.get(0, 1));
89// l_SpFromHel[1][0] = conj(l_HelFromSp.get(1, 1));
90// }
91
92 // calculate spin amplitudes
93 EvtComplex spinamp[2];
94
95 for (int lsp = 0; lsp < 2; lsp++) {
96 for (int lhel = 0; lhel < 2; lhel++) {
97 // b -> l
98 if (l_num == EM || l_num == MUM || l_num == TAUM) {
99 spinamp[lsp] += l_SpFromHel[lsp][lhel] * helamp[lhel];
100 }
101 // b-bar -> anti-l
102 else {
103 spinamp[lsp] += l_SpFromHel[lsp][lhel] * (lhel == 0 ? +1 : -1) * conj(helamp[1 - lhel]);
104 }
105 }
106 }
107
108 amp.vertex(0, spinamp[0]);
109 amp.vertex(1, spinamp[1]);
110
111 // consistency check
112 double helprob = abs2(helamp[0]) + abs2(helamp[1]);
113 double spinprob = abs2(spinamp[0]) + abs2(spinamp[1]);
114 if (fabs(helprob - spinprob) / helprob > 1E-6 || !finite(helprob) || !finite(spinprob)) {
115 B2ERROR("EvtBSemiTauonicScalarMesonAmplitude total helicity prob does not match with total spin prob.");
116 B2ERROR("helprob: " << helprob << " spinprob: " << spinprob);
117 B2ERROR("w: " << w << " costau: " << costau << " hel probs: " << abs2(helamp[0])
118 << "\t" << abs2(helamp[1])
119 << "\t" << abs2(helamp[0]) + abs2(helamp[1]));
120
121 B2ERROR("w: " << w << " costau: " << costau << " spin probs: " << abs2(spinamp[0])
122 << "\t" << abs2(spinamp[1])
123 << "\t" << abs2(spinamp[0]) + abs2(spinamp[1]));
124
125// EvtGenReport(EVTGEN_ERROR, "EvtGen") <<
126// "EvtBSemiTauonicScalarMesonAmplitude total helicity prob does not match with total spin prob."
127// << std::endl;
128// EvtGenReport(EVTGEN_ERROR, "EvtGen") << "helprob: "<<helprob<<" spinprob: "<<spinprob<<std::endl;
129// EvtGenReport(EVTGEN_ERROR, "EvtGen") << "w: "<<w<<" costau: "<<costau
130// <<" hel probs: "<<abs2(helamp[0])
131// <<"\t"<<abs2(helamp[1])
132// <<"\t"<<abs2(helamp[0])+abs2(helamp[1])<<std::endl;
133//
134// EvtGenReport(EVTGEN_ERROR, "EvtGen") << "w: "<<w<<" costau: "<<costau
135// <<" spin probs: "<<abs2(spinamp[0])
136// <<"\t"<<abs2(spinamp[1])
137// <<"\t"<<abs2(spinamp[0])+abs2(spinamp[1])<<std::endl;
138 // abort();
139 }
140
141 return;
142 }
R E
internal precision of FFTW codelets

◆ CalcAmp() [2/2]

void CalcAmp ( EvtParticle * parent,
EvtAmp & amp,
EvtBSemiTauonicHelicityAmplitudeCalculator * HelicityAmplitudeCalculator )
overridevirtual

The function calculates the spin dependent amplitude.

Parameters
parenta pointer to the parent particle.
ampa pointer to fill the calculated spin dependent amplitude.
HelicityAmplitudeCalculatora pointer to the calculator of the helicity dependent amplitude. The function calculate the spin dependent amplitude of the semi-tauonic decay to a vector meson (D* meson).

Implements EvtBSemiTauonicAmplitude.

Definition at line 24 of file EvtBSemiTauonicVectorMesonAmplitude.cc.

27 {
28 static EvtId EM = EvtPDL::getId("e-");
29 static EvtId MUM = EvtPDL::getId("mu-");
30 static EvtId TAUM = EvtPDL::getId("tau-");
31// static EvtId EP = EvtPDL::getId("e+");
32// static EvtId MUP = EvtPDL::getId("mu+");
33// static EvtId TAUP = EvtPDL::getId("tau+");
34
35 // calculate w and costau
36
37 EvtVector4R p4d = p->getDaug(0)->getP4();
38 EvtVector4R p4l = p->getDaug(1)->getP4();
39 EvtVector4R p4n = p->getDaug(2)->getP4();
40 EvtVector4R p4ln(p4l + p4n);
41
42 EvtVector4R p4dln = boostTo(p4d, p4ln, true);
43 EvtVector4R p4lln = boostTo(p4l, p4ln, true);
44
45 const double gmB = p->getP4().mass();
46 const double gmd = p4d.mass();
47 const double gr = gmd / gmB;
48
49 const double q2 = (p4l + p4n).mass2();
50 const double w = (1. + gr * gr - q2 / gmB / gmB) / 2. / gr;
51 // const double w=CalcHelAmp->wfunc(1,q2); avoid w<1 caused by the D* width
52 const double costau = p4dln.dot(p4lln) / p4dln.d3mag() / p4lln.d3mag();
53 const double ml = p4l.mass();
54
55 // Set D* mass from its momentum (to take into account fluctuation due to its width)
56 const double orig_mD = CalcHelAmp->getMDst();
57 CalcHelAmp->setMDst(gmd);
58
59 // obtain helicity amplitudes
60 EvtComplex helamp[3][2]; // Dhel={1,0,-1}, tauhel={1,-1}
61 helamp[0][0] = CalcHelAmp->helAmp(ml, 1, 1, w, costau); // note the parameter order is tauhel, Dhel
62 helamp[0][1] = CalcHelAmp->helAmp(ml, -1, 1, w, costau);
63 helamp[1][0] = CalcHelAmp->helAmp(ml, 1, 0, w, costau);
64 helamp[1][1] = CalcHelAmp->helAmp(ml, -1, 0, w, costau);
65 helamp[2][0] = CalcHelAmp->helAmp(ml, 1, -1, w, costau);
66 helamp[2][1] = CalcHelAmp->helAmp(ml, -1, -1, w, costau);
67
68 // lepton theta and phi in l+nu rest frame
69 // const double l_theta=acos(p4lln.get(3)/p4lln.d3mag());
70 // const double l_phi=atan2(p4lln.get(2),p4lln.get(1));
71
72 // spin (in l rest frame) -> helicity (in l+nu rest frame) rotation matrix
73 // ( sp0->hel0 , sp1->hel0 )
74 // ( sp0->hel1 , sp1->hel1 )
75 EvtSpinDensity l_HelFromSp = RotateToHelicityBasisInBoostedFrame(p->getDaug(1),
76 p4ln);
77// l_phi,
78// l_theta,
79// -l_phi);
80
81 // helicity (in l+nu rest frame) -> spin (in l rest frame) rotation matrix
82 // ( hel0->sp0 , hel1->sp0 )
83 // ( hel0->sp1 , hel1->sp1 )
84 EvtComplex l_SpFromHel[2][2]; // {0,1} from {1,-1}
85 EvtId l_num = p->getDaug(1)->getId();
86// if (l_num == EM || l_num == MUM || l_num == TAUM) {
87 l_SpFromHel[0][0] = conj(l_HelFromSp.get(0, 0));
88 l_SpFromHel[0][1] = conj(l_HelFromSp.get(1, 0));
89 l_SpFromHel[1][0] = conj(l_HelFromSp.get(0, 1));
90 l_SpFromHel[1][1] = conj(l_HelFromSp.get(1, 1));
91// } else {
92// l_SpFromHel[0][1] = conj(l_HelFromSp.get(0, 0));
93// l_SpFromHel[0][0] = conj(l_HelFromSp.get(1, 0));
94// l_SpFromHel[1][1] = conj(l_HelFromSp.get(0, 1));
95// l_SpFromHel[1][0] = conj(l_HelFromSp.get(1, 1));
96// }
97
98 // meson spin state to helicity state
99 const double D_theta = acos(p4d.get(3) / p4d.d3mag());
100 const double D_phi = atan2(p4d.get(2), p4d.get(1));
101 EvtSpinDensity D_HelFromSp = p->getDaug(0)->rotateToHelicityBasis(D_phi, D_theta, -D_phi);
102
103 EvtComplex D_SpFromHel[3][3]; // {0,1,2} from {1,0,-1}
104 D_SpFromHel[0][0] = conj(D_HelFromSp.get(0, 0));
105 D_SpFromHel[0][1] = conj(D_HelFromSp.get(1, 0));
106 D_SpFromHel[0][2] = conj(D_HelFromSp.get(2, 0));
107 D_SpFromHel[1][0] = conj(D_HelFromSp.get(0, 1));
108 D_SpFromHel[1][1] = conj(D_HelFromSp.get(1, 1));
109 D_SpFromHel[1][2] = conj(D_HelFromSp.get(2, 1));
110 D_SpFromHel[2][0] = conj(D_HelFromSp.get(0, 2));
111 D_SpFromHel[2][1] = conj(D_HelFromSp.get(1, 2));
112 D_SpFromHel[2][2] = conj(D_HelFromSp.get(2, 2));
113
114 // calculate spin amplitudes
115 EvtComplex spinamp[3][2];
116
117 for (int dsp = 0; dsp < 3; dsp++) {
118 for (int lsp = 0; lsp < 2; lsp++) {
119 for (int dhel = 0; dhel < 3; dhel++) {
120 for (int lhel = 0; lhel < 2; lhel++) {
121 // b -> l, D*+
122 if (l_num == EM || l_num == MUM || l_num == TAUM) {
123 spinamp[dsp][lsp] += l_SpFromHel[lsp][lhel] * D_SpFromHel[dsp][dhel] * helamp[dhel][lhel];
124 }
125 // b-bar -> anti-l, D*-
126 else {
127 spinamp[dsp][lsp] += l_SpFromHel[lsp][lhel] * D_SpFromHel[dsp][dhel] * (lhel == 0 ? +1 : -1) * (dhel == 1 ? +1 : -1)
128 * conj(helamp[2 - dhel][1 - lhel]);
129 }
130 }
131 }
132 }
133 }
134
135 amp.vertex(0, 0, spinamp[0][0]);
136 amp.vertex(0, 1, spinamp[0][1]);
137 amp.vertex(1, 0, spinamp[1][0]);
138 amp.vertex(1, 1, spinamp[1][1]);
139 amp.vertex(2, 0, spinamp[2][0]);
140 amp.vertex(2, 1, spinamp[2][1]);
141
142 // Set D* mass to its original value
143 CalcHelAmp->setMDst(orig_mD);
144
145 // consistency check
146 double helprob = abs2(helamp[0][0]) + abs2(helamp[0][1]) + abs2(helamp[1][0]) + abs2(helamp[1][1]) + abs2(helamp[2][0])
147 + abs2(helamp[2][1]);
148 double spinprob = abs2(spinamp[0][0]) + abs2(spinamp[0][1]) + abs2(spinamp[1][0]) + abs2(spinamp[1][1])
149 + abs2(spinamp[2][0]) + abs2(spinamp[2][1]);
150 if (fabs(helprob - spinprob) / helprob > 1E-6 || !finite(helprob) || !finite(spinprob)) {
151 B2ERROR("EvtBSemiTauonicVectorMesonAmplitude total helicity prob does not match with total spin prob, or nan.");
152 B2ERROR("helprob: " << helprob << " spinprob: " << spinprob);
153 B2ERROR("w: " << w << " costau: " << costau << " hel probs: "
154 << abs2(helamp[0][0]) << "\t" << abs2(helamp[0][1]) << "\t"
155 << abs2(helamp[1][0]) << "\t" << abs2(helamp[1][1]) << "\t"
156 << abs2(helamp[2][0]) << "\t" << abs2(helamp[2][1]) << "\t"
157 << abs2(helamp[0][0]) + abs2(helamp[0][1]) + abs2(helamp[1][0]) + abs2(helamp[1][1]) + abs2(helamp[2][0]) + abs2(helamp[2][1])
158 );
159
160 B2ERROR("w: " << w << " costau: " << costau << " spin probs: "
161 << abs2(spinamp[0][0]) << "\t" << abs2(spinamp[0][1]) << "\t"
162 << abs2(spinamp[1][0]) << "\t" << abs2(spinamp[1][1]) << "\t"
163 << abs2(spinamp[2][0]) << "\t" << abs2(spinamp[2][1]) << "\t"
164 << abs2(spinamp[0][0]) + abs2(spinamp[0][1]) + abs2(spinamp[1][0]) + abs2(spinamp[1][1]) + abs2(spinamp[2][0]) + abs2(spinamp[2][1])
165 );
166
167// EvtGenReport(EVTGEN_ERROR, "EvtGen") <<
168// "EvtBSemiTauonicVectorMesonAmplitude total helicity prob does not match with total spin prob, or nan."
169// << std::endl;
170// EvtGenReport(EVTGEN_ERROR, "EvtGen") "helprob: "<<helprob<<" spinprob: "<<spinprob<< std::endl;
171// EvtGenReport(EVTGEN_ERROR, "EvtGen") "w: "<<w<<" costau: "<<costau<<" hel probs: "
172// <<abs2(helamp[0][0])<<"\t"<<abs2(helamp[0][1])<<"\t"
173// <<abs2(helamp[1][0])<<"\t"<<abs2(helamp[1][1])<<"\t"
174// <<abs2(helamp[2][0])<<"\t"<<abs2(helamp[2][1])<<"\t"
175// <<abs2(helamp[0][0]) + abs2(helamp[0][1]) + abs2(helamp[1][0]) + abs2(helamp[1][1]) + abs2(helamp[2][0]) + abs2(helamp[2][1])
176// <<std::endl;
177//
178// EvtGenReport(EVTGEN_ERROR, "EvtGen") "w: "<<w<<" costau: "<<costau<<" spin probs: "
179// <<abs2(spinamp[0][0])<<"\t"<<abs2(spinamp[0][1])<<"\t"
180// <<abs2(spinamp[1][0])<<"\t"<<abs2(spinamp[1][1])<<"\t"
181// <<abs2(spinamp[2][0])<<"\t"<<abs2(spinamp[2][1])<<"\t"
182// <<abs2(spinamp[0][0]) + abs2(spinamp[0][1]) + abs2(spinamp[1][0]) + abs2(spinamp[1][1]) + abs2(spinamp[2][0]) + abs2(spinamp[2][1])
183// <<std::endl;
184
185 // Debugging information
186// fprintf(stderr, "q2 by Helamp: %g\n", CalcHelAmp->q2(1, w));
187// fprintf(stderr, "helampSM by Helamp: %g\n", CalcHelAmp->helampSM(ml, 1, 1, w, costau));
188// fprintf(stderr, "Lep by Helamp: %g\n", CalcHelAmp->Lep(ml, 1, 1, CalcHelAmp->q2(1, w), costau));
189// fprintf(stderr, "HadV2 by Helamp: %g\n", CalcHelAmp->HadV2(1, 1, w));
190// fprintf(stderr, "v by Helamp: %g\n", CalcHelAmp->v(ml, CalcHelAmp->v(ml, CalcHelAmp->q2(1, w))));
191//
192// fprintf(stderr, "B mass : %g \t nominal %g\n", gmB, EvtPDL::getMeanMass(p->getId()));
193// fprintf(stderr, "D mass : %g \t nominal %g\n", gmd, EvtPDL::getMeanMass(p->getDaug(0)->getId()));
194// fprintf(stderr, "lepton mass : %g \t nominal %g\n", ml, EvtPDL::getMeanMass(p->getDaug(1)->getId()));
195
196 // abort();
197 }
198
199 return;
200 }

◆ CalcMaxProb()

double CalcMaxProb ( EvtId parent,
EvtId meson,
EvtId lepton,
EvtId nudaug,
EvtBSemiTauonicHelicityAmplitudeCalculator * HelicityAmplitudeCalculator )

The function calculates the maximum probability.

Parameters
parenta ID of the parent meson.
mesona ID of the daughter meson.
leptona ID of the daughter lepton.
nudauga ID of the daughter neutrino.
HelicityAmplitudeCalculatora pointer to the calculator of the helicity dependent amplitude.
Returns
the maxmum probability multiplied by 1.1. The function scan the q^2 and angle between the daughter meson and lepton and search for the the maximum probability value.

Definition at line 77 of file EvtBSemiTauonicAmplitude.cc.

80 {
81 //This routine takes the arguments parent, meson, and lepton
82 //number, and a form factor model, and returns a maximum
83 //probability for this semileptonic form factor model. A
84 //brute force method is used. The 2D cos theta lepton and
85 //q2 phase space is probed.
86
87 //Start by declaring a particle at rest.
88
89 //It only makes sense to have a scalar parent. For now.
90 //This should be generalized later.
91
92 EvtScalarParticle* scalar_part;
93 EvtParticle* root_part;
94
95 scalar_part = new EvtScalarParticle;
96
97 //cludge to avoid generating random numbers!
98 scalar_part->noLifeTime();
99
100 EvtVector4R p_init;
101
102 p_init.set(EvtPDL::getMass(parent), 0.0, 0.0, 0.0);
103 scalar_part->init(parent, p_init);
104 //root_part = (EvtParticle*)scalar_part;
105 root_part = static_cast<EvtParticle*>(scalar_part);
106
107 root_part->setDiagonalSpinDensity();
108
109 EvtParticle* daughter, *lep, *trino;
110
111 EvtAmp amp;
112
113 EvtId listdaug[3];
114 listdaug[0] = meson;
115 listdaug[1] = lepton;
116 listdaug[2] = nudaug;
117
118 amp.init(parent, 3, listdaug);
119
120 root_part->makeDaughters(3, listdaug);
121 daughter = root_part->getDaug(0);
122 lep = root_part->getDaug(1);
123 trino = root_part->getDaug(2);
124
125 //cludge to avoid generating random numbers!
126 daughter->noLifeTime();
127 lep->noLifeTime();
128 trino->noLifeTime();
129
130
131 //Initial particle is unpolarized, well it is a scalar so it is
132 //trivial
133 EvtSpinDensity rho;
134 rho.setDiag(root_part->getSpinStates());
135
136 double mass[3];
137
138 double m = root_part->mass();
139
140 EvtVector4R p4meson, p4lepton, p4nu, p4w;
141
142 double q2, elepton, plepton;
143 int i, j;
144 double erho, prho, costl;
145
146 double maxfoundprob = 0.0;
147 double prob;
148 int massiter;
149
150 for (massiter = 0; massiter < 3; massiter++) {
151
152 mass[0] = EvtPDL::getMeanMass(meson);
153 mass[1] = EvtPDL::getMeanMass(lepton);
154 mass[2] = EvtPDL::getMeanMass(nudaug);
155 if (massiter == 1) {
156 mass[0] = EvtPDL::getMinMass(meson);
157 }
158 if (massiter == 2) {
159 mass[0] = EvtPDL::getMaxMass(meson);
160 if ((mass[0] + mass[1] + mass[2]) > m) mass[0] = m - mass[1] - mass[2] - 0.00001;
161 }
162
163 double q2min = mass[1] * mass[1]; // limit to minimum=lepton mass square
164 double q2max = (m - mass[0]) * (m - mass[0]);
165 double dq2 = (q2max - q2min) / 25;
166// std::cout<<"m: "<<m<<" mass[0]: "<<mass[0]<<" q2min: "<<q2min<<" q2max: "<<q2max<<std::endl;
167
168 //loop over q2
169
170 for (i = 0; i < 25; i++) {
171 q2 = q2min + (i + 0.5) * dq2; // <-- !! not start from unphysical q2=0 !!
172
173 erho = (m * m + mass[0] * mass[0] - q2) / (2.0 * m);
174
175 prho = sqrt(erho * erho - mass[0] * mass[0]);
176
177 p4meson.set(erho, 0.0, 0.0, -1.0 * prho);
178 p4w.set(m - erho, 0.0, 0.0, prho);
179
180// std::cout<<"q2: "<<q2<<std::endl;
181// std::cout<<"p4meson: "<<p4meson<<std::endl;
182
183 //This is in the W rest frame
184 elepton = (q2 + mass[1] * mass[1]) / (2.0 * sqrt(q2));
185 plepton = sqrt(elepton * elepton - mass[1] * mass[1]);
186// std::cout<<"elepton: "<<elepton<<" plepton: "<<plepton<<std::endl;
187
188 double probctl[3];
189
190 for (j = 0; j < 3; j++) {
191
192 costl = 0.99 * (j - 1.0);
193
194 //These are in the W rest frame. Need to boost out into
195 //the B frame.
196 p4lepton.set(elepton, 0.0,
197 plepton * sqrt(1.0 - costl * costl), plepton * costl);
198 p4nu.set(plepton, 0.0,
199 -1.0 * plepton * sqrt(1.0 - costl * costl), -1.0 * plepton * costl);
200
201 EvtVector4R boost((m - erho), 0.0, 0.0, 1.0 * prho);
202 p4lepton = boostTo(p4lepton, boost);
203 p4nu = boostTo(p4nu, boost);
204
205 //Now initialize the daughters...
206
207 daughter->init(meson, p4meson);
208 lep->init(lepton, p4lepton);
209 trino->init(nudaug, p4nu);
210
211 CalcAmp(root_part, amp, CalcHelAmp);
212
213 //Now find the probability at this q2 and cos theta lepton point
214 //and compare to maxfoundprob.
215
216 //Do a little magic to get the probability!!
217 prob = rho.normalizedProb(amp.getSpinDensity());
218
219 probctl[j] = prob;
220 }
221
222 //probclt contains prob at ctl=-1,0,1.
223 //prob=a+b*ctl+c*ctl^2
224
225 double a = probctl[1];
226 double b = 0.5 * (probctl[2] - probctl[0]);
227 double c = 0.5 * (probctl[2] + probctl[0]) - probctl[1];
228
229 prob = probctl[0];
230 if (probctl[1] > prob) prob = probctl[1];
231 if (probctl[2] > prob) prob = probctl[2];
232
233 if (fabs(c) > 1e-20) {
234 double ctlx = -0.5 * b / c;
235 if (fabs(ctlx) < 1.0) {
236 double probtmp = a + b * ctlx + c * ctlx * ctlx;
237 if (probtmp > prob) prob = probtmp;
238 }
239
240 }
241
242 if (prob > maxfoundprob) {
243 maxfoundprob = prob;
244 }
245
246 }
247 if (EvtPDL::getWidth(meson) <= 0.0) {
248 //if the particle is narrow dont bother with changing the mass.
249 massiter = 4;
250 }
251
252 }
253 root_part->deleteTree();
254
255 maxfoundprob *= 1.1;
256 return maxfoundprob;
257
258 }

◆ CalD0Amp()

std::complex< double > CalD0Amp ( )
private

Definition at line 1523 of file EvtD0Topippim2pi0.cc.

1524 {
1525 return Amp(m_Pip, m_Pim, m_Pi01, m_Pi02);
1526 }

◆ calDalEva() [1/2]

double calDalEva ( double P1[],
double P2[],
double P3[] )
private

Definition at line 144 of file EvtD0TopipiEta.cc.

145 {
146 //pi- pi+ eta
147 //0: non-resonance
148 //1: resonance, RBW
149 //2: resonance, GS
150 //3: resonance, Flatte
151 //4: rho-omega mxing for omega
152 EvtComplex PDF[6];
153 EvtComplex cof, pdf, module;
154 double value;
155 PDF[0] = Spin_factor(P1, P2, P3, 1, 2, mrho, Grho); // rho eta
156 PDF[1] = Spin_factor(P1, P2, P3, 1, 4, mrho, Grho); // rho-omega mixing
157 PDF[2] = Spin_factor(P1, P3, P2, 0, 3, ma0, Ga0); // a0- pi+
158 PDF[3] = Spin_factor(P2, P3, P1, 0, 3, ma0, Ga0); // a0+ pi-
159 PDF[4] = Spin_factor(P2, P3, P1, 2, 0, 1.698, 0.265); // pi+ eta 2+ non-res
160
161 pdf = EvtComplex(0.0, 0.0);
162 for (int i = 0; i < 5; i++) {
163 cof = EvtComplex(rho[i] * cos(phi[i]), rho[i] * sin(phi[i]));
164 pdf = pdf + cof * PDF[i];
165 }
166 module = conj(pdf) * pdf;
167 value = real(module);
168 return (value <= 0) ? 1e-20 : value;
169 }

◆ calDalEva() [2/2]

double calDalEva ( double P1[],
double P2[],
double P3[] )
private

Definition at line 116 of file EvtDTopipi0Eta.cc.

117 {
118 //pi+ pi0 eta
119 //0: non-resonance
120 //1: resonance, RBW
121 //2: resonance, GS
122 //3: resonance, Flatte
123 //4: rho-omega mxing for omega
124 EvtComplex PDF[3];
125 EvtComplex cof, pdf, module;
126 double value;
127 PDF[0] = Spin_factor(P1, P2, P3, 1, 2, mrho, Grho); // rho+ eta
128 PDF[1] = Spin_factor(P1, P3, P2, 0, 30, ma0, Ga0); // a0+ pi0
129 PDF[2] = Spin_factor(P2, P3, P1, 0, 31, ma0, Ga0); // a00 pi+
130
131 pdf = EvtComplex(0.0, 0.0);
132 for (int i = 0; i < 3; i++) {
133 cof = EvtComplex(rho[i] * cos(phi[i]), rho[i] * sin(phi[i]));
134 pdf = pdf + cof * PDF[i];
135 }
136 module = conj(pdf) * pdf;
137 value = real(module);
138 return (value <= 0) ? 1e-20 : value;
139 }

◆ CalDbAmp()

std::complex< double > CalDbAmp ( )
private

Definition at line 1527 of file EvtD0Topippim2pi0.cc.

1528 {
1529
1530 std::vector<double> cpPip;
1531 std::vector<double> cpPim;
1532 std::vector<double> cpPi01;
1533 std::vector<double> cpPi02;
1534
1535 cpPip.push_back(-m_Pim[0]); cpPim.push_back(-m_Pip[0]); cpPi01.push_back(-m_Pi01[0]); cpPi02.push_back(-m_Pi02[0]);
1536 cpPip.push_back(-m_Pim[1]); cpPim.push_back(-m_Pip[1]); cpPi01.push_back(-m_Pi01[1]); cpPi02.push_back(-m_Pi02[1]);
1537 cpPip.push_back(-m_Pim[2]); cpPim.push_back(-m_Pip[2]); cpPi01.push_back(-m_Pi01[2]); cpPi02.push_back(-m_Pi02[2]);
1538 cpPip.push_back(m_Pim[3]); cpPim.push_back(m_Pip[3]); cpPi01.push_back(m_Pi01[3]); cpPi02.push_back(m_Pi02[3]);
1539
1540 return Amp(cpPip, cpPim, cpPi01, cpPi02);
1541 }

◆ calEva()

void calEva ( double * K,
double * Pi1,
double * Pi2,
double * mass1,
double * width1,
double * amp,
double * phase,
int * g0,
int * spin,
int * modetype,
int nstates,
double & Result )
private

Definition at line 514 of file EvtDsToKpipi.cc.

516 {
517 double P23[4], P13[4];
518 double cof[2], amp_PDF[2], PDF[2];
519 double s13, s23;
520 for (int i = 0; i < 4; i++) {
521 P13[i] = K[i] + Pi2[i];
522 P23[i] = Pi1[i] + Pi2[i];
523 }
524 s13 = SCADot(P13, P13);
525 s23 = SCADot(P23, P23);
526 double s1, s2, s3;
527 s1 = SCADot(K, K);
528 s2 = SCADot(Pi1, Pi1);
529 s3 = SCADot(Pi2, Pi2);
530 double pro[2], temp_PDF, amp_tmp[2];
531 amp_PDF[0] = 0;
532 amp_PDF[1] = 0;
533 PDF[0] = 0;
534 PDF[1] = 0;
535 amp_tmp[0] = 0;
536 amp_tmp[1] = 0;
537 double rRess = 9.0;
538 for (int i = 0; i < nstates; i++) {
539 amp_tmp[0] = 0;
540 amp_tmp[1] = 0;
541 cof[0] = amp[i] * cos(phase[i]);
542 cof[1] = amp[i] * sin(phase[i]);
543 temp_PDF = 0;
544
545 if (modetype_param[i] == 13) {
546 temp_PDF = DDalitz(K, Pi2, Pi1, spin_param[i], mass1[i]);
547 if (g0[i] == 1) propagatorRBW(mass1[i], width1[i], s13, mKa2, mPi2, rRess, spin_param[i], pro);
548 if (g0[i] == 2) { // K*1430 Flatte
549 double skm2[2] = {s1, 0.95778 * 0.95778};
550 double spi2[2] = {s3, mass_Kaon * mass_Kaon};
551 propagatorKstr1430(mass1[i], s13, skm2, spi2, pro);
552 }
553 if (g0[i] == 0) {
554 pro[0] = 1;
555 pro[1] = 0;
556 }
557 amp_tmp[0] = temp_PDF * pro[0];
558 amp_tmp[1] = temp_PDF * pro[1];
559 }
560
561 if (modetype_param[i] == 23) {
562 temp_PDF = DDalitz(Pi1, Pi2, K, spin_param[i], mass1[i]);
563 if (g0[i] == 4) propagatorFlatte(mass1[i], width1[i], s23, pro); // Only for f0(980)
564 if (g0[i] == 3) propagatorCBW(mass1[i], width1[i], s23, pro);
565 if (g0[i] == 2) propagatorRBW(mass1[i], width1[i], s23, mPi2, mPi2, rRess, spin_param[i], pro);
566 if (g0[i] == 1) propagatorGS(mass1[i], width1[i], s23, mPi2, mPi2, 9.0, pro);
567 if (g0[i] == 500) propagatorsigma500(s23, s2, s3, pro);
568 if (g0[i] == 0) {
569 pro[0] = 1;
570 pro[1] = 0;
571 }
572 amp_tmp[0] = temp_PDF * pro[0];
573 amp_tmp[1] = temp_PDF * pro[1];
574 }
575 Com_Multi(amp_tmp, cof, amp_PDF);
576 PDF[0] += amp_PDF[0];
577 PDF[1] += amp_PDF[1];
578 }
579
580 double value = PDF[0] * PDF[0] + PDF[1] * PDF[1];
581 if (value <= 0) value = 1e-20;
582 Result = value;
583 }
#define K(x)
macro autogenerated by FFTW

◆ calEvaMy()

void calEvaMy ( double * pKm,
double * pKp,
double * pPi,
double * mass1,
double * width1,
double * amp,
double * phase,
int * g0,
int * modetype,
int nstates,
double & Result )
private

Definition at line 151 of file EvtDsToKKpi.cc.

153 {
154 double pF0_980[4], pPhi1020[4], pKstr[4], pD[4], p23[4];
155 pKp[0] = sqrt(mass_Kaon * mass_Kaon + pKp[1] * pKp[1] + pKp[2] * pKp[2] + pKp[3] * pKp[3]);
156 pKm[0] = sqrt(mass_Kaon * mass_Kaon + pKm[1] * pKm[1] + pKm[2] * pKm[2] + pKm[3] * pKm[3]);
157 pPi[0] = sqrt(mass_Pion * mass_Pion + pPi[1] * pPi[1] + pPi[2] * pPi[2] + pPi[3] * pPi[3]);
158 for (int u = 0; u < 4; u++) {
159 pF0_980[u] = pKp[u] + pKm[u];
160 pPhi1020[u] = pKp[u] + pKm[u];
161 pKstr[u] = pKm[u] + pPi[u];
162 p23[u] = pKp[u] + pPi[u];
163 pD[u] = pKp[u] + pKm[u] + pPi[u];
164 }
165 double cof[2], amp_tmp1[2], amp_tmp[2], amp_PDF[2], PDF[2];
166 amp_PDF[0] = 0;
167 amp_PDF[1] = 0;
168 PDF[0] = 0;
169 PDF[1] = 0;
170 double temp_PDF, tmp1;
171 double pro[2], B[3];
172 double t1kstr1[4], t1phi1020[4], t1D1[4], t1D2[4];
173
174 double sD, sF0_980, sF0_1710, sF0_1370, sKp, sKm, sPi, sKstr, sPhi1020, sKstr1430;
175 sF0_980 = SCADot(pF0_980, pF0_980);
176 sF0_1710 = sF0_980;
177 sF0_1370 = sF0_980;
178 sKstr = SCADot(pKstr, pKstr);
179 sD = SCADot(pD, pD);
180 sKstr1430 = sKstr;
181 sPhi1020 = SCADot(pPhi1020, pPhi1020);
182 sKp = SCADot(pKp, pKp);
183 sKm = SCADot(pKm, pKm);
184 sPi = SCADot(pPi, pPi);
185
186 calt1(pKm, pPi, t1kstr1);
187 calt1(pKm, pKp, t1phi1020);
188 calt1(pKstr, pKp, t1D1);
189 calt1(pPhi1020, pPi, t1D2);
190
191 for (int i = 0; i < nstates; i++) {
192 amp_tmp[0] = 0;
193 amp_tmp[1] = 0;
194 amp_tmp1[0] = 0;
195 amp_tmp1[1] = 0;
196 tmp1 = 0;
197 temp_PDF = 0;
198 cof[0] = amp[i] * cos(phase[i]);
199 cof[1] = amp[i] * sin(phase[i]);
200 if (modetype_param[i] == 13) {
201 //a0(980) and f0(980) mixture
202 double amp_a0[2] = {0};
203 double sa0_980 = sF0_980;
204 MIP_LineShape(sa0_980, pro);
205 B[0] = barrier(0, sa0_980, sKp, sKm, rRes);
206 temp_PDF = 1;
207 tmp1 = temp_PDF * B[0];
208 amp_a0[0] = tmp1 * pro[0];
209 amp_a0[1] = tmp1 * pro[1];
210 amp_tmp1[0] = amp_a0[0] ;
211 amp_tmp1[1] = amp_a0[1] ;
212 } else if (modetype_param[i] == 0) {
213 //K*(892) K+
214 if (g0[i] == 0) {
215 pro[0] = 1;
216 pro[1] = 0;
217 }
218 bool neo = true;
219 if (neo) {
220 double sBC = SCADot(p23, p23);
221 if (g0[i] == 1) propagatorRBWNeoKstr892(mass1[i], width1[i], sKstr, sPi, sKm, rRes, 1, pro);
222 B[0] = barrierNeo(1, sKstr, sPi, sKm, rRes, mass1[i]);
223 B[1] = barrierNeoDs(1, sD, sKstr, sKp, rD, mDs, mass1[i]);
224 temp_PDF = (sBC - sPhi1020 + ((sD - sKp) * (sKm - sPi) / (sKstr)));
225 } else {
226 if (g0[i] == 1) propagatorRBW(mass1[i], width1[i], sKstr, sKm, sPi, rRes, 1, pro);
227 B[0] = barrier(1, sKstr, sKm, sPi, rRes);
228 B[1] = barrier(1, sD, sKstr, sKp, rD);
229 for (int m = 0; m < 4; m++) {
230 for (int j = 0; j < 4; j++) {
231 temp_PDF += t1D1[m] * t1kstr1[j] * G[m][j];
232 }
233 }
234 }
235 tmp1 = temp_PDF * B[0] * B[1];
236 amp_tmp1[0] = tmp1 * pro[0];
237 amp_tmp1[1] = tmp1 * pro[1];
238 } else if (modetype_param[i] == 1) {
239 if (g0[i] == 0) {
240 pro[0] = 1;
241 pro[1] = 0;
242 }
243 bool neo = true;
244 if (neo) {
245 if (g0[i] == 1) propagatorRBWNeo(mass1[i], width1[i], sPhi1020, sKm, sKp, rRes, 1, pro);
246 B[0] = barrierNeo(1, sPhi1020, sKp, sKm, rRes, mass1[i]);
247 B[1] = barrierNeoDs(1, sD, sPhi1020, sPi, rD, mDs, mass1[i]);
248 double sBC = SCADot(p23, p23);
249 temp_PDF = (sKstr - sBC + ((sD - sPi) * (sKp - sKm) / (sKstr)));
250 } else {
251 if (g0[i] == 1) propagatorRBW(mass1[i], width1[i], sPhi1020, sKm, sKp, rRes, 1, pro);
252 B[0] = barrier(1, sPhi1020, sKp, sKm, rRes);
253 B[1] = barrier(1, sD, sPhi1020, sPi, rD);
254 for (int m = 0; m < 4; m++) {
255 for (int j = 0; j < 4; j++) {
256 temp_PDF += t1D2[m] * t1phi1020[j] * G[m][j];
257 }
258 }
259 }
260
261 tmp1 = temp_PDF * B[0] * B[1];
262 amp_tmp1[0] = tmp1 * pro[0];
263 amp_tmp1[1] = tmp1 * pro[1];
264 } else if (modetype_param[i] == 3) {
265 //Kstr1430 K S
266 double sKm2[2] = {sKm, mass_EtaP * mass_EtaP};
267 double sPi2[2] = {sPi, mass_Kaon * mass_Kaon};
268 propagatorKstr1430(mass1[i], sKstr1430, sKm2, sPi2, pro);
269 B[0] = barrier(0, sPhi1020, sKp, sKm, rRes);
270 tmp1 = 1 * B[0];
271 amp_tmp1[0] = tmp1 * pro[0];
272 amp_tmp1[1] = tmp1 * pro[1];
273
274 } else if (modetype_param[i] == 4) {
275 if (g0[i] == 1) propagatorRBWNeo(mass1[i], width1[i], sF0_1710, sKp, sKm, rRes, 0, pro);
276 if (g0[i] == 0) {
277 pro[0] = 1;
278 pro[1] = 0;
279 }
280 B[0] = barrier(0, sF0_1710, sKp, sKm, rRes);
281 temp_PDF = 1;
282 tmp1 = temp_PDF * B[0];
283 amp_tmp1[0] = tmp1 * pro[0];
284 amp_tmp1[1] = tmp1 * pro[1];
285 } else if (modetype_param[i] == 5) {
286 //f0(1370) Pi+ S
287 if (g0[i] == 1) propagatorRBWNeo(mass1[i], width1[i], sF0_1370, sKp, sKm, rRes, 0, pro);
288 if (g0[i] == 0) {
289 pro[0] = 1;
290 pro[1] = 0;
291 }
292 B[0] = barrier(0, sF0_1370, sKp, sKm, rRes);
293 tmp1 = 1 * B[0];
294 amp_tmp1[0] = tmp1 * pro[0];
295 amp_tmp1[1] = tmp1 * pro[1];
296 }
297 amp_tmp[0] = amp_tmp1[0];
298 amp_tmp[1] = amp_tmp1[1];
299 Com_Multi(amp_tmp, cof, amp_PDF);
300 PDF[0] += amp_PDF[0];
301 PDF[1] += amp_PDF[1];
302 }
303
304 double value = PDF[0] * PDF[0] + PDF[1] * PDF[1];
305 if (value <= 0) {
306 value = 1e-20;
307 }
308 Result = value;
309 }

◆ calPDF() [1/3]

double calPDF ( double * Km,
double * Pip1,
double * Pip2,
double * Pim )
private

Probability distribution function of the decay.

Definition at line 208 of file EvtD0ToKpipipi.cc.

209 {
210 Km[0] = sqrt(mass_Kaon * mass_Kaon + Km[1] * Km[1] + Km[2] * Km[2] + Km[3] * Km[3]);
211 Pip1[0] = sqrt(mass_Pion * mass_Pion + Pip1[1] * Pip1[1] + Pip1[2] * Pip1[2] + Pip1[3] * Pip1[3]);
212 Pip2[0] = sqrt(mass_Pion * mass_Pion + Pip2[1] * Pip2[1] + Pip2[2] * Pip2[2] + Pip2[3] * Pip2[3]);
213 Pim[0] = sqrt(mass_Pion * mass_Pion + Pim[1] * Pim[1] + Pim[2] * Pim[2] + Pim[3] * Pim[3]);
214
215 EvtComplex PDF[24];
216 int g[3];
217 g[0] = 1; g[1] = 1;
218
219 //-----------D->K*rho--------
220 g[2] = 0;
221 PDF[0] = D2VV(Km, Pip1, Pip2, Pim, g) + D2VV(Km, Pip2, Pip1, Pim, g);
222 g[2] = 1;
223 PDF[1] = D2VV(Km, Pip1, Pip2, Pim, g) + D2VV(Km, Pip2, Pip1, Pim, g);
224 g[2] = 2;
225 PDF[2] = D2VV(Km, Pip1, Pip2, Pim, g) + D2VV(Km, Pip2, Pip1, Pim, g);
226 //-----------D->K*rho finish--
227 //----------D->a1K------------
228 g[2] = 0;
229 PDF[3] = D2AP_A2VP(Km, Pip2, Pip1, Pim, g, 2) + D2AP_A2VP(Km, Pip1, Pip2, Pim, g, 2);
230 g[2] = 2;
231 PDF[4] = D2AP_A2VP(Km, Pip2, Pip1, Pim, g, 2) + D2AP_A2VP(Km, Pip1, Pip2, Pim, g, 2);
232 //----------D->a1K finish-----
233 //--D->K1Pi--K1->K*Pi---------
234 g[2] = 0;
235 PDF[5] = D2AP_A2VP(Pip2, Pim, Km, Pip1, g, 1) + D2AP_A2VP(Pip1, Pim, Km, Pip2, g, 1);
236 g[2] = 2;
237 PDF[6] = D2AP_A2VP(Pip2, Pim, Km, Pip1, g, 1) + D2AP_A2VP(Pip1, Pim, Km, Pip2, g, 1);
238 //--D->K1Pi--K1->K*Pi-finish--
239 //--D->K1Pi--K1->rhoK---------
240 g[2] = 0;
241 PDF[7] = D2AP_A2VP(Pip2, Km, Pip1, Pim, g, 3) + D2AP_A2VP(Pip1, Km, Pip2, Pim, g, 3);
242 //--D->K1Pi--K1->rhoK-finish--
243 //--D->K1Pi--K1->K*0(1430)Pi--
244 PDF[8] = D2AP_A2SP(Pip2, Pim, Km, Pip1, 1) + D2AP_A2SP(Pip1, Pim, Km, Pip2, 1);
245 //--------res finish----------
246 //----------------non-res------------------
247 //--------KPiSrho------------------
248 PDF[9] = D2VS(Pip1, Pim, Km, Pip2, 1, 2) + D2VS(Pip2, Pim, Km, Pip1, 1, 2);
249 //--------K*PiPiS-----------------
250 PDF[10] = D2VS(Km, Pip1, Pip2, Pim, 1, 1) + D2VS(Km, Pip2, Pip1, Pim, 1, 1);
251 //--------K*PiP-------------------
252 PDF[11] = D2PP_P2VP(Pip2, Pim, Km, Pip1, 1) + D2PP_P2VP(Pip1, Pim, Km, Pip2, 1);
253 //--------rhoKA--------------------
254 g[0] = 1; g[1] = 0;
255 g[2] = 0;
256 PDF[12] = 0;
257 g[2] = 2;
258 PDF[13] = D2AP_A2VP(Pip2, Km, Pip1, Pim, g, 3) + D2AP_A2VP(Pip1, Km, Pip2, Pim, g, 3);
259 //-------PHSP-----------------------
260 PDF[14] = PHSP(Km, Pip1) + PHSP(Km, Pip2);
261 //------KPiVPiPiV-----------------------
262 g[0] = 0; g[1] = 0; g[2] = 0;
263 PDF[15] = D2VV(Km, Pip1, Pip2, Pim, g) + D2VV(Km, Pip2, Pip1, Pim, g);
264 //------KPiVPiPiS----------------------
265 PDF[16] = D2VS(Km, Pip1, Pip2, Pim, 0, 1) + D2VS(Km, Pip2, Pip1, Pim, 0, 1);
266 //------KPiSPiPiV----------------------
267 PDF[17] = D2VS(Pip1, Pim, Km, Pip2, 0, 2) + D2VS(Pip2, Pim, Km, Pip1, 0, 2);
268 //-------------------------------------
269 PDF[18] = D2PP_P2VP(Pip2, Km, Pip1, Pim, 2) + D2PP_P2VP(Pip1, Km, Pip2, Pim, 2);
270 //-------------------------------------
271 PDF[19] = D2VP_V2VP(Pip2, Pim, Km, Pip1, 1) + D2VP_V2VP(Pip1, Pim, Km, Pip2, 1);
272 //-------------------------------------
273 PDF[20] = D2VP_V2VP(Pip2, Km, Pip1, Pim, 2) + D2VP_V2VP(Pip1, Km, Pip2, Pim, 2);
274 //-------------------------------------
275 PDF[21] = D2TS(Km, Pip1, Pip2, Pim, 1) + D2TS(Km, Pip2, Pip1, Pim, 1);
276 PDF[22] = D2TS(Pip1, Pim, Km, Pip2, 2) + D2TS(Pip2, Pim, Km, Pip1, 2);
277 PDF[23] = D2AP_A2SP(Km, Pip2, Pip1, Pim, 2) + D2AP_A2SP(Km, Pip1, Pip2, Pim, 2);
278//------------------------------------------
279 EvtComplex cof;
280 EvtComplex pdf, module;
281 pdf = EvtComplex(0, 0);
282 for (int i = 0; i != 24; i++) {
283 cof = EvtComplex(rho[i] * cos(phi[i]), rho[i] * sin(phi[i]));
284 pdf = pdf + cof * PDF[i];
285 }
286 module = conj(pdf) * pdf;
287 double value;
288 value = real(module);
289 return (value <= 0) ? 1e-20 : value;
290 }

◆ calPDF() [2/3]

double calPDF ( const double Ks[],
const double Pip[],
const double Pi01[],
const double Pi02[],
double & Result )
private

Probability distribution function of the decay.

Definition at line 197 of file EvtDToKSpipi0pi0.cc.

198 {
199 double cof[2], amp_tmp1[2], amp_tmp2[2], amp_tmp[2], amp_PDF[2], PDF[2];
200 double flag[3], mass_R[2], width_R[2];
201 double sa[3], sb[3], sc[3], B[3] = {};
202 double t1D[4], t1V[4], t1A[4];
203 double pS[4], pV[4], pD[4], pA[4];
204 double pro1[2], pro2[2], proKPi_S[2], pro[2];
205
206 double rD2 = 25.0;
207 double rRes2 = 9.0;
208 double mass1[8] = {mrho, mrho, mKstr0, mKstr0, msigma, mKstr0, mKstr0, mKstr0 };
209 double mass2[8] = {mrho, ma1, mK1400, mK1400, ma1, mrho, mrho, mrho };
210 double width1[8] = {Grho, Grho, GKstr0, GKstr0, Gsigma, GKstr0, GKstr0, GKstr0 };
211 double width2[8] = {Grho, Ga1, GK1400, GK1400, Ga1, Grho, Grho, Grho };
212 double g0[8] = { 0, 1, 1, 1, 1, 1, 1, 1 };
213 double g1[8] = { 0, 1, 1, 1, 1, 1, 1, 0 };
214 double g2[8] = { 0, 0, 0, 2, 1, 0, 1, 0 };
215 double temp_PDF = 0;
216 PDF[0] = 0;
217 PDF[1] = 0;
218
219 for (int i = 0; i < 8; i++) { //0719 i=0, 7
220 flag[0] = g0[i]; flag[1] = g1[i]; flag[2] = g2[i];
221 mass_R[0] = mass1[i]; mass_R[1] = mass2[i];
222 width_R[0] = width1[i]; width_R[1] = width2[i];
223
224 amp_tmp[0] = 0;
225 amp_tmp[1] = 0;
226 amp_tmp1[0] = 0;
227 amp_tmp1[1] = 0;
228 amp_tmp2[0] = 0;
229 amp_tmp2[1] = 0;
230
231 cof[0] = rho[i] * cos(phi[i]);
232 cof[1] = rho[i] * sin(phi[i]);
233
234 if (modetype[i] == 100) { //D->Ks (rho+ pi0 ),D->Ks a1(1260)+
235
236 temp_PDF = 0;
237 double t2A[4][4];
238
239 for (int ii = 0; ii != 4; ii++) {
240 pV[ii] = Pip[ii] + Pi02[ii];
241 pA[ii] = pV[ii] + Pi01[ii];
242 pD[ii] = pA[ii] + Ks[ii];
243 }
244 sa[0] = SCADot(pV, pV);
245 sb[0] = SCADot(Pip, Pip);
246 sc[0] = SCADot(Pi02, Pi02);
247 sa[1] = SCADot(pA, pA);
248 sb[1] = sa[0];
249 sc[1] = SCADot(Pi01, Pi01);
250 sa[2] = SCADot(pD, pD);
251 sb[2] = sa[1];
252 sc[2] = SCADot(Ks, Ks);
253 if (flag[0] == 1) {
254 propagatorGS(mass_R[0]*mass_R[0], mass_R[0], width_R[0], sa[0], sb[0], sc[0], rRes2, pro1);
255 } else if (flag[0] == 0) {pro1[0] = 1; pro1[1] = 0;}
256
257 if (flag[1] == 1) {
258 propagatorRBW_a1(mass_R[1]*mass_R[1], mass_R[1], width_R[1], sa[1], sb[1], sc[1], rRes2, flag[2], pro2);
259 } else if (flag[1] == 0) {pro2[0] = 1; pro2[1] = 0;}
260 B[0] = Barrier(mass_R[0] * mass_R[0], 1, sa[0], sb[0], sc[0], rRes2);
261 B[2] = Barrier(mD * mD, 1, sa[2], sb[2], sc[2], rD2);
262 calt1(Pip, Pi02, t1V);
263 calt1(pA, Ks, t1D);
264 if (flag[2] == 0) {
265 for (int ii = 0; ii != 4; ii++) {
266 for (int j = 0; j != 4; j++) {
267 temp_PDF += t1D[ii] * (G[ii][j] - pA[ii] * pA[j] / sa[1]) * t1V[j] * G[ii][ii] * G[j][j];
268 }
269 }
270 B[1] = 1;
271 } else if (flag[2] == 2) {
272 calt2(pV, Pi01, t2A);
273 for (int ii = 0; ii != 4; ii++) {
274 for (int j = 0; j != 4; j++) {
275 temp_PDF += t1D[ii] * t2A[ii][j] * t1V[j] * G[ii][ii] * G[j][j];
276 }
277 }
278 B[1] = Barrier(mass_R[1] * mass_R[1], 2, sa[1], sb[1], sc[1], rRes2);
279 }
280 Com_Multi(pro1, pro2, pro);
281 amp_tmp1[0] = temp_PDF * B[0] * B[1] * B[2] * pro[0];
282 amp_tmp1[1] = temp_PDF * B[0] * B[1] * B[2] * pro[1];
283
284
285 temp_PDF = 0;
286 for (int ii = 0; ii != 4; ii++) {
287 pV[ii] = Pip[ii] + Pi01[ii];
288 pA[ii] = pV[ii] + Pi02[ii];
289 pD[ii] = pA[ii] + Ks[ii];
290 }
291 sa[0] = SCADot(pV, pV);
292 sb[0] = SCADot(Pip, Pip);
293 sc[0] = SCADot(Pi01, Pi01);
294 sa[1] = SCADot(pA, pA);
295 sb[1] = sa[0];
296 sc[1] = SCADot(Pi02, Pi02);
297 sa[2] = SCADot(pD, pD);
298 sb[2] = sa[1];
299 sc[2] = SCADot(Ks, Ks);
300 if (flag[0] == 1) {
301 propagatorGS(mass_R[0]*mass_R[0], mass_R[0], width_R[0], sa[0], sb[0], sc[0], rRes2, pro1);
302 } else if (flag[0] == 0) {pro1[0] = 1; pro1[1] = 0;}
303
304 if (flag[1] == 1) {
305 propagatorRBW_a1(mass_R[1]*mass_R[1], mass_R[1], width_R[1], sa[1], sb[1], sc[1], rRes2, flag[2], pro2);
306 } else if (flag[1] == 0) {pro2[0] = 1; pro2[1] = 0;}
307 B[0] = Barrier(mass_R[0] * mass_R[0], 1, sa[0], sb[0], sc[0], rRes2);
308 B[2] = Barrier(mD * mD, 1, sa[2], sb[2], sc[2], rD2);
309 calt1(Pip, Pi01, t1V);
310 calt1(pA, Ks, t1D);
311 if (flag[2] == 0) {
312 for (int ii = 0; ii != 4; ii++) {
313 for (int j = 0; j != 4; j++) {
314 temp_PDF += t1D[ii] * (G[ii][j] - pA[ii] * pA[j] / sa[1]) * t1V[j] * G[ii][ii] * G[j][j];
315 }
316 }
317 B[1] = 1;
318 } else if (flag[2] == 2) {
319 calt2(pV, Pi02, t2A);
320 for (int ii = 0; ii != 4; ii++) {
321 for (int j = 0; j != 4; j++) {
322 temp_PDF += t1D[ii] * t2A[ii][j] * t1V[j] * G[ii][ii] * G[j][j];
323 }
324 }
325 B[1] = Barrier(mass_R[1] * mass_R[1], 2, sa[1], sb[1], sc[1], rRes2);
326 }
327 Com_Multi(pro1, pro2, pro);
328 amp_tmp2[0] = temp_PDF * B[0] * B[1] * B[2] * pro[0];
329 amp_tmp2[1] = temp_PDF * B[0] * B[1] * B[2] * pro[1];
330 } else if (modetype[i] == 200) { //D->(K*0 pi0) pi+
331
332 temp_PDF = 0;
333 double t2A[4][4];
334 for (int ii = 0; ii != 4; ii++) {
335 pV[ii] = Ks[ii] + Pi02[ii];
336 pA[ii] = pV[ii] + Pi01[ii];
337 pD[ii] = pA[ii] + Pip[ii];
338 }
339 sa[0] = SCADot(pV, pV);
340 sb[0] = SCADot(Ks, Ks);
341 sc[0] = SCADot(Pi02, Pi02);
342 sa[1] = SCADot(pA, pA);
343 sb[1] = sa[0];
344 sc[1] = SCADot(Pi01, Pi01);
345 sa[2] = SCADot(pD, pD);
346 sb[2] = sa[1];
347 sc[2] = SCADot(Pip, Pip);
348 if (flag[0] == 1) {
349 propagatorRBW(mass_R[0]*mass_R[0], mass_R[0], width_R[0], sa[0], sb[0], sc[0], rRes2, 1, pro1);
350 } else if (flag[0] == 0) {pro1[0] = 1; pro1[1] = 0;}
351
352 if (flag[1] == 1) {
353 propagatorRBW(mass_R[1]*mass_R[1], mass_R[1], width_R[1], sa[1], sb[1], sc[1], rRes2, flag[2], pro2);
354 } else if (flag[1] == 0) {pro2[0] = 1; pro2[1] = 0;}
355 B[0] = Barrier(mass_R[0] * mass_R[0], 1, sa[0], sb[0], sc[0], rRes2);
356 B[2] = Barrier(mD * mD, 1, sa[2], sb[2], sc[2], rD2);
357 calt1(Ks, Pi02, t1V);
358 calt1(pA, Pip, t1D);
359 if (flag[2] == 0) {
360 for (int ii = 0; ii != 4; ii++) {
361 for (int j = 0; j != 4; j++) {
362 temp_PDF += t1D[ii] * (G[ii][j] - pA[ii] * pA[j] / sa[1]) * t1V[j] * G[ii][ii] * G[j][j];
363 }
364 }
365 B[1] = 1;
366 } else if (flag[2] == 2) {
367 calt2(pV, Pi01, t2A);
368 for (int ii = 0; ii != 4; ii++) {
369 for (int j = 0; j != 4; j++) {
370 temp_PDF += t1D[ii] * t2A[ii][j] * t1V[j] * G[ii][ii] * G[j][j];
371 }
372 }
373 B[1] = Barrier(mass_R[1] * mass_R[1], 2, sa[1], sb[1], sc[1], rRes2);
374 }
375 Com_Multi(pro1, pro2, pro);
376 amp_tmp1[0] = temp_PDF * B[0] * B[1] * B[2] * pro[0];
377 amp_tmp1[1] = temp_PDF * B[0] * B[1] * B[2] * pro[1];
378 temp_PDF = 0;
379 for (int ii = 0; ii != 4; ii++) {
380 pV[ii] = Ks[ii] + Pi01[ii];
381 pA[ii] = pV[ii] + Pi02[ii];
382 pD[ii] = pA[ii] + Pip[ii];
383 }
384 sa[0] = SCADot(pV, pV);
385 sb[0] = SCADot(Ks, Ks);
386 sc[0] = SCADot(Pi01, Pi01);
387 sa[1] = SCADot(pA, pA);
388 sb[1] = sa[0];
389 sc[1] = SCADot(Pi02, Pi02);
390 sa[2] = SCADot(pD, pD);
391 sb[2] = sa[1];
392 sc[2] = SCADot(Pip, Pip);
393 if (flag[0] == 1) {
394 propagatorRBW(mass_R[0]*mass_R[0], mass_R[0], width_R[0], sa[0], sb[0], sc[0], rRes2, 1, pro1);
395 } else if (flag[0] == 0) {pro1[0] = 1; pro1[1] = 0;}
396
397 if (flag[1] == 1) {
398 propagatorRBW(mass_R[1]*mass_R[1], mass_R[1], width_R[1], sa[1], sb[1], sc[1], rRes2, flag[2], pro2);
399 } else if (flag[1] == 0) {pro2[0] = 1; pro2[1] = 0;}
400
401 B[0] = Barrier(mass_R[0] * mass_R[0], 1, sa[0], sb[0], sc[0], rRes2);
402 B[2] = Barrier(mD * mD, 1, sa[2], sb[2], sc[2], rD2);
403 calt1(Ks, Pi01, t1V);
404 calt1(pA, Pip, t1D);
405 if (flag[2] == 0) {
406 for (int ii = 0; ii != 4; ii++) {
407 for (int j = 0; j != 4; j++) {
408 temp_PDF += t1D[ii] * (G[ii][j] - pA[ii] * pA[j] / sa[1]) * t1V[j] * G[ii][ii] * G[j][j];
409 }
410 }
411 B[1] = 1;
412 } else if (flag[2] == 2) {
413 calt2(pV, Pi02, t2A);
414 for (int ii = 0; ii != 4; ii++) {
415 for (int j = 0; j != 4; j++) {
416 temp_PDF += t1D[ii] * t2A[ii][j] * t1V[j] * G[ii][ii] * G[j][j];
417 }
418 }
419 B[1] = Barrier(mass_R[1] * mass_R[1], 2, sa[1], sb[1], sc[1], rRes2);
420 }
421
422 Com_Multi(pro1, pro2, pro);
423 amp_tmp2[0] = temp_PDF * B[0] * B[1] * B[2] * pro[0];
424 amp_tmp2[1] = temp_PDF * B[0] * B[1] * B[2] * pro[1];
425 } else if (modetype[i] == 204) { //D->Ks a1(1260)+, a1(1260)+->sigma pi+
426 temp_PDF = 0;
427
428 for (int ii = 0; ii != 4; ii++) {
429 pS[ii] = Pi01[ii] + Pi02[ii];
430 pA[ii] = pS[ii] + Pip[ii];
431 pD[ii] = pA[ii] + Ks[ii];
432 }
433 sa[0] = SCADot(pS, pS);
434 sb[0] = SCADot(Pi01, Pi01);
435 sc[0] = SCADot(Pi02, Pi02);
436 sa[1] = SCADot(pA, pA);
437 sb[1] = sa[0];
438 sc[1] = SCADot(Pip, Pip);
439 sa[2] = SCADot(pD, pD);
440 sb[2] = sa[1];
441 sc[2] = SCADot(Ks, Ks);
442 B[1] = Barrier(mass_R[1] * mass_R[1], 1, sa[1], sb[1], sc[1], rRes2);
443 B[2] = Barrier(mD * mD, 1, sa[2], sb[2], sc[2], rD2);
444 calt1(pA, Ks, t1D);
445 calt1(pS, Pip, t1A);
446 for (int ii = 0; ii != 4; ii++) {
447 temp_PDF += t1D[ii] * t1A[ii] * (G[ii][ii]);
448 }
449 if (flag[0] == 1) { //sigma500
450 propagatorsigma500(sa[0], sb[0], sc[0], pro1);
451 } else if (flag[0] == 0) {pro1[0] = 1; pro1[1] = 0;}
452
453 if (flag[1] == 1) { //a1
454 propagatorRBW_a1(mass_R[1]*mass_R[1], mass_R[1], width_R[1], sa[1], sb[1], sc[1], rRes2, 1, pro2);
455 } else if (flag[1] == 0) {pro2[0] = 1; pro2[1] = 0;}
456
457 Com_Multi(pro1, pro2, pro);
458 amp_tmp1[0] = temp_PDF * B[1] * B[2] * pro[0];
459 amp_tmp1[1] = temp_PDF * B[1] * B[2] * pro[1];
460 temp_PDF = 0;
461 amp_tmp2[0] = amp_tmp1[0];
462 amp_tmp2[1] = amp_tmp1[1];
463 } else if (modetype[i] == 120) { //D->(Ks pi0)S rho+
464 temp_PDF = 0;
465
466 for (int ii = 0; ii != 4; ii++) {
467 pS[ii] = Ks[ii] + Pi02[ii];
468 pV[ii] = Pip[ii] + Pi01[ii];
469 pD[ii] = pS[ii] + pV[ii];
470 }
471 sa[0] = SCADot(pS, pS);
472 sb[0] = SCADot(Ks, Ks);
473 sc[0] = SCADot(Pi02, Pi02);
474 sa[1] = SCADot(pV, pV);
475 sb[1] = SCADot(Pip, Pip);
476 sc[1] = SCADot(Pi01, Pi01);
477 sa[2] = SCADot(pD, pD);
478 sb[2] = sa[0];
479 sc[2] = sa[1];
480 if (flag[0] == 1) {
481 propagatorGS(mass_R[1]*mass_R[1], mass_R[1], width_R[0], sa[1], sb[1], sc[1], rRes2, pro1);
482 } else if (flag[0] == 0) { pro1[0] = 1; pro1[1] = 0; }
483 KPiSLASS(sa[0], sb[0], sc[0], proKPi_S);
484 if (flag[1] == 1) {
485 pro2[0] = proKPi_S[0]; pro2[1] = proKPi_S[1];
486 } else if (flag[1] == 0) {pro2[0] = 1; pro2[1] = 0;}
487
488 B[1] = Barrier(mass_R[1] * mass_R[1], 1, sa[1], sb[1], sc[1], rRes2);
489 B[2] = Barrier(mD * mD, 1, sa[2], sb[2], sc[2], rD2);
490 calt1(Pip, Pi01, t1V);
491 calt1(pS, pV, t1D);
492 for (int ii = 0; ii != 4; ii++) {
493 temp_PDF += G[ii][ii] * t1D[ii] * t1V[ii];
494 }
495 Com_Multi(pro1, pro2, pro);
496 amp_tmp1[0] = temp_PDF * B[1] * B[2] * pro[0];
497 amp_tmp1[1] = temp_PDF * B[1] * B[2] * pro[1];
498
499 temp_PDF = 0;
500 for (int ii = 0; ii != 4; ii++) {
501 pS[ii] = Ks[ii] + Pi01[ii];
502 pV[ii] = Pip[ii] + Pi02[ii];
503 pD[ii] = pS[ii] + pV[ii];
504 }
505 sa[0] = SCADot(pS, pS);
506 sb[0] = SCADot(Ks, Ks);
507 sc[0] = SCADot(Pi01, Pi01);
508 sa[1] = SCADot(pV, pV);
509 sb[1] = SCADot(Pip, Pip);
510 sc[1] = SCADot(Pi02, Pi02);
511 sa[2] = SCADot(pD, pD);
512 sb[2] = sa[0];
513 sc[2] = sa[1];
514 if (flag[0] == 1) {
515 propagatorGS(mass_R[1]*mass_R[1], mass_R[1], width_R[0], sa[1], sb[1], sc[1], rRes2, pro1);
516 } else if (flag[0] == 0) { pro1[0] = 1; pro1[1] = 0; }
517 KPiSLASS(sa[0], sb[0], sc[0], proKPi_S);
518 if (flag[1] == 1) {
519 pro2[0] = proKPi_S[0]; pro2[1] = proKPi_S[1];
520 } else if (flag[1] == 0) {pro2[0] = 1; pro2[1] = 0;}
521 B[1] = Barrier(mass_R[1] * mass_R[1], 1, sa[1], sb[1], sc[1], rRes2);
522 B[2] = Barrier(mD * mD, 1, sa[2], sb[2], sc[2], rD2);
523 calt1(Pip, Pi02, t1V);
524 calt1(pS, pV, t1D);
525 for (int ii = 0; ii != 4; ii++) {
526 temp_PDF += G[ii][ii] * t1D[ii] * t1V[ii];
527 }
528 Com_Multi(pro1, pro2, pro);
529 amp_tmp2[0] = temp_PDF * B[1] * B[2] * pro[0];
530 amp_tmp2[1] = temp_PDF * B[1] * B[2] * pro[1];
531 } else if (modetype[i] == 2) {
532 double t1V1[4], t1V2[4], t2D[4][4];
533 temp_PDF = 0;
534
535 double pV1[4], pV2[4];
536 for (int ii = 0; ii != 4; ii++) {
537 pV1[ii] = Ks[ii] + Pi01[ii];
538 pV2[ii] = Pip[ii] + Pi02[ii];
539 pD[ii] = pV1[ii] + pV2[ii];
540 }
541 sa[0] = SCADot(pV1, pV1);
542 sb[0] = SCADot(Ks, Ks);
543 sc[0] = SCADot(Pi01, Pi01);
544 sa[1] = SCADot(pV2, pV2);
545 sb[1] = SCADot(Pip, Pip);
546 sc[1] = SCADot(Pi02, Pi02);
547 sa[2] = SCADot(pD, pD);
548 sb[2] = sa[0];
549 sc[2] = sa[1];
550 if (flag[0] == 1) {
551 propagatorRBW(mass_R[0]*mass_R[0], mass_R[0], width_R[0], sa[0], sb[0], sc[0], rRes2, 1, pro1);
552 } else if (flag[0] == 0) {pro1[0] = 1; pro1[1] = 0;}
553 if (flag[1] == 1) {
554 propagatorGS(mass_R[1]*mass_R[1], mass_R[1], width_R[1], sa[1], sb[1], sc[1], rRes2, pro2);
555 } else if (flag[1] == 0) {pro2[0] = 1; pro2[1] = 0;}
556 B[0] = Barrier(mass_R[0] * mass_R[0], 1, sa[0], sb[0], sc[0], rRes2);
557 B[1] = Barrier(mass_R[1] * mass_R[1], 1, sa[1], sb[1], sc[1], rRes2);
558 calt1(Ks, Pi01, t1V1);
559 calt1(Pip, Pi02, t1V2);
560 if (flag[2] == 0) {
561 for (int ii = 0; ii != 4; ii++) {
562 temp_PDF += (G[ii][ii]) * t1V1[ii] * t1V2[ii];
563 }
564 B[2] = 1;
565 }
566 if (flag[2] == 1) {
567 calt1(pV1, pV2, t1D);
568 for (int ii = 0; ii != 4; ii++) {
569 for (int j = 0; j != 4; j++) {
570 for (int k = 0; k != 4; k++) {
571 for (int l = 0; l != 4; l++) {
572 temp_PDF += E[ii][j][k][l] * pD[ii] * t1D[j] * t1V1[k] * t1V2[l] *
573 (G[ii][ii]) * (G[j][j]) * (G[l][l]) * (G[k][k]);
574 }
575 }
576 }
577 }
578 B[2] = Barrier(mD * mD, 1, sa[2], sb[2], sc[2], rD2);
579 }
580 if (flag[2] == 2) {
581 calt2(pV1, pV2, t2D);
582 for (int ii = 0; ii != 4; ii++) {
583 for (int j = 0; j != 4; j++) {
584 temp_PDF += t2D[ii][j] * t1V1[ii] * t1V2[j] * (G[ii][ii]) * (G[j][j]);
585 }
586 }
587 B[2] = Barrier(mD * mD, 2, sa[2], sb[2], sc[2], rD2);
588 }
589 Com_Multi(pro1, pro2, pro);
590 amp_tmp1[0] = temp_PDF * B[0] * B[1] * B[2] * pro[0];
591 amp_tmp1[1] = temp_PDF * B[0] * B[1] * B[2] * pro[1];
592 temp_PDF = 0;
593 for (int ii = 0; ii != 4; ii++) {
594 pV1[ii] = Ks[ii] + Pi02[ii];
595 pV2[ii] = Pip[ii] + Pi01[ii];
596 pD[ii] = pV1[ii] + pV2[ii];
597 }
598 sa[0] = SCADot(pV1, pV1);
599 sb[0] = SCADot(Ks, Ks);
600 sc[0] = SCADot(Pi02, Pi02);
601 sa[1] = SCADot(pV2, pV2);
602 sb[1] = SCADot(Pip, Pip);
603 sc[1] = SCADot(Pi01, Pi01);
604 sa[2] = SCADot(pD, pD);
605 sb[2] = sa[0];
606 sc[2] = sa[1];
607 if (flag[0] == 1) {
608 propagatorRBW(mass_R[0]*mass_R[0], mass_R[0], width_R[0], sa[0], sb[0], sc[0], rRes2, 1, pro1);
609 } else if (flag[0] == 0) {pro1[0] = 1; pro1[1] = 0;}
610 if (flag[1] == 1) {
611 propagatorGS(mass_R[1]*mass_R[1], mass_R[1], width_R[1], sa[1], sb[1], sc[1], rRes2, pro2);
612 } else if (flag[1] == 0) {pro2[0] = 1; pro2[1] = 0;}
613 B[0] = Barrier(mass_R[0] * mass_R[0], 1, sa[0], sb[0], sc[0], rRes2);
614 B[1] = Barrier(mass_R[1] * mass_R[1], 1, sa[1], sb[1], sc[1], rRes2);
615 calt1(Ks, Pi02, t1V1);
616 calt1(Pip, Pi01, t1V2);
617 if (flag[2] == 0) {
618 for (int ii = 0; ii != 4; ii++) {
619 temp_PDF += (G[ii][ii]) * t1V1[ii] * t1V2[ii];
620 }
621 B[2] = 1;
622 }
623 if (flag[2] == 1) {
624 calt1(pV1, pV2, t1D);
625 for (int ii = 0; ii != 4; ii++) {
626 for (int j = 0; j != 4; j++) {
627 for (int k = 0; k != 4; k++) {
628 for (int l = 0; l != 4; l++) {
629 temp_PDF += E[ii][j][k][l] * pD[ii] * t1D[j] * t1V1[k] * t1V2[l] *
630 (G[ii][ii]) * (G[j][j]) * (G[l][l]) * (G[k][k]);
631 }
632 }
633 }
634 }
635 B[2] = Barrier(mD * mD, 1, sa[2], sb[2], sc[2], rD2);
636 }
637 if (flag[2] == 2) {
638 calt2(pV1, pV2, t2D);
639 for (int ii = 0; ii != 4; ii++) {
640 for (int j = 0; j != 4; j++) {
641 temp_PDF += t2D[ii][j] * t1V1[ii] * t1V2[j] * (G[ii][ii]) * (G[j][j]);
642 }
643 }
644 B[2] = Barrier(mD * mD, 2, sa[2], sb[2], sc[2], rD2);
645 }
646 Com_Multi(pro1, pro2, pro);
647 amp_tmp2[0] = temp_PDF * B[0] * B[1] * B[2] * pro[0];
648 amp_tmp2[1] = temp_PDF * B[0] * B[1] * B[2] * pro[1];
649 } else if (modetype[i] == 43) {
650 double KPi[4];
651 for (int ii = 0; ii != 4; ii++) {
652 KPi[ii] = Ks[ii] + Pi01[ii];
653 }
654 sa[0] = SCADot(KPi, KPi);
655 sb[0] = SCADot(Ks, Ks);
656 sc[0] = SCADot(Pi01, Pi01);
657 KPiSLASS(sa[0], sb[0], sc[0], proKPi_S);
658 if (flag[0] == 1) {
659 pro1[0] = proKPi_S[0]; pro1[1] = proKPi_S[1];
660 } else if (flag[0] == 0) {pro1[0] = 1; pro1[1] = 0;}
661
662 amp_tmp1[0] = pro1[0];
663 amp_tmp1[1] = pro1[1];
664
665 for (int ii = 0; ii != 4; ii++) {
666 KPi[ii] = Ks[ii] + Pi02[ii];
667 }
668 sa[0] = SCADot(KPi, KPi);
669 sb[0] = SCADot(Ks, Ks);
670 sc[0] = SCADot(Pi02, Pi02);
671 KPiSLASS(sa[0], sb[0], sc[0], proKPi_S);
672 if (flag[0] == 1) {
673 pro1[0] = proKPi_S[0]; pro1[1] = proKPi_S[1];
674 } else if (flag[0] == 0) {pro1[0] = 1; pro1[1] = 0;}
675
676 amp_tmp2[0] = pro1[0];
677 amp_tmp2[1] = pro1[1];
678 } else if (modetype[i] == 403) {
679 temp_PDF = 0;
680 double pP[4];
681 for (int ii = 0; ii != 4; ii++) {
682 pV[ii] = Pip[ii] + Pi02[ii];
683 pP[ii] = pV[ii] + Pi01[ii];
684 pD[ii] = pP[ii] + Ks[ii];
685 }
686 sa[0] = SCADot(pV, pV);
687 sb[0] = SCADot(Pip, Pip);
688 sc[0] = SCADot(Pi02, Pi02);
689 sa[1] = SCADot(pP, pP);
690 sb[1] = sa[0];
691 sc[1] = SCADot(Pi01, Pi01);
692 sa[2] = SCADot(pD, pD);
693 sb[2] = sa[1];
694 sc[2] = SCADot(Ks, Ks);
695 B[0] = Barrier(mass_R[0] * mass_R[0], 1, sa[0], sb[0], sc[0], rRes2);
696 B[1] = Barrier(mass_R[1] * mass_R[1], 1, sa[1], sb[1], sc[1], rRes2);
697 propagatorGS(mass_R[0]*mass_R[0], mass_R[0], width_R[0], sa[0], sb[0], sc[0], rRes2, pro);
698 calt1(Pip, Pi02, t1V);
699 for (int ii = 0; ii != 4; ii++) {
700 temp_PDF += Pi01[ii] * t1V[ii] * (G[ii][ii]);
701 }
702 amp_tmp1[0] = temp_PDF * B[0] * B[1] * pro[0];
703 amp_tmp1[1] = temp_PDF * B[0] * B[1] * pro[1];
704 temp_PDF = 0;
705 for (int ii = 0; ii != 4; ii++) {
706 pV[ii] = Pip[ii] + Pi01[ii];
707 pP[ii] = pV[ii] + Pi02[ii];
708 pD[ii] = pP[ii] + Ks[ii];
709 }
710 sa[0] = SCADot(pV, pV);
711 sb[0] = SCADot(Pip, Pip);
712 sc[0] = SCADot(Pi01, Pi01);
713 sa[1] = SCADot(pP, pP);
714 sb[1] = sa[0];
715 sc[1] = SCADot(Pi02, Pi02);
716 sa[2] = SCADot(pD, pD);
717 sb[2] = sa[1];
718 sc[2] = SCADot(Ks, Ks);
719 B[0] = Barrier(mass_R[0] * mass_R[0], 1, sa[0], sb[0], sc[0], rRes2);
720 B[1] = Barrier(mass_R[1] * mass_R[1], 1, sa[1], sb[1], sc[1], rRes2);
721 propagatorGS(mass_R[0]*mass_R[0], mass_R[0], width_R[0], sa[0], sb[0], sc[0], rRes2, pro);
722 calt1(Pip, Pi01, t1V);
723 for (int ii = 0; ii != 4; ii++) {
724 temp_PDF += Pi02[ii] * t1V[ii] * (G[ii][ii]);
725 }
726 amp_tmp2[0] = temp_PDF * B[0] * B[1] * pro[0];
727 amp_tmp2[1] = temp_PDF * B[0] * B[1] * pro[1];
728 } else if (modetype[i] == 220) {
729 temp_PDF = 0;
730 for (int ii = 0; ii != 4; ii++) {
731 pS[ii] = Pip[ii] + Pi02[ii];
732 pV[ii] = Ks[ii] + Pi01[ii];
733 pD[ii] = pS[ii] + pV[ii];
734 }
735 sa[0] = SCADot(pS, pS);
736 sb[0] = SCADot(Pip, Pip);
737 sc[0] = SCADot(Pi02, Pi02);
738 sa[1] = SCADot(pV, pV);
739 sb[1] = SCADot(Ks, Ks);
740 sc[1] = SCADot(Pi01, Pi01);
741 sa[2] = SCADot(pD, pD);
742 sb[2] = sa[0];
743 sc[2] = sa[1];
744 if (flag[0] == 1) {
745 propagatorRBW(mass_R[0]*mass_R[0], mass_R[0], width_R[0], sa[1], sb[1], sc[1], rRes2, 1, pro);
746 }
747 if (flag[0] == 0) { pro[0] = 1; pro[1] = 0; }
748 B[1] = Barrier(mass_R[0] * mass_R[0], 1, sa[1], sb[1], sc[1], rRes2);
749 B[2] = Barrier(mD * mD, 1, sa[2], sb[2], sc[2], rD2);
750 calt1(Ks, Pi01, t1V);
751 calt1(pS, pV, t1D);
752 for (int ii = 0; ii != 4; ii++) {
753 temp_PDF += G[ii][ii] * t1D[ii] * t1V[ii];
754 }
755 amp_tmp1[0] = temp_PDF * B[1] * B[2] * pro[0];
756 amp_tmp1[1] = temp_PDF * B[1] * B[2] * pro[1];
757 temp_PDF = 0;
758 for (int ii = 0; ii != 4; ii++) {
759 pS[ii] = Pip[ii] + Pi01[ii];
760 pV[ii] = Ks[ii] + Pi02[ii];
761 pD[ii] = pS[ii] + pV[ii];
762 }
763 sa[0] = SCADot(pS, pS);
764 sb[0] = SCADot(Pip, Pip);
765 sc[0] = SCADot(Pi01, Pi01);
766 sa[1] = SCADot(pV, pV);
767 sb[1] = SCADot(Ks, Ks);
768 sc[1] = SCADot(Pi02, Pi02);
769 sa[2] = SCADot(pD, pD);
770 sb[2] = sa[0];
771 sc[2] = sa[1];
772 if (flag[0] == 1) {
773 propagatorRBW(mass_R[0]*mass_R[0], mass_R[0], width_R[0], sa[1], sb[1], sc[1], rRes2, 1, pro);
774 }
775 if (flag[0] == 0) { pro[0] = 1; pro[1] = 0; }
776 B[1] = Barrier(mass_R[0] * mass_R[0], 1, sa[1], sb[1], sc[1], rRes2);
777 B[2] = Barrier(mD * mD, 1, sa[2], sb[2], sc[2], rD2);
778 calt1(Ks, Pi02, t1V);
779 calt1(pS, pV, t1D);
780 for (int ii = 0; ii != 4; ii++) {
781 temp_PDF += G[ii][ii] * t1D[ii] * t1V[ii];
782 }
783 amp_tmp2[0] = temp_PDF * B[1] * B[2] * pro[0];
784 amp_tmp2[1] = temp_PDF * B[1] * B[2] * pro[1];
785 }
786 amp_tmp[0] = amp_tmp1[0] + amp_tmp2[0];
787 amp_tmp[1] = amp_tmp1[1] + amp_tmp2[1];
788 Com_Multi(amp_tmp, cof, amp_PDF);
789
790 PDF[0] += amp_PDF[0];
791 PDF[1] += amp_PDF[1];
792 }
793 double value = PDF[0] * PDF[0] + PDF[1] * PDF[1];
794
795 Result = value;
796
797 return value;
798 }

◆ calPDF() [3/3]

double calPDF ( double Km[],
double Pip1[],
double Pip2[],
double Pim[] )
private

Probability distribution function of the decay.

Definition at line 199 of file EvtDToKSpipipi.cc.

200 {
201 EvtComplex PDF[100];
202 double P14[4], P24[4], P34[4];
203 for (int i = 0; i < 4; i++) {
204 P14[i] = Ks[i] + Pim[i];
205 P24[i] = Pip1[i] + Pim[i];
206 P34[i] = Pip2[i] + Pim[i];
207 }
208 //----------D->a1Ks--------------
209 //----------a1->rhoPi------------
210 PDF[0] = D2AP_A2VP(Ks, Pip2, Pip1, Pim, 0) * getprop(P24, Pip2, ma1, Ga1, 1, 0) *
211 getprop(Pip1, Pim, mrho, Grho, 2, 1) +
212 D2AP_A2VP(Ks, Pip1, Pip2, Pim, 0) * getprop(P34, Pip1, ma1, Ga1, 1, 0) *
213 getprop(Pip2, Pim, mrho, Grho, 2, 1);
214 PDF[1] = D2AP_A2VP(Ks, Pip2, Pip1, Pim, 2) * getprop(P24, Pip2, ma1, Ga1, 1, 2) *
215 getprop(Pip1, Pim, mrho, Grho, 2, 1) +
216 D2AP_A2VP(Ks, Pip1, Pip2, Pim, 2) * getprop(P34, Pip1, ma1, Ga1, 1, 2) *
217 getprop(Pip2, Pim, mrho, Grho, 2, 1);
218 //----------a1->sigma pi---------
219 PDF[2] = D2AP_A2SP(Ks, Pip2, Pip1, Pim) * getprop(P24, Pip2, ma1, Ga1, 1, 1) *
220 getprop(Pip1, Pim, msigma, Gsigma, 4, 0) +
221 D2AP_A2SP(Ks, Pip1, Pip2, Pim) * getprop(P34, Pip1, ma1, Ga1, 1, 1) *
222 getprop(Pip2, Pim, msigma, Gsigma, 4, 0);
223 //----------D->a1K finish-----
224 //---------D->K1(1400) pi-----
225 //K1400[S]->K* pi
226 PDF[3] = D2AP_A2VP(Pip2, Pip1, Ks, Pim, 0) * getprop(P14, Pip1, mK1400, GK1400, 1, 0) *
227 getprop(Ks, Pim, mKstr, GKstr, 1, 1) +
228 D2AP_A2VP(Pip1, Pip2, Ks, Pim, 0) * getprop(P14, Pip2, mK1400, GK1400, 1, 0) *
229 getprop(Ks, Pim, mKstr, GKstr, 1, 1);
230 //K1400[D]->K* pi
231 PDF[4] = D2AP_A2VP(Pip2, Pip1, Ks, Pim, 2) * getprop(P14, Pip1, mK1400, GK1400, 1, 2) *
232 getprop(Ks, Pim, mKstr, GKstr, 1, 1) +
233 D2AP_A2VP(Pip1, Pip2, Ks, Pim, 2) * getprop(P14, Pip2, mK1400, GK1400, 1, 2) *
234 getprop(Ks, Pim, mKstr, GKstr, 1, 1);
235 //-----------------------------
236 //-------K1270[S]->Ksrho-------
237 PDF[5] = D2AP_A2VP(Pip2, Ks, Pip1, Pim, 0) * getprop(P24, Ks, mK1270, GK1270, 0, 0) *
238 getprop(Pip1, Pim, mrho, Grho, 2, 1) +
239 D2AP_A2VP(Pip1, Ks, Pip2, Pim, 0) * getprop(P34, Ks, mK1270, GK1270, 0, 0) *
240 getprop(Pip2, Pim, mrho, Grho, 2, 1);
241 //-------D->rhoKAD------------
242 PDF[6] = D2AP_A2VP(Pip2, Ks, Pip1, Pim, 0) * getprop(Pip1, Pim, mrho, Grho, 2, 1) +
243 D2AP_A2VP(Pip1, Ks, Pip2, Pim, 0) * getprop(Pip2, Pim, mrho, Grho, 2, 1);
244 PDF[7] = D2AP_A2VP(Pip2, Ks, Pip1, Pim, 2) * getprop(Pip1, Pim, mrho, Grho, 2, 1) +
245 D2AP_A2VP(Pip1, Ks, Pip2, Pim, 2) * getprop(Pip2, Pim, mrho, Grho, 2, 1);
246 //-------D->K1460, K1460->Ks rho---------
247 PDF[8] = D2PP_P2VP(Pip2, Ks, Pip1, Pim) * getprop(P24, Ks, mK1460, GK1460, 1, 1) *
248 getprop(Pip1, Pim, mrho, Grho, 2, 1) +
249 D2PP_P2VP(Pip1, Ks, Pip2, Pim) * getprop(P34, Ks, mK1460, GK1460, 1, 1) *
250 getprop(Pip2, Pim, mrho, Grho, 2, 1);
251 //--------K*PiA (K1650)---------------------
252 PDF[9] = D2AP_A2VP(Pip2, Pip1, Ks, Pim, 0) * getprop(P14, Pip1, mK1650, GK1650, 1, 0) *
253 getprop(Ks, Pim, mKstr, GKstr, 1, 1) +
254 D2AP_A2VP(Pip1, Pip2, Ks, Pim, 0) * getprop(P14, Pip2, mK1650, GK1650, 1, 0) *
255 getprop(Ks, Pim, mKstr, GKstr, 1, 1);
256 //-------KsPiPiSPiA-----------------
257 PDF[10] = D2AP_A2SP(Pip2, Ks, Pip1, Pim) + D2AP_A2SP(Pip1, Ks, Pip2, Pim);
258 //-------KPiS wave------------------
259 EvtComplex corr(2, 0);
260 PDF[11] = corr * PHSP(Ks, Pim);
261 //-------D->K1460pi, K1460->K*-pi+--------
262 PDF[12] = D2PP_P2VP(Pip2, Pip1, Ks, Pim) * getprop(P14, Pip1, mK1460, GK1460, 1, 1) *
263 getprop(Ks, Pim, mKstr, GKstr, 1, 1) +
264 D2PP_P2VP(Pip1, Pip2, Ks, Pim) * getprop(P14, Pip2, mK1460, GK1460, 1, 1) *
265 getprop(Ks, Pim, mKstr, GKstr, 1, 1);
266 //-------------------------------------------
267 EvtComplex cof;
268 EvtComplex pdf, module;
269 pdf = EvtComplex(0, 0);
270 for (int i = 0; i < 13; i++) {
271 cof = EvtComplex(rho[i] * cos(phi[i]), rho[i] * sin(phi[i]));
272 pdf = pdf + cof * PDF[i];
273 }
274 module = conj(pdf) * pdf;
275 double value;
276 value = real(module);
277 return (value <= 0) ? 1e-20 : value;
278 }

◆ calt1() [1/7]

void calt1 ( const double * daug1,
const double * daug2,
double * t1 ) const
private

Covariant Spin-1 Projector.

Definition at line 735 of file EvtD0ToKpipipi.cc.

736 {
737 double p, pq;
738 double pa[4], qa[4];
739 for (int i = 0; i != 4; i++) {
740 pa[i] = daug1[i] + daug2[i];
741 qa[i] = daug1[i] - daug2[i];
742 }
743 p = dot(pa, pa);
744 pq = dot(pa, qa);
745 for (int i = 0; i != 4; i++) {
746 t1[i] = qa[i] - pq / p * pa[i];
747 }
748 }
T dot(GeneralVector< T > a, GeneralVector< T > b)
dot product of two general vectors

◆ calt1() [2/7]

void calt1 ( double daug1[],
double daug2[],
double t1[] )
private

Definition at line 274 of file EvtD0TopipiEta.cc.

275 {
276 double p, pq;
277 double pa[4], qa[4];
278 for (int i = 0; i != 4; i++) {
279 pa[i] = daug1[i] + daug2[i];
280 qa[i] = daug1[i] - daug2[i];
281 }
282 p = dot(pa, pa);
283 pq = dot(pa, qa);
284 for (int i = 0; i != 4; i++) {
285 t1[i] = qa[i] - pq / p * pa[i];
286 }
287 }

◆ calt1() [3/7]

void calt1 ( double daug1[4],
double daug2[4],
double t1[4] )
private

Definition at line 365 of file EvtDsToKKpi.cc.

366 {
367 double p, pq;
368 double pa[4], qa[4];
369 for (int i = 0; i < 4; i++) {
370 pa[i] = daug1[i] + daug2[i];
371 qa[i] = daug1[i] - daug2[i];
372 }
373 p = SCADot(pa, pa);
374 pq = SCADot(pa, qa);
375 for (int i = 0; i < 4; i++) {
376 t1[i] = qa[i] - pq / p * pa[i];
377 }
378 }

◆ calt1() [4/7]

void calt1 ( double daug1[4],
double daug2[4],
double t1[4] )
private

Definition at line 214 of file EvtDsToKpipi.cc.

215 {
216 double p, pq, tmp;
217 double pa[4], qa[4];
218 for (int i = 0; i < 4; i++) {
219 pa[i] = daug1[i] + daug2[i];
220 qa[i] = daug1[i] - daug2[i];
221 }
222 p = SCADot(pa, pa);
223 pq = SCADot(pa, qa);
224 tmp = pq / p;
225 for (int i = 0; i < 4; i++) {
226 t1[i] = qa[i] - tmp * pa[i];
227 }
228 }

◆ calt1() [5/7]

void calt1 ( const double daug1[4],
const double daug2[4],
double t1[4] )
private

Covariant Spin-1 Projector.

Definition at line 836 of file EvtDToKSpipi0pi0.cc.

837 {
838 double p, pq, tmp;
839 double pa[4], qa[4];
840 for (int i = 0; i < 4; i++) {
841 pa[i] = daug1[i] + daug2[i];
842 qa[i] = daug1[i] - daug2[i];
843 }
844 p = SCADot(pa, pa);
845 pq = SCADot(pa, qa);
846 tmp = pq / p;
847 for (int i = 0; i < 4; i++) {
848 t1[i] = qa[i] - tmp * pa[i];
849 }
850 }

◆ calt1() [6/7]

void calt1 ( double daug1[],
double daug2[],
double t1[] ) const
private

Covariant Spin-1 Projector.

Definition at line 592 of file EvtDToKSpipipi.cc.

593 {
594 double p, pq;
595 double pa[4], qa[4];
596 for (int i = 0; i != 4; i++) {
597 pa[i] = daug1[i] + daug2[i];
598 qa[i] = daug1[i] - daug2[i];
599 }
600 p = dot(pa, pa);
601 pq = dot(pa, qa);
602 for (int i = 0; i != 4; i++) {
603 t1[i] = qa[i] - pq / p * pa[i];
604 }
605 }

◆ calt1() [7/7]

void calt1 ( double daug1[],
double daug2[],
double t1[] )
private

Definition at line 250 of file EvtDTopipi0Eta.cc.

251 {
252 double p, pq;
253 double pa[4], qa[4];
254 for (int i = 0; i != 4; i++) {
255 pa[i] = daug1[i] + daug2[i];
256 qa[i] = daug1[i] - daug2[i];
257 }
258 p = dot(pa, pa);
259 pq = dot(pa, qa);
260 for (int i = 0; i != 4; i++) {
261 t1[i] = qa[i] - pq / p * pa[i];
262 }
263 }

◆ calt2() [1/7]

void calt2 ( const double * daug1,
const double * daug2,
double(*) t2[4] ) const
private

Covariant Spin-2 Projector.

Definition at line 749 of file EvtD0ToKpipipi.cc.

750 {
751 double p, r;
752 double pa[4], t1[4];
753 calt1(daug1, daug2, t1);
754 r = dot(t1, t1);
755 for (int i = 0; i != 4; i++) {
756 pa[i] = daug1[i] + daug2[i];
757 }
758 p = dot(pa, pa);
759 for (int i = 0; i != 4; i++) {
760 for (int j = 0; j != 4; j++) {
761 t2[i][j] = t1[i] * t1[j] - 1.0 / 3 * r * (G[i][j] - pa[i] * pa[j] / p);
762 }
763 }
764 }

◆ calt2() [2/7]

void calt2 ( double daug1[],
double daug2[],
double t2[][4] )
private

Definition at line 289 of file EvtD0TopipiEta.cc.

290 {
291 double p, r;
292 double pa[4], t1[4];
293 calt1(daug1, daug2, t1);
294 r = dot(t1, t1);
295 for (int i = 0; i != 4; i++) {
296 pa[i] = daug1[i] + daug2[i];
297 }
298 p = dot(pa, pa);
299 for (int i = 0; i != 4; i++) {
300 for (int j = 0; j != 4; j++) {
301 t2[i][j] = t1[i] * t1[j] - 1.0 / 3 * r * (G[i][j] - pa[i] * pa[j] / p);
302 }
303 }
304 }

◆ calt2() [3/7]

void calt2 ( double daug1[4],
double daug2[4],
double t2[4][4] )
private

Definition at line 379 of file EvtDsToKKpi.cc.

380 {
381 double p, r;
382 double pa[4], t1[4];
383 calt1(daug1, daug2, t1);
384 r = SCADot(t1, t1);
385 for (int i = 0; i < 4; i++) {
386 pa[i] = daug1[i] + daug2[i];
387 }
388 p = SCADot(pa, pa);
389 for (int i = 0; i < 4; i++) {
390 for (int j = 0; j < 4; j++) {
391 t2[i][j] = t1[i] * t1[j] - 1.0 / 3 * r * (G[i][j] - pa[i] * pa[j] / p);
392 }
393 }
394 }

◆ calt2() [4/7]

void calt2 ( double daug1[4],
double daug2[4],
double t2[4][4] )
private

Definition at line 229 of file EvtDsToKpipi.cc.

230 {
231 double p, r;
232 double pa[4], t1[4];
233 calt1(daug1, daug2, t1);
234 r = SCADot(t1, t1) / 3.0;
235 for (int i = 0; i < 4; i++) {
236 pa[i] = daug1[i] + daug2[i];
237 }
238 p = SCADot(pa, pa);
239 for (int i = 0; i < 4; i++) {
240 for (int j = 0; j < 4; j++) {
241 t2[i][j] = t1[i] * t1[j] - r * (G[i][j] - pa[i] * pa[j] / p);
242 }
243 }
244 }

◆ calt2() [5/7]

void calt2 ( const double daug1[4],
const double daug2[4],
double t2[4][4] )
private

Covariant Spin-2 Projector.

Definition at line 851 of file EvtDToKSpipi0pi0.cc.

852 {
853 double p, r;
854 double pa[4], t1[4];
855 calt1(daug1, daug2, t1);
856 r = SCADot(t1, t1) / 3.0;
857 for (int i = 0; i < 4; i++) {
858 pa[i] = daug1[i] + daug2[i];
859 }
860 p = SCADot(pa, pa);
861 for (int i = 0; i < 4; i++) {
862 for (int j = 0; j < 4; j++) {
863 t2[i][j] = t1[i] * t1[j] - r * (G[i][j] - pa[i] * pa[j] / p);
864 }
865 }
866 }

◆ calt2() [6/7]

void calt2 ( double daug1[],
double daug2[],
double t2[][4] ) const
private

Covariant Spin-2 Projector.

Definition at line 606 of file EvtDToKSpipipi.cc.

607 {
608 double p, r;
609 double pa[4], t1[4];
610 calt1(daug1, daug2, t1);
611 r = dot(t1, t1);
612 for (int i = 0; i != 4; i++) {
613 pa[i] = daug1[i] + daug2[i];
614 }
615 p = dot(pa, pa);
616 for (int i = 0; i != 4; i++) {
617 for (int j = 0; j != 4; j++) {
618 t2[i][j] = t1[i] * t1[j] - 1.0 / 3 * r * (G[i][j] - pa[i] * pa[j] / p);
619 }
620 }
621 }

◆ calt2() [7/7]

void calt2 ( double daug1[],
double daug2[],
double t2[][4] )
private

Definition at line 265 of file EvtDTopipi0Eta.cc.

266 {
267 double p, r;
268 double pa[4], t1[4];
269 calt1(daug1, daug2, t1);
270 r = dot(t1, t1);
271 for (int i = 0; i != 4; i++) {
272 pa[i] = daug1[i] + daug2[i];
273 }
274 p = dot(pa, pa);
275 for (int i = 0; i != 4; i++) {
276 for (int j = 0; j != 4; j++) {
277 t2[i][j] = t1[i] * t1[j] - 1.0 / 3 * r * (G[i][j] - pa[i] * pa[j] / p);
278 }
279 }
280 }

◆ chkDhel()

bool chkDhel ( int Dhel) const
private

sanity checkers

Function to check if Dhel is in the valid range.

Parameters
Dhelhelicity of the D(*) meson in the rest frame of the parent meson {+1,0,-1} for D* and 2 for D.

Definition at line 528 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

529 {
530 if (Dhel == -1 || Dhel == 0 || Dhel == 1 || Dhel == 2)return true;
531 else return false;
532 }

◆ chktauhel()

bool chktauhel ( int tauhel) const
private

Function to check if tauhel is in the valid range.

Parameters
tauhelhelicity of the lepton in the (l+nu) rest frame {+1,-1}.

Definition at line 540 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

541 {
542 if (tauhel == -1 || tauhel == 1)return true;
543 else return false;
544 }

◆ chkwhel()

bool chkwhel ( int whel) const
private

Function to check if whel is in the valid range.

Parameters
whelhelicity of the virtual vector boson {+1,0,1,2}.

Definition at line 534 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

535 {
536 if (whel == -1 || whel == 0 || whel == 1 || whel == 2)return true;
537 else return false;
538 }

◆ clone() [1/23]

EvtDecayBase * clone ( )

Clone the decay of B0toKsKK.

Definition at line 36 of file EvtB0toKsKK.cc.

37 {
38 return new EvtB0toKsKK;
39 }

◆ clone() [2/23]

EvtDecayBase * clone ( )

Clones module.

Definition at line 44 of file EvtBCL.cc.

45 {
46 return new EvtBCL;
47 }

◆ clone() [3/23]

EvtDecayBase * clone ( )

The function makes a copy of an EvtBSemiTauonic2HDMType2 object.

Returns
a pointer to a new uninitialized EvtBSemiTauonic2HDMType2 object

Definition at line 47 of file EvtBSemiTauonic2HDMType2.cc.

48 {
49 return new EvtBSemiTauonic2HDMType2;
50 }

◆ clone() [4/23]

EvtDecayBase * clone ( )

The function makes a copy of an EvtBSTD object.

Returns
a pointer to a new uninitialized EvtBSemiTauonic object

Definition at line 47 of file EvtBSemiTauonic.cc.

48 {
49 return new EvtBSemiTauonic;
50 }

◆ clone() [5/23]

EvtDecayBase * clone ( )

The function which makes a copy of the model.

Definition at line 41 of file EvtBtoXsnunu_FERMI.cc.

42 {
43 return new EvtBtoXsnunu_FERMI;
44 }

◆ clone() [6/23]

EvtDecayBase * clone ( )

Definition at line 37 of file EvtD0ToKpipi0pi0.cc.

38 {
39 return new EvtD0ToKpipi0pi0;
40 }

◆ clone() [7/23]

EvtDecayBase * clone ( )

Definition at line 36 of file EvtD0ToKpipipi.cc.

37 {
38 return new EvtD0ToKpipipi;
39 }

◆ clone() [8/23]

EvtDecayBase * clone ( )

Definition at line 39 of file EvtD0TopipiEta.cc.

40 {
41 return new EvtD0TopipiEta;
42 }

◆ clone() [9/23]

EvtDecayBase * clone ( )

Definition at line 43 of file EvtD0Topippim2pi0.cc.

44 {
45 return new EvtD0Topippim2pi0;
46 }

◆ clone() [10/23]

EvtDecayBase * clone ( )

Definition at line 48 of file EvtDsToKKpi.cc.

49 {
50 return new EvtDsToKKpi;
51 }

◆ clone() [11/23]

EvtDecayBase * clone ( )

Definition at line 46 of file EvtDsToKpipi.cc.

47 {
48 return new EvtDsToKpipi;
49 }

◆ clone() [12/23]

EvtDecayBase * clone ( )

Definition at line 44 of file EvtDToKSKpi0.cc.

45 {
46 return new EvtDToKSKpi0;
47 }

◆ clone() [13/23]

EvtDecayBase * clone ( )

Definition at line 42 of file EvtDToKSpipi0pi0.cc.

43 {
44 return new EvtDToKSpipi0pi0;
45 }

◆ clone() [14/23]

EvtDecayBase * clone ( )

Definition at line 37 of file EvtDToKSpipipi.cc.

38 {
39 return new EvtDToKSpipipi;
40 }

◆ clone() [15/23]

EvtDecayBase * clone ( )

Definition at line 40 of file EvtDTopipi0Eta.cc.

41 {
42 return new EvtDTopipi0Eta;
43 }

◆ clone() [16/23]

EvtDecayBase * clone ( )

Makes a copy of the pointer to the class.

Definition at line 34 of file EvtEtaFullDalitz.cc.

35 {
36
37 return new EvtEtaFullDalitz;
38
39 }

◆ clone() [17/23]

EvtDecayBase * clone ( )

Makes a copy of the class object.

Definition at line 49 of file EvtEtaPi0Dalitz.cc.

50 {
51
52 return new EvtEtaPi0Dalitz;
53
54 }

◆ clone() [18/23]

EvtDecayBase * clone ( )

Returns a copy of the class object.

Definition at line 51 of file EvtEtaPrimeDalitz.cc.

52 {
53
54 return new EvtEtaPrimeDalitz;
55
56 }

◆ clone() [19/23]

EvtDecayBase * clone ( )

The function which makes a copy of the model.

Definition at line 41 of file EvtFlatDaughter.cc.

42 {
43 return new EvtFlatDaughter;
44 }

◆ clone() [20/23]

EvtDecayBase * clone ( )

Clones module.

Definition at line 44 of file EvtHNLBCL.cc.

45 {
46 return new EvtHNLBCL;
47 }

◆ clone() [21/23]

EvtDecayBase * clone ( )

The function which makes a copy of the model.

Definition at line 45 of file EvtKnunu.cc.

46 {
47 return new EvtKnunu;
48 }

◆ clone() [22/23]

EvtDecayBase * clone ( )

The function which makes a copy of the model.

Definition at line 44 of file EvtKstarnunu_REV.cc.

45 {
46 return new EvtKstarnunu_REV;
47 }

◆ clone() [23/23]

EvtDecayBase * clone ( )

Clone the decay.

Definition at line 35 of file EvtPhspCP.cc.

36 {
37 return new EvtPhspCP;
38 }

◆ Com_Divide() [1/3]

void Com_Divide ( double a1[2],
double a2[2],
double res[2] )
private

Definition at line 316 of file EvtDsToKKpi.cc.

317 {
318 res[0] = (a1[0] * a2[0] + a1[1] * a2[1]) / (a2[0] * a2[0] + a2[1] * a2[1]);
319 res[1] = (a1[1] * a2[0] - a1[0] * a2[1]) / (a2[0] * a2[0] + a2[1] * a2[1]);
320 }

◆ Com_Divide() [2/3]

void Com_Divide ( double a1[2],
double a2[2],
double res[2] )
private

Definition at line 185 of file EvtDsToKpipi.cc.

186 {
187 double tmp = a2[0] * a2[0] + a2[1] * a2[1];
188 res[0] = (a1[0] * a2[0] + a1[1] * a2[1]) / tmp;
189 res[1] = (a1[1] * a2[0] - a1[0] * a2[1]) / tmp;
190 }

◆ Com_Divide() [3/3]

void Com_Divide ( const double a1[2],
const double a2[2],
double res[2] )
private

Complex Division.

Definition at line 805 of file EvtDToKSpipi0pi0.cc.

806 {
807 double tmp = a2[0] * a2[0] + a2[1] * a2[1];
808 res[0] = (a1[0] * a2[0] + a1[1] * a2[1]) / tmp;
809 res[1] = (a1[1] * a2[0] - a1[0] * a2[1]) / tmp;
810 }

◆ Com_Multi() [1/3]

void Com_Multi ( double a1[2],
double a2[2],
double res[2] )
private

Definition at line 311 of file EvtDsToKKpi.cc.

312 {
313 res[0] = a1[0] * a2[0] - a1[1] * a2[1];
314 res[1] = a1[1] * a2[0] + a1[0] * a2[1];
315 }

◆ Com_Multi() [2/3]

void Com_Multi ( double a1[2],
double a2[2],
double res[2] )
private

Definition at line 180 of file EvtDsToKpipi.cc.

181 {
182 res[0] = a1[0] * a2[0] - a1[1] * a2[1];
183 res[1] = a1[1] * a2[0] + a1[0] * a2[1];
184 }

◆ Com_Multi() [3/3]

void Com_Multi ( const double a1[2],
const double a2[2],
double res[2] )
private

Complex Multiplication.

Definition at line 800 of file EvtDToKSpipi0pi0.cc.

801 {
802 res[0] = a1[0] * a2[0] - a1[1] * a2[1];
803 res[1] = a1[1] * a2[0] + a1[0] * a2[1];
804 }

◆ contract_11_0()

double contract_11_0 ( std::vector< double > pa,
std::vector< double > pb )
private

Definition at line 262 of file EvtD0Topippim2pi0.cc.

263 {
264 double temp = pa[3] * pb[3] - pa[0] * pb[0] - pa[1] * pb[1] - pa[2] * pb[2];
265 return temp;
266
267 }

◆ contract_21_1()

std::vector< double > contract_21_1 ( std::vector< double > pa,
std::vector< double > pb )
private

Definition at line 269 of file EvtD0Topippim2pi0.cc.

270 {
271 std::vector<double> temp;
272 for (int i = 0; i < 4; i++) {
273 double sum = 0;
274 for (int j = 0; j < 4; j++) {
275 int idx = i * 4 + j;
276 sum += pa[idx] * pb[j] * g_uv[4 * j + j];
277 }
278 temp.push_back(sum);
279 }
280 return temp;
281
282 }

◆ contract_22_0()

double contract_22_0 ( std::vector< double > pa,
std::vector< double > pb )
private

Definition at line 284 of file EvtD0Topippim2pi0.cc.

285 {
286 double temp = 0;
287 for (int i = 0; i < 4; i++) {
288 for (int j = 0; j < 4; j++) {
289 int idx = i * 4 + j;
290 temp += pa[idx] * pb[idx] * g_uv[4 * i + i] * g_uv[4 * j + j];
291 }
292 }
293 return temp;
294
295 }

◆ contract_22_2()

std::vector< double > contract_22_2 ( std::vector< double > pa,
std::vector< double > pb )
private

Definition at line 345 of file EvtD0Topippim2pi0.cc.

346 {
347 std::vector<double> temp;
348 for (int i = 0; i < 4; i++) {
349 for (int j = 0; j < 4; j++) {
350 double sum = 0;
351 for (int k = 0; k < 4; k++) {
352 int idxa = i * 4 + k;
353 int idxb = j * 4 + k;
354 sum += pa[idxa] * pb[idxb] * g_uv[4 * k + k];
355 }
356 temp.push_back(sum);
357 }
358 }
359
360 return temp;
361
362 }

◆ contract_31_2()

std::vector< double > contract_31_2 ( std::vector< double > pa,
std::vector< double > pb )
private

Definition at line 297 of file EvtD0Topippim2pi0.cc.

298 {
299 std::vector<double> temp;
300 for (int i = 0; i < 16; i++) {
301 double sum = 0;
302 for (int j = 0; j < 4; j++) {
303 int idx = i * 4 + j;
304 sum += pa[idx] * pb[j] * g_uv[4 * j + j];
305 }
306 temp.push_back(sum);
307 }
308 return temp;
309
310 }

◆ contract_41_3()

std::vector< double > contract_41_3 ( std::vector< double > pa,
std::vector< double > pb )
private

Definition at line 312 of file EvtD0Topippim2pi0.cc.

313 {
314 std::vector<double> temp;
315 for (int i = 0; i < 64; i++) {
316 double sum = 0;
317 for (int j = 0; j < 4; j++) {
318 int idx = i * 4 + j;
319 sum += pa[idx] * pb[j] * g_uv[4 * j + j];
320 }
321 temp.push_back(sum);
322 }
323 return temp;
324
325 }

◆ contract_42_2()

std::vector< double > contract_42_2 ( std::vector< double > pa,
std::vector< double > pb )
private

Definition at line 327 of file EvtD0Topippim2pi0.cc.

328 {
329 std::vector<double> temp;
330 for (int i = 0; i < 16; i++) {
331 double sum = 0;
332 for (int j = 0; j < 4; j++) {
333 for (int k = 0; k < 4; k++) {
334 int idxa = i * 16 + j * 4 + k;
335 int idxb = j * 4 + k;
336 sum += pa[idxa] * pb[idxb] * g_uv[4 * j + j] * g_uv[4 * k + k];
337 }
338 }
339 temp.push_back(sum);
340 }
341
342 return temp;
343
344 }

◆ covariantTensor1()

void covariantTensor1 ( const double * daug1,
const double * daug2,
double * t1 ) const
private

Covariant Spin-1 Projector.

Definition at line 813 of file EvtD0ToKpipi0pi0.cc.

814 {
815 double p, pq;
816 double pa[4], qa[4];
817 for (int i = 0; i != 4; i++) {
818 pa[i] = daug1[i] + daug2[i];
819 qa[i] = daug1[i] - daug2[i];
820 }
821 p = LorentzDotProduct(pa, pa);
822 pq = LorentzDotProduct(pa, qa);
823 for (int i = 0; i != 4; i++) {
824 t1[i] = qa[i] - pq / p * pa[i];
825 }
826 }

◆ covariantTensor2()

void covariantTensor2 ( const double * daug1,
const double * daug2,
double(*) t2[4] ) const
private

Covariant Spin-2 Projector.

Definition at line 827 of file EvtD0ToKpipi0pi0.cc.

828 {
829 double p, r;
830 double pa[4], t1[4];
831 covariantTensor1(daug1, daug2, t1);
832 r = LorentzDotProduct(t1, t1);
833 for (int i = 0; i != 4; i++) {
834 pa[i] = daug1[i] + daug2[i];
835 }
836 p = LorentzDotProduct(pa, pa);
837 for (int i = 0; i != 4; i++) {
838 for (int j = 0; j != 4; j++) {
839 t2[i][j] = t1[i] * t1[j] - 1.0 / 3 * r * (G[i][j] - pa[i] * pa[j] / p);
840 }
841 }
842 }

◆ d() [1/7]

double d ( double mass,
const double q0 ) const
private

d function in Gounaris-Sakurai lineshape

Definition at line 753 of file EvtD0ToKpipi0pi0.cc.

754 {
755 double d = 3.0 / pi * mpi * mpi / (q0 * q0) * log((Mass + 2 * q0) / (2 * mpi)) + Mass / (2 * pi * q0) - (mpi * mpi * Mass) /
756 (pi * pow(q0, 3));
757 return d;
758 }

◆ d() [2/7]

double d ( double mass,
const double q0 ) const
private

d function in Gounaris-Sakurai lineshape

Definition at line 679 of file EvtD0ToKpipipi.cc.

680 {
681 double d = 3.0 / pi * mpi * mpi / (q0 * q0) * log((Mass + 2 * q0) / (2 * mpi)) + Mass / (2 * pi * q0) - (mpi * mpi * Mass) /
682 (pi * pow(q0, 3));
683 return d;
684 }

◆ d() [3/7]

double d ( double mass,
double q0 )
private

Definition at line 351 of file EvtD0TopipiEta.cc.

352 {
353 double d = 3.0 / pi * spi / (q0 * q0) * log((mass + 2 * q0) / (2 * mpi)) + mass / (2 * pi * q0) - (spi * mass) / (pi * pow(q0, 3));
354 return d;
355 }

◆ d() [4/7]

double d ( double m0,
double q0 )
private

Definition at line 550 of file EvtD0Topippim2pi0.cc.

551 {
552 double d = 3.0 / math_pi * mass_Pion * mass_Pion / (q0 * q0) * log((m0 + 2.0 * q0) / (2.0 * mass_Pion)) + m0 /
553 (2.0 * math_pi * q0) - (mass_Pion * mass_Pion * m0) / (math_pi * q0 * q0 * q0);
554 return d;
555 }

◆ d() [5/7]

double d ( double mass,
double q0 )
private

Definition at line 606 of file EvtDsToKKpi.cc.

607 {
608 double d = 3.0 / math_pi * mass_Pion * mass_Pion / (q0 * q0) * log((mass_param + 2 * q0) / (2 * mass_Pion)) + mass_param /
609 (2 * math_pi * q0)
610 - (mass_Pion * mass_Pion * mass_param) / (math_pi * pow(q0, 3));
611 return d;
612 }

◆ d() [6/7]

double d ( const double mass,
const double q0 ) const
private

d function in Gounaris-Sakurai lineshape

Definition at line 534 of file EvtDToKSpipipi.cc.

535 {
536 double d = 3.0 / pi * mpi * mpi / (q0 * q0) * log((mass_ + 2 * q0) / (2 * mpi)) + mass_ / (2 * pi * q0) - (mpi * mpi * mass_) /
537 (pi * pow(q0, 3));
538 return d;
539 }

◆ d() [7/7]

double d ( double mass,
double q0 )
private

Definition at line 326 of file EvtDTopipi0Eta.cc.

327 {
328 double cmpi = 0.5 * (0.13957 + 0.134976);
329 double mpi2 = cmpi * cmpi;
330 double d = 3.0 / pi * mpi2 / (q0 * q0) * log((mass + 2 * q0) / (2 * cmpi)) + mass / (2 * pi * q0) - (mpi2 * mass) / (pi * pow(q0,
331 3));
332 return d;
333 }

◆ D2AP_A2SP() [1/3]

EvtComplex D2AP_A2SP ( const double * P1,
const double * P2,
const double * P3,
const double * P4,
const int flag )
private

Definition at line 508 of file EvtD0ToKpipi0pi0.cc.

509 {
510 //flag = 0, S = rho; flag = 1, S = K*
511 double temp_PDF = 0;
512 EvtComplex amp_PDF(0, 0);
513 EvtComplex pro;
514 double sa[3], sb[3], sc[3], B[3];
515 double t1D[4], t1A[4];
516 double pS[4], pA[4], pD[4];
517 for (int i = 0; i != 4; i++) {
518 pS[i] = P3[i] + P4[i];
519 pA[i] = pS[i] + P2[i];
520 pD[i] = pA[i] + P1[i];
521 }
522 sa[0] = LorentzDotProduct(pS, pS);
523 sb[0] = LorentzDotProduct(P3, P3);
524 sc[0] = LorentzDotProduct(P4, P4);
525 sa[1] = LorentzDotProduct(pA, pA);
526 sb[1] = sa[0];
527 sc[1] = LorentzDotProduct(P2, P2);
528 sa[2] = LorentzDotProduct(pD, pD);
529 sb[2] = sa[1];
530 sc[2] = LorentzDotProduct(P1, P1);
531 B[1] = BWBarrierFactor(1, sa[1], sb[1], sc[1], rRes);
532 B[2] = BWBarrierFactor(1, sa[2], sb[2], sc[2], rD);
533 covariantTensor1(pA, P1, t1D);
534 covariantTensor1(pS, P2, t1A);
535 for (int i = 0; i != 4; i++) {
536 temp_PDF += t1D[i] * t1A[i] * (G[i][i]);
537 }
538 amp_PDF = temp_PDF * B[1] * B[2];
539 if (flag == 1 || flag == 11 || flag == 21) amp_PDF = amp_PDF * KPiSFormfactor(sa[0], sb[0], sc[0], rRes);
540 return amp_PDF;
541 }

◆ D2AP_A2SP() [2/3]

EvtComplex D2AP_A2SP ( const double * P1,
const double * P2,
const double * P3,
const double * P4,
const int flag )
private

Definition at line 441 of file EvtD0ToKpipipi.cc.

442 {
443 //flag = 1, S = K*; flag = 2, S = rho
444 double temp_PDF = 0;
445 EvtComplex amp_PDF(0, 0);
446 EvtComplex pro;
447 double sa[3], sb[3], sc[3], B[3];
448 double t1D[4], t1A[4];
449 double pS[4], pA[4], pD[4];
450 for (int i = 0; i != 4; i++) {
451 pS[i] = P3[i] + P4[i];
452 pA[i] = pS[i] + P2[i];
453 pD[i] = pA[i] + P1[i];
454 }
455 sa[0] = dot(pS, pS);
456 sb[0] = dot(P3, P3);
457 sc[0] = dot(P4, P4);
458 sa[1] = dot(pA, pA);
459 sb[1] = sa[0];
460 sc[1] = dot(P2, P2);
461 sa[2] = dot(pD, pD);
462 sb[2] = sa[1];
463 sc[2] = dot(P1, P1);
464 B[1] = barrier(1, sa[1], sb[1], sc[1], rRes);
465 B[2] = barrier(1, sa[2], sb[2], sc[2], rD);
466 calt1(pA, P1, t1D);
467 calt1(pS, P2, t1A);
468 for (int i = 0; i != 4; i++) {
469 temp_PDF += t1D[i] * t1A[i] * (G[i][i]);
470 }
471 amp_PDF = temp_PDF * B[1] * B[2];
472 if (flag == 1) amp_PDF *= KPiSFormfactor(sa[0], sb[0], sc[0], rRes);
473 return amp_PDF;
474 }

◆ D2AP_A2SP() [3/3]

EvtComplex D2AP_A2SP ( double P1[],
double P2[],
double P3[],
double P4[] )
private

Definition at line 347 of file EvtDToKSpipipi.cc.

348 {
349 double temp_PDF = 0;
350 EvtComplex amp_PDF(0, 0);
351 EvtComplex pro;
352 double sa[3], sb[3], sc[3], B[3];
353 double t1D[4], t1A[4];
354 double pS[4], pA[4], pD[4];
355 for (int i = 0; i != 4; i++) {
356 pS[i] = P3[i] + P4[i];
357 pA[i] = pS[i] + P2[i];
358 pD[i] = pA[i] + P1[i];
359 }
360 sa[0] = dot(pS, pS);
361 sb[0] = dot(P3, P3);
362 sc[0] = dot(P4, P4);
363 sa[1] = dot(pA, pA);
364 sb[1] = sa[0];
365 sc[1] = dot(P2, P2);
366 sa[2] = dot(pD, pD);
367 sb[2] = sa[1];
368 sc[2] = dot(P1, P1);
369 B[1] = barrier(1, sa[1], sb[1], sc[1], 3);
370 B[2] = barrier(1, sa[2], sb[2], sc[2], rD);
371 calt1(pA, P1, t1D);
372 calt1(pS, P2, t1A);
373 for (int i = 0; i != 4; i++) {
374 temp_PDF += t1D[i] * t1A[i] * (G[i][i]);
375 }
376 amp_PDF = temp_PDF * B[1] * B[2];
377 return amp_PDF;
378 }

◆ D2AP_A2VP() [1/3]

EvtComplex D2AP_A2VP ( const double * P1,
const double * P2,
const double * P3,
const double * P4,
int * g,
const int flag )
private

Definition at line 452 of file EvtD0ToKpipi0pi0.cc.

454 {
455 double temp_PDF = 0;
456 EvtComplex amp_PDF(0, 0);
457 EvtComplex pro[2];
458 double t1V[4], t1D[4], t2A[4][4];
459 double sa[3], sb[3], sc[3], B[3] = {0, 0, 0};
460 double pV[4], pA[4], pD[4];
461 for (int i = 0; i != 4; i++) {
462 pV[i] = P3[i] + P4[i];
463 pA[i] = pV[i] + P2[i];
464 pD[i] = pA[i] + P1[i];
465 }
466 sa[0] = LorentzDotProduct(pV, pV);
467 sb[0] = LorentzDotProduct(P3, P3);
468 sc[0] = LorentzDotProduct(P4, P4);
469 sa[1] = LorentzDotProduct(pA, pA);
470 sb[1] = sa[0];
471 sc[1] = LorentzDotProduct(P2, P2);
472 sa[2] = LorentzDotProduct(pD, pD);
473 sb[2] = sa[1];
474 sc[2] = LorentzDotProduct(P1, P1);
475 if (g[0] == 1) {
476 if (flag == 0 || flag == 3) pro[0] = propagatorGS(mass[4], width[4], sa[0], sb[0], sc[0], rRes, 1);
477 else if (flag == 1 || flag == 21) pro[0] = propagatorRBW(mass[2], width[2], sa[0], sb[0], sc[0], rRes, 1);
478 else if (flag == 31) pro[0] = propagatorRBW(mass[3], width[3], sa[0], sb[0], sc[0], rRes, 1);
479 } else if (g[0] == 0) pro[0] = 1;
480 if (g[1] == 1) {
481 if (flag == 0) pro[1] = propagatorRBW(mass[0], width[0], sa[1], sb[1], sc[1], rRes, g[2]);
482 if (flag == 1 || flag == 21 || flag == 31 || flag == 3) pro[1] = propagatorRBW(mass[1], width[1], sa[1], sb[1], sc[1], rRes, g[2]);
483 } else if (g[1] == 0) pro[1] = 1;
484 B[0] = BWBarrierFactor(1, sa[0], sb[0], sc[0], rRes);
485 B[2] = BWBarrierFactor(1, sa[2], sb[2], sc[2], rD);
486 covariantTensor1(P3, P4, t1V);
487 covariantTensor1(pA, P1, t1D);
488 if (g[2] == 0) {
489 for (int i = 0; i != 4; i++) {
490 for (int j = 0; j != 4; j++) {
491 temp_PDF += t1D[i] * (G[i][j] - pA[i] * pA[j] / sa[1]) * t1V[j] * (G[i][i]) * (G[j][j]);
492 }
493 }
494 B[1] = 1;
495 } else if (g[2] == 2) {
496 covariantTensor2(pV, P2, t2A);
497 for (int i = 0; i != 4; i++) {
498 for (int j = 0; j != 4; j++) {
499 temp_PDF += t1D[i] * t2A[i][j] * t1V[j] * (G[i][i]) * (G[j][j]);
500 }
501 }
502 B[1] = BWBarrierFactor(2, sa[1], sb[1], sc[1], rRes);
503 }
504 amp_PDF = temp_PDF * B[0] * B[1] * B[2] * pro[0] * pro[1];
505 return amp_PDF;
506 }

◆ D2AP_A2VP() [2/3]

EvtComplex D2AP_A2VP ( const double * P1,
const double * P2,
const double * P3,
const double * P4,
int * g,
const int flag )
private

Definition at line 382 of file EvtD0ToKpipipi.cc.

383 {
384 //flag = 1, V = K*, A = K1(1270); flag = 2, V = rho, A = a1(1260);
385 //flag = 3, V = rho, A = K1(1270);
386 double temp_PDF = 0;
387 EvtComplex amp_PDF(0, 0);
388 EvtComplex pro[2];
389 double t1V[4], t1D[4], t2A[4][4];
390 double sa[3], sb[3], sc[3], B[3];
391 double pV[4], pA[4], pD[4];
392 for (int i = 0; i != 4; i++) {
393 pV[i] = P3[i] + P4[i];
394 pA[i] = pV[i] + P2[i];
395 pD[i] = pA[i] + P1[i];
396 }
397 sa[0] = dot(pV, pV);
398 sb[0] = dot(P3, P3);
399 sc[0] = dot(P4, P4);
400 sa[1] = dot(pA, pA);
401 sb[1] = sa[0];
402 sc[1] = dot(P2, P2);
403 sa[2] = dot(pD, pD);
404 sb[2] = sa[1];
405 sc[2] = dot(P1, P1);
406 if (g[0] == 1) {
407 if (flag == 1) pro[0] = propagatorRBW(mass[1], width[1], sa[0], sb[0], sc[0], rRes, 1);
408 if (flag == 2 || flag == 3) pro[0] = propagatorGS(mass[3], width[3], sa[0], sb[0], sc[0], rRes, 1);
409 }
410 if (g[1] == 1) {
411 if (flag == 1) pro[1] = propogator(mass[0], width[0], sa[1]);
412 if (flag == 2) pro[1] = propagatorRBW(mass[2], width[2], sa[1], sb[1], sc[1], rRes, g[2]);
413 if (flag == 3) pro[1] = propogator(mass[0], width[0], sa[1]);
414 }
415 if (g[0] == 0) pro[0] = 1;
416 if (g[1] == 0) pro[1] = 1;
417 B[0] = barrier(1, sa[0], sb[0], sc[0], rRes);
418 B[2] = barrier(1, sa[2], sb[2], sc[2], rD);
419 calt1(P3, P4, t1V);
420 calt1(pA, P1, t1D);
421 if (g[2] == 0) {
422 for (int i = 0; i != 4; i++) {
423 for (int j = 0; j != 4; j++) {
424 temp_PDF += t1D[i] * (G[i][j] - pA[i] * pA[j] / sa[1]) * t1V[j] * (G[i][i]) * (G[j][j]);
425 }
426 }
427 B[1] = 1;
428 }
429 if (g[2] == 2) {
430 calt2(pV, P2, t2A);
431 for (int i = 0; i != 4; i++) {
432 for (int j = 0; j != 4; j++) {
433 temp_PDF += t1D[i] * t2A[i][j] * t1V[j] * (G[i][i]) * (G[j][j]);
434 }
435 }
436 B[1] = barrier(2, sa[1], sb[1], sc[1], rRes);
437 }
438 amp_PDF = temp_PDF * B[0] * B[1] * B[2] * pro[0] * pro[1];
439 return amp_PDF;
440 }

◆ D2AP_A2VP() [3/3]

EvtComplex D2AP_A2VP ( double P1[],
double P2[],
double P3[],
double P4[],
int L )
private

Amplitude modes.

Definition at line 302 of file EvtDToKSpipipi.cc.

303 {
304 double temp_PDF = 0;
305 EvtComplex amp_PDF(0, 0);
306 double t1V[4], t1D[4], t2A[4][4];
307 double sa[3], sb[3], sc[3], B[3];
308 double pV[4], pA[4], pD[4];
309 for (int i = 0; i != 4; i++) {
310 pV[i] = P3[i] + P4[i];
311 pA[i] = pV[i] + P2[i];
312 pD[i] = pA[i] + P1[i];
313 }
314 sa[0] = dot(pV, pV);
315 sb[0] = dot(P3, P3);
316 sc[0] = dot(P4, P4);
317 sa[1] = dot(pA, pA);
318 sb[1] = sa[0];
319 sc[1] = dot(P2, P2);
320 sa[2] = dot(pD, pD);
321 sb[2] = sa[1];
322 sc[2] = dot(P1, P1);
323 B[0] = barrier(1, sa[0], sb[0], sc[0], 3);
324 B[2] = barrier(1, sa[2], sb[2], sc[2], rD);
325 calt1(P3, P4, t1V);
326 calt1(pA, P1, t1D);
327 if (L == 0) {
328 for (int i = 0; i != 4; i++) {
329 for (int j = 0; j != 4; j++) {
330 temp_PDF += t1D[i] * (G[i][j] - pA[i] * pA[j] / sa[1]) * t1V[j] * (G[i][i]) * (G[j][j]);
331 }
332 }
333 B[1] = 1;
334 }
335 if (L == 2) {
336 calt2(pV, P2, t2A);
337 for (int i = 0; i != 4; i++) {
338 for (int j = 0; j != 4; j++) {
339 temp_PDF += t1D[i] * t2A[i][j] * t1V[j] * (G[i][i]) * (G[j][j]);
340 }
341 }
342 B[1] = barrier(2, sa[1], sb[1], sc[1], 3);
343 }
344 amp_PDF = temp_PDF * B[0] * B[1] * B[2];
345 return amp_PDF;
346 }

◆ D2PP_P2VP() [1/3]

EvtComplex D2PP_P2VP ( const double * P1,
const double * P2,
const double * P3,
const double * P4,
const int flag )
private

Definition at line 543 of file EvtD0ToKpipi0pi0.cc.

544 {
545 //modeidx = 0 :(K*0 pi0)pi0
546 //modeidx = 10:(K*- pi+)pi0
547 //modeidx = 20:(K*- pi0)pi+
548 //modeidx = 1 :(K- rho+)pi0
549 //modeidx = 11:K-(rho+ pi0)
550 double temp_PDF = 0;
551 EvtComplex amp(0, 0);
552 EvtComplex prop;
553 double sa[3], sb[3], sc[3], B[3];
554 double t1V[4];
555 double pV[4], pP[4], pD[4];
556 for (int i = 0; i != 4; i++) {
557 pV[i] = P3[i] + P4[i];
558 pP[i] = pV[i] + P2[i];
559 pD[i] = pP[i] + P1[i];
560 }
561 sa[0] = LorentzDotProduct(pV, pV);
562 sb[0] = LorentzDotProduct(P3, P3);
563 sc[0] = LorentzDotProduct(P4, P4);
564 sa[1] = LorentzDotProduct(pP, pP);
565 sb[1] = sa[0];
566 sc[1] = LorentzDotProduct(P2, P2);
567 sa[2] = LorentzDotProduct(pD, pD);
568 sb[2] = sa[1];
569 sc[2] = LorentzDotProduct(P1, P1);
570 B[0] = BWBarrierFactor(1, sa[0], sb[0], sc[0], rRes);
571 B[1] = BWBarrierFactor(1, sa[1], sb[1], sc[1], rRes);
572 if (flag == 0) prop = propagatorRBW(mass[3], width[3], sa[0], sb[0], sc[0], rRes, 1);
573 else if (flag == 10 || 20) prop = propagatorRBW(mass[2], width[2], sa[0], sb[0], sc[0], rRes, 1);
574 else if (flag == 1 || 11) prop = propagatorGS(mass[4], width[4], sa[0], sb[0], sc[0], rRes, 1);
575 covariantTensor1(P3, P4, t1V);
576 for (int i = 0; i != 4; i++) {
577 temp_PDF += P2[i] * t1V[i] * (G[i][i]);
578 }
579 amp = temp_PDF * B[0] * B[1] * prop;
580 return amp;
581 }

◆ D2PP_P2VP() [2/3]

EvtComplex D2PP_P2VP ( const double * P1,
const double * P2,
const double * P3,
const double * P4,
const int flag )
private

Definition at line 475 of file EvtD0ToKpipipi.cc.

476 {
477 //flag = 1, V = K*; flag = 2, V = rho
478 double temp_PDF = 0;
479 EvtComplex amp_PDF(0, 0);
480 EvtComplex pro;
481 double sa[3], sb[3], sc[3], B[3];
482 double t1V[4];
483 double pV[4], pP[4], pD[4];
484 for (int i = 0; i != 4; i++) {
485 pV[i] = P3[i] + P4[i];
486 pP[i] = pV[i] + P2[i];
487 pD[i] = pP[i] + P1[i];
488 }
489 sa[0] = dot(pV, pV);
490 sb[0] = dot(P3, P3);
491 sc[0] = dot(P4, P4);
492 sa[1] = dot(pP, pP);
493 sb[1] = sa[0];
494 sc[1] = dot(P2, P2);
495 sa[2] = dot(pD, pD);
496 sb[2] = sa[1];
497 sc[2] = dot(P1, P1);
498 B[0] = barrier(1, sa[0], sb[0], sc[0], rRes);
499 B[1] = barrier(1, sa[1], sb[1], sc[1], rRes);
500 if (flag == 1) pro = propagatorRBW(mass[1], width[1], sa[0], sb[0], sc[0], rRes, 1);
501 if (flag == 2) pro = propagatorGS(mass[3], width[3], sa[0], sb[0], sc[0], rRes, 1);
502 calt1(P3, P4, t1V);
503 for (int i = 0; i != 4; i++) {
504 temp_PDF += P2[i] * t1V[i] * (G[i][i]);
505 }
506 amp_PDF = temp_PDF * B[0] * B[1] * pro;
507 return amp_PDF;
508 }

◆ D2PP_P2VP() [3/3]

EvtComplex D2PP_P2VP ( double P1[],
double P2[],
double P3[],
double P4[] )
private

Definition at line 379 of file EvtDToKSpipipi.cc.

380 {
381 double temp_PDF = 0;
382 EvtComplex amp_PDF(0, 0);
383 EvtComplex pro;
384 double sa[3], sb[3], sc[3], B[3];
385 double t1V[4];
386 double pV[4], pP[4], pD[4];
387 for (int i = 0; i != 4; i++) {
388 pV[i] = P3[i] + P4[i];
389 pP[i] = pV[i] + P2[i];
390 pD[i] = pP[i] + P1[i];
391 }
392 sa[0] = dot(pV, pV);
393 sb[0] = dot(P3, P3);
394 sc[0] = dot(P4, P4);
395 sa[1] = dot(pP, pP);
396 sb[1] = sa[0];
397 sc[1] = dot(P2, P2);
398 sa[2] = dot(pD, pD);
399 sb[2] = sa[1];
400 sc[2] = dot(P1, P1);
401 B[0] = barrier(1, sa[0], sb[0], sc[0], 3);
402 B[1] = barrier(1, sa[1], sb[1], sc[1], 3);
403 calt1(P3, P4, t1V);
404 for (int i = 0; i != 4; i++) {
405 temp_PDF += P2[i] * t1V[i] * (G[i][i]);
406 }
407 amp_PDF = temp_PDF * B[0] * B[1];
408 return amp_PDF;
409 }

◆ D2TS() [1/2]

EvtComplex D2TS ( const double * P1,
const double * P2,
const double * P3,
const double * P4,
const int flag )
private

Definition at line 666 of file EvtD0ToKpipi0pi0.cc.

667 {
668 // flag == 0 KPiT. 1 PiPiT
669 double temp_PDF = 0;
670 EvtComplex amp_PDF(0, 0);
671 double sa[3], sb[3], sc[3], B[3];
672 double t2D[4][4], t2T[4][4];
673 double pS[4], pT[4], pD[4];
674 for (int i = 0; i != 4; i++) {
675 pS[i] = P3[i] + P4[i];
676 pT[i] = P1[i] + P2[i];
677 pD[i] = pT[i] + pS[i];
678 }
679 sa[0] = LorentzDotProduct(pT, pT);
680 sb[0] = LorentzDotProduct(P1, P1);
681 sc[0] = LorentzDotProduct(P2, P2);
682 sa[1] = LorentzDotProduct(pS, pS);
683 sb[1] = LorentzDotProduct(P3, P3);
684 sc[1] = LorentzDotProduct(P4, P4);
685 sa[2] = LorentzDotProduct(pD, pD);
686 sb[2] = sa[0];
687 sc[2] = sa[1];
688 B[0] = BWBarrierFactor(2, sa[0], sb[0], sc[0], rRes);
689 B[2] = BWBarrierFactor(2, sa[2], sb[2], sc[2], rD);
690 covariantTensor2(P1, P2, t2T);
691 covariantTensor2(pT, pS, t2D);
692 for (int i = 0; i != 4; i++) {
693 for (int j = 0; j != 4; j++) {
694 temp_PDF += t2D[i][j] * t2T[j][i] * (G[i][i]) * (G[j][j]);
695 }
696 }
697 amp_PDF = temp_PDF * B[0] * B[2];
698 if (flag == 1 || flag == 11) { amp_PDF = amp_PDF * KPiSFormfactor(sa[1], sb[1], sc[1], rRes);}
699 return amp_PDF;
700 }

◆ D2TS() [2/2]

EvtComplex D2TS ( const double * P1,
const double * P2,
const double * P3,
const double * P4,
const int flag )
private

Definition at line 589 of file EvtD0ToKpipipi.cc.

590 {
591 //flag = 1, T = K*; flag = 2, T = rho
592 double temp_PDF = 0;
593 EvtComplex amp_PDF(0, 0);
594 double sa[3], sb[3], sc[3], B[3];
595 double t2D[4][4], t2T[4][4];
596 double pS[4], pT[4], pD[4];
597 for (int i = 0; i != 4; i++) {
598 pS[i] = P3[i] + P4[i];
599 pT[i] = P1[i] + P2[i];
600 pD[i] = pT[i] + pS[i];
601 }
602 sa[0] = dot(pT, pT);
603 sb[0] = dot(P1, P1);
604 sc[0] = dot(P2, P2);
605 sa[1] = dot(pS, pS);
606 sb[1] = dot(P3, P3);
607 sc[1] = dot(P4, P4);
608 sa[2] = dot(pD, pD);
609 sb[2] = sa[0];
610 sc[2] = sa[1];
611 B[0] = barrier(2, sa[0], sb[0], sc[0], rRes);
612 B[2] = barrier(2, sa[2], sb[2], sc[2], rD);
613 calt2(P1, P2, t2T);
614 calt2(pT, pS, t2D);
615 for (int i = 0; i != 4; i++) {
616 for (int j = 0; j != 4; j++) {
617 temp_PDF += t2D[i][j] * t2T[j][i] * (G[i][i]) * (G[j][j]);
618 }
619 }
620 amp_PDF = temp_PDF * B[0] * B[2];
621 if (flag == 2) amp_PDF *= KPiSFormfactor(sa[1], sb[1], sc[1], rRes);
622 return amp_PDF;
623 }

◆ D2VP_V2VP() [1/2]

EvtComplex D2VP_V2VP ( const double * P1,
const double * P2,
const double * P3,
const double * P4,
const int flag )
private

Definition at line 583 of file EvtD0ToKpipi0pi0.cc.

584 {
585 double temp_PDF = 0;
586 EvtComplex amp_PDF(0, 0);
587 EvtComplex pro;
588 double sa[3], sb[3], sc[3], B[3];
589 double pV1[4], pV2[4], qV1[4], qV2[4], pD[4];
590 for (int i = 0; i != 4; i++) {
591 pV2[i] = P3[i] + P4[i];
592 qV2[i] = P3[i] - P4[i];
593 pV1[i] = pV2[i] + P2[i];
594 qV1[i] = pV2[i] - P2[i];
595 pD[i] = pV1[i] + P1[i];
596 }
597 for (int i = 0; i != 4; i++) {
598 for (int j = 0; j != 4; j++) {
599 for (int k = 0; k != 4; k++) {
600 for (int l = 0; l != 4; l++) {
601 temp_PDF += E[i][j][k][l] * pV1[i] * qV1[j] * P1[k] * qV2[l] * (G[i][i]) * (G[j][j]) * (G[k][k]) * (G[l][l]);
602 }
603 }
604 }
605 }
606 sa[0] = LorentzDotProduct(pV2, pV2);
607 sb[0] = LorentzDotProduct(P3, P3);
608 sc[0] = LorentzDotProduct(P4, P4);
609 sa[1] = LorentzDotProduct(pV1, pV1);
610 sb[1] = sa[0];
611 sc[1] = LorentzDotProduct(P2, P2);
612 sa[2] = LorentzDotProduct(pD, pD);
613 sb[2] = sa[1];
614 sc[2] = LorentzDotProduct(P1, P1);
615 if (flag == 0 || flag == 10) pro = propagatorRBW(mass[2], width[2], sa[0], sb[0], sc[0], rRes, 1);
616 else if (flag == 20) pro = propagatorRBW(mass[3], width[3], sa[0], sb[0], sc[0], rRes, 1);
617 else if (flag == 1 || flag == 2) pro = propagatorGS(mass[4], width[4], sa[0], sb[0], sc[0], rRes, 1);
618 B[0] = BWBarrierFactor(1, sa[0], sb[0], sc[0], rRes);
619 B[1] = BWBarrierFactor(1, sa[1], sb[1], sc[1], rRes);
620 B[2] = BWBarrierFactor(1, sa[2], sb[2], sc[2], rD);
621 amp_PDF = temp_PDF * B[0] * B[1] * B[2] * pro;
622 return amp_PDF;
623 }

◆ D2VP_V2VP() [2/2]

EvtComplex D2VP_V2VP ( const double * P1,
const double * P2,
const double * P3,
const double * P4,
const int flag )
private

Definition at line 509 of file EvtD0ToKpipipi.cc.

510 {
511 //flag = 1, (K*Pi)V; flag = 2, (rhoK)V
512 double temp_PDF = 0;
513 EvtComplex amp_PDF(0, 0);
514 EvtComplex pro;
515 double sa[3], sb[3], sc[3], B[3];
516 double pV1[4], pV2[4], qV1[4], qV2[4], pD[4];
517 for (int i = 0; i != 4; i++) {
518 pV2[i] = P3[i] + P4[i];
519 qV2[i] = P3[i] - P4[i];
520 pV1[i] = pV2[i] + P2[i];
521 qV1[i] = pV2[i] - P2[i];
522 pD[i] = pV1[i] + P1[i];
523 }
524 for (int i = 0; i != 4; i++) {
525 for (int j = 0; j != 4; j++) {
526 for (int k = 0; k != 4; k++) {
527 for (int l = 0; l != 4; l++) {
528 temp_PDF += E[i][j][k][l] * pV1[i] * qV1[j] * P1[k] * qV2[l] * (G[i][i]) * (G[j][j]) * (G[k][k]) * (G[l][l]);
529 }
530 }
531 }
532 }
533 sa[0] = dot(pV2, pV2);
534 sb[0] = dot(P3, P3);
535 sc[0] = dot(P4, P4);
536 sa[1] = dot(pV1, pV1);
537 sb[1] = sa[0];
538 sc[1] = dot(P2, P2);
539 sa[2] = dot(pD, pD);
540 sb[2] = sa[1];
541 sc[2] = dot(P1, P1);
542 if (flag == 1) pro = propagatorRBW(mass[1], width[1], sa[0], sb[0], sc[0], rRes, 1);
543 if (flag == 2) pro = propagatorGS(mass[3], width[3], sa[0], sb[0], sc[0], rRes, 1);
544 B[0] = barrier(1, sa[0], sb[0], sc[0], rRes);
545 B[1] = barrier(1, sa[1], sb[1], sc[1], rRes);
546 B[2] = barrier(1, sa[2], sb[2], sc[2], rD);
547 amp_PDF = temp_PDF * B[0] * B[1] * B[2] * pro;
548 return amp_PDF;
549 }

◆ D2VS() [1/2]

EvtComplex D2VS ( const double * P1,
const double * P2,
const double * P3,
const double * P4,
int g,
const int flag )
private

Definition at line 625 of file EvtD0ToKpipi0pi0.cc.

626 {
627 double temp_PDF = 0;
628 EvtComplex amp_PDF(0, 0);
629 EvtComplex pro;
630 double sa[3], sb[3], sc[3], B[3];
631 double t1D[4], t1V[4];
632 double pS[4], pV[4], pD[4];
633 for (int i = 0; i != 4; i++) {
634 pS[i] = P3[i] + P4[i];
635 pV[i] = P1[i] + P2[i];
636 pD[i] = pS[i] + pV[i];
637 }
638 sa[0] = LorentzDotProduct(pS, pS);
639 sb[0] = LorentzDotProduct(P3, P3);
640 sc[0] = LorentzDotProduct(P4, P4);
641 sa[1] = LorentzDotProduct(pV, pV);
642 sb[1] = LorentzDotProduct(P1, P1);
643 sc[1] = LorentzDotProduct(P2, P2);
644 sa[2] = LorentzDotProduct(pD, pD);
645 sb[2] = sa[0];
646 sc[2] = sa[1];
647 if (g == 1) {
648 if (flag == 0) pro = propagatorGS(mass[4], width[4], sa[1], sb[1], sc[1], rRes, 1);
649 else if (flag == 1) pro = propagatorRBW(mass[2], width[2], sa[1], sb[1], sc[1], rRes, 1);
650 else if (flag == 11) pro = propagatorRBW(mass[3], width[3], sa[1], sb[1], sc[1], rRes, 1);
651 else if (flag == 10) pro = 1;
652 } else if (g == 0) pro = 1;
653 B[1] = BWBarrierFactor(1, sa[1], sb[1], sc[1], rRes);
654 B[2] = BWBarrierFactor(1, sa[2], sb[2], sc[2], rD);
655 covariantTensor1(P1, P2, t1V);
656 covariantTensor1(pS, pV, t1D);
657 for (int i = 0; i != 4; i++) {
658 temp_PDF += G[i][i] * t1D[i] * t1V[i];
659 }
660 amp_PDF = temp_PDF * B[1] * B[2] * pro;
661 if (flag == 0 || flag == 10) amp_PDF *= KPiSFormfactor(sa[0], sb[0], sc[0], rRes);
662 // if(modeidx == 1 || modeidx == 11) amp_PDF *= -1.0; /// why ???????
663 return amp_PDF;
664 }

◆ D2VS() [2/2]

EvtComplex D2VS ( const double * P1,
const double * P2,
const double * P3,
const double * P4,
int g,
const int flag )
private

Definition at line 550 of file EvtD0ToKpipipi.cc.

551 {
552 //flag = 1, V = K*; flag = 2, V = rho
553 double temp_PDF = 0;
554 EvtComplex amp_PDF(0, 0);
555 EvtComplex pro;
556 double sa[3], sb[3], sc[3], B[3];
557 double t1D[4], t1V[4];
558 double pS[4], pV[4], pD[4];
559 for (int i = 0; i != 4; i++) {
560 pS[i] = P3[i] + P4[i];
561 pV[i] = P1[i] + P2[i];
562 pD[i] = pS[i] + pV[i];
563 }
564 sa[0] = dot(pS, pS);
565 sb[0] = dot(P3, P3);
566 sc[0] = dot(P4, P4);
567 sa[1] = dot(pV, pV);
568 sb[1] = dot(P1, P1);
569 sc[1] = dot(P2, P2);
570 sa[2] = dot(pD, pD);
571 sb[2] = sa[0];
572 sc[2] = sa[1];
573 if (g == 1) {
574 if (flag == 2) pro = propagatorGS(mass[3], width[3], sa[1], sb[1], sc[1], rRes, 1);
575 if (flag == 1) pro = propagatorRBW(mass[1], width[1], sa[1], sb[1], sc[1], rRes, 1);
576 }
577 if (g == 0) pro = 1;
578 B[1] = barrier(1, sa[1], sb[1], sc[1], rRes);
579 B[2] = barrier(1, sa[2], sb[2], sc[2], rD);
580 calt1(P1, P2, t1V);
581 calt1(pS, pV, t1D);
582 for (int i = 0; i != 4; i++) {
583 temp_PDF += G[i][i] * t1D[i] * t1V[i];
584 }
585 amp_PDF = temp_PDF * B[1] * B[2] * pro;
586 if (flag == 2) amp_PDF *= KPiSFormfactor(sa[0], sb[0], sc[0], rRes);
587 return amp_PDF;
588 }

◆ D2VV() [1/2]

EvtComplex D2VV ( const double * P1,
const double * P2,
const double * P3,
const double * P4,
int * g,
const int flag )
private

Amplitude modes.

Definition at line 383 of file EvtD0ToKpipi0pi0.cc.

384 {
385 double t1V1[4], t1V2[4], t1D[4], t2D[4][4];
386 double temp_PDF = 0;
387 EvtComplex amp_PDF(0, 0);
388 EvtComplex pro[2];
389
390 double sa[3], sb[3], sc[3], B[3];
391 double pV1[4], pV2[4], pD[4];
392 for (int i = 0; i != 4; i++) {
393 pV1[i] = P1[i] + P2[i];
394 pV2[i] = P3[i] + P4[i];
395 pD[i] = pV1[i] + pV2[i];
396 }
397 sa[0] = LorentzDotProduct(pV1, pV1);
398 sb[0] = LorentzDotProduct(P1, P1);
399 sc[0] = LorentzDotProduct(P2, P2);
400 sa[1] = LorentzDotProduct(pV2, pV2);
401 sb[1] = LorentzDotProduct(P3, P3);
402 sc[1] = LorentzDotProduct(P4, P4);
403 sa[2] = LorentzDotProduct(pD, pD);
404 sb[2] = sa[0];
405 sc[2] = sa[1];
406 if (g[0] == 1) {
407 if (flag == 0)pro[0] = propagatorRBW(mass[2], width[2], sa[0], sb[0], sc[0], rRes, 1);
408 if (flag == 1)pro[0] = propagatorRBW(mass[3], width[3], sa[0], sb[0], sc[0], rRes, 1);
409 }
410 if (g[1] == 1) {
411 if (flag == 0) pro[1] = propagatorGS(mass[4], width[4], sa[1], sb[1], sc[1], rRes, 1); //rho
412 if (flag == 1) pro[1] = 1;
413 }
414 if (g[0] == 0) pro[0] = 1;
415 if (g[1] == 0) pro[1] = 1;
416 B[0] = BWBarrierFactor(1, sa[0], sb[0], sc[0], rRes);
417 B[1] = BWBarrierFactor(1, sa[1], sb[1], sc[1], rRes);
418 covariantTensor1(P1, P2, t1V1);
419 covariantTensor1(P3, P4, t1V2);
420 if (g[2] == 0) {
421 for (int i = 0; i != 4; i++) {
422 temp_PDF += (G[i][i]) * t1V1[i] * t1V2[i];
423 }
424 B[2] = 1;
425 }
426 if (g[2] == 1) {
427 covariantTensor1(pV1, pV2, t1D);
428 for (int i = 0; i != 4; i++) {
429 for (int j = 0; j != 4; j++) {
430 for (int k = 0; k != 4; k++) {
431 for (int l = 0; l != 4; l++) {
432 temp_PDF += E[i][j][k][l] * pD[i] * t1D[j] * t1V1[k] * t1V2[l] * (G[i][i]) * (G[j][j]) * (G[l][l]) * (G[k][k]);
433 }
434 }
435 }
436 }
437 B[2] = BWBarrierFactor(1, sa[2], sb[2], sc[2], rD);
438 }
439 if (g[2] == 2) {
440 covariantTensor2(pV1, pV2, t2D);
441 for (int i = 0; i != 4; i++) {
442 for (int j = 0; j != 4; j++) {
443 temp_PDF += t2D[i][j] * t1V1[i] * t1V2[j] * (G[i][i]) * (G[j][j]);
444 }
445 }
446 B[2] = BWBarrierFactor(2, sa[2], sb[2], sc[2], rD);
447 }
448 amp_PDF = temp_PDF * B[0] * B[1] * B[2] * pro[0] * pro[1];
449 return amp_PDF;
450 }

◆ D2VV() [2/2]

EvtComplex D2VV ( const double * P1,
const double * P2,
const double * P3,
const double * P4,
int * g )
private

Amplitude modes.

Definition at line 315 of file EvtD0ToKpipipi.cc.

316 {
317 double t1V1[4], t1V2[4], t1D[4], t2D[4][4];
318 double temp_PDF = 0;
319 EvtComplex amp_PDF(0, 0);
320 EvtComplex pro[2];
321 //---------use g[0],g[1] to define res or non-res, g[2] represent S, P or D wave
322 double sa[3], sb[3], sc[3], B[3];
323 double pV1[4], pV2[4], pD[4];
324 for (int i = 0; i != 4; i++) {
325 pV1[i] = P1[i] + P2[i];
326 pV2[i] = P3[i] + P4[i];
327 pD[i] = pV1[i] + pV2[i];
328 }
329 sa[0] = dot(pV1, pV1);
330 sb[0] = dot(P1, P1);
331 sc[0] = dot(P2, P2);
332 sa[1] = dot(pV2, pV2);
333 sb[1] = dot(P3, P3);
334 sc[1] = dot(P4, P4);
335 sa[2] = dot(pD, pD);
336 sb[2] = sa[0];
337 sc[2] = sa[1];
338 if (g[1] == 1) {
339 pro[1] = propagatorGS(mass[3], width[3], sa[1], sb[1], sc[1], rRes, 1);
340 }
341 if (g[0] == 1) {
342 pro[0] = propagatorRBW(mass[1], width[1], sa[0], sb[0], sc[0], rRes, 1);
343 }
344 if (g[0] == 0) pro[0] = 1;
345 if (g[1] == 0) pro[1] = 1;
346 B[0] = barrier(1, sa[0], sb[0], sc[0], rRes);
347 B[1] = barrier(1, sa[1], sb[1], sc[1], rRes);
348 calt1(P1, P2, t1V1);
349 calt1(P3, P4, t1V2);
350 if (g[2] == 0) {
351 for (int i = 0; i != 4; i++) {
352 temp_PDF += (G[i][i]) * t1V1[i] * t1V2[i];
353 }
354 B[2] = 1;
355 }
356 if (g[2] == 1) {
357 calt1(pV1, pV2, t1D);
358 for (int i = 0; i != 4; i++) {
359 for (int j = 0; j != 4; j++) {
360 for (int k = 0; k != 4; k++) {
361 for (int l = 0; l != 4; l++) {
362 temp_PDF += E[i][j][k][l] * pD[i] * t1D[j] * t1V1[k] * t1V2[l] * (G[i][i]) * (G[j][j]) * (G[l][l]) * (G[k][k]);
363 }
364 }
365 }
366 }
367 B[2] = barrier(1, sa[2], sb[2], sc[2], rD);
368 }
369 if (g[2] == 2) {
370 calt2(pV1, pV2, t2D);
371 for (int i = 0; i != 4; i++) {
372 for (int j = 0; j != 4; j++) {
373 temp_PDF += t2D[i][j] * t1V1[i] * t1V2[j] * (G[i][i]) * (G[j][j]);
374 }
375 }
376 B[2] = barrier(2, sa[2], sb[2], sc[2], rD);
377 }
378 amp_PDF = temp_PDF * B[0] * B[1] * B[2] * pro[0] * pro[1];
379 return amp_PDF;
380 }

◆ dampingFactorSquare()

double dampingFactorSquare ( const double & cmmom,
const int & spin,
const double & mRadius )
private

Definition at line 96 of file EvtDToKSKpi0.cc.

97 {
98 double square = mRadius * mRadius * cmmom * cmmom;
99 double dfsq = 1 + square;
100 double dfsqres = dfsq + 8 + 2 * square + square * square;
101
102 double ret = (spin == 2) ? dfsqres : dfsq;
103 return ret;
104 }

◆ DDalitz()

double DDalitz ( double P1[4],
double P2[4],
double P3[4],
int Ang,
double mass )
private

Definition at line 408 of file EvtDsToKpipi.cc.

409 {
410 double pR[4], pD[4];
411 double temp_PDF, v_re;
412 temp_PDF = 0.0;
413 v_re = 0.0;
414 double B[2], s1, s2, s3, sR, sD;
415 for (int i = 0; i < 4; i++) {
416 pR[i] = P1[i] + P2[i];
417 pD[i] = pR[i] + P3[i];
418 }
419 s1 = SCADot(P1, P1);
420 s2 = SCADot(P2, P2);
421 s3 = SCADot(P3, P3);
422 sR = SCADot(pR, pR);
423 sD = SCADot(pD, pD);
424 int GG[4][4];
425 for (int i = 0; i != 4; i++) {
426 for (int j = 0; j != 4; j++) {
427 if (i == j) {
428 if (i == 0) GG[i][j] = 1;
429 else GG[i][j] = -1;
430 } else GG[i][j] = 0;
431 }
432 }
433 if (Ang == 0) {
434 B[0] = 1;
435 B[1] = 1;
436 temp_PDF = 1;
437 }
438 if (Ang == 1) {
439 B[0] = barrier(1, sR, s1, s2, 3.0, mass_param);
440 B[1] = barrier(1, sD, sR, s3, 5.0, mDsM);
441 double t1[4], T1[4];
442 calt1(P1, P2, t1);
443 calt1(pR, P3, T1);
444 temp_PDF = 0;
445 for (int i = 0; i < 4; i++) {
446 temp_PDF += t1[i] * T1[i] * GG[i][i];
447 }
448 }
449 if (Ang == 2) {
450 B[0] = barrier(2, sR, s1, s2, 3.0, mass_param);
451 B[1] = barrier(2, sD, sR, s3, 5.0, mDsM);
452 double t2[4][4], T2[4][4];
453 calt2(P1, P2, t2);
454 calt2(pR, P3, T2);
455 temp_PDF = 0;
456 for (int i = 0; i < 4; i++) {
457 for (int j = 0; j < 4; j++) {
458 temp_PDF += t2[i][j] * T2[j][i] * GG[i][i] * GG[j][j];
459 }
460 }
461 }
462 v_re = temp_PDF * B[0] * B[1];
463 return v_re;
464 }

◆ decay() [1/23]

void decay ( EvtParticle * p)

Member of particle in EvtGen.

Definition at line 146 of file EvtB0toKsKK.cc.

147 {
148 // Btag
149 static EvtId B0 = EvtPDL::getId("B0");
150 static EvtId B0B = EvtPDL::getId("anti-B0");
151
152 double t;
153 EvtId other_b;
154
155 //std::cout << EvtCPUtil::getInstance()->getMixingType() << std::endl;
156 //EvtCPUtil::getInstance()->setMixingType(0);
157 EvtCPUtil::getInstance()->OtherB(p, t, other_b, 0.5);
158 //EvtCPUtil::getInstance()->OtherB(p,t,other_b,0.4);
159 //EvtCPUtil::getInstance()->OtherB(p,t,other_b);
160
161 // Brec
162 p->initializePhaseSpace(getNDaug(), getDaugs());
163 EvtVector4R p4ks, p4kp, p4km;
164 if (p->getId() == B0) {
165 p4ks = p->getDaug(0)->getP4();
166 p4kp = p->getDaug(1)->getP4();
167 p4km = p->getDaug(2)->getP4();
170 /*p4ks = p->getDaug(0)->getP4();
171 p4kp = p->getDaug(2)->getP4();
172 p4km = p->getDaug(1)->getP4();*/
173 } else {
174 p4ks = p->getDaug(0)->getP4();
175 p4kp = p->getDaug(2)->getP4();
176 p4km = p->getDaug(1)->getP4();
178 /*p4ks = p->getDaug(0)->getP4();
179 p4kp = p->getDaug(1)->getP4();
180 p4km = p->getDaug(2)->getP4();*/
181 }
182
183 /*std::cout << (p4ks + p4kp).mass() << " " << (p4ks + p4km).mass() << " "
184 << (p4kp + p4km).mass() << std::endl;
185 if( p->getId() == other_b )
186 std::cout << "same flavour" << std::endl;
187 std::cout << p->getId() << " --> " << p->getDaug(0)->getId() << " "
188 << p->getDaug(1)->getId() << " " << p->getDaug(2)->getId()
189 << std::endl;
190 std::cout << B0 << std::endl;
191 std::cout << B0B << std::endl;
192 std::cout << other_b << std::endl;*/
193 /*std::cout << p->getLifetime() << std::endl;
194 std::cout << p->get4Pos() << std::endl;
195 std::cout << p->getP4() << std::endl;
196 std::cout << p->getP4Lab() << std::endl;
197 EvtParticle *parent=p->getParent();
198 if (parent->getDaug(0)!=p){
199 std::cout << parent->getDaug(0)->getLifetime() << std::endl;
200 std::cout << parent->getDaug(0)->get4Pos() << std::endl;
201 std::cout << parent->getDaug(0)->getP4() << std::endl;
202 std::cout << parent->getDaug(0)->getP4Lab() << std::endl;
203 std::cout << parent->getDaug(0)->getP4Lab()+p->getP4Lab() << std::endl;
204 }
205 else{
206 std::cout << parent->getDaug(1)->getLifetime() << std::endl;
207 std::cout << parent->getDaug(1)->get4Pos() << std::endl;
208 std::cout << parent->getDaug(1)->getP4() << std::endl;
209 std::cout << parent->getDaug(1)->getP4Lab() << std::endl;
210 std::cout << parent->getDaug(1)->getP4Lab()+p->getP4Lab() << std::endl;
211 }
212 std::cout << parent->getP4() << std::endl;
213 std::cout << t << std::endl;*/
214
215 // Relative amplides and phases with direct CP violation
216 a_f0ks_ =
217 (1.0 + getArg(3)) * EvtComplex(getArg(1) * cos(getArg(2) * M_PI / 180.0),
218 getArg(1) * sin(getArg(2) * M_PI / 180.0));
219 a_phiks_ =
220 (1.0 + getArg(7)) * EvtComplex(getArg(5) * cos(getArg(6) * M_PI / 180.0),
221 getArg(5) * sin(getArg(6) * M_PI / 180.0));
222 a_fxks_ =
223 (1.0 + getArg(11)) * EvtComplex(getArg(9) * cos(getArg(10) * M_PI / 180.0),
224 getArg(9) * sin(getArg(10) * M_PI / 180.0));
225 a_chic0ks_ =
226 (1.0 + getArg(15)) * EvtComplex(getArg(13) * cos(getArg(14) * M_PI / 180.0),
227 getArg(13) * sin(getArg(14) * M_PI / 180.0));
228 a_kpkmnr_ =
229 (1.0 + getArg(19)) * EvtComplex(getArg(17) * cos(getArg(18) * M_PI / 180.0),
230 getArg(17) * sin(getArg(18) * M_PI / 180.0));
231 a_kskpnr_ =
232 (1.0 + getArg(24)) * EvtComplex(getArg(22) * cos(getArg(23) * M_PI / 180.0),
233 getArg(22) * sin(getArg(23) * M_PI / 180.0));
234 a_kskmnr_ =
235 (1.0 + getArg(29)) * EvtComplex(getArg(27) * cos(getArg(28) * M_PI / 180.0),
236 getArg(27) * sin(getArg(28) * M_PI / 180.0));
237
238 abar_f0ks_ =
239 (1.0 - getArg(3)) * EvtComplex(getArg(1) * cos(getArg(2) * M_PI / 180.0),
240 getArg(1) * sin(getArg(2) * M_PI / 180.0));
241 abar_phiks_ =
242 (1.0 - getArg(7)) * EvtComplex(getArg(5) * cos(getArg(6) * M_PI / 180.0),
243 getArg(5) * sin(getArg(6) * M_PI / 180.0));
244 abar_fxks_ =
245 (1.0 - getArg(11)) * EvtComplex(getArg(9) * cos(getArg(10) * M_PI / 180.0),
246 getArg(9) * sin(getArg(10) * M_PI / 180.0));
247 abar_chic0ks_ =
248 (1.0 - getArg(15)) * EvtComplex(getArg(13) * cos(getArg(14) * M_PI / 180.0),
249 getArg(13) * sin(getArg(14) * M_PI / 180.0));
250 abar_kpkmnr_ =
251 (1.0 - getArg(19)) * EvtComplex(getArg(17) * cos(getArg(18) * M_PI / 180.0),
252 getArg(17) * sin(getArg(18) * M_PI / 180.0));
253 abar_kskpnr_ =
254 (1.0 - getArg(24)) * EvtComplex(getArg(22) * cos(getArg(23) * M_PI / 180.0),
255 getArg(22) * sin(getArg(23) * M_PI / 180.0));
256 abar_kskmnr_ =
257 (1.0 - getArg(29)) * EvtComplex(getArg(27) * cos(getArg(28) * M_PI / 180.0),
258 getArg(27) * sin(getArg(28) * M_PI / 180.0));
259
260 // Mixing-induced CP asymmetry
261 const double pCP_f0ks = getArg(4) * M_PI / 180.0;
262 const double pCP_phiks = getArg(8) * M_PI / 180.0;
263 const double pCP_fxks = getArg(12) * M_PI / 180.0;
264 const double pCP_chic0ks = getArg(16) * M_PI / 180.0;
265 const double pCP_kpkmnr = getArg(20) * M_PI / 180.0;
266 const double pCP_kskpnr = getArg(25) * M_PI / 180.0;
267 const double pCP_kskmnr = getArg(30) * M_PI / 180.0;
268
269 if (other_b == B0) {
270 a_f0ks_ *=
271 EvtComplex(cos(+2.0 * pCP_f0ks), sin(+2.0 * pCP_f0ks));
272 a_phiks_ *=
273 EvtComplex(cos(+2.0 * pCP_phiks), sin(+2.0 * pCP_phiks));
274 a_fxks_ *=
275 EvtComplex(cos(+2.0 * pCP_fxks), sin(+2.0 * pCP_fxks));
276 a_chic0ks_ *=
277 EvtComplex(cos(+2.0 * pCP_chic0ks), sin(+2.0 * pCP_chic0ks));
278 a_kpkmnr_ *=
279 EvtComplex(cos(+2.0 * pCP_kpkmnr), sin(+2.0 * pCP_kpkmnr));
280 a_kskpnr_ *=
281 EvtComplex(cos(+2.0 * pCP_kskpnr), sin(+2.0 * pCP_kskpnr));
282 a_kskmnr_ *=
283 EvtComplex(cos(+2.0 * pCP_kskmnr), sin(+2.0 * pCP_kskmnr));
284 }
285 if (other_b == B0B) {
286 abar_f0ks_ *=
287 EvtComplex(cos(-2.0 * pCP_f0ks), sin(-2.0 * pCP_f0ks));
288 abar_phiks_ *=
289 EvtComplex(cos(-2.0 * pCP_phiks), sin(-2.0 * pCP_phiks));
290 abar_fxks_ *=
291 EvtComplex(cos(-2.0 * pCP_fxks), sin(-2.0 * pCP_fxks));
292 abar_chic0ks_ *=
293 EvtComplex(cos(-2.0 * pCP_chic0ks), sin(-2.0 * pCP_chic0ks));
294 abar_kpkmnr_ *=
295 EvtComplex(cos(-2.0 * pCP_kpkmnr), sin(-2.0 * pCP_kpkmnr));
296 abar_kskpnr_ *=
297 EvtComplex(cos(-2.0 * pCP_kskpnr), sin(-2.0 * pCP_kskpnr));
298 abar_kskmnr_ *=
299 EvtComplex(cos(-2.0 * pCP_kskmnr), sin(-2.0 * pCP_kskmnr));
300 }
301
302 //Form Factors
303 EvtComplex Amp_f0ks = A_f0ks(p4ks, p4kp, p4km);
304 EvtComplex Amp_phiks = A_phiks(p4ks, p4kp, p4km);
305 EvtComplex Amp_fxks = A_fxks(p4ks, p4kp, p4km);
306 EvtComplex Amp_chic0ks = A_chic0ks(p4ks, p4kp, p4km);
307 EvtComplex Amp_kpkmnr = A_kknr(p4kp, p4km, alpha_kpkmnr);
308 EvtComplex Amp_kskpnr = A_kknr(p4ks, p4kp, alpha_kskpnr);
309 EvtComplex Amp_kskmnr = A_kknr(p4ks, p4km, alpha_kskmnr);
310
311 EvtComplex Ampbar_f0ks = A_f0ks(p4ks, p4km, p4kp);
312 EvtComplex Ampbar_phiks = A_phiks(p4ks, p4km, p4kp);
313 EvtComplex Ampbar_fxks = A_fxks(p4ks, p4km, p4kp);
314 EvtComplex Ampbar_chic0ks = A_chic0ks(p4ks, p4km, p4kp);
315 EvtComplex Ampbar_kpkmnr = A_kknr(p4km, p4kp, alpha_kpkmnr);
316 EvtComplex Ampbar_kskpnr = A_kknr(p4ks, p4km, alpha_kskpnr);
317 EvtComplex Ampbar_kskmnr = A_kknr(p4ks, p4kp, alpha_kskmnr);
318
319 const EvtComplex A_B0toKsKK =
320 (a_f0ks_ * Amp_f0ks) +
321 (a_phiks_ * Amp_phiks) +
322 (a_fxks_ * Amp_fxks) +
323 (a_chic0ks_ * Amp_chic0ks) +
324 (a_kpkmnr_ * Amp_kpkmnr) +
325 (a_kskpnr_ * Amp_kskpnr) +
326 (a_kskmnr_ * Amp_kskmnr);
327
328 const EvtComplex Abar_B0toKsKK =
329 (abar_f0ks_ * Ampbar_f0ks) +
330 (abar_phiks_ * Ampbar_phiks) +
331 (abar_fxks_ * Ampbar_fxks) +
332 (abar_chic0ks_ * Ampbar_chic0ks) +
333 (abar_kpkmnr_ * Ampbar_kpkmnr) +
334 (abar_kskpnr_ * Ampbar_kskpnr) +
335 (abar_kskmnr_ * Ampbar_kskmnr);
336
337 // CP asymmetry
338 const double dm = getArg(0);
339
340 EvtComplex amp;
341 if (other_b == B0B) {
342 amp =
343 A_B0toKsKK * cos(dm * t / (2.0 * EvtConst::c)) +
344 EvtComplex(0.0, 1.0) * Abar_B0toKsKK * sin(dm * t / (2.0 * EvtConst::c));
345 }
346 if (other_b == B0) {
347 amp =
348 A_B0toKsKK *
349 EvtComplex(0.0, 1.0) * sin(dm * t / (2.0 * EvtConst::c)) +
350 Abar_B0toKsKK * cos(dm * t / (2.0 * EvtConst::c));
351 }
352
353 if (abs2(amp) > 50000.0)
354 debugfile_ << abs2(amp) << std::endl;
355 vertex(amp);
356
357 return;
358 }

◆ decay() [2/23]

void decay ( EvtParticle * p)

Creates a decay.

Definition at line 49 of file EvtBCL.cc.

50 {
51 p->initializePhaseSpace(getNDaug(), getDaugs());
52 calcamp->CalcAmp(p, _amp2, bclmodel);
53 }

◆ decay() [3/23]

void decay ( EvtParticle * p)

The function evaluates the decay amplitude of the parent particle.

a pointer to the parent particle

Definition at line 53 of file EvtBSemiTauonic2HDMType2.cc.

54 {
55 p->initializePhaseSpace(getNDaug(), getDaugs());
56 m_CalcAmp->CalcAmp(p, _amp2, m_CalcHelAmp);
57 }

◆ decay() [4/23]

void decay ( EvtParticle * p)

The function evaluates the decay amplitude of the parent particle.

Parameters
pa pointer to the parent particle

Definition at line 53 of file EvtBSemiTauonic.cc.

54 {
55 p->initializePhaseSpace(getNDaug(), getDaugs());
56 m_CalcAmp->CalcAmp(p, _amp2, m_CalcHelAmp);
57 }

◆ decay() [5/23]

void decay ( EvtParticle * p)

The function to determine kinematics of daughter particles based on dGdsb distribution.

Definition at line 46 of file EvtBtoXsnunu_FERMI.cc.

47 {
48 p->makeDaughters(getNDaug(), getDaugs());
49
50 EvtParticle* xhadron = p->getDaug(0);
51 EvtParticle* leptonp = p->getDaug(1);
52 EvtParticle* leptonn = p->getDaug(2);
53
54 double mass[3];
55
56 findMasses(p, getNDaug(), getDaugs(), mass);
57
58 double mB = p->mass();
59 double ml = mass[1];
60 double pb(0.); // fermi momentum of b-quark
61
62 double xhadronMass = -999.0;
63
64 EvtVector4R p4xhadron;
65 EvtVector4R p4leptonp;
66 EvtVector4R p4leptonn;
67
68 while (xhadronMass < m_mxmin) {
69
70 // Apply Fermi motion and determine effective b-quark mass
71
72 double mb = 0.0;
73
74 bool FailToSetmb = true; // true when an appropriate mb cannot be found
75 while (FailToSetmb) {
76 pb = FermiMomentum(m_pf);
77
78 // effective b-quark mass
79 mb = mB * mB + m_mq * m_mq - 2.0 * mB * sqrt(pb * pb + m_mq * m_mq);
80 if (mb > 0. && sqrt(mb) - m_ms < 2.0 * ml) FailToSetmb = true;
81 else if (mb <= 0.0) FailToSetmb = true;
82 else FailToSetmb = false;
83 }
84 mb = sqrt(mb);
85
86 double mb_prob = m_mb_prob; // b-quark mass for probability density
87 double ms_prob = m_ms_prob; // s-quark mass for probability density
88 double mstilda = ms_prob / mb_prob;
89 double sb = 0.0;
90 double sbmin = 0;
91 double sbmax = (1 - mstilda) * (1 - mstilda);
92 while (sb == 0.0) {
93 double xbox = EvtRandom::Flat(sbmin, sbmax);
94 double ybox = EvtRandom::Flat(m_dGdsbProbMax);
95 double prob = dGdsbProb(xbox);
96 if (ybox < prob) sb = xbox;
97 }
98
99 // b->s (nu nubar)
100 EvtVector4R p4sdilep[2];
101
102 double msdilep[2];
103 msdilep[0] = m_ms;
104 msdilep[1] = sqrt(sb * mb_prob * mb_prob);
105
106 EvtGenKine::PhaseSpace(2, msdilep, p4sdilep, mb);
107
108 // we do not care about neutrino
109 // just (nu nubar) -> nu nubar by phase space
110 EvtVector4R p4ll[2];
111
112 double mll[2];
113 mll[0] = ml;
114 mll[1] = ml;
115
116 EvtGenKine::PhaseSpace(2, mll, p4ll, msdilep[1]);
117
118 // boost to b-quark rest frame
119
120 p4ll[0] = boostTo(p4ll[0], p4sdilep[1]);
121 p4ll[1] = boostTo(p4ll[1], p4sdilep[1]);
122
123 // assign 4-momenta to valence quarks inside B meson in B rest frame
124 double phi = EvtRandom::Flat(EvtConst::twoPi);
125 double costh = EvtRandom::Flat(-1.0, 1.0);
126 double sinth = sqrt(1.0 - costh * costh);
127
128 // b-quark four-momentum in B meson rest frame
129
130 EvtVector4R p4b(sqrt(mb * mb + pb * pb),
131 pb * sinth * sin(phi),
132 pb * sinth * cos(phi),
133 pb * costh);
134
135 EvtVector4R p4s = boostTo(p4sdilep[0], p4b);
136 p4leptonp = boostTo(p4ll[0], p4b);
137 p4leptonn = boostTo(p4ll[1], p4b);
138
139 // spectator quark in B meson rest frame
140 EvtVector4R p4q(sqrt(pb * pb + m_mq * m_mq), -p4b.get(1), -p4b.get(2), -p4b.get(3));
141
142 // hadron system in B meson rest frame
143 p4xhadron = p4s + p4q;
144 xhadronMass = p4xhadron.mass();
145
146 }
147
148 // initialize the decay products
149 xhadron->init(getDaug(0), p4xhadron);
150
151 // assign the momentum of neutrino
152 // it is out of our interest
153 leptonp->init(getDaug(1), p4leptonp);
154 leptonn->init(getDaug(2), p4leptonn);
155
156 return;
157
158 }

◆ decay() [6/23]

void decay ( EvtParticle * p)

Definition at line 186 of file EvtD0ToKpipi0pi0.cc.

187 {
188 /*
189 double maxprob = 0.0;
190 for(int ir=0;ir<=60000000;ir++){
191 p->initializePhaseSpace(getNDaug(),getDaugs());
192 EvtVector4R Km0 = p->getDaug(0)->getP4();
193 EvtVector4R pi1 = p->getDaug(1)->getP4();
194 EvtVector4R pi2 = p->getDaug(2)->getP4();
195 EvtVector4R pi3 = p->getDaug(3)->getP4();
196 double Km[4],Pip[4],Pi01[4],Pi02[4];
197 Km[0] = Km0.get(0); Pip[0] = pi1.get(0); Pi01[0] = pi2.get(0); Pi02[0] = pi3.get(0);
198 Km[1] = Km0.get(1); Pip[1] = pi1.get(1); Pi01[1] = pi2.get(1); Pi02[1] = pi3.get(1);
199 Km[2] = Km0.get(2); Pip[2] = pi1.get(2); Pi01[2] = pi2.get(2); Pi02[2] = pi3.get(2);
200 Km[3] = Km0.get(3); Pip[3] = pi1.get(3); Pi01[3] = pi2.get(3); Pi02[3] = pi3.get(3);
201 double Prob = calPDF(Km, Pip, Pi01, Pi02);
202 if(Prob>maxprob) {
203 maxprob=Prob;
204 }
205 }
206 */
207 p->initializePhaseSpace(getNDaug(), getDaugs());
208 EvtVector4R Km0 = p->getDaug(0)->getP4();
209 EvtVector4R pi1 = p->getDaug(1)->getP4();
210 EvtVector4R pi2 = p->getDaug(2)->getP4();
211 EvtVector4R pi3 = p->getDaug(3)->getP4();
212
213 double Km[4], Pip[4], Pi01[4], Pi02[4];
214 Km[0] = Km0.get(0); Pip[0] = pi1.get(0); Pi01[0] = pi2.get(0); Pi02[0] = pi3.get(0);
215 Km[1] = Km0.get(1); Pip[1] = pi1.get(1); Pi01[1] = pi2.get(1); Pi02[1] = pi3.get(1);
216 Km[2] = Km0.get(2); Pip[2] = pi1.get(2); Pi01[2] = pi2.get(2); Pi02[2] = pi3.get(2);
217 Km[3] = Km0.get(3); Pip[3] = pi1.get(3); Pi01[3] = pi2.get(3); Pi02[3] = pi3.get(3);
218 double prob = PDF(Km, Pip, Pi01, Pi02);
219 setProb(prob);
220 return;
221 }

◆ decay() [7/23]

void decay ( EvtParticle * p)

Definition at line 171 of file EvtD0ToKpipipi.cc.

172 {
173 /*
174 double maxprob = 0.0;
175 for(int ir=0;ir<=60000000;ir++){
176 p->initializePhaseSpace(getNDaug(),getDaugs());
177 EvtVector4R Km0 = p->getDaug(0)->getP4();
178 EvtVector4R pi1 = p->getDaug(1)->getP4();
179 EvtVector4R pi2 = p->getDaug(2)->getP4();
180 EvtVector4R pi3 = p->getDaug(3)->getP4();
181 double Km[4],Pip1[4],Pip2[4],Pim[4];
182 Km[0] = Km0.get(0); Pip1[0] = pi1.get(0); Pip2[0] = pi2.get(0); Pim[0] = pi3.get(0);
183 Km[1] = Km0.get(1); Pip1[1] = pi1.get(1); Pip2[1] = pi2.get(1); Pim[1] = pi3.get(1);
184 Km[2] = Km0.get(2); Pip1[2] = pi1.get(2); Pip2[2] = pi2.get(2); Pim[2] = pi3.get(2);
185 Km[3] = Km0.get(3); Pip1[3] = pi1.get(3); Pip2[3] = pi2.get(3); Pim[3] = pi3.get(3);
186 double Prob = calPDF(Km, Pip1, Pip2, Pim);
187 if(Prob>maxprob) {
188 maxprob=Prob;
189 }
190 }
191 */
192 p->initializePhaseSpace(getNDaug(), getDaugs());
193 EvtVector4R Km0 = p->getDaug(0)->getP4();
194 EvtVector4R pi1 = p->getDaug(1)->getP4();
195 EvtVector4R pi2 = p->getDaug(2)->getP4();
196 EvtVector4R pi3 = p->getDaug(3)->getP4();
197
198 double Km[4], Pip1[4], Pip2[4], Pim[4];
199 Km[0] = Km0.get(0); Pip1[0] = pi1.get(0); Pip2[0] = pi2.get(0); Pim[0] = pi3.get(0);
200 Km[1] = Km0.get(1); Pip1[1] = pi1.get(1); Pip2[1] = pi2.get(1); Pim[1] = pi3.get(1);
201 Km[2] = Km0.get(2); Pip1[2] = pi1.get(2); Pip2[2] = pi2.get(2); Pim[2] = pi3.get(2);
202 Km[3] = Km0.get(3); Pip1[3] = pi1.get(3); Pip2[3] = pi2.get(3); Pim[3] = pi3.get(3);
203 double prob = calPDF(Km, Pip1, Pip2, Pim);
204 setProb(prob);
205 return;
206 }

◆ decay() [8/23]

void decay ( EvtParticle * p)

Definition at line 100 of file EvtD0TopipiEta.cc.

101 {
102 /*
103 // This piece of code could in principle be used to calculate maximum
104 // probablity on fly. But as it uses high number of points and model
105 // deals with single final state, we keep hardcoded number for now rather
106 // than adapting code to work here.
107
108 double maxprob = 0.0;
109 for(int ir=0;ir<=60000000;ir++){
110 p->initializePhaseSpace(getNDaug(),getDaugs());
111 EvtVector4R D1 = p->getDaug(0)->getP4();
112 EvtVector4R D2 = p->getDaug(1)->getP4();
113 EvtVector4R D3 = p->getDaug(2)->getP4();
114
115 double P1[4], P2[4], P3[4];
116 P1[0] = D1.get(0); P1[1] = D1.get(1); P1[2] = D1.get(2); P1[3] = D1.get(3);
117 P2[0] = D2.get(0); P2[1] = D2.get(1); P2[2] = D2.get(2); P2[3] = D2.get(3);
118 P3[0] = D3.get(0); P3[1] = D3.get(1); P3[2] = D3.get(2); P3[3] = D3.get(3);
119
120 double value;
121 value = calDalEva(P1, P2, P3);
122 if(value>maxprob) {
123 maxprob=value;
124 }
125 }
126 */
127 p->initializePhaseSpace(getNDaug(), getDaugs());
128 EvtVector4R D1 = p->getDaug(0)->getP4();
129 EvtVector4R D2 = p->getDaug(1)->getP4();
130 EvtVector4R D3 = p->getDaug(2)->getP4();
131
132 double P1[4], P2[4], P3[4];
133 P1[0] = D1.get(0); P1[1] = D1.get(1); P1[2] = D1.get(2); P1[3] = D1.get(3);
134 P2[0] = D2.get(0); P2[1] = D2.get(1); P2[2] = D2.get(2); P2[3] = D2.get(3);
135 P3[0] = D3.get(0); P3[1] = D3.get(1); P3[2] = D3.get(2); P3[3] = D3.get(3);
136
137 double value;
138 value = calDalEva(P1, P2, P3);
139 setProb(value);
140
141 return ;
142 }

◆ decay() [9/23]

void decay ( EvtParticle * p)

Definition at line 217 of file EvtD0Topippim2pi0.cc.

218 {
219 /*
220 double maxprob = 0.0;
221 for(int ir=0;ir<=60000000;ir++){
222 p->initializePhaseSpace(getNDaug(),getDaugs());
223 for(int i=0; i<_nd; i++){
224 _p4Lab[i]=p->getDaug(i)->getP4Lab();
225 _p4CM[i]=p->getDaug(i)->getP4();
226 }
227 double Prob = AmplitudeSquare(charm, tagmode);
228 if(Prob>maxprob) {
229 maxprob=Prob;
230 }
231 }
232 */
233 p->initializePhaseSpace(getNDaug(), getDaugs());
234 for (int i = 0; i < _nd; i++) {
235 _p4Lab[i] = p->getDaug(i)->getP4Lab();
236 _p4CM[i] = p->getDaug(i)->getP4();
237 }
238 double prob = AmplitudeSquare(charm, tagmode);
239 setProb(prob);
240 return;
241 }

◆ decay() [10/23]

void decay ( EvtParticle * p)

Definition at line 125 of file EvtDsToKKpi.cc.

126 {
127 p->initializePhaseSpace(getNDaug(), getDaugs());
128 EvtVector4R D1 = p->getDaug(0)->getP4();
129 EvtVector4R D2 = p->getDaug(1)->getP4();
130 EvtVector4R D3 = p->getDaug(2)->getP4();
131 double P1[4], P2[4], P3[4];
132 P1[1] = D1.get(1); P1[2] = D1.get(2); P1[3] = D1.get(3);
133 P2[1] = D2.get(1); P2[2] = D2.get(2); P2[3] = D2.get(3);
134 P3[1] = D3.get(1); P3[2] = D3.get(2); P3[3] = D3.get(3);
135
136 double value;
137 int g0[6] = {1, 1, 1, 1, 1, 1};
138 int nstates = 6;
139 calEvaMy(P1, P2, P3, mass, width, rho, phi, g0, modetype, nstates, value);
140 setProb(value);
141 return ;
142 }

◆ decay() [11/23]

void decay ( EvtParticle * p)

Definition at line 157 of file EvtDsToKpipi.cc.

158 {
159 p->initializePhaseSpace(getNDaug(), getDaugs());
160 EvtVector4R D1 = p->getDaug(0)->getP4();
161 EvtVector4R D2 = p->getDaug(1)->getP4();
162 EvtVector4R D3 = p->getDaug(2)->getP4();
163
164 double P1[4], P2[4], P3[4];
165 P1[0] = D1.get(0); P1[1] = D1.get(1); P1[2] = D1.get(2); P1[3] = D1.get(3);
166 P2[0] = D2.get(0); P2[1] = D2.get(1); P2[2] = D2.get(2); P2[3] = D2.get(3);
167 P3[0] = D3.get(0); P3[1] = D3.get(1); P3[2] = D3.get(2); P3[3] = D3.get(3);
168
169 double value;
170 int g0[8] = {1, 1, 4, 2, 500, 1, 1, 2};
171 int spin_param[8] = {1, 1, 0, 0, 0, 1, 1, 0};
172 int nstates = 8;
173 calEva(P1, P2, P3, mass, width, rho, phi, g0, spin_param, modetype, nstates, value);
174
175 setProb(value);
176
177 return ;
178 }

◆ decay() [12/23]

void decay ( EvtParticle * p)

Definition at line 73 of file EvtDToKSKpi0.cc.

74 {
75 p->initializePhaseSpace(getNDaug(), getDaugs());
76 for (int i = 0; i < _nd; i++) {
77 _p4Lab[i] = p->getDaug(i)->getP4Lab();
78 _p4CM[i] = p->getDaug(i)->getP4();
79 }
80 double prob = AmplitudeSquare();
81 setProb(prob);
82 return;
83 }

◆ decay() [13/23]

void decay ( EvtParticle * p)

Definition at line 136 of file EvtDToKSpipi0pi0.cc.

137 {
138 //-----------for max value------------------
139 /* double maxprob = 0.0;
140 for(int ir=0;ir<=60000000;ir++){
141 p->initializePhaseSpace(getNDaug(),getDaugs());
142 EvtVector4R Ks0 = p->getDaug(0)->getP4();
143 EvtVector4R pi1 = p->getDaug(1)->getP4();
144 EvtVector4R pi2 = p->getDaug(2)->getP4();
145 EvtVector4R pi3 = p->getDaug(3)->getP4();
146 double value;
147 double Ks[4],Pip[4],Pi01[4],Pi02[4];
148 mother_c=EvtPDL::getStdHep(p->getId());
149 if(mother_c==411){
150 Ks[0] = Ks0.get(0); Pip[0] = pi1.get(0); Pi01[0] = pi2.get(0); Pi02[0] = pi3.get(0);
151 Ks[1] = Ks0.get(1); Pip[1] = pi1.get(1); Pi01[1] = pi2.get(1); Pi02[1] = pi3.get(1);
152 Ks[2] = Ks0.get(2); Pip[2] = pi1.get(2); Pi01[2] = pi2.get(2); Pi02[2] = pi3.get(2);
153 Ks[3] = Ks0.get(3); Pip[3] = pi1.get(3); Pi01[3] = pi2.get(3); Pi02[3] = pi3.get(3);
154 }else if(mother_c==-411){
155 Ks[0] = Ks0.get(0); Pip[0] = pi1.get(0); Pi01[0] = pi2.get(0); Pi02[0] = pi3.get(0);
156 Ks[1] = -1.0*Ks0.get(1); Pip[1] = -1.0*pi1.get(1); Pi01[1] = -1.0*pi2.get(1); Pi02[1] = -1.0*pi3.get(1);
157 Ks[2] = -1.0*Ks0.get(2); Pip[2] = -1.0*pi1.get(2); Pi01[2] = -1.0*pi2.get(2); Pi02[2] = -1.0*pi3.get(2);
158 Ks[3] = -1.0*Ks0.get(3); Pip[3] = -1.0*pi1.get(3); Pi01[3] = -1.0*pi2.get(3); Pi02[3] = -1.0*pi3.get(3);}
159 calPDF(Ks, Pip, Pi01, Pi02, value);
160 if(value>maxprob) {
161 maxprob=value;
162 }
163 }
164 return;*/
165 //-----------------------------------------------
166 p->initializePhaseSpace(getNDaug(), getDaugs());
167 EvtVector4R Ks0 = p->getDaug(0)->getP4();
168 EvtVector4R pip = p->getDaug(1)->getP4();
169 EvtVector4R pi01 = p->getDaug(2)->getP4();
170 EvtVector4R pi02 = p->getDaug(3)->getP4();
171
172 mother_c = EvtPDL::getStdHep(p->getId());
173 double Ks[4], Pip[4], Pi01[4], Pi02[4];
174 if (mother_c == 411) {
175 Ks[0] = Ks0.get(0); Pip[0] = pip.get(0); Pi01[0] = pi01.get(0); Pi02[0] = pi02.get(0);
176 Ks[1] = Ks0.get(1); Pip[1] = pip.get(1); Pi01[1] = pi01.get(1); Pi02[1] = pi02.get(1);
177 Ks[2] = Ks0.get(2); Pip[2] = pip.get(2); Pi01[2] = pi01.get(2); Pi02[2] = pi02.get(2);
178 Ks[3] = Ks0.get(3); Pip[3] = pip.get(3); Pi01[3] = pi01.get(3); Pi02[3] = pi02.get(3);
179 } else if (mother_c == -411) {
180 Ks[0] = Ks0.get(0); Pip[0] = pip.get(0); Pi01[0] = pi01.get(0); Pi02[0] = pi02.get(0);
181 Ks[1] = -1.0 * Ks0.get(1); Pip[1] = -1.0 * pip.get(1); Pi01[1] = -1.0 * pi01.get(1); Pi02[1] = -1.0 * pi02.get(1);
182 Ks[2] = -1.0 * Ks0.get(2); Pip[2] = -1.0 * pip.get(2); Pi01[2] = -1.0 * pi01.get(2); Pi02[2] = -1.0 * pi02.get(2);
183 Ks[3] = -1.0 * Ks0.get(3); Pip[3] = -1.0 * pip.get(3); Pi01[3] = -1.0 * pi01.get(3); Pi02[3] = -1.0 * pi02.get(3);
184 }
185
186 //Ks[0] = 0.656878382777544; Pip[0] = 0.465468253141211; Pi01[0] = 0.364737466814715; Pi02[0] = 0.399546086976042;
187 //Ks[1] = -0.426050514556759; Pip[1] = 0.440786345532845; Pi01[1] = -0.195437195063332; Pi02[1] = 0.352799494203111;
188 //Ks[2] = -0.015331547333183; Pip[2] = -0.003143271463748; Pi01[2] = 0.195716648451034; Pi02[2] = -0.106603408016079;
189 //Ks[3] = -0.046026135420350; Pip[3] = -0.053650975933667; Pi01[3] = 0.195739708428659; Pi02[3] = 0.074743717862502;
190
191 double value;
192 calPDF(Ks, Pip, Pi01, Pi02, value);
193 setProb(value);
194 return;
195 }

◆ decay() [14/23]

void decay ( EvtParticle * p)

Definition at line 162 of file EvtDToKSpipipi.cc.

163 {
164 /*
165 double maxprob = 0.0;
166 for(int ir=0;ir<=60000000;ir++){
167 p->initializePhaseSpace(getNDaug(),getDaugs());
168 EvtVector4R Ks0 = p->getDaug(0)->getP4();
169 EvtVector4R pi1 = p->getDaug(1)->getP4();
170 EvtVector4R pi2 = p->getDaug(2)->getP4();
171 EvtVector4R pi3 = p->getDaug(3)->getP4();
172 double Ks[4],Pip1[4],Pip2[4],Pim[4];
173 Ks[0] = Ks0.get(0); Pip1[0] = pi1.get(0); Pip2[0] = pi2.get(0); Pim[0] = pi3.get(0);
174 Ks[1] = Ks0.get(1); Pip1[1] = pi1.get(1); Pip2[1] = pi2.get(1); Pim[1] = pi3.get(1);
175 Ks[2] = Ks0.get(2); Pip1[2] = pi1.get(2); Pip2[2] = pi2.get(2); Pim[2] = pi3.get(2);
176 Ks[3] = Ks0.get(3); Pip1[3] = pi1.get(3); Pip2[3] = pi2.get(3); Pim[3] = pi3.get(3);
177 double Prob = calPDF(Ks, Pip1, Pip2, Pim);
178 if(Prob>maxprob) {
179 maxprob=Prob;
180 }
181 }
182 */
183 p->initializePhaseSpace(getNDaug(), getDaugs());
184 EvtVector4R Ks0 = p->getDaug(0)->getP4();
185 EvtVector4R pi1 = p->getDaug(1)->getP4();
186 EvtVector4R pi2 = p->getDaug(2)->getP4();
187 EvtVector4R pi3 = p->getDaug(3)->getP4();
188
189 double Ks[4], Pip1[4], Pip2[4], Pim[4];
190 Ks[0] = Ks0.get(0); Pip1[0] = pi1.get(0); Pip2[0] = pi2.get(0); Pim[0] = pi3.get(0);
191 Ks[1] = Ks0.get(1); Pip1[1] = pi1.get(1); Pip2[1] = pi2.get(1); Pim[1] = pi3.get(1);
192 Ks[2] = Ks0.get(2); Pip1[2] = pi1.get(2); Pip2[2] = pi2.get(2); Pim[2] = pi3.get(2);
193 Ks[3] = Ks0.get(3); Pip1[3] = pi1.get(3); Pip2[3] = pi2.get(3); Pim[3] = pi3.get(3);
194 double prob = calPDF(Ks, Pip1, Pip2, Pim);
195 setProb(prob);
196 return;
197 }

◆ decay() [15/23]

void decay ( EvtParticle * p)

Definition at line 97 of file EvtDTopipi0Eta.cc.

98 {
99 p->initializePhaseSpace(getNDaug(), getDaugs());
100 EvtVector4R D1 = p->getDaug(0)->getP4();
101 EvtVector4R D2 = p->getDaug(1)->getP4();
102 EvtVector4R D3 = p->getDaug(2)->getP4();
103
104 double P1[4], P2[4], P3[4];
105 P1[0] = D1.get(0); P1[1] = D1.get(1); P1[2] = D1.get(2); P1[3] = D1.get(3);
106 P2[0] = D2.get(0); P2[1] = D2.get(1); P2[2] = D2.get(2); P2[3] = D2.get(3);
107 P3[0] = D3.get(0); P3[1] = D3.get(1); P3[2] = D3.get(2); P3[3] = D3.get(3);
108
109 double value;
110 value = calDalEva(P1, P2, P3);
111 setProb(value);
112 return;
113
114 }

◆ decay() [16/23]

void decay ( EvtParticle * p)

Function that implements the energy-dependent Dalitz.

Definition at line 64 of file EvtEtaFullDalitz.cc.

65 {
66
67 const double a = getArg(0);
68 const double b = getArg(1);
69 const double c = getArg(2);
70 const double d = getArg(3);
71 const double e = getArg(4);
72 const double f = getArg(5);
73
74 p->initializePhaseSpace(getNDaug(), getDaugs());
75
76 EvtVector4R mompip = p->getDaug(0)->getP4();
77 EvtVector4R mompim = p->getDaug(1)->getP4();
78 EvtVector4R mompi0 = p->getDaug(2)->getP4();
79
80 double m_eta = p->mass();
81 double m_pip = p->getDaug(0)->mass();
82 double m_pi0 = p->getDaug(2)->mass();
83
84 //Q value
85 double deltaM = m_eta - 2 * m_pip - m_pi0;
86
87 //The decay amplitude comes from BESIII collab, Phys.Rev. D92 (2015) 012014
88
89 //Kinetic energies T
90 double Tpip = (mompip.get(0) - m_pip);
91 double Tpim = (mompim.get(0) - m_pip);
92 double Tpi0 = (mompi0.get(0) - m_pip);
93
94 //Dalitz variables
95 double X = sqrt(3.) * (Tpip - Tpim) / deltaM;
96 double Y = 3.*Tpi0 / deltaM - 1. ;
97
98 double amp2 = 1. + a * Y + b * Y * Y + c * X + d * X * X + e * X * Y + f * Y * Y * Y;
99
100 EvtComplex amp(sqrt(amp2), 0.0);
101
102 vertex(amp);
103
104 return ;
105
106 }

◆ decay() [17/23]

void decay ( EvtParticle * p)

Function that implements the energy-dependent Dalitz.

Definition at line 79 of file EvtEtaPi0Dalitz.cc.

80 {
81
82 const double alpha = getArg(0);
83
84 p->initializePhaseSpace(getNDaug(), getDaugs());
85
86 EvtVector4R mompi0_0 = p->getDaug(0)->getP4();
87 EvtVector4R mompi0_1 = p->getDaug(1)->getP4();
88 EvtVector4R mompi0_2 = p->getDaug(2)->getP4();
89
90 double m_eta = p->mass();
91 double m_pi0 = p->getDaug(0)->mass();
92 double deltaM = m_eta - 3 * m_pi0;
93
94 //The decay amplitude comes from KLOE collab., Phys.Lett. B694 (2011) 16-21
95 double z0 = (3 * mompi0_0.get(0) - m_eta) / deltaM;
96 double z1 = (3 * mompi0_1.get(0) - m_eta) / deltaM;
97 double z2 = (3 * mompi0_2.get(0) - m_eta) / deltaM;
98
99 double z = (2. / 3.) * (z0 * z0 + z1 * z1 + z2 * z2) ;
100
101 double Amp2 = 1.0 + alpha * 2.0 * z;
102 if (Amp2 < 0)
103 Amp2 = 0;
104
105 EvtComplex amp(sqrt(Amp2), 0.);
106
107 vertex(amp);
108
109 return ;
110
111 }

◆ decay() [18/23]

void decay ( EvtParticle * p)

Function that implements the energy-dependent Dalitz.

Definition at line 81 of file EvtEtaPrimeDalitz.cc.

82 {
83
84 const double a = getArg(0);
85 const double b = getArg(1);
86 const double c = getArg(2);
87 const double d = getArg(3);
88
89 p->initializePhaseSpace(getNDaug(), getDaugs());
90
91 EvtVector4R mompip = p->getDaug(0)->getP4();
92 EvtVector4R mompim = p->getDaug(1)->getP4();
93 EvtVector4R mometa = p->getDaug(2)->getP4();
94
95 double m_etaprime = p->mass();
96 double m_eta = p->getDaug(2)->mass();
97 double m_pi = p->getDaug(1)->mass();
98
99 //Q value
100 double deltaM = m_etaprime - 2 * m_pi - m_eta;
101
102 //The decay amplitude comes from BESIII collab, Phys.Rev. D92 (2015) 012014
103
104 //Kinetic energies T
105 double Tpip = (mompip.get(0) - m_pi);
106 double Tpim = (mompim.get(0) - m_pi);
107 double Teta = (mometa.get(0) - m_eta);
108
109 //Dalitz variables
110 double X = sqrt(3.) * (Tpip - Tpim) / deltaM;
111 double Y = ((m_eta + 2 * m_pi) / m_pi) * Teta / deltaM - 1. ;
112
113 double amp2 = 1. + a * Y + b * Y * Y + c * X + d * X * X;
114
115 EvtComplex amp(sqrt(amp2), 0.0);
116
117 vertex(amp);
118
119 return ;
120
121 }

◆ decay() [19/23]

void decay ( EvtParticle * p)

The function to determine kinematics of daughter particles.

Definition at line 46 of file EvtFlatDaughter.cc.

47 {
48 // variables to find.
49 EvtVector4R p4KorKstar;
50 EvtVector4R p4norantin;
51 EvtVector4R p4antinorn;
52
53 // start!
54 p->makeDaughters(getNDaug(), getDaugs());
55
56 EvtParticle* KorKstar = p->getDaug(0);
57 EvtParticle* norantin = p->getDaug(1);
58 EvtParticle* antinorn = p->getDaug(2);
59
60 double mass[3];
61
62 findMasses(p, getNDaug(), getDaugs(), mass);
63
64 double m_B = p->mass();
65 double m_K = mass[0];
66 double m_norantin = mass[1];
67 double m_antinorn = mass[2];
68
69 double M_max = m_B - m_K;
70 double M_min = m_norantin + m_antinorn;
71
72 // determined M_nn
73 double Mnn = EvtRandom::Flat(M_min, M_max);
74
75 // B -> K(*) (nnbar) decay. Momentums are determined in B meson's rest frame
76 EvtVector4R p4Kdin[2];
77
78 double mKdin[2];
79 mKdin[0] = m_K;
80 mKdin[1] = Mnn;
81
82 EvtGenKine::PhaseSpace(2, mKdin, p4Kdin, m_B);
83
84 // (nnbar) -> n nbar decay. Momentums are determined in (nnbar) rest frame
85 EvtVector4R p4nn[2];
86
87 double mnn[2];
88 mnn[0] = m_norantin;
89 mnn[1] = m_antinorn;
90
91 EvtGenKine::PhaseSpace(2, mnn, p4nn, Mnn);
92
93 // boost to B meson rest frame
94 p4norantin = boostTo(p4nn[0], p4Kdin[1]);
95 p4antinorn = boostTo(p4nn[1], p4Kdin[1]);
96
97 // initialize the decay products
98 KorKstar->init(getDaug(0), p4Kdin[0]);
99 norantin->init(getDaug(1), p4norantin);
100 antinorn->init(getDaug(2), p4antinorn);
101
102
103 return;
104
105 }

◆ decay() [20/23]

void decay ( EvtParticle * p)

Creates a decay.

Definition at line 49 of file EvtHNLBCL.cc.

50 {
51 p->initializePhaseSpace(getNDaug(), getDaugs());
52 calcamp->CalcAmp(p, _amp2, bclmodel);
53 }

◆ decay() [21/23]

void decay ( EvtParticle * p)

The function to calculate a quark decay amplitude.

Definition at line 50 of file EvtKnunu.cc.

51 {
52 static EvtId NUE = EvtPDL::getId("nu_e");
53 static EvtId NUM = EvtPDL::getId("nu_mu");
54 static EvtId NUT = EvtPDL::getId("nu_tau");
55 static EvtId NUEB = EvtPDL::getId("anti-nu_e");
56 static EvtId NUMB = EvtPDL::getId("anti-nu_mu");
57 static EvtId NUTB = EvtPDL::getId("anti-nu_tau");
58
59 p->initializePhaseSpace(getNDaug(), getDaugs());
60
61 double m_b = p->mass();
62
63 EvtParticle* meson, * neutrino1, * neutrino2;
64 meson = p->getDaug(0);
65 neutrino1 = p->getDaug(1);
66 neutrino2 = p->getDaug(2);
67 EvtVector4R momnu1 = neutrino1->getP4();
68 EvtVector4R momnu2 = neutrino2->getP4();
69 EvtVector4R momk = meson->getP4();
70
71 EvtVector4R q = momnu1 + momnu2;
72 double q2 = q.mass2();
73
74 EvtVector4R p4b; p4b.set(m_b, 0., 0., 0.); // Do calcs in mother rest frame
75
76 double m_k = meson->mass();
77 double mkhat = m_k / (m_b);
78 double shat = q2 / (m_b * m_b);
79
80 EvtVector4R phat = (p4b + momk) / m_b;
81 EvtVector4R qhat = q / m_b;
82
83 // calculate form factor from [arXiv:1409.4557v2]
84 // see eq 104, eq 105, eq 106, eq 107
85 double alpha0 = 0.432;
86 double alpha1 = -0.664;
87 double alpha2 = -1.2;
88 double mp = m_b + 0.046;
89 double tp = (m_b + m_k) * (m_b + m_k);
90 double tm = (m_b - m_k) * (m_b - m_k);
91 double t0 = tp * (1 - sqrt(1 - tm / tp));
92 double z = (sqrt(tp - q2) - sqrt(tp - t0)) / (sqrt(tp - q2) + sqrt(tp - t0));
93 double fp = (1 / (1 - q2 / (mp * mp))) * (alpha0 + alpha1 * z + alpha2 * z * z + (-alpha1 + 2 * alpha2) * z * z * z / 3);
94 double fm = -fp * (1 - mkhat * mkhat) / shat;
95
96 // calculate quark decay amplitude from [arXiv:hep-ph/9910221v2]
97 // see eq 3.1, eq 3.2, eq 4.1, eq 4.2, and eq 4.3
98 // but in B->K nu nubar, fT and f0 terms are ignored
99
100 EvtVector4C T1;
101
102 EvtComplex aprime;
103 aprime = fp;
104 EvtComplex bprime;
105 bprime = fm;
106
107 T1 = aprime * phat + bprime * qhat;
108
109 EvtVector4C l;
110
111 if (getDaug(1) == NUE || getDaug(1) == NUM || getDaug(1) == NUT) {
112 l = EvtLeptonVACurrent(neutrino1->spParentNeutrino(),
113 neutrino2->spParentNeutrino());
114 }
115 if (getDaug(1) == NUEB || getDaug(1) == NUMB || getDaug(1) == NUTB) {
116 l = EvtLeptonVACurrent(neutrino2->spParentNeutrino(),
117 neutrino1->spParentNeutrino());
118 }
119
120 vertex(l * T1);
121
122 }

◆ decay() [22/23]

void decay ( EvtParticle * p)

The function to calculate a quark decay amplitude.

Definition at line 49 of file EvtKstarnunu_REV.cc.

50 {
51
52 static EvtId NUE = EvtPDL::getId("nu_e");
53 static EvtId NUM = EvtPDL::getId("nu_mu");
54 static EvtId NUT = EvtPDL::getId("nu_tau");
55 static EvtId NUEB = EvtPDL::getId("anti-nu_e");
56 static EvtId NUMB = EvtPDL::getId("anti-nu_mu");
57 static EvtId NUTB = EvtPDL::getId("anti-nu_tau");
58
59 p->initializePhaseSpace(getNDaug(), getDaugs());
60
61 double m_b = p->mass();
62
63 EvtParticle* meson, * neutrino1, * neutrino2;
64 meson = p->getDaug(0);
65 neutrino1 = p->getDaug(1);
66 neutrino2 = p->getDaug(2);
67 EvtVector4R momnu1 = neutrino1->getP4();
68 EvtVector4R momnu2 = neutrino2->getP4();
69 EvtVector4R momkstar = meson->getP4();
70
71 EvtVector4R q = momnu1 + momnu2;
72 double q2 = q.mass2();
73
74 double m_k = meson->mass();
75
76 EvtVector4R p4b; p4b.set(m_b, 0., 0., 0.); // Do calcs in mother rest frame
77
78 // calculate form factors [arXiv:1503.05534v3]
79 // see Table 15, eq 15, eq 16, Table 3
80
81 // FFs
82 double tp = (m_b + m_k) * (m_b + m_k);
83 double tm = (m_b - m_k) * (m_b - m_k);
84 double t0 = tp * (1 - sqrt(1 - tm / tp));
85 double z = (sqrt(tp - q2) - sqrt(tp - t0)) / (sqrt(tp - q2) + sqrt(tp - t0));
86 double z0 = (sqrt(tp) - sqrt(tp - t0)) / (sqrt(tp) + sqrt(tp - t0));
87
88 // v0
89 double alpha0_v0 = 0.38;
90 double alpha1_v0 = -1.17;
91 double alpha2_v0 = 2.42;
92 double mR_v0 = 5.415;
93 double v0 = (1 / (1 - q2 / (mR_v0 * mR_v0))) * (alpha0_v0 + alpha1_v0 * (z - z0) + alpha2_v0 * (z - z0) * (z - z0));
94
95 // A1
96 double alpha0_A1 = 0.3;
97 double alpha1_A1 = 0.39;
98 double alpha2_A1 = 1.19;
99 double mR_A1 = 5.829;
100 double A1 = (1 / (1 - q2 / (mR_A1 * mR_A1))) * (alpha0_A1 + alpha1_A1 * (z - z0) + alpha2_A1 * (z - z0) * (z - z0));
101
102 // A12
103 double alpha0_A12 = 0.27;
104 double alpha1_A12 = 0.53;
105 double alpha2_A12 = 0.48;
106 double mR_A12 = 5.829;
107 double A12 = (1 / (1 - q2 / (mR_A12 * mR_A12))) * (alpha0_A12 + alpha1_A12 * (z - z0) + alpha2_A12 * (z - z0) * (z - z0));
108
109 // lambda
110 double lambda = (tp - q2) * (tm - q2);
111
112 // A2
113 double A2 = ((m_b + m_k) * (m_b + m_k) * (m_b * m_b - m_k * m_k - q2) * A1 - A12 * 16 * m_b * m_k * m_k * (m_b + m_k)) / lambda;
114
115 // calculate quark decay amplitude from [arXiv:hep-ph/9910221v2]
116 // see eq 3.3, eq 3.4, eq 3.5, eq 4.1, eq 4.4, and eq 4.5
117 // but in B->Kstar nu nubar, A3, A0, and all T terms are ignored
118
119 // definition of A12 can be found from [arXiv:1303.5794v2]
120
121 // definition of A3 can be found from [arXiv:1408.5614v1]
122
123 EvtTensor4C tds = (-2 * v0 / (m_b + m_k)) * dual(EvtGenFunctions::directProd(p4b, momkstar))
124 - EvtComplex(0.0, 1.0) *
125 ((m_b + m_k) * A1 * EvtTensor4C::g()
126 - (A2 / (m_b + m_k)) * EvtGenFunctions::directProd(p4b - momkstar, p4b + momkstar));
127
128 EvtVector4C l;
129
130 if (getDaug(1) == NUE || getDaug(1) == NUM || getDaug(1) == NUT) {
131 l = EvtLeptonVACurrent(neutrino1->spParentNeutrino(),
132 neutrino2->spParentNeutrino());
133 }
134 if (getDaug(1) == NUEB || getDaug(1) == NUMB || getDaug(1) == NUTB) {
135 l = EvtLeptonVACurrent(neutrino2->spParentNeutrino(),
136 neutrino1->spParentNeutrino());
137 }
138
139 EvtVector4C et0, et1, et2;
140 et0 = tds.cont1(meson->epsParent(0).conj());
141 et1 = tds.cont1(meson->epsParent(1).conj());
142 et2 = tds.cont1(meson->epsParent(2).conj());
143
144 vertex(0, l * et0);
145 vertex(1, l * et1);
146 vertex(2, l * et2);
147
148 return;
149
150 }

◆ decay() [23/23]

void decay ( EvtParticle * p)

Member of particle in EvtGen.

Definition at line 51 of file EvtPhspCP.cc.

52 {
53 static EvtId B0 = EvtPDL::getId("B0");
54 static EvtId B0B = EvtPDL::getId("anti-B0");
55
56 double t;
57 EvtId other_b;
58
59 EvtCPUtil::getInstance()->OtherB(p, t, other_b, 0.5);
60
61 p->initializePhaseSpace(getNDaug(), getDaugs());
62
63 EvtComplex amp;
64
65 EvtComplex A, Abar;
66
67 A = EvtComplex(getArg(3) * cos(getArg(4)), getArg(3) * sin(getArg(4)));
68 Abar = EvtComplex(getArg(5) * cos(getArg(6)), getArg(5) * sin(getArg(6)));
69
70 // CP asymmetry
71 const double angle = getArg(0); // q/p = exp(-2i*angle). |q/p| = 1
72 const double dm = getArg(1); // Delta m_d
73 const double etaCP = getArg(2); // CP eigenvalue
74
75 if (other_b == B0B) {
76 amp = A * cos(dm * t / (2 * EvtConst::c)) +
77 EvtComplex(cos(-2.0 * angle), sin(-2.0 * angle)) *
78 etaCP * EvtComplex(0.0, 1.0) * Abar * sin(dm * t / (2 * EvtConst::c));
79
80 }
81 if (other_b == B0) {
82 amp = A * EvtComplex(cos(2.0 * angle), sin(2.0 * angle)) *
83 EvtComplex(0.0, 1.0) * sin(dm * t / (2 * EvtConst::c)) +
84 etaCP * Abar * cos(dm * t / (2 * EvtConst::c));
85 }
86
87 setProb(abs2(amp));
88
89 return;
90 }

◆ dGammadcostau()

double dGammadcostau ( const EvtBSemiTauonicHelicityAmplitudeCalculator & BSTD,
double mtau,
int tauhel,
int Dhel,
double costau )

Function calculates the differential decay rate dGamma/dcostau, integrated for w.

Parameters
BSTDhelicity ampliutude calculator initialized properly by user.
mtaudaughter lepton mass.
tauhelhelicity of the lepton in the (l+nu) rest frame {+1,-1}.
Dhelhelicity of the D(*) meson in the rest frame of the parent meson {+1,0,-1} for D* and 2 for D.
costaucosine of the angle between D(*) meson and the lepton in the (l+nu) rest frame. Note that overall factor (GF/sqrt(2) Vcb)^2 is omitted.

Definition at line 59 of file EvtBSemiTauonicDecayRateCalculator.cc.

61 {
62 m_BSTD = &BSTD;
63 TF1 f1("f1", this, &EvtBSemiTauonicDecayRateCalculator::EvaluateByW, BSTD.wmin(), BSTD.wmax(mtau, Dhel), 4,
64 "EvtBSemiTauonicDecayRateCalculator", "EvaluateByW");
65 f1.SetParameter(0, mtau);
66 f1.SetParameter(1, tauhel);
67 f1.SetParameter(2, Dhel);
68 f1.SetParameter(3, costau);
69 ROOT::Math::WrappedTF1 wf1(f1);
70// ROOT::Math::GSLIntegrator ig;
71 ROOT::Math::GaussIntegrator ig;
72 ig.SetFunction(wf1);
73 return ig.Integral(BSTD.wmin(), BSTD.wmax(mtau, Dhel));
74 }

◆ dGammadw()

double dGammadw ( const EvtBSemiTauonicHelicityAmplitudeCalculator & BSTD,
double mtau,
int tauhel,
int Dhel,
double w )

Function calculates the differential decay rate dGamma/dw, integrated for costau.

Parameters
BSTDhelicity ampliutude calculator initialized properly by user.
mtaudaughter lepton mass.
tauhelhelicity of the lepton in the (l+nu) rest frame {+1,-1}.
Dhelhelicity of the D(*) meson in the rest frame of the parent meson {+1,0,-1} for D* and 2 for D.
wvelocity transfer variable. Note that overall factor (GF/sqrt(2) Vcb)^2 is omitted.

Definition at line 41 of file EvtBSemiTauonicDecayRateCalculator.cc.

43 {
44 m_BSTD = &BSTD;
45 TF1 f1("f1", this, &EvtBSemiTauonicDecayRateCalculator::EvaluateByCostau, -1, 1, 4,
46 "EvtBSemiTauonicDecayRateCalculator", "EvaluateByCostau");
47 f1.SetParameter(0, mtau);
48 f1.SetParameter(1, tauhel);
49 f1.SetParameter(2, Dhel);
50 f1.SetParameter(3, w);
51 ROOT::Math::WrappedTF1 wf1(f1);
52// ROOT::Math::GSLIntegrator ig;
53 ROOT::Math::GaussIntegrator ig;
54 ig.SetFunction(wf1);
55 return ig.Integral(-1, 1);
56 }

◆ dGammadwdcostau()

double dGammadwdcostau ( const EvtBSemiTauonicHelicityAmplitudeCalculator & BSTD,
double mtau,
int tauhel,
int Dhel,
double w,
double costau )

Function calculates the differential decay rate dGamma/dw/dcostau.

Parameters
BSTDhelicity ampliutude calculator initialized properly by user.
mtaudaughter lepton mass.
tauhelhelicity of the lepton in the (l+nu) rest frame {+1,-1}.
Dhelhelicity of the D(*) meson in the rest frame of the parent meson {+1,0,-1} for D* and 2 for D.
wvelocity transfer variable.
costaucosine of the angle between D(*) meson and the lepton in the (l+nu) rest frame. Note that overall factor (GF/sqrt(2) Vcb)^2 is omitted.

Definition at line 31 of file EvtBSemiTauonicDecayRateCalculator.cc.

33 {
34 EvtComplex temp = BSTD.helAmp(mtau, tauhel, Dhel, w, costau);
35 std::complex<double> amp(real(temp), imag(temp));
36
37 return std::norm(amp) * pf(BSTD, mtau, Dhel, w);
38 }

◆ dGdsbProb()

double dGdsbProb ( double _sb)

The function returns the probability density value depending on sb.

Definition at line 291 of file EvtBtoXsnunu_FERMI.cc.

292 {
293 // dGdsb: arXiv:1509.06248v2
294 // see (eq.41)
295
296 double mb = m_mb_prob; // b-quark mass for probability density
297 double ms = m_ms_prob; // s-quark mass for probability density
298 double mstilda = ms / mb;
299
300 double sb = _sb;
301 double mstilda2 = mstilda * mstilda;
302
303 double lambda = 1 + mstilda2 * mstilda2 + sb * sb - 2 * (mstilda2 + sb + mstilda2 * sb);
304
305 double prob = sqrt(lambda) * (3 * sb * (1 + mstilda2 - sb) + lambda);
306
307 return prob;
308 }

◆ dh() [1/7]

double dh ( double mass,
const double q0 ) const
private

derivative h function in Gounaris-Sakurai lineshape

Definition at line 741 of file EvtD0ToKpipi0pi0.cc.

742 {
743 double dh = h(Mass, q0) * (1.0 / (8 * q0 * q0) - 1.0 / (2 * Mass * Mass)) + 1.0 / (2 * pi * Mass * Mass);
744 return dh;
745 }

◆ dh() [2/7]

double dh ( double mass,
const double q0 ) const
private

derivative h function in Gounaris-Sakurai lineshape

Definition at line 668 of file EvtD0ToKpipipi.cc.

669 {
670 double dh = h(Mass, q0) * (1.0 / (8 * q0 * q0) - 1.0 / (2 * Mass * Mass)) + 1.0 / (2 * pi * Mass * Mass);
671 return dh;
672 }

◆ dh() [3/7]

double dh ( double mass,
double q0 )
private

Definition at line 338 of file EvtD0TopipiEta.cc.

339 {
340 double dh = h(mass, q0) * (1.0 / (8 * q0 * q0) - 1.0 / (2 * mass * mass)) + 1.0 / (2 * pi * mass * mass);
341 return dh;
342 }

◆ dh() [4/7]

double dh ( double m0,
double q0 )
private

Definition at line 537 of file EvtD0Topippim2pi0.cc.

538 {
539 double dh = h(m0, q0) * (1.0 / (8.0 * q0 * q0) - 1.0 / (2.0 * m0 * m0)) + 1.0 / (2.0 * math_pi * m0 * m0);
540 return dh;
541 }

◆ dh() [5/7]

double dh ( double mass,
double q0 )
private

Definition at line 593 of file EvtDsToKKpi.cc.

594 {
595 double dh = h(mass_param, q0) * (1.0 / (8 * q0 * q0) - 1.0 / (2 * mass_param * mass_param)) + 1.0 /
596 (2 * math_pi * mass_param * mass_param);
597 return dh;
598 }

◆ dh() [6/7]

double dh ( const double mass,
const double q0 ) const
private

derivative h function in Gounaris-Sakurai lineshape

Definition at line 523 of file EvtDToKSpipipi.cc.

524 {
525 double dh = h(mass_, q0) * (1.0 / (8 * q0 * q0) - 1.0 / (2 * mass_ * mass_)) + 1.0 / (2 * pi * mass_ * mass_);
526 return dh;
527 }

◆ dh() [7/7]

double dh ( double mass,
double q0 )
private

Definition at line 313 of file EvtDTopipi0Eta.cc.

314 {
315 double dh = h(mass, q0) * (1.0 / (8 * q0 * q0) - 1.0 / (2 * mass * mass)) + 1.0 / (2 * pi * mass * mass);
316 return dh;
317 }

◆ dot() [1/5]

template<typename T>
T dot ( GeneralVector< T > a,
GeneralVector< T > b )

dot product of two general vectors

Definition at line 163 of file beamHelpers.h.

164 {
165 return (a.el[0] * b.el[0] + a.el[1] * b.el[1] + a.el[2] * b.el[2]);
166 }

◆ dot() [2/5]

double dot ( const double * a1,
const double * a2 ) const
private

Four-Vector Scalar Product.

Definition at line 703 of file EvtD0ToKpipipi.cc.

704 {
705 double dot = 0;
706 for (int i = 0; i != 4; i++) {
707 dot += a1[i] * a2[i] * G[i][i];
708 }
709 return dot;
710 }

◆ dot() [3/5]

double dot ( double * a1,
double * a2 )
private

Definition at line 241 of file EvtD0TopipiEta.cc.

242 {
243 double Dot = 0;
244 for (int i = 0; i != 4; i++) {
245 Dot += a1[i] * a2[i] * G[i][i];
246 }
247 return Dot;
248 }

◆ dot() [4/5]

double dot ( double * a1,
double * a2 ) const
private

Four-Vector Scalar Product.

Definition at line 560 of file EvtDToKSpipipi.cc.

561 {
562 double dot = 0;
563 for (int i = 0; i != 4; i++) {
564 dot += a1[i] * a2[i] * G[i][i];
565 }
566 return dot;
567 }

◆ dot() [5/5]

double dot ( double * a1,
double * a2 )
private

Definition at line 217 of file EvtDTopipi0Eta.cc.

218 {
219 double Dot = 0;
220 for (int i = 0; i != 4; i++) {
221 Dot += a1[i] * a2[i] * G[i][i];
222 }
223 return Dot;
224 }

◆ dR3()

double dR3 ( double w) const

HQET correction factor for the scalar form factor for B->D*taunu.

Parameters
wvelocity transfer variable.
Returns
calculated factor.

Definition at line 494 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

495 {
496 return 0.22 - 0.052 * (w - 1.) + 0.026 * (w - 1.) * (w - 1.);
497 }

◆ dS1()

double dS1 ( double w) const

HQET correction factor for the scalar form factor for B->Dtaunu.

Parameters
wvelocity transfer variable.
Returns
calculated factor.

Definition at line 489 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

490 {
491 return -0.019 + 0.041 * (w - 1.) - 0.015 * (w - 1.) * (w - 1.);
492 }

◆ energyDependentWidth()

double energyDependentWidth ( const double mass,
const double sa,
const double sb,
const double sc,
const double r,
const int l ) const
private

Energy dependent width.

Definition at line 717 of file EvtD0ToKpipi0pi0.cc.

718 {
719 double widm(0.), q(0.), q0(0.);
720 double sa0 = Mass * Mass;
721 double m = sqrt(sa);
722 q = Qabcs(sa, sb, sc);
723 q0 = Qabcs(sa0, sb, sc);
724 double z, z0;
725 z = q * r * r;
726 z0 = q0 * r * r;
727 double t = q / q0;
728 double F(0.);
729 if (l == 0) F = 1;
730 if (l == 1) F = sqrt((1 + z0) / (1 + z));
731 if (l == 2) F = sqrt((9 + 3 * z0 + z0 * z0) / (9 + 3 * z + z * z));
732 widm = pow(t, l + 0.5) * Mass / m * F * F;
733 return widm;
734 }

◆ EvaluateBy2D()

double EvaluateBy2D ( double * x,
double * param )
private

Function used internally for numerical integration.

Definition at line 219 of file EvtBSemiTauonicDecayRateCalculator.cc.

220 {
221 // x={w,costau}
222 return dGammadwdcostau(*m_BSTD, param[0], (int)param[1], (int)param[2], x[0], x[1]);
223 }

◆ EvaluateByCostau()

double EvaluateByCostau ( double * x,
double * param )
private

Function used internally for numerical integration.

Definition at line 213 of file EvtBSemiTauonicDecayRateCalculator.cc.

214 {
215 // x=costau
216 return dGammadwdcostau(*m_BSTD, param[0], (int)param[1], (int)param[2], param[3], x[0]);
217 }

◆ EvaluateByW()

double EvaluateByW ( double * x,
double * param )
private

Function used internally for numerical integration.

Definition at line 207 of file EvtBSemiTauonicDecayRateCalculator.cc.

208 {
209 // x=w
210 return dGammadwdcostau(*m_BSTD, param[0], (int)param[1], (int)param[2], x[0], param[3]);
211 }

◆ EvtBCL()

EvtBCL ( )

Default constructor.

Definition at line 29 of file EvtBCL.cc.

29: bclmodel(nullptr), calcamp(nullptr) {}

◆ EvtBCLFF()

EvtBCLFF ( int numarg,
double * arglist )

constructor

Definition at line 23 of file EvtBCLFF.cc.

23 : m_numBCLFFCoefficients(numarg)
24 {
25 for (int i = 0; i < m_numBCLFFCoefficients; ++i) {
26 m_BCLFFCoefficients[i] = arglist[i];
27 }
28 }

◆ EvtBSemiTauonic()

The default constructor.

Definition at line 32 of file EvtBSemiTauonic.cc.

32: m_CalcHelAmp(0), m_CalcAmp(0) {}

◆ EvtBSemiTauonic2HDMType2()

The default constructor.

Definition at line 32 of file EvtBSemiTauonic2HDMType2.cc.

32: m_CalcHelAmp(0), m_CalcAmp(0) {}

◆ EvtBSemiTauonicHelicityAmplitudeCalculator() [1/2]

The default constructor.

Initializes with the default parameter values used by the aurhos of PRD87,034028.

Definition at line 22 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

22 :
23 m_CV1(0), m_CV2(0), m_CS1(0), m_CS2(0), m_CT(0)
24 {
25 m_mB = 5.279; // value used in PRD87,034028
26 m_mD = 1.866; // value used in PRD87,034028
27 m_mDst = 2.009; // value used in PRD87,034028
28
29 m_rho12 = 1.186; // HFAG end of year 2011
30 m_rhoA12 = 1.207; // HFAG end of year 2011
31
32 m_ffR11 = 1.403; // HFAG end of year 2011
33 m_ffR21 = 0.854; // HFAG end of year 2011
34
35 m_aS1 = 1.;
36 m_aR3 = 1.;
37
38 m_mBottom = 4.20; // PRD77,113016
39 m_mCharm = 0.901; // PRD77,113016 running mass at m_b scale
40
41 B2INFO("EvtBSemiTauonicHelicityAmplitudeCalculator initialized with the default values.");
42 B2INFO("rho_1^2 : " << m_rho12);
43 B2INFO("rho_A1^22 : " << m_rhoA12);
44 B2INFO("R_1(1) : " << m_ffR11);
45 B2INFO("R_2(1) : " << m_ffR21);
46 B2INFO("a_S1: " << m_aS1);
47 B2INFO("a_R3: " << m_aR3);
48 B2INFO("bottom quark mass: " << m_mBottom);
49 B2INFO("charm quark mass: " << m_mCharm);
50 B2INFO("CV1 : " << m_CV1);
51 B2INFO("CV2 : " << m_CV2);
52 B2INFO("CS1 : " << m_CS1);
53 B2INFO("CS2 : " << m_CS2);
54 B2INFO("CT : " << m_CT);
55 B2INFO("B meson mass: " << m_mB);
56 B2INFO("D meson mass: " << m_mD);
57 B2INFO("D* meson mass: " << m_mDst);
58 }

◆ EvtBSemiTauonicHelicityAmplitudeCalculator() [2/2]

EvtBSemiTauonicHelicityAmplitudeCalculator ( const double rho12,
const double rhoA12,
const double ffR11,
const double ffR21,
const double AS1,
const double AR3,
const double bottomMass,
const double charmMass,
const EvtComplex & CV1,
const EvtComplex & CV2,
const EvtComplex & CS1,
const EvtComplex & CS2,
const EvtComplex & CT,
const double parentMass,
const double DMass,
const double DstarMass )

The constructor with HQET form factor parameters, Wilson coefficients of new physics contributions and parent B, daughter D(*) meson masses.

Parameters
rho12HQET form factor parameter rho_1^2 obtained by Dlnu decay data.
rhoA12HQET form factor parameter rho_A1^2 obtained by D*lnu decay data.
ffR11HQET form factor parameter R_1(1) obtained by D*lnu decay data.
ffR21HQET form factor parameter R_2(1) obtained by D*lnu decay data.
AS1a parameter to take into account the theoretical error of the scalar form factor for Dtaunu decay.
AR3a parameter to take into account the theoretical error of the scalar form factor for D*taunu decay.
CV1Wilson coefficient of the left handed vector type NP contribution.
CV2Wilson coefficient of the right handed vector type NP contribution.
CS1Wilson coefficient of the scalar (S+P) type NP contribution.
CS2Wilson coefficient of the scalar (S-P) type NP contribution.
CTWilson coefficient of the tensor type NP contribution.
parentMassmass of the parent (B) meson.
DMassmass of the scalar type daughter (D) meson.
DstarMassmass of the vector type daughter (D*) meson.
bottomMassmass of the bottom quark mass (running mass at the energy of bottom quark mass)
charmMassmass of the charm quark mass (running mass at the energy of bottom quark mass) The constructor initializes the parameters of the decay. The recommended values of AS1 and AR3 by authors of PRD87,034028 are 1+/-1.

Definition at line 60 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

64 :
65 m_CV1(CV1), m_CV2(CV2), m_CS1(CS1), m_CS2(CS2), m_CT(CT)
66 {
67 m_mB = parentMass;
68 m_mD = DMass;
69 m_mDst = DstarMass;
70 m_mBottom = bottomMass;
71 m_mCharm = charmMass;
72
73 m_rho12 = rho12;
74 m_rhoA12 = rhoA12;
75
76 m_ffR11 = ffR11;
77 m_ffR21 = ffR21;
78
79 m_aS1 = aS1;
80 m_aR3 = aR3;
81
82 B2INFO("EvtBSemiTauonicHelicityAmplitudeCalculator initialized.");
83 B2INFO("rho_1^2 : " << rho12);
84 B2INFO("rho_A1^2 : " << rhoA12);
85 B2INFO("R_1(1) : " << ffR11);
86 B2INFO("R_2(1) : " << ffR21);
87 B2INFO("a_S1: " << m_aS1);
88 B2INFO("a_R3: " << m_aR3);
89 B2INFO("bottom quark mass: " << m_mBottom);
90 B2INFO("charm quark mass: " << m_mCharm);
91 B2INFO("CV1 : " << m_CV1);
92 B2INFO("CV2 : " << m_CV2);
93 B2INFO("CS1 : " << m_CS1);
94 B2INFO("CS2 : " << m_CS2);
95 B2INFO("CT : " << m_CT);
96 B2INFO("Parent meson mass: " << m_mB);
97 B2INFO("D meson mass: " << m_mD);
98 B2INFO("D* meson mass: " << m_mDst);
99 }

◆ EvtHNLBCL()

EvtHNLBCL ( )

Default constructor.

Definition at line 29 of file EvtHNLBCL.cc.

29: bclmodel(nullptr), calcamp(nullptr) {}

◆ f() [1/7]

double f ( double mass,
const double sx,
const double q0,
const double q ) const
private

f function in Gounaris-Sakurai lineshape

Definition at line 746 of file EvtD0ToKpipi0pi0.cc.

747 {
748 double m = sqrt(sx);
749 double f = Mass * Mass / (pow(q0, 3)) * (q * q * (h(m, q) - h(Mass, q0)) + (Mass * Mass - sx) * q0 * q0 * dh(Mass,
750 q0));
751 return f;
752 }

◆ f() [2/7]

double f ( double mass,
const double sx,
const double q0,
const double q ) const
private

f function in Gounaris-Sakurai lineshape

Definition at line 673 of file EvtD0ToKpipipi.cc.

674 {
675 double m = sqrt(sx);
676 double f = Mass * Mass / (pow(q0, 3)) * (q * q * (h(m, q) - h(Mass, q0)) + (Mass * Mass - sx) * q0 * q0 * dh(Mass, q0));
677 return f;
678 }

◆ f() [3/7]

double f ( double mass,
double sx,
double q0,
double q )
private

Definition at line 344 of file EvtD0TopipiEta.cc.

345 {
346 double m = sqrt(sx);
347 double f = mass * mass / (pow(q0, 3)) * (q * q * (h(m, q) - h(mass, q0)) + (mass * mass - sx) * q0 * q0 * dh(mass, q0));
348 return f;
349 }

◆ f() [4/7]

double f ( double m0,
double sx,
double q0,
double q )
private

Definition at line 543 of file EvtD0Topippim2pi0.cc.

544 {
545 double m = sqrt(sx);
546 double f = m0 * m0 / (q0 * q0 * q0) * (q * q * (h(m, q) - h(m0, q0)) + (m0 * m0 - sx) * q0 * q0 * dh(m0, q0));
547 return f;
548 }

◆ f() [5/7]

double f ( double mass,
double sx,
double q0,
double q )
private

Definition at line 599 of file EvtDsToKKpi.cc.

600 {
601 double m = sqrt(sx);
602 double f = mass_param * mass_param / (pow(q0, 3)) * (q * q * (h(m, q) - h(mass_param,
603 q0)) + (mass_param * mass_param - sx) * q0 * q0 * dh(mass_param, q0));
604 return f;
605 }

◆ f() [6/7]

double f ( const double mass,
const double sx,
const double q0,
const double q ) const
private

f function in Gounaris-Sakurai lineshape

Definition at line 528 of file EvtDToKSpipipi.cc.

529 {
530 double m = sqrt(sx);
531 double f = mass_ * mass_ / (pow(q0, 3)) * (q * q * (h(m, q) - h(mass_, q0)) + (mass_ * mass_ - sx) * q0 * q0 * dh(mass_, q0));
532 return f;
533 }

◆ f() [7/7]

double f ( double mass,
double sx,
double q0,
double q )
private

Definition at line 319 of file EvtDTopipi0Eta.cc.

320 {
321 double m = sqrt(sx);
322 double f = mass * mass / (pow(q0, 3)) * (q * q * (h(m, q) - h(mass, q0)) + (mass * mass - sx) * q0 * q0 * dh(mass, q0));
323 return f;
324 }

◆ FermiMomentum()

double FermiMomentum ( double pf)

The function returns a momentum of b quark.

The distribution of the momentum is based on the Fermi motion model.

Definition at line 310 of file EvtBtoXsnunu_FERMI.cc.

311 {
312 // Pick a value for the b-quark Fermi motion momentum
313 // according to Ali's Gaussian model
314
315 // reference: Ali, Ahmed, et al. "Power corrections in the decay rate and distributions in B->Xs l+l- 2 in the standard model"
316 // see (eq.57)
317
318 double pb, pbmax;
319 pb = 0.0;
320 pbmax = 5.0 * pf;
321
322 while (pb == 0.0) {
323 double xbox = EvtRandom::Flat(pbmax);
324 double ybox = EvtRandom::Flat();
325 if (ybox < FermiMomentumProb(xbox, pf)) { pb = xbox; }
326 }
327
328 return pb;
329 }

◆ FermiMomentumProb()

double FermiMomentumProb ( double pb,
double pf )

The function returns a probability based on the Fermi motion model.

reference: Ali, Ahmed, et al. "Power corrections in the decay rate and distributions in B->Xs l+l- 2 in the standard model" see (eq.57)

Parameters
pbmomentum of the b quark
pfmomentum width parameter in the Fermi motion model

Definition at line 331 of file EvtBtoXsnunu_FERMI.cc.

332 {
333 // Compute probability according to Ali's Gaussian model
334 // the function chosen has a convenient maximum value of 1 for pb = pf
335
336 // reference: Ali, Ahmed, et al. "Power corrections in the decay rate and distributions in B->Xs l+l- 2 in the standard model"
337 // see (eq.57)
338
339 double prsq = (pb * pb) / (pf * pf);
340 double prob = prsq * exp(1.0 - prsq);
341
342 return prob;
343 }

◆ ffA1()

double ffA1 ( double w) const

CLN form factor A1.

Parameters
wvelocity transfer variable.
Returns
calculated form factor value.

Definition at line 467 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

468 {
469 return ffA11() * (1 - 8 * m_rhoA12 * z(w)
470 + (53 * m_rhoA12 - 15) * z(w) * z(w)
471 - (231 * m_rhoA12 - 91) * z(w) * z(w) * z(w));
472 }

◆ ffR1()

double ffR1 ( double w) const

CLN form factor R1.

Parameters
wvelocity transfer variable.
Returns
calculated form factor value.

Definition at line 474 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

475 {
476 return m_ffR11 - 0.12 * (w - 1) + 0.05 * (w - 1) * (w - 1);
477 }

◆ ffR2()

double ffR2 ( double w) const

CLN form factor R2.

Parameters
wvelocity transfer variable.
Returns
calculated form factor value.

Definition at line 479 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

480 {
481 return m_ffR21 + 0.11 * (w - 1) - 0.06 * (w - 1) * (w - 1);
482 }

◆ ffR3()

double ffR3 ( double w) const

CLN form factor R3.

Parameters
wvelocity transfer variable.
Returns
calculated form factor value.

Definition at line 484 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

485 {
486 return 1 + aR3() * dR3(w);
487 }

◆ ffS1()

double ffS1 ( double w) const

CLN form factor S1.

Parameters
wvelocity transfer variable.
Returns
calculated form factor value.

Definition at line 462 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

463 {
464 return (1 + aS1() * dS1(w)) * ffV1(w);
465 }

◆ ffV1()

double ffV1 ( double w) const

CLN form factor V1.

Parameters
wvelocity transfer variable.
Returns
calculated form factor value.

Definition at line 455 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

456 {
457 return ffV11() * (1 - 8 * m_rho12 * z(w)
458 + (51 * m_rho12 - 10) * z(w) * z(w)
459 - (252 * m_rho12 - 84) * z(w) * z(w) * z(w));
460 }

◆ FINVMTX()

double FINVMTX ( double s,
double * FINVx,
double * FINVy )
private

Definition at line 1254 of file EvtD0Topippim2pi0.cc.

1255 {
1256
1257 int P[5] = { 0, 1, 2, 3, 4};
1258
1259 double Fx[5][5];
1260 double Fy[5][5];
1261
1262 double Ux[5][5];
1263 double Uy[5][5];
1264 double Lx[5][5];
1265 double Ly[5][5];
1266
1267 double UIx[5][5];
1268 double UIy[5][5];
1269 double LIx[5][5];
1270 double LIy[5][5];
1271
1272 for (int k = 0; k < 5; k++) {
1273 double rhokkx = rhoMTX(k, k, s).real();
1274 double rhokky = rhoMTX(k, k, s).imag();
1275 Ux[k][k] = rhokkx;
1276 Uy[k][k] = rhokky;
1277 for (int l = k; l < 5; l++) {
1278 double Kklx = KMTX(k, l, s).real();
1279 double Kkly = KMTX(k, l, s).imag();
1280 Lx[k][l] = Kklx;
1281 Ly[k][l] = Kkly;
1282 Lx[l][k] = Lx[k][l];
1283 Ly[l][k] = Ly[k][l];
1284 }
1285 }
1286
1287 for (int k = 0; k < 5; k++) {
1288 for (int l = 0; l < 5; l++) {
1289 double Fklx = FMTX(Lx[k][l], Ly[k][l], Ux[l][l], Uy[l][l], k, l).real();
1290 double Fkly = FMTX(Lx[k][l], Ly[k][l], Ux[l][l], Uy[l][l], k, l).imag();
1291 Fx[k][l] = Fklx;
1292 Fy[k][l] = Fkly;
1293 }
1294 }
1295
1296 for (int k = 0; k < 5; k++) {
1297 double tmprM = (Fx[k][k] * Fx[k][k] + Fy[k][k] * Fy[k][k]);
1298 int tmpID = 0;
1299 for (int l = k; l < 5; l++) {
1300 double tmprF = (Fx[l][k] * Fx[l][k] + Fy[l][k] * Fy[l][k]);
1301 if (tmprM <= tmprF) {
1302 tmprM = tmprF;
1303 tmpID = l;
1304 }
1305 }
1306
1307 int tmpP = P[k];
1308 P[k] = P[tmpID];
1309 P[tmpID] = tmpP;
1310
1311 for (int l = 0; l < 5; l++) {
1312
1313 double tmpFx = Fx[k][l];
1314 double tmpFy = Fy[k][l];
1315
1316 Fx[k][l] = Fx[tmpID][l];
1317 Fy[k][l] = Fy[tmpID][l];
1318
1319 Fx[tmpID][l] = tmpFx;
1320 Fy[tmpID][l] = tmpFy;
1321
1322 }
1323
1324 for (int l = k + 1; l < 5; l++) {
1325 double rFkk = Fx[k][k] * Fx[k][k] + Fy[k][k] * Fy[k][k];
1326 double Fxlk = Fx[l][k];
1327 double Fylk = Fy[l][k];
1328 double Fxkk = Fx[k][k];
1329 double Fykk = Fy[k][k];
1330 Fx[l][k] = (Fxlk * Fxkk + Fylk * Fykk) / rFkk;
1331 Fy[l][k] = (Fylk * Fxkk - Fxlk * Fykk) / rFkk;
1332 for (int m = k + 1; m < 5; m++) {
1333 Fx[l][m] = Fx[l][m] - (Fx[l][k] * Fx[k][m] - Fy[l][k] * Fy[k][m]);
1334 Fy[l][m] = Fy[l][m] - (Fx[l][k] * Fy[k][m] + Fy[l][k] * Fx[k][m]);
1335 }
1336 }
1337 }
1338
1339 for (int k = 0; k < 5; k++) {
1340 for (int l = 0; l < 5 ; l++) {
1341 if (k == l) {
1342 Lx[k][k] = 1;
1343 Ly[k][k] = 0;
1344 Ux[k][k] = Fx[k][k];
1345 Uy[k][k] = Fy[k][k];
1346 }
1347 if (k > l) {
1348 Lx[k][l] = Fx[k][l];
1349 Ly[k][l] = Fy[k][l];
1350 Ux[k][l] = 0;
1351 Uy[k][l] = 0;
1352 }
1353 if (k < l) {
1354 Ux[k][l] = Fx[k][l];
1355 Uy[k][l] = Fy[k][l];
1356 Lx[k][l] = 0;
1357 Ly[k][l] = 0;
1358 }
1359 }
1360 }
1361
1362 // calculate Inverse for L and U
1363 for (int k = 0; k < 5; k++) {
1364
1365 LIx[k][k] = 1;
1366 LIy[k][k] = 0;
1367
1368 double rUkk = Ux[k][k] * Ux[k][k] + Uy[k][k] * Uy[k][k];
1369 UIx[k][k] = Ux[k][k] / rUkk;
1370 UIy[k][k] = -1.0f * Uy[k][k] / rUkk ;
1371
1372 for (int l = (k + 1); l < 5; l++) {
1373 LIx[k][l] = 0;
1374 LIy[k][l] = 0;
1375 UIx[l][k] = 0;
1376 UIy[l][k] = 0;
1377 }
1378
1379 for (int l = (k - 1); l >= 0; l--) { // U-1
1380 double sx = 0;
1381 double c_sx = 0;
1382 double sy = 0;
1383 double c_sy = 0;
1384 for (int m = l + 1; m <= k; m++) {
1385 sx = sx - c_sx;
1386 double sx_tmp = sx + Ux[l][m] * UIx[m][k] - Uy[l][m] * UIy[m][k];
1387 c_sx = (sx_tmp - sx) - (Ux[l][m] * UIx[m][k] - Uy[l][m] * UIy[m][k]);
1388 sx = sx_tmp;
1389
1390 sy = sy - c_sy;
1391 double sy_tmp = sy + Ux[l][m] * UIy[m][k] + Uy[l][m] * UIx[m][k];
1392 c_sy = (sy_tmp - sy) - (Ux[l][m] * UIy[m][k] + Uy[l][m] * UIx[m][k]);
1393 sy = sy_tmp;
1394 }
1395 UIx[l][k] = -1.0f * (UIx[l][l] * sx - UIy[l][l] * sy);
1396 UIy[l][k] = -1.0f * (UIy[l][l] * sx + UIx[l][l] * sy);
1397 }
1398
1399 for (int l = k + 1; l < 5; l++) { // L-1
1400 double sx = 0;
1401 double c_sx = 0;
1402 double sy = 0;
1403 double c_sy = 0;
1404 for (int m = k; m < l; m++) {
1405 sx = sx - c_sx;
1406 double sx_tmp = sx + Lx[l][m] * LIx[m][k] - Ly[l][m] * LIy[m][k];
1407 c_sx = (sx_tmp - sx) - (Lx[l][m] * LIx[m][k] - Ly[l][m] * LIy[m][k]);
1408 sx = sx_tmp;
1409
1410 sy = sy - c_sy;
1411 double sy_tmp = sy + Lx[l][m] * LIy[m][k] + Ly[l][m] * LIx[m][k];
1412 c_sy = (sy_tmp - sy) - (Lx[l][m] * LIy[m][k] + Ly[l][m] * LIx[m][k]);
1413 sy = sy_tmp;
1414 }
1415 LIx[l][k] = -1.0f * sx;
1416 LIy[l][k] = -1.0f * sy;
1417 }
1418 }
1419
1420 for (int m = 0; m < 5; m++) {
1421 double resX = 0;
1422 double c_resX = 0;
1423 double resY = 0;
1424 double c_resY = 0;
1425 for (int k = 0; k < 5; k++) {
1426 for (int l = 0; l < 5; l++) {
1427 double Plm = 0;
1428 if (P[l] == m) Plm = 1;
1429
1430 resX = resX - c_resX;
1431 double resX_tmp = resX + (UIx[0][k] * LIx[k][l] - UIy[0][k] * LIy[k][l]) * Plm;
1432 c_resX = (resX_tmp - resX) - ((UIx[0][k] * LIx[k][l] - UIy[0][k] * LIy[k][l]) * Plm);
1433 resX = resX_tmp;
1434
1435 resY = resY - c_resY;
1436 double resY_tmp = resY + (UIx[0][k] * LIy[k][l] + UIy[0][k] * LIx[k][l]) * Plm;
1437 c_resY = (resY_tmp - resY) - ((UIx[0][k] * LIy[k][l] + UIy[0][k] * LIx[k][l]) * Plm);
1438 resY = resY_tmp;
1439 }
1440 }
1441 FINVx[m] = resX;
1442 FINVy[m] = resY;
1443 }
1444
1445 return 1.0f;
1446 }

◆ Flatte() [1/3]

EvtComplex Flatte ( const double & m,
const double & m0 )

Constant Flatte.

Definition at line 617 of file EvtB0toKsKK.cc.

618 {
619 const double g_pipi = 0.165;
620 const double g_kk = 4.21 * g_pipi;
621
622 static EvtId pip = EvtPDL::getId("pi+");
623 static EvtId kp = EvtPDL::getId("K+");
624
625 const double s = m * m;
626 const double s0 = m0 * m0;
627
628 const EvtComplex rho_pipi = 2.0 * Flatte_k(s, EvtPDL::getMeanMass(pip)) / m;
629 const EvtComplex rho_kk = 2.0 * Flatte_k(s, EvtPDL::getMeanMass(kp)) / m;
630
631 const EvtComplex Gamma =
632 EvtComplex(0.0, 1.0) * ((g_pipi * rho_pipi) + (g_kk * rho_kk));
633
634 const EvtComplex Flatte = 1.0 / (s0 - s - Gamma);
635
636 return Flatte;
637 }

◆ Flatte() [2/3]

std::complex< double > Flatte ( double mx2,
double mr,
double g1,
double g2,
double m1a,
double m1b,
double m2a,
double m2b )
private

Definition at line 628 of file EvtD0Topippim2pi0.cc.

630 {
631
632 double mr2 = mr * mr;
633 double diff = mr2 - mx2;
634 double g22 = g2 * g1;
635 std::complex<double> ps1 = irho(mx2, m1a * m1a, m1b * m1b);
636 std::complex<double> ps2 = irho(mx2, m2a * m2a, m2b * m2b);
637 std::complex<double> iws = g1 * ps1 + g22 * ps2; /*mass dependent width */
638
639 double denom_real = diff + iws.imag();
640 double denom_imag = iws.real();
641 double denom = denom_real * denom_real + denom_imag * denom_imag;
642
643 double output_x = denom_real / denom;
644 double output_y = denom_imag / denom;
645
646 std::complex<double> output(output_x, output_y);
647 return output;
648
649 }

◆ Flatte() [3/3]

EvtComplex Flatte ( int id,
double resmass,
double g1,
double rg2og1 )
private

Definition at line 196 of file EvtDToKSKpi0.cc.

197 {
198
199 EvtVector4R p1, p2, p3;
200 double mass_daug1 __attribute__((unused)), mass_daug2 __attribute__((unused)), mass_daug3 __attribute__((unused));
201 if (id == 1) {
202 p1 = _pd[0];
203 mass_daug1 = pi0Mass;
204 p2 = _pd[1];
205 mass_daug2 = KpMass;
206 p3 = _pd[2];
207 mass_daug3 = KsMass;
208 }
209 if (id == 2) {
210 p1 = _pd[2];
211 mass_daug1 = KsMass;
212 p2 = _pd[0];
213 mass_daug2 = pi0Mass;
214 p3 = _pd[1];
215 mass_daug3 = KpMass;
216 }
217 if (id == 3) {
218 p1 = _pd[1];
219 mass_daug1 = KpMass;
220 p2 = _pd[2];
221 mass_daug2 = KsMass;
222 p3 = _pd[0];
223 mass_daug3 = pi0Mass;
224 }
225
226 double rMassSq __attribute__((unused)) = (p1 + p2).mass2();
227 double m12 = (p1 + p2).mass2();
228
229 double s = m12;
230
231 double rhoetapi = 2 * twoBodyCMmom(s, KsMass, KpMass) / sqrt(s);
232 double rhoKKbar = 2 * twoBodyCMmom(s, etamass, pipMass) / sqrt(s);
233 double img = rhoetapi * g1 + rhoKKbar * g1 * rg2og1;
234
235 EvtComplex ret = EvtComplex(1, 0) / EvtComplex(resmass * resmass - s, -img);
236 return ret;
237
238 }

◆ Flatte_k()

EvtComplex Flatte_k ( const double & s,
const double & m_h )

Constant Flatte_k.

Definition at line 605 of file EvtB0toKsKK.cc.

606 {
607 const double k2 = 1.0 - (4.0 * m_h * m_h / s);
608 EvtComplex k;
609 if (k2 < 0.0)
610 k = EvtComplex(0.0, sqrt(fabs(k2)));
611 else
612 k = sqrt(k2);
613
614 return k;
615 }

◆ Flatte_rhoab() [1/4]

EvtComplex Flatte_rhoab ( double sa,
double sb,
double sc )
private

Definition at line 369 of file EvtD0TopipiEta.cc.

370 {
371 double q = (sa + sb - sc) * (sa + sb - sc) / (4 * sa) - sb;
372 EvtComplex rhoo;
373 if (q > 0) {
374 rhoo = 2.0 * sqrt(q / sa) * one;
375 }
376 if (q < 0) {
377 rhoo = 2.0 * sqrt(-q / sa) * ci;
378 }
379 return rhoo;
380 }

◆ Flatte_rhoab() [2/4]

void Flatte_rhoab ( double sa,
double sb,
double sc,
double rho[2] )
private

Definition at line 427 of file EvtDsToKKpi.cc.

428 {
429 double q = (sa + sb - sc) * (sa + sb - sc) / (4 * sa) - sb;
430 if (q > 0) {
431 rho_param[0] = 2 * sqrt(q / sa);
432 rho_param[1] = 0;
433 } else if (q < 0) {
434 rho_param[0] = 0;
435 rho_param[1] = 2 * sqrt(-q / sa);
436 }
437 }

◆ Flatte_rhoab() [3/4]

void Flatte_rhoab ( double sa,
double sb,
double sc,
double rho[2] )
private

Definition at line 373 of file EvtDsToKpipi.cc.

374 {
375 double q = (sa + sb - sc) * (sa + sb - sc) / (4 * sa) - sb;
376 if (q > 0) {
377 rho_param[0] = 2 * sqrt(q / sa);
378 rho_param[1] = 0;
379 } else if (q < 0) {
380 rho_param[0] = 0;
381 rho_param[1] = 2 * sqrt(-q / sa);
382 }
383 }

◆ Flatte_rhoab() [4/4]

EvtComplex Flatte_rhoab ( double sa,
double sb,
double sc )
private

Definition at line 347 of file EvtDTopipi0Eta.cc.

348 {
349 double q = (sa + sb - sc) * (sa + sb - sc) / (4 * sa) - sb;
350 EvtComplex rho_val;
351 if (q > 0) {
352 rho_val = 2.0 * sqrt(q / sa) * one;
353 }
354 if (q < 0) {
355 rho_val = 2.0 * sqrt(-q / sa) * ci;
356 }
357 return rho_val;
358 }

◆ FMTX()

std::complex< double > FMTX ( double Kijx,
double Kijy,
double rhojjx,
double rhojjy,
int i,
int j )
private

Definition at line 1237 of file EvtD0Topippim2pi0.cc.

1238 {
1239
1240 double Fijx;
1241 double Fijy;
1242
1243 double tmpx = rhojjx * Kijx - rhojjy * Kijy;
1244 double tmpy = rhojjx * Kijy + rhojjy * Kijx;
1245
1246 Fijx = IMTX(i, j).real() + tmpy;
1247 Fijy = -tmpx;
1248
1249 std::complex<double> Fij(Fijx, Fijy);
1250 return Fij;
1251 }

◆ fundecaymomentum()

double fundecaymomentum ( double mr2,
double m1_2,
double m2_2 )
private

Definition at line 497 of file EvtD0Topippim2pi0.cc.

498 {
499 double mr = sqrt(mr2);
500 double poly = mr2 * mr2 + m1_2 * m1_2 + m2_2 * m2_2 - 2 * m1_2 * mr2 - 2 * m2_2 * mr2 - 2 * m1_2 * m2_2;
501 double ret = sqrt(poly) / (2 * mr);
502 if (poly < 0)
503 //if(sqrt(m1_2) +sqrt(m2_2) > mr)
504 ret = 0.0f;
505 return ret;
506 }

◆ fundecaymomentum2()

double fundecaymomentum2 ( double mr2,
double m1_2,
double m2_2 )
private

Definition at line 557 of file EvtD0Topippim2pi0.cc.

558 {
559 double poly = mr2 * mr2 + m1_2 * m1_2 + m2_2 * m2_2 - 2 * m1_2 * mr2 - 2 * m2_2 * mr2 - 2 * m1_2 * m2_2;
560 double ret = poly / (4.0f * mr2);
561 if (poly < 0)
562 ret = 0.0f;
563 return ret;
564 }

◆ Fvector()

std::complex< double > Fvector ( double sa,
double s0,
int l )
private

Definition at line 1473 of file EvtD0Topippim2pi0.cc.

1474 {
1475
1476 double outputx = 0;
1477 double outputy = 0;
1478
1479 double FINVx[5] = {0, 0, 0, 0, 0};
1480 double FINVy[5] = {0, 0, 0, 0, 0};
1481
1482 if (l < 5) {
1483 double g[5][5] = {{ 0.22889, -0.55377, 0.00000, -0.39899, -0.34639},
1484 { 0.94128, 0.55095, 0.00000, 0.39065, 0.31503},
1485 { 0.36856, 0.23888, 0.55639, 0.18340, 0.18681},
1486 { 0.33650, 0.40907, 0.85679, 0.19906, -0.00984},
1487 { 0.18171, -0.17558, -0.79658, -0.00355, 0.22358}
1488 };
1489 double resx = 0;
1490 double c_resx = 0;
1491 double resy = 0;
1492 double c_resy = 0;
1493 double Plx = PVTR(l, sa).real();
1494 double Ply = PVTR(l, sa).imag();
1495 for (int j = 0; j < 5; j++) {
1496 resx = resx - c_resx;
1497 double resx_tmp = resx + (FINVx[j] * g[l][j] * Plx - FINVy[j] * g[l][j] * Ply);
1498 c_resx = (resx_tmp - resx) - (FINVx[j] * g[l][j] * Plx - FINVy[j] * g[l][j] * Ply);
1499 resx = resx_tmp;
1500
1501 resy = resy - c_resy;
1502 double resy_tmp = resy + (FINVx[j] * g[l][j] * Ply + FINVy[j] * g[l][j] * Plx);
1503 c_resy = (resy_tmp - resy) - (FINVx[j] * g[l][j] * Ply + FINVy[j] * g[l][j] * Plx);
1504 resy = resy_tmp;
1505 }
1506 outputx = resx;
1507 outputy = resy;
1508 } else {
1509 int idx = l - 5;
1510 double eps = 1e-11;
1511 double ds = sa - s0;
1512 if (fabs(ds) < eps && ds <= 0) ds = -eps;
1513 if (fabs(ds) < eps && ds > 0) ds = eps;
1514 double tmp = (1 - s0) / ds;
1515 outputx = FINVx[idx] * tmp;
1516 outputy = FINVy[idx] * tmp;
1517 }
1518
1519 std::complex<double> output(outputx, outputy);
1520 return output;
1521 }

◆ Gamma()

double Gamma ( const EvtBSemiTauonicHelicityAmplitudeCalculator & BSTD,
double mtau,
int tauhel,
int Dhel )

Function calculates the helicity dependent decay rate Gamma, integrated for w and costau.

Parameters
BSTDhelicity ampliutude calculator initialized properly by user.
mtaudaughter lepton mass.
tauhelhelicity of the lepton in the (l+nu) rest frame {+1,-1}.
Dhelhelicity of the D(*) meson in the rest frame of the parent meson {+1,0,-1} for D* and 2 for D. Note that overall factor (GF/sqrt(2) Vcb)^2 is omitted.

Definition at line 77 of file EvtBSemiTauonicDecayRateCalculator.cc.

79 {
80 m_BSTD = &BSTD;
81 TF2 f1("f1", this, &EvtBSemiTauonicDecayRateCalculator::EvaluateBy2D,
82 BSTD.wmin(), BSTD.wmax(mtau, Dhel), -1, 1, 3,
83 "EvtBSemiTauonicDecayRateCalculator", "EvaluateBy2D");
84 f1.SetParameter(0, mtau);
85 f1.SetParameter(1, tauhel);
86 f1.SetParameter(2, Dhel);
87 ROOT::Math::WrappedMultiTF1 wf1(f1);
88
89 // Create the Integrator
90 ROOT::Math::AdaptiveIntegratorMultiDim ig;
91 ig.SetFunction(wf1);
92 double xmin[] = {BSTD.wmin(), -1};
93 double xmax[] = {BSTD.wmax(mtau, Dhel), 1};
94 return ig.Integral(xmin, xmax);
95 }

◆ GammaD()

double GammaD ( const EvtBSemiTauonicHelicityAmplitudeCalculator & BSTD,
double mtau )

Function calculates the decay rate Gamma for Dtaunu decay, integrated for w and costau and summed for helicities.

Parameters
BSTDhelicity ampliutude calculator initialized properly by user.
mtaudaughter lepton mass. Note that overall factor (GF/sqrt(2) Vcb)^2 is omitted.

Definition at line 98 of file EvtBSemiTauonicDecayRateCalculator.cc.

99 {
100 double sum(0);
101 sum += Gamma(BSTD, mtau, -1, 2);
102 sum += Gamma(BSTD, mtau, +1, 2);
103 return sum;
104 }

◆ GammaDstar()

double GammaDstar ( const EvtBSemiTauonicHelicityAmplitudeCalculator & BSTD,
double mtau )

Function calculates the differential decay rate Gamma for D*taunu decay, integrated for w and costau and summed for helicities.

Parameters
BSTDhelicity ampliutude calculator initialized properly by user.
mtaudaughter lepton mass. Note that overall factor (GF/sqrt(2) Vcb)^2 is omitted.

Definition at line 106 of file EvtBSemiTauonicDecayRateCalculator.cc.

107 {
108 double sum(0);
109 for (int Dhel = -1; Dhel <= 1; Dhel++) {
110 sum += Gamma(BSTD, mtau, -1, Dhel);
111 sum += Gamma(BSTD, mtau, +1, Dhel);
112 }
113 return sum;
114 }

◆ GammaSMD()

double GammaSMD ( const EvtBSemiTauonicHelicityAmplitudeCalculator & BSTD,
const double mlep = 0.0005110 )

Function calculates the SM decay rate Gamma for Dlnu decay, integrated for w and costau and summed for helicities.

Parameters
BSTDhelicity ampliutude calculator initialized properly by user.
mlepdaughter lepton mass (default is the electron mass). Note that overall factor (GF/sqrt(2) Vcb)^2 is omitted.

Definition at line 117 of file EvtBSemiTauonicDecayRateCalculator.cc.

118 {
119
120 EvtBSemiTauonicHelicityAmplitudeCalculator SM(BSTD);
121 SM.setCV1(0);
122 SM.setCV2(0);
123 SM.setCS1(0);
124 SM.setCS2(0);
125 SM.setCT(0);
126 double sum(0);
127 sum += Gamma(SM, mlep, -1, 2);
128 sum += Gamma(SM, mlep, +1, 2);
129 return sum;
130 }

◆ GammaSMDstar()

double GammaSMDstar ( const EvtBSemiTauonicHelicityAmplitudeCalculator & BSTD,
const double mlep = 0.0005110 )

Function calculates the SM decay rate Gamma for D*lnu decay, integrated for w and costau and summed for helicities.

Parameters
BSTDhelicity ampliutude calculator initialized properly by user.
mlepdaughter lepton mass (default is the electron mass). Note that overall factor (GF/sqrt(2) Vcb)^2 is omitted.

Definition at line 132 of file EvtBSemiTauonicDecayRateCalculator.cc.

133 {
134 EvtBSemiTauonicHelicityAmplitudeCalculator SM(BSTD);
135 SM.setCV1(0);
136 SM.setCV2(0);
137 SM.setCS1(0);
138 SM.setCS2(0);
139 SM.setCT(0);
140 double sum(0);
141 for (int Dhel = -1; Dhel <= 1; Dhel++) {
142 sum += Gamma(SM, mlep, -1, Dhel);
143 sum += Gamma(SM, mlep, +1, Dhel);
144 }
145 return sum;
146 }

◆ generate() [1/2]

MCInitialParticles & generate ( )

Generate a new event.

Definition at line 140 of file InitialParticleGeneration.cc.

141 {
142 return generate(m_allowedFlags);
143 }

◆ generate() [2/2]

MCInitialParticles & generate ( int allowedFlags)
private

Generate a new event with a particular set of allowed flags.

Parameters
[in]allowedFlagsAllowed flags.

Definition at line 145 of file InitialParticleGeneration.cc.

146 {
147 if (!m_event) {
148 m_event.create();
149 }
150 if (!m_beamParams.isValid()) {
151 B2FATAL("Cannot generate beam without valid BeamParameters");
152 }
153 if (m_beamParams.hasChanged()) {
154 m_generateHER.reset();
155 m_generateLER.reset();
156 m_generateVertex.reset();
157 }
158 m_event->setGenerationFlags(m_beamParams->getGenerationFlags() & allowedFlags);
159 ROOT::Math::PxPyPzEVector her = generateBeam(m_beamParams->getHER(), m_beamParams->getCovHER(), m_generateHER);
160 ROOT::Math::PxPyPzEVector ler = generateBeam(m_beamParams->getLER(), m_beamParams->getCovLER(), m_generateLER);
161 ROOT::Math::XYZVector vtx = generateVertex(m_beamParams->getVertex(), m_beamParams->getCovVertex(), m_generateVertex);
162 m_event->set(her, ler, vtx);
163 //Check if we want to go to CMS, if so boost both
164 if (m_beamParams->hasGenerationFlags(BeamParameters::c_generateCMS)) {
165 m_event->setGenerationFlags(0);
166 her = m_event->getLabToCMS() * her;
167 ler = m_event->getLabToCMS() * ler;
168 m_event->set(her, ler, vtx);
169 m_event->setGenerationFlags(m_beamParams->getGenerationFlags() & allowedFlags);
170 }
171 return *m_event;
172 }

◆ generateBeam()

ROOT::Math::PxPyPzEVector generateBeam ( const ROOT::Math::PxPyPzEVector & initial,
const TMatrixDSym & cov,
MultivariateNormalGenerator & gen ) const
private

generate 4 vector for one beam

Parameters
initialbeam
covcovariance of the beam momentum (E, theta_x, theta_y)
genmultivariate normal generator to be used

Definition at line 101 of file InitialParticleGeneration.cc.

103 {
104 //no smearing, nothing to do
105 if (!(m_event->getGenerationFlags() & BeamParameters::c_smearBeam))
106 return initial;
107
108
109 //Calculate initial parameters of the beam before smearing
110 double E0 = initial.E();
111 double thX0 = std::atan(initial.Px() / initial.Pz());
112 double thY0 = std::atan(initial.Py() / initial.Pz());
113
114 //init random generator if there is a change in beam parameters or at the beginning
115 if (gen.size() != 3) gen.setMeanCov(ROOT::Math::XYZVector(E0, thX0, thY0), cov);
116
117 //generate the actual smeared vector (E, thX, thY)
118 Eigen::VectorXd p = gen.generate();
119
120 //if we don't smear beam energy set the E to initial value
121 if (!m_event->hasGenerationFlags(BeamParameters::c_smearBeamEnergy))
122 p[0] = E0;
123
124 //if we don't smear beam direction set thX and thY to initial values
125 if (!m_event->hasGenerationFlags(BeamParameters::c_smearBeamDirection)) {
126 p[1] = thX0;
127 p[2] = thY0;
128 }
129
130 //store smeared values
131 double E = p[0];
132 double thX = p[1];
133 double thY = p[2];
134
135 //Convert values back to 4-vector
136 bool isHER = initial.Z() > 0;
137 return BeamParameters::getFourVector(E, thX, thY, isHER);
138 }

◆ generateEvent()

void generateEvent ( MCParticleGraph & mcGraph)

Generates one single event.

Parameters
mcGraphReference to the MonteCarlo graph into which the generated particles will be stored.

Definition at line 106 of file CRY.cc.

107 {
108 bool eventInAcceptance = 0;
109 static std::vector<CRYParticle*> ev;
110
111 //force at least particle in acceptance box
112 for (int iTrial = 0; iTrial < m_maxTrials; ++iTrial) {
113 m_totalTrials++;
114 // Generate one event
115 ev.clear();
116 m_cryGenerator->genEvent(&ev);
117 // check all particles
118 for (auto* p : ev) {
119 const int pdg = p->PDGid();
120 const double kineticEnergy = p->ke() * Unit::MeV;
121 if (kineticEnergy < m_kineticEnergyThreshold) continue;
122
123 const double mass = TDatabasePDG::Instance()->GetParticle(pdg)->Mass();
124 const double etot = kineticEnergy + mass;
125 // since etot is at least mass this cannot be negative
126 const double ptot = sqrt(etot * etot - mass * mass);
127
128 // Momentum
129 // We have x horizontal, y up and z along the beam. So uvw -> zxy, xc yc zc -> zxy
130 const double px = ptot * p->v();
131 const double py = ptot * p->w();
132 const double pz = ptot * p->u();
133 // Vertex
134 const double vx = p->y() * Unit::m;
135 const double vy = p->z() * Unit::m;
136 const double vz = p->x() * Unit::m;
137
138 // Time
139 /* In basf2, it is assumed that t = 0 when an event was produced,
140 For the cosmic case, we set t = 0 when particle cross y=0 plane;
141 The output time from CRY (p->t()) is too large (order of second) and also
142 increase as simulated time, so it is impossible to handle in basf2.
143 For event which has more then one particle, the difference between their production
144 times is also too large (> micro-second) to keep in basf2, so the time relation
145 between particles in each event is also reset. Production of each particle in event is set t=0 at y=0.
146 if one need production from CRY for a special study, you have to find a way to handle it...*/
147 double time = 0;
148
149 vecgeom::Vector3D<double> pos(vx, vy, vz);
150 const ROOT::Math::PxPyPzEVector mom(px, py, pz, etot);
151 const ROOT::Math::XYZVector momVec(mom.Px(), mom.Py(), mom.Pz());
152 const auto momDir = momVec.Unit();
153 const double speed = (mass == 0 ? 1 : mom.Beta()) * Const::speedOfLight;
154
155 // Project on the boundary of the world box
156 auto inside = m_world->Inside(pos);
157 if (inside == vecgeom::kInside) {
158 // inside the world volume, go backwards in time to the world box
159 const vecgeom::Vector3D<double> dir(-momDir.X(), -momDir.Y(), -momDir.Z());
160 double dist = m_world->DistanceToOut(pos, dir);
161 pos += dist * dir;
162 time -= dist / speed;
163 } else if (inside == vecgeom::kOutside) {
164 // outside the world volume, go forwards in time to the world box
165 // this should not happen but better safe then sorry ...
166 const vecgeom::Vector3D<double> dir(momDir.X(), momDir.Y(), momDir.Z());
167 double dist = m_world->DistanceToIn(pos, dir);
168 if (dist == vecgeom::InfinityLength<double>()) continue;
169 pos += dist * dir;
170 time += dist / speed;
171 }
172 // Intersect with the acceptance box
173 const vecgeom::Vector3D<double> dir(momDir.X(), momDir.Y(), momDir.Z());
174 double dist = m_acceptance->DistanceToIn(pos, dir);
175 if (dist == vecgeom::InfinityLength<double>()) continue;
176
177 // We want to keep this one
178 auto& particle = mcGraph.addParticle();
179 // all particle of a generator are primary
180 particle.addStatus(MCParticle::c_PrimaryParticle);
181 // all particle of CRY are stable
182 particle.addStatus(MCParticle::c_StableInGenerator);
183 particle.setPDG(pdg);
184 particle.setFirstDaughter(0);
185 particle.setLastDaughter(0);
186 particle.setMomentum(momVec);
187 particle.setMass(mass);
188 particle.setEnergy(mom.E());
189 particle.setProductionVertex(ROOT::Math::XYZVector(pos.x(), pos.y(), pos.z()));
190 particle.setProductionTime(time);
191 eventInAcceptance = true;
192 }
193 // clean up CRY event
194 for (auto* p : ev) delete p;
195 // and if we have something in the acceptance then we're done
196 if (eventInAcceptance) {
197 return;
198 }
199
200 }
201 B2ERROR("Number of trials exceeds maxTrials increase number of maxTrials" << LogVar("maxTrials", m_maxTrials));
202 }

◆ generateVertex()

ROOT::Math::XYZVector generateVertex ( const ROOT::Math::XYZVector & initial,
const TMatrixDSym & cov,
MultivariateNormalGenerator & gen ) const
private

generate the vertex

Parameters
initialnominal vertex position
covcovariance of the vertex position
genmultivariate normal generator to be used

Definition at line 27 of file InitialParticleGeneration.cc.

29 {
30 if (m_event->hasGenerationFlags(BeamParameters::c_smearVertex)) {
31 if (!gen.size()) gen.setMeanCov(initial, cov);
32 return gen.generateVec3();
33 }
34 return initial;
35 }

◆ Get_strongPhase()

double Get_strongPhase ( )
private

Definition at line 1961 of file EvtD0Topippim2pi0.cc.

1962 {
1963 double temp = arg(m_AmpD0) - arg(m_AmpDb);
1964 while (temp < -TMath::Pi()) {
1965 temp += 2.0 * TMath::Pi();
1966 }
1967 while (temp > TMath::Pi()) {
1968 temp -= 2.0 * TMath::Pi();
1969 }
1970 return temp;
1971 }

◆ getAnglesCMS()

template<typename T>
std::pair< T, T > getAnglesCMS ( GeneralVector< T > p1,
GeneralVector< T > p2 )

get collision axis angles in CM frame from HER & LER momentum 3-vectors

Definition at line 204 of file beamHelpers.h.

205 {
206 GeneralVector<T> bv = getBoost(p1, p2);
207
208 T gamma = 1.0 / sqrt(1 - bv.norm2());
209
210 T E1 = sqrt(p1.norm2() + me * me);
211
212 GeneralVector<T> pCMS = p1 + ((gamma - 1) / bv.norm2() * dot(p1, bv) - gamma * E1) * bv;
213
214 return std::make_pair(pCMS.angleX(), pCMS.angleY());
215 }
GeneralVector< T > getBoost(GeneralVector< T > p1, GeneralVector< T > p2)
get boost vector from HER & LER momentum 3-vectors
static const double me
electron mass
3-vector with members of arbitrary type, especially members can be dual numbers
T norm2() const
L2 norm of the vector squared.
T angleY() const
angle in the YZ projection of the vector
T angleX() const
angle in the XZ projection of the vector

◆ getbaryonff()

void getbaryonff ( EvtId ,
EvtId ,
double ,
double ,
double * ,
double * ,
double * ,
double *  )

Not Implemented.

Definition at line 139 of file EvtBCLFF.cc.

140 {
141 B2FATAL("Not implemented :getbaryonff in EvtBCLFF.");
142 }

◆ getBoost()

template<typename T>
GeneralVector< T > getBoost ( GeneralVector< T > p1,
GeneralVector< T > p2 )

get boost vector from HER & LER momentum 3-vectors

Definition at line 193 of file beamHelpers.h.

194 {
195 T E1 = sqrt(p1.norm2() + me * me);
196 T E2 = sqrt(p2.norm2() + me * me);
197
198 return 1. / (E1 + E2) * (p1 + p2);
199 }

◆ getCentralValues()

Eigen::VectorXd getCentralValues ( double eH,
double thXH,
double thYH,
double eL,
double thXL,
double thYL )
inline

get vector including (Ecms, boostX, boostY, boostZ, angleXZ, angleYZ) from beam energies and angles

Definition at line 267 of file beamHelpers.h.

269 {
270 Eigen::VectorXd mu(6);
271
272 GeneralVector<double> pH = getFourVector<double>(eH, thXH, thYH, true);
273 GeneralVector<double> pL = getFourVector<double>(eL, thXL, thYL, false);
274
275 double Ecms = getEcms<double>(pH, pL);
277
278 double angleX, angleY;
279 std::tie(angleX, angleY) = getAnglesCMS<double>(pH, pL);
280
281 mu(0) = Ecms;
282 mu(1) = boost.el[0];
283 mu(2) = boost.el[1];
284 mu(3) = boost.el[2];
285 mu(4) = angleX;
286 mu(5) = angleY;
287
288 return mu;
289 }
GeneralVector< T > getFourVector(T energy, T angleX, T angleY, bool isHER)
get 4-momentum from energy and angles of beam
T getEcms(GeneralVector< T > p1, GeneralVector< T > p2)
get CMS energy from HER & LER momentum 3-vectors
std::pair< T, T > getAnglesCMS(GeneralVector< T > p1, GeneralVector< T > p2)
get collision axis angles in CM frame from HER & LER momentum 3-vectors

◆ getdiracff()

void getdiracff ( EvtId ,
EvtId ,
double ,
double ,
double * ,
double * ,
double * ,
double * ,
double * ,
double *  )

Not Implemented.

Definition at line 144 of file EvtBCLFF.cc.

145 {
146 B2FATAL("Not implemented :getbaryonff in EvtBCLFF.");
147 }

◆ getEcms()

template<typename T>
T getEcms ( GeneralVector< T > p1,
GeneralVector< T > p2 )

get CMS energy from HER & LER momentum 3-vectors

Definition at line 182 of file beamHelpers.h.

183 {
184 T E1 = sqrt(p1.norm2() + me * me);
185 T E2 = sqrt(p2.norm2() + me * me);
186
187 return sqrt((E1 + E2) * (E1 + E2) - (p1 + p2).norm2());
188 }

◆ getFourVector()

template<typename T>
GeneralVector< T > getFourVector ( T energy,
T angleX,
T angleY,
bool isHER )

get 4-momentum from energy and angles of beam

Definition at line 220 of file beamHelpers.h.

221 {
222 T p = sqrt(energy * energy - me * me);
223
224 double dir = isHER ? 1 : -1;
225
226 T pz = dir * p / sqrt(tan(angleX) * tan(angleX) + tan(angleY) * tan(angleY) + 1.0);
227
228 return GeneralVector<T>(pz * tan(angleX), pz * tan(angleY), pz);
229 }
double tan(double a)
tan for double
Definition beamHelpers.h:31

◆ getGradientMatrix()

Eigen::MatrixXd getGradientMatrix ( double eH,
double thXH,
double thYH,
double eL,
double thXL,
double thYL )
inline

get gradient matrix of (eH, thXH, thYH, eL, thXL, thYL) -> (eCMS, boostX, boostY, boostY, angleXZ, angleYZ) transformation

Definition at line 233 of file beamHelpers.h.

235 {
236 Eigen::MatrixXd grad(6, 6);
237
238 //calculate derivatives wrt all 6 input variables
239 for (int j = 0; j < 6; ++j) {
240
241 std::vector<double> eps(6, 0.0);
242 eps[j] = 1.0;
243
244 GeneralVector<DualNumber> pH = getFourVector(DualNumber(eH, eps[0]), DualNumber(thXH, eps[1]), DualNumber(thYH, eps[2]), true);
245 GeneralVector<DualNumber> pL = getFourVector(DualNumber(eL, eps[3]), DualNumber(thXL, eps[4]), DualNumber(thYL, eps[5]), false);
246
247
248 DualNumber Ecms = getEcms(pH, pL);
249 GeneralVector<DualNumber> boost = getBoost(pH, pL);
250
251 DualNumber angleX, angleY;
252 std::tie(angleX, angleY) = getAnglesCMS(pH, pL);
253
254 grad(0, j) = Ecms.dx;
255 grad(1, j) = boost.el[0].dx;
256 grad(2, j) = boost.el[1].dx;
257 grad(3, j) = boost.el[2].dx;
258 grad(4, j) = angleX.dx;
259 grad(5, j) = angleY.dx;
260 }
261
262 return grad;
263 }
double dx
differential value of dual number, should be 1 if derivative is calculated
Definition beamHelpers.h:40

◆ getInstance()

EvtGenModelRegister & getInstance ( )
staticprivate

Return reference to the instance.

This class behaves like a purely static class but we need a singleton pattern to avoid initialisation hell.

Definition at line 21 of file EvtGenModelRegister.cc.

22 {
23 static unique_ptr<EvtGenModelRegister> instance(new EvtGenModelRegister());
24 return *instance;
25 }

◆ getModels()

list< EvtDecayBase * > getModels ( )
static

Return a list of models.

Caller takes responsibility to free the instances when no longer needed

Returns
list with pointers to instances of all registered models.

Definition at line 27 of file EvtGenModelRegister.cc.

28 {
29 list<EvtDecayBase*> modelList;
30 for (auto factory : getInstance().m_models) {
31 modelList.push_back(factory());
32 }
33 return modelList;
34 }

◆ getName() [1/23]

std::string getName ( )

Get function Name.

Definition at line 31 of file EvtB0toKsKK.cc.

32 {
33 return "B0toKsKK";
34 }

◆ getName() [2/23]

std::string getName ( )

Returns name of module.

Definition at line 39 of file EvtBCL.cc.

40 {
41 return "BCL";
42 }

◆ getName() [3/23]

std::string getName ( )

The function returns the model name.

Returns
name of the model "BSTD_2HDMTYPE2"

Definition at line 40 of file EvtBSemiTauonic2HDMType2.cc.

41 {
42 return "BSTD_2HDMTYPE2";
43 }

◆ getName() [4/23]

std::string getName ( )

The function returns the model name.

Returns
name of the model "BSTD"

Definition at line 40 of file EvtBSemiTauonic.cc.

41 {
42 return "BSTD";
43 }

◆ getName() [5/23]

std::string getName ( )

The function which returns the name of the model.

Definition at line 36 of file EvtBtoXsnunu_FERMI.cc.

37 {
38 return "BTOXSNUNU_FERMI";
39 }

◆ getName() [6/23]

std::string getName ( )

Definition at line 32 of file EvtD0ToKpipi0pi0.cc.

33 {
34 return "D0ToKpipi0pi0";
35 }

◆ getName() [7/23]

std::string getName ( )

Definition at line 31 of file EvtD0ToKpipipi.cc.

32 {
33 return "D0ToKpipipi";
34 }

◆ getName() [8/23]

std::string getName ( )

Definition at line 34 of file EvtD0TopipiEta.cc.

35 {
36 return "D0TopipiEta";
37 }

◆ getName() [9/23]

std::string getName ( )

Definition at line 38 of file EvtD0Topippim2pi0.cc.

39 {
40 return "D0Topippim2pi0";
41 }

◆ getName() [10/23]

std::string getName ( )

Definition at line 43 of file EvtDsToKKpi.cc.

44 {
45 return "DsToKKpi";
46 }

◆ getName() [11/23]

std::string getName ( )

Definition at line 41 of file EvtDsToKpipi.cc.

42 {
43 return "DsToKpipi";
44 }

◆ getName() [12/23]

std::string getName ( )

Definition at line 39 of file EvtDToKSKpi0.cc.

40 {
41 return "DToKSKpi0";
42 }

◆ getName() [13/23]

std::string getName ( )

Definition at line 37 of file EvtDToKSpipi0pi0.cc.

38 {
39 return "DToKSpipi0pi0";
40 }

◆ getName() [14/23]

std::string getName ( )

Definition at line 32 of file EvtDToKSpipipi.cc.

33 {
34 return "DToKSpipipi";
35 }

◆ getName() [15/23]

std::string getName ( )

Definition at line 35 of file EvtDTopipi0Eta.cc.

36 {
37 return "DTopipi0Eta";
38 }

◆ getName() [16/23]

std::string getName ( )

Returns the model name: ETA_FULLDALITZ.

Definition at line 26 of file EvtEtaFullDalitz.cc.

27 {
28
29 return "ETA_FULLDALITZ";
30
31 }

◆ getName() [17/23]

std::string getName ( )

Returns the name of the model: ETA_PI0DALITZ.

Definition at line 41 of file EvtEtaPi0Dalitz.cc.

42 {
43
44 return "ETA_PI0DALITZ";
45
46 }

◆ getName() [18/23]

std::string getName ( )

Returns the model name: ETAPRIME_DALITZ.

Definition at line 43 of file EvtEtaPrimeDalitz.cc.

44 {
45
46 return "ETAPRIME_DALITZ";
47
48 }

◆ getName() [19/23]

std::string getName ( )

The function which returns the name of the model.

Definition at line 36 of file EvtFlatDaughter.cc.

37 {
38 return "FLAT_DAUGHTER";
39 }

◆ getName() [20/23]

std::string getName ( )

Returns name of module.

Definition at line 39 of file EvtHNLBCL.cc.

40 {
41 return "HNLBCL";
42 }

◆ getName() [21/23]

std::string getName ( )

The function which returns the name of the model.

Definition at line 40 of file EvtKnunu.cc.

41 {
42 return "KNUNU";
43 }

◆ getName() [22/23]

std::string getName ( )

The function which returns the name of the model.

Definition at line 39 of file EvtKstarnunu_REV.cc.

40 {
41 return "KSTARNUNU_REV";
42 }

◆ getName() [23/23]

std::string getName ( )

Get function Name.

Definition at line 30 of file EvtPhspCP.cc.

31 {
32 return "PHSP_CP";
33 }

◆ getprop()

EvtComplex getprop ( double daug1[],
double daug2[],
double mass,
double width,
int flag,
int L )
private

Propagator Lineshapes.

Definition at line 424 of file EvtDToKSpipipi.cc.

425 {
426 //flag = 0, RBW with constant width
427 //flag = 1, RBW with width depends on momentum
428 //flag = 2, GS convolute with RBW_omega
429 //flag = 3, flatte for f_0(980)/a_0(980)
430 //flag = 4, Bugg formula for sigma;
431 //effect radii == 3.0 GeV^-1
432 EvtComplex prop1, prop2, prop;
433 EvtComplex one(1, 0);
434 double pR[4];
435 for (int i = 0; i < 4; i++) {
436 pR[i] = daug1[i] + daug2[i];
437 }
438 double sa, sb, sc;
439 sa = dot(pR, pR);
440 sb = dot(daug1, daug1);
441 sc = dot(daug2, daug2);
442 if (flag == 0) return propogator(mass_, width_, sa);
443 if (flag == 1) return propagatorRBW(mass_, width_, sa, sb, sc, 3.0, L);
444 if (flag == 2) {
445 prop1 = propagatorGS(mass_, width_, sa, sb, sc, 3.0, L);
446 prop2 = propagatorRBW(0.783, 0.008, sa, sb, sc, 3.0, L);
447 EvtComplex coef_omega(rho_omega * cos(phi_omega), rho_omega * sin(phi_omega));
448 prop = prop1 * (one + 0.783 * 0.783 * coef_omega * prop2);
449 return prop;
450 }
451 if (flag == 3) {
452 //Not need for D+ -> Ks 3pi
453 }
454 if (flag == 4) {
455 EvtComplex ci(0, 1);
456 double f = 0.5843 + 1.6663 * sa;
457 double M = 0.9264;
458 double mpi2 = mass_Pion * mass_Pion;
459 double mass2 = M * M;
460 double g1_ = f * (sa - mpi2 / 2) / (mass2 - mpi2 / 2) * exp((mass2 - sa) / 1.082);
461 EvtComplex rho1s = rhoab(sa, sb, sc);
462 EvtComplex rho1M = rhoab(mass2, sb, sc);
463 EvtComplex rho2s = rho4Pi(sa);
464 EvtComplex rho2M = rho4Pi(mass2);
465 prop = 1.0 / (M * M - sa - ci * M * (g1_ * rho1s / rho1M + 0.0024 * rho2s / rho2M));
466 return prop;
467 }
468 return one;
469 }

◆ getraritaff()

void getraritaff ( EvtId ,
EvtId ,
double ,
double ,
double * ,
double * ,
double * ,
double * ,
double * ,
double * ,
double * ,
double *  )

Not Implemented.

Definition at line 149 of file EvtBCLFF.cc.

150 {
151 B2FATAL("Not implemented :getbaryonff in EvtBCLFF.");
152 }

◆ getscalarff()

void getscalarff ( EvtId parent,
EvtId daughter,
double t,
double ,
double * fpf,
double * f0f )

Scalar FF's.

Implementation follows arXiv:1509.06938v3.

For the scalar FF, the arglist in the constructor should contain 8 expansion parameters: b+_0, b+_1, b+_2, b+_3, b0_0, b0_1, b0_2, b0_3

Parameters
parent
daughter
tMomentum transfer, also called q2. q2 = (p_B - p_M)^2
fpff_+(q2).
f0ff_0(q2).

Definition at line 30 of file EvtBCLFF.cc.

31 {
32
33 if (m_numBCLFFCoefficients != 8) {
34 EvtGenReport(EVTGEN_ERROR, "EvtGen") << "Wrong number of arguments for EvtBCLFF::getscalarff!\n";
35 }
36
37 const auto mB = EvtPDL::getMeanMass(parent);
38 const auto mM = EvtPDL::getMeanMass(daughter);
39
40 const auto tplus = (mB + mM) * (mB + mM);
41 const auto tzero = (mB + mM) * (std::sqrt(mB) - std::sqrt(mM)) * (std::sqrt(mB) - std::sqrt(mM));
42
43 const auto mR2 = m_resonance1Minus * m_resonance1Minus;
44 const auto pole = 1 / (1 - t / mR2);
45
46 const std::vector<double> bplus = {m_BCLFFCoefficients[0], m_BCLFFCoefficients[1], m_BCLFFCoefficients[2], m_BCLFFCoefficients[3]};
47 const std::vector<double> bzero = {m_BCLFFCoefficients[4], m_BCLFFCoefficients[5], m_BCLFFCoefficients[6], m_BCLFFCoefficients[7]};
48
49 const auto N_fpf = bplus.size();
50 const auto N_f0f = bzero.size();
51
52 auto z = [tplus, tzero](decltype(t) q2) {
53 const auto term1 = std::sqrt(tplus - q2);
54 const auto term2 = std::sqrt(tplus - tzero);
55 return (term1 - term2) / (term1 + term2);
56 };
57
58 double sum_fpf = 0;
59 for (unsigned int n = 0; n < N_fpf; ++n) {
60 sum_fpf += bplus[n] * (std::pow(z(t), n) - std::pow(-1, n - N_fpf) * n / N_fpf * std::pow(z(t), N_fpf));
61 }
62 *fpf = pole * sum_fpf;
63
64 double sum_f0f = 0;
65 for (unsigned int n = 0; n < N_f0f; ++n) {
66 sum_f0f += bzero[n] * std::pow(z(t), n);
67 }
68 *f0f = sum_f0f;
69 }

◆ getScaleFactor()

double getScaleFactor ( const std::vector< ROOT::Math::PxPyPzMVector > & ps,
double EcmsTarget )
inline

Find approximative value of the momentum scaling factor which makes the total energy of the particles provided in the vector ps equal to EcmsTarget.

Definition at line 44 of file scaleParticleEnergies.h.

45 {
46 double s = 0;
47 for (auto p : ps)
48 s += pow(p.P(), 2) / (2 * p.E());
49
50 double dE = getTotalEnergy(ps) - EcmsTarget;
51 double L = dE / s;
52
53 return sqrt(1 - L);
54 }
double getTotalEnergy(const std::vector< ROOT::Math::PxPyPzMVector > &ps)
Main function scaleParticleEnergies in this header scales momenta in CMS of all particles in the fina...

◆ gettensorff()

void gettensorff ( EvtId parent,
EvtId daughter,
double t,
double ,
double * hf,
double * kf,
double * bp,
double * bm )

Not Implemented.

Definition at line 134 of file EvtBCLFF.cc.

135 {
136 B2FATAL("Not implemented :gettensorff in EvtBCLFF.");
137 }

◆ getTotalEnergy()

double getTotalEnergy ( const std::vector< ROOT::Math::PxPyPzMVector > & ps)
inline

Main function scaleParticleEnergies in this header scales momenta in CMS of all particles in the final state by a constant factor such that the overall collision energy is slightly changed.

It is used for MC generators which do not provide option to generate events with smeared energy of initial particles. There is an assumption that matrix element of the process does not change much when Ecms is varied by 5MeV/10580MeV = 0.05% (typical Ecms smearing at Belle II). This is typically the case if the cross section does not have the resonance peak around collision energy. Get total energy of all particles in the provided vector

Definition at line 34 of file scaleParticleEnergies.h.

35 {
36 double eTot = 0;
37 for (auto p : ps)
38 eTot += p.E();
39 return eTot;
40 }

◆ getvectorff()

void getvectorff ( EvtId parent,
EvtId daughter,
double t,
double ,
double * a1f,
double * a2f,
double * vf,
double * a0f )

Vector FF's.

Implementation follows arXiv:1503.05534v3. It is assumed that each expansion has three terms (hardcoded). However, this can be easily expanded or generalized. It is not done, because this way we can check if the number of arguments in the decay file is the correct one.

For the vector FF, the arglist in the constructor should contain 11 expansion parameters: A0_1, A0_2, A1_0, A1_1, A1_2, A12_0, A12_1, A12_2, V_0, V_1, V_2 Nota bene: A0_0 is correlated to A12_0.

Parameters
parent
daughter
tMomentum transfer, also called q2. q2 = (p_B - p_M)^2
a1fA1(q2)
a2fA2(q2)
vfV(q2)
a0fA0(q2)

Definition at line 71 of file EvtBCLFF.cc.

72 {
73
74 if (m_numBCLFFCoefficients != 11) {
75 EvtGenReport(EVTGEN_ERROR, "EvtGen") << "Wrong number of arguments for EvtBCLFF::getvectorff!\n";
76 }
77
78 const auto mB = EvtPDL::getMeanMass(parent);
79 const auto mB2 = mB * mB;
80 const auto mM = EvtPDL::getMeanMass(daughter);
81 const auto mM2 = mM * mM;
82
83 const auto tplus = (mB + mM) * (mB + mM);
84 const auto tminus = (mB - mM) * (mB - mM);
85 const auto tzero = tplus * (1 - std::sqrt(1 - tminus / tplus));
86
87 const auto mR2A0 = m_resonance0Minus * m_resonance0Minus;
88 const auto mR2A1 = m_resonance1Plus * m_resonance1Plus;
89 const auto mR2A12 = m_resonance1Plus * m_resonance1Plus;
90 const auto mR2V = m_resonance1Minus * m_resonance1Minus;
91
92 const auto poleA0 = 1. / (1 - t / mR2A0);
93 const auto poleA1 = 1. / (1 - t / mR2A1);
94 const auto poleA12 = 1. / (1 - t / mR2A12);
95 const auto poleV = 1. / (1 - t / mR2V);
96
97 const std::vector<double> A0 = {8 * mB* mM / (mB2 - mM2)* m_BCLFFCoefficients[5], m_BCLFFCoefficients[0], m_BCLFFCoefficients[1]};
98 const std::vector<double> A1 = {m_BCLFFCoefficients[2], m_BCLFFCoefficients[3], m_BCLFFCoefficients[4]};
99 const std::vector<double> A12 = {m_BCLFFCoefficients[5], m_BCLFFCoefficients[6], m_BCLFFCoefficients[7]};
100 const std::vector<double> V = {m_BCLFFCoefficients[8], m_BCLFFCoefficients[9], m_BCLFFCoefficients[10]};
101
102 auto z = [tplus, tzero](decltype(t) q2) {
103 const auto term1 = std::sqrt(tplus - q2);
104 const auto term2 = std::sqrt(tplus - tzero);
105 return (term1 - term2) / (term1 + term2);
106 };
107
108 auto sum = [&z](decltype(t) q2, std::vector<double> par) {
109 double tot = 0;
110 for (unsigned int n = 0; n < par.size(); ++n) {
111 tot += par[n] * std::pow(z(q2) - z(0), n);
112 }
113 return tot;
114 };
115
116 auto kaellen = [mB, mM](decltype(t) q2) {
117 return ((mB + mM) * (mB + mM) - q2) * ((mB - mM) * (mB - mM) - q2);
118 };
119
120 const auto ffA0 = poleA0 * sum(t, A0);
121 const auto ffA1 = poleA1 * sum(t, A1);
122 const auto ffA12 = poleA12 * sum(t, A12);
123 const auto ffV = poleV * sum(t, V);
124
125 const auto ffA2 = ((mB + mM) * (mB + mM) * (mB2 - mM2 - t) * ffA1 - (16 * mB * mM2 * (mB + mM)) * ffA12) / kaellen(t);
126
127 *a0f = ffA0;
128 *a1f = ffA1;
129 *a2f = ffA2;
130 *vf = ffV;
131
132 }

◆ getVertexConditional()

ROOT::Math::XYZVector getVertexConditional ( )

Generate vertex position and possibly update the generator of Lorentz transformation.

Definition at line 176 of file InitialParticleGeneration.cc.

177 {
178 if (!m_event) {
179 m_event.create();
180 }
181 if (!m_beamParams.isValid()) {
182 B2FATAL("Cannot generate beam without valid BeamParameters");
183 }
184 if (m_beamParams.hasChanged()) {
185 m_generateLorentzTransformation = initConditionalGenerator(m_beamParams->getHER(), m_beamParams->getLER(),
186 m_beamParams->getCovHER(), m_beamParams->getCovLER());
187 m_generateVertex.reset();
188 }
189 m_event->setGenerationFlags(m_beamParams->getGenerationFlags() & m_allowedFlags);
190 ROOT::Math::XYZVector vtx = generateVertex(m_beamParams->getVertex(), m_beamParams->getCovVertex(), m_generateVertex);
191
192 //TODO is m_event of type MCInitialParticles important?
193 //Eigen::VectorXd collSys = m_generateLorentzTransformation.generate(Ecms);
194 //m_event->set(her, ler, vtx);
195 //m_event->setByLorentzTransformation(collSys[0], collSys[1], collSys[2], collSys[3], collSys[4], collSys[5], vtx);
196
197 return vtx;
198 }

◆ gmunu_tilde()

EvtTensor4C gmunu_tilde ( const EvtVector4R & p4a,
const EvtVector4R & p4b,
const EvtVector4R & p4c )

Function Tensor gmunu.

Definition at line 409 of file EvtB0toKsKK.cc.

412 {
413 const double s = (p4a + p4b + p4c) * (p4a + p4b + p4c);
414
415 const EvtVector4R umu = (p4a + p4b + p4c) / sqrt(s);
416
417 const EvtTensor4C gmunu_tilde =
418 EvtTensor4C::g() - EvtGenFunctions::directProd(umu, umu);
419
420 return gmunu_tilde;
421 }

◆ GS()

std::complex< double > GS ( double mx2,
double mr,
double wr,
double m1_2,
double m2_2,
double r,
int l )
private

Definition at line 594 of file EvtD0Topippim2pi0.cc.

595 {
596
597 double mr2 = mr * mr;
598 double q = fundecaymomentum(mx2, m1_2, m2_2);
599 double q0 = fundecaymomentum(mr2, m1_2, m2_2);
600 double numer = 1.0 + d(mr, q0) * wr / mr;
601 double denom_real = mr2 - mx2 + wr * f(mr, mx2, q0, q);
602 double denom_imag = mr * wr * wid(mr, mx2, m1_2, m2_2, r, l); //real-i*imag;
603
604 double denom = denom_real * denom_real + denom_imag * denom_imag;
605 double output_x = denom_real * numer / denom;
606 double output_y = denom_imag * numer / denom;
607
608 std::complex<double> output(output_x, output_y);
609 return output;
610 }

◆ h() [1/7]

double h ( const double m,
const double q ) const
private

h function in Gounaris-Sakurai lineshape

Definition at line 735 of file EvtD0ToKpipi0pi0.cc.

736 {
737 double h(0.);
738 h = 2 / pi * q / m * log((m + 2 * q) / (2 * mpi));
739 return h;
740 }

◆ h() [2/7]

double h ( const double m,
const double q ) const
private

h function in Gounaris-Sakurai lineshape

Definition at line 662 of file EvtD0ToKpipipi.cc.

663 {
664 double h(0.);
665 h = 2 / pi * q / m * log((m + 2 * q) / (2 * mpi));
666 return h;
667 }

◆ h() [3/7]

double h ( double m,
double q )
private

Definition at line 331 of file EvtD0TopipiEta.cc.

332 {
333 double h(0.);
334 h = 2 / pi * q / m * log((m + 2 * q) / (2 * mpi));
335 return h;
336 }

◆ h() [4/7]

double h ( double m,
double q )
private

Definition at line 531 of file EvtD0Topippim2pi0.cc.

532 {
533 double h = 2.0 / math_pi * q / m * log((m + 2.0 * q) / (2.0 * mass_Pion));
534 return h;
535 }

◆ h() [5/7]

double h ( double m,
double q )
private

Definition at line 588 of file EvtDsToKKpi.cc.

589 {
590 double h = 2 / math_pi * q / m * log((m + 2 * q) / (2 * mass_Pion));
591 return h;
592 }

◆ h() [6/7]

double h ( const double m,
const double q ) const
private

h function in Gounaris-Sakurai lineshape

Definition at line 517 of file EvtDToKSpipipi.cc.

518 {
519 double h(0.);
520 h = 2 / pi * q / m * log((m + 2 * q) / (2 * mpi));
521 return h;
522 }

◆ h() [7/7]

double h ( double m,
double q )
private

Definition at line 307 of file EvtDTopipi0Eta.cc.

308 {
309 double h = 2.0 / pi * q / m * log((m + 2 * q) / (0.13957 + 0.134976));
310 return h;
311 }

◆ hA1()

double hA1 ( double w) const

HQET D* axial vector form factor h_{A1}(w).

Definition at line 368 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

369 {
370 return ffA1(w);
371 }

◆ hA2()

double hA2 ( double w) const

HQET D* axial vector form factor h_{A2}(w).

Definition at line 380 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

381 {
382 return (ffR2(w) - ffR3(w)) * ffA1(w) / (2 * r(1));
383 }

◆ hA3()

double hA3 ( double w) const

HQET D* axial vector form factor h_{A3}(w).

Definition at line 386 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

387 {
388 return (ffR2(w) + ffR3(w)) * ffA1(w) / 2;
389 }

◆ HadS1()

double HadS1 ( int Dhel,
double w ) const

The function to calculate the Hadronic Amplitudes of scalar (S+P) type contribution.

Parameters
Dhelhelicity of the daughter D(*) meson {+1,0,1} for D* and 2 for D.
wvelocity transfer variable.
Returns
calculated amplitude value.

Definition at line 243 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

244 {
245 // sanity check
246 assert(chkDhel(Dhel));
247
248 if (Dhel == 2) return m_mB * sqrt(r(2)) * (w + 1) * hS(w);
249 if (Dhel == 0) return -m_mB * sqrt(r(0)) * sqrt(w * w - 1) * hP(w);
250 return 0.;
251
252 }

◆ HadS2()

double HadS2 ( int Dhel,
double w ) const

The function to calculate the Hadronic Amplitudes of scalar (S-P) type contribution.

Parameters
Dhelhelicity of the daughter D(*) meson {+1,0,1} for D* and 2 for D.
wvelocity transfer variable.
Returns
calculated amplitude value.

Definition at line 255 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

256 {
257 // sanity check
258 assert(chkDhel(Dhel));
259
260 if (Dhel == 2) return HadS1(2, w);
261 else return -HadS1(Dhel, w);
262 }

◆ HadT()

double HadT ( int Dhel,
int whel1,
int whel2,
double w ) const

The function to calculate the Hadronic Amplitudes of tensor type contribution.

Parameters
Dhelhelicity of the daughter D(*) meson {+1,0,1} for D* and 2 for D.
whel1helicity of the one virtual vector boson {+1,0,1,2}.
whel2helicity of the another virtual vector boson {+1,0,1,2}.
wvelocity transfer variable.
Returns
calculated amplitude value. The tensor contribution is described by two vector contributions.

Definition at line 265 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

266 {
267 // sanity check
268 assert(chkDhel(Dhel) && chkwhel(whel1) && chkwhel(whel2));
269
270 if (whel1 == whel2)return 0.;
271 if (whel1 > whel2)return -HadT(Dhel, whel2, whel1, w);
272
273 const double r0 = r(Dhel);
274 if (Dhel == 2 && whel1 == -1 && whel2 == +1)return m_mB * sqrt(r(2)) * sqrt(w * w - 1) * hT(w);
275 if (Dhel == 2 && whel1 == 0 && whel2 == 2) return -HadT(2, -1, +1, w);
276 if (Dhel == -1 && whel1 == -1 && whel2 == 0)
277 return -m_mB * sqrt(r0 / qh2(-1, w)) * (1 - r0 * (w + sqrt(w * w - 1))) *
278 (hT1(w) + hT2(w) + (w - sqrt(w * w - 1)) * (hT1(w) - hT2(w)));
279 if (Dhel == -1 && whel1 == -1 && whel2 == 2) return -HadT(-1, -1, 0, w);
280 if (Dhel == 0 && whel1 == -1 && whel2 == +1)
281 return m_mB * sqrt(r0) * ((w + 1) * hT1(w) + (w - 1) * hT2(w) + 2 * (w * w - 1) * hT3(w));
282 if (Dhel == 0 && whel1 == 0 && whel2 == 2) return -HadT(0, -1, +1, w);
283 if (Dhel == +1 && whel1 == 0 && whel2 == +1)
284 return -m_mB * sqrt(r0 / qh2(+1, w)) * (1 - r0 * (w - sqrt(w * w - 1))) *
285 (hT1(w) + hT2(w) + (w + sqrt(w * w - 1)) * (hT1(w) - hT2(w)));
286
287 if (Dhel == +1 && whel1 == +1 && whel2 == 2) return -HadT(+1, 0, +1, w);
288
289 // other cases
290 return 0.;
291 }

◆ HadV1()

double HadV1 ( int Dhel,
int whel,
double w ) const

The function to calculate the Hadronic Amplitudes of left handed (V-A) type contribution.

Parameters
Dhelhelicity of the daughter D(*) meson {+1,0,1} for D* and 2 for D.
whelhelicity of the virtual vector boson {+1,0,1,2}.
wvelocity transfer variable.
Returns
calculated amplitude value.

Definition at line 198 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

199 {
200 // sanity check
201 assert(chkDhel(Dhel) && chkwhel(whel));
202
203 const double r0 = r(Dhel);
204 if (Dhel == 2 && whel == 0) {
205 return m_mB * sqrt(r0 * (w * w - 1.) / qh2(2, w)) * ((1 + r0) * hp(w) - (1 - r0) * hm(w));
206 }
207 if (Dhel == 2 && whel == 2) {
208 return m_mB * sqrt(r0 / qh2(2, w)) * ((1 - r0) * (w + 1) * hp(w) - (1 + r0) * (w - 1) * hm(w));
209 }
210 if (Dhel == +1 && whel == +1) {
211 return m_mB * sqrt(r0) * ((w + 1) * hA1(w) - sqrt(w * w - 1) * hV(w));
212 }
213 if (Dhel == -1 && whel == -1) {
214 return m_mB * sqrt(r0) * ((w + 1) * hA1(w) + sqrt(w * w - 1) * hV(w));
215 }
216 if (Dhel == 0 && whel == 0) {
217 return m_mB * sqrt(r0 / qh2(0, w)) * (w + 1) *
218 (-(w - r0) * hA1(w) + (w - 1) * (r0 * hA2(w) + hA3(w)));
219 }
220 if (Dhel == 0 && whel == 2) {
221 return m_mB * sqrt(r0 * (w * w - 1) / qh2(0, w)) * (-(w + 1) * hA1(w) + (1 - r0 * w) * hA2(w) + (w - r0) * hA3(w));
222 }
223
224 // other cases
225 return 0.;
226
227 }

◆ HadV2()

double HadV2 ( int Dhel,
int whel,
double w ) const

The function to calculate the Hadronic Amplitudes of right handed (V+A) type contribution.

Parameters
Dhelhelicity of the daughter D(*) meson {+1,0,1} for D* and 2 for D.
whelhelicity of the virtual vector boson {+1,0,1,2}.
wvelocity transfer variable.
Returns
calculated amplitude value.

Definition at line 230 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

231 {
232 // sanity check
233 assert(chkDhel(Dhel) && chkwhel(whel));
234
235 if (Dhel == 2) return HadV1(2, whel, w);
236 if (Dhel == +1 && whel == +1)return -HadV1(-1, -1, w);
237 if (Dhel == -1 && whel == -1)return -HadV1(+1, +1, w);
238 if (Dhel == 0) return -HadV1(0, whel, w);
239 return 0;
240 }

◆ helAmp() [1/2]

EvtComplex helAmp ( const EvtComplex & CV1,
const EvtComplex & CV2,
const EvtComplex & CS1,
const EvtComplex & CS2,
const EvtComplex & CT,
double mtau,
int tauhel,
int Dhel,
double w,
double costau ) const

The function calculates helicity amplitudes with given Wilson coefficients.

Parameters
CV1Wilson coefficient of the left handed vector type NP contribution.
CV2Wilson coefficient of the right handed vector type NP contribution.
CS1Wilson coefficient of the scalar (S+P) type NP contribution.
CS2Wilson coefficient of the scalar (S-P) type NP contribution.
CTWilson coefficient of the tensor type NP contribution.
mtaudaughter lepton mass.
tauhelhelicity of the lepton in the (l+nu) rest frame {+1,-1}.
Dhelhelicity of the D(*) meson in the rest frame of the parent meson {+1,0,-1} for D* and 2 for D.
wvelocity transfer variable.
costaucosine of the angle between D(*) meson and the lepton in the (l+nu) rest frame. The overall factor GF/sqrt(2) Vcb omitted because it does not change the distribution.

Definition at line 109 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

112 {
113 // sanity check
114 assert(chktauhel(tauhel) && chkDhel(Dhel));
115
116 return //(GF/sqrt(2))*Vcb* // <-- constants which does not affect the distribution omitted
117 (1.*helampSM(mtau, tauhel, Dhel, w, costau)
118 + CV1 * helampV1(mtau, tauhel, Dhel, w, costau)
119 + CV2 * helampV2(mtau, tauhel, Dhel, w, costau)
120 + CS1 * helampS1(mtau, tauhel, Dhel, w, costau)
121 + CS2 * helampS2(mtau, tauhel, Dhel, w, costau)
122 + CT * helampT(mtau, tauhel, Dhel, w, costau));
123 }

◆ helAmp() [2/2]

EvtComplex helAmp ( double mtau,
int tauhel,
int Dhel,
double w,
double costau ) const

The function calculates the helicity amplitude.

Parameters
mtaudaughter lepton mass.
tauhelhelicity of the lepton in the (l+nu) rest frame {+1,-1}.
Dhelhelicity of the D(*) meson in the rest frame of the parent meson {+1,0,-1} for D* and 2 for D.
wvelocity transfer variable.
costaucosine of the angle between D(*) meson and the lepton in the (l+nu) rest frame. The overall factor GF/sqrt(2) Vcb omitted because it does not change the distribution.

Definition at line 102 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

103 {
104 return helAmp(m_CV1, m_CV2, m_CS1, m_CS2, m_CT,
105 mtau, tauhel, Dhel, w, costau);
106 }

◆ helampS1()

double helampS1 ( double mtau,
int tauhel,
int Dhel,
double w,
double costau ) const

Helicity Amplitudes of scalar (S+P) type contribution.

Parameters
mtaudaughter lepton mass.
tauhelhelicity of the lepton in the (l+nu) rest frame {+1,-1}.
Dhelhelicity of the D(*) meson in the rest frame of the parent meson {+1,0,-1} for D* and 2 for D.
wvelocity transfer variable.
costaucosine of the angle between D(*) meson and the lepton in the (l+nu) rest frame.
Returns
calculated amplitude value. Overall factor GF/sqrt(2) Vcb omitted. Wilson coefficients CXX omitted.

Definition at line 326 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

327 {
328 return -Lep(mtau, tauhel, q2(Dhel, w), costau) * HadS1(Dhel, w);
329 }

◆ helampS2()

double helampS2 ( double mtau,
int tauhel,
int Dhel,
double w,
double costau ) const

Helicity Amplitudes of scalar (S-P) type contribution.

Parameters
mtaudaughter lepton mass.
tauhelhelicity of the lepton in the (l+nu) rest frame {+1,-1}.
Dhelhelicity of the D(*) meson in the rest frame of the parent meson {+1,0,-1} for D* and 2 for D.
wvelocity transfer variable.
costaucosine of the angle between D(*) meson and the lepton in the (l+nu) rest frame.
Returns
calculated amplitude value. Overall factor GF/sqrt(2) Vcb omitted. Wilson coefficients CXX omitted.

Definition at line 332 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

333 {
334 return -Lep(mtau, tauhel, q2(Dhel, w), costau) * HadS2(Dhel, w);
335 }

◆ helampSM()

double helampSM ( double mtau,
int tauhel,
int Dhel,
double w,
double costau ) const

Helicity Amplitudes of SM (left handed) contribution.

Parameters
mtaudaughter lepton mass.
tauhelhelicity of the lepton in the (l+nu) rest frame {+1,-1}.
Dhelhelicity of the D(*) meson in the rest frame of the parent meson {+1,0,-1} for D* and 2 for D.
wvelocity transfer variable.
costaucosine of the angle between D(*) meson and the lepton in the (l+nu) rest frame. Overall factor GF/sqrt(2) Vcb omitted. Wilson coefficients CXX omitted.

Definition at line 298 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

299 {
300 double amp(0.);
301 for (int whel = -1; whel <= 2; whel++) {
302 amp += eta(whel) * Lep(mtau, tauhel, whel, q2(Dhel, w), costau)
303 * HadV1(Dhel, whel, w);
304 }
305 return amp;
306 }

◆ helampT()

double helampT ( double mtau,
int tauhel,
int Dhel,
double w,
double costau ) const

Helicity Amplitudes of tensor type contribution.

Parameters
mtaudaughter lepton mass.
tauhelhelicity of the lepton in the (l+nu) rest frame {+1,-1}.
Dhelhelicity of the D(*) meson in the rest frame of the parent meson {+1,0,-1} for D* and 2 for D.
wvelocity transfer variable.
costaucosine of the angle between D(*) meson and the lepton in the (l+nu) rest frame.
Returns
calculated amplitude value. Overall factor GF/sqrt(2) Vcb omitted. Wilson coefficients CXX omitted.

Definition at line 338 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

339 {
340 double amp(0.);
341 for (int whel1 = -1; whel1 <= 2; whel1++) {
342 for (int whel2 = -1; whel2 <= 2; whel2++) {
343 amp += -1 * eta(whel1) * eta(whel2) * Lep(mtau, tauhel, whel1, whel2, q2(Dhel, w), costau)
344 * HadT(Dhel, whel1, whel2, w);
345 }
346 }
347 return amp;
348 }

◆ helampV1()

double helampV1 ( double mtau,
int tauhel,
int Dhel,
double w,
double costau ) const

Helicity Amplitudes of left handed (V-A) contribution.

Parameters
mtaudaughter lepton mass.
tauhelhelicity of the lepton in the (l+nu) rest frame {+1,-1}.
Dhelhelicity of the D(*) meson in the rest frame of the parent meson {+1,0,-1} for D* and 2 for D.
wvelocity transfer variable.
costaucosine of the angle between D(*) meson and the lepton in the (l+nu) rest frame.
Returns
calculated amplitude value. Overall factor GF/sqrt(2) Vcb omitted. Wilson coefficients CXX omitted.

Definition at line 309 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

310 {
311 return helampSM(mtau, tauhel, Dhel, w, costau);
312 }

◆ helampV2()

double helampV2 ( double mtau,
int tauhel,
int Dhel,
double w,
double costau ) const

Helicity Amplitudes of right handed (V+A) contribution.

Parameters
mtaudaughter lepton mass.
tauhelhelicity of the lepton in the (l+nu) rest frame {+1,-1}.
Dhelhelicity of the D(*) meson in the rest frame of the parent meson {+1,0,-1} for D* and 2 for D.
wvelocity transfer variable.
costaucosine of the angle between D(*) meson and the lepton in the (l+nu) rest frame.
Returns
calculated amplitude value. Overall factor GF/sqrt(2) Vcb omitted. Wilson coefficients CXX omitted.

Definition at line 315 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

316 {
317 double amp(0.);
318 for (int whel = -1; whel <= 2; whel++) {
319 amp += eta(whel) * Lep(mtau, tauhel, whel, q2(Dhel, w), costau)
320 * HadV2(Dhel, whel, w);
321 }
322 return amp;
323 }

◆ hm()

double hm ( double w) const

HQET D vector form factor h_-(w).

Definition at line 362 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

363 {
364 return - (1 - r(2) * r(2)) * (w + 1) * (ffV1(w) - ffS1(w)) / (2 * qh2(2, w));
365 }

◆ hP()

double hP ( double w) const

D* pseudo scalar form factor h_P(w) in terms of axial vector form factors.

Definition at line 405 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

406 {
407 // M. Tanaka, private communication, without approximating quark masses to the meson mass
408 const double r0 = r(1);
409 return m_mB / m_mBottom * ((w + 1) * hA1(w) - (1 - r0 * w) * hA2(w) - (w - r0) * hA3(w)) / (1 + rq());
410
411 // when quark masses are approximated to the meson masses
412 //return ( (w+1) * hA1(w) - (1-r0*w) * hA2(w) - (w-r0) * hA3(w) ) / (1+r0); // no Lambda/mQ
413 }

◆ hp()

double hp ( double w) const

HQET D vector form factor h_+(w).

Definition at line 355 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

356 {
357 const double r0 = r(2);
358 return -((1 + r0) * (1 + r0) * (w - 1) * ffV1(w)
359 - (1 - r0) * (1 - r0) * (w + 1) * ffS1(w)) / (2 * qh2(2, w));
360 }

◆ hS()

double hS ( double w) const

D scalar form factor h_S(w) in terms of vector form factors.

Definition at line 393 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

394 {
395 // M. Tanaka, private communication, without approximating quark masses to the meson mass
396 const double r0 = r(2);
397 return m_mB / m_mBottom * ((1 - r0) / (1 - rq()) * hp(w)
398 - (1 + r0) / (1 - rq()) * (w - 1) / (w + 1) * hm(w));
399
400 // when quark masses are approximated to the meson masses
401 //return ffS1(w);
402 }

◆ hT()

double hT ( double w) const

D tensor form factor h_T(w) in terms of vector form factors.

Definition at line 417 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

418 {
419 const double r0 = r(2);
420 return hp(w) - (1 + r0) * hm(w) / (1 - r0);
421 }

◆ hT1()

double hT1 ( double w) const

D* tensor form factor h_{T1}(w) in terms of axial vector form factors.

Definition at line 424 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

425 {
426 const double r0 = r(1);
427 return -((1 + r0) * (1 + r0) * (w - 1) * hV(w)
428 - (1 - r0) * (1 - r0) * (w + 1) * hA1(w))
429 / (2 * qh2(1, w));
430 }

◆ hT2()

double hT2 ( double w) const

D* tensor form factor h_{T2}(w).

Definition at line 433 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

434 {
435 const double r0 = r(1);
436 return -(1 - r0 * r0) * (w + 1) * (hV(w) - hA1(w))
437 / (2 * qh2(1, w));
438 }

◆ hT3()

double hT3 ( double w) const

D* tensor form factor h_{T3}(w).

Definition at line 441 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

442 {
443 const double r0 = r(1);
444 return ((1 + r0) * (1 + r0) * hV(w) - 2 * r0 * (w + 1) * hA1(w)
445 + qh2(1, w) * (r0 * hA2(w) - hA3(w)))
446 / (2 * qh2(1, w) * (1 + r0));
447 }

◆ hV()

double hV ( double w) const

HQET D* axial vector form factor h_V(w).

Definition at line 374 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

375 {
376 return ffR1(w) * ffA1(w);
377 }

◆ IMTX()

std::complex< double > IMTX ( int i,
int j )
private

Definition at line 1219 of file EvtD0Topippim2pi0.cc.

1220 {
1221
1222 double Iijx;
1223 double Iijy;
1224 if (i == j) {
1225 Iijx = 1;
1226 Iijy = 0;
1227 } else {
1228 Iijx = 0;
1229 Iijy = 0;
1230 }
1231 std::complex<double> Iij(Iijx, Iijy);
1232 return Iij;
1233
1234 }

◆ init() [1/24]

void init ( )

Initializes the generator.

Definition at line 38 of file CRY.cc.

39 {
40 std::stringstream setupString;
41 setupString << " returnGammas " << m_returnGammas << std::endl;
42 setupString << " returnKaons " << m_returnKaons << std::endl;
43 setupString << " returnPions " << m_returnPions << std::endl;
44 setupString << " returnProtons " << m_returnProtons << std::endl;
45 setupString << " returnNeutrons " << m_returnNeutrons << std::endl;
46 setupString << " returnElectrons " << m_returnElectrons << std::endl;
47 setupString << " returnMuons " << m_returnMuons << std::endl;
48 setupString << " date " << m_date << std::endl;
49 setupString << " latitude " << 36.0 << std::endl;
50 setupString << " altitude " << 0 << std::endl;
51 setupString << " subboxLength " << m_subboxLength << std::endl;
52
53 IOIntercept::OutputToLogMessages initLogCapture("CRY", LogConfig::c_Debug, LogConfig::c_Warning, 100, 100);
54 initLogCapture.start();
55
56 // CRY setup
57 m_crySetup.reset(new CRYSetup(setupString.str(), m_cosmicDataDir));
58 // Set the random generator to the setup
59 m_crySetup->setRandomFunction([]()->double { return gRandom->Rndm(); });
60 // Set up the generator
61 m_cryGenerator.reset(new CRYGenerator(m_crySetup.get()));
62
63 initLogCapture.finish();
64
65 // set up the acceptance box
66 const auto coords = m_acceptSize.size();
67 if (coords == 1) {
68 m_acceptance.reset(new vecgeom::UnplacedOrb(m_acceptSize[0]));
69 } else if (coords == 2) {
70 m_acceptance.reset(new vecgeom::SUnplacedTube<vecgeom::TubeTypes::NonHollowTube>(0, m_acceptSize[0], m_acceptSize[1], 0, 2 * M_PI));
71 } else if (coords == 3) {
72 m_acceptance.reset(new vecgeom::UnplacedBox(m_acceptSize[0], m_acceptSize[1], m_acceptSize[2]));
73 } else {
74 B2FATAL("Acceptance volume needs to have one, two or three values for sphere, cylinder and box respectively");
75 }
76 //get information from geometry and create the world box
77 G4VPhysicalVolume* volume = geometry::GeometryManager::getInstance().getTopVolume();
78 if (!volume) {
79 B2FATAL("No geometry found -> Add the Geometry module to the path before the CRY module.");
80 }
81 G4Box* topbox = (G4Box*) volume->GetLogicalVolume()->GetSolid();
82 if (!topbox) {
83 B2FATAL("No G4Box found -> Check the logical volume of the geometry.");
84 }
85
86 // Wrap the world coordinates (G4 coordinates are mm, Belle 2 units are currently cm)
87 double halfLength_x = topbox->GetXHalfLength() * Belle2::Unit::mm;
88 double halfLength_y = topbox->GetYHalfLength() * Belle2::Unit::mm;
89 double halfLength_z = topbox->GetZHalfLength() * Belle2::Unit::mm;
90
91 // m_world.reset(new vecgeom::UnplacedBox(m_subboxLength / 2. * Unit::m, m_subboxLength / 2. * Unit::m,
92 // m_subboxLength / 2. * Unit::m));
93 m_world.reset(new vecgeom::UnplacedBox(halfLength_x / Unit::cm, halfLength_y / Unit::cm,
94 halfLength_z / Unit::cm));
95 B2INFO("World size [" << halfLength_x / Unit::cm << ", " << halfLength_x / Unit::cm << ", " << halfLength_x / Unit::cm << "]");
96
97 const double maxSize = *std::max_element(m_acceptSize.begin(), m_acceptSize.end());
98 const double minWorld = std::min({halfLength_x, halfLength_y, halfLength_z, });
99 if (maxSize > (minWorld / Unit::cm)) {
100 B2FATAL("Acceptance bigger than world volume " << LogVar("acceptance", maxSize)
101 << LogVar("World size", minWorld / Unit::cm));
102 }
103
104 }
static const double mm
[millimeters]
Definition Unit.h:70

◆ init() [2/24]

void init ( )

Initialize standard stream objects.

Definition at line 41 of file EvtB0toKsKK.cc.

42 {
43 // Check number of arguments
44 checkNArg(32);
45
46 // Check number of daughters
47 checkNDaug(3);
48
49 // Check decay chain
50 if ((getParentId() != EvtPDL::getId("B0") &&
51 getParentId() != EvtPDL::getId("anti-B0")) ||
52 (getDaug(0) != EvtPDL::getId("K_S0")) ||
53 (getDaug(1) != EvtPDL::getId("K+") &&
54 getDaug(1) != EvtPDL::getId("K-")) ||
55 (getDaug(2) != EvtPDL::getId("K+") &&
56 getDaug(2) != EvtPDL::getId("K-"))) {
57 std::cout << "ERROR: Invalid decay" << std::endl;
58 std::cout << "USAGE: K_S0 K+ K-" << std::endl;
59 exit(1);
60 }
61
62 a_f0ks_ =
63 (1.0 + getArg(3)) * EvtComplex(getArg(1) * cos(getArg(2) * M_PI / 180.0),
64 getArg(1) * sin(getArg(2) * M_PI / 180.0));
65 a_phiks_ =
66 (1.0 + getArg(7)) * EvtComplex(getArg(5) * cos(getArg(6) * M_PI / 180.0),
67 getArg(5) * sin(getArg(6) * M_PI / 180.0));
68 a_fxks_ =
69 (1.0 + getArg(11)) * EvtComplex(getArg(9) * cos(getArg(10) * M_PI / 180.0),
70 getArg(9) * sin(getArg(10) * M_PI / 180.0));
71 a_chic0ks_ =
72 (1.0 + getArg(15)) * EvtComplex(getArg(13) * cos(getArg(14) * M_PI / 180.0),
73 getArg(13) * sin(getArg(14) * M_PI / 180.0));
74 a_kpkmnr_ =
75 (1.0 + getArg(19)) * EvtComplex(getArg(17) * cos(getArg(18) * M_PI / 180.0),
76 getArg(17) * sin(getArg(18) * M_PI / 180.0));
77 a_kskpnr_ =
78 (1.0 + getArg(24)) * EvtComplex(getArg(22) * cos(getArg(23) * M_PI / 180.0),
79 getArg(22) * sin(getArg(23) * M_PI / 180.0));
80 a_kskmnr_ =
81 (1.0 + getArg(29)) * EvtComplex(getArg(27) * cos(getArg(28) * M_PI / 180.0),
82 getArg(27) * sin(getArg(28) * M_PI / 180.0));
83
84 abar_f0ks_ =
85 (1.0 - getArg(3)) * EvtComplex(getArg(1) * cos(getArg(2) * M_PI / 180.0),
86 getArg(1) * sin(getArg(2) * M_PI / 180.0));
87 abar_phiks_ =
88 (1.0 - getArg(7)) * EvtComplex(getArg(5) * cos(getArg(6) * M_PI / 180.0),
89 getArg(5) * sin(getArg(6) * M_PI / 180.0));
90 abar_fxks_ =
91 (1.0 - getArg(11)) * EvtComplex(getArg(9) * cos(getArg(10) * M_PI / 180.0),
92 getArg(9) * sin(getArg(10) * M_PI / 180.0));
93 abar_chic0ks_ =
94 (1.0 - getArg(15)) * EvtComplex(getArg(13) * cos(getArg(14) * M_PI / 180.0),
95 getArg(13) * sin(getArg(14) * M_PI / 180.0));
96 abar_kpkmnr_ =
97 (1.0 - getArg(19)) * EvtComplex(getArg(17) * cos(getArg(18) * M_PI / 180.0),
98 getArg(17) * sin(getArg(18) * M_PI / 180.0));
99 abar_kskpnr_ =
100 (1.0 - getArg(24)) * EvtComplex(getArg(22) * cos(getArg(23) * M_PI / 180.0),
101 getArg(22) * sin(getArg(23) * M_PI / 180.0));
102 abar_kskmnr_ =
103 (1.0 - getArg(29)) * EvtComplex(getArg(27) * cos(getArg(28) * M_PI / 180.0),
104 getArg(27) * sin(getArg(28) * M_PI / 180.0));
105
106 alpha_kpkmnr = getArg(21);
107 alpha_kskpnr = getArg(26);
108 alpha_kskmnr = getArg(31);
109
110 std::cout << setiosflags(std::ios::left) << std::endl
111 << "B0 Channel " << std::setw(20) << "Relative amplitude" << std::setw(20) << "Relative phase" << std::endl
112 << "f0ks " << std::setw(20) << real(a_f0ks_) << std::setw(20) << imag(a_f0ks_) << std::endl
113 << "phiks " << std::setw(20) << real(a_phiks_) << std::setw(20) << imag(a_phiks_) << std::endl
114 << "fxks " << std::setw(20) << real(a_fxks_) << std::setw(20) << imag(a_fxks_) << std::endl
115 << "chic0ks " << std::setw(20) << real(a_chic0ks_) << std::setw(20) << imag(a_chic0ks_) << std::endl
116 << "kpkmnr " << std::setw(20) << real(a_kpkmnr_) << std::setw(20) << imag(a_kpkmnr_) << std::endl
117 << "kskpnr " << std::setw(20) << real(a_kskpnr_) << std::setw(20) << imag(a_kskpnr_) << std::endl
118 << "kskmnr " << std::setw(20) << real(a_kskmnr_) << std::setw(20) << imag(a_kskmnr_) << std::endl
119 << std::endl;
120
121 std::cout << setiosflags(std::ios::left) << std::endl
122 << "B0B Channel " << std::setw(20) << "Relative amplitude" << std::setw(20) << "Relative phase" << std::endl
123 << "f0ks " << std::setw(20) << real(abar_f0ks_) << std::setw(20) << imag(abar_f0ks_) << std::endl
124 << "phiks " << std::setw(20) << real(abar_phiks_) << std::setw(20) << imag(abar_phiks_) << std::endl
125 << "fxks " << std::setw(20) << real(abar_fxks_) << std::setw(20) << imag(abar_fxks_) << std::endl
126 << "chic0ks " << std::setw(20) << real(abar_chic0ks_) << std::setw(20) << imag(abar_chic0ks_) << std::endl
127 << "kpkmnr " << std::setw(20) << real(abar_kpkmnr_) << std::setw(20) << imag(abar_kpkmnr_) << std::endl
128 << "kskpnr " << std::setw(20) << real(abar_kskpnr_) << std::setw(20) << imag(abar_kskpnr_) << std::endl
129 << "kskmnr " << std::setw(20) << real(abar_kskmnr_) << std::setw(20) << imag(abar_kskmnr_) << std::endl
130 << std::endl;
131
132 // Open debugging file
133 debugfile_.open("debug.dat", std::ios::out);
134 }

◆ init() [3/24]

void init ( )

Initializes module.

Definition at line 72 of file EvtBCL.cc.

73 {
74
75 checkNDaug(3);
76
77 //We expect the parent to be a scalar
78 //and the daughters to be X lepton neutrino
79
80 checkSpinParent(EvtSpinType::SCALAR);
81 checkSpinDaughter(1, EvtSpinType::DIRAC);
82 checkSpinDaughter(2, EvtSpinType::NEUTRINO);
83
84 EvtSpinType::spintype mesontype = EvtPDL::getSpinType(getDaug(0));
85
86 bclmodel = new EvtBCLFF(getNArg(), getArgs());
87
88 if (mesontype == EvtSpinType::SCALAR) {
89 calcamp = new EvtSemiLeptonicScalarAmp;
90 }
91 if (mesontype == EvtSpinType::VECTOR) {
92 calcamp = new EvtSemiLeptonicVectorAmp;
93 }
94 // Tensor Meson implementation is possible here.
95
96 }

◆ init() [4/24]

void init ( )

The function initializes the decay.

The function reads parameters from the decay file and initializes the parameters for the decay amplitude calculator.

Definition at line 78 of file EvtBSemiTauonic2HDMType2.cc.

79 {
80 checkNDaug(3);
81
82 //We expect the parent to be a scalar
83 //and the daughters to be X lepton neutrino
84 checkSpinParent(EvtSpinType::SCALAR);
85
86 checkSpinDaughter(1, EvtSpinType::DIRAC);
87 checkSpinDaughter(2, EvtSpinType::NEUTRINO);
88
89 const double m_tau = EvtPDL::getMeanMass(getDaug(1));
90
91 EvtSpinType::spintype d1type = EvtPDL::getSpinType(getDaug(0));
92
93 if (d1type == EvtSpinType::VECTOR) {
94 B2INFO("EvtBSemiTauonic2HDMType2::init()>> Initializing for decays to a vector type meson ");
95 checkNArg(7, 8);
96
97 const double rhoa12 = getArg(0);
98 const double R11 = getArg(1);
99 const double R21 = getArg(2);
100 const double aR3 = getArg(3);
101
102 const double rho12 = 0; // not used for D*taunu decays
103 const double aS1 = 0; // not used for D*taunu decays
104
105 EvtComplex Coeffs[5];
106
107 const double m_b = getArg(4);
108 const double m_c = getArg(5);
109 const double tanBetaOverMH = getArg(6);
110 B2INFO("tan(beta)/m_H+ = " << tanBetaOverMH);
111
112 Coeffs[0] = 0; // CV1
113 Coeffs[1] = 0; // CV2
114 Coeffs[2] = -m_b * m_tau * tanBetaOverMH * tanBetaOverMH; // CS1
115 Coeffs[3] = 0; // CS2, neglected by default
116 Coeffs[4] = 0; // CT
117
118 if (getNArg() == 8) {
119 // if m_H is explicitly given
120 const double m_H = getArg(7);
121 Coeffs[3] = -m_c * m_tau / m_H / m_H; // CS2
122 }
123
124 m_CalcHelAmp = new EvtBSemiTauonicHelicityAmplitudeCalculator(rho12, rhoa12, R11, R21, aS1, aR3, m_b, m_c,
125 Coeffs[0], Coeffs[1], Coeffs[2], Coeffs[3], Coeffs[4],
126 EvtPDL::getMeanMass(getParentId()),
127 -1, /*dummy for Dmass*/
128 EvtPDL::getMeanMass(getDaug(0)));
129 m_CalcAmp = new EvtBSemiTauonicVectorMesonAmplitude();
130 } else if (d1type == EvtSpinType::SCALAR) {
131 B2INFO("EvtBSemiTauonic2HDMType2::init()>> Initializing for decays to a scalar type meson ");
132 checkNArg(5, 6);
133
134 const double rho12 = getArg(0);
135 const double aS1 = getArg(1);
136
137 const double rhoa12 = 0; // not used for Dtaunu decays
138 const double R11 = 0; // not used for Dtaunu decays
139 const double R21 = 0; // not used for Dtaunu decays
140 const double aR3 = 0; // not used for Dtaunu decays
141
142 EvtComplex Coeffs[5];
143
144 const double m_b = getArg(2);
145 const double m_c = getArg(3);
146 const double tanBetaOverMH = getArg(4);
147 B2INFO("tan(beta)/m_H+ = " << tanBetaOverMH);
148
149 Coeffs[0] = 0; // CV1
150 Coeffs[1] = 0; // CV2
151 Coeffs[2] = -m_b * m_tau * tanBetaOverMH * tanBetaOverMH; // CS1
152 Coeffs[3] = 0; // CS2, neglected by default
153 Coeffs[4] = 0; // CT
154
155 if (getNArg() == 6) {
156 // if m_H is explicitly given
157 const double m_H = getArg(5);
158 Coeffs[3] = -m_c * m_tau / m_H / m_H; // CS2
159 }
160
161 m_CalcHelAmp = new EvtBSemiTauonicHelicityAmplitudeCalculator(rho12, rhoa12, R11, R21, aS1, aR3, m_b, m_c,
162 Coeffs[0], Coeffs[1], Coeffs[2], Coeffs[3], Coeffs[4],
163 EvtPDL::getMeanMass(getParentId()),
164 EvtPDL::getMeanMass(getDaug(0)),
165 -1 /*dummy for D*mass*/);
166 m_CalcAmp = new EvtBSemiTauonicScalarMesonAmplitude();
167 } else {
168 B2ERROR("BSemiTauonic2HDMType2 model handles only scalar and vector meson daughters.");
169// EvtGenReport(EVTGEN_ERROR, "EvtGen") << "BSemiTauonic2HDMType2 model handles only scalar and vector meson daughters."<<std::endl;
170 ::abort();
171 }
172 }

◆ init() [5/24]

void init ( )

The function initializes the decay.

The function reads parameters from the decay file and initializes the parameters for the decay amplitude calculator.

Definition at line 78 of file EvtBSemiTauonic.cc.

79 {
80 checkNDaug(3);
81
82 //We expect the parent to be a scalar
83 //and the daughters to be X lepton neutrino
84 checkSpinParent(EvtSpinType::SCALAR);
85
86 checkSpinDaughter(1, EvtSpinType::DIRAC);
87 checkSpinDaughter(2, EvtSpinType::NEUTRINO);
88
89 EvtSpinType::spintype d1type = EvtPDL::getSpinType(getDaug(0));
90
91 if (d1type == EvtSpinType::VECTOR) {
92 B2INFO("EvtBSemiTauonic::init()>> Initializing for decays to a vector type meson ");
93 checkNArg(16);
94 const double rhoa12 = getArg(0);
95 const double R11 = getArg(1);
96 const double R21 = getArg(2);
97 const double aR3 = getArg(3);
98
99 const double rho12 = 0; // not used for D*taunu decays
100 const double aS1 = 0; // not used for D*taunu decays
101
102 const double m_b = getArg(4);
103 const double m_c = getArg(5);
104
105 EvtComplex Coeffs[5];
106 Coeffs[0] = EvtComplex(getArg(6) * cos(getArg(7)), getArg(6) * sin(getArg(7)));
107 Coeffs[1] = EvtComplex(getArg(8) * cos(getArg(9)), getArg(8) * sin(getArg(9)));
108 Coeffs[2] = EvtComplex(getArg(10) * cos(getArg(11)), getArg(10) * sin(getArg(11)));
109 Coeffs[3] = EvtComplex(getArg(12) * cos(getArg(13)), getArg(12) * sin(getArg(13)));
110 Coeffs[4] = EvtComplex(getArg(14) * cos(getArg(15)), getArg(14) * sin(getArg(15)));
111
112 m_CalcHelAmp = new EvtBSemiTauonicHelicityAmplitudeCalculator(rho12, rhoa12, R11, R21, aS1, aR3, m_b, m_c,
113 Coeffs[0], Coeffs[1], Coeffs[2], Coeffs[3], Coeffs[4],
114 EvtPDL::getMeanMass(getParentId()),
115 -1, /*dummy for Dmass*/
116 EvtPDL::getMeanMass(getDaug(0)));
117 m_CalcAmp = new EvtBSemiTauonicVectorMesonAmplitude();
118 } else if (d1type == EvtSpinType::SCALAR) {
119 B2INFO("EvtBSemiTauonic::init()>> Initializing for decays to a scalar type meson ");
120 checkNArg(14);
121 const double rho12 = getArg(0);
122 const double aS1 = getArg(1);
123
124 const double rhoa12 = 0; // not used for Dtaunu decays
125 const double R11 = 0; // not used for Dtaunu decays
126 const double R21 = 0; // not used for Dtaunu decays
127 const double aR3 = 0; // not used for Dtaunu decays
128
129 const double m_b = getArg(2);
130 const double m_c = getArg(3);
131
132 EvtComplex Coeffs[5];
133 Coeffs[0] = EvtComplex(getArg(4) * cos(getArg(5)), getArg(4) * sin(getArg(5)));
134 Coeffs[1] = EvtComplex(getArg(6) * cos(getArg(7)), getArg(6) * sin(getArg(7)));
135 Coeffs[2] = EvtComplex(getArg(8) * cos(getArg(9)), getArg(8) * sin(getArg(9)));
136 Coeffs[3] = EvtComplex(getArg(10) * cos(getArg(11)), getArg(10) * sin(getArg(11)));
137 Coeffs[4] = EvtComplex(getArg(12) * cos(getArg(13)), getArg(12) * sin(getArg(13)));
138
139 m_CalcHelAmp = new EvtBSemiTauonicHelicityAmplitudeCalculator(rho12, rhoa12, R11, R21, aS1, aR3, m_b, m_c,
140 Coeffs[0], Coeffs[1], Coeffs[2], Coeffs[3], Coeffs[4],
141 EvtPDL::getMeanMass(getParentId()),
142 EvtPDL::getMeanMass(getDaug(0)),
143 -1 /*dummy for D*mass*/);
144 m_CalcAmp = new EvtBSemiTauonicScalarMesonAmplitude();
145 } else {
146 B2ERROR("BSemiTauonic model handles only scalar and vector meson daughters.");
147// EvtGenReport(EVTGEN_ERROR, "EvtGen") << "BSemiTauonic model handles only scalar and vector meson daughters." << std::endl;
148 ::abort();
149 }
150 }

◆ init() [6/24]

void init ( )

The function for an initialization.

Definition at line 167 of file EvtBtoXsnunu_FERMI.cc.

168 {
169
170 // check that there are no arguments
171
172 checkNArg(0, 3, 4, 6);
173
174 checkNDaug(3);
175
176 // Check that the two leptons are the same type
177
178 EvtId lepton1type = getDaug(1);
179 EvtId lepton2type = getDaug(2);
180
181 int etyp = 0;
182 int mutyp = 0;
183 int tautyp = 0;
184 if (lepton1type == EvtPDL::getId("anti-nu_e") ||
185 lepton1type == EvtPDL::getId("nu_e")) {
186 etyp++;
187 }
188 if (lepton2type == EvtPDL::getId("anti-nu_e") ||
189 lepton2type == EvtPDL::getId("nu_e")) {
190 etyp++;
191 }
192 if (lepton1type == EvtPDL::getId("anti-nu_mu") ||
193 lepton1type == EvtPDL::getId("nu_mu")) {
194 mutyp++;
195 }
196 if (lepton2type == EvtPDL::getId("anti-nu_mu") ||
197 lepton2type == EvtPDL::getId("nu_mu")) {
198 mutyp++;
199 }
200 if (lepton1type == EvtPDL::getId("anti-nu_tau") ||
201 lepton1type == EvtPDL::getId("nu_tau")) {
202 tautyp++;
203 }
204 if (lepton2type == EvtPDL::getId("anti-nu_tau") ||
205 lepton2type == EvtPDL::getId("nu_tau")) {
206 tautyp++;
207 }
208
209 if (etyp != 2 && mutyp != 2 && tautyp != 2) {
210
211 std::cout << "Expect two neutrinos of the same type in EvtBtoXsnunu.cc\n";
212 ::abort();
213 }
214
215 // Check that the second and third entries are leptons with positive
216 // and negative charge, respectively
217
218 int lpos = 0;
219 int lneg = 0;
220 if (lepton1type == EvtPDL::getId("anti-nu_e") ||
221 lepton1type == EvtPDL::getId("anti-nu_mu") ||
222 lepton1type == EvtPDL::getId("anti-nu_tau")) {
223 lpos++;
224 } else if (lepton1type == EvtPDL::getId("nu_e") ||
225 lepton1type == EvtPDL::getId("nu_mu") ||
226 lepton1type == EvtPDL::getId("nu_tau")) {
227 lneg++;
228 }
229 if (lepton2type == EvtPDL::getId("nu_e") ||
230 lepton2type == EvtPDL::getId("nu_mu") ||
231 lepton2type == EvtPDL::getId("nu_tau")) {
232 lneg++;
233 } else if (lepton2type == EvtPDL::getId("anti-nu_e") ||
234 lepton2type == EvtPDL::getId("anti-nu_mu") ||
235 lepton2type == EvtPDL::getId("anti-nu_tau")) {
236 lpos++;
237 }
238
239 if (lpos != 1 || lneg != 1) {
240
241 std::cout << "There should be one neutrino and one anti-neutrino in EvtBtoXsnunu.cc\n";
242 ::abort();
243 }
244
245 if (getNArg() >= 3) {
246 // s-quark mass for fermi motion
247 m_ms = getArg(0);
248 // spectator quark mass for fermi motion
249 m_mq = getArg(1);
250 // Fermi motion parameter for fermi motion
251 m_pf = getArg(2);
252 }
253 if (getNArg() >= 4) {
254 m_mxmin = getArg(3);
255 }
256 if (getNArg() == 6) {
257 m_mb_prob = getArg(4);
258 m_ms_prob = getArg(5);
259 }
260
261 // get a maximum probability
262 double mb = m_mb_prob;
263 double ms = m_ms_prob;
264 double mstilda = ms / mb;
265 double mstilda2 = mstilda * mstilda;
266
267 int nsteps = 100;
268 double sbmin = 0;
269 double sbmax = (1 - mstilda) * (1 - mstilda);
270 double probMax = -10000.0;
271 double sbProbMax = -10.0;
272
273 for (int i = 0; i < nsteps; i++) {
274 double sb = sbmin + (i + 0.0005) * (sbmax - sbmin) / (double)nsteps;
275 double lambda = 1 + mstilda2 * mstilda2 + sb * sb - 2 * (mstilda2 + sb + mstilda2 * sb);
276 double prob = sqrt(lambda) * (3 * sb * (1 + mstilda2 - sb) + lambda);
277 if (prob > probMax) {
278 sbProbMax = sb;
279 probMax = prob;
280 }
281 }
282
283 if (verbose()) {
284 std::cout << "dGdsbProbMax = " << probMax << " for sb = " << sbProbMax << std::endl;
285 }
286
287 m_dGdsbProbMax = probMax;
288
289 }

◆ init() [7/24]

void init ( )

Definition at line 42 of file EvtD0ToKpipi0pi0.cc.

43 {
44 checkNArg(0);
45 checkNDaug(4);
46 checkSpinParent(EvtSpinType::SCALAR);
47 /*
48 checkSpinDaughter(0,EvtSpinType::SCALAR);
49 checkSpinDaughter(1,EvtSpinType::SCALAR);
50 checkSpinDaughter(3,EvtSpinType::SCALAR);
51 checkSpinDaughter(4,EvtSpinType::SCALAR);
52 */
53
54 mod[0] = 1; rho[0] = 2.02; phi[0] = -0.75;
55 mod[1] = 1; rho[1] = 1.66; phi[1] = -2.90;
56 mod[2] = 0; rho[2] = 0; phi[2] = 0;
57 mod[3] = 0; rho[3] = 0; phi[3] = 0;
58 mod[4] = 0; rho[4] = 0; phi[4] = 0;
59 mod[5] = 0; rho[5] = 0; phi[5] = 0;
60 mod[6] = 0; rho[6] = 0; phi[6] = 0;
61 mod[7] = 1; rho[7] = 1; phi[7] = 0;
62 mod[8] = 1; rho[8] = 0.842; phi[8] = -2.05;
63 mod[9] = 1; rho[9] = 0.0218; phi[9] = 1.84;
64 mod[10] = 0; rho[10] = 0; phi[10] = 0;
65 mod[11] = 0; rho[11] = 0; phi[11] = 0;
66 mod[12] = 0; rho[12] = 0; phi[12] = 0;
67 mod[13] = 1; rho[13] = 0.0336; phi[13] = -1.55;
68 mod[14] = 1; rho[14] = 0.109; phi[14] = -1.35;
69 mod[15] = 1; rho[15] = 0.196; phi[15] = -2.07;
70 mod[16] = 0; rho[16] = 0; phi[16] = 0;
71 mod[17] = 0; rho[17] = 0; phi[17] = 0;
72 mod[18] = 0; rho[18] = 0; phi[18] = 0;
73 mod[19] = 1; rho[19] = 0.363; phi[19] = 1.93;
74 mod[20] = 0; rho[20] = 0; phi[20] = 0;
75 mod[21] = 0; rho[21] = 0; phi[21] = 0;
76 mod[22] = 0; rho[22] = 0; phi[22] = 0;
77 mod[23] = 1; rho[23] = 0.555; phi[23] = 0.44;
78 mod[24] = 1; rho[24] = 0.526; phi[24] = -1.84;
79 mod[25] = 0; rho[25] = 0; phi[25] = 0;
80 mod[26] = 1; rho[26] = 1; phi[26] = 0.64;
81 mod[27] = 0; rho[27] = 0; phi[27] = 0;
82 mod[28] = 0; rho[28] = 0; phi[28] = 0;
83 mod[29] = 1; rho[29] = 3.34; phi[29] = -0.02;
84 mod[30] = 0; rho[30] = 0; phi[30] = 0;
85 mod[31] = 0; rho[31] = 0; phi[31] = 0;
86 mod[32] = 0; rho[32] = 0; phi[32] = 0;
87 mod[33] = 0; rho[33] = 0; phi[33] = 0;
88 mod[34] = 1; rho[34] = 1.76; phi[34] = -2.39;
89 mod[35] = 1; rho[35] = 0.175; phi[35] = 1.59;
90 mod[36] = 1; rho[36] = 0.397; phi[36] = 1.45;
91 mod[37] = 0; rho[37] = 0; phi[37] = 0;
92 mod[38] = 0; rho[38] = 0; phi[38] = 0;
93 mod[39] = 0; rho[39] = 0; phi[39] = 0;
94 mod[40] = 0; rho[40] = 0; phi[40] = 0;
95 mod[41] = 1; rho[41] = 1.02; phi[41] = 0.52;
96 mod[42] = 0; rho[42] = 0; phi[42] = 0;
97 mod[43] = 0; rho[43] = 0; phi[43] = 0;
98 mod[44] = 0; rho[44] = 0; phi[44] = 0;
99 mod[45] = 0; rho[45] = 0; phi[45] = 0;
100 mod[46] = 1; rho[46] = 0.146; phi[46] = 1.24;
101 mod[47] = 1; rho[47] = 0.0978; phi[47] = -2.89;
102 mod[48] = 1; rho[48] = 0.233; phi[48] = 2.41;
103 mod[49] = 0; rho[49] = 0; phi[49] = 0;
104 mod[50] = 1; rho[50] = 0.424; phi[50] = -0.94;
105 mod[51] = 1; rho[51] = 1.03; phi[51] = -1.93;
106 mod[52] = 0; rho[52] = 0; phi[52] = 0;
107 mod[53] = 0; rho[53] = 0; phi[53] = 0;
108 mod[54] = 1; rho[54] = 0.474; phi[54] = -1.17;
109 mod[55] = 0; rho[55] = 0; phi[55] = 0;
110 mod[56] = 0; rho[56] = 0; phi[56] = 0;
111 mod[57] = 0; rho[57] = 0; phi[57] = 0;
112 mod[58] = 0; rho[58] = 0; phi[58] = 0;
113 mod[59] = 0; rho[59] = 0; phi[59] = 0;
114 mod[60] = 0; rho[60] = 0; phi[60] = 0;
115 mod[61] = 1; rho[61] = 6.74; phi[61] = -1.74;
116 mod[62] = 0; rho[62] = 0; phi[62] = 0;
117 mod[63] = 0; rho[63] = 0; phi[63] = 0;
118 mod[64] = 0; rho[64] = 0; phi[64] = 0;
119 mod[65] = 0; rho[65] = 0; phi[65] = 0;
120 mod[66] = 1; rho[66] = 1.54; phi[66] = -2.93;
121 mod[67] = 1; rho[67] = 1.36; phi[67] = 2.23;
122
123 mass[0] = 1.23; width[0] = 0.50204;
124 mass[1] = 1.2723; width[1] = 0.09;
125 mass[2] = 0.89166; width[2] = 0.0508;
126 mass[3] = 0.89581; width[3] = 0.0474;
127 mass[4] = 0.77511; width[4] = 0.1491;
128
129 mD = 1.86486;
130 rRes = 3.0;
131 rD = 5.0;
132 metap = 0.95778;
133 mk0 = 0.497614;
134 mass_Kaon = 0.49368;
135 mass_Pion = 0.13957;
136 math_pi = 3.1415926;
137 mass_Pi0 = 0.1349766;
138 mkstrm = 0.89594;
139 mkstr0 = 0.89594;
140
141 pi = 3.1415926;
142 mpi = 0.13957;
143 g1 = 0.5468;
144 g2 = 0.23;
145
146 int GG[4][4] = { {1, 0, 0, 0}, {0, -1, 0, 0}, {0, 0, -1, 0}, {0, 0, 0, -1} };
147 int EE[4][4][4][4] = {
148 { {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} },
149 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 1}, {0, 0, -1, 0}},
150 {{0, 0, 0, 0}, {0, 0, 0, -1}, {0, 0, 0, 0}, {0, 1, 0, 0} },
151 {{0, 0, 0, 0}, {0, 0, 1, 0}, {0, -1, 0, 0}, {0, 0, 0, 0} }
152 },
153 { {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, -1}, {0, 0, 1, 0} },
154 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} },
155 {{0, 0, 0, 1}, {0, 0, 0, 0}, {0, 0, 0, 0}, {-1, 0, 0, 0}},
156 {{0, 0, -1, 0}, {0, 0, 0, 0}, {1, 0, 0, 0}, {0, 0, 0, 0} }
157 },
158 { {{0, 0, 0, 0}, {0, 0, 0, 1}, {0, 0, 0, 0}, {0, -1, 0, 0}},
159 {{0, 0, 0, -1}, {0, 0, 0, 0}, {0, 0, 0, 0}, {1, 0, 0, 0} },
160 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} },
161 {{0, 1, 0, 0}, {-1, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} }
162 },
163 { {{0, 0, 0, 0}, {0, 0, -1, 0}, {0, 1, 0, 0}, {0, 0, 0, 0} },
164 {{0, 0, 1, 0}, {0, 0, 0, 0}, {-1, 0, 0, 0}, {0, 0, 0, 0} },
165 {{0, -1, 0, 0}, {1, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} },
166 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} }
167 }
168 };
169 for (int i = 0; i < 4; i++) {
170 for (int j = 0; j < 4; j++) {
171 G[i][j] = GG[i][j];
172 for (int k = 0; k < 4; k++) {
173 for (int l = 0; l < 4; l++) {
174 E[i][j][k][l] = EE[i][j][k][l];
175 }
176 }
177 }
178 }
179 }

◆ init() [8/24]

void init ( )

Definition at line 41 of file EvtD0ToKpipipi.cc.

42 {
43 checkNArg(0);
44 checkNDaug(4);
45 checkSpinParent(EvtSpinType::SCALAR);
46 /*
47 checkSpinDaughter(0,EvtSpinType::SCALAR);
48 checkSpinDaughter(1,EvtSpinType::SCALAR);
49 checkSpinDaughter(3,EvtSpinType::SCALAR);
50 checkSpinDaughter(4,EvtSpinType::SCALAR);
51 */
52
53 width[0] = 0.09;
54 width[1] = 0.044183653178315;
55 width[2] = 0.541879469380012;
56 width[3] = 0.148423336450619;
57 mass[0] = 1.272;
58 mass[1] = 0.894781734682169;
59 mass[2] = 1.3622013558915;
60 mass[3] = 0.779143408171384;
61
62 phi[0] = 2.34794687054858;
63 rho[0] = 0.0759345115620669;
64 phi[1] = -2.24641399153466;
65 rho[1] = 0.0383327604903577;
66 phi[2] = 2.48955684856045;
67 rho[2] = 0.0931445480476023;
68
69 phi[3] = 0;
70 rho[3] = 1;
71
72 phi[4] = -2.10558220063012;
73 rho[4] = 0.347041869435286;
74 phi[5] = 1.47445088061872;
75 phi[6] = 3.00243265559304;
76 rho[5] = 0.00965088341753795;
77 rho[6] = 0.120536507325731;
78 phi[7] = -2.45477499325158;
79 rho[7] = 0.101419048440676;
80 phi[8] = -1.35809992343491;
81 rho[8] = 4.28149643321317;
82 phi[9] = -2.45149221243198;
83 rho[9] = 0.339492272598394;
84 phi[10] = -0.17419389225461;
85 rho[10] = -0.143619437541254;
86
87 phi[11] = -2.08744386934208;
88 rho[11] = 0.296286583716349;
89 phi[12] = 0.;
90 rho[12] = 0.;
91 phi[13] = -0.432190571560873;
92 rho[13] = 0.657344690733276;
93 phi[14] = -1.39790294886865;
94 rho[14] = 1.71208007006123;
95 phi[15] = 1.58945300476228;
96 rho[15] = 3.58248347683687;
97 phi[16] = 2.58249107256307;
98 rho[16] = -1.10728829503506;
99 phi[17] = -0.163623135170955;
100 rho[17] = 1.70863070178363;
101 phi[18] = -0.134699023080211;
102 rho[18] = 0.567531283682344;
103 phi[19] = -2.12670610368279;
104 rho[19] = 0.276571752504914;
105 phi[20] = -1.3352622107357;
106 rho[20] = 0.416634203151278;
107
108 phi[21] = -2.91571684221842;
109 rho[21] = 0.423062298489176;
110 phi[22] = 2.4544220004327;
111 rho[22] = 1.4017194038459;
112 phi[23] = -2.23388390670423;
113 rho[23] = 4.11110400629068;
114
115 mD = 1.86486;
116 rRes = 3.0;
117 rD = 5.0;
118 metap = 0.95778;
119 mkstr = 0.89594;
120 mk0 = 0.497614;
121 mass_Kaon = 0.49368;
122 mass_Pion = 0.13957;
123 mass_Pi0 = 0.1349766;
124 math_pi = 3.1415926;
125
126 pi = 3.1415926;
127 mpi = 0.13957;
128 g1 = 0.5468;
129 g2 = 0.23;
130
131 int GG[4][4] = { {1, 0, 0, 0}, {0, -1, 0, 0}, {0, 0, -1, 0}, {0, 0, 0, -1} };
132 int EE[4][4][4][4] = {
133 { {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} },
134 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 1}, {0, 0, -1, 0}},
135 {{0, 0, 0, 0}, {0, 0, 0, -1}, {0, 0, 0, 0}, {0, 1, 0, 0} },
136 {{0, 0, 0, 0}, {0, 0, 1, 0}, {0, -1, 0, 0}, {0, 0, 0, 0} }
137 },
138 { {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, -1}, {0, 0, 1, 0} },
139 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} },
140 {{0, 0, 0, 1}, {0, 0, 0, 0}, {0, 0, 0, 0}, {-1, 0, 0, 0}},
141 {{0, 0, -1, 0}, {0, 0, 0, 0}, {1, 0, 0, 0}, {0, 0, 0, 0} }
142 },
143 { {{0, 0, 0, 0}, {0, 0, 0, 1}, {0, 0, 0, 0}, {0, -1, 0, 0}},
144 {{0, 0, 0, -1}, {0, 0, 0, 0}, {0, 0, 0, 0}, {1, 0, 0, 0} },
145 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} },
146 {{0, 1, 0, 0}, {-1, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} }
147 },
148 { {{0, 0, 0, 0}, {0, 0, -1, 0}, {0, 1, 0, 0}, {0, 0, 0, 0} },
149 {{0, 0, 1, 0}, {0, 0, 0, 0}, {-1, 0, 0, 0}, {0, 0, 0, 0} },
150 {{0, -1, 0, 0}, {1, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} },
151 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} }
152 }
153 };
154 for (int i = 0; i < 4; i++) {
155 for (int j = 0; j < 4; j++) {
156 G[i][j] = GG[i][j];
157 for (int k = 0; k < 4; k++) {
158 for (int l = 0; l < 4; l++) {
159 E[i][j][k][l] = EE[i][j][k][l];
160 }
161 }
162 }
163 }
164 }

◆ init() [9/24]

void init ( )

Definition at line 44 of file EvtD0TopipiEta.cc.

45 {
46 // check that there are 0 arguments
47 checkNArg(0);
48 checkNDaug(3);
49 checkSpinParent(EvtSpinType::SCALAR);
50 checkSpinDaughter(0, EvtSpinType::SCALAR);
51 checkSpinDaughter(1, EvtSpinType::SCALAR);
52 checkSpinDaughter(2, EvtSpinType::SCALAR);
53
54 phi[0] = 0; rho[0] = 1; //rho eta
55 phi[1] = -0.98109; rho[1] = -0.02447; //omega eta (rho-omega mixing)
56 phi[2] = 0.71358; rho[2] = 1.0848; //a0- pi+
57 phi[3] = -0.83115; rho[3] = 2.6444; //a0+ pi-
58 phi[4] = -0.058521; rho[4] = 7.0274; //(pi+ eta)_{2+} pi-
59
60 mrho = 0.77511;
61 ma0 = 0.99;
62 Grho = 0.1491;
63 Ga0 = 0.0756;
64
65 const double mk0 = 0.497614;
66 const double mass_Kaon = 0.49368;
67 const double mass_Pion = 0.13957;
68 const double mass_Pi0 = 0.1349766;
69 const double meta = 0.547862;
70 mpi = 0.13957;
71 mD = 1.86483;
72 sD = mD * mD;
73 spi = mpi * mpi;
74 snk = mk0 * mk0;
75 sck = mass_Kaon * mass_Kaon;
76 scpi = mass_Pion * mass_Pion;
77 snpi = mass_Pi0 * mass_Pi0;
78 seta = meta * meta;
79
80 pi = 3.1415926;
81
82 ci = EvtComplex(0.0, 1.0);
83 one = EvtComplex(1.0, 0.0);
84
85 int GG[4][4] = { {1, 0, 0, 0}, {0, -1, 0, 0}, {0, 0, -1, 0}, {0, 0, 0, -1} };
86 for (int i = 0; i < 4; i++) {
87 for (int j = 0; j < 4; j++) {
88 G[i][j] = GG[i][j];
89 }
90 }
91
92
93 }

◆ init() [10/24]

void init ( )

Definition at line 48 of file EvtD0Topippim2pi0.cc.

49 {
50 checkNArg(2);
51 checkNDaug(4);
52 charm = getArg(0);
53 tagmode = getArg(1);
54
55 double mag[36], pha[36];
56 mag[0] = 100; pha[0] = 0;
57 mag[1] = 6.03691; pha[1] = 0.0111121;
58 mag[2] = 31.0556; pha[2] = -1.58228;
59 mag[3] = 82.5439; pha[3] = -2.17864;
60 mag[4] = 246.483; pha[4] = 0.337741;
61 mag[5] = 659.439; pha[5] = 1.76185;
62 mag[6] = 0.353305; pha[6] = 0.22473;
63 mag[7] = 0.508529; pha[7] = -2.99122;
64 mag[8] = 19.0362; pha[8] = 2.70136;
65 mag[9] = 20.1349; pha[9] = -2.06863;
66 mag[10] = 10.5129; pha[10] = -1.26235;
67 mag[11] = 0.23207; pha[11] = -2.91839;
68 mag[12] = 0.295583; pha[12] = -0.47002;
69 mag[13] = 9.71285; pha[13] = -0.58869;
70 mag[14] = 65.1187; pha[14] = -2.63145;
71 mag[15] = 5.04613; pha[15] = -0.642076;
72 mag[16] = 43.8422; pha[16] = 0.339301;
73 mag[17] = 76.3005; pha[17] = -2.32496;
74 mag[18] = 61.1311; pha[18] = 0.609366;
75 mag[19] = 12.2241; pha[19] = -1.12858;
76 mag[20] = 13.6557; pha[20] = 3.02972;
77 mag[21] = 7.09973; pha[21] = -1.69019;
78 mag[22] = 4.5858; pha[22] = 0.0637721;
79 mag[23] = 8.0728; pha[23] = -1.01323;
80 mag[24] = 8.40155; pha[24] = -1.68028;
81 mag[25] = 40.748; pha[25] = -0.503741;
82 mag[26] = 120.464; pha[26] = 1.72667;
83 mag[27] = 2224.09; pha[27] = -1.04373;
84 mag[28] = 7286.76; pha[28] = 1.72657;
85 mag[29] = 8815.51; pha[29] = -1.10724;
86 mag[30] = 2433.26; pha[30] = 1.79639;
87 mag[31] = 5417.04; pha[31] = 2.67794;
88 mag[32] = 18.3282; pha[32] = -1.3945;
89 mag[33] = 55.535; pha[33] = 2.29339;
90 mag[34] = 1.57835; pha[34] = -0.497796;
91 mag[35] = 0.439629; pha[35] = 2.50596;
92
93 for (int i = 0; i < 36; i++) {
94 std::complex<double> ctemp(mag[i]*cos(pha[i]), mag[i]*sin(pha[i]));
95 fitpara.push_back(ctemp);
96 }
97
98 for (int i = 0; i < 4; i++) {
99 for (int j = 0; j < 4; j++) {
100 if (i != j) {
101 g_uv.push_back(0.0);
102 } else if (i < 3) {
103 g_uv.push_back(-1.0);
104 } else if (i == 3) {
105 g_uv.push_back(1.0);
106 }
107 }
108 }
109
110 for (int i = 0; i < 4; i++) {
111 for (int j = 0; j < 4; j++) {
112 for (int k = 0; k < 4; k++) {
113 for (int l = 0; l < 4; l++) {
114 if (i == j || i == k || i == l || j == k || j == l || k == l) {
115 epsilon_uvmn.push_back(0.0);
116 } else {
117 if (i == 0 && j == 1 && k == 2 && l == 3) epsilon_uvmn.push_back(1.0);
118 if (i == 0 && j == 1 && k == 3 && l == 2) epsilon_uvmn.push_back(-1.0);
119 if (i == 0 && j == 2 && k == 1 && l == 3) epsilon_uvmn.push_back(-1.0);
120 if (i == 0 && j == 2 && k == 3 && l == 1) epsilon_uvmn.push_back(1.0);
121 if (i == 0 && j == 3 && k == 1 && l == 2) epsilon_uvmn.push_back(1.0);
122 if (i == 0 && j == 3 && k == 2 && l == 1) epsilon_uvmn.push_back(-1.0);
123
124 if (i == 1 && j == 0 && k == 2 && l == 3) epsilon_uvmn.push_back(-1.0);
125 if (i == 1 && j == 0 && k == 3 && l == 2) epsilon_uvmn.push_back(1.0);
126 if (i == 1 && j == 2 && k == 0 && l == 3) epsilon_uvmn.push_back(1.0);
127 if (i == 1 && j == 2 && k == 3 && l == 0) epsilon_uvmn.push_back(-1.0);
128 if (i == 1 && j == 3 && k == 0 && l == 2) epsilon_uvmn.push_back(-1.0);
129 if (i == 1 && j == 3 && k == 2 && l == 0) epsilon_uvmn.push_back(1.0);
130
131 if (i == 2 && j == 0 && k == 1 && l == 3) epsilon_uvmn.push_back(1.0);
132 if (i == 2 && j == 0 && k == 3 && l == 1) epsilon_uvmn.push_back(-1.0);
133 if (i == 2 && j == 1 && k == 0 && l == 3) epsilon_uvmn.push_back(-1.0);
134 if (i == 2 && j == 1 && k == 3 && l == 0) epsilon_uvmn.push_back(1.0);
135 if (i == 2 && j == 3 && k == 0 && l == 1) epsilon_uvmn.push_back(1.0);
136 if (i == 2 && j == 3 && k == 1 && l == 0) epsilon_uvmn.push_back(-1.0);
137
138 if (i == 3 && j == 0 && k == 1 && l == 2) epsilon_uvmn.push_back(-1.0);
139 if (i == 3 && j == 0 && k == 2 && l == 1) epsilon_uvmn.push_back(1.0);
140 if (i == 3 && j == 1 && k == 0 && l == 2) epsilon_uvmn.push_back(1.0);
141 if (i == 3 && j == 1 && k == 2 && l == 0) epsilon_uvmn.push_back(-1.0);
142 if (i == 3 && j == 2 && k == 0 && l == 1) epsilon_uvmn.push_back(-1.0);
143 if (i == 3 && j == 2 && k == 1 && l == 0) epsilon_uvmn.push_back(1.0);
144
145 }
146 }
147 }
148 }
149 }
150
151 _nd = 4;
152 math_pi = 3.1415926f;
153 mass_Pion = 0.13957f;
154
155 rRes = 3.0 * 0.197321;
156 rD = 5.0 * 0.197321;
157 m_Pi = 0.139570;
158 m_Pi0 = 0.134977;
159 m2_Pi = m_Pi * m_Pi;
160 m2_Pi0 = m_Pi0 * m_Pi0;
161 m_Ka = 0.493677;
162 m2_Ka = m_Ka * m_Ka;
163
164 m0_f0980 = 0.965;
165 g1_f0980 = 0.165;
166 g2_f0980 = 4.210;
167
168 m0_rho7700 = 0.77526;
169 w0_rho7700 = 0.1478;
170
171 m0_rho770p = 0.77511;
172 w0_rho770p = 0.1491;
173
174 m0_rho1450 = 1.465;
175 w0_rho1450 = 0.400;
176
177 m0_f21270 = 1.2755;
178 w0_f21270 = 0.1867;
179
180 m0_a11260 = 1.1927;
181 g1_a11260 = 0.003777;
182 g2_a11260 = 0.0;
183
184 m0_pi1300 = 1.534;
185 w0_pi1300 = 0.610;
186
187 m0_a11420 = 1.411;
188 w0_a11420 = 0.161;
189
190 m0_a11640 = 1.655;
191 w0_a11640 = 0.254;
192
193 m0_a21320 = 1.3186;
194 w0_a21320 = 0.105;
195
196 m0_pi21670 = 1.6706;
197 w0_pi21670 = 0.258;
198
199 m0_h11170 = 1.166;
200 w0_h11170 = 0.375;
201
202 m0_omega = 0.78265;
203 w0_omega = 0.00849;
204
205 m0_phi = 1.019461;
206 w0_phi = 0.004249;
207
208 s0_prod = -5.0;
209
210 }

◆ init() [11/24]

void init ( )

Definition at line 53 of file EvtDsToKKpi.cc.

54 {
55 checkNArg(0);
56 checkNDaug(3);
57 checkSpinParent(EvtSpinType::SCALAR);
58 checkSpinDaughter(0, EvtSpinType::SCALAR);
59 checkSpinDaughter(1, EvtSpinType::SCALAR);
60 checkSpinDaughter(2, EvtSpinType::SCALAR);
61
62
63 phi[0] = 0;
64 phi[1] = 6.1944e+00;
65 phi[2] = 4.7398e+00;
66 phi[3] = 2.9047e+00;
67 phi[4] = 1.0068e+00;
68 phi[5] = 5.8035e-01;
69
70 rho[0] = 1;
71 rho[1] = 1.0963e+00;
72 rho[2] = 2.7818e+00;
73 rho[3] = 1.2570e+00;
74 rho[4] = 7.7351e-01;
75 rho[5] = 5.6277e-01;
76
77 mass[0] = 8.9581e-01;
78 mass[1] = 1.019461e+00;
79 mass[2] = 0.919;
80 mass[3] = 1.4712e+00;
81 mass[4] = 1.7220e+00;
82 mass[5] = 1.3500e+00;
83
84 width[0] = 4.7400e-02;
85 width[1] = 4.2660e-03;
86 width[2] = 0.272;
87 width[3] = 2.7000e-01;
88 width[4] = 1.3500e-01;
89 width[5] = 2.6500e-01;
90
91 modetype[0] = 0;
92 modetype[1] = 1;
93 modetype[2] = 13;
94 modetype[3] = 3;
95 modetype[4] = 4;
96 modetype[5] = 5;
97
98
99 mD = 1.86484;
100 mDs = 1.96835;
101 rRes = 1.5;
102 rD = 3.0;
103 mkstr = 0.89555;
104 mk0 = 0.497611;
105 mass_Kaon = 0.49368;
106 mass_Pion = 0.13957;
107 mass_Pi0 = 0.1349768;
108 mass_EtaP = 0.95778;
109 mass_Eta = 0.547862;
110 math_pi = 3.1415926;
111 afRatio = 2.04835; //BABAR // afRatio= 1.23202; //BES2
112 int GG[4][4] = { {1, 0, 0, 0}, {0, -1, 0, 0}, {0, 0, -1, 0}, {0, 0, 0, -1} };
113 for (int i = 0; i < 4; i++) {
114 for (int j = 0; j < 4; j++) {
115 G[i][j] = GG[i][j];
116 }
117 }
118 }

◆ init() [12/24]

void init ( )

Definition at line 51 of file EvtDsToKpipi.cc.

52 {
53 checkNArg(0);
54 checkNDaug(3);
55 checkSpinParent(EvtSpinType::SCALAR);
56 checkSpinDaughter(0, EvtSpinType::SCALAR);
57 checkSpinDaughter(1, EvtSpinType::SCALAR);
58 checkSpinDaughter(2, EvtSpinType::SCALAR);
59
60 phi[0] = 0;
61 rho[0] = 1;
62 phi[1] = 0;
63 rho[1] = 0;
64 phi[2] = 0;
65 rho[2] = 0;
66 phi[3] = 0;
67 rho[3] = 0;
68 phi[4] = 0;
69 rho[4] = 0;
70 phi[5] = 0;
71 rho[5] = 0;
72 phi[6] = 0;
73 rho[6] = 0;
74 phi[7] = 0;
75 rho[7] = 0;
76
77 phi[1] = -3.47995752;
78 phi[2] = -1.249864467;
79 phi[3] = -0.3067504308;
80 phi[4] = 0.9229242379;
81 phi[5] = -3.278567926;
82 phi[6] = -0.6346408622;
83 phi[7] = 1.762377475;
84
85 rho[1] = 2.463898984;
86 rho[2] = 0.7361782665;
87 rho[3] = 1.90216812;
88 rho[4] = 2.140687169;
89 rho[5] = 0.914684056;
90 rho[6] = 1.116206881;
91 rho[7] = 1.483440555;
92
93 modetype[0] = 23;
94 modetype[1] = 23;
95 modetype[2] = 23;
96 modetype[3] = 23;
97 modetype[4] = 23;
98 modetype[5] = 13;
99 modetype[6] = 13;
100 modetype[7] = 13;
101
102 width[0] = 0.1478;
103 width[1] = 0.400;
104 width[2] = 0.100;
105 width[3] = 0.265;
106 width[4] = 0.270;
107 width[5] = 0.0473;
108 width[6] = 0.232;
109 width[7] = 0.270;
110
111 mass[0] = 0.77526;
112 mass[1] = 1.465;
113 mass[2] = 0.965;
114 mass[3] = 1.35;
115 mass[4] = 1.425;
116 mass[5] = 0.89555;
117 mass[6] = 1.414;
118 mass[7] = 1.432787726;
119
120 mDsM = 1.9683;
121 mD = 1.86486;
122 mDs = 1.9683;
123 rD = 25.0;
124 metap = 0.95778;
125 mkstr = 0.89594;
126 mk0 = 0.497614;
127 mass_Kaon = 0.49368;
128 mass_Pion = 0.13957;
129 mass_Pi0 = 0.1349766;
130 math_pi = 3.1415926;
131 mKa2 = 0.24371994;
132 mPi2 = 0.01947978;
133 mPi = 0.13957;
134 mKa = 0.49368;
135 ma0 = 0.99;
136 Ga0 = 0.0756;
137 meta = 0.547862;
138
139 GS1 = 0.636619783;
140 GS2 = 0.01860182466;
141 GS3 = 0.1591549458;
142 GS4 = 0.00620060822;
143
144 int GG[4][4] = { {1, 0, 0, 0}, {0, -1, 0, 0}, {0, 0, -1, 0}, {0, 0, 0, -1} };
145 for (int i = 0; i < 4; i++) {
146 for (int j = 0; j < 4; j++) {
147 G[i][j] = GG[i][j];
148 }
149 }
150 }

◆ init() [13/24]

void init ( )

Definition at line 49 of file EvtDToKSKpi0.cc.

50 {
51 checkNArg(0);
52 checkNDaug(3);
53 checkSpinParent(EvtSpinType::SCALAR);
54
55 _nd = 3;
56 _mDp = 1.86965;
57 c_motherMass = _mDp;
58 _mDp2 = _mDp * _mDp;
59 _mDp2inv = 1. / _mDp2;
60 KsMass = 0.497611;
61 KpMass = 0.493677;
62 pi0Mass = 0.134977;
63 etamass = 0.547862;
64 pipMass = 0.13957061;
65 c_meson_radius_inter = 1.5;
66 c_meson_radius_Dp = 5;
67 }

◆ init() [14/24]

void init ( )

Definition at line 47 of file EvtDToKSpipi0pi0.cc.

48 {
49
50 checkNArg(0);
51 checkNDaug(4);
52 checkSpinParent(EvtSpinType::SCALAR);
53
54 mK1270 = 1.272; mK1400 = 1.403;
55 GK1270 = 0.09; GK1400 = 0.174;
56 mKstr0 = 0.89555; mrho = 0.77511;
57 GKstr0 = 0.0473; Grho = 0.1485;
58 msigma = 0.526; ma1 = 1.230;
59 Gsigma = 0.535; Ga1 = 0.420;
60 mD = 1.86965;
61 math_pi = 3.1415926;
62
63 rho[0] = 3.0177e+00;//5
64 phi[0] = 7.5497e-01;
65
66 rho[1] = 1;//a1(1260)
67 phi[1] = 0;
68
69 rho[2] = 2.3527e-01;//7S_1400
70 phi[2] = -2.9985e+00;
71
72 rho[3] = 5.5731e-01;//7D_1400
73 phi[3] = 4.2940e+00;
74
75 rho[4] = 9.0803e-01;//11_sigma
76 phi[4] = 4.7731e+00;
77
78 rho[5] = 2.5345e-01;//23S
79 phi[5] = -3.3205e+00;
80
81 rho[6] = 6.0504e-02;//23P
82 phi[6] = -1.6803e+00;
83
84 rho[7] = 7.6978e-01;//25S
85 phi[7] = -5.5937e+00;
86
87 modetype[0] = 403;
88 modetype[1] = 100;
89 modetype[2] = 200;
90 modetype[3] = 200;
91 modetype[4] = 204;
92 modetype[5] = 2;
93 modetype[6] = 2;
94 modetype[7] = 2;
95
96 int GG[4][4] = { {1, 0, 0, 0}, {0, -1, 0, 0}, {0, 0, -1, 0}, {0, 0, 0, -1} };
97 int EE[4][4][4][4] = {
98 { {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} },
99 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 1}, {0, 0, -1, 0}},
100 {{0, 0, 0, 0}, {0, 0, 0, -1}, {0, 0, 0, 0}, {0, 1, 0, 0} },
101 {{0, 0, 0, 0}, {0, 0, 1, 0}, {0, -1, 0, 0}, {0, 0, 0, 0} }
102 },
103 { {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, -1}, {0, 0, 1, 0} },
104 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} },
105 {{0, 0, 0, 1}, {0, 0, 0, 0}, {0, 0, 0, 0}, {-1, 0, 0, 0}},
106 {{0, 0, -1, 0}, {0, 0, 0, 0}, {1, 0, 0, 0}, {0, 0, 0, 0} }
107 },
108 { {{0, 0, 0, 0}, {0, 0, 0, 1}, {0, 0, 0, 0}, {0, -1, 0, 0}},
109 {{0, 0, 0, -1}, {0, 0, 0, 0}, {0, 0, 0, 0}, {1, 0, 0, 0} },
110 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} },
111 {{0, 1, 0, 0}, {-1, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} }
112 },
113 { {{0, 0, 0, 0}, {0, 0, -1, 0}, {0, 1, 0, 0}, {0, 0, 0, 0} },
114 {{0, 0, 1, 0}, {0, 0, 0, 0}, {-1, 0, 0, 0}, {0, 0, 0, 0} },
115 {{0, -1, 0, 0}, {1, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} },
116 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} }
117 }
118 };
119 for (int i = 0; i < 4; i++) {
120 for (int j = 0; j < 4; j++) {
121 G[i][j] = GG[i][j];
122 for (int k = 0; k < 4; k++) {
123 for (int l = 0; l < 4; l++) {
124 E[i][j][k][l] = EE[i][j][k][l];
125 }
126 }
127 }
128 }
129 }

◆ init() [15/24]

void init ( )

Definition at line 42 of file EvtDToKSpipipi.cc.

43 {
44 checkNArg(0);
45 checkNDaug(4);
46 checkSpinParent(EvtSpinType::SCALAR);
47 /*
48 checkSpinDaughter(0,EvtSpinType::SCALAR);
49 checkSpinDaughter(1,EvtSpinType::SCALAR);
50 checkSpinDaughter(3,EvtSpinType::SCALAR);
51 checkSpinDaughter(4,EvtSpinType::SCALAR);
52 */
53
54 mK1270 = 1.272; mK1400 = 1.403;
55 GK1270 = 0.09; GK1400 = 0.174;
56 mKstr = 0.89166; mrho = 0.77549;
57 GKstr = 0.0462; Grho = 0.1491;
58 msigma = 0.472;
59 Gsigma = 0.542;
60 phi_omega = -0.02;
61 mK1650 = 1.65;
62 GK1650 = 0.158;
63 rho[0] = 1.0;
64 phi[0] = 0.0;
65
66 ma1 = 1.22;
67 Ga1 = 0.4282;
68 mK1460 = 1.4152;
69 GK1460 = 0.2485;
70 rho_omega = 0.00294;
71
72 phi[1] = -1.55;
73 rho[1] = 0.5843;
74
75 phi[2] = -1.8223;
76 rho[2] = 2.0974;
77
78 phi[3] = -2.6751;
79 rho[3] = 0.46642;
80
81 phi[4] = -2.2429;
82 rho[4] = 0.33334;
83
84 phi[5] = -0.55888;
85 rho[5] = 0.15549;
86
87 phi[6] = -1.8778;
88 rho[6] = 0.94452;
89
90 phi[7] = 2.7724;
91 rho[7] = 0.99411;
92
93 phi[8] = -2.6461;
94 rho[8] = 0.21231;
95
96 phi[9] = -0.95137;
97 rho[9] = 0.29895;
98
99 phi[10] = -3.0843;
100 rho[10] = 3.6361;
101
102 phi[11] = 2.0954;
103 rho[11] = 0.96472;
104
105 phi[12] = -2.4965;
106 rho[12] = 0.48470;
107
108 mD = 1.86486;
109 rD = 5;
110 metap = 0.95778;
111 mkstr = 0.89594;
112 mk0 = 0.497614;
113 mass_Kaon = 0.49368;
114 mass_Pion = 0.13957;
115 math_pi = 3.1415926;
116
117 pi = 3.1415926;
118 mpi = 0.13957;
119 g1 = 0.5468;
120 g2 = 0.23;
121
122 int GG[4][4] = { {1, 0, 0, 0}, {0, -1, 0, 0}, {0, 0, -1, 0}, {0, 0, 0, -1} };
123 int EE[4][4][4][4] = {
124 { {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} },
125 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 1}, {0, 0, -1, 0}},
126 {{0, 0, 0, 0}, {0, 0, 0, -1}, {0, 0, 0, 0}, {0, 1, 0, 0} },
127 {{0, 0, 0, 0}, {0, 0, 1, 0}, {0, -1, 0, 0}, {0, 0, 0, 0} }
128 },
129 { {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, -1}, {0, 0, 1, 0} },
130 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} },
131 {{0, 0, 0, 1}, {0, 0, 0, 0}, {0, 0, 0, 0}, {-1, 0, 0, 0}},
132 {{0, 0, -1, 0}, {0, 0, 0, 0}, {1, 0, 0, 0}, {0, 0, 0, 0} }
133 },
134 { {{0, 0, 0, 0}, {0, 0, 0, 1}, {0, 0, 0, 0}, {0, -1, 0, 0}},
135 {{0, 0, 0, -1}, {0, 0, 0, 0}, {0, 0, 0, 0}, {1, 0, 0, 0} },
136 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} },
137 {{0, 1, 0, 0}, {-1, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} }
138 },
139 { {{0, 0, 0, 0}, {0, 0, -1, 0}, {0, 1, 0, 0}, {0, 0, 0, 0} },
140 {{0, 0, 1, 0}, {0, 0, 0, 0}, {-1, 0, 0, 0}, {0, 0, 0, 0} },
141 {{0, -1, 0, 0}, {1, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} },
142 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} }
143 }
144 };
145 for (int i = 0; i < 4; i++) {
146 for (int j = 0; j < 4; j++) {
147 G[i][j] = GG[i][j];
148 for (int k = 0; k < 4; k++) {
149 for (int l = 0; l < 4; l++) {
150 E[i][j][k][l] = EE[i][j][k][l];
151 }
152 }
153 }
154 }
155 }

◆ init() [16/24]

void init ( )

Definition at line 45 of file EvtDTopipi0Eta.cc.

46 {
47 checkNArg(0);
48 checkNDaug(3);
49 checkSpinParent(EvtSpinType::SCALAR);
50 checkSpinDaughter(0, EvtSpinType::SCALAR);
51 checkSpinDaughter(1, EvtSpinType::SCALAR);
52 checkSpinDaughter(2, EvtSpinType::SCALAR);
53
54 phi[0] = -3.3276; rho[0] = 0.31478; //rho eta
55 phi[1] = 0.0; rho[1] = 1.0; //a0+ pi0
56 phi[2] = 0.0; rho[2] = -1.0; //a00 pi+
57
58 mrho = 0.77511;
59 ma0 = 0.99;
60 Grho = 0.1491;
61 Ga0 = 0.0756;
62
63 const double mk0 = 0.497614;
64 const double mass_Kaon = 0.49368;
65 const double mass_Pion = 0.13957;
66 const double mass_Pi0 = 0.1349766;
67 const double meta = 0.547862;
68 mpi = 0.13957;
69 mD = 1.86966;
70 sD = mD * mD;
71 spi = mpi * mpi;
72 snk = mk0 * mk0;
73 sck = mass_Kaon * mass_Kaon;
74 scpi = mass_Pion * mass_Pion;
75 snpi = mass_Pi0 * mass_Pi0;
76 seta = meta * meta;
77
78 pi = 3.1415926;
79
80 ci = EvtComplex(0.0, 1.0);
81 one = EvtComplex(1.0, 0.0);
82
83 int GG[4][4] = { {1, 0, 0, 0}, {0, -1, 0, 0}, {0, 0, -1, 0}, {0, 0, 0, -1} };
84 for (int i = 0; i < 4; i++) {
85 for (int j = 0; j < 4; j++) {
86 G[i][j] = GG[i][j];
87 }
88 }
89
90 }

◆ init() [17/24]

void init ( )

Checks that the number of input parameters are correct:

  • 3 scalar particles (check on spin but not on charge)
  • 6 real parameters (no check on the actual values)

Definition at line 41 of file EvtEtaFullDalitz.cc.

42 {
43
44 // check that there is are arguments
45 checkNArg(6);
46 checkNDaug(3);
47
48
49 checkSpinParent(EvtSpinType::SCALAR);
50
51 checkSpinDaughter(0, EvtSpinType::SCALAR);
52 checkSpinDaughter(1, EvtSpinType::SCALAR);
53 checkSpinDaughter(2, EvtSpinType::SCALAR);
54 }

◆ init() [18/24]

void init ( )

Checks that the number of input parameters are correct:

  • 3 scalar particles (check on spin but not on charge)
  • 1 real parameters (no check on the actual values)

Definition at line 56 of file EvtEtaPi0Dalitz.cc.

57 {
58
59 // check that there is 1 argument
60 checkNArg(1);
61 checkNDaug(3);
62
63
64 checkSpinParent(EvtSpinType::SCALAR);
65
66 checkSpinDaughter(0, EvtSpinType::SCALAR);
67 checkSpinDaughter(1, EvtSpinType::SCALAR);
68 checkSpinDaughter(2, EvtSpinType::SCALAR);
69 }

◆ init() [19/24]

void init ( )

Checks that the number of input parameters are correct:

  • 3 scalar particles (check on spin but not on charge)
  • 4 real parameters (no check on the actual values)

Definition at line 58 of file EvtEtaPrimeDalitz.cc.

59 {
60
61 // check that there is are arguments
62 checkNArg(4);
63 checkNDaug(3);
64
65
66 checkSpinParent(EvtSpinType::SCALAR);
67
68 checkSpinDaughter(0, EvtSpinType::SCALAR);
69 checkSpinDaughter(1, EvtSpinType::SCALAR);
70 checkSpinDaughter(2, EvtSpinType::SCALAR);
71 }

◆ init() [20/24]

void init ( )

The function for an initialization.

Definition at line 114 of file EvtFlatDaughter.cc.

115 {
116
117 // check that there are two arguments - Mmin Mmax
118 checkNArg(0);
119
120 // check the number of daughters. It should be 3
121 checkNDaug(3);
122
123 }

◆ init() [21/24]

void init ( )

Initializes module.

Definition at line 72 of file EvtHNLBCL.cc.

73 {
74
75 checkNDaug(3);
76
77 //We expect the parent to be a scalar
78 //and the daughters to be X lepton neutrino
79
80 checkSpinParent(EvtSpinType::SCALAR);
81 checkSpinDaughter(1, EvtSpinType::DIRAC);
82 checkSpinDaughter(2, EvtSpinType::DIRAC);
83
84 EvtSpinType::spintype mesontype = EvtPDL::getSpinType(getDaug(0));
85
86 bclmodel = new EvtBCLFF(getNArg(), getArgs());
87
88 if (mesontype == EvtSpinType::SCALAR) {
89 calcamp = new EvtHNLSemiLeptonicScalarAmp;
90 }
91 if (mesontype == EvtSpinType::VECTOR) {
92 calcamp = new EvtHNLSemiLeptonicVectorAmp;
93 }
94 // Tensor Meson implementation is possible here.
95
96 }

◆ init() [22/24]

void init ( )

The function for an initialization.

Definition at line 124 of file EvtKnunu.cc.

125 {
126 // check that there are 0 arguments
127 checkNArg(0);
128 checkNDaug(3);
129
130 //We expect the parent to be a scalar
131 //and the daughters to be K neutrino netrino
132
133 checkSpinParent(EvtSpinType::SCALAR);
134
135 checkSpinDaughter(0, EvtSpinType::SCALAR);
136 checkSpinDaughter(1, EvtSpinType::NEUTRINO);
137 checkSpinDaughter(2, EvtSpinType::NEUTRINO);
138 }

◆ init() [23/24]

void init ( )

The function for an initialization.

Definition at line 152 of file EvtKstarnunu_REV.cc.

153 {
154
155 // check that there are 0 arguments
156 checkNArg(0);
157 checkNDaug(3);
158
159 //We expect the parent to be a scalar
160 //and the daughters to be Kstar neutrino netrino
161
162 checkSpinParent(EvtSpinType::SCALAR);
163
164 checkSpinDaughter(0, EvtSpinType::VECTOR);
165 checkSpinDaughter(1, EvtSpinType::NEUTRINO);
166 checkSpinDaughter(2, EvtSpinType::NEUTRINO);
167 }

◆ init() [24/24]

void init ( )

Initialize standard stream objects.

Definition at line 40 of file EvtPhspCP.cc.

41 {
42 // Check number of arguments
43 checkNArg(7);
44 }

◆ initConditionalGenerator()

ConditionalGaussGenerator initConditionalGenerator ( const ROOT::Math::PxPyPzEVector & pHER,
const ROOT::Math::PxPyPzEVector & pLER,
const TMatrixDSym & covHER,
const TMatrixDSym & covLER )

Initialize the conditional generator using HER & LER 4-vectors and HER & LER covariance matrices describing spread.

Definition at line 75 of file InitialParticleGeneration.cc.

77 {
78 //Calculate initial parameters of the HER beam before smearing
79 double E0her = pHER.E();
80 double thX0her = std::atan(pHER.Px() / pHER.Pz());
81 double thY0her = std::atan(pHER.Py() / pHER.Pz());
82
83 //Calculate initial parameters of the LER beam before smearing
84 double E0ler = pLER.E();
85 double thX0ler = std::atan(pLER.Px() / pLER.Pz());
86 double thY0ler = std::atan(pLER.Py() / pLER.Pz());
87
88 // calculate gradient of transformation (EH, thXH, thYH, EL, thXL, thYL) -> (Ecms, bX, bY, bZ, angleCmsX, angleCmsY)
89 Eigen::MatrixXd grad = getGradientMatrix(E0her, thX0her, thY0her, E0ler, thX0ler, thY0ler);
90 Eigen::VectorXd mu = getCentralValues(E0her, thX0her, thY0her, E0ler, thX0ler, thY0ler);
91
92 // calculate covariance smearing matrix in the (Ecms, bX, bY, bZ, angleCmsX, angleCmsY) coordinate system
93 Eigen::MatrixXd covT = transformCov(toEigen(adjustCovMatrix(covHER)), toEigen(adjustCovMatrix(covLER)), grad);
94
95 // return random number generator which allows to generate Lorentz transformation parameters based on the cmsEnergy
96 return ConditionalGaussGenerator(mu, covT);
97
98 }
static Eigen::MatrixXd toEigen(TMatrixDSym m)
transform matrix from ROOT to Eigen format
Eigen::MatrixXd transformCov(const Eigen::MatrixXd &covHER, const Eigen::MatrixXd &covLER, const Eigen::MatrixXd &grad)
transform covariance matrix to the variables (Ecms, boostX, boostY, boostZ, angleXZ,...
Eigen::VectorXd getCentralValues(double eH, double thXH, double thYH, double eL, double thXL, double thYL)
get vector including (Ecms, boostX, boostY, boostZ, angleXZ, angleYZ) from beam energies and angles
Eigen::MatrixXd getGradientMatrix(double eH, double thXH, double thYH, double eL, double thXL, double thYL)
get gradient matrix of (eH, thXH, thYH, eL, thXL, thYL) -> (eCMS, boostX, boostY, boostY,...

◆ initialize()

void initialize ( )

function to be executed on initialize()

Definition at line 22 of file InitialParticleGeneration.cc.

23 {
24 m_event.registerInDataStore();
25 }

◆ initProbMax() [1/23]

void initProbMax ( )

Initialize standard stream objects for probability function.

Definition at line 136 of file EvtB0toKsKK.cc.

137 {
138 //setProbMax(50000.0);
139 //setProbMax(100000.0);
140 //setProbMax(200000.0);
141 //setProbMax(400000.0);
142 //setProbMax(600000.0);
143 setProbMax(1100000.0);
144 }

◆ initProbMax() [2/23]

void initProbMax ( )

Sets maximal probab.

Definition at line 56 of file EvtBCL.cc.

57 {
58
59 EvtId parnum, mesnum, lnum, nunum;
60
61 parnum = getParentId();
62 mesnum = getDaug(0);
63 lnum = getDaug(1);
64 nunum = getDaug(2);
65
66 double mymaxprob = calcamp->CalcMaxProb(parnum, mesnum, lnum, nunum, bclmodel);
67
68 setProbMax(mymaxprob);
69 }

◆ initProbMax() [3/23]

void initProbMax ( )

The function sets the maximum value of the probability.

Definition at line 59 of file EvtBSemiTauonic2HDMType2.cc.

60 {
61 EvtId parnum, mesnum, lnum, nunum;
62
63 parnum = getParentId();
64 mesnum = getDaug(0);
65 lnum = getDaug(1);
66 nunum = getDaug(2);
67
68 double maxprob = m_CalcAmp->CalcMaxProb(parnum, mesnum,
69 lnum, nunum,
70 m_CalcHelAmp);
71
72 B2INFO("EvtBSemiTauonic2HDMType2::initProbMax()>> maxprob: " << maxprob);
73
74 setProbMax(maxprob);
75 }

◆ initProbMax() [4/23]

void initProbMax ( )

The function sets the maximum value of the probability.

Definition at line 59 of file EvtBSemiTauonic.cc.

60 {
61 EvtId parnum, mesnum, lnum, nunum;
62
63 parnum = getParentId();
64 mesnum = getDaug(0);
65 lnum = getDaug(1);
66 nunum = getDaug(2);
67
68 double maxprob = m_CalcAmp->CalcMaxProb(parnum, mesnum,
69 lnum, nunum,
70 m_CalcHelAmp);
71
72 B2INFO("EvtBSemiTauonic::initProbMax()>> maxprob: " << maxprob);
73
74 setProbMax(maxprob);
75 }

◆ initProbMax() [5/23]

void initProbMax ( )

The function to sets a maximum probability.

In this model, noProbMax() is called because maximum probability is determined by m_dGdsbProbMax

Definition at line 161 of file EvtBtoXsnunu_FERMI.cc.

162 {
163 noProbMax();
164 }

◆ initProbMax() [6/23]

void initProbMax ( )

Definition at line 181 of file EvtD0ToKpipi0pi0.cc.

182 {
183 setProbMax(8060.0);
184 }

◆ initProbMax() [7/23]

void initProbMax ( )

Definition at line 166 of file EvtD0ToKpipipi.cc.

167 {
168 setProbMax(720.0);
169 }

◆ initProbMax() [8/23]

void initProbMax ( )

Definition at line 95 of file EvtD0TopipiEta.cc.

96 {
97 setProbMax(476.5);
98 }

◆ initProbMax() [9/23]

void initProbMax ( )

Definition at line 212 of file EvtD0Topippim2pi0.cc.

213 {
214 setProbMax(1098009205);
215 }

◆ initProbMax() [10/23]

void initProbMax ( )

Definition at line 120 of file EvtDsToKKpi.cc.

121 {
122 setProbMax(35638.0);
123 }

◆ initProbMax() [11/23]

void initProbMax ( )

Definition at line 152 of file EvtDsToKpipi.cc.

153 {
154 setProbMax(825.0);
155 }

◆ initProbMax() [12/23]

void initProbMax ( )

Definition at line 68 of file EvtDToKSKpi0.cc.

69 {
70 setProbMax(1343.2);
71 }

◆ initProbMax() [13/23]

void initProbMax ( )

Definition at line 131 of file EvtDToKSpipi0pi0.cc.

132 {
133 setProbMax(2325.0);
134 }

◆ initProbMax() [14/23]

void initProbMax ( )

Definition at line 157 of file EvtDToKSpipipi.cc.

158 {
159 setProbMax(3700.0);
160 }

◆ initProbMax() [15/23]

void initProbMax ( )

Definition at line 92 of file EvtDTopipi0Eta.cc.

93 {
94 setProbMax(20.0);
95 }

◆ initProbMax() [16/23]

void initProbMax ( )

Sets the Maximum probability for the PHSP reweight.

Maximum value is hardcoded and inherited from the EvtEtaDalitz class.

Definition at line 57 of file EvtEtaFullDalitz.cc.

58 {
59
60 setProbMax(2.5);
61
62 }

◆ initProbMax() [17/23]

void initProbMax ( )

Sets the Maximum probability for the PHSP reweight.

Maximum value is hardcoded and inherited from the EvtEtaDalitz class.

Definition at line 72 of file EvtEtaPi0Dalitz.cc.

73 {
74
75 setProbMax(2.5);
76
77 }

◆ initProbMax() [18/23]

void initProbMax ( )

Sets the Maximum probability for the PHSP reweight.

Maximum value is hardcoded and inherited from the EvtEtaDalitz class.

Definition at line 74 of file EvtEtaPrimeDalitz.cc.

75 {
76
77 setProbMax(2.5);
78
79 }

◆ initProbMax() [19/23]

void initProbMax ( )

The function to sets a maximum probability.

At this model, noProbMax() is used.

Definition at line 108 of file EvtFlatDaughter.cc.

109 {
110 noProbMax();
111 }

◆ initProbMax() [20/23]

void initProbMax ( )

Sets maximal probab.

Definition at line 56 of file EvtHNLBCL.cc.

57 {
58
59 EvtId parnum, mesnum, lnum, nunum;
60
61 parnum = getParentId();
62 mesnum = getDaug(0);
63 lnum = getDaug(1);
64 nunum = getDaug(2);
65
66 double mymaxprob = calcamp->CalcMaxProb(parnum, mesnum, lnum, nunum, bclmodel);
67
68 setProbMax(mymaxprob);
69 }

◆ initProbMax() [21/23]

void initProbMax ( )

The function to sets a maximum probability.

Definition at line 140 of file EvtKnunu.cc.

141 {
142 // Maximum probability was obtained by 10^6 MC samples. It was 71.177
143 // About 10% higher value is used.
144 setProbMax(80.0);
145 }

◆ initProbMax() [22/23]

void initProbMax ( )

The function to sets a maximum probability.

Definition at line 169 of file EvtKstarnunu_REV.cc.

170 {
171 // Maximum probability was obtained by 10^6 MC samples. It was 20000.169
172 // About 10% higher value is used.
173 setProbMax(22000.0);
174 }

◆ initProbMax() [23/23]

void initProbMax ( )

Initialize standard stream objects for probability function.

Definition at line 46 of file EvtPhspCP.cc.

47 {
48 setProbMax(2 * (getArg(3)*getArg(3) + getArg(5)*getArg(5)));
49 }

◆ irho()

std::complex< double > irho ( double mr2,
double m1_2,
double m2_2 )
private

Definition at line 612 of file EvtD0Topippim2pi0.cc.

613 {
614 double poly = mr2 * mr2 + m1_2 * m1_2 + m2_2 * m2_2 - 2 * m1_2 * mr2 - 2 * m2_2 * mr2 - 2 * m1_2 * m2_2;
615 double ret_real = 0;
616 double ret_imag = 0;
617 if (poly >= 0) {
618 ret_real = 2.0f * sqrt(poly) / (2.0f * mr2);
619 ret_imag = 0;
620 } else {
621 ret_real = 0;
622 ret_imag = 2.0f * sqrt(-1.0f * poly) / (2.0f * mr2);
623 }
624 std::complex<double> ret(ret_real, ret_imag);
625 return ret;
626 }

◆ KMTX()

std::complex< double > KMTX ( int i,
int j,
double s )
private

Definition at line 1164 of file EvtD0Topippim2pi0.cc.

1165 {
1166
1167 double Kijx;
1168 double Kijy;
1169 double mpi = 0.13957;
1170 double m[5] = { 0.65100, 1.20360, 1.55817, 1.21000, 1.82206};
1171
1172 double g1[5] = { 0.22889, -0.55377, 0.00000, -0.39899, -0.34639};
1173 double g2[5] = { 0.94128, 0.55095, 0.00000, 0.39065, 0.31503};
1174 double g3[5] = { 0.36856, 0.23888, 0.55639, 0.18340, 0.18681};
1175 double g4[5] = { 0.33650, 0.40907, 0.85679, 0.19906, -0.00984};
1176 double g5[5] = { 0.18171, -0.17558, -0.79658, -0.00355, 0.22358};
1177
1178 double f1[5] = { 0.23399, 0.15044, -0.20545, 0.32825, 0.35412};
1179
1180 double eps = 1e-11;
1181
1182 double upreal[5] = { 0, 0, 0, 0, 0};
1183 double upimag[5] = { 0, 0, 0, 0, 0};
1184
1185 for (int k = 0; k < 5; k++) {
1186
1187 /* down[k] = (m[k]*m[k]-s)*(m[k]*m[k]-s)+eps*eps;
1188 upreal[k] = (m[k]*m[k]-s)/down[k];
1189 upimag[k] = -1.0f * eps/down[k]; */
1190
1191 double dm2 = m[k] * m[k] - s;
1192 if (fabs(dm2) < eps && dm2 <= 0) dm2 = -eps;
1193 if (fabs(dm2) < eps && dm2 > 0) dm2 = eps;
1194 upreal[k] = 1.0f / dm2;
1195 upimag[k] = 0;
1196 }
1197
1198 double tmp1x = g1[i] * g1[j] * upreal[0] + g2[i] * g2[j] * upreal[1] + g3[i] * g3[j] * upreal[2] + g4[i] * g4[j] * upreal[3] + g5[i]
1199 * g5[j] * upreal[4];
1200 double tmp1y = g1[i] * g1[j] * upimag[0] + g2[i] * g2[j] * upimag[1] + g3[i] * g3[j] * upimag[2] + g4[i] * g4[j] * upimag[3] + g5[i]
1201 * g5[j] * upimag[4];
1202
1203 double tmp2 = 0;
1204 if (i == 0) {
1205 tmp2 = f1[j] * (1 + 3.92637) / (s + 3.92637);
1206 }
1207 if (j == 0) {
1208 tmp2 = f1[i] * (1 + 3.92637) / (s + 3.92637);
1209 }
1210 double tmp3 = (s - 0.5 * mpi * mpi) * (1 + 0.15) / (s + 0.15);
1211
1212 Kijx = (tmp1x + tmp2) * tmp3;
1213 Kijy = (tmp1y) * tmp3;
1214
1215 std::complex<double> Kij(Kijx, Kijy);
1216 return Kij;
1217 }

◆ KPiSFormfactor() [1/3]

EvtComplex KPiSFormfactor ( const double sa,
const double sb,
const double sc,
const double r )
private

K pi S-wave form factor.

Definition at line 361 of file EvtD0ToKpipi0pi0.cc.

362 {
363 (void)r;
364 double m1430 = 1.463;
365 double sa0 = m1430 * m1430;
366 double w1430 = 0.233;
367 double q0 = (sa0 + sb - sc) * (sa0 + sb - sc) / (4 * sa0) - sb;
368 if (q0 < 0) q0 = 1e-16;
369 double qs = (sa + sb - sc) * (sa + sb - sc) / (4 * sa) - sb;
370 double q = sqrt(qs);
371 double Width = w1430 * q * m1430 / sqrt(sa * q0) * r / r;
372 double temp_R = atan(m1430 * Width / (sa0 - sa));
373 if (temp_R < 0) temp_R += math_pi;
374 double deltaR = -5.31 + temp_R;
375 double temp_F = atan(2 * 1.07 * q / (2 + (-1.8) * 1.07 * qs));
376 if (temp_F < 0) temp_F += math_pi;
377 double deltaF = 2.33 + temp_F;
378 EvtComplex cR(cos(deltaR), sin(deltaR));
379 EvtComplex cF(cos(deltaF), sin(deltaF));
380 EvtComplex amp = 0.8 * sin(deltaF) * cF + sin(deltaR) * cR * cF * cF;
381 return amp;
382 }

◆ KPiSFormfactor() [2/3]

EvtComplex KPiSFormfactor ( const double sa,
const double sb,
const double sc,
const double r )
private

K pi S-wave form factor.

Definition at line 292 of file EvtD0ToKpipipi.cc.

293 {
294 (void)r;
295 double m1430 = 1.463;
296 double sa0 = m1430 * m1430;
297 double w1430 = 0.233;
298 double q0 = (sa0 + sb - sc) * (sa0 + sb - sc) / (4 * sa0) - sb;
299 if (q0 < 0) q0 = 1e-16;
300 double qs = (sa + sb - sc) * (sa + sb - sc) / (4 * sa) - sb;
301 double q = sqrt(qs);
302 double Width = w1430 * q * m1430 / sqrt(sa * q0);
303 double temp_R = atan(m1430 * Width / (sa0 - sa));
304 if (temp_R < 0) temp_R += math_pi;
305 double deltaR = -5.31 + temp_R;
306 double temp_F = atan(2 * 1.07 * q / (2 + (-1.8) * 1.07 * qs));
307 if (temp_F < 0) temp_F += math_pi;
308 double deltaF = 2.33 + temp_F;
309 EvtComplex cR(cos(deltaR), sin(deltaR));
310 EvtComplex cF(cos(deltaF), sin(deltaF));
311 EvtComplex amp = 0.8 * sin(deltaF) * cF + sin(deltaR) * cR * cF * cF;
312 return amp;
313 }

◆ KPiSFormfactor() [3/3]

EvtComplex KPiSFormfactor ( const double sa,
const double sb,
const double sc,
const double r )
private

K pi S-wave form factor.

Definition at line 280 of file EvtDToKSpipipi.cc.

281 {
282 (void)r;
283 double m1430 = 1.463;
284 double sa0 = m1430 * m1430;
285 double w1430 = 0.233;
286 double q0 = (sa0 + sb - sc) * (sa0 + sb - sc) / (4 * sa0) - sb;
287 if (q0 < 0) q0 = 1e-16;
288 double qs = (sa + sb - sc) * (sa + sb - sc) / (4 * sa) - sb;
289 double q = sqrt(qs);
290 double width_ = w1430 * q * m1430 / sqrt(sa * q0);
291 double temp_R = atan(m1430 * width_ / (sa0 - sa));
292 if (temp_R < 0) temp_R += math_pi;
293 double deltaR = -5.31 + temp_R;
294 double temp_F = atan(2 * 1.07 * q / (2 + (-1.8) * 1.07 * qs));
295 if (temp_F < 0) temp_F += math_pi;
296 double deltaF = 2.33 + temp_F;
297 EvtComplex cR(cos(deltaR), sin(deltaR));
298 EvtComplex cF(cos(deltaF), sin(deltaF));
299 EvtComplex amp = 0.8 * sin(deltaF) * cF + sin(deltaR) * cR * cF * cF;
300 return amp;
301 }

◆ KPiSLASS()

void KPiSLASS ( const double sa,
const double sb,
const double sc,
double prop[2] )
private

LASS Parameterization Kpi S-Wave Function.

Definition at line 1237 of file EvtDToKSpipi0pi0.cc.

1238 {
1239 const double m1430 = 1.441;
1240 const double sa0 = 2.076481; // m1430*m1430;
1241 const double w1430 = 0.193;
1242 const double Lass1 = 0.25 / sa0;
1243 double tmp = sb - sc;
1244 double tmp1 = sa0 + tmp;
1245 double q0 = fabs(Lass1 * tmp1 * tmp1 - sb);
1246 double tmp2 = sa + tmp;
1247 double qs = fabs(0.25 * tmp2 * tmp2 / sa - sb);
1248 double q = sqrt(qs);
1249 double width = w1430 * q * m1430 / sqrt(sa * q0);
1250 double temp_R = atan(m1430 * width / (sa0 - sa));
1251 if (temp_R < 0) temp_R += math_pi;
1252 double deltaR = -109.7 * math_pi / 180.0 + temp_R;
1253 double temp_F = atan(0.226 * q / (2.0 - 3.8194 * qs)); // 2.0*0.113 = 0.226; -33.8*0.113 = -3.8194
1254 if (temp_F < 0) temp_F += math_pi;
1255 double deltaF = 0.1 * math_pi / 180.0 + temp_F;
1256 double deltaS = deltaR + 2.0 * deltaF;
1257 double t1 = 0.96 * sin(deltaF);
1258 double t2 = sin(deltaR);
1259 double CF[2], CS[2];
1260 CF[0] = cos(deltaF);
1261 CF[1] = sin(deltaF);
1262 CS[0] = cos(deltaS);
1263 CS[1] = sin(deltaS);
1264 prop[0] = t1 * CF[0] + t2 * CS[0];
1265 prop[1] = t1 * CF[1] + t2 * CS[1];
1266
1267 }

◆ LASS()

EvtComplex LASS ( int id,
double resmass,
double reswidth )
private

Definition at line 240 of file EvtDToKSKpi0.cc.

241 {
242 int spin = 0;
243 double resmass2 = pow(resmass, 2);
244
245 EvtVector4R p1, p2, p3;
246 double mass_daug1 = 0, mass_daug2 = 0, mass_daug3 = 0;
247 if (id == 1) {
248 p1 = _pd[0];
249 mass_daug1 = pi0Mass;
250 p2 = _pd[1];
251 mass_daug2 = KpMass;
252 p3 = _pd[2];
253 mass_daug3 = KsMass;
254 }
255 if (id == 2) {
256 p1 = _pd[2];
257 mass_daug1 = KsMass;
258 p2 = _pd[0];
259 mass_daug2 = pi0Mass;
260 p3 = _pd[1];
261 mass_daug3 = KpMass;
262 }
263 if (id == 3) {
264 p1 = _pd[1];
265 mass_daug1 = KpMass;
266 p2 = _pd[2];
267 mass_daug2 = KsMass;
268 p3 = _pd[0];
269 mass_daug3 = pi0Mass;
270 }
271
272 double rMassSq = (p1 + p2).mass2();
273 double m12 = (p1 + p2).mass2();
274 double m13 = (p1 + p3).mass2();
275 double m23 = (p2 + p3).mass2();
276
277 double rMass = sqrt(rMassSq);
278 double frFactor = 1;
279 double fdFactor = 1;
280
281 double measureDaughterMoms = twoBodyCMmom(rMassSq, mass_daug1, mass_daug2);
282 double nominalDaughterMoms = twoBodyCMmom(resmass2, mass_daug1, mass_daug2);
283 if (spin != 0) {
284 frFactor = dampingFactorSquare(nominalDaughterMoms, spin, c_meson_radius_inter) / dampingFactorSquare(measureDaughterMoms, spin,
285 c_meson_radius_inter);
286 double measureDaughterMoms2 = twoBodyCMmom(c_motherMass * c_motherMass, rMass, mass_daug3);
287 double nominalDaughterMoms2 = twoBodyCMmom(c_motherMass * c_motherMass, resmass, mass_daug3);
288 fdFactor = dampingFactorSquare(nominalDaughterMoms2, spin, c_meson_radius_Dp) / dampingFactorSquare(measureDaughterMoms2, spin,
289 c_meson_radius_Dp);
290 }
291
292 double q = measureDaughterMoms;
293 double g = reswidth * pow(measureDaughterMoms / nominalDaughterMoms, 2.0 * spin + 1) * frFactor / sqrt(rMassSq);
294 g *= resmass;
295
296 const double _a = 0.113;
297 const double _r = -33.8;
298 const double _R = 1;
299 const double _phiR = -109.7 * 3.141592653 / 180.0;
300 const double _B = 0.96;
301 const double _phiB = 0.1 * 3.141592653 / 180.0;
302
303 double cot_deltaB = (1.0 / (_a * q)) + 0.5 * _r * q;
304 double qcot_deltaB = (1.0 / _a) + 0.5 * _r * q * q;
305
306 EvtComplex expi2deltaB = EvtComplex(qcot_deltaB, q) / EvtComplex(qcot_deltaB, -q);
307 EvtComplex resT = EvtComplex(cos(_phiR + 2 * _phiB), sin(_phiR + 2 * _phiB)) * _R;
308
309 EvtComplex prop = EvtComplex(1, 0) / EvtComplex(resmass2 - rMassSq, -(resmass) * g);
310 resT *= prop * (resmass2 * reswidth / nominalDaughterMoms) * expi2deltaB;
311
312 resT += EvtComplex(cos(_phiB), sin(_phiB)) * _B * (cos(_phiB) + cot_deltaB * sin(_phiB)) * sqrt(rMassSq) / EvtComplex(qcot_deltaB,
313 -q);
314
315 resT *= sqrt(frFactor * fdFactor);
316 resT *= spinFactor(spin, c_motherMass, mass_daug1, mass_daug2, mass_daug3, m12, m13, m23);
317
318 return resT;
319 }

◆ Lep() [1/3]

double Lep ( const double mtau,
int tauhel,
double q2,
double costau ) const

The function to calculate the Leptonic Amplitudes for B->Dtaunu decay of the scalar type contribution.

Parameters
mtaudaughter lepton mass.
tauhelhelicity of the lepton in the (l+nu) rest frame {+1,-1}.
q2q^2 of the decay (square of l+nu invariant mass).
costaucosine of the angle between D(*) meson and the lepton in the (l+nu) rest frame.
Returns
calculated amplitude value.

Definition at line 151 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

153 {
154 // sanity check
155 assert(chktauhel(tauhel));
156
157 if (tauhel == -1)return 0.;
158 if (tauhel == +1)return -2.*sqrt(q2) * v(mtau, q2);
159
160 // should never reach here ...
161 assert(0);
162 return 0.;
163 }

◆ Lep() [2/3]

double Lep ( const double mtau,
int tauhel,
int whel,
double q2,
double costau ) const

The function to calculate the Leptonic Amplitudes for B->D*taunu decay of the vector type contribution.

Parameters
mtaudaughter lepton mass.
tauhelhelicity of the lepton in the (l+nu) rest frame {+1,-1}.
whelhelicity of the virtual vector boson {+1,0,1,2}.
q2q^2 of the decay (square of l+nu invariant mass).
costaucosine of the angle between D(*) meson and the lepton in the (l+nu) rest frame.
Returns
calculated amplitude value.

Definition at line 128 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

131 {
132 // sanity check
133 assert(chktauhel(tauhel) && chkwhel(whel));
134
135 if (tauhel == -1 && whel == -1)return sqrt(2.*q2) * v(mtau, q2) * (1. - costau);
136 if (tauhel == -1 && whel == 0) return -2.*sqrt(q2) * v(mtau, q2) * sqrt(1 - costau * costau);
137 if (tauhel == -1 && whel == +1)return sqrt(2.*q2) * v(mtau, q2) * (1. + costau);
138 if (tauhel == -1 && whel == 2) return 0.;
139
140 if (tauhel == +1 && whel == -1)return -sqrt(2.) * mtau * v(mtau, q2) * sqrt(1. - costau * costau);
141 if (tauhel == +1 && whel == 0) return 2.*mtau * v(mtau, q2) * costau;
142 if (tauhel == +1 && whel == +1)return sqrt(2.) * mtau * v(mtau, q2) * sqrt(1 - costau * costau);
143 if (tauhel == +1 && whel == 2) return -2.*mtau * v(mtau, q2);
144
145 // should never reach here ...
146 assert(0);
147 return 0.;
148 }

◆ Lep() [3/3]

double Lep ( const double mtau,
int tauhel,
int whel1,
int whel2,
double q2,
double costau ) const

The function to calculate the Leptonic Amplitudes for B->D*taunu decay of the tensor type contribution.

Parameters
mtaudaughter lepton mass.
tauhelhelicity of the lepton in the (l+nu) rest frame {+1,-1}.
whel1helicity of the one virtual vector boson {+1,0,1,2}.
whel2helicity of the another virtual vector boson {+1,0,1,2}.
q2q^2 of the decay (square of l+nu invariant mass).
costaucosine of the angle between D(*) meson and the lepton in the (l+nu) rest frame.
Returns
calculated amplitude value. The tensor contribution is described by two vector contributions.

Definition at line 166 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

169 {
170 // sanity check
171 assert(chktauhel(tauhel) && chkwhel(whel1) && chkwhel(whel2));
172
173 if (whel1 == whel2)return 0;
174 if (whel1 > whel2)return -Lep(mtau, tauhel, whel2, whel1, q2, costau);
175
176 if (tauhel == -1 && whel1 == -1 && whel2 == 0) return -sqrt(2.) * mtau * v(mtau, q2) * (1. - costau);
177 if (tauhel == -1 && whel1 == -1 && whel2 == +1) return 2 * mtau * v(mtau, q2) * sqrt(1. - costau * costau);
178 if (tauhel == -1 && whel1 == -1 && whel2 == 2) return Lep(mtau, -1, -1, 0, q2, costau);
179 if (tauhel == -1 && whel1 == 0 && whel2 == +1) return -sqrt(2.) * mtau * v(mtau, q2) * (1. + costau);
180 if (tauhel == -1 && whel1 == 0 && whel2 == 2) return Lep(mtau, -1, -1, +1, q2, costau);
181 if (tauhel == -1 && whel1 == +1 && whel2 == 2) return Lep(mtau, -1, 0, +1, q2, costau);
182
183 if (tauhel == +1 && whel1 == -1 && whel2 == 0) return sqrt(2.*q2) * v(mtau, q2) * sqrt(1. - costau * costau);
184 if (tauhel == +1 && whel1 == -1 && whel2 == +1) return -2.*sqrt(q2) * v(mtau, q2) * costau;
185 if (tauhel == +1 && whel1 == -1 && whel2 == 2) return Lep(mtau, +1, -1, 0, q2, costau);
186 if (tauhel == +1 && whel1 == 0 && whel2 == +1) return -Lep(mtau, +1, -1, 0, q2, costau);
187 if (tauhel == +1 && whel1 == 0 && whel2 == 2) return Lep(mtau, +1, -1, +1, q2, costau);
188 if (tauhel == +1 && whel1 == +1 && whel2 == 2) return -Lep(mtau, +1, -1, 0, q2, costau);
189
190 // should never reach here ...
191 assert(0);
192 return 0.;
193 }

◆ Lmu()

EvtVector4R Lmu ( const EvtVector4R & p4a,
const EvtVector4R & p4b,
const EvtVector4R & p4c )

Function 4Vector Lmu.

Definition at line 390 of file EvtB0toKsKK.cc.

392 {
393 const double mc = p4c.mass();
394 const double mres = (p4a + p4b).mass();
395 const double mc2 = mc * mc;
396 const double mres2 = mres * mres;
397 const double s = (p4a + p4b + p4c) * (p4a + p4b + p4c);
398
399 const double N2 =
400 sqrt(s) /
401 (sqrt(s - ((mres + mc) * (mres + mc))) * sqrt(s - ((mres - mc) * (mres - mc))));
402
403 const EvtVector4R Lmu =
404 N2 * ((p4c - (p4a + p4b)) - ((p4c + (p4a + p4b)) * (mc2 - mres2) / s));
405
406 return Lmu;
407 }

◆ LorentzDotProduct()

double LorentzDotProduct ( const double * a1,
const double * a2 ) const
private

Four-vector dot product.

Definition at line 781 of file EvtD0ToKpipi0pi0.cc.

782 {
783 double dot = 0;
784 for (int i = 0; i != 4; i++) {
785 dot += a1[i] * a2[i] * G[i][i];
786 }
787 return dot;
788 }

◆ mag2()

double mag2 ( std::complex< double > x)
private

Definition at line 1949 of file EvtD0Topippim2pi0.cc.

1950 {
1951 double temp = x.real() * x.real() + x.imag() * x.imag();
1952 return temp;
1953 }

◆ mD()

double mD ( int Dhel) const

Daughter D(*) meson mass.

kinematics

Parameters
Dhelhelicity of the D(*) meson in the rest frame of the parent meson {+1,0,-1} for D* and 2 for D.
Returns
daughter D(*) meson mass corresponding to the Dhel.

Definition at line 500 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

501 {
502 assert(chkDhel(Dhel));
503 double mesonMass = m_mDst;
504 if (Dhel == 2) mesonMass = m_mD;
505 assert(mesonMass >= 0.);
506 return mesonMass;
507 }

◆ MIP_LineShape()

void MIP_LineShape ( double sa,
double pro[2] )
private

Definition at line 144 of file EvtDsToKKpi.cc.

145 {
146 double m0 = mass[2], cKK = width[2];
147 pro[0] = sqrt(1 / (((m0 * m0) - sa) * ((m0 * m0) - sa) + (cKK * m0 * sqrt(1 - 4 * mass_Kaon * mass_Kaon / sa)) * (cKK * m0 * sqrt(
148 1 - 4 * mass_Kaon * mass_Kaon / sa))));
149 pro[1] = 0;
150 }

◆ Mmunu()

EvtTensor4C Mmunu ( const EvtVector4R & p4a,
const EvtVector4R & p4b,
const EvtVector4R & p4c )

Function Tensor Mmunu.

Definition at line 468 of file EvtB0toKsKK.cc.

470 {
471 const EvtTensor4C Mmunu =
472 sqrt(3.0 / 2.0) *
473 (EvtGenFunctions::directProd(Lmu(p4a, p4b, p4c), Lmu(p4a, p4b, p4c)) +
474 (1.0 / 3.0 * gmunu_tilde(p4a, p4b, p4c)));
475
476 return Mmunu;
477 }

◆ Multiply()

EvtTensor4C Multiply ( const EvtTensor4C & t1,
const EvtTensor4C & t2 )

Function Tensor Multiply.

Definition at line 437 of file EvtB0toKsKK.cc.

439 {
440 EvtTensor4C t;
441 for (unsigned int i = 0; i < 4; i++)
442 for (unsigned int j = 0; j < 4; j++) {
443 const EvtComplex element =
444 t1.get(i, 0) * t2.get(0, j) +
445 t1.get(i, 1) * t2.get(1, j) +
446 t1.get(i, 2) * t2.get(2, j) +
447 t1.get(i, 3) * t2.get(3, j);
448 t.set(i, j, element);
449 }
450 return t;
451 }

◆ operator*() [1/3]

DualNumber operator* ( double a,
DualNumber b )
inline

multiplication of double and dual number

Definition at line 107 of file beamHelpers.h.

108 {
109 return DualNumber(a * b.x, a * b.dx);
110 }

◆ operator*() [2/3]

DualNumber operator* ( DualNumber a,
DualNumber b )
inline

multiplication of two dual numbers

Definition at line 100 of file beamHelpers.h.

101 {
102 return DualNumber(a.x * b.x, a.x * b.dx + b.x * a.dx);
103 }

◆ operator*() [3/3]

template<typename T>
GeneralVector< T > operator* ( T a,
GeneralVector< T > b )

product of scalar and general vector

Definition at line 171 of file beamHelpers.h.

172 {
173 return GeneralVector<T>(a * b.el[0], a * b.el[1], a * b.el[2]);
174 }

◆ operator+() [1/3]

DualNumber operator+ ( DualNumber a,
double b )
inline

addition of dual number and double

Definition at line 58 of file beamHelpers.h.

59 {
60 return DualNumber(a.x + b, a.dx);
61 }

◆ operator+() [2/3]

DualNumber operator+ ( DualNumber a,
DualNumber b )
inline

addition of dual numbers

Definition at line 51 of file beamHelpers.h.

52 {
53 return DualNumber(a.x + b.x, a.dx + b.dx);
54 }

◆ operator+() [3/3]

template<typename T>
GeneralVector< T > operator+ ( GeneralVector< T > a,
GeneralVector< T > b )

addition of two general vectors

Definition at line 155 of file beamHelpers.h.

156 {
157 return GeneralVector<T>(a.el[0] + b.el[0], a.el[1] + b.el[1], a.el[2] + b.el[2]);
158 }

◆ operator-() [1/3]

DualNumber operator- ( double a,
DualNumber b )
inline

subtraction of double and dual number

Definition at line 72 of file beamHelpers.h.

73 {
74 return DualNumber(a - b.x, -b.dx);
75 }

◆ operator-() [2/3]

DualNumber operator- ( DualNumber a,
double b )
inline

subtraction of dual number and double

Definition at line 65 of file beamHelpers.h.

66 {
67 return DualNumber(a.x - b, a.dx);
68 }

◆ operator-() [3/3]

DualNumber operator- ( DualNumber a,
DualNumber b )
inline

subtraction of two dual numbers

Definition at line 93 of file beamHelpers.h.

94 {
95 return DualNumber(a.x - b.x, a.dx - b.dx);
96 }

◆ operator/() [1/2]

DualNumber operator/ ( double a,
DualNumber b )
inline

division of double and dual number

Definition at line 79 of file beamHelpers.h.

80 {
81 return DualNumber(a / b.x, - a / (b.x * b.x) * b.dx);
82 }

◆ operator/() [2/2]

DualNumber operator/ ( DualNumber a,
DualNumber b )
inline

division of two dual numbers

Definition at line 86 of file beamHelpers.h.

87 {
88 return DualNumber(a.x / b.x, (a.dx * b.x - a.x * b.dx) / (b.x * b.x));
89 }

◆ OrbitalTensors()

std::vector< double > OrbitalTensors ( std::vector< double > pa,
std::vector< double > pb,
std::vector< double > pc,
double r,
int rank )
private

Definition at line 365 of file EvtD0Topippim2pi0.cc.

367 {
368 // relative momentum
369 std::vector<double> mr;
370
371 for (int i = 0; i < 4; i++) {
372 double temp = pb[i] - pc[i];
373 mr.push_back(temp);
374 }
375
376 // "Masses" of particles
377 double msa = contract_11_0(pa, pa);
378 double msb = contract_11_0(pb, pb);
379 double msc = contract_11_0(pc, pc);
380
381 // Q^2_abc
382 double top = msa + msb - msc;
383 double Q2abc = top * top / (4.0 * msa) - msb;
384
385 // Barrier factors
386 double Q_0 = 0.197321f / r;
387 double Q_02 = Q_0 * Q_0;
388 double Q_04 = Q_02 * Q_02;
389 // double Q_06 = Q_04*Q_02;
390 // double Q_08 = Q_04*Q_04;
391
392 double Q4abc = Q2abc * Q2abc;
393 // double Q6abc = Q4abc*Q2abc;
394 // double Q8abc = Q4abc*Q4abc;
395
396 double mB1 = sqrt(2.0f / (Q2abc + Q_02));
397 double mB2 = sqrt(13.0f / (Q4abc + (3.0f * Q_02) * Q2abc + 9.0f * Q_04));
398 // mB3 = &sqrt(277.0f/(Q6abc + (6.0f*Q_02)*Q4abc + (45.0f*Q_04)*Q2abc + 225.0f*Q_06));
399 // mB4 = &sqrt(12746.0f/(Q8abc + (10.0f*Q_02)*Q6abc + (135.0f*Q_04)*Q4abc + (1575.0f*Q_06)*Q2abc + 11025.0f*Q_08));
400
401 // Projection Operator 2-rank
402 std::vector<double> proj_uv;
403 for (int i = 0; i < 4; i++) {
404 for (int j = 0; j < 4; j++) {
405 int idx = i * 4 + j;
406 double temp = -g_uv[idx] + pa[i] * pa[j] / msa;
407 proj_uv.push_back(temp);
408 }
409 }
410
411 // Orbital Tensors
412 if (rank == 0) {
413 std::vector<double> t;
414 t.push_back(1.0);
415 return t;
416
417 } else if (rank < 3) {
418 std::vector<double> t_u;
419 std::vector<double> Bt_u;
420 for (int i = 0; i < 4; i++) {
421 double temp = 0;
422 for (int j = 0; j < 4; j++) {
423 int idx = i * 4 + j;
424 temp += -proj_uv[idx] * mr[j] * g_uv[j * 4 + j];
425 }
426 t_u.push_back(temp);
427 Bt_u.push_back(temp * mB1);
428 }
429 if (rank == 1) return Bt_u;
430
431 double t_u2 = contract_11_0(t_u, t_u);
432
433 std::vector<double> Bt_uv;
434 for (int i = 0; i < 4; i++) {
435 for (int j = 0; j < 4; j++) {
436 int idx = 4 * i + j;
437 double temp = t_u[i] * t_u[j] + (1.0 / 3.0) * proj_uv[idx] * t_u2;
438 Bt_uv.push_back(temp * mB2);
439 }
440 }
441 if (rank == 2) return Bt_uv;
442
443 }
444 return std::vector<double>();
445 }

◆ p()

double p ( const double & mab,
const double & M,
const double & mc )

Constants p.

Definition at line 583 of file EvtB0toKsKK.cc.

584 {
585 const double sab = mab * mab;
586 const double M_p_mc2 = (M + mc) * (M + mc);
587 const double M_m_mc2 = (M - mc) * (M - mc);
588
589 const double p = sqrt((sab - M_p_mc2) * (sab - M_m_mc2)) / (2.0 * mab);
590
591 return p;
592 }

◆ PDF()

double PDF ( double * Km,
double * Pip,
double * Pi01,
double * Pi02 )
private

Probability distribution function of the decay.

Definition at line 223 of file EvtD0ToKpipi0pi0.cc.

224 {
225 Km[0] = sqrt(mass_Kaon * mass_Kaon + Km[1] * Km[1] + Km[2] * Km[2] + Km[3] * Km[3]);
226 Pip[0] = sqrt(mass_Pion * mass_Pion + Pip[1] * Pip[1] + Pip[2] * Pip[2] + Pip[3] * Pip[3]);
227 Pi01[0] = sqrt(mass_Pi0 * mass_Pi0 + Pi01[1] * Pi01[1] + Pi01[2] * Pi01[2] + Pi01[3] * Pi01[3]);
228 Pi02[0] = sqrt(mass_Pi0 * mass_Pi0 + Pi02[1] * Pi02[1] + Pi02[2] * Pi02[2] + Pi02[3] * Pi02[3]);
229
230 EvtComplex PDF[68];
231 int g[3];
232 //-------PHSP---------
233 PDF[0] = PHSP(Km, Pip) + PHSP(Km, Pip);
234 PDF[1] = PHSP(Km, Pi01) + PHSP(Km, Pi02);
235 //-------D2PP,P2VP------
236// PDF[2] = D2PP_P2VP(Pi01,Pi02,Km,Pip,0) + D2PP_P2VP(Pi02,Pi01,Km,Pip,0);
237// PDF[3] = D2PP_P2VP(Pi01,Pip,Km,Pi02,10) + D2PP_P2VP(Pi02,Pip,Km,Pi01,10);
238// PDF[4] = D2PP_P2VP(Pip,Pi01,Km,Pi02,20) + D2PP_P2VP(Pip,Pi02,Km,Pi01,20);
239// PDF[5] = D2PP_P2VP(Pi01,Km,Pip,Pi02,1) + D2PP_P2VP(Pi02,Km,Pip,Pi01,1);
240// PDF[6] = D2PP_P2VP(Km,Pi01,Pip,Pi02,11) + D2PP_P2VP(Km,Pi02,Pip,Pi01,11);
241 //----------D2AP,A2VP--------------
242 g[0] = 1; g[1] = 1; g[2] = 0;
243 PDF[7] = D2AP_A2VP(Km, Pi01, Pip, Pi02, g, 0) + D2AP_A2VP(Km, Pi02, Pip, Pi01, g, 0);
244 g[2] = 2;
245 PDF[8] = D2AP_A2VP(Km, Pi01, Pip, Pi02, g, 0) + D2AP_A2VP(Km, Pi02, Pip, Pi01, g, 0);
246 g[2] = 0;
247 PDF[9] = D2AP_A2VP(Pip, Pi01, Km, Pi02, g, 1) + D2AP_A2VP(Pip, Pi02, Km, Pi01, g, 1);
248// g[2] = 2;
249// PDF[10] = D2AP_A2VP(Pip,Pi01,Km,Pi02,g,1) + D2AP_A2VP(Pip,Pi02,Km,Pi01,g,1);
250// g[2] = 0;
251// PDF[11] = D2AP_A2VP(Pi01,Pip,Km,Pi02,g,21) + D2AP_A2VP(Pi02,Pip,Km,Pi01,g,21);
252// g[2] = 2;
253// PDF[12] = D2AP_A2VP(Pi01,Pip,Km,Pi02,g,21) + D2AP_A2VP(Pi02,Pip,Km,Pi01,g,21);
254 g[2] = 0;
255 PDF[13] = D2AP_A2VP(Pi01, Pi02, Km, Pip, g, 31) + D2AP_A2VP(Pi02, Pi01, Km, Pip, g, 31);
256 g[2] = 2;
257 PDF[14] = D2AP_A2VP(Pi01, Pi02, Km, Pip, g, 31) + D2AP_A2VP(Pi02, Pi01, Km, Pip, g, 31);
258 g[2] = 0;
259 PDF[15] = D2AP_A2VP(Pi01, Km, Pip, Pi02, g, 3) + D2AP_A2VP(Pi02, Km, Pip, Pi01, g, 3);
260// g[2] = 2;
261// PDF[16] = D2AP_A2VP(Pi01,Km,Pip,Pi02,g,3) + D2AP_A2VP(Pi02,Km,Pip,Pi01,g,3);
262 g[0] = 1; g[1] = 0; g[2] = 0;
263// PDF[17] = D2AP_A2VP(Km,Pi01,Pip,Pi02,g,0) + D2AP_A2VP(Km,Pi02,Pip,Pi01,g,0);
264// g[2] = 2;
265// PDF[18] = D2AP_A2VP(Km,Pi01,Pip,Pi02,g,0) + D2AP_A2VP(Km,Pi02,Pip,Pi01,g,0);
266 g[2] = 0;
267 PDF[19] = D2AP_A2VP(Pip, Pi01, Km, Pi02, g, 1) + D2AP_A2VP(Pip, Pi02, Km, Pi01, g, 1);
268// g[2] = 2;
269// PDF[20] = D2AP_A2VP(Pip,Pi01,Km,Pi02,g,1) + D2AP_A2VP(Pip,Pi02,Km,Pi01,g,1);
270// g[2] = 0;
271// PDF[21] = D2AP_A2VP(Pi01,Pip,Km,Pi02,g,21) + D2AP_A2VP(Pi02,Pip,Km,Pi01,g,21);
272// g[2] = 2;
273// PDF[22] = D2AP_A2VP(Pi01,Pip,Km,Pi02,g,21) + D2AP_A2VP(Pi02,Pip,Km,Pi01,g,21);
274 g[2] = 0;
275 PDF[23] = D2AP_A2VP(Pi01, Pi02, Km, Pip, g, 31) + D2AP_A2VP(Pi02, Pi01, Km, Pip, g, 31);
276 g[2] = 2;
277 PDF[24] = D2AP_A2VP(Pi01, Pi02, Km, Pip, g, 31) + D2AP_A2VP(Pi02, Pi01, Km, Pip, g, 31);
278// g[2] = 0;
279// PDF[25] = D2AP_A2VP(Pi01,Km,Pip,Pi02,g,3) + D2AP_A2VP(Pi02,Km,Pip,Pi01,g,3);
280 g[2] = 2;
281 PDF[26] = D2AP_A2VP(Pi01, Km, Pip, Pi02, g, 3) + D2AP_A2VP(Pi02, Km, Pip, Pi01, g, 3);
282 //--------D2AP,A2SP-----------------------------------
283// PDF[27] = D2AP_A2SP(Km,Pi01,Pip,Pi02,0) + D2AP_A2SP(Km,Pi02,Pip,Pi01,0);
284// PDF[28] = D2AP_A2SP(Km,Pip,Pi01,Pi02,10) + D2AP_A2SP(Km,Pip,Pi02,Pi01,10);
285 PDF[29] = D2AP_A2SP(Pi01, Pi02, Km, Pip, 1) + D2AP_A2SP(Pi02, Pi01, Km, Pip, 1);
286// PDF[30] = D2AP_A2SP(Pi01,Pip,Km,Pi02,11) + D2AP_A2SP(Pi02,Pip,Km,Pi01,11);
287// PDF[31] = D2AP_A2SP(Pip,Pi01,Km,Pi02,21) + D2AP_A2SP(Pip,Pi02,Km,Pi01,21);
288// PDF[32] = D2AP_A2SP(Pi01,Km,Pip,Pi02,31) + D2AP_A2SP(Pi02,Km,Pip,Pi01,31);
289// PDF[33] = D2AP_A2SP(Pip,Km,Pi01,Pi02,41) + D2AP_A2SP(Pip,Km,Pi02,Pi01,41);
290 //--------D2VS----------------------------
291 PDF[34] = D2VS(Pip, Pi01, Km, Pi02, 1, 0) + D2VS(Pip, Pi02, Km, Pi01, 1, 0);
292 PDF[35] = D2VS(Km, Pi01, Pip, Pi02, 1, 1) + D2VS(Km, Pi02, Pip, Pi01, 1, 1);
293 PDF[36] = D2VS(Km, Pip, Pi01, Pi02, 1, 11) + D2VS(Km, Pip, Pi02, Pi01, 1, 11);
294// PDF[37] = D2VS(Pi01,Pi02,Km,Pip,0,10) + D2VS(Pi02,Pi01,Km,Pip,0,10);
295// PDF[38] = D2VS(Pip,Pi01,Km,Pi02,0,0) + D2VS(Pip,Pi02,Km,Pi01,0,0);
296// PDF[39] = D2VS(Km,Pip,Pi01,Pi02,0,11) + D2VS(Km,Pip,Pi02,Pi01,0,11);
297// PDF[40] = D2VS(Km,Pi01,Pip,Pi02,0,1) + D2VS(Km,Pi02,Pip,Pi01,0,1);
298 //---------D2VP,V2VP----------------------
299 PDF[41] = D2VP_V2VP(Pi01, Pip, Km, Pi02, 0) + D2VP_V2VP(Pi02, Pip, Km, Pi01, 0);
300// PDF[42] = D2VP_V2VP(Pip,Pi01,Km,Pi02,10) + D2VP_V2VP(Pip,Pi02,Km,Pi01,10);
301// PDF[43] = D2VP_V2VP(Pi01,Pi02,Km,Pip,20) + D2VP_V2VP(Pi02,Pi01,Km,Pip,20);
302// PDF[44] = D2VP_V2VP(Pi01,Km,Pip,Pi02,1) + D2VP_V2VP(Pi02,Km,Pip,Pi01,1);
303// PDF[45] = D2VP_V2VP(Km,Pi01,Pip,Pi02,2) + D2VP_V2VP(Km,Pi02,Pip,Pi01,2);
304 //-----------D2VV--------------------------
305 g[0] = 1; g[1] = 1; g[2] = 0;
306 PDF[46] = D2VV(Km, Pi01, Pip, Pi02, g, 0) + D2VV(Km, Pi02, Pip, Pi01, g, 0);
307 g[2] = 1;
308 PDF[47] = D2VV(Km, Pi01, Pip, Pi02, g, 0) + D2VV(Km, Pi02, Pip, Pi01, g, 0);
309 g[2] = 2;
310 PDF[48] = D2VV(Km, Pi01, Pip, Pi02, g, 0) + D2VV(Km, Pi02, Pip, Pi01, g, 0);
311 g[0] = 0; g[1] = 1; g[2] = 0;
312// PDF[49] = D2VV(Km,Pi01,Pip,Pi02,g,0) + D2VV(Km,Pi02,Pip,Pi01,g,0);
313 g[2] = 1;
314 PDF[50] = D2VV(Km, Pi01, Pip, Pi02, g, 0) + D2VV(Km, Pi02, Pip, Pi01, g, 0);
315 g[2] = 2;
316 PDF[51] = D2VV(Km, Pi01, Pip, Pi02, g, 0) + D2VV(Km, Pi02, Pip, Pi01, g, 0);
317 g[0] = 1; g[1] = 0; g[2] = 0;
318// PDF[52] = D2VV(Km,Pi01,Pip,Pi02,g,0) + D2VV(Km,Pi02,Pip,Pi01,g,0);
319// g[2] = 1;
320// PDF[53] = D2VV(Km,Pi01,Pip,Pi02,g,0) + D2VV(Km,Pi02,Pip,Pi01,g,0);
321 g[2] = 2;
322 PDF[54] = D2VV(Km, Pi01, Pip, Pi02, g, 0) + D2VV(Km, Pi02, Pip, Pi01, g, 0);
323 g[0] = 1; g[1] = 0; g[2] = 0;
324// PDF[55] = D2VV(Km,Pip,Pi01,Pi01,g,1) + D2VV(Km,Pip,Pi02,Pi01,g,1);
325// g[2] = 1;
326// PDF[56] = D2VV(Km,Pip,Pi01,Pi01,g,1) + D2VV(Km,Pip,Pi02,Pi01,g,1);
327// g[2] = 2;
328// PDF[57] = D2VV(Km,Pip,Pi01,Pi01,g,1) + D2VV(Km,Pip,Pi02,Pi01,g,1);
329 g[0] = 0; g[1] = 0; g[2] = 0;
330// PDF[58] = D2VV(Km,Pip,Pi01,Pi01,g,1) + D2VV(Km,Pip,Pi02,Pi01,g,1);
331// g[2] = 1;
332// PDF[59] = D2VV(Km,Pip,Pi01,Pi01,g,1) + D2VV(Km,Pip,Pi02,Pi01,g,1);
333// g[2] = 2;
334// PDF[60] = D2VV(Km,Pip,Pi01,Pi01,g,1) + D2VV(Km,Pip,Pi02,Pi01,g,1);
335 g[0] = 0; g[1] = 0; g[2] = 0;
336 PDF[61] = D2VV(Km, Pi01, Pip, Pi02, g, 0) + D2VV(Km, Pi02, Pip, Pi01, g, 0);
337 g[2] = 1;
338// PDF[62] = D2VV(Km,Pi01,Pip,Pi02,g,0) + D2VV(Km,Pi02,Pip,Pi01,g,0);
339 g[2] = 2;
340// PDF[63] = D2VV(Km,Pi01,Pip,Pi02,g,0) + D2VV(Km,Pi02,Pip,Pi01,g,0);
341 //----------D2TS--------------------
342// PDF[64] = D2TS(Km,Pip,Pi01,Pi02,0) + D2TS(Km,Pip,Pi02,Pi01,0);
343// PDF[65] = D2TS(Km,Pi01,Pip,Pi02,10) + D2TS(Km,Pi02,Pip,Pi01,10);
344 PDF[66] = D2TS(Pi02, Pi01, Km, Pip, 1) + D2TS(Pi01, Pi02, Km, Pip, 1);
345 PDF[67] = D2TS(Pip, Pi01, Km, Pi02, 11) + D2TS(Pip, Pi02, Km, Pi01, 11);
346
347//------------------------------------------
348 EvtComplex cof;
349 EvtComplex pdf, module;
350 pdf = EvtComplex(0, 0);
351 for (int i = 0; i < 68; i++) {
352 if (mod[i] == 0) continue;
353 cof = EvtComplex(rho[i] * cos(phi[i]), rho[i] * sin(phi[i]));
354 pdf = pdf + cof * PDF[i];
355 }
356 module = conj(pdf) * pdf;
357 double value;
358 value = real(module);
359 return (value <= 0) ? 1e-20 : value;
360 }

◆ PDstar()

double PDstar ( const EvtBSemiTauonicHelicityAmplitudeCalculator & BSTD,
const double mtau )

Function calculates the polarization of D*, longitudinal/(longitudinal + transverse), in B->D*taunu decay.

Parameters
BSTDhelicity ampliutude calculator initialized properly by user.
mtaudaughter tau lepton mass for B->Dtaunu decay.

Definition at line 187 of file EvtBSemiTauonicDecayRateCalculator.cc.

188 {
189 double transverse(0), longitudinal(0);
190 transverse += Gamma(BSTD, mtau, -1, -1);
191 transverse += Gamma(BSTD, mtau, +1, -1);
192 transverse += Gamma(BSTD, mtau, -1, +1);
193 transverse += Gamma(BSTD, mtau, +1, +1);
194 longitudinal += Gamma(BSTD, mtau, -1, 0);
195 longitudinal += Gamma(BSTD, mtau, +1, 0);
196 return longitudinal / (longitudinal + transverse);
197 }

◆ pf()

double pf ( const EvtBSemiTauonicHelicityAmplitudeCalculator & BSTD,
double mtau,
int Dhel,
double w )

Phase space factor, which is multiplied to the helicity amplitude to calculate the decay rate.

Parameters
BSTDhelicity ampliutude calculator initialized properly by user.
mtaudaughter tau lepton mass for B->Dtaunu decay.
Dhelhelicity of the D(*) meson in the rest frame of the parent meson {+1,0,-1} for D* and 2 for D.
wvelocity transfer variable.

Definition at line 199 of file EvtBSemiTauonicDecayRateCalculator.cc.

201 {
202 return 1. / (2 * BSTD.getMB()) * BSTD.getMB() * BSTD.getMB() * BSTD.r(Dhel) * BSTD.r(Dhel)
203 * BSTD.v(mtau, BSTD.q2(Dhel, w)) * BSTD.v(mtau, BSTD.q2(Dhel, w))
204 * sqrt(w * w - 1) / (64 * M_PI * M_PI * M_PI);
205 }

◆ PHSP() [1/3]

EvtComplex PHSP ( double * Km,
double * Pip )
private

Definition at line 702 of file EvtD0ToKpipi0pi0.cc.

703 {
704 EvtComplex amp_PDF(0, 0);
705 double sa, sb, sc;
706 double KPi[4];
707 for (int i = 0; i != 4; i++) {
708 KPi[i] = P1[i] + P2[i];
709 }
710 sa = LorentzDotProduct(KPi, KPi);
711 sb = LorentzDotProduct(P1, P1);
712 sc = LorentzDotProduct(P2, P2);
713 amp_PDF = KPiSFormfactor(sa, sb, sc, rRes);
714 return amp_PDF;
715 }

◆ PHSP() [2/3]

EvtComplex PHSP ( double * Km,
double * Pip )
private

Definition at line 624 of file EvtD0ToKpipipi.cc.

625 {
626 EvtComplex amp_PDF(0, 0);
627 double sa, sb, sc;
628 double KPi[4];
629 for (int i = 0; i != 4; i++) {
630 KPi[i] = Km[i] + Pip[i];
631 }
632 sa = dot(KPi, KPi);
633 sb = dot(Km, Km);
634 sc = dot(Pip, Pip);
635 amp_PDF = KPiSFormfactor(sa, sb, sc, rRes);
636 return amp_PDF;
637 }

◆ PHSP() [3/3]

EvtComplex PHSP ( double Km[],
double Pip[] )
private

Definition at line 410 of file EvtDToKSpipipi.cc.

411 {
412 EvtComplex amp_PDF(0, 0);
413 double sa, sb, sc;
414 double KPi[4];
415 for (int i = 0; i != 4; i++) {
416 KPi[i] = Km[i] + Pip[i];
417 }
418 sa = dot(KPi, KPi);
419 sb = dot(Km, Km);
420 sc = dot(Pip, Pip);
421 amp_PDF = KPiSFormfactor(sa, sb, sc, 3.0);
422 return amp_PDF;
423 }

◆ ProjectionTensors()

std::vector< double > ProjectionTensors ( std::vector< double > pa,
int rank )
private

Definition at line 448 of file EvtD0Topippim2pi0.cc.

449 {
450 double msa = contract_11_0(pa, pa);
451
452 // Projection Operator 2-rank
453 std::vector<double> proj_uv;
454 for (int i = 0; i < 4; i++) {
455 for (int j = 0; j < 4; j++) {
456 int idx = i * 4 + j;
457 double temp = -g_uv[idx] + pa[i] * pa[j] / msa;
458 proj_uv.push_back(temp);
459 }
460 }
461
462 // Orbital Tensors
463 if (rank == 0) {
464 std::vector<double> t;
465 t.push_back(1.0);
466 return t;
467
468 } else if (rank == 1) {
469 return proj_uv;
470 } else if (rank == 2) {
471 std::vector<double> proj_uvmn;
472 for (int i = 0; i < 4; i++) {
473 for (int j = 0; j < 4; j++) {
474 for (int k = 0; k < 4; k++) {
475 for (int l = 0; l < 4; l++) {
476
477 int idx1_1 = 4 * i + k;
478 int idx1_2 = 4 * i + l;
479 int idx1_3 = 4 * i + j;
480
481 int idx2_1 = 4 * j + l;
482 int idx2_2 = 4 * j + k;
483 int idx2_3 = 4 * k + l;
484
485 double temp = (1.0 / 2.0) * (proj_uv[idx1_1] * proj_uv[idx2_1] + proj_uv[idx1_2] * proj_uv[idx2_2]) -
486 (1.0 / 3.0) * proj_uv[idx1_3] * proj_uv[idx2_3];
487 proj_uvmn.push_back(temp);
488 }
489 }
490 }
491 }
492 return proj_uvmn;
493
494 }
495 return std::vector<double>();
496 }

◆ propagator()

void propagator ( double mass,
double width,
double sx,
double prop[2] )
private

Definition at line 396 of file EvtDsToKKpi.cc.

397 {
398 double a[2], b[2];
399 a[0] = 1;
400 a[1] = 0;
401 b[0] = mass_param * mass_param - sx;
402 b[1] = -mass_param * width_param;
403 Com_Divide(a, b, prop);
404 }

◆ propagator980()

void propagator980 ( double mass,
double sx,
double * sb,
double * sc,
double prop[2] )
private

Definition at line 461 of file EvtDsToKKpi.cc.

462 {
463 double unit[2] = {1.0};
464 double ci[2] = {0, 1};
465 double rho1[2];
466 Flatte_rhoab(sx, sb[0], sc[0], rho1);
467 double rho2[2];
468 Flatte_rhoab(sx, sb[1], sc[1], rho2);
469 double gK_f980 = 0.69466, gPi_f980 = 0.165;
470 double tmp1[2] = {gK_f980, 0};
471 double tmp11[2];
472 double tmp2[2] = {gPi_f980, 0};
473 double tmp22[2];
474 Com_Multi(tmp1, rho1, tmp11);
475 Com_Multi(tmp2, rho2, tmp22);
476 double tmp3[2] = {tmp11[0] + tmp22[0], tmp11[1] + tmp22[1]};
477 double tmp31[2];
478 Com_Multi(tmp3, ci, tmp31);
479 double tmp4[2] = {mass_param* mass_param - sx - tmp31[0], -1.0 * tmp31[1]};
480 Com_Divide(unit, tmp4, prop);
481 }

◆ propagatora0980()

void propagatora0980 ( double mass,
double sx,
double * sb,
double * sc,
double prop[2] )
private

Definition at line 483 of file EvtDsToKKpi.cc.

484 {
485 double unit[2] = {1.0};
486 double ci[2] = {0, 1};
487 double rho1[2];
488 Flatte_rhoab(sx, sb[0], sc[0], rho1);
489 double rho2[2];
490 Flatte_rhoab(sx, sb[1], sc[1], rho2);
491 double gKK_a980 = 0.892 * 0.341, gPiEta_a980 = 0.341;
492 double tmp1[2] = {gKK_a980, 0};
493 double tmp11[2];
494 double tmp2[2] = {gPiEta_a980, 0};
495 double tmp22[2];
496 Com_Multi(tmp1, rho1, tmp11);
497 Com_Multi(tmp2, rho2, tmp22);
498 double tmp3[2] = {tmp11[0] + tmp22[0], tmp11[1] + tmp22[1]};
499 double tmp31[2];
500 Com_Multi(tmp3, ci, tmp31);
501 double tmp4[2] = {mass_param* mass_param - sx - tmp31[0], -1.0 * tmp31[1]};
502 Com_Divide(unit, tmp4, prop);
503 }

◆ propagatorCBW()

void propagatorCBW ( double mass,
double width,
double sx,
double prop[2] )
private

Definition at line 248 of file EvtDsToKpipi.cc.

249 {
250 double a[2], b[2];
251 a[0] = 1;
252 a[1] = 0;
253 b[0] = mass_param * mass_param - sx;
254 b[1] = -mass_param * width_param;
255 Com_Divide(a, b, prop);
256 }

◆ propagatorFlatte() [1/4]

EvtComplex propagatorFlatte ( double mass,
double width,
double sx,
double * sb,
double * sc )
private

Definition at line 382 of file EvtD0TopipiEta.cc.

383 {
384 (void)width;
385 const double g1sq = 0.5468 * 0.5468;
386 const double g2sq = 0.23 * 0.23;
387 EvtComplex rho1 = Flatte_rhoab(sx, sb[0], sc[0]);
388 EvtComplex rho2 = Flatte_rhoab(sx, sb[1], sc[1]);
389 EvtComplex prop = 1.0 / (mass * mass - sx - ci * (g1sq * rho1 + g2sq * rho2));
390 return prop;
391 }

◆ propagatorFlatte() [2/4]

void propagatorFlatte ( double mass,
double width,
double sx,
double * sb,
double * sc,
double prop[2] )
private

Definition at line 439 of file EvtDsToKKpi.cc.

441 {
442 double unit[2] = {1.0};
443 double ci[2] = {0, 1};
444 double rho1[2];
445 Flatte_rhoab(sx, sb[0], sc[0], rho1);
446 double rho2[2];
447 Flatte_rhoab(sx, sb[1], sc[1], rho2);
448 double g1_f980 = 0.165, g2_f980 = 0.69465;
449 double tmp1[2] = {g1_f980, 0};
450 double tmp11[2];
451 double tmp2[2] = {g2_f980, 0};
452 double tmp22[2];
453 Com_Multi(tmp1, rho1, tmp11);
454 Com_Multi(tmp2, rho2, tmp22);
455 double tmp3[2] = {tmp11[0] + tmp22[0], tmp11[1] + tmp22[1]};
456 double tmp31[2];
457 Com_Multi(tmp3, ci, tmp31);
458 double tmp4[2] = {mass_param* mass_param - sx - tmp31[0], -1.0 * tmp3[1]};
459 Com_Divide(unit, tmp4, prop);
460 }

◆ propagatorFlatte() [3/4]

void propagatorFlatte ( double mass,
double width,
double sa,
double prop[2] )
private

Definition at line 307 of file EvtDsToKpipi.cc.

308 {
309
310 double q2_Pi, q2_Ka;
311 double rhoPi[2] = {0, 0}, rhoKa[2] = {0, 0};
312
313 q2_Pi = 0.25 * sa - mPi * mPi;
314 q2_Ka = 0.25 * sa - mKa * mKa;
315
316 if (q2_Pi > 0) {
317 rhoPi[0] = 2.0 * sqrt(q2_Pi / sa);
318 rhoPi[1] = 0.0;
319 }
320 if (q2_Pi <= 0) {
321 rhoPi[0] = 0.0;
322 rhoPi[1] = 2.0 * sqrt(-q2_Pi / sa);
323 }
324
325 if (q2_Ka > 0) {
326 rhoKa[0] = 2.0 * sqrt(q2_Ka / sa);
327 rhoKa[1] = 0.0;
328 }
329 if (q2_Ka <= 0) {
330 rhoKa[0] = 0.0;
331 rhoKa[1] = 2.0 * sqrt(-q2_Ka / sa);
332 }
333
334 double a[2], b[2];
335 a[0] = 1;
336 a[1] = 0;
337 b[0] = mass_param * mass_param - sa + 0.165 * rhoPi[1] + 0.69465 * rhoKa[1];
338 b[1] = - (0.165 * rhoPi[0] + 0.69465 * rhoKa[0]);
339 Com_Divide(a, b, prop);
340 }

◆ propagatorFlatte() [4/4]

EvtComplex propagatorFlatte ( double mass,
double width,
double sx,
double * sb,
double * sc )
private

Definition at line 360 of file EvtDTopipi0Eta.cc.

361 {
362 const double g1sq = 0.5468 * 0.5468;
363 const double g2sq = 0.23 * 0.23;
364 EvtComplex rho1 = Flatte_rhoab(sx, sb[0], sc[0]);
365 EvtComplex rho2 = Flatte_rhoab(sx, sb[1], sc[1]);
366 EvtComplex prop = 1.0 / (mass * mass - sx - ci * (g1sq * rho1 + g2sq * rho2));
367 return prop;
368 }

◆ propagatorGS() [1/8]

EvtComplex propagatorGS ( double mass,
double width,
const double sa,
const double sb,
const double sc,
const double r,
const int l ) const
private

Gounaris-Sakurai lineshape function.

Definition at line 767 of file EvtD0ToKpipi0pi0.cc.

769 {
770 EvtComplex ci(0, 1);
771 double q = Qabcs(sa, sb, sc);
772 double sa0 = Mass * Mass;
773 double q0 = Qabcs(sa0, sb, sc);
774 q = sqrt(q);
775 q0 = sqrt(q0);
776 EvtComplex prop = (1 + d(Mass, q0) * Width / Mass) / (Mass * Mass - sa + Width * f(Mass, sa, q0,
777 q) - ci * Mass * Width * energyDependentWidth(Mass,
778 sa, sb, sc, r, l));
779 return prop;
780 }

◆ propagatorGS() [2/8]

EvtComplex propagatorGS ( double mass,
double width,
const double sa,
const double sb,
const double sc,
const double r,
const int l ) const
private

Gounaris-Sakurai lineshape Function.

Definition at line 691 of file EvtD0ToKpipipi.cc.

692 {
693 EvtComplex ci(0, 1);
694 double q = Qabcs(sa, sb, sc);
695 double sa0 = Mass * Mass;
696 double q0 = Qabcs(sa0, sb, sc);
697 q = sqrt(q);
698 q0 = sqrt(q0);
699 EvtComplex prop = (1 + d(Mass, q0) * Width / Mass) / (Mass * Mass - sa + Width * f(Mass, sa, q0, q) - ci * Mass * Width * wid(Mass,
700 sa, sb, sc, r, l));
701 return prop;
702 }

◆ propagatorGS() [3/8]

EvtComplex propagatorGS ( double mass,
double width,
double sa,
double sb,
double sc,
double r,
int l )
private

Definition at line 357 of file EvtD0TopipiEta.cc.

358 {
359 double q = Qabcs(sa, sb, sc);
360 double sa0 = mass * mass;
361 double q0 = Qabcs(sa0, sb, sc);
362 q = sqrt(q);
363 q0 = sqrt(q0);
364 EvtComplex prop = (1 + d(mass, q0) * width / mass) / (mass * mass - sa + width * f(mass, sa, q0, q) - ci * mass * width * wid(mass,
365 sa, sb, sc, r, l));
366 return prop;
367 }

◆ propagatorGS() [4/8]

void propagatorGS ( double mass,
double width,
double sa,
double sb,
double sc,
double r,
int l,
double prop[2] )
private

Definition at line 615 of file EvtDsToKKpi.cc.

617 {
618 double a[2], b[2];
619 double q = (sa + sb - sc) * (sa + sb - sc) / (4 * sa) - sb;
620 double sa0 = mass_param * mass_param;
621 double q0 = (sa0 + sb - sc) * (sa0 + sb - sc) / (4 * sa0) - sb;
622 if (q < 0) q = 1e-16;
623 if (q0 < 0) q0 = 1e-16;
624 q = sqrt(q);
625 q0 = sqrt(q0);
626 a[0] = 1 + d(mass_param, q0) * width_param / mass_param;
627 a[1] = 0;
628 b[0] = mass_param * mass_param - sa + width_param * f(mass_param, sa, q0, q);
629 b[1] = -mass_param * width_param * wid(mass_param, sa, sb, sc, r, l);
630 Com_Divide(a, b, prop);
631 }

◆ propagatorGS() [5/8]

void propagatorGS ( double mass,
double width,
double sa,
double sb,
double sc,
double r2,
double prop[2] )
private

Definition at line 341 of file EvtDsToKpipi.cc.

342 {
343 double a[2], b[2];
344 double mass2 = mass_param * mass_param;
345 double tmp = sb - sc;
346 double tmp1 = sa + tmp;
347 double q2 = 0.25 * tmp1 * tmp1 / sa - sb;
348 if (q2 < 0) q2 = 1e-16;
349
350 double tmp2 = mass2 + tmp;
351 double q02 = 0.25 * tmp2 * tmp2 / mass2 - sb;
352 if (q02 < 0) q02 = 1e-16;
353
354 double q = sqrt(q2);
355 double q0 = sqrt(q02);
356 double m = sqrt(sa);
357 double q03 = q0 * q02;
358 double tmp3 = log(mass_param + 2 * q0) + 1.2760418309; // log(mass_2Pion) = 1.2760418309;
359
360 double h = GS1 * q / m * (log(m + 2 * q) + 1.2760418309);
361 double h0 = GS1 * q0 / mass_param * tmp3;
362 double dh = h0 * (0.125 / q02 - 0.5 / mass2) + GS3 / mass2;
363 double d = GS2 / q02 * tmp3 + GS3 * mass_param / q0 - GS4 * mass_param / q03;
364 double f = mass2 / q03 * (q2 * (h - h0) + (mass2 - sa) * q02 * dh);
365
366 a[0] = 1.0 + d * width_param / mass_param;
367 a[1] = 0.0;
368 b[0] = mass2 - sa + width_param * f;
369 b[1] = -mass_param * width_param * widl1(mass2, mass_param, sa, sb, sc, r2);
370 Com_Divide(a, b, prop);
371 }

◆ propagatorGS() [6/8]

void propagatorGS ( const double mass2,
const double mass,
const double width,
const double sa,
const double sb,
const double sc,
const double r2,
double prop[2] )
private

Gounaris-Sakurai lineshape Function.

Definition at line 1160 of file EvtDToKSpipi0pi0.cc.

1162 {
1163
1164 double GS1 = 0.636619783;
1165 double GS2 = 0.01860182466;
1166 double GS3 = 0.1591549458;
1167 double GS4 = 0.00620060822;
1168 double a[2], b[2];
1169 double tmp = sb - sc;
1170 double tmp1 = sa + tmp;
1171 double q2 = fabs(0.25 * tmp1 * tmp1 / sa - sb);
1172 double tmp2 = mass2 + tmp;
1173 double q02 = fabs(0.25 * tmp2 * tmp2 / mass2 - sb);
1174
1175 double q = sqrt(q2);
1176 double q0 = sqrt(q02);
1177 double m = sqrt(sa);
1178 double q03 = q0 * q02;
1179 double tmp3 = log(mass + 2 * q0) + 1.2760418309; // log(mass_2Pion) = 1.2760418309;
1180
1181 double h = GS1 * q / m * (log(m + 2 * q) + 1.2760418309);
1182 double h0 = GS1 * q0 / mass * tmp3;
1183 double dh = h0 * (0.125 / q02 - 0.5 / mass2) + GS3 / mass2;
1184 double d = GS2 / q02 * tmp3 + GS3 * mass / q0 - GS4 * mass / q03;
1185 double f = mass2 / q03 * (q2 * (h - h0) + (mass2 - sa) * q02 * dh);
1186
1187 a[0] = 1.0 + d * width / mass;
1188 a[1] = 0.0;
1189 b[0] = mass2 - sa + width * f;
1190 b[1] = -mass * width * widl1(mass2, mass, sa, sb, sc, r2);
1191 Com_Divide(a, b, prop);
1192 }

◆ propagatorGS() [7/8]

EvtComplex propagatorGS ( const double mass,
const double width,
const double sa,
const double sb,
const double sc,
const double r,
const int l ) const
private

Gounaris-Sakurai lineshape Function.

Definition at line 547 of file EvtDToKSpipipi.cc.

549 {
550 EvtComplex ci(0, 1);
551 double q = Qabcs(sa, sb, sc);
552 double sa0 = mass_ * mass_;
553 double q0 = Qabcs(sa0, sb, sc);
554 q = sqrt(q);
555 q0 = sqrt(q0);
556 EvtComplex prop = (1 + d(mass_, q0) * width_ / mass_) / (mass_ * mass_ - sa + width_ * f(mass_, sa, q0,
557 q) - ci * mass_ * width_ * wid(mass_, sa, sb, sc, r, l));
558 return prop;
559 }

◆ propagatorGS() [8/8]

EvtComplex propagatorGS ( double mass,
double width,
double sa,
double sb,
double sc,
double r,
int l )
private

Definition at line 335 of file EvtDTopipi0Eta.cc.

336 {
337 double q = Qabcs(sa, sb, sc);
338 double sa0 = mass * mass;
339 double q0 = Qabcs(sa0, sb, sc);
340 q = sqrt(q);
341 q0 = sqrt(q0);
342 EvtComplex prop = (1 + d(mass, q0) * width / mass) / (mass * mass - sa + width * f(mass, sa, q0, q) - ci * mass * width * wid(mass,
343 sa, sb, sc, r, l));
344 return prop;
345 }

◆ propagatorKstr1430() [1/2]

void propagatorKstr1430 ( double mass,
double sx,
double * sb,
double * sc,
double prop[2] )
private

Definition at line 505 of file EvtDsToKKpi.cc.

506 {
507 double unit[2] = {1.0};
508 double ci[2] = {0, 1};
509 double rho1[2];
510 Flatte_rhoab(sx, sb[0], sc[0], rho1);
511 double rho2[2];
512 Flatte_rhoab(sx, sb[1], sc[1], rho2);
513 double gKPi_Kstr1430 = 0.2990, gEtaPK_Kstr1430 = 0.0529;
514 double tmp1[2] = {gKPi_Kstr1430, 0};
515 double tmp11[2];
516 double tmp2[2] = {gEtaPK_Kstr1430, 0};
517 double tmp22[2];
518 Com_Multi(tmp1, rho1, tmp11);
519 Com_Multi(tmp2, rho2, tmp22);
520 double tmp3[2] = {tmp11[0] + tmp22[0], tmp11[1] + tmp22[1]};
521 double tmp31[2];
522 Com_Multi(tmp3, ci, tmp31);
523 double tmp4[2] = {mass_param* mass_param - sx - tmp31[0], -1.0 * tmp31[1]};
524 Com_Divide(unit, tmp4, prop);
525 }

◆ propagatorKstr1430() [2/2]

void propagatorKstr1430 ( double mass,
double sx,
double * sb,
double * sc,
double prop[2] )
private

Definition at line 386 of file EvtDsToKpipi.cc.

387 {
388 double unit[2] = {1.0};
389 double ci[2] = {0, 1};
390 double rho1[2];
391 Flatte_rhoab(sx, sb[0], sc[0], rho1);
392 double rho2[2];
393 Flatte_rhoab(sx, sb[1], sc[1], rho2);
394 double gKPi_Kstr1430 = 0.2990, gEtaPK_Kstr1430 = 0.0529;
395 double tmp1[2] = {gKPi_Kstr1430, 0};
396 double tmp11[2];
397 double tmp2[2] = {gEtaPK_Kstr1430, 0};
398 double tmp22[2];
399 Com_Multi(tmp1, rho1, tmp11);
400 Com_Multi(tmp2, rho2, tmp22);
401 double tmp3[2] = {tmp11[0] + tmp22[0], tmp11[1] + tmp22[1]};
402 double tmp31[2];
403 Com_Multi(tmp3, ci, tmp31);
404 double tmp4[2] = {mass_param* mass_param - sx - tmp31[0], -1.0 * tmp31[1]};
405 Com_Divide(unit, tmp4, prop);
406 }

◆ propagatorRBW() [1/8]

EvtComplex propagatorRBW ( double mass,
double width,
const double sa,
const double sb,
const double sc,
const double r,
const int l ) const
private

Relativistic Breit-Wigner lineshape function.

Definition at line 759 of file EvtD0ToKpipi0pi0.cc.

761 {
762 EvtComplex ci(0, 1);
763 EvtComplex prop = 1.0 / (Mass * Mass - sa - ci * Mass * Width * energyDependentWidth(Mass, sa, sb, sc, r,
764 l));
765 return prop;
766 }

◆ propagatorRBW() [2/8]

EvtComplex propagatorRBW ( double mass,
double width,
const double sa,
const double sb,
const double sc,
const double r,
const int l ) const
private

Relativistic Breit-Wigner Lineshape Function.

Definition at line 685 of file EvtD0ToKpipipi.cc.

686 {
687 EvtComplex ci(0, 1);
688 EvtComplex prop = 1.0 / (Mass * Mass - sa - ci * Mass * Width * wid(Mass, sa, sb, sc, r, l));
689 return prop;
690 }

◆ propagatorRBW() [3/8]

EvtComplex propagatorRBW ( double mass,
double width,
double sa,
double sb,
double sc,
double r,
int l )
private

Definition at line 325 of file EvtD0TopipiEta.cc.

326 {
327 EvtComplex prop = 1.0 / (mass * mass - sa - ci * mass * width * wid(mass, sa, sb, sc, r, l));
328 return prop;
329 }

◆ propagatorRBW() [4/8]

void propagatorRBW ( double mass,
double width,
double sa,
double sb,
double sc,
double r,
int l,
double prop[2] )
private

Definition at line 527 of file EvtDsToKKpi.cc.

529 {
530 double a[2], b[2];
531 a[0] = 1;
532 a[1] = 0;
533 b[0] = mass_param * mass_param - sa;
534 b[1] = -mass_param * width_param * wid(mass_param, sa, sb, sc, r, l);
535 Com_Divide(a, b, prop);
536 }

◆ propagatorRBW() [5/8]

void propagatorRBW ( double mass,
double width,
double sa,
double sb,
double sc,
double r2,
int l,
double prop[2] )
private

Definition at line 295 of file EvtDsToKpipi.cc.

297 {
298 double a[2], b[2];
299 double mass2 = mass_param * mass_param;
300
301 a[0] = 1;
302 a[1] = 0;
303 b[0] = mass2 - sa;
304 b[1] = -mass_param * width_param * wid(mass2, mass_param, sa, sb, sc, r2, l);
305 Com_Divide(a, b, prop);
306 }

◆ propagatorRBW() [6/8]

void propagatorRBW ( const double mass2,
const double mass,
const double width,
const double sa,
const double sb,
const double sc,
const double r2,
const int l,
double prop[2] )
private

Relativistic Breit-Wigner Lineshape Function.

Definition at line 902 of file EvtDToKSpipi0pi0.cc.

904 {
905 double a[2], b[2];
906 a[0] = 1;
907 a[1] = 0;
908 b[0] = mass2 - sa;
909 b[1] = -mass * width * wid(mass2, mass, sa, sb, sc, r2, l);
910 Com_Divide(a, b, prop);
911 }

◆ propagatorRBW() [7/8]

EvtComplex propagatorRBW ( const double mass,
const double width,
const double sa,
const double sb,
const double sc,
const double r,
const int l ) const
private

Relativistic Breit-Wigner Lineshape Function.

Definition at line 540 of file EvtDToKSpipipi.cc.

542 {
543 EvtComplex ci(0, 1);
544 EvtComplex prop = 1.0 / (mass_ * mass_ - sa - ci * mass_ * width_ * wid(mass_, sa, sb, sc, r, l));
545 return prop;
546 }

◆ propagatorRBW() [8/8]

EvtComplex propagatorRBW ( double mass,
double width,
double sa,
double sb,
double sc,
double r,
int l )
private

Definition at line 301 of file EvtDTopipi0Eta.cc.

302 {
303 EvtComplex prop = 1.0 / (mass * mass - sa - ci * mass * width * wid(mass, sa, sb, sc, r, l));
304 return prop;
305 }

◆ propagatorRBW_a1()

void propagatorRBW_a1 ( const double mass2,
const double mass,
const double width,
const double sa,
const double sb,
const double sc,
const double r2,
const int l,
double prop[2] )
private

Relativistic Breit-Wigner Lineshape Function (Specific to a_1)

Definition at line 922 of file EvtDToKSpipi0pi0.cc.

924 {
925 (void)width;
926 (void)sb;
927 (void)sc;
928 (void)r2;
929 (void)l;
930 double a[2], b[2];
931 int iii = int(sqrt(sa) * 1000) - 1;
932 double a1width[3000] = {
933 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
934 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
935 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
936 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
937 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
938 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
939 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
940 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
941 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
942 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
943 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
944 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
945 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
946 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
947 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
948 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
949 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
950 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
951 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
952 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
953 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
954 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
955 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
956 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
957 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
958 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
959 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
960 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
961 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
962 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
963 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
964 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
965 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
966 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
967 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
968 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
969 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
970 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
971 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
972 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
973 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
974 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
975 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
976 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
977 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
978 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
979 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
980 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
981 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
982 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
983 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
984 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
985 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
986 0.000000, 0.000001, 0.000001, 0.000001, 0.000002, 0.000002, 0.000002, 0.000003,
987 0.000004, 0.000004, 0.000005, 0.000006, 0.000007, 0.000008, 0.000009, 0.000010,
988 0.000011, 0.000012, 0.000014, 0.000015, 0.000017, 0.000019, 0.000021, 0.000023,
989 0.000025, 0.000027, 0.000029, 0.000032, 0.000035, 0.000038, 0.000041, 0.000044,
990 0.000047, 0.000050, 0.000054, 0.000058, 0.000062, 0.000066, 0.000070, 0.000075,
991 0.000079, 0.000084, 0.000089, 0.000094, 0.000100, 0.000105, 0.000111, 0.000117,
992 0.000124, 0.000130, 0.000137, 0.000143, 0.000151, 0.000158, 0.000165, 0.000173,
993 0.000182, 0.000190, 0.000199, 0.000207, 0.000216, 0.000225, 0.000235, 0.000245,
994 0.000256, 0.000266, 0.000277, 0.000288, 0.000300, 0.000311, 0.000322, 0.000335,
995 0.000347, 0.000360, 0.000373, 0.000385, 0.000400, 0.000415, 0.000429, 0.000442,
996 0.000457, 0.000473, 0.000488, 0.000504, 0.000520, 0.000539, 0.000555, 0.000572,
997 0.000590, 0.000608, 0.000626, 0.000646, 0.000664, 0.000684, 0.000704, 0.000725,
998 0.000745, 0.000766, 0.000787, 0.000809, 0.000828, 0.000854, 0.000878, 0.000901,
999 0.000927, 0.000952, 0.000973, 0.001001, 0.001027, 0.001048, 0.001080, 0.001104,
1000 0.001132, 0.001159, 0.001189, 0.001219, 0.001245, 0.001277, 0.001308, 0.001338,
1001 0.001370, 0.001404, 0.001433, 0.001468, 0.001498, 0.001533, 0.001570, 0.001600,
1002 0.001638, 0.001678, 0.001711, 0.001745, 0.001780, 0.001825, 0.001857, 0.001898,
1003 0.001941, 0.001972, 0.002017, 0.002065, 0.002104, 0.002146, 0.002189, 0.002234,
1004 0.002277, 0.002319, 0.002369, 0.002410, 0.002461, 0.002511, 0.002557, 0.002605,
1005 0.002661, 0.002704, 0.002762, 0.002807, 0.002855, 0.002910, 0.002965, 0.003020,
1006 0.003074, 0.003127, 0.003178, 0.003228, 0.003288, 0.003351, 0.003409, 0.003471,
1007 0.003532, 0.003598, 0.003660, 0.003720, 0.003793, 0.003854, 0.003910, 0.003972,
1008 0.004050, 0.004108, 0.004181, 0.004254, 0.004309, 0.004380, 0.004464, 0.004533,
1009 0.004603, 0.004679, 0.004756, 0.004811, 0.004898, 0.004974, 0.005048, 0.005142,
1010 0.005215, 0.005279, 0.005363, 0.005449, 0.005533, 0.005604, 0.005695, 0.005783,
1011 0.005869, 0.005971, 0.006060, 0.006142, 0.006247, 0.006332, 0.006409, 0.006502,
1012 0.006594, 0.006713, 0.006784, 0.006889, 0.006995, 0.007079, 0.007190, 0.007303,
1013 0.007381, 0.007487, 0.007592, 0.007710, 0.007801, 0.007910, 0.008032, 0.008149,
1014 0.008247, 0.008378, 0.008462, 0.008559, 0.008706, 0.008843, 0.008943, 0.009091,
1015 0.009207, 0.009308, 0.009448, 0.009555, 0.009698, 0.009810, 0.009936, 0.010020,
1016 0.010186, 0.010320, 0.010474, 0.010611, 0.010742, 0.010840, 0.011011, 0.011167,
1017 0.011281, 0.011395, 0.011541, 0.011714, 0.011853, 0.012046, 0.012169, 0.012277,
1018 0.012460, 0.012617, 0.012805, 0.012922, 0.013072, 0.013234, 0.013389, 0.013561,
1019 0.013704, 0.013917, 0.014025, 0.014239, 0.014425, 0.014600, 0.014716, 0.014958,
1020 0.015114, 0.015325, 0.015488, 0.015630, 0.015797, 0.016035, 0.016206, 0.016404,
1021 0.016591, 0.016842, 0.016964, 0.017199, 0.017392, 0.017557, 0.017798, 0.017987,
1022 0.018178, 0.018337, 0.018631, 0.018829, 0.019008, 0.019221, 0.019467, 0.019698,
1023 0.019941, 0.020166, 0.020379, 0.020585, 0.020806, 0.021040, 0.021309, 0.021482,
1024 0.021764, 0.022046, 0.022306, 0.022478, 0.022736, 0.023049, 0.023222, 0.023536,
1025 0.023756, 0.024090, 0.024337, 0.024557, 0.024873, 0.025099, 0.025392, 0.025682,
1026 0.025995, 0.026291, 0.026498, 0.026927, 0.027119, 0.027377, 0.027804, 0.028135,
1027 0.028279, 0.028682, 0.028871, 0.029355, 0.029531, 0.029956, 0.030243, 0.030592,
1028 0.030873, 0.031246, 0.031494, 0.031771, 0.032167, 0.032515, 0.032881, 0.033211,
1029 0.033653, 0.033988, 0.034394, 0.034639, 0.035055, 0.035569, 0.035879, 0.036211,
1030 0.036611, 0.036932, 0.037489, 0.037779, 0.038284, 0.038723, 0.039001, 0.039574,
1031 0.039854, 0.040274, 0.040881, 0.041117, 0.041644, 0.042055, 0.042531, 0.043030,
1032 0.043354, 0.043832, 0.044277, 0.044956, 0.045284, 0.045828, 0.046440, 0.046800,
1033 0.047518, 0.047727, 0.048258, 0.048850, 0.049316, 0.049992, 0.050486, 0.050987,
1034 0.051410, 0.051928, 0.052613, 0.053110, 0.053824, 0.054351, 0.055078, 0.055654,
1035 0.056030, 0.056763, 0.057245, 0.057832, 0.058569, 0.059292, 0.060048, 0.060569,
1036 0.061056, 0.061869, 0.062612, 0.063186, 0.063886, 0.064655, 0.065198, 0.065815,
1037 0.066649, 0.067577, 0.068012, 0.068967, 0.069630, 0.070181, 0.070786, 0.071989,
1038 0.072764, 0.073466, 0.074461, 0.075093, 0.075994, 0.076834, 0.077455, 0.078709,
1039 0.079581, 0.080408, 0.080884, 0.081965, 0.082882, 0.083658, 0.084824, 0.085513,
1040 0.086662, 0.087602, 0.088678, 0.089492, 0.090641, 0.091369, 0.092494, 0.093484,
1041 0.094615, 0.095385, 0.096168, 0.097668, 0.098611, 0.099630, 0.100772, 0.102020,
1042 0.103145, 0.104110, 0.105071, 0.106604, 0.107791, 0.108451, 0.109509, 0.111356,
1043 0.112026, 0.113921, 0.114507, 0.116071, 0.117027, 0.118213, 0.120164, 0.120701,
1044 0.122121, 0.123894, 0.124937, 0.126134, 0.127391, 0.128882, 0.130056, 0.131649,
1045 0.133046, 0.134275, 0.135119, 0.137072, 0.138476, 0.139612, 0.140388, 0.142734,
1046 0.143576, 0.145445, 0.147414, 0.148856, 0.149891, 0.150963, 0.152477, 0.153717,
1047 0.155275, 0.156859, 0.158462, 0.159257, 0.161865, 0.163182, 0.164465, 0.165538,
1048 0.167003, 0.169257, 0.171211, 0.172093, 0.173261, 0.174639, 0.176510, 0.177684,
1049 0.179077, 0.181041, 0.182446, 0.184769, 0.184926, 0.186741, 0.188844, 0.190884,
1050 0.191714, 0.192254, 0.193921, 0.195917, 0.196766, 0.199052, 0.200603, 0.201808,
1051 0.202699, 0.204636, 0.205712, 0.206849, 0.208741, 0.209424, 0.211698, 0.212753,
1052 0.215516, 0.215857, 0.217790, 0.217774, 0.220454, 0.221821, 0.223466, 0.224494,
1053 0.225632, 0.227231, 0.229456, 0.229581, 0.231537, 0.232263, 0.233834, 0.234725,
1054 0.237079, 0.238015, 0.239400, 0.240193, 0.241693, 0.243787, 0.244317, 0.244971,
1055 0.246711, 0.248615, 0.249387, 0.250905, 0.252702, 0.253535, 0.254385, 0.255375,
1056 0.256671, 0.258405, 0.259741, 0.260875, 0.262131, 0.262920, 0.264860, 0.265893,
1057 0.266016, 0.267727, 0.270039, 0.270689, 0.271047, 0.272313, 0.272474, 0.274724,
1058 0.275813, 0.275937, 0.278793, 0.278783, 0.281407, 0.281351, 0.282481, 0.284226,
1059 0.284113, 0.284999, 0.285655, 0.288361, 0.287856, 0.288893, 0.290211, 0.291708,
1060 0.291985, 0.294298, 0.294849, 0.296796, 0.296197, 0.296851, 0.298011, 0.300368,
1061 0.299982, 0.302378, 0.304363, 0.303711, 0.304729, 0.306789, 0.306378, 0.307372,
1062 0.308720, 0.309509, 0.309712, 0.310782, 0.311699, 0.312668, 0.312755, 0.313675,
1063 0.315311, 0.316640, 0.317217, 0.317403, 0.318478, 0.319916, 0.321803, 0.322678,
1064 0.323237, 0.324343, 0.324433, 0.324493, 0.324969, 0.325894, 0.328563, 0.328721,
1065 0.328954, 0.330640, 0.328164, 0.331267, 0.331695, 0.333772, 0.333619, 0.334351,
1066 0.334605, 0.336434, 0.337510, 0.336535, 0.337362, 0.338799, 0.340732, 0.339896,
1067 0.342707, 0.343471, 0.342318, 0.342431, 0.344543, 0.345611, 0.345786, 0.346590,
1068 0.346610, 0.347761, 0.348914, 0.349558, 0.350577, 0.352128, 0.350982, 0.354134,
1069 0.352773, 0.353213, 0.352972, 0.354927, 0.355784, 0.355778, 0.355801, 0.357040,
1070 0.358013, 0.358432, 0.360045, 0.359743, 0.360238, 0.359850, 0.362184, 0.361580,
1071 0.363430, 0.362333, 0.364397, 0.364472, 0.364370, 0.365303, 0.366644, 0.367777,
1072 0.368604, 0.367631, 0.368324, 0.369782, 0.371121, 0.370653, 0.370040, 0.371649,
1073 0.370201, 0.373362, 0.373900, 0.374159, 0.374916, 0.374503, 0.376703, 0.372802,
1074 0.376191, 0.379596, 0.377325, 0.376363, 0.379369, 0.379791, 0.378703, 0.380177,
1075 0.381762, 0.381335, 0.381374, 0.384668, 0.381763, 0.382746, 0.384723, 0.385089,
1076 0.386229, 0.386702, 0.387749, 0.384423, 0.384714, 0.384181, 0.388489, 0.388618,
1077 0.388179, 0.390092, 0.389871, 0.390496, 0.391181, 0.390679, 0.392614, 0.392269,
1078 0.393899, 0.393466, 0.391421, 0.391090, 0.395586, 0.391776, 0.396882, 0.393254,
1079 0.394400, 0.395749, 0.398063, 0.397138, 0.397585, 0.397288, 0.397847, 0.395375,
1080 0.400170, 0.400007, 0.401191, 0.398513, 0.401922, 0.400477, 0.404257, 0.403271,
1081 0.400677, 0.403913, 0.403172, 0.404727, 0.403406, 0.404404, 0.405265, 0.406389,
1082 0.405738, 0.402173, 0.407831, 0.405895, 0.409172, 0.408934, 0.405915, 0.408486,
1083 0.407320, 0.407437, 0.405444, 0.408400, 0.410909, 0.412427, 0.409881, 0.411021,
1084 0.413001, 0.410369, 0.414702, 0.413372, 0.413095, 0.410972, 0.416346, 0.416095,
1085 0.414132, 0.414344, 0.416952, 0.415197, 0.417583, 0.416582, 0.416622, 0.416895,
1086 0.416576, 0.415551, 0.417925, 0.414838, 0.417051, 0.416831, 0.420000, 0.419132,
1087 0.418173, 0.417645, 0.419679, 0.419866, 0.419581, 0.421531, 0.420878, 0.422737,
1088 0.421872, 0.421304, 0.425486, 0.424434, 0.420842, 0.426753, 0.422761, 0.422178,
1089 0.422372, 0.424173, 0.425582, 0.425080, 0.425831, 0.423551, 0.422949, 0.425784,
1090 0.427977, 0.427948, 0.426368, 0.425138, 0.425351, 0.428643, 0.428148, 0.427488,
1091 0.431704, 0.430167, 0.429655, 0.429584, 0.425458, 0.430728, 0.429845, 0.431145,
1092 0.429180, 0.428874, 0.430720, 0.430024, 0.432034, 0.431359, 0.431535, 0.432995,
1093 0.432425, 0.432454, 0.433140, 0.432574, 0.433814, 0.433348, 0.432886, 0.435472,
1094 0.436517, 0.432681, 0.436999, 0.435182, 0.434834, 0.435478, 0.438255, 0.436650,
1095 0.434464, 0.438530, 0.434077, 0.436471, 0.434012, 0.436822, 0.437505, 0.440135,
1096 0.438322, 0.438032, 0.439001, 0.440270, 0.438661, 0.439233, 0.439274, 0.437945,
1097 0.443080, 0.439191, 0.438233, 0.440415, 0.441063, 0.440926, 0.440929, 0.439731,
1098 0.443584, 0.439729, 0.441597, 0.442615, 0.444637, 0.443180, 0.440789, 0.440261,
1099 0.442202, 0.445081, 0.445484, 0.445415, 0.445532, 0.442806, 0.444188, 0.441073,
1100 0.444299, 0.445897, 0.445279, 0.442830, 0.445506, 0.445272, 0.447267, 0.443522,
1101 0.445519, 0.446459, 0.446753, 0.446377, 0.446129, 0.446383, 0.448556, 0.446593,
1102 0.445293, 0.449199, 0.447590, 0.445968, 0.447482, 0.448474, 0.449890, 0.450004,
1103 0.447765, 0.449274, 0.450652, 0.448210, 0.449360, 0.449577, 0.448575, 0.452112,
1104 0.448780, 0.451393, 0.450200, 0.452018, 0.451182, 0.452050, 0.451748, 0.451377,
1105 0.451402, 0.448810, 0.452311, 0.452909, 0.452491, 0.452418, 0.454190, 0.454420,
1106 0.452121, 0.452307, 0.456857, 0.453506, 0.454058, 0.457203, 0.454394, 0.453596,
1107 0.452240, 0.453692, 0.456516, 0.453753, 0.455541, 0.452702, 0.456481, 0.452226,
1108 0.454280, 0.454855, 0.456297, 0.456482, 0.454154, 0.455387, 0.454748, 0.455764,
1109 0.457282, 0.455487, 0.454822, 0.454257, 0.457678, 0.454225, 0.458689, 0.456123,
1110 0.457011, 0.457386, 0.458351, 0.458638, 0.456164, 0.455884, 0.458525, 0.457575,
1111 0.458340, 0.458912, 0.457836, 0.461734, 0.457545, 0.460755, 0.460960, 0.459226,
1112 0.458613, 0.461078, 0.460958, 0.460337, 0.460237, 0.461190, 0.460760, 0.457911,
1113 0.461310, 0.459657, 0.461960, 0.461040, 0.459578, 0.461650, 0.461550, 0.461251,
1114 0.461054, 0.463082, 0.461732, 0.461324, 0.462547, 0.461261, 0.461629, 0.464067,
1115 0.462430, 0.462525, 0.464232, 0.462921, 0.463202, 0.465558, 0.462914, 0.461698,
1116 0.463963, 0.463040, 0.464275, 0.461940, 0.462913, 0.465261, 0.461500, 0.463679,
1117 0.463354, 0.465205, 0.464529, 0.462220, 0.464279, 0.463427, 0.465387, 0.465288,
1118 0.464839, 0.464926, 0.466100, 0.465531, 0.466187, 0.464647, 0.466285, 0.465461,
1119 0.464134, 0.466783, 0.466763, 0.466183, 0.467089, 0.464497, 0.466080, 0.466109,
1120 0.468166, 0.466984, 0.465335, 0.466721, 0.466856, 0.465113, 0.468377, 0.467904,
1121 0.464546, 0.468787, 0.465648, 0.469841, 0.469477, 0.466311, 0.468700, 0.465183,
1122 0.466559, 0.470433, 0.468563, 0.468109, 0.466980, 0.467567, 0.467670, 0.466991,
1123 0.467992, 0.468784, 0.469406, 0.469652, 0.468527, 0.470460, 0.467308, 0.470693,
1124 0.469539, 0.468000, 0.469295, 0.467038, 0.471908, 0.468829, 0.470663, 0.469266,
1125 0.468975, 0.470222, 0.468649, 0.469507, 0.472307, 0.471611, 0.470419, 0.471181,
1126 0.471140, 0.473187, 0.471086, 0.469801, 0.472234, 0.472131, 0.468996, 0.470229,
1127 0.471597, 0.469625, 0.472230, 0.470164, 0.468404, 0.472264, 0.471336, 0.471597,
1128 0.472280, 0.471256, 0.473151, 0.471863, 0.474458, 0.471956, 0.473099, 0.473956,
1129 0.471725, 0.472809, 0.473065, 0.473180, 0.470611, 0.473614, 0.474263, 0.472792,
1130 0.473543, 0.472656, 0.469728, 0.473431, 0.474538, 0.475322, 0.474962, 0.473598,
1131 0.474114, 0.473486, 0.472934, 0.473252, 0.477149, 0.471719, 0.476383, 0.473076,
1132 0.473952, 0.473104, 0.472459, 0.474433, 0.474494, 0.473588, 0.473839, 0.478113,
1133 0.472435, 0.475571, 0.475194, 0.475626, 0.474617, 0.474520, 0.474472, 0.476437,
1134 0.474512, 0.474497, 0.474628, 0.476203, 0.475698, 0.473907, 0.477144, 0.479000,
1135 0.475553, 0.477481, 0.473998, 0.476672, 0.477115, 0.477114, 0.476282, 0.476152,
1136 0.477009, 0.479854, 0.474354, 0.477645, 0.477517, 0.477111, 0.474843, 0.476173,
1137 0.477321, 0.477384, 0.477880, 0.475726, 0.476004, 0.478204, 0.475586, 0.477973,
1138 0.477935, 0.480640, 0.478234, 0.476349, 0.477493, 0.476994, 0.479815, 0.477771,
1139 0.476333, 0.476325, 0.478245, 0.477284, 0.479238, 0.478339, 0.478966, 0.478012,
1140 0.479304, 0.480148, 0.476125, 0.481267, 0.479801, 0.476720, 0.478898, 0.479284,
1141 0.479153, 0.480157, 0.478681, 0.479712, 0.478993, 0.479943, 0.478349, 0.478930,
1142 0.478052, 0.477173, 0.479244, 0.480454, 0.479128, 0.480530, 0.477843, 0.478369,
1143 0.478561, 0.478639, 0.479191, 0.481763, 0.481321, 0.480979, 0.479702, 0.479777,
1144 0.479384, 0.477571, 0.481880, 0.478615, 0.481303, 0.478783, 0.479384, 0.480517,
1145 0.481928, 0.481199, 0.479041, 0.479188, 0.481491, 0.482840, 0.478766, 0.481941,
1146 0.481298, 0.478105, 0.482933, 0.479744, 0.483361, 0.482332, 0.482556, 0.482057,
1147 0.483616, 0.480599, 0.482245, 0.481091, 0.480871, 0.481938, 0.480678, 0.481851,
1148 0.482902, 0.482158, 0.480187, 0.481772, 0.484967, 0.483094, 0.482133, 0.483929,
1149 0.483354, 0.483382, 0.483964, 0.479941, 0.481375, 0.480255, 0.482184, 0.482541,
1150 0.482032, 0.483484, 0.479492, 0.483305, 0.481070, 0.483573, 0.485689, 0.485767,
1151 0.484221, 0.481365, 0.482440, 0.481507, 0.483418, 0.480978
1152 };
1153 double width_a1 = a1width[iii];
1154 a[0] = 1;
1155 a[1] = 0;
1156 b[0] = mass2 - sa;
1157 b[1] = -mass * width_a1;
1158 Com_Divide(a, b, prop);
1159 }

◆ propagatorRBWl1()

void propagatorRBWl1 ( const double mass2,
const double mass,
const double width,
const double sa,
const double sb,
const double sc,
const double r2,
double prop[2] )
private

Relativistic Breit-Wigner Lineshape Function (L=1)

Definition at line 912 of file EvtDToKSpipi0pi0.cc.

914 {
915 double a[2], b[2];
916 a[0] = 1;
917 a[1] = 0;
918 b[0] = mass2 - sa;
919 b[1] = -mass * width * widl1(mass2, mass, sa, sb, sc, r2);
920 Com_Divide(a, b, prop);
921 }

◆ propagatorRBWNeo()

void propagatorRBWNeo ( double mass,
double width,
double sa,
double sb,
double sc,
double r,
int l,
double prop[2] )
private

Definition at line 538 of file EvtDsToKKpi.cc.

540 {
541 double a[2], b[2];
542 a[0] = 1;
543 a[1] = 0;
544 b[0] = mass_param * mass_param - sa;
545 double tmp1 = (sa - sb - sc);
546 double tmp2 = sb * sc;
547 double pAB = sqrt((tmp1 * tmp1 / 4.0 - tmp2) / sa);
548 double pR = sqrt(((mass_param * mass_param - sb - sc) * (mass_param * mass_param - sb - sc) / 4.0 - (sb * sc)) /
549 (mass_param * mass_param));
550 double fR = sqrt(1.0 + 1.5 * 1.5 * pR * pR) / sqrt(1.0 + 1.5 * 1.5 * pAB * pAB);
551 double power = 1;
552 if (!l) {
553 power = 1;
554 fR = 1;
555 } else if (l == 1) {
556 power = 3;
557 }
558 double gammaAB = width_param * pow(pAB / pR, power) * (mass_param / sqrt(sa)) * fR * fR;
559 b[1] = -mass_param * gammaAB;
560 Com_Divide(a, b, prop);
561 }

◆ propagatorRBWNeoKstr892()

void propagatorRBWNeoKstr892 ( double mass,
double width,
double sa,
double sb,
double sc,
double r,
int l,
double prop[2] )
private

Definition at line 563 of file EvtDsToKKpi.cc.

565 {
566 double a[2], b[2];
567 a[0] = 1;
568 a[1] = 0;
569 b[0] = mass_param * mass_param - sa;
570 double tmp1 = (sa - sb - sc);
571 double tmp2 = sb * sc;
572 double pAB = sqrt((tmp1 * tmp1 / 4.0 - tmp2) / sa);
573 double pR = sqrt(((mass_param * mass_param - sb - sc) * (mass_param * mass_param - sb - sc) / 4.0 - (sb * sc)) /
574 (mass_param * mass_param));
575 double fR = sqrt(1.0 + 1.5 * 1.5 * pR * pR) / sqrt(1.0 + 1.5 * 1.5 * pAB * pAB);
576 double power = 1;
577 if (!l) {
578 power = 1;
579 } else if (l == 1) {
580 power = 3;
581 }
582 double gammaAB = width_param * pow(pAB / pR, power) * (mass_param / sqrt(sa)) * fR * fR;
583 b[1] = -mass_param * gammaAB;
584 Com_Divide(a, b, prop);
585 }

◆ propagatorsigma500() [1/2]

void propagatorsigma500 ( double sa,
double sb,
double sc,
double prop[2] )
private

Definition at line 491 of file EvtDsToKpipi.cc.

492 {
493 double f = 0.5843 + 1.6663 * sa;
494 const double M = 0.9264;
495 const double mass2 = 0.85821696;
496 const double mpi2d2 = 0.00973989245;
497 double g1 = f * (sa - mpi2d2) / (mass2 - mpi2d2) * exp((mass2 - sa) / 1.082);
498 double rho1s[2], rho1M[2], rho2s[2], rho2M[2], rho1[2], rho2[2];
499 rhoab(sa, sb, sc, rho1s);
500 rhoab(mass2, sb, sc, rho1M);
501 rho4Pi(sa, rho2s);
502 rho4Pi(mass2, rho2M);
503 Com_Divide(rho1s, rho1M, rho1);
504 Com_Divide(rho2s, rho2M, rho2);
505 double a[2], b[2];
506 a[0] = 1.0;
507 a[1] = 0.0;
508 b[0] = mass2 - sa + M * (g1 * rho1[1] + 0.0024 * rho2[1]);
509 b[1] = -M * (g1 * rho1[0] + 0.0024 * rho2[0]);
510 Com_Divide(a, b, prop);
511 }

◆ propagatorsigma500() [2/2]

void propagatorsigma500 ( const double sa,
const double sb,
const double sc,
double prop[2] )
private

sigma(500) Lineshape Function

Definition at line 1216 of file EvtDToKSpipi0pi0.cc.

1217 {
1218 double f = 0.5843 + 1.6663 * sa;
1219 const double M = 0.9264;
1220 const double mass2 = 0.85821696; // M*M
1221 const double mpi2d2 = 0.00973989245;
1222 double g1 = f * (sa - mpi2d2) / (mass2 - mpi2d2) * exp((mass2 - sa) / 1.082);
1223 double rho1s[2], rho1M[2], rho2s[2], rho2M[2], rho1[2], rho2[2];
1224 rhoab(sa, sb, sc, rho1s);
1225 rhoab(mass2, sb, sc, rho1M);
1226 rho4Pi(sa, rho2s);
1227 rho4Pi(mass2, rho2M);
1228 Com_Divide(rho1s, rho1M, rho1);
1229 Com_Divide(rho2s, rho2M, rho2);
1230 double a[2], b[2];
1231 a[0] = 1.0;
1232 a[1] = 0.0;
1233 b[0] = mass2 - sa + M * (g1 * rho1[1] + 0.0024 * rho2[1]);
1234 b[1] = -M * (g1 * rho1[0] + 0.0024 * rho2[0]);
1235 Com_Divide(a, b, prop);
1236 }

◆ propogator() [1/2]

EvtComplex propogator ( double mass,
double width,
const double sx ) const
private

Relativistic Breit-Wigner Lineshape Function (Fixed Width)

Definition at line 638 of file EvtD0ToKpipipi.cc.

639 {
640 EvtComplex ci(0, 1);
641 EvtComplex prop = 1.0 / (Mass * Mass - sx - ci * Mass * Width);
642 return prop;
643 }

◆ propogator() [2/2]

EvtComplex propogator ( const double mass,
const double width,
const double sx ) const
private

Relativistic Breit-Wigner Lineshape Function (Fixed Width)

Definition at line 493 of file EvtDToKSpipipi.cc.

494 {
495 EvtComplex ci(0, 1);
496 EvtComplex prop = 1.0 / (mass_ * mass_ - sx - ci * mass_ * width_);
497 return prop;
498 }

◆ PtauD()

double PtauD ( const EvtBSemiTauonicHelicityAmplitudeCalculator & BSTD,
const double mtau )

Function calculates the polarization of tau, (RH - LH)/(LH + RH), in B->Dtaunu decay.

Parameters
BSTDhelicity ampliutude calculator initialized properly by user.
mtaudaughter tau lepton mass for B->Dtaunu decay.

Definition at line 170 of file EvtBSemiTauonicDecayRateCalculator.cc.

171 {
172 double left(0), right(0);
173 left += Gamma(BSTD, mtau, -1, 2);
174 right += Gamma(BSTD, mtau, +1, 2);
175 return (right - left) / (right + left);
176 }

◆ PtauDstar()

double PtauDstar ( const EvtBSemiTauonicHelicityAmplitudeCalculator & BSTD,
const double mtau )

Function calculates the polarization of tau, (RH - LH)/(LH + RH), in B->D*taunu decay.

Parameters
BSTDhelicity ampliutude calculator initialized properly by user.
mtaudaughter tau lepton mass for B->Dtaunu decay.

Definition at line 177 of file EvtBSemiTauonicDecayRateCalculator.cc.

178 {
179 double left(0), right(0);
180 for (int Dhel = -1; Dhel <= 1; Dhel++) {
181 left += Gamma(BSTD, mtau, -1, Dhel);
182 right += Gamma(BSTD, mtau, +1, Dhel);
183 }
184 return (right - left) / (right + left);
185 }

◆ PVTR()

std::complex< double > PVTR ( int ID,
double s )
private

Definition at line 1448 of file EvtD0Topippim2pi0.cc.

1449 {
1450
1451 double VPix;
1452 double VPiy;
1453 double m[5] = { 0.65100, 1.20360, 1.55817, 1.21000, 1.82206};
1454
1455 double eps = 1e-11;
1456
1457 /* double down = (m[ID]*m[ID]-s)*(m[ID]*m[ID]-s)+eps*eps;
1458 double upreal = (m[ID]*m[ID]-s)/down;
1459 double upimag = -1.0f * eps/down; */
1460
1461 double dm2 = m[ID] * m[ID] - s;
1462
1463 if (fabs(dm2) < eps && dm2 <= 0) dm2 = -eps;
1464 if (fabs(dm2) < eps && dm2 > 0) dm2 = eps;
1465
1466 VPix = 1.0f / dm2;
1467 VPiy = 0;
1468
1469 std::complex<double> VPi(VPix, VPiy);
1470 return VPi;
1471 }

◆ q()

double q ( const double & mab,
const double & ma,
const double & mb )

Constants q.

Definition at line 594 of file EvtB0toKsKK.cc.

595 {
596 const double mab2 = mab * mab;
597 const double ma_p_mb2 = (ma + mb) * (ma + mb);
598 const double ma_m_mb2 = (ma - mb) * (ma - mb);
599
600 const double q = sqrt((mab2 - ma_p_mb2) * (mab2 - ma_m_mb2)) / (2.0 * mab);
601
602 return q;
603 }

◆ q2()

double q2 ( int Dhel,
double w ) const

Function to calculate the q^2 of the decay (square of l+nu invariant mass).

Parameters
Dhelhelicity of the D(*) meson in the rest frame of the parent meson {+1,0,-1} for D* and 2 for D.
wvelocity transfer variable.
Returns
calculated q^2.

Definition at line 522 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

523 {
524 return m_mB * m_mB * qh2(Dhel, w);
525 }

◆ Qabcs() [1/5]

double Qabcs ( const double sa,
const double sb,
const double sc ) const
private

Magnitudes of daughter particle momenta in the rest system of the mother particle.

Definition at line 789 of file EvtD0ToKpipi0pi0.cc.

790 {
791 double Qabcs = (sa + sb - sc) * (sa + sb - sc) / (4 * sa) - sb;
792 if (Qabcs < 0) Qabcs = 1e-16;
793 return Qabcs;
794 }

◆ Qabcs() [2/5]

double Qabcs ( const double sa,
const double sb,
const double sc ) const
private

Magnitudes of daughter particle momenta in the rest system of the mother particle.

Definition at line 711 of file EvtD0ToKpipipi.cc.

712 {
713 double Qabcs = (sa + sb - sc) * (sa + sb - sc) / (4 * sa) - sb;
714 if (Qabcs < 0) Qabcs = 1e-16;
715 return Qabcs;
716 }

◆ Qabcs() [3/5]

double Qabcs ( double sa,
double sb,
double sc )
private

Definition at line 250 of file EvtD0TopipiEta.cc.

251 {
252 double Qabcs = (sa + sb - sc) * (sa + sb - sc) / (4 * sa) - sb;
253 if (Qabcs < 0) Qabcs = 1e-16;
254 return Qabcs;
255 }

◆ Qabcs() [4/5]

double Qabcs ( const double sa,
const double sb,
const double sc ) const
private

Magnitudes of daughter particle momenta in the rest system of the mother particle.

Definition at line 568 of file EvtDToKSpipipi.cc.

569 {
570 double Qabcs = (sa + sb - sc) * (sa + sb - sc) / (4 * sa) - sb;
571 if (Qabcs < 0) Qabcs = 1e-16;
572 return Qabcs;
573 }

◆ Qabcs() [5/5]

double Qabcs ( double sa,
double sb,
double sc )
private

Definition at line 226 of file EvtDTopipi0Eta.cc.

227 {
228 double Qabcs = (sa + sb - sc) * (sa + sb - sc) / (4 * sa) - sb;
229 if (Qabcs < 0) Qabcs = 1e-16;
230 return Qabcs;
231 }

◆ qh2()

double qh2 ( int Dhel,
double w ) const

Function to calculate the q^2 divided by the square of parent mass (m_B^2).

Parameters
Dhelhelicity of the D(*) meson in the rest frame of the parent meson {+1,0,-1} for D* and 2 for D.
wvelocity transfer variable.
Returns
calculated q^2/m_B^2.

Definition at line 516 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

517 {
518 return 1 - 2 * r(Dhel) * w + r(Dhel) * r(Dhel);
519 }

◆ RaiseIndex()

void RaiseIndex ( EvtVector4R & vector)

Member function RaiseIndices.

Definition at line 461 of file EvtB0toKsKK.cc.

462 {
463 vector.set(1, -vector.get(1));
464 vector.set(2, -vector.get(2));
465 vector.set(3, -vector.get(3));
466 }

◆ RaiseIndices()

EvtTensor4C RaiseIndices ( const EvtTensor4C & t)

Function RaiseIndices.

Definition at line 453 of file EvtB0toKsKK.cc.

454 {
455 const EvtTensor4C tmp = Multiply(t, EvtTensor4C::g());
456 const EvtTensor4C t_raised = Multiply(EvtTensor4C::g(), tmp);
457
458 return t_raised;
459 }

◆ RBW() [1/2]

std::complex< double > RBW ( double mx2,
double mr,
double wr,
double m1_2,
double m2_2,
double r,
int l )
private

Definition at line 651 of file EvtD0Topippim2pi0.cc.

652 {
653 double mr2 = mr * mr;
654 double denom_real = mr2 - mx2;
655 double denom_imag = 0;
656 if (m1_2 > 0 && m2_2 > 0) {
657 denom_imag = mr * wr * wid(mr, mx2, m1_2, m2_2, r, l); //real-i*imag;
658 } else {
659 denom_imag = mr * wr;
660 }
661
662 double denom = denom_real * denom_real + denom_imag * denom_imag;
663 double output_x = denom_real / denom;
664 double output_y = denom_imag / denom;
665
666 std::complex<double> output(output_x, output_y);
667 return output;
668 }

◆ RBW() [2/2]

EvtComplex RBW ( int id,
double resmass,
double reswidth,
int spin )
private

Definition at line 134 of file EvtDToKSKpi0.cc.

135 {
136 double resmass2 = pow(resmass, 2);
137
138 EvtVector4R p1, p2, p3;
139 double mass_daug1 = 0, mass_daug2 = 0, mass_daug3 = 0;
140 if (id == 1) {
141 p1 = _pd[0];
142 mass_daug1 = pi0Mass;
143 p2 = _pd[1];
144 mass_daug2 = KpMass;
145 p3 = _pd[2];
146 mass_daug3 = KsMass;
147 }
148 if (id == 2) {
149 p1 = _pd[2];
150 mass_daug1 = KsMass;
151 p2 = _pd[0];
152 mass_daug2 = pi0Mass;
153 p3 = _pd[1];
154 mass_daug3 = KpMass;
155 }
156 if (id == 3) {
157 p1 = _pd[1];
158 mass_daug1 = KpMass;
159 p2 = _pd[2];
160 mass_daug2 = KsMass;
161 p3 = _pd[0];
162 mass_daug3 = pi0Mass;
163 }
164
165 double rMassSq = (p1 + p2).mass2();
166 double m12 = (p1 + p2).mass2();
167 double m13 = (p1 + p3).mass2();
168 double m23 = (p2 + p3).mass2();
169
170 double rMass = sqrt(rMassSq);
171 double frFactor = 1;
172 double fdFactor = 1;
173
174 double measureDaughterMoms = twoBodyCMmom(rMassSq, mass_daug1, mass_daug2);
175 double nominalDaughterMoms = twoBodyCMmom(resmass2, mass_daug1, mass_daug2);
176
177 if (spin != 0) {
178 frFactor = dampingFactorSquare(nominalDaughterMoms, spin, c_meson_radius_inter) / dampingFactorSquare(measureDaughterMoms, spin,
179 c_meson_radius_inter);
180
181 double measureDaughterMoms2 = twoBodyCMmom(c_motherMass * c_motherMass, rMass, mass_daug3);
182 double nominalDaughterMoms2 = twoBodyCMmom(c_motherMass * c_motherMass, resmass, mass_daug3);
183 fdFactor = dampingFactorSquare(nominalDaughterMoms2, spin, c_meson_radius_Dp) / dampingFactorSquare(measureDaughterMoms2, spin,
184 c_meson_radius_Dp);
185 }
186 double A = (resmass2 - rMassSq);
187 double B = resmass2 * reswidth * pow(measureDaughterMoms / nominalDaughterMoms, 2.0 * spin + 1) * frFactor / sqrt(rMassSq);
188 double C = 1.0 / (pow(A, 2) + pow(B, 2));
189
190 EvtComplex ret(A * C, B * C);
191 ret *= sqrt(frFactor * fdFactor);
192 ret *= spinFactor(spin, c_motherMass, mass_daug1, mass_daug2, mass_daug3, m12, m13, m23);
193 return ret;
194 }

◆ RBWa1260()

std::complex< double > RBWa1260 ( double mx2,
double mr,
double g1,
double g2 )
private

Definition at line 761 of file EvtD0Topippim2pi0.cc.

762 {
763
764 double mx = sqrt(mx2);
765 double mr2 = mr * mr;
766 double wid0 = anywid1260(mx2, g1, g2);
767
768 double denom_real = mr2 - mx2;
769 double denom_imag = mx * wid0; //real-i*imag;
770
771 double denom = denom_real * denom_real + denom_imag * denom_imag;
772 double output_x = denom_real / denom;
773 double output_y = denom_imag / denom;
774
775 std::complex<double> output(output_x, output_y);
776 return output;
777
778 }

◆ RBWa1640()

std::complex< double > RBWa1640 ( double mx2,
double mr,
double wr )
private

Definition at line 915 of file EvtD0Topippim2pi0.cc.

916 {
917
918 double mx = sqrt(mx2);
919 double mr2 = mr * mr;
920 double g1 = wr / anywid1640(mr2);
921 double wid0 = anywid1640(mx2) * g1;
922
923 double denom_real = mr2 - mx2;
924 double denom_imag = mx * wid0; //real-i*imag;
925
926 double denom = denom_real * denom_real + denom_imag * denom_imag;
927 double output_x = denom_real / denom;
928 double output_y = denom_imag / denom;
929
930 std::complex<double> output(output_x, output_y);
931 return output;
932
933 }

◆ RBWh11170()

std::complex< double > RBWh11170 ( double mx2,
double mr,
double wr )
private

Definition at line 991 of file EvtD0Topippim2pi0.cc.

992 {
993
994 double mx = sqrt(mx2);
995 double mr2 = mr * mr;
996 double g1 = wr / anywid1170(mr2);
997 double wid0 = anywid1170(mx2) * g1;
998
999 double denom_real = mr2 - mx2;
1000 double denom_imag = mx * wid0; //real-i*imag;
1001
1002 double denom = denom_real * denom_real + denom_imag * denom_imag;
1003 double output_x = denom_real / denom;
1004 double output_y = denom_imag / denom;
1005
1006 std::complex<double> output(output_x, output_y);
1007 return output;
1008 }

◆ RBWpi1300()

std::complex< double > RBWpi1300 ( double mx2,
double mr,
double wr )
private

Definition at line 838 of file EvtD0Topippim2pi0.cc.

839 {
840
841 double mx = sqrt(mx2);
842 double mr2 = mr * mr;
843 double g1 = wr / anywid1300(mr2);
844 double wid0 = anywid1300(mx2) * g1;
845
846 double denom_real = mr2 - mx2;
847 double denom_imag = mx * wid0; //real-i*imag;
848
849 double denom = denom_real * denom_real + denom_imag * denom_imag;
850 double output_x = denom_real / denom;
851 double output_y = denom_imag / denom;
852
853 std::complex<double> output(output_x, output_y);
854 return output;
855
856 }

◆ RGammaD()

double RGammaD ( const EvtBSemiTauonicHelicityAmplitudeCalculator & BSTD,
const double mtau,
const double mlep = 0.0005110 )

Function calculates the ratio of Br(B->Dtaunu)/Br(B->Dlnu), R(D).

Parameters
BSTDhelicity ampliutude calculator initialized properly by user.
mtaudaughter tau lepton mass for B->Dtaunu decay.
mlepdaughter lepton mass for B->Dlnu decay (default is the electron mass). Note that overall factor (GF/sqrt(2) Vcb)^2 is omitted.

Definition at line 149 of file EvtBSemiTauonicDecayRateCalculator.cc.

151 {
152 double sum(0);
153 sum += Gamma(BSTD, mtau, -1, 2);
154 sum += Gamma(BSTD, mtau, +1, 2);
155 return sum / GammaSMD(BSTD, mlep);
156 }

◆ RGammaDstar()

double RGammaDstar ( const EvtBSemiTauonicHelicityAmplitudeCalculator & BSTD,
const double mtau,
const double mlep = 0.0005110 )

Function calculates the ratio of Br(B->Dtaunu)/Br(B->Dlnu), R(D*).

Parameters
BSTDhelicity ampliutude calculator initialized properly by user.
mtaudaughter tau lepton mass for B->Dtaunu decay.
mlepdaughter lepton mass for B->Dlnu decay (default is the electron mass).

Definition at line 158 of file EvtBSemiTauonicDecayRateCalculator.cc.

160 {
161 double sum(0);
162 for (int Dhel = -1; Dhel <= 1; Dhel++) {
163 sum += Gamma(BSTD, mtau, -1, Dhel);
164 sum += Gamma(BSTD, mtau, +1, Dhel);
165 }
166 return sum / GammaSMDstar(BSTD, mlep);
167 }

◆ rho22()

double rho22 ( double sc)
private

Definition at line 1011 of file EvtD0Topippim2pi0.cc.

1012 {
1013 double rho[689] = { 3.70024e-18, 8.52763e-15, 1.87159e-13, 1.3311e-12, 5.61842e-12, 1.75224e-11, 4.48597e-11, 9.99162e-11, 2.00641e-10, 3.71995e-10,
1014 6.47093e-10, 1.06886e-09, 1.69124e-09, 2.58031e-09, 3.8168e-09, 5.49601e-09, 7.72996e-09, 1.06509e-08, 1.44078e-08, 1.91741e-08,
1015 2.51445e-08, 3.25345e-08, 4.15946e-08, 5.25949e-08, 6.58316e-08, 8.16443e-08, 1.00389e-07, 1.22455e-07, 1.48291e-07, 1.78348e-07,
1016 2.1313e-07, 2.53192e-07, 2.99086e-07, 3.51462e-07, 4.10993e-07, 4.78349e-07, 5.54327e-07, 6.3972e-07, 7.35316e-07, 8.42099e-07,
1017 9.61004e-07, 1.09295e-06, 1.2391e-06, 1.40051e-06, 1.57824e-06, 1.77367e-06, 1.98805e-06, 2.22257e-06, 2.47877e-06, 2.7581e-06,
1018 3.06186e-06, 3.39182e-06, 3.74971e-06, 4.137e-06, 4.5555e-06, 5.00725e-06, 5.4939e-06, 6.01725e-06, 6.57992e-06, 7.18371e-06,
1019 7.83044e-06, 8.52301e-06, 9.26342e-06, 1.00535e-05, 1.08967e-05, 1.17953e-05, 1.27514e-05, 1.37679e-05, 1.48482e-05, 1.59943e-05,
1020 1.72088e-05, 1.84961e-05, 1.98586e-05, 2.12987e-05, 2.28207e-05, 2.44279e-05, 2.61228e-05, 2.79084e-05, 2.97906e-05, 3.17718e-05,
1021 3.38544e-05, 3.60443e-05, 3.8345e-05, 4.07591e-05, 4.32903e-05, 4.59459e-05, 4.87285e-05, 5.16403e-05, 5.46887e-05, 5.7878e-05,
1022 6.12111e-05, 6.46908e-05, 6.83274e-05, 7.21231e-05, 7.60817e-05, 8.0208e-05, 8.45102e-05, 8.89919e-05, 9.36544e-05, 9.85082e-05,
1023 0.000103559, 0.000108812, 0.000114267, 0.000119938, 0.000125827, 0.00013194, 0.000138278, 0.000144857, 0.000151681, 0.000158752,
1024 0.000166074, 0.000173663, 0.000181521, 0.000189652, 0.000198059, 0.000206761, 0.000215761, 0.000225063, 0.00023467, 0.000244599,
1025 0.000254855, 0.00026544, 0.000276357, 0.000287629, 0.00029926, 0.000311253, 0.000323609, 0.000336351, 0.000349483, 0.000363009,
1026 0.000376926, 0.000391264, 0.000406029, 0.000421225, 0.000436848, 0.000452921, 0.000469458, 0.000486461, 0.00050393, 0.00052187,
1027 0.000540322, 0.000559278, 0.000578746, 0.00059872, 0.000619236, 0.0006403, 0.000661911, 0.000684074, 0.000706799, 0.000730127,
1028 0.00075405, 0.000778569, 0.000803686, 0.000829443, 0.000855839, 0.000882879, 0.000910561, 0.000938898, 0.000967939, 0.000997674,
1029 0.00102811, 0.00105923, 0.0010911, 0.0011237, 0.00115706, 0.00119117, 0.00122601, 0.00126168, 0.00129815, 0.00133543,
1030 0.00137351, 0.00141242, 0.00145219, 0.00149283, 0.00153434, 0.0015767, 0.00161995, 0.00166415, 0.00170928, 0.00175534,
1031 0.00180232, 0.00185028, 0.00189924, 0.00194919, 0.00200014, 0.00205207, 0.00210503, 0.0021591, 0.00221421, 0.0022704,
1032 0.00232766, 0.00238602, 0.00244554, 0.00250619, 0.00256799, 0.0026309, 0.002695, 0.00276033, 0.00282689, 0.00289467,
1033 0.00296367, 0.00303389, 0.00310543, 0.0031783, 0.00325244, 0.0033279, 0.0034046, 0.00348275, 0.00356229, 0.00364322,
1034 0.00372555, 0.00380924, 0.00389438, 0.00398104, 0.00406914, 0.00415877, 0.00424985, 0.00434235, 0.00443651, 0.00453224,
1035 0.00462954, 0.00472848, 0.00482894, 0.00493102, 0.00503483, 0.00514029, 0.00524749, 0.0053563, 0.00546675, 0.00557905,
1036 0.0056931, 0.00580901, 0.0059267, 0.00604613, 0.00616735, 0.00629049, 0.00641557, 0.00654254, 0.00667142, 0.00680216,
1037 0.00693472, 0.00706946, 0.00720621, 0.00734497, 0.0074858, 0.00762855, 0.00777338, 0.00792036, 0.00806957, 0.00822087,
1038 0.00837426, 0.00852982, 0.0086875, 0.00884756, 0.00900991, 0.00917447, 0.00934137, 0.00951052, 0.00968194, 0.0098558,
1039 0.010032, 0.0102108, 0.0103919, 0.0105754, 0.0107612, 0.0109496, 0.0111406, 0.0113343, 0.0115305, 0.0117293,
1040 0.0119303, 0.0121343, 0.0123409, 0.0125502, 0.0127623, 0.0129771, 0.0131944, 0.0134145, 0.0136376, 0.0138636,
1041 0.0140924, 0.0143241, 0.0145587, 0.0147959, 0.0150363, 0.0152797, 0.0155262, 0.0157758, 0.0160283, 0.0162838,
1042 0.0165421, 0.016804, 0.0170691, 0.0173374, 0.0176087, 0.0178835, 0.0181612, 0.0184423, 0.0187269, 0.0190149,
1043 0.0193063, 0.0196009, 0.0198991, 0.0202003, 0.0205052, 0.0208137, 0.0211259, 0.0214418, 0.0217611, 0.0220841,
1044 0.0224105, 0.0227406, 0.0230746, 0.0234125, 0.0237542, 0.0240996, 0.0244486, 0.0248012, 0.025158, 0.0255188,
1045 0.0258837, 0.0262527, 0.0266256, 0.0270025, 0.0273833, 0.027768, 0.0281572, 0.0285505, 0.0289483, 0.0293503,
1046 0.0297564, 0.0301665, 0.0305808, 0.0309997, 0.0314231, 0.0318511, 0.0322835, 0.0327205, 0.0331616, 0.0336073,
1047 0.0340576, 0.0345128, 0.0349727, 0.0354373, 0.0359066, 0.0363807, 0.0368589, 0.0373419, 0.0378302, 0.0383234,
1048 0.0388218, 0.0393252, 0.0398336, 0.040347, 0.0408652, 0.041388, 0.0419165, 0.0424502, 0.0429893, 0.0435338,
1049 0.0440833, 0.044638, 0.0451976, 0.0457627, 0.0463338, 0.0469103, 0.047492, 0.0480797, 0.0486729, 0.0492716,
1050 0.0498757, 0.0504852, 0.0511009, 0.0517229, 0.0523503, 0.0529838, 0.0536231, 0.0542678, 0.054918, 0.0555743,
1051 0.0562372, 0.0569065, 0.0575818, 0.0582634, 0.0589511, 0.0596454, 0.0603451, 0.061051, 0.0617635, 0.0624826,
1052 0.0632084, 0.0639409, 0.06468, 0.0654254, 0.0661772, 0.0669346, 0.0676994, 0.0684714, 0.0692503, 0.0700354,
1053 0.0708285, 0.0716277, 0.0724347, 0.0732479, 0.0740671, 0.0748947, 0.0757299, 0.0765715, 0.0774207, 0.0782771,
1054 0.0791407, 0.0800119, 0.0808897, 0.0817743, 0.0826672, 0.0835684, 0.0844769, 0.0853938, 0.0863179, 0.0872493,
1055 0.0881882, 0.0891349, 0.090089, 0.0910523, 0.0920236, 0.093002, 0.0939894, 0.094985, 0.0959887, 0.0970003,
1056 0.0980191, 0.0990454, 0.100081, 0.101126, 0.10218, 0.103242, 0.104312, 0.105392, 0.10648, 0.107576,
1057 0.10868, 0.109793, 0.110916, 0.112048, 0.113188, 0.114339, 0.115498, 0.116666, 0.117843, 0.119028,
1058 0.120223, 0.121427, 0.122641, 0.123865, 0.125098, 0.126342, 0.127595, 0.128857, 0.130128, 0.131409,
1059 0.132701, 0.134002, 0.135314, 0.136635, 0.137966, 0.139308, 0.14066, 0.142022, 0.143394, 0.144774,
1060 0.146166, 0.14757, 0.148985, 0.15041, 0.151845, 0.153291, 0.154749, 0.156215, 0.157694, 0.159182,
1061 0.160682, 0.162194, 0.163718, 0.165251, 0.166797, 0.168354, 0.169921, 0.1715, 0.17309, 0.17469,
1062 0.176304, 0.177929, 0.179566, 0.181216, 0.182878, 0.184553, 0.186238, 0.187934, 0.189642, 0.191362,
1063 0.193096, 0.194842, 0.196602, 0.198374, 0.200158, 0.201954, 0.203764, 0.205586, 0.207421, 0.209266,
1064 0.211124, 0.212997, 0.214882, 0.216783, 0.218697, 0.220624, 0.222565, 0.224518, 0.226486, 0.228466,
1065 0.230458, 0.232463, 0.234484, 0.23652, 0.238569, 0.240633, 0.242711, 0.244803, 0.246909, 0.249031,
1066 0.251165, 0.253313, 0.255475, 0.257649, 0.259841, 0.262051, 0.264274, 0.266514, 0.268768, 0.271036,
1067 0.273319, 0.275618, 0.277932, 0.280259, 0.282602, 0.28496, 0.287338, 0.28973, 0.292138, 0.294563,
1068 0.297003, 0.299458, 0.30193, 0.304417, 0.306919, 0.309437, 0.311972, 0.314526, 0.317095, 0.319684,
1069 0.322289, 0.324911, 0.327551, 0.330205, 0.332876, 0.335567, 0.338271, 0.340993, 0.343736, 0.346496,
1070 0.349272, 0.352065, 0.354878, 0.35771, 0.360561, 0.363426, 0.366311, 0.369212, 0.372128, 0.375067,
1071 0.378027, 0.381006, 0.384001, 0.387014, 0.39005, 0.393106, 0.396181, 0.399271, 0.402384, 0.405513,
1072 0.408661, 0.41183, 0.41502, 0.418233, 0.421462, 0.424709, 0.42798, 0.43127, 0.434583, 0.437914,
1073 0.441267, 0.444637, 0.448022, 0.451434, 0.454868, 0.458328, 0.461805, 0.465302, 0.468821, 0.472364,
1074 0.475928, 0.47951, 0.483119, 0.486748, 0.490397, 0.494066, 0.497758, 0.501477, 0.505217, 0.508977,
1075 0.512762, 0.516567, 0.520394, 0.524247, 0.528125, 0.532027, 0.535947, 0.53989, 0.543852, 0.547844,
1076 0.551863, 0.555904, 0.559966, 0.56406, 0.568177, 0.572312, 0.576471, 0.580662, 0.584875, 0.58911,
1077 0.593373, 0.597653, 0.601965, 0.606301, 0.610663, 0.615051, 0.619465, 0.623907, 0.62837, 0.632863,
1078 0.637383, 0.641924, 0.646494, 0.651091, 0.655708, 0.660356, 0.665027, 0.669732, 0.674464, 0.679227,
1079 0.684016, 0.688827, 0.693664, 0.698532, 0.703428, 0.708353, 0.713307, 0.718283, 0.72329, 0.728322,
1080 0.733387, 0.738479, 0.743605, 0.748763, 0.753949, 0.759163, 0.764407, 0.769674, 0.774973, 0.780311,
1081 0.78567, 0.791057, 0.796476, 0.801922, 0.8074, 0.812919, 0.818466, 0.824044
1082 };
1083
1084 double m2 = 0.13957 * 0.13957;
1085 double smin = (0.13957 * 4) * (0.13957 * 4);
1086 double dh = 0.001;
1087 int od = (sc - 0.312) / dh;
1088 double sc_m = 0.312 + od * dh;
1089 double rhouse = 0;
1090 if (sc >= 0.312 && sc < 1) {
1091 rhouse = ((sc - sc_m) / dh) * (rho[od + 1] - rho[od]) + rho[od];
1092 } else if (sc < 0.312 && sc >= smin) {
1093 rhouse = ((sc - smin) / (0.312 - smin)) * rho[0];
1094 } else if (sc >= 1) {
1095 // rhouse = (1-16*m2/sc)*(1-16*m2/sc)*(1-16*m2/sc)*(1-16*m2/sc)*(1-16*m2/sc);
1096 rhouse = sqrt(1 - 16 * m2 / sc);
1097 } else {
1098 rhouse = 0;
1099 }
1100 return rhouse;
1101 }

◆ rho4Pi() [1/3]

void rho4Pi ( double sa,
double res[2] )
private

Definition at line 479 of file EvtDsToKpipi.cc.

480 {
481 double temp = 1.0 - 0.3116765584 / sa;
482 if (temp >= 0) {
483 res[0] = sqrt(temp) / (1.0 + exp(9.8 - 3.5 * sa));
484 res[1] = 0.0;
485 } else {
486 res[0] = 0.0;
487 res[1] = sqrt(-temp) / (1.0 + exp(9.8 - 3.5 * sa));
488 }
489 }

◆ rho4Pi() [2/3]

void rho4Pi ( const double sa,
double res[2] )
private

Two-body Phase-space Function (Two Pions)

Definition at line 1205 of file EvtDToKSpipi0pi0.cc.

1206 {
1207 double temp = 1.0 - 0.3116765584 / sa; // 0.3116765584=0.13957*0.13957*16
1208 if (temp >= 0) {
1209 res[0] = sqrt(temp) / (1.0 + exp(9.8 - 3.5 * sa));
1210 res[1] = 0.0;
1211 } else {
1212 res[0] = 0.0;
1213 res[1] = sqrt(-temp) / (1.0 + exp(9.8 - 3.5 * sa));
1214 }
1215 }

◆ rho4Pi() [3/3]

EvtComplex rho4Pi ( const double sa)
private

Two-body Phase-space Function (Two Pions)

Definition at line 481 of file EvtDToKSpipipi.cc.

482 {
483 double mpi_ = 0.13957;
484 EvtComplex one(1, 0);
485 EvtComplex rho_(0, 0);
486 EvtComplex ci(0, 1);
487 double temp = 1 - 16 * mpi_ * mpi_ / sa;
488 if (temp > 0) rho_ = one * sqrt(temp) / (1 + exp(9.8 - 3.5 * sa));
489 if (temp < 0) rho_ = ci * sqrt(-temp) / (1 + exp(9.8 - 3.5 * sa));
490 return rho_;
491 }

◆ rhoab() [1/3]

void rhoab ( double sa,
double sb,
double sc,
double res[2] )
private

Definition at line 467 of file EvtDsToKpipi.cc.

468 {
469 double tmp = sa + sb - sc;
470 double q = 0.25 * tmp * tmp / sa - sb;
471 if (q >= 0) {
472 res[0] = 2.0 * sqrt(q / sa);
473 res[1] = 0.0;
474 } else {
475 res[0] = 0.0;
476 res[1] = 2.0 * sqrt(-q / sa);
477 }
478 }

◆ rhoab() [2/3]

void rhoab ( const double sa,
const double sb,
const double sc,
double res[2] )
private

Two-body Phase-space Function.

Definition at line 1193 of file EvtDToKSpipi0pi0.cc.

1194 {
1195 double tmp = sa + sb - sc;
1196 double q = 0.25 * tmp * tmp / sa - sb;
1197 if (q >= 0) {
1198 res[0] = 2.0 * sqrt(q / sa);
1199 res[1] = 0.0;
1200 } else {
1201 res[0] = 0.0;
1202 res[1] = 2.0 * sqrt(-q / sa);
1203 }
1204 }

◆ rhoab() [3/3]

EvtComplex rhoab ( const double sa,
const double sb,
const double sc )
private

Two-body Phase-space Function.

Definition at line 470 of file EvtDToKSpipipi.cc.

471 {
472 EvtComplex one(1, 0);
473 double q = (sa + sb - sc) * (sa + sb - sc) / (4 * sa) - sb;
474 EvtComplex rho_;
475 EvtComplex ci(0, 1);
476 if (q > 0) rho_ = one * sqrt(q / sa);
477 if (q < 0) rho_ = ci * sqrt(-q / sa);
478 rho_ = 2.0 * rho_;
479 return rho_;
480 }

◆ rhoMTX()

std::complex< double > rhoMTX ( int i,
int j,
double s )
private

Definition at line 1103 of file EvtD0Topippim2pi0.cc.

1104 {
1105
1106 double rhoijx;
1107 double rhoijy = 0.0;
1108 if (i == j && i == 0) {
1109 double m2 = 0.13957 * 0.13957;
1110 if ((1 - (4 * m2) / s) > 0) {
1111 rhoijx = sqrt(1.0f - (4 * m2) / s);
1112 rhoijy = 0;
1113 } else {
1114 rhoijy = sqrt((4 * m2) / s - 1.0f);
1115 rhoijx = 0;
1116 }
1117 }
1118 if (i == j && i == 1) {
1119 double m2 = 0.493677 * 0.493677;
1120 if ((1 - (4 * m2) / s) > 0) {
1121 rhoijx = sqrt(1.0f - (4 * m2) / s);
1122 rhoijy = 0;
1123 } else {
1124 rhoijy = sqrt((4 * m2) / s - 1.0f);
1125 rhoijx = 0;
1126 }
1127 }
1128 if (i == j && i == 2) {
1129 rhoijx = rho22(s);
1130 rhoijy = 0;
1131 }
1132 if (i == j && i == 3) {
1133 double m2 = 0.547862 * 0.547862;
1134 if ((1 - (4 * m2) / s) > 0) {
1135 rhoijx = sqrt(1.0f - (4 * m2) / s);
1136 rhoijy = 0;
1137 } else {
1138 rhoijy = sqrt((4 * m2) / s - 1.0f);
1139 rhoijx = 0;
1140 }
1141 }
1142 if (i == j && i == 4) {
1143 double m_1 = 0.547862;
1144 double m_2 = 0.95778;
1145 double mp2 = (m_1 + m_2) * (m_1 + m_2);
1146 if ((1 - mp2 / s) > 0) {
1147 rhoijx = sqrt(1.0f - mp2 / s);
1148 rhoijy = 0;
1149 } else {
1150 rhoijy = sqrt(mp2 / s - 1.0f);
1151 rhoijx = 0;
1152 }
1153 }
1154
1155 if (i != j) {
1156 rhoijx = 0;
1157 rhoijy = 0;
1158 }
1159 std::complex<double> rhoij(rhoijx, rhoijy);
1160 return rhoij;
1161
1162 }

◆ RotateToHelicityBasisInBoostedFrame()

EvtSpinDensity RotateToHelicityBasisInBoostedFrame ( const EvtParticle * p,
EvtVector4R p4boost )

The function calculates the rotation matrix to convert the spin basis to the helicity basis in the boosted frame.

Parameters
pa pointer to the particle
p4boosta 4 vector to specify the rest frame to boost to. The function calculate the rotation matrix from the spin basis defined in the p rest frame to the helicity basis in the rest frame of p4boost.

Definition at line 27 of file EvtBSemiTauonicAmplitude.cc.

29 {
30 // theta and phi of p momentum in p4boost rest frame
31 EvtVector4R p4Boosted = boostTo(p->getP4(), p4boost, true);
32 const double theta = acos(p4Boosted.get(3) / p4Boosted.d3mag());
33 const double phi = atan2(p4Boosted.get(2), p4Boosted.get(1));
34
35 // here p must be EvtDiracParticle (if not EvtGen will abort)
36 EvtDiracSpinor spRest[2] = {p->sp(0), p->sp(1)};
37 EvtDiracSpinor sp[2];
38 sp[0] = boostTo(spRest[0], p4boost);
39 sp[1] = boostTo(spRest[1], p4boost);
40
41 EvtDiracSpinor spplus;
42 EvtDiracSpinor spminus;
43
44 double norm;
45
46 if (EvtPDL::getStdHep(p->getId()) > 0) {
47 spplus.set(1.0, 0.0, 0.0, 0.0);
48 spminus.set(0.0, 1.0, 0.0, 0.0);
49 norm = sqrt(real(sp[0].get_spinor(0) * sp[0].get_spinor(0) + sp[0].get_spinor(1) * sp[0].get_spinor(1)));
50 } else {
51 spplus.set(0.0, 0.0, 0.0, 1.0);
52 spminus.set(0.0, 0.0, 1.0, 0.0);
53 norm = sqrt(real(sp[0].get_spinor(2) * sp[0].get_spinor(2) + sp[0].get_spinor(3) * sp[0].get_spinor(3)));
54 }
55
56 spplus.applyRotateEuler(phi, theta, -phi);
57 spminus.applyRotateEuler(phi, theta, -phi);
58
59 EvtSpinDensity R;
60 R.setDim(2);
61
62 for (int i = 0; i < 2; i++) {
63 if (EvtPDL::getStdHep(p->getId()) > 0) {
64 R.set(0, i, (spplus * sp[i]) / norm);
65 R.set(1, i, (spminus * sp[i]) / norm);
66 } else {
67 R.set(0, i, (sp[i]*spplus) / norm);
68 R.set(1, i, (sp[i]*spminus) / norm);
69 }
70 }
71
72 return R;
73
74 }
double R
typedef autogenerated by FFTW

◆ s13_max()

double s13_max ( const double & s12,
const double & M,
const double & m1,
const double & m2,
const double & m3 )

maximum s13

Definition at line 681 of file EvtB0toKsKK.cc.

683 {
684 const double E2star = (s12 - (m2 * m2) + (m1 * m1)) / 2.0 / sqrt(s12);
685 const double E3star = (M * M - s12 - (m3 * m3)) / 2.0 / sqrt(s12);
686
687 const double s23_max =
688 ((E2star + E3star) * (E2star + E3star)) -
689 ((sqrt((E2star * E2star) - (m1 * m1)) - sqrt((E3star * E3star) - (m3 * m3))) *
690 (sqrt((E2star * E2star) - (m1 * m1)) - sqrt((E3star * E3star) - (m3 * m3))));
691
692 return s23_max;
693 }

◆ s13_min()

double s13_min ( const double & s12,
const double & M,
const double & m1,
const double & m2,
const double & m3 )

minimum s13

Definition at line 666 of file EvtB0toKsKK.cc.

668 {
669 const double E2star = (s12 - (m2 * m2) + (m1 * m1)) / 2.0 / sqrt(s12);
670 const double E3star = (M * M - s12 - (m3 * m3)) / 2.0 / sqrt(s12);
671
672 const double s23_min =
673 ((E2star + E3star) * (E2star + E3star)) -
674 ((sqrt((E2star * E2star) - (m1 * m1)) + sqrt((E3star * E3star) - (m3 * m3))) *
675 (sqrt((E2star * E2star) - (m1 * m1)) + sqrt((E3star * E3star) - (m3 * m3))));
676
677 return s23_min;
678 }

◆ SCADot() [1/3]

double SCADot ( double a1[4],
double a2[4] )
private

Definition at line 322 of file EvtDsToKKpi.cc.

323 {
324 double _cal = 0.;
325 _cal = a1[0] * a2[0] - a1[1] * a2[1] - a1[2] * a2[2] - a1[3] * a2[3];
326 return _cal;
327 }

◆ SCADot() [2/3]

double SCADot ( double a1[4],
double a2[4] )
private

Definition at line 192 of file EvtDsToKpipi.cc.

193 {
194 double _cal = a1[0] * a2[0] - a1[1] * a2[1] - a1[2] * a2[2] - a1[3] * a2[3];
195 return _cal;
196 }

◆ SCADot() [3/3]

double SCADot ( const double a1[4],
const double a2[4] )
private

Four-Vector Scalar Product.

Definition at line 811 of file EvtDToKSpipi0pi0.cc.

812 {
813 double _cal = a1[0] * a2[0] - a1[1] * a2[1] - a1[2] * a2[2] - a1[3] * a2[3];
814 return _cal;
815 }

◆ scaleMomenta()

std::vector< ROOT::Math::PxPyPzMVector > scaleMomenta ( const std::vector< ROOT::Math::PxPyPzMVector > & ps,
double C )
inline

Scale momenta of the particles in the vector ps with a factor C.

Result is returned as returned as a vector with the scaled momenta

Definition at line 58 of file scaleParticleEnergies.h.

59 {
60 std::vector<ROOT::Math::PxPyPzMVector> psS(ps.size());
61 for (unsigned i = 0; i < ps.size(); ++i)
62 psS[i].SetCoordinates(C * ps[i].Px(), C * ps[i].Py(), C * ps[i].Pz(), ps[i].M());
63
64 return psS;
65 }

◆ scaleParticleEnergies()

void scaleParticleEnergies ( MCParticleGraph & mpg,
double EcmsTarget )
inline

Scale momenta of the particles by a constant factor such that total energy is changed to EcmsTarget.

It also changes momenta of the incoming particles such that energy is conserved. Should be called in CM reference frame.

Definition at line 71 of file scaleParticleEnergies.h.

72 {
73 // scale energy of incoming particles
74 double eIn = EcmsTarget / 2;
75 double pIn = sqrt(pow(eIn, 2) - pow(mpg[0].getMass(), 2));
76
77 mpg[0].setMomentum(0, 0, pIn);
78 mpg[1].setMomentum(0, 0, -pIn);
79 mpg[0].setEnergy(eIn);
80 mpg[1].setEnergy(eIn);
81
82
83 // extract momenta of final state particles
84 std::vector<ROOT::Math::PxPyPzMVector> cmsMomenta(mpg.size() - 2);
85 for (size_t i = 2; i < mpg.size(); ++i) {
86 ROOT::Math::XYZVector p = mpg[i].getMomentum();
87 cmsMomenta[i - 2].SetCoordinates(p.X(), p.Y(), p.Z(), mpg[i].getMass());
88 }
89
90 // calculate the scaling factor in an iterative way
91 double C = 1;
92 for (int i = 0; i < 10; ++i) {
93 auto cmsMomentaScaled = scaleMomenta(cmsMomenta, C);
94 double dC = getScaleFactor(cmsMomentaScaled, EcmsTarget);
95 C *= dC;
96 if (abs(dC - 1) < 3 * std::numeric_limits<double>::epsilon()) break;
97 }
98
99 // apply scaling factor on final-state particles
100 auto cmsMomentaScaled = scaleMomenta(cmsMomenta, C);
101
102 // change momenta in the MCParticleGraph
103 for (unsigned i = 2; i < mpg.size(); ++i) {
104 mpg[i].setMomentum(cmsMomentaScaled[i - 2].Px(), cmsMomentaScaled[i - 2].Py(), cmsMomentaScaled[i - 2].Pz());
105 mpg[i].setEnergy(cmsMomentaScaled[i - 2].E());
106 }
107 }
size_t size() const
Return the number of particles in the graph.
std::vector< ROOT::Math::PxPyPzMVector > scaleMomenta(const std::vector< ROOT::Math::PxPyPzMVector > &ps, double C)
Scale momenta of the particles in the vector ps with a factor C.
double getScaleFactor(const std::vector< ROOT::Math::PxPyPzMVector > &ps, double EcmsTarget)
Find approximative value of the momentum scaling factor which makes the total energy of the particles...

◆ setInput()

void setInput ( double * pip,
double * pim,
double * pi01,
double * pi02 )
private

Definition at line 243 of file EvtD0Topippim2pi0.cc.

244 {
245 m_Pip.push_back(pip[0]); m_Pim.push_back(pim[0]); m_Pi01.push_back(pi01[0]); m_Pi02.push_back(pi02[0]);
246 m_Pip.push_back(pip[1]); m_Pim.push_back(pim[1]); m_Pi01.push_back(pi01[1]); m_Pi02.push_back(pi02[1]);
247 m_Pip.push_back(pip[2]); m_Pim.push_back(pim[2]); m_Pi01.push_back(pi01[2]); m_Pi02.push_back(pi02[2]);
248 m_Pip.push_back(pip[3]); m_Pim.push_back(pim[3]); m_Pi01.push_back(pi01[3]); m_Pi02.push_back(pi02[3]);
249 }

◆ Smu()

EvtVector4R Smu ( const EvtVector4R & p4a,
const EvtVector4R & p4b,
const EvtVector4R & p4c )

Function 4Vector Smu.

Definition at line 370 of file EvtB0toKsKK.cc.

372 {
373 const double ma = p4a.mass();
374 const double mb = p4b.mass();
375 const double mres = (p4a + p4b).mass();
376 const double ma2 = ma * ma;
377 const double mb2 = mb * mb;
378 const double mres2 = mres * mres;
379
380 const double N1 =
381 mres /
382 (sqrt(mres2 - ((ma + mb) * (ma + mb))) * sqrt(mres2 - ((ma - mb) * (ma - mb))));
383
384 const EvtVector4R Smu =
385 N1 * ((p4a - p4b) - ((p4a + p4b) * (ma2 - mb2) / mres2));
386
387 return Smu;
388 }

◆ Spin_factor() [1/2]

EvtComplex Spin_factor ( double P1[],
double P2[],
double P3[],
int spin,
int flag,
double mass_R,
double width_R )
private

Definition at line 171 of file EvtD0TopipiEta.cc.

172 {
173 //D-> R P3, R->P1 P2, 0: non-resonance 1: resonance, RBW 2: resonance, GS 3: resonance, Flatte 4: rho-omega mxing for omega
174 double R[4], s[3], sp2, B[2];
175 double tmp;
176 for (int i = 0; i < 4; i++) {
177 R[i] = P1[i] + P2[i];
178 }
179 s[0] = dot(R, R);
180 s[1] = dot(P1, P1);
181 s[2] = dot(P2, P2);
182 sp2 = dot(P3, P3);
183
184 EvtComplex amp, prop, prop1, prop2;
185
186 //-----------for prop-------------------------
187 EvtComplex rhokk, rhopieta;
188 if (spin == 0) {
189 if (flag == 0) prop = one;
190 if (flag == 1) prop = propagatorRBW(mass_R, width_R, s[0], s[1], s[2], 3.0, 0);
191 if (flag == 3) {
192 rhokk = Flatte_rhoab(s[0], snk, sck);
193 rhopieta = Flatte_rhoab(s[0], scpi, seta);
194 prop = 1.0 / (mass_R * mass_R - s[0] - ci * (0.341 * rhopieta + 0.341 * 0.892 * rhokk));
195 }
196 amp = prop;
197 } else if (spin == 1) {
198 if (flag == 0) {
199 prop = EvtComplex(1.0, 0.0);
200 }
201 if (flag == 1) {
202 prop = propagatorRBW(mass_R, width_R, s[0], s[1], s[2], 3.0, 1);
203 }
204 if (flag == 2) {
205 prop = propagatorGS(mass_R, width_R, s[0], s[1], s[2], 3.0, 1);
206 }
207 if (flag == 4) {
208 prop1 = propagatorGS(mass_R, width_R, s[0], s[1], s[2], 3.0, 1);
209 prop2 = propagatorRBW(0.78266, 0.01358, s[0], s[1], s[2], 3.0, 1);
210 prop = prop1 * prop2;
211 }
212 double T1[4], t1[4];
213 calt1(R, P3, T1);
214 calt1(P1, P2, t1);
215 B[0] = barrier(1, s[0], s[1], s[2], 3.0, mass_R);
216 B[1] = barrier(1, sD, s[0], sp2, 5.0, mD);
217 tmp = 0.0;
218 for (int i = 0; i < 4; i++) {
219 tmp += T1[i] * t1[i] * G[i][i];
220 }
221 amp = tmp * prop * B[0] * B[1];
222 } else if (spin == 2) {
223 double T2[4][4], t2[4][4];
224 calt2(R, P3, T2);
225 calt2(P1, P2, t2);
226 B[0] = barrier(2, s[0], s[1], s[2], 3.0, mass_R);
227 B[1] = barrier(2, sD, s[0], sp2, 5.0, mD);
228 tmp = 0.0;
229 for (int i = 0; i < 4; i++) {
230 for (int j = 0; j < 4; j++) {
231 tmp += T2[i][j] * t2[j][i] * G[j][j] * G[i][i];
232 }
233 }
234 if (flag == 0) prop = one;
235 if (flag == 1) prop = propagatorRBW(mass_R, width_R, s[0], s[1], s[2], 3.0, 2);
236 amp = tmp * prop * B[0] * B[1];
237 }
238 return amp;
239 }

◆ Spin_factor() [2/2]

EvtComplex Spin_factor ( double P1[],
double P2[],
double P3[],
int spin,
int flag,
double mass_R,
double width_R )
private

Definition at line 141 of file EvtDTopipi0Eta.cc.

142 {
143 //D-> R P3, R->P1 P2, 0: non-resonance 1: resonance, RBW 2: resonance, GS 3: resonance, Flatte 4: rho-omega mxing for omega
144 double R[4], s[3], sp2, B[2];
145 double tmp;
146 for (int i = 0; i < 4; i++) {
147 R[i] = P1[i] + P2[i];
148 }
149 s[0] = dot(R, R);
150 s[1] = dot(P1, P1);
151 s[2] = dot(P2, P2);
152 sp2 = dot(P3, P3);
153
154 EvtComplex amp, prop, prop1, prop2;
155 EvtComplex rhokk, rhopieta;
156 if (spin == 0) {
157 if (flag == 0) prop = one;
158 if (flag == 1) prop = propagatorRBW(mass_R, width_R, s[0], s[1], s[2], 3.0, 0);
159 if (flag == 30) {
160 rhokk = Flatte_rhoab(s[0], snk, sck);
161 rhopieta = Flatte_rhoab(s[0], scpi, seta);
162 prop = 1.0 / (mass_R * mass_R - s[0] - ci * (0.341 * rhopieta + 0.341 * 0.892 * rhokk));
163 }
164 if (flag == 31) {
165 double qKsK;
166 qKsK = 0.25 * (s[0] + 3.899750596e-03) * (s[0] + 3.899750596e-03) / s[0] - 0.497614 * 0.497614;
167 if (qKsK > 0) rhokk = 2.0 * sqrt(qKsK / s[0]) * one;
168 if (qKsK < 0) rhokk = 2.0 * sqrt(qKsK / s[0]) * ci;
169 rhopieta = Flatte_rhoab(s[0], snpi, seta);
170 prop = 1.0 / (mass_R * mass_R - s[0] - ci * (0.341 * rhopieta + 0.341 * 0.892 * rhokk));
171 }
172 amp = prop;
173 } else if (spin == 1) {
174 if (flag == 0) {
175 prop = EvtComplex(1.0, 0.0);
176 }
177 if (flag == 1) {
178 prop = propagatorRBW(mass_R, width_R, s[0], s[1], s[2], 3.0, 1);
179 }
180 if (flag == 2) {
181 prop = propagatorGS(mass_R, width_R, s[0], s[1], s[2], 3.0, 1);
182 }
183 if (flag == 4) {
184 prop1 = propagatorGS(mass_R, width_R, s[0], s[1], s[2], 3.0, 1);
185 prop2 = propagatorRBW(0.78266, 0.01358, s[0], s[1], s[2], 3.0, 1);
186 prop = prop1 * prop2;
187 }
188 double T1[4], t1[4];
189 calt1(R, P3, T1);
190 calt1(P1, P2, t1);
191 B[0] = barrier(1, s[0], s[1], s[2], 3.0, mass_R);
192 B[1] = barrier(1, sD, s[0], sp2, 5.0, mD);
193 tmp = 0.0;
194 for (int i = 0; i < 4; i++) {
195 tmp += T1[i] * t1[i] * G[i][i];
196 }
197 amp = tmp * prop * B[0] * B[1];
198 } else if (spin == 2) {
199 double T2[4][4], t2[4][4];
200 calt2(R, P3, T2);
201 calt2(P1, P2, t2);
202 B[0] = barrier(2, s[0], s[1], s[2], 3.0, mass_R);
203 B[1] = barrier(2, sD, s[0], sp2, 5.0, mD);
204 tmp = 0.0;
205 for (int i = 0; i < 4; i++) {
206 for (int j = 0; j < 4; j++) {
207 tmp += T2[i][j] * t2[j][i] * G[j][j] * G[i][i];
208 }
209 }
210 if (flag == 0) prop = one;
211 if (flag == 1) prop = propagatorRBW(mass_R, width_R, s[0], s[1], s[2], 3.0, 2);
212 amp = tmp * prop * B[0] * B[1];
213 }
214 return amp;
215 }

◆ spinFactor()

double spinFactor ( int spin,
double motherMass,
double daug1Mass,
double daug2Mass,
double daug3Mass,
double m12,
double m13,
double m23 )
private

Definition at line 106 of file EvtDToKSKpi0.cc.

108 {
109 if (spin == 0) return 1;
110
111 double _mA = daug1Mass;
112 double _mB = daug2Mass;
113 double _mC = daug3Mass;
114 double _mAB = m12;
115 double _mAC = m13;
116 double _mBC = m23;
117
118 double massFactor = 1.0 / _mAB;
119 double sFactor = -1;
120 sFactor *= ((_mBC - _mAC) + (massFactor * (motherMass * motherMass - _mC * _mC) * (_mA * _mA - _mB * _mB)));
121
122 if (spin == 2) {
123 sFactor *= sFactor;
124 double extraterm = ((_mAB - (2 * motherMass * motherMass) - (2 * _mC * _mC))
125 + massFactor * pow(motherMass * motherMass - _mC * _mC, 2));
126 extraterm *= ((_mAB - (2 * _mA * _mA) - (2 * _mB * _mB)) + massFactor * pow(_mA * _mA - _mB * _mB, 2));
127 extraterm /= 3;
128 sFactor -= extraterm;
129 }
130
131 return sFactor;
132 }

◆ sqrt() [1/2]

double sqrt ( double a)
inline

sqrt for double

Definition at line 28 of file beamHelpers.h.

28{ return std::sqrt(a); }

◆ sqrt() [2/2]

DualNumber sqrt ( DualNumber a)
inline

sqrt of dual number

Definition at line 114 of file beamHelpers.h.

115 {
116 return DualNumber(std::sqrt(a.x), 1. / (2 * std::sqrt(a.x)) * a.dx);
117 }

◆ sum_tensor()

std::vector< double > sum_tensor ( std::vector< double > pa,
std::vector< double > pb )
private

Definition at line 251 of file EvtD0Topippim2pi0.cc.

252 {
253
254 std::vector<double> temp;
255 for (size_t i = 0; i < pa.size(); i++) {
256 double sum = pa[i] + pb[i];
257 temp.push_back(sum);
258 }
259 return temp;
260 }

◆ tan() [1/2]

double tan ( double a)
inline

tan for double

Definition at line 31 of file beamHelpers.h.

31{ return std::tan(a); }

◆ tan() [2/2]

DualNumber tan ( DualNumber a)
inline

tan of dual number

Definition at line 128 of file beamHelpers.h.

129 {
130 return DualNumber(std::tan(a.x), (1.0 + std::tan(a.x) * std::tan(a.x)) * a.dx);
131 }

◆ term()

void term ( )

Terminates the generator.

Closes the internal generator.

Definition at line 204 of file CRY.cc.

205 {
206 B2RESULT("Total time simulated: " << m_cryGenerator->timeSimulated() << " seconds");
207 B2RESULT("Total number of events simulated: " << m_totalTrials);
208 }

◆ Tmunu()

EvtTensor4C Tmunu ( const EvtVector4R & p4a,
const EvtVector4R & p4b,
const EvtVector4R & p4c )

Function Tensor Tmunu.

Definition at line 423 of file EvtB0toKsKK.cc.

425 {
426 const double mres = (p4a + p4b).mass();
427 const EvtVector4R wmu = (p4a + p4b) / mres;
428
429 const EvtTensor4C Tmunu =
430 sqrt(3.0 / 2.0) *
431 (EvtGenFunctions::directProd(Smu(p4a, p4b, p4c), Smu(p4a, p4b, p4c)) +
432 (1.0 / 3.0 * (EvtTensor4C::g() - EvtGenFunctions::directProd(wmu, wmu))));
433
434 return Tmunu;
435 }

◆ toEigen()

static Eigen::MatrixXd toEigen ( TMatrixDSym m)
static

transform matrix from ROOT to Eigen format

Definition at line 63 of file InitialParticleGeneration.cc.

64 {
65 Eigen::MatrixXd mEig(m.GetNrows(), m.GetNcols());
66 for (int i = 0; i < m.GetNrows(); ++i)
67 for (int j = 0; j < m.GetNcols(); ++j)
68 mEig(i, j) = m(i, j);
69
70 return mEig;
71 }

◆ transformCov()

Eigen::MatrixXd transformCov ( const Eigen::MatrixXd & covHER,
const Eigen::MatrixXd & covLER,
const Eigen::MatrixXd & grad )
inline

transform covariance matrix to the variables (Ecms, boostX, boostY, boostZ, angleXZ, angleYZ)

Definition at line 293 of file beamHelpers.h.

294 {
295
296 Eigen::MatrixXd cov = Eigen::MatrixXd::Zero(6, 6);
297 cov.block<3, 3>(0, 0) = covHER;
298 cov.block<3, 3>(3, 3) = covLER;
299
300 Eigen::MatrixXd covNew = grad * cov * grad.transpose();
301
302 return covNew;
303
304 }

◆ twoBodyCMmom()

double twoBodyCMmom ( double rMassSq,
double d1m,
double d2m )
private

Definition at line 85 of file EvtDToKSKpi0.cc.

86 {
87 double kin1 = 1 - pow(d1m + d2m, 2) / rMassSq;
88 kin1 = kin1 >= 0 ? sqrt(kin1) : 1;
89 double kin2 = 1 - pow(d1m - d2m, 2) / rMassSq;
90 kin2 = kin2 >= 0 ? sqrt(kin2) : 1;
91
92 double ret = 0.5 * sqrt(rMassSq) * kin1 * kin2;
93 return ret;
94 }

◆ umu()

EvtVector4R umu ( const EvtVector4R & p4a,
const EvtVector4R & p4b,
const EvtVector4R & p4c )

Function 4Vector umu.

Definition at line 360 of file EvtB0toKsKK.cc.

362 {
363 const double s = (p4a + p4b + p4c) * (p4a + p4b + p4c);
364
365 const EvtVector4R umu = (p4a + p4b + p4c) / sqrt(s);
366
367 return umu;
368 }

◆ updateVertex()

ROOT::Math::XYZVector updateVertex ( bool force = false)

Update the vertex position:

  1. If there is no initial particles object generate a new one with nominal values without smearing
  2. If the BeamParameters disallow smearing of the vertex it does nothing
  3. If initial particles already exist check if the vertex smearing has already been applied. If not, apply vertex smearing if allowed.
  4. Return the shift in vertex to the previous value (or the origin if there was no previous value).

This function does not update the energies as this would possibly introduce inconsistency between values used by the generator and the values contained in the initial particles. But it is useful to smear the vertex after generation.

Parameters
forceif true the vertex will be regenerated even if vertex smearing was already applied.

Definition at line 202 of file InitialParticleGeneration.cc.

203 {
204 if (!m_beamParams.isValid()) {
205 B2FATAL("Cannot generate beam without valid BeamParameters");
206 }
207 if (!m_event) {
208 // generate a new mc initial particle without smearing except for the vertex
209 generate(BeamParameters::c_smearVertex);
210 return m_event->getVertex();
211 }
212 if (!m_beamParams->hasGenerationFlags(BeamParameters::c_smearVertex) or
213 (m_event->hasGenerationFlags(BeamParameters::c_smearVertex) and not force)) {
214 // already has a smeared vertex or smearing disallowed. nothing to do
215 return {0, 0, 0};
216 }
217 // Ok, now we need to just update the vertex, make sure the parameters are up to date ...
218 if (m_beamParams.hasChanged()) {
219 m_generateHER.reset();
220 m_generateLER.reset();
221 m_generateVertex.reset();
222 }
223 // Add the smear vertex flag
224 m_event->setGenerationFlags(m_event->getGenerationFlags() | BeamParameters::c_smearVertex);
225 // And generate a vertex ...
226 auto previous = m_event->getVertex();
227 auto vtx = generateVertex(m_beamParams->getVertex(), m_beamParams->getCovVertex(), m_generateVertex);
228 m_event->setVertex(vtx);
229 // Everything done
230 return vtx - previous;
231 }

◆ v()

double v ( double mtau,
double q2 ) const

Function to calculate the tau velocity.

Parameters
mtaudaughter lepton mass.
q2q^2 of the decay (square of l+nu invariant mass).
Returns
calculated tau velocity.

Definition at line 510 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

511 {
512 return sqrt(1 - mtau * mtau / q2);
513 }

◆ wid() [1/8]

double wid ( double mass,
const double sa,
const double sb,
const double sc,
const double r,
const int l ) const
private

Energy dependent width.

Definition at line 644 of file EvtD0ToKpipipi.cc.

645 {
646 double widm(0.), q(0.), q0(0.);
647 double sa0 = Mass * Mass;
648 double m = sqrt(sa);
649 q = Qabcs(sa, sb, sc);
650 q0 = Qabcs(sa0, sb, sc);
651 double z, z0;
652 z = q * r * r;
653 z0 = q0 * r * r;
654 double t = q / q0;
655 double F(0.);
656 if (l == 0) F = 1;
657 if (l == 1) F = sqrt((1 + z0) / (1 + z));
658 if (l == 2) F = sqrt((9 + 3 * z0 + z0 * z0) / (9 + 3 * z + z * z));
659 widm = pow(t, l + 0.5) * Mass / m * F * F;
660 return widm;
661 }

◆ wid() [2/8]

double wid ( double mass,
double sa,
double sb,
double sc,
double r,
int l )
private

Definition at line 306 of file EvtD0TopipiEta.cc.

307 {
308 double widm(0.), q(0.), q0(0.);
309 double sa0 = mass * mass;
310 double m = sqrt(sa);
311 q = Qabcs(sa, sb, sc);
312 q0 = Qabcs(sa0, sb, sc);
313 double z, z0;
314 z = q * r * r;
315 z0 = q0 * r * r;
316 double t = q / q0;
317 double F(0.);
318 if (l == 0) F = 1;
319 if (l == 1) F = sqrt((1 + z0) / (1 + z));
320 if (l == 2) F = sqrt((9 + 3 * z0 + z0 * z0) / (9 + 3 * z + z * z));
321 widm = pow(t, l + 0.5) * mass / m * F * F;
322 return widm;
323 }

◆ wid() [3/8]

double wid ( double mass,
double sa,
double sb,
double sc,
double r,
int l )
private

Definition at line 566 of file EvtD0Topippim2pi0.cc.

567 {
568 double widm = 1.0;
569 double sa0 = mass * mass;
570 double m = sqrt(sa);
571 double q = fundecaymomentum2(sa, sb, sc);
572 double q0 = fundecaymomentum2(sa0, sb, sc);
573 r = r / 0.197321;
574 double z = q * r * r;
575 double z0 = q0 * r * r;
576 double F = 0.0;
577 if (l == 0) F = 1.0;
578 if (l == 1) F = sqrt((1.0 + z0) / (1.0 + z));
579 if (l == 2) F = sqrt((9.0 + 3.0 * z0 + z0 * z0) / (9.0 + 3.0 * z + z * z));
580 if (l == 3) F = sqrt((225.0 + 45.0 * z0 + 6.0 * z0 * z0 + z0 * z0 * z0) / (225.0 + 45.0 * z + 6.0 * z * z + z * z * z));
581 if (l == 4) F = sqrt((11025.0 + 1575.0 * z0 + 135.0 * z0 * z0 + 10.0 * z0 * z0 * z0 + z0 * z0 * z0 * z0) /
582 (11025.0 + 1575.0 * z + 135.0 * z * z + 10.0 * z * z * z + z * z * z * z));
583 double t = sqrt(q / q0);
584 //printf("sa0 = %f, sb = %f, sc = %f, q = %f, q0 = %0.15f, qq0 = %f, t = %f \n",sa0,sb,sc,q,q0,q/q0,t);
585 uint i = 0;
586 for (i = 0; i < static_cast<uint>(2 * l + 1); i++) {
587 widm *= t;
588 }
589 widm *= (mass / m * F * F);
590 return widm;
591 }

◆ wid() [4/8]

double wid ( double mass,
double sa,
double sb,
double sc,
double r,
int l )
private

Definition at line 405 of file EvtDsToKKpi.cc.

406 {
407 double widm = 0.;
408 double q = 0.;
409 double q0 = 0.;
410 double sa0 = mass_param * mass_param;
411 double m = sqrt(sa);
412 q = (sa + sb - sc) * (sa + sb - sc) / (4 * sa) - sb;
413 if (q < 0) q = 1e-16;
414 q0 = (sa0 + sb - sc) * (sa0 + sb - sc) / (4 * sa0) - sb;
415 if (q0 < 0) q0 = 1e-16;
416 double z = q * r * r;
417 double z0 = q0 * r * r;
418 double F = 0;
419 if (l == 0) F = 1;
420 if (l == 1) F = sqrt((1 + z0) / (1 + z));
421 if (l == 2) F = sqrt((9 + 3 * z0 + z0 * z0) / (9 + 3 * z + z * z));
422 double t = q / q0;
423 widm = pow(t, l + 0.5) * mass_param / m * F * F;
424 return widm;
425 }

◆ wid() [5/8]

double wid ( double mass2,
double mass,
double sa,
double sb,
double sc,
double r2,
int l )
private

Definition at line 257 of file EvtDsToKpipi.cc.

258 {
259 double widm = 0.;
260 double m = sqrt(sa);
261 double tmp = sb - sc;
262 double tmp1 = sa + tmp;
263 double q = 0.25 * tmp1 * tmp1 / sa - sb;
264 if (q < 0) q = 1e-16;
265 double tmp2 = mass2 + tmp;
266 double q0 = 0.25 * tmp2 * tmp2 / mass2 - sb;
267 if (q0 < 0) q0 = 1e-16;
268 double z = q * r2;
269 double z0 = q0 * r2;
270 double t = q / q0;
271 if (l == 0) {widm = sqrt(t) * mass_param / m;}
272 else if (l == 1) {widm = t * sqrt(t) * mass_param / m * (1 + z0) / (1 + z);}
273 else if (l == 2) {widm = t * t * sqrt(t) * mass_param / m * (9 + 3 * z0 + z0 * z0) / (9 + 3 * z + z * z);}
274 return widm;
275 }

◆ wid() [6/8]

double wid ( const double mass2,
const double mass,
const double sa,
const double sb,
const double sc,
const double r2,
const int l )
private

Energy Dependent Width.

Definition at line 867 of file EvtDToKSpipi0pi0.cc.

869 {
870 double widm = 0.;
871 double m = sqrt(sa);
872 double tmp = sb - sc;
873 double tmp1 = sa + tmp;
874 double q = fabs(0.25 * tmp1 * tmp1 / sa - sb);
875 double tmp2 = mass2 + tmp;
876 double q0 = fabs(0.25 * tmp2 * tmp2 / mass2 - sb);
877 double z = q * r2;
878 double z0 = q0 * r2;
879 double t = q / q0;
880 if (l == 0) {widm = sqrt(t) * mass / m;}
881 else if (l == 1) {widm = t * sqrt(t) * mass / m * (1 + z0) / (1 + z);}
882 else if (l == 2) {widm = t * t * sqrt(t) * mass / m * (9 + 3 * z0 + z0 * z0) / (9 + 3 * z + z * z);}
883 return widm;
884 }

◆ wid() [7/8]

double wid ( const double mass,
const double sa,
const double sb,
const double sc,
const double r,
const int l ) const
private

Energy Dependent Width.

Definition at line 499 of file EvtDToKSpipipi.cc.

500 {
501 double widm(0.), q(0.), q0(0.);
502 double sa0 = mass_ * mass_;
503 double m = sqrt(sa);
504 q = Qabcs(sa, sb, sc);
505 q0 = Qabcs(sa0, sb, sc);
506 double z, z0;
507 z = q * r * r;
508 z0 = q0 * r * r;
509 double t = q / q0;
510 double F(0.);
511 if (l == 0) F = 1;
512 if (l == 1) F = sqrt((1 + z0) / (1 + z));
513 if (l == 2) F = sqrt((9 + 3 * z0 + z0 * z0) / (9 + 3 * z + z * z));
514 widm = pow(t, l + 0.5) * mass_ / m * F * F;
515 return widm;
516 }

◆ wid() [8/8]

double wid ( double mass,
double sa,
double sb,
double sc,
double r,
int l )
private

Definition at line 282 of file EvtDTopipi0Eta.cc.

283 {
284 double widm(0.), q(0.), q0(0.);
285 double sa0 = mass * mass;
286 double m = sqrt(sa);
287 q = Qabcs(sa, sb, sc);
288 q0 = Qabcs(sa0, sb, sc);
289 double z, z0;
290 z = q * r * r;
291 z0 = q0 * r * r;
292 double t = q / q0;
293 double F(0.);
294 if (l == 0) F = 1;
295 if (l == 1) F = sqrt((1 + z0) / (1 + z));
296 if (l == 2) F = sqrt((9 + 3 * z0 + z0 * z0) / (9 + 3 * z + z * z));
297 widm = pow(t, l + 0.5) * mass / m * F * F;
298 return widm;
299 }

◆ widl1() [1/2]

double widl1 ( double mass2,
double mass,
double sa,
double sb,
double sc,
double r2 )
private

Definition at line 277 of file EvtDsToKpipi.cc.

278 {
279 double widm = 0.;
280 double m = sqrt(sa);
281 double tmp = sb - sc;
282 double tmp1 = sa + tmp;
283 double q = 0.25 * tmp1 * tmp1 / sa - sb;
284 if (q < 0) q = 1e-16;
285 double tmp2 = mass2 + tmp;
286 double q0 = 0.25 * tmp2 * tmp2 / mass2 - sb;
287 if (q0 < 0) q0 = 1e-16;
288 double z = q * r2;
289 double z0 = q0 * r2;
290 double F = (1 + z0) / (1 + z);
291 double t = q / q0;
292 widm = t * sqrt(t) * mass_param / m * F;
293 return widm;
294 }

◆ widl1() [2/2]

double widl1 ( const double mass2,
const double mass,
const double sa,
const double sb,
const double sc,
const double r2 )
private

Energy Dependent Width (L=1)

Definition at line 885 of file EvtDToKSpipi0pi0.cc.

887 {
888 double widm = 0.;
889 double m = sqrt(sa);
890 double tmp = sb - sc;
891 double tmp1 = sa + tmp;
892 double q = fabs(0.25 * tmp1 * tmp1 / sa - sb);
893 double tmp2 = mass2 + tmp;
894 double q0 = fabs(0.25 * tmp2 * tmp2 / mass2 - sb);
895 double z = q * r2;
896 double z0 = q0 * r2;
897 double F = (1 + z0) / (1 + z);
898 double t = q / q0;
899 widm = t * sqrt(t) * mass / m * F;
900 return widm;
901 }

◆ widT1170()

double widT1170 ( int i)
private

Definition at line 935 of file EvtD0Topippim2pi0.cc.

936 {
937 double wid1[300] = { 0.000166175, 0.00161921, 0.00561815, 0.0131971, 0.0252114, 0.0422987, 0.0651321, 0.0943468, 0.130226, 0.173219,
938 0.22388, 0.28243, 0.349257, 0.424971, 0.50948, 0.603832, 0.707638, 0.821261, 0.946341, 1.08278,
939 1.22851, 1.38899, 1.56053, 1.74557, 1.94153, 2.15585, 2.38028, 2.62579, 2.88376, 3.16032,
940 3.452, 3.77036, 4.10553, 4.45572, 4.8352, 5.23722, 5.66246, 6.11599, 6.60404, 7.12086,
941 7.658, 8.23991, 8.85135, 9.50382, 10.2039, 10.9498, 11.7427, 12.5806, 13.4853, 14.4446,
942 15.4604, 16.5243, 17.7062, 18.9394, 20.219, 21.6307, 23.1328, 24.6832, 26.3629, 28.1076,
943 29.9211, 31.8286, 33.8171, 35.8791, 38.0244, 40.1354, 42.376, 44.5605, 46.8186, 48.9738,
944 51.1693, 53.2751, 55.4668, 57.5333, 59.6529, 61.5273, 63.4519, 65.3347, 67.1338, 68.9518,
945 70.5915, 72.1639, 73.7419, 75.2814, 76.7236, 78.3086, 79.6492, 80.8699, 82.228, 83.3878,
946 84.6403, 85.8205, 86.8573, 87.9557, 88.9784, 89.9703, 90.8957, 92.0648, 92.8484, 93.755,
947 94.603, 95.5404, 96.2543, 96.8307, 97.8023, 98.5217, 99.1155, 100.047, 100.693, 101.165,
948 102.153, 102.449, 103.126, 103.777, 104.336, 104.807, 105.412, 105.714, 106.345, 107.009,
949 107.679, 107.941, 108.403, 108.962, 109.354, 109.726, 110.228, 110.788, 111.304, 111.496,
950 111.885, 112.06, 112.414, 112.681, 113.347, 113.465, 113.829, 114.221, 114.53, 114.718,
951 115.217, 115.391, 115.661, 115.903, 116.177, 116.576, 116.951, 117.321, 117.423, 117.454,
952 117.903, 118.201, 118.416, 118.627, 118.788, 119.237, 119.307, 119.397, 119.601, 119.892,
953 119.853, 120.044, 120.214, 120.734, 120.762, 120.81, 121.148, 121.317, 121.209, 121.544,
954 121.786, 121.945, 122.121, 122.401, 122.272, 122.593, 122.968, 122.78, 122.868, 123.262,
955 123.316, 123.424, 123.822, 123.683, 123.577, 123.93, 124.017, 124.27, 124.515, 124.476,
956 124.516, 124.54, 124.82, 124.951, 124.829, 124.911, 125.281, 125.126, 125.511, 125.315,
957 125.354, 125.749, 125.629, 125.968, 126.13, 126.15, 126.372, 126.217, 126.39, 126.451,
958 126.566, 126.618, 126.639, 126.94, 126.874, 126.738, 126.929, 126.999, 127.267, 127.057,
959 127.188, 127.427, 127.424, 127.414, 127.407, 127.749, 127.938, 127.776, 127.687, 128.017,
960 128.04, 128.019, 128.096, 128.156, 128.281, 128.354, 128.496, 128.675, 128.553, 128.666,
961 128.536, 128.63, 128.866, 128.867, 128.908, 128.975, 129.05, 128.894, 129.29, 129.062,
962 129.156, 129.361, 129.105, 129.346, 129.276, 129.368, 129.612, 129.517, 129.494, 129.864,
963 129.677, 129.68, 129.696, 129.629, 129.826, 129.898, 129.984, 130.271, 130.179, 130.301,
964 130.193, 130.208, 130.212, 130.354, 130.244, 130.318, 130.549, 130.554, 130.477, 130.529,
965 130.765, 130.753, 130.709, 130.598, 130.809, 130.67, 130.792, 130.87, 130.857, 131.148,
966 131.145, 130.977, 131.056, 131.149, 131.09, 131.106, 131.156, 131.28, 131.184, 131.122
967 };
968 return wid1[i];
969 }

◆ widT1260()

double widT1260 ( int i,
double g1,
double g2 )
private

Definition at line 671 of file EvtD0Topippim2pi0.cc.

672 {
673 double wid1[300] = { 0.000765966, 0.00526534, 0.0168824, 0.0381541, 0.0709798, 0.116716, 0.176348, 0.250811, 0.340516, 0.44606,
674 0.567244, 0.704921, 0.859082, 1.02965, 1.21689, 1.42109, 1.64283, 1.88082, 2.13774, 2.41039,
675 2.70334, 3.0139, 3.34224, 3.69257, 4.05705, 4.44768, 4.85524, 5.28944, 5.73832, 6.21287,
676 6.71567, 7.2421, 7.79776, 8.37191, 8.98624, 9.63238, 10.3101, 11.0061, 11.7641, 12.5458,
677 13.3764, 14.2363, 15.1628, 16.1227, 17.1638, 18.2475, 19.3925, 20.603, 21.8923, 23.2399,
678 24.6837, 26.2041, 27.8182, 29.5295, 31.3134, 33.246, 35.249, 37.3791, 39.6217, 41.9618,
679 44.3717, 46.8669, 49.4843, 52.1752, 54.9009, 57.5853, 60.3722, 63.1059, 65.7868, 68.4831,
680 71.0904, 73.6104, 76.1854, 78.5089, 80.9245, 83.0936, 85.2363, 87.3891, 89.3678, 91.2757,
681 93.049, 94.7878, 96.4351, 98.0146, 99.4775, 100.97, 102.344, 103.571, 104.91, 106.134,
682 107.27, 108.404, 109.517, 110.378, 111.45, 112.438, 113.096, 114.086, 114.935, 115.693,
683 116.439, 117.249, 117.822, 118.369, 119.062, 119.631, 120.217, 120.995, 121.537, 121.963,
684 122.856, 123.129, 123.642, 124.165, 124.729, 124.969, 125.572, 125.878, 126.373, 126.837,
685 127.287, 127.575, 128.226, 128.539, 128.808, 129.144, 129.702, 129.988, 130.595, 130.759,
686 131.101, 131.251, 131.637, 131.951, 132.552, 132.804, 132.991, 133.455, 133.674, 133.95,
687 134.351, 134.674, 134.97, 135.174, 135.429, 135.94, 136.292, 136.595, 136.786, 137.014,
688 137.454, 137.782, 138.096, 138.396, 138.629, 139.002, 139.213, 139.419, 139.819, 140.165,
689 140.352, 140.579, 140.992, 141.404, 141.577, 141.786, 142.224, 142.476, 142.807, 143.216,
690 143.697, 144.059, 144.326, 144.735, 144.951, 145.342, 145.887, 145.88, 146.382, 146.848,
691 147.207, 147.553, 147.962, 148.267, 148.676, 149.175, 149.612, 149.996, 150.341, 150.7,
692 151.071, 151.478, 152.081, 152.566, 152.899, 153.305, 153.923, 154.102, 154.68, 155.234,
693 155.518, 156.153, 156.547, 157.044, 157.414, 158.057, 158.427, 158.869, 159.4, 159.95,
694 160.321, 160.917, 161.523, 161.92, 162.626, 162.708, 163.281, 163.842, 164.594, 164.975,
695 165.366, 166.104, 166.274, 166.837, 167.451, 168.012, 168.635, 169.078, 169.339, 170.036,
696 170.683, 171.155, 171.515, 172.134, 172.733, 173.207, 173.756, 174.176, 174.769, 175.036,
697 175.702, 176.163, 176.59, 177.36, 177.654, 178.347, 178.708, 179.455, 180.003, 180.334,
698 180.716, 181.446, 181.945, 182.401, 182.778, 183.317, 184.106, 184.271, 184.896, 185.414,
699 185.818, 186.491, 186.966, 187.533, 188.148, 188.61, 189.022, 189.321, 189.907, 190.607,
700 191.104, 191.341, 191.888, 192.648, 193.027, 193.363, 194.166, 194.692, 194.995, 195.407,
701 195.898, 196.352, 197.005, 197.378, 198.08, 198.479, 198.95, 199.224, 199.647, 200.37,
702 201.205, 201.251, 201.629, 202.244, 202.762, 203.404, 203.65, 204.172, 204.751, 204.817
703 };
704
705 double wid2[300] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
706 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
707 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
708 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
709 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
710 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
711 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
712 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
713 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
714 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
715 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
716 1.87136e-06, 1.50063e-05, 5.10425e-05, 0.000122121, 0.000240853, 0.000420318, 0.000675161, 0.0010173, 0.00146434, 0.00203321,
717 0.00273489, 0.0035927, 0.00462579, 0.00584255, 0.00727372, 0.00895462, 0.0108831, 0.013085, 0.0156197, 0.0184865,
718 0.0217078, 0.0253423, 0.0294103, 0.0339191, 0.0389837, 0.0446351, 0.0508312, 0.0577268, 0.0653189, 0.0737049,
719 0.0829819, 0.0930611, 0.104328, 0.116663, 0.130105, 0.144922, 0.16122, 0.179091, 0.198759, 0.220133,
720 0.243916, 0.269803, 0.298861, 0.330061, 0.365741, 0.40437, 0.447191, 0.49501, 0.548576, 0.606445,
721 0.674414, 0.748353, 0.831686, 0.929938, 1.03771, 1.16187, 1.30387, 1.47341, 1.65629, 1.88318,
722 2.14353, 2.44169, 2.79831, 3.2009, 3.65522, 4.16317, 4.69597, 5.2585, 5.85965, 6.44984,
723 7.04202, 7.60113, 8.14571, 8.73195, 9.24537, 9.75717, 10.2093, 10.6731, 11.1487, 11.5819,
724 12.0158, 12.4253, 12.8113, 13.2073, 13.5995, 13.9317, 14.312, 14.6595, 14.9511, 15.2668,
725 15.6092, 15.9349, 16.1873, 16.5049, 16.819, 17.0743, 17.3621, 17.6094, 17.8418, 18.0681,
726 18.3141, 18.5914, 18.8187, 19.0562, 19.2282, 19.4918, 19.7326, 19.9112, 20.134, 20.3386,
727 20.511, 20.6865, 20.8958, 21.0518, 21.2967, 21.44, 21.6361, 21.8012, 21.9523, 22.1736,
728 22.2615, 22.4207, 22.6056, 22.7198, 22.9299, 23.0605, 23.2959, 23.3808, 23.4961, 23.6793,
729 23.7843, 23.9697, 24.0689, 24.1919, 24.405, 24.3898, 24.6018, 24.7294, 24.789, 24.9978,
730 25.0626, 25.1728, 25.2809, 25.3579, 25.5444, 25.5995, 25.7644, 25.8397, 25.9229, 26.095,
731 26.1495, 26.2899, 26.3871, 26.54, 26.6603, 26.7008, 26.7836, 26.907, 26.9653, 26.9969,
732 27.1226, 27.226, 27.3543, 27.4686, 27.4887, 27.6163, 27.6986, 27.7506, 27.7884, 27.8662,
733 27.9886, 28.0573, 28.1238, 28.2612, 28.3209, 28.3457, 28.4392, 28.5086, 28.6399, 28.7603,
734 28.788, 28.8502, 28.9038, 28.9667, 28.975, 29.0032, 29.2681, 29.2392, 29.2572, 29.3364
735 };
736
737 return wid1[i] * g1 + wid2[i] * g2;
738 }

◆ widT1300()

double widT1300 ( int i)
private

Definition at line 781 of file EvtD0Topippim2pi0.cc.

782 {
783 double wid1[300] = { 0.032058, 0.181916, 0.451826, 0.828744, 1.30099, 1.85751, 2.48953, 3.18916, 3.9474, 4.75752,
784 5.61567, 6.5142, 7.4487, 8.41743, 9.41268, 10.4375, 11.4806, 12.5426, 13.6259, 14.7324,
785 15.8316, 16.9667, 18.1034, 19.2511, 20.4, 21.5745, 22.7364, 23.9313, 25.1231, 26.331,
786 27.5222, 28.7648, 29.9995, 31.2184, 32.4692, 33.7247, 34.9821, 36.2849, 37.5859, 38.9141,
787 40.208, 41.5699, 42.8807, 44.2708, 45.6339, 47.0794, 48.5124, 49.9607, 51.4382, 52.9726,
788 54.5431, 56.0448, 57.755, 59.4508, 61.0778, 62.8293, 64.7519, 66.559, 68.5168, 70.4768,
789 72.5278, 74.6728, 76.8742, 79.0858, 81.4848, 83.8468, 86.3982, 88.9172, 91.645, 94.4245,
790 97.2676, 100.073, 103.181, 106.146, 109.37, 112.451, 115.574, 118.859, 122.118, 125.663,
791 128.847, 132.328, 135.778, 139.325, 142.708, 146.613, 150.058, 153.466, 157.281, 160.692,
792 164.484, 168.1, 171.52, 175.195, 178.72, 182.098, 185.828, 189.775, 192.768, 196.145,
793 199.837, 203.808, 206.594, 209.711, 213.22, 216.724, 219.613, 223.289, 226.325, 228.679,
794 232.516, 234.97, 237.984, 241.407, 244.237, 247.025, 250.195, 252.545, 255.669, 258.907,
795 262.137, 264.45, 267.707, 270.006, 273.093, 275.135, 278.181, 281.148, 284.513, 286.352,
796 288.876, 291.133, 293.855, 296.082, 298.943, 301.294, 303.401, 305.955, 308.498, 310.318,
797 312.861, 314.59, 317.381, 319.36, 321.528, 323.834, 326.465, 328.516, 330.043, 331.913,
798 334.528, 336.647, 338.083, 340.873, 342.284, 344.527, 346.21, 347.898, 349.829, 351.885,
799 353.297, 355.228, 357.187, 359.115, 360.499, 362.05, 363.388, 365.451, 367.202, 369.099,
800 371.197, 372.755, 374.302, 375.418, 377.114, 378.595, 380.72, 381.193, 383.21, 385.243,
801 386.41, 387.791, 388.97, 390.617, 391.731, 393.692, 394.627, 396.209, 397.339, 398.582,
802 399.836, 401.752, 402.704, 404.86, 405.287, 406.561, 408.001, 408.361, 410.374, 411.672,
803 412.688, 414.259, 415.406, 416.22, 417.659, 418.652, 419.82, 420.586, 421.835, 423.323,
804 423.714, 425.449, 426.524, 427.196, 428.974, 429.086, 430.614, 431.642, 432.744, 434.121,
805 434.083, 436.251, 436.024, 437.267, 438.584, 439.499, 440.402, 441.609, 441.785, 443.319,
806 444.053, 445.303, 445.359, 446.906, 447.629, 448.931, 449.379, 450.143, 451.303, 452.034,
807 453.026, 453.73, 454.424, 455.852, 456.574, 458.04, 457.593, 459.097, 459.977, 461.041,
808 461.527, 462.486, 463.506, 464.275, 465.849, 465.581, 467.364, 467.648, 468.615, 469.74,
809 470.1, 471.406, 472.099, 472.723, 474.476, 474.81, 475.291, 476.741, 477.751, 478.678,
810 479.833, 479.724, 480.47, 481.717, 482.226, 483.068, 484.311, 485.806, 485.987, 487.431,
811 487.108, 488.798, 488.758, 489.889, 491.406, 491.455, 492.192, 493.215, 493.758, 494.763,
812 496.16, 496.003, 496.981, 497.871, 498.674, 499.319, 500.16, 500.455, 501.069, 502.515
813 };
814
815 return wid1[i];
816 }

◆ widT1640()

double widT1640 ( int i)
private

Definition at line 859 of file EvtD0Topippim2pi0.cc.

860 {
861 double wid1[300] = { 0.000266799, 0.0018334, 0.00594952, 0.0136464, 0.0257838, 0.0430639, 0.0660891, 0.0954588, 0.131591, 0.175007,
862 0.225896, 0.284916, 0.352348, 0.42844, 0.513613, 0.608422, 0.713236, 0.827844, 0.953841, 1.09028,
863 1.23896, 1.3999, 1.57261, 1.75997, 1.95828, 2.17416, 2.40274, 2.65003, 2.91017, 3.18896,
864 3.4876, 3.80491, 4.14473, 4.50064, 4.88498, 5.29342, 5.72815, 6.18169, 6.67661, 7.19577,
865 7.75069, 8.33372, 8.96242, 9.62548, 10.3429, 11.1008, 11.9068, 12.7649, 13.684, 14.6561,
866 15.7, 16.8052, 17.9946, 19.2573, 20.5822, 22.02, 23.5335, 25.1379, 26.8401, 28.6285,
867 30.4874, 32.4225, 34.4622, 36.5651, 38.7177, 40.8728, 43.1028, 45.3167, 47.5153, 49.7404,
868 51.913, 54.0368, 56.2129, 58.2269, 60.3061, 62.2158, 64.109, 66.007, 67.7917, 69.5455,
869 71.1901, 72.8026, 74.3817, 75.8687, 77.2941, 78.7569, 80.1295, 81.3587, 82.6853, 83.9199,
870 85.0982, 86.2791, 87.4225, 88.3923, 89.5057, 90.5393, 91.3378, 92.4117, 93.3536, 94.2291,
871 95.0644, 95.9397, 96.6709, 97.3455, 98.1876, 98.8578, 99.5411, 100.383, 101.071, 101.612,
872 102.565, 102.933, 103.563, 104.141, 104.805, 105.172, 105.82, 106.22, 106.798, 107.369,
873 107.889, 108.279, 108.856, 109.296, 109.633, 110.055, 110.639, 110.974, 111.553, 111.775,
874 112.189, 112.364, 112.693, 113.063, 113.737, 113.872, 114.177, 114.604, 114.814, 115.086,
875 115.475, 115.797, 116.066, 116.276, 116.453, 116.959, 117.212, 117.536, 117.714, 117.784,
876 118.206, 118.435, 118.77, 118.937, 119.078, 119.443, 119.54, 119.649, 119.903, 120.219,
877 120.308, 120.402, 120.661, 121.042, 121.051, 121.058, 121.445, 121.57, 121.593, 121.896,
878 122.146, 122.339, 122.519, 122.694, 122.665, 122.943, 123.242, 123.137, 123.276, 123.516,
879 123.635, 123.746, 124.053, 123.942, 124.071, 124.211, 124.4, 124.546, 124.776, 124.811,
880 124.872, 124.814, 125.187, 125.28, 125.261, 125.33, 125.61, 125.509, 125.683, 125.777,
881 125.698, 126.017, 126.035, 126.269, 126.338, 126.377, 126.655, 126.603, 126.602, 126.721,
882 126.917, 126.91, 127.064, 127.141, 127.193, 127.105, 127.27, 127.377, 127.566, 127.461,
883 127.571, 127.747, 127.719, 127.763, 127.834, 128.103, 128.173, 128.217, 128.021, 128.291,
884 128.348, 128.376, 128.528, 128.489, 128.74, 128.767, 128.858, 128.845, 128.925, 128.965,
885 128.947, 129.009, 129.118, 129.165, 129.219, 129.277, 129.356, 129.26, 129.595, 129.474,
886 129.422, 129.679, 129.526, 129.699, 129.702, 129.64, 129.879, 129.773, 129.798, 130.091,
887 130.023, 130.004, 130.118, 129.995, 130.182, 130.233, 130.262, 130.584, 130.462, 130.547,
888 130.551, 130.513, 130.501, 130.627, 130.632, 130.679, 130.908, 130.924, 130.894, 130.986,
889 131.024, 131.075, 130.995, 130.902, 131.228, 131.115, 131.17, 131.257, 131.16, 131.366,
890 131.439, 131.397, 131.386, 131.472, 131.48, 131.564, 131.505, 131.614, 131.573, 131.455
891 };
892 return wid1[i];
893 }

◆ z()

double z ( double w) const

CLN form factor z.

Parameters
wvelocity transfer variable.
Returns
calculated form factor value.

Definition at line 450 of file EvtBSemiTauonicHelicityAmplitudeCalculator.cc.

451 {
452 return (sqrt(w + 1) - sqrt(2)) / (sqrt(w + 1) + sqrt(2));
453 }

◆ ~EvtB0toKsKK()

~EvtB0toKsKK ( )
virtual

Definition at line 29 of file EvtB0toKsKK.cc.

29{}

◆ ~EvtBCL()

~EvtBCL ( )
virtual

virtual destructor

Definition at line 31 of file EvtBCL.cc.

32 {
33 delete bclmodel;
34 bclmodel = nullptr;
35 delete calcamp;
36 calcamp = nullptr;
37 }

◆ ~EvtBSemiTauonic()

~EvtBSemiTauonic ( )
virtual

The destructor.

Definition at line 34 of file EvtBSemiTauonic.cc.

35 {
36 if (m_CalcHelAmp)delete m_CalcHelAmp;
37 if (m_CalcAmp)delete m_CalcAmp;
38 }

◆ ~EvtBSemiTauonic2HDMType2()

The destructor.

Definition at line 34 of file EvtBSemiTauonic2HDMType2.cc.

35 {
36 if (m_CalcHelAmp)delete m_CalcHelAmp;
37 if (m_CalcAmp)delete m_CalcAmp;
38 }

◆ ~EvtBtoXsnunu_FERMI()

~EvtBtoXsnunu_FERMI ( )
virtual

Destructor.

Definition at line 34 of file EvtBtoXsnunu_FERMI.cc.

34{}

◆ ~EvtD0ToKpipi0pi0()

~EvtD0ToKpipi0pi0 ( )
virtual

Definition at line 30 of file EvtD0ToKpipi0pi0.cc.

30{}

◆ ~EvtD0ToKpipipi()

~EvtD0ToKpipipi ( )
virtual

Definition at line 29 of file EvtD0ToKpipipi.cc.

29{}

◆ ~EvtD0TopipiEta()

~EvtD0TopipiEta ( )
virtual

Definition at line 32 of file EvtD0TopipiEta.cc.

32{}

◆ ~EvtD0Topippim2pi0()

~EvtD0Topippim2pi0 ( )
virtual

Definition at line 36 of file EvtD0Topippim2pi0.cc.

36{}

◆ ~EvtDsToKKpi()

~EvtDsToKKpi ( )
virtual

Definition at line 41 of file EvtDsToKKpi.cc.

41{}

◆ ~EvtDsToKpipi()

~EvtDsToKpipi ( )
virtual

Definition at line 39 of file EvtDsToKpipi.cc.

39{}

◆ ~EvtDToKSKpi0()

~EvtDToKSKpi0 ( )
virtual

Definition at line 37 of file EvtDToKSKpi0.cc.

37{}

◆ ~EvtDToKSpipi0pi0()

~EvtDToKSpipi0pi0 ( )
virtual

Definition at line 35 of file EvtDToKSpipi0pi0.cc.

35{}

◆ ~EvtDToKSpipipi()

~EvtDToKSpipipi ( )
virtual

Definition at line 30 of file EvtDToKSpipipi.cc.

30{}

◆ ~EvtDTopipi0Eta()

~EvtDTopipi0Eta ( )
virtual

Definition at line 33 of file EvtDTopipi0Eta.cc.

33{}

◆ ~EvtEtaFullDalitz()

~EvtEtaFullDalitz ( )
virtual

Default Destructor.

Definition at line 24 of file EvtEtaFullDalitz.cc.

24{}

◆ ~EvtEtaPi0Dalitz()

~EvtEtaPi0Dalitz ( )
virtual

Default destructor.

Definition at line 39 of file EvtEtaPi0Dalitz.cc.

39{}

◆ ~EvtEtaPrimeDalitz()

~EvtEtaPrimeDalitz ( )
virtual

Default destructor.

Definition at line 41 of file EvtEtaPrimeDalitz.cc.

41{}

◆ ~EvtFlatDaughter()

~EvtFlatDaughter ( )
virtual

Destructor.

Definition at line 34 of file EvtFlatDaughter.cc.

34{}

◆ ~EvtHNLBCL()

~EvtHNLBCL ( )
virtual

virtual destructor

Definition at line 31 of file EvtHNLBCL.cc.

32 {
33 delete bclmodel;
34 bclmodel = nullptr;
35 delete calcamp;
36 calcamp = nullptr;
37 }

◆ ~EvtKnunu()

~EvtKnunu ( )
virtual

Destructor.

Definition at line 38 of file EvtKnunu.cc.

38{ }

◆ ~EvtKstarnunu_REV()

~EvtKstarnunu_REV ( )
virtual

Destructor.

Definition at line 37 of file EvtKstarnunu_REV.cc.

37{ }

◆ ~EvtPhspCP()

~EvtPhspCP ( )
virtual

Definition at line 28 of file EvtPhspCP.cc.

28{}

Variable Documentation

◆ me

const double me = Const::electron.getMass()
static

electron mass

Definition at line 177 of file beamHelpers.h.