67 if (e0 <= MassProton || e1 <= MassProton) {
70 double beta0 = 1. - MassProton * MassProton / (e0 * e0);
71 double beta1 = 1. - MassProton * MassProton / (e1 * e1);
72 beta0 = beta0 > 0 ? sqrt(beta0) : 0.;
73 beta1 = beta1 > 0 ? sqrt(beta1) : 0.;
74 double ss = 2. * (MassProton * MassProton + e0 * e1 * (1. + beta0 * beta1 * cos(
getCrossingAngle())));
75 return ss > 0. ? sqrt(ss) : 0.;
111 auto timeStr = [](
long t) -> std::string {
113 std::time_t temp = t / 1000;
114 std::tm*
tt = std::gmtime(&temp);
115 std::stringstream ss;
116 ss << std::put_time(
tt,
"%d/%m/%y %H:%M:%S") <<
" UTC";
122 printf(
"%s: Fill : %d\n", timeStr(mFillNumber.first).c_str(), mFillNumber.second);
123 printf(
"%s: Injection scheme : %s\n", timeStr(mInjectionScheme.first).c_str(), mInjectionScheme.second.c_str());
124 printf(
"%s: Beam energy per Z : %d\n", timeStr(mBeamEnergyPerZ.first).c_str(), mBeamEnergyPerZ.second);
125 printf(
"%s: A beam1 (clock) : %d\n", timeStr(mAtomicNumberB1.first).c_str(), mAtomicNumberB1.second);
126 printf(
"%s: A beam2 (a-clock) : %d\n", timeStr(mAtomicNumberB2.first).c_str(), mAtomicNumberB2.second);
127 printf(
"%s: Bunch filling\n", timeStr(mBunchFilling.first).c_str());
128 if (mBunchFilling.first > 0) {
129 mBunchFilling.second.print();