Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2024-06-26 07:05:01

0001 #ifndef EICAFTERBURNER_AFTERBURNERCONFIG_HH
0002 #define EICAFTERBURNER_AFTERBURNERCONFIG_HH
0003 
0004 #include <iostream>
0005 #include "Smearer.hh"
0006 
0007 namespace ab {
0008 
0009     struct BeamConfig {
0010 
0011         //! Beam angle divergence in accelerator beam coordinate.
0012         //! 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
0013         //! 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
0014         double divergence_hor = 0;
0015         double divergence_ver = 0;
0016 
0017         //! Central beam angle shift as linear function of longitudinal vertex position, d_shift/dz,
0018         //! which is used to represent leading order effect of crab cavity momentum kick on the beam bunch
0019         //! First element is beamA, in pair of dh/dz, dv/dz. BeamA is aimed to +z direction in the HepMC event generator's coordinate
0020         //! Second element is beamB, in pair of dh/dz, dv/dz. BeamA is aimed to -z direction in the HepMC event generator's coordinate
0021         // double z_shift_ver = 0;
0022         double beta_crab_hor = 0;
0023 
0024         double beta_star_hor = 0;
0025         double beta_star_ver = 0;
0026 
0027         double rms_emittance_hor = 0;
0028         double rms_emittance_ver = 0;
0029         double rms_bunch_length = 0;
0030     };
0031 
0032     struct AfterburnerConfig {
0033 
0034         /**
0035          * Crossing angle in horizontal plane [rad]
0036          */
0037         double crossing_angle_hor = 25e-3;
0038 
0039         /**
0040          * Crossing angle in vertical plane [rad]
0041          */
0042         double crossing_angle_ver = 100e-6;
0043 
0044         unsigned int random_seed = 1;
0045 
0046         // Use beam bunch simulation
0047         bool use_beam_bunch_sim = true;
0048 
0049         /** Smearing function to use for initial vertex  smearing
0050          * (!) These fields relevant only if use_beam_bunch_sim = FALSE
0051          * */
0052         SmearFuncs vertex_smear_func = SmearFuncs::Gauss;
0053 
0054         /** Smearing width (be it Gauss or Flat)
0055          *  (!) These fields relevant only if use_beam_bunch_sim = FALSE
0056          * */
0057         double vertex_smear_width_x = 0;
0058         double vertex_smear_width_y = 0;
0059         double vertex_smear_width_z = 0;
0060         double vertex_smear_width_t = 0;
0061 
0062         /** Vertex permanent shift (added in the beginning) */
0063         double vertex_shift_x = 0;
0064         double vertex_shift_y = 0;
0065         double vertex_shift_z = 0;
0066         double vertex_shift_t = 0;
0067 
0068         /// Beam A (one) configuration
0069         BeamConfig hadron_beam;
0070 
0071         /// Beam B (two) configuration
0072         BeamConfig lepton_beam;
0073     };
0074 }
0075 #endif //EICAFTERBURNER_AFTERBURNERCONFIG_HH