Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <random> 7 : #include <vector> 8 : 9 : #include "DataStructures/DataBox/Tag.hpp" 10 : #include "DataStructures/Tensor/TypeAliases.hpp" 11 : #include "Evolution/Particles/MonteCarlo/NeutrinoInteractionTable.hpp" 12 : #include "Evolution/Particles/MonteCarlo/Packet.hpp" 13 : 14 : /// Items related to the evolution of particles 15 : /// Items related to Monte-Carlo radiation transport 16 : /// Tags for MC 17 : namespace Particles::MonteCarlo::Tags { 18 : 19 : /// Simple tag containing the vector of Monte-Carlo 20 : /// packets belonging to an element. 21 1 : struct PacketsOnElement : db::SimpleTag { 22 0 : using type = std::vector<Particles::MonteCarlo::Packet>; 23 : }; 24 : 25 : /// Simple tag containing an approximation of the light 26 : /// crossing time for each cell (the shortest time among 27 : /// all coordinate axis directions). 28 : template <typename DataType> 29 1 : struct CellLightCrossingTime : db::SimpleTag { 30 0 : using type = Scalar<DataType>; 31 : }; 32 : 33 : /// Simple tag storing the random number generator 34 : /// used by Monte-Carlo 35 1 : struct RandomNumberGenerator : db::SimpleTag { 36 0 : using type = std::mt19937; 37 : }; 38 : 39 : /// Simple tag containing the desired energy of 40 : /// packets in low-density regions. The energy 41 : /// can be different for each neutrino species. 42 : template <size_t NeutrinoSpecies> 43 1 : struct DesiredPacketEnergyAtEmission : db::SimpleTag { 44 0 : using type = std::array<DataVector, NeutrinoSpecies>; 45 : }; 46 : 47 : /// Simple tag for the table of neutrino-matter interaction 48 : /// rates (emission, absorption and scattering for each 49 : /// energy bin and neutrino species). 50 : template <size_t EnergyBins, size_t NeutrinoSpecies> 51 1 : struct InteractionRatesTable : db::SimpleTag { 52 0 : using type = 53 : std::unique_ptr<NeutrinoInteractionTable<EnergyBins, NeutrinoSpecies>>; 54 : }; 55 : 56 : } // namespace Particles::MonteCarlo::Tags