Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-27 09:14:58

0001 // lAger: General Purpose l/A-event Generator
0002 // Copyright (C) 2016-2021 Sylvester Joosten <sjoosten@anl.gov>
0003 //
0004 // This file is part of lAger.
0005 //
0006 // lAger is free software: you can redistribute it and/or modify
0007 // it under the terms of the GNU General Public License as published by
0008 // the Free Shoftware Foundation, either version 3 of the License, or
0009 // (at your option) any later version.
0010 //
0011 // lAger is distributed in the hope that it will be useful,
0012 // but WITHOUT ANY WARRANTY; without even the implied warranty of
0013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0014 // GNU General Public License for more details.
0015 //
0016 // You should have received a copy of the GNU General Public License
0017 // along with lAger.  If not, see <https://www.gnu.org/licenses/>.
0018 //
0019 
0020 #ifndef LAGER_GEN_INITIAL_GENERATOR_LOADED
0021 #define LAGER_GEN_INITIAL_GENERATOR_LOADED
0022 
0023 #include <lager/core/factory.hh>
0024 #include <lager/core/generator.hh>
0025 #include <lager/gen/initial/data.hh>
0026 
0027 // =============================================================================
0028 // main include file for beam generators
0029 // =============================================================================
0030 
0031 namespace lager {
0032 namespace initial {
0033 
0034 // =============================================================================
0035 // parent template for beam generators
0036 // =============================================================================
0037 template <class Data, class... Input>
0038 class generator : public lager::generator<Data, Input...> {
0039 public:
0040   using data_type = Data;
0041   using base_type = lager::generator<Data, Input...>;
0042 
0043   static factory<generator, const configuration&, const string_path&,
0044                  std::shared_ptr<TRandom>>
0045       factory_instance;
0046 
0047   generator(std::shared_ptr<TRandom> r) : base_type{std::move(r)} {}
0048 };
0049 
0050 template <class Data, class... Input>
0051 factory<generator<Data, Input...>, const configuration&, const string_path&,
0052         std::shared_ptr<TRandom>>
0053     generator<Data, Input...>::factory_instance;
0054 
0055 // =============================================================================
0056 // beam generator types
0057 // =============================================================================
0058 using vertex_generator = generator<vertex>;
0059 using beam_generator = generator<beam, vertex>;
0060 using target_generator = generator<target, beam>;
0061 using photon_generator = generator<photon, beam, target>;
0062 
0063 } // namespace initial
0064 } // namespace lager
0065 
0066 #endif