diff --git a/.gitignore b/.gitignore index 6e4b002..3f5f588 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,7 @@ cpp/cmake-build-debug/ python/.ipynb_checkpoints/ *.log + +*~ + +build/ \ No newline at end of file diff --git a/cpp/abconv/ConfigProvider.cc b/cpp/abconv/ConfigProvider.cc index fea3fc9..65f153e 100644 --- a/cpp/abconv/ConfigProvider.cc +++ b/cpp/abconv/ConfigProvider.cc @@ -23,18 +23,24 @@ ab::convert::ConfigProvider::from_hepmc_file(const std::shared_ptrmomentum().e() > beam_particles[1]->momentum().e()) { - hadron = beam_particles[0]; - lepton = beam_particles[1]; + + HepMC3::ConstGenParticlePtr ion; + HepMC3::ConstGenParticlePtr electron; + + if(beam_particles[0]->pid()==11) { + electron = beam_particles[0]; + ion = beam_particles[1]; + } + else if(beam_particles[1]->pid()==11) { + electron = beam_particles[1]; + ion = beam_particles[0]; } else { - hadron = beam_particles[1]; - lepton = beam_particles[0]; + std::cerr << "No electron found in the two beam particles" << std::endl; + throw std::invalid_argument("No electron found"); } - return ab::EicConfigurator::config(hadron->momentum().e(), lepton->momentum().e(), beam_config); + return ab::EicConfigurator::config(ion, electron, beam_config); } ab::AfterburnerConfig ab::convert::ConfigProvider::from_preset_name(const string &name) { diff --git a/cpp/abconv/Converter.cc b/cpp/abconv/Converter.cc index 2e38ed9..3f9799f 100644 --- a/cpp/abconv/Converter.cc +++ b/cpp/abconv/Converter.cc @@ -35,7 +35,7 @@ void ab::abconv::Converter::convert() { } if (evt.event_number() < _first_event_number) continue; - if (_last_event_number && evt.event_number() > _last_event_number) continue; + if (_last_event_number && evt.event_number() > _last_event_number) break; if(0 == events_processed) { // The first event, determine beams configuration @@ -199,27 +199,36 @@ HepMC3::ConstGenParticles ab::abconv::Converter::get_beam_particles(const HepMC3 } void ab::abconv::Converter::ab_config_to_run_info(const std::shared_ptr& run_info, ab::AfterburnerConfig cfg) { - using namespace HepMC3; - run_info->add_attribute("ab_afterburner_is_used", std::make_shared(true)); - run_info->add_attribute("ab_crossing_angle", std::make_shared(cfg.crossing_angle_hor)); - run_info->add_attribute("ab_use_beam_bunch_sim", std::make_shared(cfg.use_beam_bunch_sim)); - - run_info->add_attribute("ab_hadron_divergence_hor", std::make_shared(cfg.hadron_beam.divergence_hor)); - run_info->add_attribute("ab_hadron_divergence_ver", std::make_shared(cfg.hadron_beam.divergence_ver)); - run_info->add_attribute("ab_hadron_beta_crab_hor", std::make_shared(cfg.hadron_beam.beta_crab_hor)); - run_info->add_attribute("ab_hadron_beta_star_hor", std::make_shared(cfg.hadron_beam.beta_star_hor)); - run_info->add_attribute("ab_hadron_beta_star_ver", std::make_shared(cfg.hadron_beam.beta_star_ver)); - run_info->add_attribute("ab_hadron_rms_emittance_hor", std::make_shared(cfg.hadron_beam.rms_emittance_hor)); - run_info->add_attribute("ab_hadron_rms_emittance_ver", std::make_shared(cfg.hadron_beam.rms_emittance_ver)); - run_info->add_attribute("ab_hadron_rms_bunch_length", std::make_shared(cfg.hadron_beam.rms_bunch_length)); - - run_info->add_attribute("ab_lepton_divergence_hor", std::make_shared(cfg.lepton_beam.divergence_hor)); - run_info->add_attribute("ab_lepton_divergence_ver", std::make_shared(cfg.lepton_beam.divergence_ver)); - run_info->add_attribute("ab_lepton_beta_crab_hor", std::make_shared(cfg.lepton_beam.beta_crab_hor)); - run_info->add_attribute("ab_lepton_beta_star_hor", std::make_shared(cfg.lepton_beam.beta_star_hor)); - run_info->add_attribute("ab_lepton_beta_star_ver", std::make_shared(cfg.lepton_beam.beta_star_ver)); - run_info->add_attribute("ab_lepton_rms_emittance_hor", std::make_shared(cfg.lepton_beam.rms_emittance_hor)); - run_info->add_attribute("ab_lepton_rms_emittance_ver", std::make_shared(cfg.lepton_beam.rms_emittance_ver)); - run_info->add_attribute("ab_lepton_rms_bunch_length", std::make_shared(cfg.lepton_beam.rms_bunch_length)); + using namespace HepMC3; + + run_info->add_attribute("ab_afterburner_is_used", std::make_shared(true)); + run_info->add_attribute("afterburner_config_name", std::make_shared(cfg.name)); + + run_info->add_attribute("ion_beam_energy", std::make_shared(cfg.ion_beam.energy)); + run_info->add_attribute("electron_beam_energy", std::make_shared(cfg.electron_beam.energy)); + + run_info->add_attribute("ion_beam_pdg", std::make_shared(cfg.ion_beam.pdg)); + run_info->add_attribute("electron_beam_pdg", std::make_shared(cfg.electron_beam.pdg)); + + run_info->add_attribute("ab_crossing_angle", std::make_shared(cfg.crossing_angle_hor)); + run_info->add_attribute("ab_use_beam_bunch_sim", std::make_shared(cfg.use_beam_bunch_sim)); + + run_info->add_attribute("ab_ion_divergence_hor", std::make_shared(cfg.ion_beam.divergence_hor)); + run_info->add_attribute("ab_ion_divergence_ver", std::make_shared(cfg.ion_beam.divergence_ver)); + run_info->add_attribute("ab_ion_beta_crab_hor", std::make_shared(cfg.ion_beam.beta_crab_hor)); + run_info->add_attribute("ab_ion_beta_star_hor", std::make_shared(cfg.ion_beam.beta_star_hor)); + run_info->add_attribute("ab_ion_beta_star_ver", std::make_shared(cfg.ion_beam.beta_star_ver)); + run_info->add_attribute("ab_ion_rms_emittance_hor", std::make_shared(cfg.ion_beam.rms_emittance_hor)); + run_info->add_attribute("ab_ion_rms_emittance_ver", std::make_shared(cfg.ion_beam.rms_emittance_ver)); + run_info->add_attribute("ab_ion_rms_bunch_length", std::make_shared(cfg.ion_beam.rms_bunch_length)); + + run_info->add_attribute("ab_electron_divergence_hor", std::make_shared(cfg.electron_beam.divergence_hor)); + run_info->add_attribute("ab_electron_divergence_ver", std::make_shared(cfg.electron_beam.divergence_ver)); + run_info->add_attribute("ab_electron_beta_crab_hor", std::make_shared(cfg.electron_beam.beta_crab_hor)); + run_info->add_attribute("ab_electron_beta_star_hor", std::make_shared(cfg.electron_beam.beta_star_hor)); + run_info->add_attribute("ab_electron_beta_star_ver", std::make_shared(cfg.electron_beam.beta_star_ver)); + run_info->add_attribute("ab_electron_rms_emittance_hor", std::make_shared(cfg.electron_beam.rms_emittance_hor)); + run_info->add_attribute("ab_electron_rms_emittance_ver", std::make_shared(cfg.electron_beam.rms_emittance_ver)); + run_info->add_attribute("ab_electron_rms_bunch_length", std::make_shared(cfg.electron_beam.rms_bunch_length)); } diff --git a/cpp/afterburner/Afterburner.cc b/cpp/afterburner/Afterburner.cc index 51e4a69..5d511ee 100644 --- a/cpp/afterburner/Afterburner.cc +++ b/cpp/afterburner/Afterburner.cc @@ -56,24 +56,24 @@ ab::BunchInteractionResult ab::Afterburner::generate_vertx_with_bunch_interactio using namespace std; // Set particle positions - double hadron_z = _smear.gauss(_cfg.hadron_beam.rms_bunch_length); - double lepton_z = _smear.gauss(_cfg.lepton_beam.rms_bunch_length); + double ion_z = _smear.gauss(_cfg.ion_beam.rms_bunch_length); + double electron_z = _smear.gauss(_cfg.electron_beam.rms_bunch_length); double crossing_angle = _cfg.crossing_angle_hor; - double had_bunch_rms_hor = sqrt(_cfg.hadron_beam.beta_star_hor * _cfg.hadron_beam.rms_emittance_hor); - double had_bunch_rms_ver = sqrt(_cfg.hadron_beam.beta_star_ver * _cfg.hadron_beam.rms_emittance_ver); - double lep_bunch_rms_hor = sqrt(_cfg.lepton_beam.beta_star_hor * _cfg.lepton_beam.rms_emittance_hor); - double lep_bunch_rms_ver = sqrt(_cfg.lepton_beam.beta_star_ver * _cfg.lepton_beam.rms_emittance_ver); + double had_bunch_rms_hor = sqrt(_cfg.ion_beam.beta_star_hor * _cfg.ion_beam.rms_emittance_hor); + double had_bunch_rms_ver = sqrt(_cfg.ion_beam.beta_star_ver * _cfg.ion_beam.rms_emittance_ver); + double lep_bunch_rms_hor = sqrt(_cfg.electron_beam.beta_star_hor * _cfg.electron_beam.rms_emittance_hor); + double lep_bunch_rms_ver = sqrt(_cfg.electron_beam.beta_star_ver * _cfg.electron_beam.rms_emittance_ver); double sigma_hor = get_collision_width(had_bunch_rms_hor, lep_bunch_rms_hor); double sigma_ver = get_collision_width(had_bunch_rms_ver, lep_bunch_rms_ver); - // Find Collision time, z position of collision, z position of center of hadron bunch at collision time and x position of collision + // Find Collision time, z position of collision, z position of center of ion bunch at collision time and x position of collision // Quantities are found via a system of parametric equations - // Z position of colliding hadron as a function of time: Z_h = Cos(0.5*theta_c)*t + Z_h_offset (Z_h_offset = distance from center of bunch) - // Z position of colliding lepton as a function of time: Z_l = -Cos(0.5*theta_c)*t + Z_l_offset + // Z position of colliding ion as a function of time: Z_h = Cos(0.5*theta_c)*t + Z_h_offset (Z_h_offset = distance from center of bunch) + // Z position of colliding electron as a function of time: Z_l = -Cos(0.5*theta_c)*t + Z_l_offset // Collision time when Z_h = Z_l -> t_int = (Z_l_offset - Z_h_offset)/(2*Cos(0.5*theta_c)) // Z position of collision: Z_int = (Z_l_offset + Z_h_offset)/2 - // Z position of center of hadron bunch a collision time - this gives x position of collision via relation x = z*Tan(0.5*theta_c) + // Z position of center of ion bunch a collision time - this gives x position of collision via relation x = z*Tan(0.5*theta_c) // Z_bunch_int = Cos(0.5*theta_c)*t_int // X_int = Z_bunch_int * Tan(0.5*theta_c) @@ -81,8 +81,8 @@ ab::BunchInteractionResult ab::Afterburner::generate_vertx_with_bunch_interactio double s_c = sin(crossing_angle/2.0); double t_c = tan(crossing_angle/2.0); - double t_int = (lepton_z - hadron_z)/(2.0*c_c); - double z_int = (lepton_z + hadron_z)/2.0; + double t_int = (electron_z - ion_z)/(2.0*c_c); + double z_int = (electron_z + ion_z)/2.0; double z_bunch_int = c_c*t_int; double x_int = z_bunch_int*t_c; @@ -109,8 +109,8 @@ ab::BunchInteractionResult ab::Afterburner::generate_vertx_with_bunch_interactio CLHEP::Hep3Vector collision_center(tmpVtxX, tmpVtxY, tmpVtxZ); ab::BunchInteractionResult result; result.vertex.set(collision_center, t_int); - result.bunch_one_z = hadron_z; - result.bunch_two_z = lepton_z; + result.bunch_one_z = ion_z; + result.bunch_two_z = electron_z; // // // const static CLHEP::Hep3Vector z_axis(0, 0, 1); @@ -123,8 +123,8 @@ ab::BunchInteractionResult ab::Afterburner::generate_vertx_with_bunch_interactio // // CLHEP::Hep3Vector vec_crossing = beamA_center - 0.5 * (beamA_center - beamB_center); // -// CLHEP::Hep3Vector vec_longitudinal_collision = beamCenterDiffAxis * (hadron_z + lepton_z) / 2.; -// double ct_collision = 0.5 * (-hadron_z + lepton_z) / beamCenterDiffAxis.dot(beamA_center); +// CLHEP::Hep3Vector vec_longitudinal_collision = beamCenterDiffAxis * (ion_z + electron_z) / 2.; +// double ct_collision = 0.5 * (-ion_z + electron_z) / beamCenterDiffAxis.dot(beamA_center); // double t_collision = ct_collision ;//* CLHEP::mm / CLHEP::c_light / CLHEP::ns; // CLHEP::Hep3Vector vec_crossing_collision = ct_collision * vec_crossing; // shift of collision to crossing direction // @@ -152,8 +152,8 @@ ab::BunchInteractionResult ab::Afterburner::generate_vertx_with_bunch_interactio // // ab::BunchInteractionResult result; // result.vertex.set(vec_collision_vertex, t_collision); -// result.bunch_one_z = hadron_z; -// result.bunch_two_z = lepton_z; +// result.bunch_one_z = ion_z; +// result.bunch_two_z = electron_z; // // // if (m_verbosity) @@ -206,12 +206,12 @@ CLHEP::Hep3Vector ab::Afterburner::smear_beam_divergence(const CLHEP::Hep3Vector // Vertical /* // Calculate angular deflection - double crabAngHad = ((mXAngle/2.0)*hadronPartPos)/(TMath::Sqrt(betaCrabHad*betaStarHad)); - double crabAngLep = ((mXAngle/2.0)*leptonPartPos)/(TMath::Sqrt(betaCrabLep*betaStarLep)); + double crabAngHad = ((mXAngle/2.0)*ionPartPos)/(TMath::Sqrt(betaCrabHad*betaStarHad)); + double crabAngLep = ((mXAngle/2.0)*electronPartPos)/(TMath::Sqrt(betaCrabLep*betaStarLep)); // Calculate Magnitude of Px kick double crabKickHad = (mIonBeamEnergy + tmpPzA)*TMath::Sin(crabAngHad); - double crabKickLep = (-1.0)*(mLeptonBeamEnergy + tmpPzB)*TMath::Sin(crabAngLep); // + double crabKickLep = (-1.0)*(mElectronBeamEnergy + tmpPzB)*TMath::Sin(crabAngLep); // // Rotate Momentum Kick into Detector Frame double tmpVertPxA, tmpVertPyA, tmpVertPzA; @@ -271,56 +271,56 @@ ab::AfterburnerEventResult ab::Afterburner::process_event(const CLHEP::HepLorent const static CLHEP::Hep3Vector z_axis(0, 0, 1); const static CLHEP::Hep3Vector y_axis(0, 1, 0); - //CLHEP::Hep3Vector ideal_hadron_dir = spherical_to_cartesian(_cfg.hadron_beam.direction_theta, _cfg.hadron_beam.direction_phi); - //CLHEP::Hep3Vector ideal_lepton_dir = spherical_to_cartesian(_cfg.lepton_beam.direction_theta, _cfg.lepton_beam.direction_phi); - CLHEP::Hep3Vector ideal_lepton_dir(0, 0, -1); - CLHEP::Hep3Vector ideal_hadron_dir = CLHEP::Hep3Vector(z_axis).rotateY(_cfg.crossing_angle_hor).rotateX(_cfg.crossing_angle_ver); + //CLHEP::Hep3Vector ideal_ion_dir = spherical_to_cartesian(_cfg.ion_beam.direction_theta, _cfg.ion_beam.direction_phi); + //CLHEP::Hep3Vector ideal_electron_dir = spherical_to_cartesian(_cfg.electron_beam.direction_theta, _cfg.electron_beam.direction_phi); + CLHEP::Hep3Vector ideal_electron_dir(0, 0, -1); + CLHEP::Hep3Vector ideal_ion_dir = CLHEP::Hep3Vector(z_axis).rotateY(_cfg.crossing_angle_hor).rotateX(_cfg.crossing_angle_ver); - //double crossing_angle = acos(ideal_hadron_dir.unit().dot(-ideal_lepton_dir.unit())); + //double crossing_angle = acos(ideal_ion_dir.unit().dot(-ideal_electron_dir.unit())); if (m_verbosity) { cout << __PRETTY_FUNCTION__ << ": " << endl; - cout << "ideal_hadron_dir = " << ideal_hadron_dir << endl; - cout << "ideal_lepton_dir = " << ideal_lepton_dir << endl; + cout << "ideal_ion_dir = " << ideal_ion_dir << endl; + cout << "ideal_electron_dir = " << ideal_electron_dir << endl; cout << "crossing_angle_hor = " << _cfg.crossing_angle_hor << endl; cout << "crossing_angle_ver = " << _cfg.crossing_angle_ver << endl; } - assert(fabs(ideal_hadron_dir.mag2() - 1) < CLHEP::Hep3Vector::getTolerance()); - assert(fabs(ideal_lepton_dir.mag2() - 1) < CLHEP::Hep3Vector::getTolerance()); + assert(fabs(ideal_ion_dir.mag2() - 1) < CLHEP::Hep3Vector::getTolerance()); + assert(fabs(ideal_electron_dir.mag2() - 1) < CLHEP::Hep3Vector::getTolerance()); - if (ideal_hadron_dir.dot(ideal_lepton_dir) > -0.5) { + if (ideal_ion_dir.dot(ideal_electron_dir) > -0.5) { cout << "PHHepMCGenHelper::process_event - WARNING -" << "Beam A and Beam B are not near back to back. " << "Please double check beam direction setting at set_beam_direction_theta_phi()." - << "beamA_center = " << ideal_hadron_dir << "," - << "beamB_center = " << ideal_lepton_dir << "," + << "beamA_center = " << ideal_ion_dir << "," + << "beamB_center = " << ideal_electron_dir << "," << " Current setting:"; print(); } // Calculate angular deflection - double hadron_crab_hor = _cfg.crossing_angle_hor / 2.0 / sqrt(_cfg.hadron_beam.beta_crab_hor * _cfg.hadron_beam.beta_star_hor); - double hadron_crab_ver = 0; + double ion_crab_hor = _cfg.crossing_angle_hor / 2.0 / sqrt(_cfg.ion_beam.beta_crab_hor * _cfg.ion_beam.beta_star_hor); + double ion_crab_ver = 0; - double lepton_crab_hor = _cfg.crossing_angle_hor / 2.0 / sqrt(_cfg.lepton_beam.beta_crab_hor * _cfg.lepton_beam.beta_star_hor); - double lepton_crab_ver = 0; + double electron_crab_hor = _cfg.crossing_angle_hor / 2.0 / sqrt(_cfg.electron_beam.beta_crab_hor * _cfg.electron_beam.beta_star_hor); + double electron_crab_ver = 0; - CLHEP::Hep3Vector real_hadron_dir = smear_beam_divergence(ideal_hadron_dir, _cfg.hadron_beam, bunch_one_z, hadron_crab_hor, hadron_crab_ver); - CLHEP::Hep3Vector real_lepton_dir = smear_beam_divergence(ideal_lepton_dir, _cfg.lepton_beam, bunch_two_z, lepton_crab_hor, lepton_crab_ver); + CLHEP::Hep3Vector real_ion_dir = smear_beam_divergence(ideal_ion_dir, _cfg.ion_beam, bunch_one_z, ion_crab_hor, ion_crab_ver); + CLHEP::Hep3Vector real_electron_dir = smear_beam_divergence(ideal_electron_dir, _cfg.electron_beam, bunch_two_z, electron_crab_hor, electron_crab_ver); if (m_verbosity) { cout << __PRETTY_FUNCTION__ << ": " << endl; - cout << "beamA_vec = " << real_hadron_dir << endl; - cout << "beamB_vec = " << real_lepton_dir << endl; + cout << "beamA_vec = " << real_ion_dir << endl; + cout << "beamB_vec = " << real_electron_dir << endl; } - assert(fabs(real_hadron_dir.mag2() - 1) < CLHEP::Hep3Vector::getTolerance()); - assert(fabs(real_lepton_dir.mag2() - 1) < CLHEP::Hep3Vector::getTolerance()); + assert(fabs(real_ion_dir.mag2() - 1) < CLHEP::Hep3Vector::getTolerance()); + assert(fabs(real_electron_dir.mag2() - 1) < CLHEP::Hep3Vector::getTolerance()); // apply minimal beam energy shift rotation and boost - CLHEP::Hep3Vector boost_axis = real_hadron_dir + real_lepton_dir; + CLHEP::Hep3Vector boost_axis = real_ion_dir + real_electron_dir; if (boost_axis.mag2() > CLHEP::Hep3Vector::getTolerance()) { //non-zero boost @@ -339,13 +339,13 @@ ab::AfterburnerEventResult ab::Afterburner::process_event(const CLHEP::HepLorent } //rotation to collision to along z-axis with beamA pointing to +z - CLHEP::Hep3Vector beamDiffAxis = (real_hadron_dir - real_lepton_dir); + CLHEP::Hep3Vector beamDiffAxis = (real_ion_dir - real_electron_dir); if (beamDiffAxis.mag2() < CLHEP::Hep3Vector::getTolerance()) { cout << "PHHepMCGenHelper::process_event - Fatal error -" << "Beam A and Beam B are too close to each other in direction " << "Please double check beam direction and divergence setting. " - << "real_hadron_dir = " << real_hadron_dir << "," - << "real_lepton_dir = " << real_lepton_dir << "," + << "real_ion_dir = " << real_ion_dir << "," + << "real_electron_dir = " << real_electron_dir << "," << " Current setting:"; print(); @@ -376,7 +376,7 @@ ab::AfterburnerEventResult ab::Afterburner::process_event(const CLHEP::HepLorent } } else { // need a rotation - CLHEP::Hep3Vector rotation_axis = (real_hadron_dir - real_lepton_dir).cross(z_axis); + CLHEP::Hep3Vector rotation_axis = (real_ion_dir - real_electron_dir).cross(z_axis); const double rotation_angle_to_z = acos(cos_rotation_angle_to_z); // TODO back to -acos? result.rotation = CLHEP::HepRotation(rotation_axis, rotation_angle_to_z); @@ -389,7 +389,7 @@ ab::AfterburnerEventResult ab::Afterburner::process_event(const CLHEP::HepLorent // rotate the collision vertex z direction to middle of the beam angles // the final longitudinal vertex smear axis - CLHEP::Hep3Vector beamCenterDiffAxis = (ideal_hadron_dir - ideal_lepton_dir); + CLHEP::Hep3Vector beamCenterDiffAxis = (ideal_ion_dir - ideal_electron_dir); beamCenterDiffAxis = beamCenterDiffAxis / beamCenterDiffAxis.mag(); double cos_rotation_center_angle_to_z = beamCenterDiffAxis.dot(z_axis); @@ -462,17 +462,17 @@ void ab::Afterburner::print() const { cout << "Vertex distribution function: " << smear_func_to_str(_cfg.vertex_smear_func) << endl; cout << "Vertex simulation is: " << (_cfg.use_beam_bunch_sim ? string("on") : std::string("off")) << endl; - cout << "Hadron beam:\n"; - cout << " rms emittance : hor = " << _cfg.hadron_beam.rms_emittance_hor << ", ver = " << _cfg.hadron_beam.rms_emittance_ver << endl; - cout << " beta star : hor = " << _cfg.hadron_beam.beta_star_hor << ", ver = " << _cfg.hadron_beam.beta_star_ver << endl; - cout << " beta crab : hor = " << _cfg.hadron_beam.beta_crab_hor << endl; - cout << " rms bunch length: " << _cfg.hadron_beam.rms_bunch_length << endl; - - cout << "Lepton beam:\n"; - cout << " rms emittance : hor = " << _cfg.lepton_beam.rms_emittance_hor << ", ver = " << _cfg.lepton_beam.rms_emittance_ver << endl; - cout << " beta star : hor = " << _cfg.lepton_beam.beta_star_hor << ", ver = " << _cfg.lepton_beam.beta_star_ver << endl; - cout << " beta crab : hor = " << _cfg.lepton_beam.beta_crab_hor << endl; - cout << " rms bunch length: " << _cfg.lepton_beam.rms_bunch_length << endl; + cout << "Ion beam:\n"; + cout << " rms emittance : hor = " << _cfg.ion_beam.rms_emittance_hor << ", ver = " << _cfg.ion_beam.rms_emittance_ver << endl; + cout << " beta star : hor = " << _cfg.ion_beam.beta_star_hor << ", ver = " << _cfg.ion_beam.beta_star_ver << endl; + cout << " beta crab : hor = " << _cfg.ion_beam.beta_crab_hor << endl; + cout << " rms bunch length: " << _cfg.ion_beam.rms_bunch_length << endl; + + cout << "Electron beam:\n"; + cout << " rms emittance : hor = " << _cfg.electron_beam.rms_emittance_hor << ", ver = " << _cfg.electron_beam.rms_emittance_ver << endl; + cout << " beta star : hor = " << _cfg.electron_beam.beta_star_hor << ", ver = " << _cfg.electron_beam.beta_star_ver << endl; + cout << " beta crab : hor = " << _cfg.electron_beam.beta_crab_hor << endl; + cout << " rms bunch length: " << _cfg.electron_beam.rms_bunch_length << endl; cout << "=========================\n"; } diff --git a/cpp/afterburner/AfterburnerConfig.hh b/cpp/afterburner/AfterburnerConfig.hh index 9a969c6..500d78d 100644 --- a/cpp/afterburner/AfterburnerConfig.hh +++ b/cpp/afterburner/AfterburnerConfig.hh @@ -8,6 +8,12 @@ namespace ab { struct BeamConfig { + //! Beam energy setting + double energy = 18; + + //! Charge of beam specimen + int pdg = 11; + //! Beam angle divergence in accelerator beam coordinate. //! First element is beamA, in pair of Gaussian Sigma_H Sigma_V. BeamA is aimed to +z direction in the HepMC event generator's coordinate //! Second element is beamB, in pair of Gaussian Sigma_H Sigma_V. BeamA is aimed to -z direction in the HepMC event generator's coordinate @@ -31,6 +37,9 @@ namespace ab { struct AfterburnerConfig { + // Name of the afterburner config used + std::string name = "auto"; + /** * Crossing angle in horizontal plane [rad] */ @@ -66,10 +75,10 @@ namespace ab { double vertex_shift_t = 0; /// Beam A (one) configuration - BeamConfig hadron_beam; + BeamConfig ion_beam; /// Beam B (two) configuration - BeamConfig lepton_beam; + BeamConfig electron_beam; }; } #endif //EICAFTERBURNER_AFTERBURNERCONFIG_HH diff --git a/cpp/afterburner/EicConfigurator.cc b/cpp/afterburner/EicConfigurator.cc index d42d48f..b7e8132 100644 --- a/cpp/afterburner/EicConfigurator.cc +++ b/cpp/afterburner/EicConfigurator.cc @@ -15,30 +15,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip6_eau_110x18() { cfg.crossing_angle_hor = 25e-3; // Crossing angle in horizontal plane [rad] cfg.crossing_angle_ver = 100e-6; // Crossing angle in vertical plane [rad] - cfg.hadron_beam.beta_crab_hor = 500000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 500000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 218e-6; - cfg.hadron_beam.divergence_ver = 379e-6; - cfg.lepton_beam.divergence_hor = 101e-6; - cfg.lepton_beam.divergence_ver = 37e-6; + cfg.ion_beam.divergence_hor = 218e-6; + cfg.ion_beam.divergence_ver = 379e-6; + cfg.electron_beam.divergence_hor = 101e-6; + cfg.electron_beam.divergence_ver = 37e-6; // Beam beta star [mm] - cfg.hadron_beam.beta_star_hor = 910; - cfg.hadron_beam.beta_star_ver = 40; - cfg.lepton_beam.beta_star_hor = 1960; - cfg.lepton_beam.beta_star_ver = 410; + cfg.ion_beam.beta_star_hor = 910; + cfg.ion_beam.beta_star_ver = 40; + cfg.electron_beam.beta_star_hor = 1960; + cfg.electron_beam.beta_star_ver = 410; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 43.2 * nm; - cfg.hadron_beam.rms_emittance_ver = 5.8 * nm; - cfg.lepton_beam.rms_emittance_hor = 20 * nm; - cfg.lepton_beam.rms_emittance_ver = 0.6 * nm; + cfg.ion_beam.rms_emittance_hor = 43.2 * nm; + cfg.ion_beam.rms_emittance_ver = 5.8 * nm; + cfg.electron_beam.rms_emittance_hor = 20 * nm; + cfg.electron_beam.rms_emittance_ver = 0.6 * nm; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 7 * cm; - cfg.lepton_beam.rms_bunch_length = 0.9 * cm; + cfg.ion_beam.rms_bunch_length = 7 * cm; + cfg.electron_beam.rms_bunch_length = 0.9 * cm; return cfg; } @@ -51,30 +51,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip6_eau_110x10() { cfg.crossing_angle_hor = 25e-3; // Crossing angle in horizontal plane [rad] cfg.crossing_angle_ver = 100e-6; // Crossing angle in vertical plane [rad] - cfg.hadron_beam.beta_crab_hor = 500000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 500000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 216e-6; - cfg.hadron_beam.divergence_ver = 274e-6; - cfg.lepton_beam.divergence_hor = 102e-6; - cfg.lepton_beam.divergence_ver = 92e-6; + cfg.ion_beam.divergence_hor = 216e-6; + cfg.ion_beam.divergence_ver = 274e-6; + cfg.electron_beam.divergence_hor = 102e-6; + cfg.electron_beam.divergence_ver = 92e-6; // Beam beta star [mm] [mm] - cfg.hadron_beam.beta_star_hor = 910; - cfg.hadron_beam.beta_star_ver = 40; - cfg.lepton_beam.beta_star_hor = 1930; - cfg.lepton_beam.beta_star_ver = 120; + cfg.ion_beam.beta_star_hor = 910; + cfg.ion_beam.beta_star_ver = 40; + cfg.electron_beam.beta_star_hor = 1930; + cfg.electron_beam.beta_star_ver = 120; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 42.3 * nm; - cfg.hadron_beam.rms_emittance_ver = 3 * nm; - cfg.lepton_beam.rms_emittance_hor = 20 * nm; - cfg.lepton_beam.rms_emittance_ver = 1 * nm; + cfg.ion_beam.rms_emittance_hor = 42.3 * nm; + cfg.ion_beam.rms_emittance_ver = 3 * nm; + cfg.electron_beam.rms_emittance_hor = 20 * nm; + cfg.electron_beam.rms_emittance_ver = 1 * nm; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 7 * cm; - cfg.lepton_beam.rms_bunch_length = 0.7 * cm; + cfg.ion_beam.rms_bunch_length = 7 * cm; + cfg.electron_beam.rms_bunch_length = 0.7 * cm; return cfg; } @@ -87,30 +87,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip6_eau_110x5() { cfg.crossing_angle_hor = 25e-3; // Crossing angle in horizontal plane [rad] cfg.crossing_angle_ver = 100e-6; // Crossing angle in vertical plane [rad] - cfg.hadron_beam.beta_crab_hor = 500000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 500000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 215e-6; - cfg.hadron_beam.divergence_ver = 275e-6; - cfg.lepton_beam.divergence_hor = 102e-6; - cfg.lepton_beam.divergence_ver = 185e-6; + cfg.ion_beam.divergence_hor = 215e-6; + cfg.ion_beam.divergence_ver = 275e-6; + cfg.electron_beam.divergence_hor = 102e-6; + cfg.electron_beam.divergence_ver = 185e-6; // Beam beta star [mm] - cfg.hadron_beam.beta_star_hor = 910; - cfg.hadron_beam.beta_star_ver = 40; - cfg.lepton_beam.beta_star_hor = 1930; - cfg.lepton_beam.beta_star_ver = 60; + cfg.ion_beam.beta_star_hor = 910; + cfg.ion_beam.beta_star_ver = 40; + cfg.electron_beam.beta_star_hor = 1930; + cfg.electron_beam.beta_star_ver = 60; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 42.3 * nm; - cfg.hadron_beam.rms_emittance_ver = 3 * nm; - cfg.lepton_beam.rms_emittance_hor = 20 * nm; - cfg.lepton_beam.rms_emittance_ver = 2 * nm; + cfg.ion_beam.rms_emittance_hor = 42.3 * nm; + cfg.ion_beam.rms_emittance_ver = 3 * nm; + cfg.electron_beam.rms_emittance_hor = 20 * nm; + cfg.electron_beam.rms_emittance_ver = 2 * nm; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 7 * cm; - cfg.lepton_beam.rms_bunch_length = 0.7 * cm; + cfg.ion_beam.rms_bunch_length = 7 * cm; + cfg.electron_beam.rms_bunch_length = 0.7 * cm; return cfg; } @@ -124,30 +124,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip6_eau_41x5() { cfg.crossing_angle_ver = 100e-6; // Crossing angle in vertical plane [rad] //βcrabm1300/500/200beta function at crab cavity, - cfg.hadron_beam.beta_crab_hor = 200000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 200000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 275e-6; - cfg.hadron_beam.divergence_ver = 377e-6; - cfg.lepton_beam.divergence_hor = 81e-6; - cfg.lepton_beam.divergence_ver = 136e-6; + cfg.ion_beam.divergence_hor = 275e-6; + cfg.ion_beam.divergence_ver = 377e-6; + cfg.electron_beam.divergence_hor = 81e-6; + cfg.electron_beam.divergence_ver = 136e-6; // Beam beta star [mm] - cfg.hadron_beam.beta_star_hor = 900; - cfg.hadron_beam.beta_star_ver = 40; - cfg.lepton_beam.beta_star_hor = 3070; - cfg.lepton_beam.beta_star_ver = 110; + cfg.ion_beam.beta_star_hor = 900; + cfg.ion_beam.beta_star_ver = 40; + cfg.electron_beam.beta_star_hor = 3070; + cfg.electron_beam.beta_star_ver = 110; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 68.1 * nm; - cfg.hadron_beam.rms_emittance_ver = 5.7 * nm; - cfg.lepton_beam.rms_emittance_hor = 20 * nm; - cfg.lepton_beam.rms_emittance_ver = 2 * nm; + cfg.ion_beam.rms_emittance_hor = 68.1 * nm; + cfg.ion_beam.rms_emittance_ver = 5.7 * nm; + cfg.electron_beam.rms_emittance_hor = 20 * nm; + cfg.electron_beam.rms_emittance_ver = 2 * nm; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 11.6 * cm; - cfg.lepton_beam.rms_bunch_length = 0.7 * cm; + cfg.ion_beam.rms_bunch_length = 11.6 * cm; + cfg.electron_beam.rms_bunch_length = 0.7 * cm; return cfg; } @@ -159,30 +159,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip6_hiacc_41x5() { cfg.crossing_angle_hor = 25e-3; // Crossing angle in horizontal plane [rad] cfg.crossing_angle_ver = 100e-6; // Crossing angle in vertical plane [rad] - cfg.hadron_beam.beta_crab_hor = 200000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 200000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 220e-6; - cfg.hadron_beam.divergence_ver = 380e-6; - cfg.lepton_beam.divergence_hor = 101e-6; - cfg.lepton_beam.divergence_ver = 129e-6; + cfg.ion_beam.divergence_hor = 220e-6; + cfg.ion_beam.divergence_ver = 380e-6; + cfg.electron_beam.divergence_hor = 101e-6; + cfg.electron_beam.divergence_ver = 129e-6; // Beam beta star [mm] - cfg.hadron_beam.beta_star_hor = 900; - cfg.hadron_beam.beta_star_ver = 71; - cfg.lepton_beam.beta_star_hor = 1960; - cfg.lepton_beam.beta_star_ver = 210; + cfg.ion_beam.beta_star_hor = 900; + cfg.ion_beam.beta_star_ver = 71; + cfg.electron_beam.beta_star_hor = 1960; + cfg.electron_beam.beta_star_ver = 210; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 44 * nm; - cfg.hadron_beam.rms_emittance_ver = 10 * nm; - cfg.lepton_beam.rms_emittance_hor = 20 * nm; - cfg.lepton_beam.rms_emittance_ver = 3.5 * nm; + cfg.ion_beam.rms_emittance_hor = 44 * nm; + cfg.ion_beam.rms_emittance_ver = 10 * nm; + cfg.electron_beam.rms_emittance_hor = 20 * nm; + cfg.electron_beam.rms_emittance_ver = 3.5 * nm; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 7.5 * cm; - cfg.lepton_beam.rms_bunch_length = 0.7 * cm; + cfg.ion_beam.rms_bunch_length = 7.5 * cm; + cfg.electron_beam.rms_bunch_length = 0.7 * cm; return cfg; } @@ -194,30 +194,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip6_hiacc_100x5() { cfg.crossing_angle_hor = 25e-3; // Crossing angle in horizontal plane [rad] cfg.crossing_angle_ver = 100e-6; // Crossing angle in vertical plane [rad] - cfg.hadron_beam.beta_crab_hor = 500000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 500000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 180e-6; - cfg.hadron_beam.divergence_ver = 180e-6; - cfg.lepton_beam.divergence_hor = 140e-6; - cfg.lepton_beam.divergence_ver = 140e-6; + cfg.ion_beam.divergence_hor = 180e-6; + cfg.ion_beam.divergence_ver = 180e-6; + cfg.electron_beam.divergence_hor = 140e-6; + cfg.electron_beam.divergence_ver = 140e-6; // Beam beta star [mm] - cfg.hadron_beam.beta_star_hor = 800; - cfg.hadron_beam.beta_star_ver = 72; - cfg.lepton_beam.beta_star_hor = 1030; - cfg.lepton_beam.beta_star_ver = 92; + cfg.ion_beam.beta_star_hor = 800; + cfg.ion_beam.beta_star_ver = 72; + cfg.electron_beam.beta_star_hor = 1030; + cfg.electron_beam.beta_star_ver = 92; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 26 * nm; - cfg.hadron_beam.rms_emittance_ver = 2.3 * nm; - cfg.lepton_beam.rms_emittance_hor = 20 * nm; - cfg.lepton_beam.rms_emittance_ver = 1.8 * nm; + cfg.ion_beam.rms_emittance_hor = 26 * nm; + cfg.ion_beam.rms_emittance_ver = 2.3 * nm; + cfg.electron_beam.rms_emittance_hor = 20 * nm; + cfg.electron_beam.rms_emittance_ver = 1.8 * nm; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 7 * cm; - cfg.lepton_beam.rms_bunch_length = 0.7 * cm; + cfg.ion_beam.rms_bunch_length = 7 * cm; + cfg.electron_beam.rms_bunch_length = 0.7 * cm; return cfg; } @@ -229,30 +229,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip6_hiacc_100x10() { cfg.crossing_angle_hor = 25e-3; // Crossing angle in horizontal plane [rad] cfg.crossing_angle_ver = 100e-6; // Crossing angle in vertical plane [rad] - cfg.hadron_beam.beta_crab_hor = 500000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 500000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 180e-6; - cfg.hadron_beam.divergence_ver = 180e-6; - cfg.lepton_beam.divergence_hor = 118e-6; - cfg.lepton_beam.divergence_ver = 86e-6; + cfg.ion_beam.divergence_hor = 180e-6; + cfg.ion_beam.divergence_ver = 180e-6; + cfg.electron_beam.divergence_hor = 118e-6; + cfg.electron_beam.divergence_ver = 86e-6; // Beam beta star [mm] - cfg.hadron_beam.beta_star_hor = 940; - cfg.hadron_beam.beta_star_ver = 85; - cfg.lepton_beam.beta_star_hor = 1430; - cfg.lepton_beam.beta_star_ver = 180; + cfg.ion_beam.beta_star_hor = 940; + cfg.ion_beam.beta_star_ver = 85; + cfg.electron_beam.beta_star_hor = 1430; + cfg.electron_beam.beta_star_ver = 180; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 30 * nm; - cfg.hadron_beam.rms_emittance_ver = 2.7 * nm; - cfg.lepton_beam.rms_emittance_hor = 20 * nm; - cfg.lepton_beam.rms_emittance_ver = 1.3 * nm; + cfg.ion_beam.rms_emittance_hor = 30 * nm; + cfg.ion_beam.rms_emittance_ver = 2.7 * nm; + cfg.electron_beam.rms_emittance_hor = 20 * nm; + cfg.electron_beam.rms_emittance_ver = 1.3 * nm; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 7 * cm; - cfg.lepton_beam.rms_bunch_length = 0.7 * cm; + cfg.ion_beam.rms_bunch_length = 7 * cm; + cfg.electron_beam.rms_bunch_length = 0.7 * cm; return cfg; } @@ -264,30 +264,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip6_hiacc_275x10() { cfg.crossing_angle_hor = 25e-3; // Crossing angle in horizontal plane [rad] cfg.crossing_angle_ver = 100e-6; // Crossing angle in vertical plane [rad] - cfg.hadron_beam.beta_crab_hor = 1300000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 1300000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 65e-6; - cfg.hadron_beam.divergence_ver = 65e-6; - cfg.lepton_beam.divergence_hor = 116e-6; - cfg.lepton_beam.divergence_ver = 84e-6; + cfg.ion_beam.divergence_hor = 65e-6; + cfg.ion_beam.divergence_ver = 65e-6; + cfg.electron_beam.divergence_hor = 116e-6; + cfg.electron_beam.divergence_ver = 84e-6; // Beam beta star [mm] - cfg.hadron_beam.beta_star_hor = 2650; - cfg.hadron_beam.beta_star_ver = 240; - cfg.lepton_beam.beta_star_hor = 1490; - cfg.lepton_beam.beta_star_ver = 190; + cfg.ion_beam.beta_star_hor = 2650; + cfg.ion_beam.beta_star_ver = 240; + cfg.electron_beam.beta_star_hor = 1490; + cfg.electron_beam.beta_star_ver = 190; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 11 * nm; - cfg.hadron_beam.rms_emittance_ver = 1 * nm; - cfg.lepton_beam.rms_emittance_hor = 20 * nm; - cfg.lepton_beam.rms_emittance_ver = 1.3 * nm; + cfg.ion_beam.rms_emittance_hor = 11 * nm; + cfg.ion_beam.rms_emittance_ver = 1 * nm; + cfg.electron_beam.rms_emittance_hor = 20 * nm; + cfg.electron_beam.rms_emittance_ver = 1.3 * nm; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 6 * cm; - cfg.lepton_beam.rms_bunch_length = 0.7 * cm; + cfg.ion_beam.rms_bunch_length = 6 * cm; + cfg.electron_beam.rms_bunch_length = 0.7 * cm; return cfg; } @@ -299,30 +299,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip6_hiacc_275x18() { cfg.crossing_angle_hor = 25e-3; // Crossing angle in horizontal plane [rad] cfg.crossing_angle_ver = 100e-6; // Crossing angle in vertical plane [rad] - cfg.hadron_beam.beta_crab_hor = 1300000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 1300000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 65e-6; - cfg.hadron_beam.divergence_ver = 65e-6; - cfg.lepton_beam.divergence_hor = 89e-6; - cfg.lepton_beam.divergence_ver = 82e-6; + cfg.ion_beam.divergence_hor = 65e-6; + cfg.ion_beam.divergence_ver = 65e-6; + cfg.electron_beam.divergence_hor = 89e-6; + cfg.electron_beam.divergence_ver = 82e-6; // Beam beta star [mm] - cfg.hadron_beam.beta_star_hor = 4170; - cfg.hadron_beam.beta_star_ver = 380; - cfg.lepton_beam.beta_star_hor = 3060; - cfg.lepton_beam.beta_star_ver = 300; + cfg.ion_beam.beta_star_hor = 4170; + cfg.ion_beam.beta_star_ver = 380; + cfg.electron_beam.beta_star_hor = 3060; + cfg.electron_beam.beta_star_ver = 300; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 17.6 * nm; - cfg.hadron_beam.rms_emittance_ver = 1.6 * nm; - cfg.lepton_beam.rms_emittance_hor = 24 * nm; - cfg.lepton_beam.rms_emittance_ver = 2 * nm; + cfg.ion_beam.rms_emittance_hor = 17.6 * nm; + cfg.ion_beam.rms_emittance_ver = 1.6 * nm; + cfg.electron_beam.rms_emittance_hor = 24 * nm; + cfg.electron_beam.rms_emittance_ver = 2 * nm; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 6 * cm; - cfg.lepton_beam.rms_bunch_length = 0.9 * cm; + cfg.ion_beam.rms_bunch_length = 6 * cm; + cfg.electron_beam.rms_bunch_length = 0.9 * cm; return cfg; } @@ -335,30 +335,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip6_hidiv_41x5() { cfg.crossing_angle_hor = 25e-3; // Crossing angle in horizontal plane [rad] cfg.crossing_angle_ver = 100e-6; // Crossing angle in vertical plane [rad] - cfg.hadron_beam.beta_crab_hor = 200000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 200000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 220e-6; - cfg.hadron_beam.divergence_ver = 380e-6; - cfg.lepton_beam.divergence_hor = 101e-6; - cfg.lepton_beam.divergence_ver = 129e-6; + cfg.ion_beam.divergence_hor = 220e-6; + cfg.ion_beam.divergence_ver = 380e-6; + cfg.electron_beam.divergence_hor = 101e-6; + cfg.electron_beam.divergence_ver = 129e-6; // Beam beta star [mm] - cfg.hadron_beam.beta_star_hor = 900; - cfg.hadron_beam.beta_star_ver = 71; - cfg.lepton_beam.beta_star_hor = 1960; - cfg.lepton_beam.beta_star_ver = 210; + cfg.ion_beam.beta_star_hor = 900; + cfg.ion_beam.beta_star_ver = 71; + cfg.electron_beam.beta_star_hor = 1960; + cfg.electron_beam.beta_star_ver = 210; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 44 * nm; - cfg.hadron_beam.rms_emittance_ver = 10 * nm; - cfg.lepton_beam.rms_emittance_hor = 20 * nm; - cfg.lepton_beam.rms_emittance_ver = 3.5 * nm; + cfg.ion_beam.rms_emittance_hor = 44 * nm; + cfg.ion_beam.rms_emittance_ver = 10 * nm; + cfg.electron_beam.rms_emittance_hor = 20 * nm; + cfg.electron_beam.rms_emittance_ver = 3.5 * nm; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 7.5 * cm; - cfg.lepton_beam.rms_bunch_length = 0.7 * cm; + cfg.ion_beam.rms_bunch_length = 7.5 * cm; + cfg.electron_beam.rms_bunch_length = 0.7 * cm; return cfg; } @@ -370,30 +370,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip6_hidiv_100x5() { cfg.crossing_angle_hor = 25e-3; // Crossing angle in horizontal plane [rad] cfg.crossing_angle_ver = 100e-6; // Crossing angle in vertical plane [rad] - cfg.hadron_beam.beta_crab_hor = 500000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 500000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 206e-6; - cfg.hadron_beam.divergence_ver = 206e-6; - cfg.lepton_beam.divergence_hor = 160e-6; - cfg.lepton_beam.divergence_ver = 160e-6; + cfg.ion_beam.divergence_hor = 206e-6; + cfg.ion_beam.divergence_ver = 206e-6; + cfg.electron_beam.divergence_hor = 160e-6; + cfg.electron_beam.divergence_ver = 160e-6; // Beam beta star [mm] - cfg.hadron_beam.beta_star_hor = 610; - cfg.hadron_beam.beta_star_ver = 55; - cfg.lepton_beam.beta_star_hor = 780; - cfg.lepton_beam.beta_star_ver = 71; + cfg.ion_beam.beta_star_hor = 610; + cfg.ion_beam.beta_star_ver = 55; + cfg.electron_beam.beta_star_hor = 780; + cfg.electron_beam.beta_star_ver = 71; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 26 * nm; - cfg.hadron_beam.rms_emittance_ver = 2.3 * nm; - cfg.lepton_beam.rms_emittance_hor = 20 * nm; - cfg.lepton_beam.rms_emittance_ver = 1.8 * nm; + cfg.ion_beam.rms_emittance_hor = 26 * nm; + cfg.ion_beam.rms_emittance_ver = 2.3 * nm; + cfg.electron_beam.rms_emittance_hor = 20 * nm; + cfg.electron_beam.rms_emittance_ver = 1.8 * nm; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 7 * cm; - cfg.lepton_beam.rms_bunch_length = 0.7 * cm; + cfg.ion_beam.rms_bunch_length = 7 * cm; + cfg.electron_beam.rms_bunch_length = 0.7 * cm; return cfg; } @@ -405,30 +405,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip6_hidiv_100x10() { cfg.crossing_angle_hor = 25e-3; // Crossing angle in horizontal plane [rad] cfg.crossing_angle_ver = 100e-6; // Crossing angle in vertical plane [rad] - cfg.hadron_beam.beta_crab_hor = 500000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 500000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 220e-6; - cfg.hadron_beam.divergence_ver = 220e-6; - cfg.lepton_beam.divergence_hor = 145e-6; - cfg.lepton_beam.divergence_ver = 105e-6; + cfg.ion_beam.divergence_hor = 220e-6; + cfg.ion_beam.divergence_ver = 220e-6; + cfg.electron_beam.divergence_hor = 145e-6; + cfg.electron_beam.divergence_ver = 105e-6; // Beam beta star [mm] - cfg.hadron_beam.beta_star_hor = 630; - cfg.hadron_beam.beta_star_ver = 57; - cfg.lepton_beam.beta_star_hor = 960; - cfg.lepton_beam.beta_star_ver = 120; + cfg.ion_beam.beta_star_hor = 630; + cfg.ion_beam.beta_star_ver = 57; + cfg.electron_beam.beta_star_hor = 960; + cfg.electron_beam.beta_star_ver = 120; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 30 * nm; - cfg.hadron_beam.rms_emittance_ver = 2.7 * nm; - cfg.lepton_beam.rms_emittance_hor = 20 * nm; - cfg.lepton_beam.rms_emittance_ver = 1.3 * nm; + cfg.ion_beam.rms_emittance_hor = 30 * nm; + cfg.ion_beam.rms_emittance_ver = 2.7 * nm; + cfg.electron_beam.rms_emittance_hor = 20 * nm; + cfg.electron_beam.rms_emittance_ver = 1.3 * nm; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 7 * cm; - cfg.lepton_beam.rms_bunch_length = 0.7 * cm; + cfg.ion_beam.rms_bunch_length = 7 * cm; + cfg.electron_beam.rms_bunch_length = 0.7 * cm; return cfg; } @@ -440,30 +440,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip6_hidiv_275x10() { cfg.crossing_angle_hor = 25e-3; // Crossing angle in horizontal plane [rad] cfg.crossing_angle_ver = 100e-6; // Crossing angle in vertical plane [rad] - cfg.hadron_beam.beta_crab_hor = 1300000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 1300000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 119e-6; - cfg.hadron_beam.divergence_ver = 119e-6; - cfg.lepton_beam.divergence_hor = 211e-6; - cfg.lepton_beam.divergence_ver = 152e-6; + cfg.ion_beam.divergence_hor = 119e-6; + cfg.ion_beam.divergence_ver = 119e-6; + cfg.electron_beam.divergence_hor = 211e-6; + cfg.electron_beam.divergence_ver = 152e-6; // Beam beta star [mm] - cfg.hadron_beam.beta_star_hor = 800; - cfg.hadron_beam.beta_star_ver = 72; - cfg.lepton_beam.beta_star_hor = 450; - cfg.lepton_beam.beta_star_ver = 56; + cfg.ion_beam.beta_star_hor = 800; + cfg.ion_beam.beta_star_ver = 72; + cfg.electron_beam.beta_star_hor = 450; + cfg.electron_beam.beta_star_ver = 56; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 11.3 * nm; - cfg.hadron_beam.rms_emittance_ver = 1 * nm; - cfg.lepton_beam.rms_emittance_hor = 20 * nm; - cfg.lepton_beam.rms_emittance_ver = 1.3 * nm; + cfg.ion_beam.rms_emittance_hor = 11.3 * nm; + cfg.ion_beam.rms_emittance_ver = 1 * nm; + cfg.electron_beam.rms_emittance_hor = 20 * nm; + cfg.electron_beam.rms_emittance_ver = 1.3 * nm; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 6 * cm; - cfg.lepton_beam.rms_bunch_length = 0.7 * cm; + cfg.ion_beam.rms_bunch_length = 6 * cm; + cfg.electron_beam.rms_bunch_length = 0.7 * cm; return cfg; } @@ -475,30 +475,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip6_hidiv_275x18() { cfg.crossing_angle_hor = 25e-3; // Crossing angle in horizontal plane [rad] cfg.crossing_angle_ver = 100e-6; // Crossing angle in vertical plane [rad] - cfg.hadron_beam.beta_crab_hor = 1300000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 1300000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 150e-6; - cfg.hadron_beam.divergence_ver = 150e-6; - cfg.lepton_beam.divergence_hor = 202e-6; - cfg.lepton_beam.divergence_ver = 187e-6; + cfg.ion_beam.divergence_hor = 150e-6; + cfg.ion_beam.divergence_ver = 150e-6; + cfg.electron_beam.divergence_hor = 202e-6; + cfg.electron_beam.divergence_ver = 187e-6; // Beam beta star [mm] - cfg.hadron_beam.beta_star_hor = 800; - cfg.hadron_beam.beta_star_ver = 71; - cfg.lepton_beam.beta_star_hor = 590; - cfg.lepton_beam.beta_star_ver = 57; + cfg.ion_beam.beta_star_hor = 800; + cfg.ion_beam.beta_star_ver = 71; + cfg.electron_beam.beta_star_hor = 590; + cfg.electron_beam.beta_star_ver = 57; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 18e-6; - cfg.hadron_beam.rms_emittance_ver = 1.6e-6; - cfg.lepton_beam.rms_emittance_hor = 24e-6; - cfg.lepton_beam.rms_emittance_ver = 2e-6; + cfg.ion_beam.rms_emittance_hor = 18e-6; + cfg.ion_beam.rms_emittance_ver = 1.6e-6; + cfg.electron_beam.rms_emittance_hor = 24e-6; + cfg.electron_beam.rms_emittance_ver = 2e-6; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 6 * cm; - cfg.lepton_beam.rms_bunch_length = 0.9 * cm; + cfg.ion_beam.rms_bunch_length = 6 * cm; + cfg.electron_beam.rms_bunch_length = 0.9 * cm; return cfg; } @@ -512,30 +512,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip8_eau_110x18() { cfg.crossing_angle_hor = -35e-3; // Crossing angle in horizontal plane [rad] cfg.crossing_angle_ver = 0; // Crossing angle in vertical plane [rad] - cfg.hadron_beam.beta_crab_hor = 500000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 500000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 218e-6; - cfg.hadron_beam.divergence_ver = 379e-6; - cfg.lepton_beam.divergence_hor = 101e-6; - cfg.lepton_beam.divergence_ver = 37e-6; + cfg.ion_beam.divergence_hor = 218e-6; + cfg.ion_beam.divergence_ver = 379e-6; + cfg.electron_beam.divergence_hor = 101e-6; + cfg.electron_beam.divergence_ver = 37e-6; // Beam beta star [mm] - cfg.hadron_beam.beta_star_hor = 910; - cfg.hadron_beam.beta_star_ver = 40; - cfg.lepton_beam.beta_star_hor = 1960; - cfg.lepton_beam.beta_star_ver = 410; + cfg.ion_beam.beta_star_hor = 910; + cfg.ion_beam.beta_star_ver = 40; + cfg.electron_beam.beta_star_hor = 1960; + cfg.electron_beam.beta_star_ver = 410; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 43.2 * nm; - cfg.hadron_beam.rms_emittance_ver = 5.8 * nm; - cfg.lepton_beam.rms_emittance_hor = 20 * nm; - cfg.lepton_beam.rms_emittance_ver = 0.6 * nm; + cfg.ion_beam.rms_emittance_hor = 43.2 * nm; + cfg.ion_beam.rms_emittance_ver = 5.8 * nm; + cfg.electron_beam.rms_emittance_hor = 20 * nm; + cfg.electron_beam.rms_emittance_ver = 0.6 * nm; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 7 * cm; - cfg.lepton_beam.rms_bunch_length = 0.9 * cm; + cfg.ion_beam.rms_bunch_length = 7 * cm; + cfg.electron_beam.rms_bunch_length = 0.9 * cm; return cfg; } @@ -547,30 +547,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip8_eau_110x10() { cfg.crossing_angle_hor = -35e-3; // Crossing angle in horizontal plane [rad] cfg.crossing_angle_ver = 0; // Crossing angle in vertical plane [rad] - cfg.hadron_beam.beta_crab_hor = 500000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 500000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 216e-6; - cfg.hadron_beam.divergence_ver = 274e-6; - cfg.lepton_beam.divergence_hor = 102e-6; - cfg.lepton_beam.divergence_ver = 92e-6; + cfg.ion_beam.divergence_hor = 216e-6; + cfg.ion_beam.divergence_ver = 274e-6; + cfg.electron_beam.divergence_hor = 102e-6; + cfg.electron_beam.divergence_ver = 92e-6; // Beam beta star [mm] [mm] - cfg.hadron_beam.beta_star_hor = 910; - cfg.hadron_beam.beta_star_ver = 40; - cfg.lepton_beam.beta_star_hor = 1930; - cfg.lepton_beam.beta_star_ver = 120; + cfg.ion_beam.beta_star_hor = 910; + cfg.ion_beam.beta_star_ver = 40; + cfg.electron_beam.beta_star_hor = 1930; + cfg.electron_beam.beta_star_ver = 120; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 42.3 * nm; - cfg.hadron_beam.rms_emittance_ver = 3 * nm; - cfg.lepton_beam.rms_emittance_hor = 20 * nm; - cfg.lepton_beam.rms_emittance_ver = 1 * nm; + cfg.ion_beam.rms_emittance_hor = 42.3 * nm; + cfg.ion_beam.rms_emittance_ver = 3 * nm; + cfg.electron_beam.rms_emittance_hor = 20 * nm; + cfg.electron_beam.rms_emittance_ver = 1 * nm; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 7 * cm; - cfg.lepton_beam.rms_bunch_length = 0.7 * cm; + cfg.ion_beam.rms_bunch_length = 7 * cm; + cfg.electron_beam.rms_bunch_length = 0.7 * cm; return cfg; } @@ -582,30 +582,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip8_eau_110x5() { cfg.crossing_angle_hor = -35e-3; // Crossing angle in horizontal plane [rad] cfg.crossing_angle_ver = 0; // Crossing angle in vertical plane [rad] - cfg.hadron_beam.beta_crab_hor = 500000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 500000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 215e-6; - cfg.hadron_beam.divergence_ver = 275e-6; - cfg.lepton_beam.divergence_hor = 102e-6; - cfg.lepton_beam.divergence_ver = 185e-6; + cfg.ion_beam.divergence_hor = 215e-6; + cfg.ion_beam.divergence_ver = 275e-6; + cfg.electron_beam.divergence_hor = 102e-6; + cfg.electron_beam.divergence_ver = 185e-6; // Beam beta star [mm] - cfg.hadron_beam.beta_star_hor = 910; - cfg.hadron_beam.beta_star_ver = 40; - cfg.lepton_beam.beta_star_hor = 1930; - cfg.lepton_beam.beta_star_ver = 60; + cfg.ion_beam.beta_star_hor = 910; + cfg.ion_beam.beta_star_ver = 40; + cfg.electron_beam.beta_star_hor = 1930; + cfg.electron_beam.beta_star_ver = 60; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 42.3 * nm; - cfg.hadron_beam.rms_emittance_ver = 3 * nm; - cfg.lepton_beam.rms_emittance_hor = 20 * nm; - cfg.lepton_beam.rms_emittance_ver = 2 * nm; + cfg.ion_beam.rms_emittance_hor = 42.3 * nm; + cfg.ion_beam.rms_emittance_ver = 3 * nm; + cfg.electron_beam.rms_emittance_hor = 20 * nm; + cfg.electron_beam.rms_emittance_ver = 2 * nm; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 7 * cm; - cfg.lepton_beam.rms_bunch_length = 0.7 * cm; + cfg.ion_beam.rms_bunch_length = 7 * cm; + cfg.electron_beam.rms_bunch_length = 0.7 * cm; return cfg; } @@ -619,30 +619,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip8_eau_41x5() { //βcrabm1300/500/200beta function at crab cavity, - cfg.hadron_beam.beta_crab_hor = 200000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 200000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 275e-6; - cfg.hadron_beam.divergence_ver = 377e-6; - cfg.lepton_beam.divergence_hor = 81e-6; - cfg.lepton_beam.divergence_ver = 136e-6; + cfg.ion_beam.divergence_hor = 275e-6; + cfg.ion_beam.divergence_ver = 377e-6; + cfg.electron_beam.divergence_hor = 81e-6; + cfg.electron_beam.divergence_ver = 136e-6; // Beam beta star [mm] - cfg.hadron_beam.beta_star_hor = 900; - cfg.hadron_beam.beta_star_ver = 40; - cfg.lepton_beam.beta_star_hor = 3070; - cfg.lepton_beam.beta_star_ver = 110; + cfg.ion_beam.beta_star_hor = 900; + cfg.ion_beam.beta_star_ver = 40; + cfg.electron_beam.beta_star_hor = 3070; + cfg.electron_beam.beta_star_ver = 110; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 68.1 * nm; - cfg.hadron_beam.rms_emittance_ver = 5.7 * nm; - cfg.lepton_beam.rms_emittance_hor = 20 * nm; - cfg.lepton_beam.rms_emittance_ver = 2 * nm; + cfg.ion_beam.rms_emittance_hor = 68.1 * nm; + cfg.ion_beam.rms_emittance_ver = 5.7 * nm; + cfg.electron_beam.rms_emittance_hor = 20 * nm; + cfg.electron_beam.rms_emittance_ver = 2 * nm; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 11.6 * cm; - cfg.lepton_beam.rms_bunch_length = 0.7 * cm; + cfg.ion_beam.rms_bunch_length = 11.6 * cm; + cfg.electron_beam.rms_bunch_length = 0.7 * cm; return cfg; } @@ -653,30 +653,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip8_hiacc_41x5() { cfg.crossing_angle_hor = -35e-3; // Crossing angle in horizontal plane [rad] cfg.crossing_angle_ver = 0; // Crossing angle in vertical plane [rad] - cfg.hadron_beam.beta_crab_hor = 200000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 200000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 220e-6; - cfg.hadron_beam.divergence_ver = 380e-6; - cfg.lepton_beam.divergence_hor = 101e-6; - cfg.lepton_beam.divergence_ver = 129e-6; + cfg.ion_beam.divergence_hor = 220e-6; + cfg.ion_beam.divergence_ver = 380e-6; + cfg.electron_beam.divergence_hor = 101e-6; + cfg.electron_beam.divergence_ver = 129e-6; // Beam beta star [mm] - cfg.hadron_beam.beta_star_hor = 900; - cfg.hadron_beam.beta_star_ver = 71; - cfg.lepton_beam.beta_star_hor = 1960; - cfg.lepton_beam.beta_star_ver = 210; + cfg.ion_beam.beta_star_hor = 900; + cfg.ion_beam.beta_star_ver = 71; + cfg.electron_beam.beta_star_hor = 1960; + cfg.electron_beam.beta_star_ver = 210; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 44 * nm; - cfg.hadron_beam.rms_emittance_ver = 10 * nm; - cfg.lepton_beam.rms_emittance_hor = 20 * nm; - cfg.lepton_beam.rms_emittance_ver = 3.5 * nm; + cfg.ion_beam.rms_emittance_hor = 44 * nm; + cfg.ion_beam.rms_emittance_ver = 10 * nm; + cfg.electron_beam.rms_emittance_hor = 20 * nm; + cfg.electron_beam.rms_emittance_ver = 3.5 * nm; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 7.5 * cm; - cfg.lepton_beam.rms_bunch_length = 0.7 * cm; + cfg.ion_beam.rms_bunch_length = 7.5 * cm; + cfg.electron_beam.rms_bunch_length = 0.7 * cm; return cfg; } @@ -687,30 +687,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip8_hiacc_100x5() { cfg.crossing_angle_hor = -35e-3; // Crossing angle in horizontal plane [rad] cfg.crossing_angle_ver = 0; // Crossing angle in vertical plane [rad] - cfg.hadron_beam.beta_crab_hor = 500000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 500000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 180e-6; - cfg.hadron_beam.divergence_ver = 180e-6; - cfg.lepton_beam.divergence_hor = 140e-6; - cfg.lepton_beam.divergence_ver = 140e-6; + cfg.ion_beam.divergence_hor = 180e-6; + cfg.ion_beam.divergence_ver = 180e-6; + cfg.electron_beam.divergence_hor = 140e-6; + cfg.electron_beam.divergence_ver = 140e-6; // Beam beta star [mm] - cfg.hadron_beam.beta_star_hor = 800; - cfg.hadron_beam.beta_star_ver = 72; - cfg.lepton_beam.beta_star_hor = 1030; - cfg.lepton_beam.beta_star_ver = 92; + cfg.ion_beam.beta_star_hor = 800; + cfg.ion_beam.beta_star_ver = 72; + cfg.electron_beam.beta_star_hor = 1030; + cfg.electron_beam.beta_star_ver = 92; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 26 * nm; - cfg.hadron_beam.rms_emittance_ver = 2.3 * nm; - cfg.lepton_beam.rms_emittance_hor = 20 * nm; - cfg.lepton_beam.rms_emittance_ver = 1.8 * nm; + cfg.ion_beam.rms_emittance_hor = 26 * nm; + cfg.ion_beam.rms_emittance_ver = 2.3 * nm; + cfg.electron_beam.rms_emittance_hor = 20 * nm; + cfg.electron_beam.rms_emittance_ver = 1.8 * nm; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 7 * cm; - cfg.lepton_beam.rms_bunch_length = 0.7 * cm; + cfg.ion_beam.rms_bunch_length = 7 * cm; + cfg.electron_beam.rms_bunch_length = 0.7 * cm; return cfg; } @@ -721,30 +721,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip8_hiacc_100x10() { cfg.crossing_angle_hor = -35e-3; // Crossing angle in horizontal plane [rad] cfg.crossing_angle_ver = 0; // Crossing angle in vertical plane [rad] - cfg.hadron_beam.beta_crab_hor = 500000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 500000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 180e-6; - cfg.hadron_beam.divergence_ver = 180e-6; - cfg.lepton_beam.divergence_hor = 118e-6; - cfg.lepton_beam.divergence_ver = 86e-6; + cfg.ion_beam.divergence_hor = 180e-6; + cfg.ion_beam.divergence_ver = 180e-6; + cfg.electron_beam.divergence_hor = 118e-6; + cfg.electron_beam.divergence_ver = 86e-6; // Beam beta star [mm] - cfg.hadron_beam.beta_star_hor = 940; - cfg.hadron_beam.beta_star_ver = 85; - cfg.lepton_beam.beta_star_hor = 1430; - cfg.lepton_beam.beta_star_ver = 180; + cfg.ion_beam.beta_star_hor = 940; + cfg.ion_beam.beta_star_ver = 85; + cfg.electron_beam.beta_star_hor = 1430; + cfg.electron_beam.beta_star_ver = 180; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 30 * nm; - cfg.hadron_beam.rms_emittance_ver = 2.7 * nm; - cfg.lepton_beam.rms_emittance_hor = 20 * nm; - cfg.lepton_beam.rms_emittance_ver = 1.3 * nm; + cfg.ion_beam.rms_emittance_hor = 30 * nm; + cfg.ion_beam.rms_emittance_ver = 2.7 * nm; + cfg.electron_beam.rms_emittance_hor = 20 * nm; + cfg.electron_beam.rms_emittance_ver = 1.3 * nm; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 7 * cm; - cfg.lepton_beam.rms_bunch_length = 0.7 * cm; + cfg.ion_beam.rms_bunch_length = 7 * cm; + cfg.electron_beam.rms_bunch_length = 0.7 * cm; return cfg; } @@ -755,30 +755,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip8_hiacc_275x10() { cfg.crossing_angle_hor = -35e-3; // Crossing angle in horizontal plane [rad] cfg.crossing_angle_ver = 0; // Crossing angle in vertical plane [rad] - cfg.hadron_beam.beta_crab_hor = 1300000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 1300000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 65e-6; - cfg.hadron_beam.divergence_ver = 65e-6; - cfg.lepton_beam.divergence_hor = 116e-6; - cfg.lepton_beam.divergence_ver = 84e-6; + cfg.ion_beam.divergence_hor = 65e-6; + cfg.ion_beam.divergence_ver = 65e-6; + cfg.electron_beam.divergence_hor = 116e-6; + cfg.electron_beam.divergence_ver = 84e-6; // Beam beta star [mm] - cfg.hadron_beam.beta_star_hor = 2650; - cfg.hadron_beam.beta_star_ver = 240; - cfg.lepton_beam.beta_star_hor = 1490; - cfg.lepton_beam.beta_star_ver = 190; + cfg.ion_beam.beta_star_hor = 2650; + cfg.ion_beam.beta_star_ver = 240; + cfg.electron_beam.beta_star_hor = 1490; + cfg.electron_beam.beta_star_ver = 190; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 11 * nm; - cfg.hadron_beam.rms_emittance_ver = 1 * nm; - cfg.lepton_beam.rms_emittance_hor = 20 * nm; - cfg.lepton_beam.rms_emittance_ver = 1.3 * nm; + cfg.ion_beam.rms_emittance_hor = 11 * nm; + cfg.ion_beam.rms_emittance_ver = 1 * nm; + cfg.electron_beam.rms_emittance_hor = 20 * nm; + cfg.electron_beam.rms_emittance_ver = 1.3 * nm; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 6 * cm; - cfg.lepton_beam.rms_bunch_length = 0.7 * cm; + cfg.ion_beam.rms_bunch_length = 6 * cm; + cfg.electron_beam.rms_bunch_length = 0.7 * cm; return cfg; } @@ -789,30 +789,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip8_hiacc_275x18() { cfg.crossing_angle_hor = -35e-3; // Crossing angle in horizontal plane [rad] cfg.crossing_angle_ver = 0; // Crossing angle in vertical plane [rad] - cfg.hadron_beam.beta_crab_hor = 1300000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 1300000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 65e-6; - cfg.hadron_beam.divergence_ver = 65e-6; - cfg.lepton_beam.divergence_hor = 89e-6; - cfg.lepton_beam.divergence_ver = 82e-6; + cfg.ion_beam.divergence_hor = 65e-6; + cfg.ion_beam.divergence_ver = 65e-6; + cfg.electron_beam.divergence_hor = 89e-6; + cfg.electron_beam.divergence_ver = 82e-6; // Beam beta star [mm] - cfg.hadron_beam.beta_star_hor = 4170; - cfg.hadron_beam.beta_star_ver = 380; - cfg.lepton_beam.beta_star_hor = 3060; - cfg.lepton_beam.beta_star_ver = 300; + cfg.ion_beam.beta_star_hor = 4170; + cfg.ion_beam.beta_star_ver = 380; + cfg.electron_beam.beta_star_hor = 3060; + cfg.electron_beam.beta_star_ver = 300; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 17.6 * nm; - cfg.hadron_beam.rms_emittance_ver = 1.6 * nm; - cfg.lepton_beam.rms_emittance_hor = 24 * nm; - cfg.lepton_beam.rms_emittance_ver = 2 * nm; + cfg.ion_beam.rms_emittance_hor = 17.6 * nm; + cfg.ion_beam.rms_emittance_ver = 1.6 * nm; + cfg.electron_beam.rms_emittance_hor = 24 * nm; + cfg.electron_beam.rms_emittance_ver = 2 * nm; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 6 * cm; - cfg.lepton_beam.rms_bunch_length = 0.9 * cm; + cfg.ion_beam.rms_bunch_length = 6 * cm; + cfg.electron_beam.rms_bunch_length = 0.9 * cm; return cfg; } @@ -824,30 +824,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip8_hidiv_41x5() { cfg.crossing_angle_hor = -35e-3; // Crossing angle in horizontal plane [rad] cfg.crossing_angle_ver = 0; // Crossing angle in vertical plane [rad] - cfg.hadron_beam.beta_crab_hor = 200000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 200000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 220e-6; - cfg.hadron_beam.divergence_ver = 380e-6; - cfg.lepton_beam.divergence_hor = 101e-6; - cfg.lepton_beam.divergence_ver = 129e-6; + cfg.ion_beam.divergence_hor = 220e-6; + cfg.ion_beam.divergence_ver = 380e-6; + cfg.electron_beam.divergence_hor = 101e-6; + cfg.electron_beam.divergence_ver = 129e-6; // Beam beta star [mm] - cfg.hadron_beam.beta_star_hor = 900; - cfg.hadron_beam.beta_star_ver = 71; - cfg.lepton_beam.beta_star_hor = 1960; - cfg.lepton_beam.beta_star_ver = 210; + cfg.ion_beam.beta_star_hor = 900; + cfg.ion_beam.beta_star_ver = 71; + cfg.electron_beam.beta_star_hor = 1960; + cfg.electron_beam.beta_star_ver = 210; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 44 * nm; - cfg.hadron_beam.rms_emittance_ver = 10 * nm; - cfg.lepton_beam.rms_emittance_hor = 20 * nm; - cfg.lepton_beam.rms_emittance_ver = 3.5 * nm; + cfg.ion_beam.rms_emittance_hor = 44 * nm; + cfg.ion_beam.rms_emittance_ver = 10 * nm; + cfg.electron_beam.rms_emittance_hor = 20 * nm; + cfg.electron_beam.rms_emittance_ver = 3.5 * nm; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 7.5 * cm; - cfg.lepton_beam.rms_bunch_length = 0.7 * cm; + cfg.ion_beam.rms_bunch_length = 7.5 * cm; + cfg.electron_beam.rms_bunch_length = 0.7 * cm; return cfg; } @@ -858,30 +858,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip8_hidiv_100x5() { cfg.crossing_angle_hor = -35e-3; // Crossing angle in horizontal plane [rad] cfg.crossing_angle_ver = 0; // Crossing angle in vertical plane [rad] - cfg.hadron_beam.beta_crab_hor = 500000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 500000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 206e-6; - cfg.hadron_beam.divergence_ver = 206e-6; - cfg.lepton_beam.divergence_hor = 160e-6; - cfg.lepton_beam.divergence_ver = 160e-6; + cfg.ion_beam.divergence_hor = 206e-6; + cfg.ion_beam.divergence_ver = 206e-6; + cfg.electron_beam.divergence_hor = 160e-6; + cfg.electron_beam.divergence_ver = 160e-6; // Beam beta star [mm] - cfg.hadron_beam.beta_star_hor = 610; - cfg.hadron_beam.beta_star_ver = 55; - cfg.lepton_beam.beta_star_hor = 780; - cfg.lepton_beam.beta_star_ver = 71; + cfg.ion_beam.beta_star_hor = 610; + cfg.ion_beam.beta_star_ver = 55; + cfg.electron_beam.beta_star_hor = 780; + cfg.electron_beam.beta_star_ver = 71; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 26 * nm; - cfg.hadron_beam.rms_emittance_ver = 2.3 * nm; - cfg.lepton_beam.rms_emittance_hor = 20 * nm; - cfg.lepton_beam.rms_emittance_ver = 1.8 * nm; + cfg.ion_beam.rms_emittance_hor = 26 * nm; + cfg.ion_beam.rms_emittance_ver = 2.3 * nm; + cfg.electron_beam.rms_emittance_hor = 20 * nm; + cfg.electron_beam.rms_emittance_ver = 1.8 * nm; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 7 * cm; - cfg.lepton_beam.rms_bunch_length = 0.7 * cm; + cfg.ion_beam.rms_bunch_length = 7 * cm; + cfg.electron_beam.rms_bunch_length = 0.7 * cm; return cfg; } @@ -892,30 +892,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip8_hidiv_100x10() { cfg.crossing_angle_hor = -35e-3; // Crossing angle in horizontal plane [rad] cfg.crossing_angle_ver = 0; // Crossing angle in vertical plane [rad] - cfg.hadron_beam.beta_crab_hor = 500000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 500000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 220e-6; - cfg.hadron_beam.divergence_ver = 220e-6; - cfg.lepton_beam.divergence_hor = 145e-6; - cfg.lepton_beam.divergence_ver = 105e-6; + cfg.ion_beam.divergence_hor = 220e-6; + cfg.ion_beam.divergence_ver = 220e-6; + cfg.electron_beam.divergence_hor = 145e-6; + cfg.electron_beam.divergence_ver = 105e-6; // Beam beta star [mm] - cfg.hadron_beam.beta_star_hor = 630; - cfg.hadron_beam.beta_star_ver = 57; - cfg.lepton_beam.beta_star_hor = 960; - cfg.lepton_beam.beta_star_ver = 120; + cfg.ion_beam.beta_star_hor = 630; + cfg.ion_beam.beta_star_ver = 57; + cfg.electron_beam.beta_star_hor = 960; + cfg.electron_beam.beta_star_ver = 120; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 30 * nm; - cfg.hadron_beam.rms_emittance_ver = 2.7 * nm; - cfg.lepton_beam.rms_emittance_hor = 20 * nm; - cfg.lepton_beam.rms_emittance_ver = 1.3 * nm; + cfg.ion_beam.rms_emittance_hor = 30 * nm; + cfg.ion_beam.rms_emittance_ver = 2.7 * nm; + cfg.electron_beam.rms_emittance_hor = 20 * nm; + cfg.electron_beam.rms_emittance_ver = 1.3 * nm; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 7 * cm; - cfg.lepton_beam.rms_bunch_length = 0.7 * cm; + cfg.ion_beam.rms_bunch_length = 7 * cm; + cfg.electron_beam.rms_bunch_length = 0.7 * cm; return cfg; } @@ -926,30 +926,30 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip8_hidiv_275x10() { cfg.crossing_angle_hor = -35e-3; // Crossing angle in horizontal plane [rad] cfg.crossing_angle_ver = 0; // Crossing angle in vertical plane [rad] - cfg.hadron_beam.beta_crab_hor = 1300000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 1300000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 119e-6; - cfg.hadron_beam.divergence_ver = 119e-6; - cfg.lepton_beam.divergence_hor = 211e-6; - cfg.lepton_beam.divergence_ver = 152e-6; + cfg.ion_beam.divergence_hor = 119e-6; + cfg.ion_beam.divergence_ver = 119e-6; + cfg.electron_beam.divergence_hor = 211e-6; + cfg.electron_beam.divergence_ver = 152e-6; // Beam beta star [mm] - cfg.hadron_beam.beta_star_hor = 800; - cfg.hadron_beam.beta_star_ver = 72; - cfg.lepton_beam.beta_star_hor = 450; - cfg.lepton_beam.beta_star_ver = 56; + cfg.ion_beam.beta_star_hor = 800; + cfg.ion_beam.beta_star_ver = 72; + cfg.electron_beam.beta_star_hor = 450; + cfg.electron_beam.beta_star_ver = 56; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 11.3 * nm; - cfg.hadron_beam.rms_emittance_ver = 1 * nm; - cfg.lepton_beam.rms_emittance_hor = 20 * nm; - cfg.lepton_beam.rms_emittance_ver = 1.3 * nm; + cfg.ion_beam.rms_emittance_hor = 11.3 * nm; + cfg.ion_beam.rms_emittance_ver = 1 * nm; + cfg.electron_beam.rms_emittance_hor = 20 * nm; + cfg.electron_beam.rms_emittance_ver = 1.3 * nm; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 6 * cm; - cfg.lepton_beam.rms_bunch_length = 0.7 * cm; + cfg.ion_beam.rms_bunch_length = 6 * cm; + cfg.electron_beam.rms_bunch_length = 0.7 * cm; return cfg; } @@ -960,133 +960,143 @@ ab::AfterburnerConfig ab::EicConfigurator::preset_ip8_hidiv_275x18() { cfg.crossing_angle_hor = -35e-3; // Crossing angle in horizontal plane [rad] cfg.crossing_angle_ver = 0; // Crossing angle in vertical plane [rad] - cfg.hadron_beam.beta_crab_hor = 1300000.0; - cfg.lepton_beam.beta_crab_hor = 150000.0; + cfg.ion_beam.beta_crab_hor = 1300000.0; + cfg.electron_beam.beta_crab_hor = 150000.0; // Beam divergence - cfg.hadron_beam.divergence_hor = 150e-6; - cfg.hadron_beam.divergence_ver = 150e-6; - cfg.lepton_beam.divergence_hor = 202e-6; - cfg.lepton_beam.divergence_ver = 187e-6; + cfg.ion_beam.divergence_hor = 150e-6; + cfg.ion_beam.divergence_ver = 150e-6; + cfg.electron_beam.divergence_hor = 202e-6; + cfg.electron_beam.divergence_ver = 187e-6; // Beam beta star [mm] - cfg.hadron_beam.beta_star_hor = 800; - cfg.hadron_beam.beta_star_ver = 71; - cfg.lepton_beam.beta_star_hor = 590; - cfg.lepton_beam.beta_star_ver = 57; + cfg.ion_beam.beta_star_hor = 800; + cfg.ion_beam.beta_star_ver = 71; + cfg.electron_beam.beta_star_hor = 590; + cfg.electron_beam.beta_star_ver = 57; // RMS emittance - cfg.hadron_beam.rms_emittance_hor = 18e-6; - cfg.hadron_beam.rms_emittance_ver = 1.6e-6; - cfg.lepton_beam.rms_emittance_hor = 24e-6; - cfg.lepton_beam.rms_emittance_ver = 2e-6; + cfg.ion_beam.rms_emittance_hor = 18e-6; + cfg.ion_beam.rms_emittance_ver = 1.6e-6; + cfg.electron_beam.rms_emittance_hor = 24e-6; + cfg.electron_beam.rms_emittance_ver = 2e-6; // RMS bunch length - cfg.hadron_beam.rms_bunch_length = 6 * cm; - cfg.lepton_beam.rms_bunch_length = 0.9 * cm; + cfg.ion_beam.rms_bunch_length = 6 * cm; + cfg.electron_beam.rms_bunch_length = 0.9 * cm; return cfg; } -ab::AfterburnerConfig ab::EicConfigurator::config(double hadron_energy, double lepton_energy, ab::EicBeamPresets beam_preset) { +ab::AfterburnerConfig ab::EicConfigurator::config(HepMC3::ConstGenParticlePtr ion, HepMC3::ConstGenParticlePtr electron, ab::EicBeamPresets beam_preset) { using namespace std; - int had_e = (int)round(hadron_energy); - int lep_e = (int)round(lepton_energy); + float ion_energy = ion->momentum().e(); + float electron_energy = electron->momentum().e(); + + int ion_e = 0; + int electron_e = 0; // Approximate energies so it tolerate some spread - if(hadron_energy > 270 && hadron_energy < 280) had_e = 275; - if(hadron_energy > 105 && hadron_energy < 115) had_e = 110; - if(hadron_energy > 95 && hadron_energy < 105) had_e = 100; - if(hadron_energy > 37 && hadron_energy < 44) had_e = 41; + if(ion_energy > 270 && ion_energy < 280) ion_e = 275; + if(ion_energy > 105 && ion_energy < 115) ion_e = 110; + if(ion_energy > 95 && ion_energy < 105) ion_e = 100; + if(ion_energy > 37 && ion_energy < 44) ion_e = 41; - if(lepton_energy > 15 && lepton_energy < 21) lep_e = 18; - if(lepton_energy > 7 && lepton_energy < 13) lep_e = 10; - if(lepton_energy > 3 && lepton_energy < 7) lep_e = 5; + if(electron_energy > 15 && electron_energy < 21) electron_e = 18; + if(electron_energy > 7 && electron_energy < 13) electron_e = 10; + if(electron_energy > 3 && electron_energy < 7) electron_e = 5; - if(had_e != 275 && had_e!= 110 && had_e != 100 && had_e!=41) { - cerr << (int)had_e << " is not a valid Hadron Beam Energy!!" << endl; + if(ion_e != 275 && ion_e!= 110 && ion_e != 100 && ion_e!=41) { + cerr << (int)ion_e << " is not a valid Ion Beam Energy!!" << endl; cerr << "Valid Energies are 275, 110, 100, and 41" << endl; throw std::invalid_argument("Ion energy setting is incorrect"); } - if(lep_e != 18 && lep_e != 10 && lep_e!=5) { - cout << (int) lep_e << " is not a valid Lepton Beam Energy!!" << endl; + if(electron_e != 18 && electron_e != 10 && electron_e!=5) { + cout << (int) electron_e << " is not a valid Electron Beam Energy!!" << endl; cout << "Valid Energies are 18, 10, and 5" << endl; - throw std::invalid_argument("Lepton energy setting is incorrect"); + throw std::invalid_argument("Electron energy setting is incorrect"); } - return config(static_cast(had_e), static_cast(lep_e), beam_preset); + ab::AfterburnerConfig cfg = config(static_cast(ion_e), static_cast(electron_e), beam_preset); + cfg.ion_beam.energy = ion_e; + cfg.electron_beam.energy = electron_e; + + cfg.ion_beam.pdg = ion->pid(); + cfg.electron_beam.pdg = electron->pid(); + + return cfg; } -ab::AfterburnerConfig ab::EicConfigurator::config(ab::EicBeamEnergies hadron, ab::EicBeamEnergies lepton, ab::EicBeamPresets beam_preset) { +ab::AfterburnerConfig ab::EicConfigurator::config(ab::EicBeamEnergies ion, ab::EicBeamEnergies electron, ab::EicBeamPresets beam_preset) { using namespace std; // Ensure Beam Energies Correspond to Those Presented in CDR - if(hadron != EicBeamEnergies::E275GeV && hadron != EicBeamEnergies::E110GeV && hadron != EicBeamEnergies::E100GeV && hadron != EicBeamEnergies::E41GeV) { - cerr << (int)hadron << " is not a valid Hadron Beam Energy!!" << endl; + if(ion != EicBeamEnergies::E275GeV && ion != EicBeamEnergies::E110GeV && ion != EicBeamEnergies::E100GeV && ion != EicBeamEnergies::E41GeV) { + cerr << (int)ion << " is not a valid Ion Beam Energy!!" << endl; cerr << "Valid Energies are 275, 110, 100, and 41" << endl; - throw std::invalid_argument("Hadron energy setting is incorrect"); + throw std::invalid_argument("Ion energy setting is incorrect"); } - if(lepton != EicBeamEnergies::E18GeV && lepton != EicBeamEnergies::E10GeV && lepton != EicBeamEnergies::E5GeV) { - cout << (int) lepton << " is not a valid Lepton Beam Energy!!" << endl; + if(electron != EicBeamEnergies::E18GeV && electron != EicBeamEnergies::E10GeV && electron != EicBeamEnergies::E5GeV) { + cout << (int) electron << " is not a valid Electron Beam Energy!!" << endl; cout << "Valid Energies are 18, 10, and 5" << endl; - throw std::invalid_argument("Lepton energy setting is incorrect"); + throw std::invalid_argument("Electron energy setting is incorrect"); } // High Divergence setting if(beam_preset == EicBeamPresets::Ip6HighDivergence) { - if(hadron == EicBeamEnergies::E275GeV && lepton == EicBeamEnergies::E18GeV) return preset_ip6_hidiv_275x18(); - if(hadron == EicBeamEnergies::E275GeV && lepton == EicBeamEnergies::E10GeV) return preset_ip6_hidiv_275x10(); - if(hadron == EicBeamEnergies::E100GeV && lepton == EicBeamEnergies::E10GeV) return preset_ip6_hidiv_100x10(); - if(hadron == EicBeamEnergies::E100GeV && lepton == EicBeamEnergies::E5GeV) return preset_ip6_hidiv_100x5(); - if(hadron == EicBeamEnergies::E41GeV && lepton == EicBeamEnergies::E5GeV) return preset_ip6_hidiv_41x5(); + if(ion == EicBeamEnergies::E275GeV && electron == EicBeamEnergies::E18GeV) return preset_ip6_hidiv_275x18(); + if(ion == EicBeamEnergies::E275GeV && electron == EicBeamEnergies::E10GeV) return preset_ip6_hidiv_275x10(); + if(ion == EicBeamEnergies::E100GeV && electron == EicBeamEnergies::E10GeV) return preset_ip6_hidiv_100x10(); + if(ion == EicBeamEnergies::E100GeV && electron == EicBeamEnergies::E5GeV) return preset_ip6_hidiv_100x5(); + if(ion == EicBeamEnergies::E41GeV && electron == EicBeamEnergies::E5GeV) return preset_ip6_hidiv_41x5(); } // High acceptance settings if(beam_preset == EicBeamPresets::Ip6HighAcceptance) { - if(hadron == EicBeamEnergies::E275GeV && lepton == EicBeamEnergies::E18GeV) return preset_ip6_hiacc_275x18(); - if(hadron == EicBeamEnergies::E275GeV && lepton == EicBeamEnergies::E10GeV) return preset_ip6_hiacc_275x10(); - if(hadron == EicBeamEnergies::E100GeV && lepton == EicBeamEnergies::E10GeV) return preset_ip6_hiacc_100x10(); - if(hadron == EicBeamEnergies::E100GeV && lepton == EicBeamEnergies::E5GeV) return preset_ip6_hiacc_100x5(); - if(hadron == EicBeamEnergies::E41GeV && lepton == EicBeamEnergies::E5GeV) return preset_ip6_hiacc_41x5(); + if(ion == EicBeamEnergies::E275GeV && electron == EicBeamEnergies::E18GeV) return preset_ip6_hiacc_275x18(); + if(ion == EicBeamEnergies::E275GeV && electron == EicBeamEnergies::E10GeV) return preset_ip6_hiacc_275x10(); + if(ion == EicBeamEnergies::E100GeV && electron == EicBeamEnergies::E10GeV) return preset_ip6_hiacc_100x10(); + if(ion == EicBeamEnergies::E100GeV && electron == EicBeamEnergies::E5GeV) return preset_ip6_hiacc_100x5(); + if(ion == EicBeamEnergies::E41GeV && electron == EicBeamEnergies::E5GeV) return preset_ip6_hiacc_41x5(); } if(beam_preset == EicBeamPresets::Ip6ElectronAurum) { - if(hadron == EicBeamEnergies::E110GeV && lepton == EicBeamEnergies::E18GeV) return preset_ip6_eau_110x18(); - if(hadron == EicBeamEnergies::E110GeV && lepton == EicBeamEnergies::E10GeV) return preset_ip6_eau_110x10(); - if(hadron == EicBeamEnergies::E110GeV && lepton == EicBeamEnergies::E5GeV) return preset_ip6_eau_110x5(); - if(hadron == EicBeamEnergies::E41GeV && lepton == EicBeamEnergies::E5GeV) return preset_ip6_eau_41x5(); + if(ion == EicBeamEnergies::E110GeV && electron == EicBeamEnergies::E18GeV) return preset_ip6_eau_110x18(); + if(ion == EicBeamEnergies::E110GeV && electron == EicBeamEnergies::E10GeV) return preset_ip6_eau_110x10(); + if(ion == EicBeamEnergies::E110GeV && electron == EicBeamEnergies::E5GeV) return preset_ip6_eau_110x5(); + if(ion == EicBeamEnergies::E41GeV && electron == EicBeamEnergies::E5GeV) return preset_ip6_eau_41x5(); } // High Divergence setting if(beam_preset == EicBeamPresets::Ip8HighDivergence) { - if(hadron == EicBeamEnergies::E275GeV && lepton == EicBeamEnergies::E18GeV) return preset_ip8_hidiv_275x18(); - if(hadron == EicBeamEnergies::E275GeV && lepton == EicBeamEnergies::E10GeV) return preset_ip8_hidiv_275x10(); - if(hadron == EicBeamEnergies::E100GeV && lepton == EicBeamEnergies::E10GeV) return preset_ip8_hidiv_100x10(); - if(hadron == EicBeamEnergies::E100GeV && lepton == EicBeamEnergies::E5GeV) return preset_ip8_hidiv_100x5(); - if(hadron == EicBeamEnergies::E41GeV && lepton == EicBeamEnergies::E5GeV) return preset_ip8_hidiv_41x5(); + if(ion == EicBeamEnergies::E275GeV && electron == EicBeamEnergies::E18GeV) return preset_ip8_hidiv_275x18(); + if(ion == EicBeamEnergies::E275GeV && electron == EicBeamEnergies::E10GeV) return preset_ip8_hidiv_275x10(); + if(ion == EicBeamEnergies::E100GeV && electron == EicBeamEnergies::E10GeV) return preset_ip8_hidiv_100x10(); + if(ion == EicBeamEnergies::E100GeV && electron == EicBeamEnergies::E5GeV) return preset_ip8_hidiv_100x5(); + if(ion == EicBeamEnergies::E41GeV && electron == EicBeamEnergies::E5GeV) return preset_ip8_hidiv_41x5(); } // High acceptance settings if(beam_preset == EicBeamPresets::Ip8HighAcceptance) { - if(hadron == EicBeamEnergies::E275GeV && lepton == EicBeamEnergies::E18GeV) return preset_ip8_hiacc_275x18(); - if(hadron == EicBeamEnergies::E275GeV && lepton == EicBeamEnergies::E10GeV) return preset_ip8_hiacc_275x10(); - if(hadron == EicBeamEnergies::E100GeV && lepton == EicBeamEnergies::E10GeV) return preset_ip8_hiacc_100x10(); - if(hadron == EicBeamEnergies::E100GeV && lepton == EicBeamEnergies::E5GeV) return preset_ip8_hiacc_100x5(); - if(hadron == EicBeamEnergies::E41GeV && lepton == EicBeamEnergies::E5GeV) return preset_ip8_hiacc_41x5(); + if(ion == EicBeamEnergies::E275GeV && electron == EicBeamEnergies::E18GeV) return preset_ip8_hiacc_275x18(); + if(ion == EicBeamEnergies::E275GeV && electron == EicBeamEnergies::E10GeV) return preset_ip8_hiacc_275x10(); + if(ion == EicBeamEnergies::E100GeV && electron == EicBeamEnergies::E10GeV) return preset_ip8_hiacc_100x10(); + if(ion == EicBeamEnergies::E100GeV && electron == EicBeamEnergies::E5GeV) return preset_ip8_hiacc_100x5(); + if(ion == EicBeamEnergies::E41GeV && electron == EicBeamEnergies::E5GeV) return preset_ip8_hiacc_41x5(); } if(beam_preset == EicBeamPresets::Ip8ElectronAurum) { - if(hadron == EicBeamEnergies::E110GeV && lepton == EicBeamEnergies::E18GeV) return preset_ip8_eau_110x18(); - if(hadron == EicBeamEnergies::E110GeV && lepton == EicBeamEnergies::E10GeV) return preset_ip8_eau_110x10(); - if(hadron == EicBeamEnergies::E110GeV && lepton == EicBeamEnergies::E5GeV) return preset_ip8_eau_110x5(); - if(hadron == EicBeamEnergies::E41GeV && lepton == EicBeamEnergies::E5GeV) return preset_ip8_eau_41x5(); + if(ion == EicBeamEnergies::E110GeV && electron == EicBeamEnergies::E18GeV) return preset_ip8_eau_110x18(); + if(ion == EicBeamEnergies::E110GeV && electron == EicBeamEnergies::E10GeV) return preset_ip8_eau_110x10(); + if(ion == EicBeamEnergies::E110GeV && electron == EicBeamEnergies::E5GeV) return preset_ip8_eau_110x5(); + if(ion == EicBeamEnergies::E41GeV && electron == EicBeamEnergies::E5GeV) return preset_ip8_eau_41x5(); } - cout << (int)lepton << "x" << (int)hadron << " is not a valid energy combination!!" << endl; + cout << (int)electron << "x" << (int)ion << " is not a valid energy combination!!" << endl; cout << "Valid (ep) Combinations are 18x275, 10x275, 10x100, 5x100, and 5x41" << endl; cout << "Valid (eA) Combinations are 18x110, 10x110, 5x110, and 5x41" << endl; throw std::invalid_argument("Ion beams energy combination "); diff --git a/cpp/afterburner/EicConfigurator.hh b/cpp/afterburner/EicConfigurator.hh index 9b4e13b..7e94dd2 100644 --- a/cpp/afterburner/EicConfigurator.hh +++ b/cpp/afterburner/EicConfigurator.hh @@ -2,6 +2,7 @@ #define EICAFTERBURNER_EICCONFIGURATOR_HH #include "AfterburnerConfig.hh" +#include namespace ab { enum class EicBeamPresets { @@ -55,8 +56,8 @@ namespace ab { static AfterburnerConfig preset_ip8_hidiv_275x18(); static AfterburnerConfig from_string(const std::string& name); - static AfterburnerConfig config(double hadron_energy, double lepton_energy, EicBeamPresets beam_preset); - static AfterburnerConfig config(EicBeamEnergies hadron, EicBeamEnergies lepton, EicBeamPresets beam_preset); + static AfterburnerConfig config(HepMC3::ConstGenParticlePtr ion, HepMC3::ConstGenParticlePtr electron, EicBeamPresets beam_preset); + static AfterburnerConfig config(EicBeamEnergies ion, EicBeamEnergies electron, EicBeamPresets beam_preset); private: