Init function.
61{
62
63
64 const unsigned short int narg(2);
65 if (getNArg() != narg) {
66 EvtGenReport(EVTGEN_ERROR, "EvtGen") << "EvtPHSPBBMix generator expected "
67 << " " << narg
68 << "argument(s) (deltam, C=-1, +1 or 0 (incoherent)) but found:"
69 << getNArg() << endl;
70 EvtGenReport(EVTGEN_ERROR, "EvtGen") << "Will terminate execution!" << endl;
71 ::abort();
72 }
73
74
75
76
77
78
79
80
81
82 if (getNDaug() < 2 || getNDaug() > 5) {
83 EvtGenReport(EVTGEN_ERROR, "EvtGen") << "PHSP_BB_MIX n daughters not ok :"
84 << getNDaug() << endl;
85 EvtGenReport(EVTGEN_ERROR, "EvtGen") << "Will terminate execution!" << endl;
86 ::abort();
87 }
88
89
90
91
92
94
95 if (getNDaug() == 4 && (EvtPDL::chargeConj(getDaug(0)) == getDaug(1)))
97
98
99 if (!
_BBpipi && getNDaug() > 3) {
100 if (!(EvtPDL::chargeConj(getDaug(0)) == getDaug(getNDaug() - 2) && EvtPDL::chargeConj(getDaug(1)) == getDaug(getNDaug() - 1))) {
101 EvtGenReport(EVTGEN_ERROR, "EvtGen") << "EvtPHSPBBMix generator expected daughters "
102 << "to be charge conjugate." << endl
103 << " Found " << EvtPDL::name(getDaug(0)).c_str()
104 << "," << EvtPDL::name(getDaug(1)).c_str()
105 << "," << EvtPDL::name(getDaug(2)).c_str()
106 << " and "
107 << EvtPDL::name(getDaug(3)).c_str() << endl;
108 EvtGenReport(EVTGEN_ERROR, "EvtGen") << "Will terminate execution!" << endl;
109 ::abort();
110 }
111 } else {
112
113 if (!(EvtPDL::chargeConj(getDaug(0)) == getDaug(1))) {
114 EvtGenReport(EVTGEN_ERROR, "EvtGen") << "EvtPHSPBBMix generator expected daughters "
115 << "to be charge conjugate." << endl
116 << " Found " << EvtPDL::name(getDaug(0)).c_str()
117 << " and "
118 << EvtPDL::name(getDaug(1)).c_str() << endl;
119 EvtGenReport(EVTGEN_ERROR, "EvtGen") << "Will terminate execution!" << endl;
120 ::abort();
121 }
122
123 }
124
125
126
127
128
129
130
131
132
133
134
135
136
137 if (EvtPDL::getctau(getDaug(0)) != EvtPDL::getctau(getDaug(1))) {
138 EvtGenReport(EVTGEN_ERROR, "EvtGen") << "EvtPHSPBBMix generator expected daughters "
139 << "to have the same lifetime." << endl
140 << " Found ctau = "
141 << EvtPDL::getctau(getDaug(0)) << " mm and "
142 << EvtPDL::getctau(getDaug(1)) << " mm" << endl;
143 EvtGenReport(EVTGEN_ERROR, "EvtGen") << "Will terminate execution!" << endl;
144 ::abort();
145 }
146
147
148
149
150
151 _freq = getArg(0) / EvtConst::c;
152
154
155
156
157
158
159
160
161 double tau = 1e12 * EvtPDL::getctau(getDaug(0)) / EvtConst::c;
162 double dm = 1e-12 * getArg(0);
163 double x = dm * tau;
164
165
166
167
168 std::ostringstream sss;
169 sss << " " << EvtPDL::name(getParentId()).c_str() << " --> "
170 << EvtPDL::name(getDaug(0)).c_str() << " + "
171 << EvtPDL::name(getDaug(1)).c_str();
172 switch (getNDaug()) {
173 case 3:
174 case 5:
175 sss << " + " << EvtPDL::name(getDaug(2)).c_str();
176 break;
177 case 4:
179 sss << " + " << EvtPDL::name(getDaug(2)).c_str() << " + " << EvtPDL::name(getDaug(3)).c_str();
180 break;
181 default: ;
182 }
183 EvtGenReport(EVTGEN_INFO, "EvtGen") << "PHSP_BB_MIX will generate mixing :"
184 << endl << endl
185 << sss.str() << endl << endl
186 << "using parameters:" << endl << endl
187 << " delta(m) = " << dm << " hbar/ps" << endl
188 <<
" C (B0-B0b) = " <<
_C << endl
189 <<
" _freq = " <<
_freq <<
" hbar/mm" << endl
190 << " dgog = " << 0 << endl
191 << " dGamma = " << 0 << " hbar/mm" << endl
192 << " q/p = " << 1 << endl
193 << " tau = " << tau << " ps" << endl
194 << " x = " << x << endl
195 << endl;
196
197
198
199
200
201}