The function for an initialization.
43{
44 if (getNArg() > 4)
45 checkNArg(14, 12, 8);
46
47 if (getNArg() < 1) {
48 EvtGenReport(EVTGEN_ERROR, "EvtGen")
49 << "EvtVSSBMix generator expected "
50 << " at least 1 argument (deltam) but found:" << getNArg() << endl;
51 EvtGenReport(EVTGEN_ERROR, "EvtGen")
52 << "Will terminate execution!" << endl;
53 ::abort();
54 }
55
56
57 checkNDaug(2, 4);
58
59 if (getNDaug() == 4) {
60 if (getDaug(0) != getDaug(2) || getDaug(1) != getDaug(3)) {
61 EvtGenReport(EVTGEN_ERROR, "EvtGen")
62 << "EvtVSSBMixNP generator allows "
63 << " 4 daughters only if 1=3 and 2=4"
64 << " (but 3 and 4 are aliased " << endl;
65 EvtGenReport(EVTGEN_ERROR, "EvtGen")
66 << "Will terminate execution!" << endl;
67 ::abort();
68 }
69 }
70
71
72
73 checkSpinParent(EvtSpinType::VECTOR);
74
75 checkSpinDaughter(0, EvtSpinType::SCALAR);
76 checkSpinDaughter(1, EvtSpinType::SCALAR);
77
78
79 if (!(EvtPDL::chargeConj(getDaug(0)) == getDaug(1))) {
80 EvtGenReport(EVTGEN_ERROR, "EvtGen")
81 << "EvtVSSBMixNP generator expected daughters "
82 << "to be charge conjugate." << endl
83 << " Found " << EvtPDL::name(getDaug(0)).c_str() << " and "
84 << EvtPDL::name(getDaug(1)).c_str() << endl;
85 EvtGenReport(EVTGEN_ERROR, "EvtGen")
86 << "Will terminate execution!" << endl;
87 ::abort();
88 }
89
90 if (EvtPDL::getctau(getDaug(0)) != EvtPDL::getctau(getDaug(1))) {
91 EvtGenReport(EVTGEN_ERROR, "EvtGen")
92 << "EvtVSSBMixNP generator expected daughters "
93 << "to have the same lifetime." << endl
94 << " Found ctau = " << EvtPDL::getctau(getDaug(0))
95 << " mm and " << EvtPDL::getctau(getDaug(1)) << " mm" << endl;
96 EvtGenReport(EVTGEN_ERROR, "EvtGen")
97 << "Will terminate execution!" << endl;
98 ::abort();
99 }
100
101
102
103
104 _freq = getArg(0) / EvtConst::c;
105
106
107 double gamma = 1 / EvtPDL::getctau(getDaug(0));
109 if (getNArg() > 1)
_dGamma = getArg(1) * gamma;
110
111
113 if (getNArg() > 2)
_lambda = getArg(2) * (1 / EvtConst::c);
115
116 double dm = 1e-12 * getArg(0);
117 if (verbose()) {
118 EvtGenReport(EVTGEN_INFO, "EvtGen")
119 << "VSS_NP will generate mixing with possible decoherence:"
120 << endl
121 << endl
122 << " " << EvtPDL::name(getParentId()).c_str() << " --> "
123 << EvtPDL::name(getDaug(0)).c_str() << " + "
124 << EvtPDL::name(getDaug(1)).c_str() << endl
125 << endl
126 << "using parameters:" << endl
127 << endl
128 << " delta(m) = " << dm << " hbar/ps" << endl
129 <<
" dGamma = " <<
_dGamma <<
" hbar/mm" << endl
130 <<
" lambda = " <<
_lambda << endl
131 << endl;
132 }
133}