evtgen is hosted by Hepforge, IPPP Durham
EvtGen  2.0.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
EvtSVVNONCPEIGEN.hh
Go to the documentation of this file.
1 
2 /***********************************************************************
3 * Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
4 * *
5 * This file is part of EvtGen. *
6 * *
7 * EvtGen is free software: you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation, either version 3 of the License, or *
10 * (at your option) any later version. *
11 * *
12 * EvtGen is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU General Public License *
18 * along with EvtGen. If not, see <https://www.gnu.org/licenses/>. *
19 ***********************************************************************/
20 
21 #ifndef EVTSVVNONCPEIGEN_HH
22 #define EVTSVVNONCPEIGEN_HH
23 
25 
26 class EvtParticle;
27 
28 // Description: Routine to decay scalar -> vector vector
29 // and has CP violation.
30 //
31 // This model does all the ckm-suppressed decays and mixing for you. It randomly 'overwrites'
32 // any reco or tagging state as set in the Y(4S) decay model (VSS_(B)MIX) with its own generated states.
33 //
34 // As such, the corresponding dec file requires only one decay-mode description, for example:
35 // Decay MyB0
36 // 1.000 rho+ MyD*- SVV_NONCPEIGEN dm beta gamma 0.322 0.31 0.941 0 0.107 1.42 0.02 0 0.02 0 0.02 0 ;
37 // EndDecay
38 // and furthermore Y(4S) only needs to decay to B0's (or B0bar's).
39 // The decay above should be a CKM-favored mode (eg. B0->D*-rho+ or B0bar->D*+rho-).
40 // All ckm-suppressed decays and the mixing are derived from this line in the ::Decay function.
41 //
42 // There are 15 or 27 arguments. The first three are dm, phase1
43 // and phase2. dm is the B0-B0bar mass difference. Phases 1
44 // and 2 are the CKM weak phases relevant for the particular mode,
45 // eg for B-->DstRho phase1 is beta and phase2 is gamma.
46 //
47 // The next arguments are the 2 amplitudes (= 12 input parameters)
48 // in the order: A_f, Abar_f. In the example above, the 'A_f' amplitude now
49 // stands for the ckm-favored decay 'B0->D*-rho+', and 'Abar_f' stands for 'B0bar->D*-rho+'
50 //
51 // Each amplitude has its 3 helicity states in the order +, 0, -, which are each
52 // specified by a magnitude and a strong phase.
53 //
54 // The last 2 arguments A_fbar and Abar_fbar (=12 input parameters) are not necessary,
55 // but can included if one wants to set them differently from A_f, Abar_f.
56 //
57 // Mind you that Hbar_+- = H_-+ (ignoring the weak phase, which flips sign).
58 // It is custumary to select one set of helicity states (eg H_+-) and to adopt these for
59 // the CP-conjugate decays as well (ie. depict Hbar_-+ with H_+-), which is the interpretation
60 // we use for the input-parameters above.
61 // However, the angular decay in EvtGen is just a formula in which helicity amplitudes are 'plugged' in,
62 // making no difference between B0 or B0bar decays. In the model below we (thus) account for the +-
63 // flipping between B0 and B0bar.
64 
65 class EvtSVVNONCPEIGEN : public EvtDecayAmp {
66  public:
67  std::string getName() override;
68  EvtDecayBase* clone() override;
69 
70  void initProbMax() override;
71  void init() override;
72 
73  void decay( EvtParticle* p ) override;
74 
75  std::string getParamName( int i ) override;
76  std::string getParamDefault( int i ) override;
77 
78  private:
80 };
81 
82 #endif
std::string getName() override
std::string getParamDefault(int i) override
void initProbMax() override
void decay(EvtParticle *p) override
std::string getParamName(int i) override
EvtDecayBase * clone() override
EvtComplex _A_f[12]
void init() override