|
| PhotonLibraryPropagation (fhicl::ParameterSet const &) |
|
| PhotonLibraryPropagation (PhotonLibraryPropagation const &)=delete |
|
| PhotonLibraryPropagation (PhotonLibraryPropagation &&)=delete |
|
PhotonLibraryPropagation & | operator= (PhotonLibraryPropagation const &)=delete |
|
PhotonLibraryPropagation & | operator= (PhotonLibraryPropagation &&)=delete |
|
| EDProducer (fhicl::ParameterSet const &pset) |
|
template<typename Config > |
| EDProducer (Table< Config > const &config) |
|
std::string | workerType () const |
|
virtual | ~Producer () noexcept |
|
| Producer (fhicl::ParameterSet const &) |
|
| Producer (Producer const &)=delete |
|
| Producer (Producer &&)=delete |
|
Producer & | operator= (Producer const &)=delete |
|
Producer & | operator= (Producer &&)=delete |
|
void | doBeginJob (SharedResources const &resources) |
|
void | doEndJob () |
|
void | doRespondToOpenInputFile (FileBlock const &fb) |
|
void | doRespondToCloseInputFile (FileBlock const &fb) |
|
void | doRespondToOpenOutputFiles (FileBlock const &fb) |
|
void | doRespondToCloseOutputFiles (FileBlock const &fb) |
|
bool | doBeginRun (RunPrincipal &rp, ModuleContext const &mc) |
|
bool | doEndRun (RunPrincipal &rp, ModuleContext const &mc) |
|
bool | doBeginSubRun (SubRunPrincipal &srp, ModuleContext const &mc) |
|
bool | doEndSubRun (SubRunPrincipal &srp, ModuleContext const &mc) |
|
bool | doEvent (EventPrincipal &ep, ModuleContext const &mc, std::atomic< std::size_t > &counts_run, std::atomic< std::size_t > &counts_passed, std::atomic< std::size_t > &counts_failed) |
|
| ~Modifier () noexcept |
|
| Modifier () |
|
| Modifier (Modifier const &)=delete |
|
| Modifier (Modifier &&)=delete |
|
Modifier & | operator= (Modifier const &)=delete |
|
Modifier & | operator= (Modifier &&)=delete |
|
virtual | ~ModuleBase () noexcept |
|
| ModuleBase () |
|
ModuleDescription const & | moduleDescription () const |
|
void | setModuleDescription (ModuleDescription const &) |
|
std::array< std::vector< ProductInfo >, NumBranchTypes > const & | getConsumables () const |
|
void | sortConsumables (std::string const ¤t_process_name) |
|
template<typename T , BranchType BT> |
ViewToken< T > | consumesView (InputTag const &tag) |
|
template<typename T , BranchType BT> |
ViewToken< T > | mayConsumeView (InputTag const &tag) |
|
|
using | ModuleType = EDProducer |
|
using | WorkerType = WorkerT< EDProducer > |
|
template<typename UserConfig , typename KeysToIgnore = void> |
using | Table = Modifier::Table< UserConfig, KeysToIgnore > |
|
template<typename UserConfig , typename UserKeysToIgnore = void> |
using | Table = ProducerTable< UserConfig, detail::ModuleConfig, UserKeysToIgnore > |
|
static void | commitEvent (EventPrincipal &ep, Event &e) |
|
ConsumesCollector & | consumesCollector () |
|
template<typename T , BranchType = InEvent> |
ProductToken< T > | consumes (InputTag const &) |
|
template<typename Element , BranchType = InEvent> |
ViewToken< Element > | consumesView (InputTag const &) |
|
template<typename T , BranchType = InEvent> |
void | consumesMany () |
|
template<typename T , BranchType = InEvent> |
ProductToken< T > | mayConsume (InputTag const &) |
|
template<typename Element , BranchType = InEvent> |
ViewToken< Element > | mayConsumeView (InputTag const &) |
|
template<typename T , BranchType = InEvent> |
void | mayConsumeMany () |
|
Fast simulation of propagating the photons created from SimEnergyDeposits.
This module does a fast simulation of propagating the photons created from SimEnergyDeposits, which is the Geant4 output after each step, to each of the optical detectors. This simulation is done using the PhotonLibrary, which stores the visibilities of each optical channel with respect to each optical voxel in the TPC volume, to avoid propagating single photons using Geant4. At the end of this module a collection of the propagated photons either as sim::SimPhotonsLite
or as sim::SimPhotons
is placed into the art event.
Keep in mind that at this stage the LArG4 main module is not capable of running the full optical simulation, because the necessary code has not yet been written.
In the future when the PhotonLibrary has the propagation time included, it could be possible to enhance sim::SimPhotons
and sim::SimPhotonsLite
to contain the propagation time. At this point the time recorded for the photon is the creation time of the photon.
The steps this module takes are:
- to take
sim::SimEnergyDeposits
produced by larg4Main,
- use Ionisation and Scintillation to calculate the amount of scintillated photons,
- use the PhotonLibrary (visibilities) to determine the amount of visible photons at each optical channel,
- visible photons = the amount of scintillated photons calculated times the visibility at the middle of the Geant4 step for a given optical channel.
- and if
sim::SimPhotonsLite
produced:
- since a
sim::SimPhotonsLite
only keeps a set of times with the number of photons produced at each time for a given OpChannel number:
- for each time (as an integer in [ns]) photons are produced along the Geant4 step (taking into account the rise time and decay time of the fast and slow components of the scintillation process),
- count the amount of photons emitted at that time.
the total amount of visible photons produced during the current Geant4 step equals the sum of counts for each time.
- the total amount of visible photons produced during the current Geant4 step is determined by throwing a random number from a Poisson distribution with a mean of the amount of visible photons calculated above.
and if sim::SimPhotons
produced:
- since a
sim::SimPhotons
keeps a collection of photons (sim::OnePhoton
) for a given OpChannel number:
- each single photon produced by this algorithm is just a copy containing the same information about:
- energy (set to a constant value = 9.7e-6, which is equivalent to a wavelength of 128 nm, it should actually be 126.6 nm!!),
- initial position,
- time (as an integer in [ns]) the photon is produced along the Geant4 Step (taking into account the rise time and decay time of the fast and slow components of the scintillation process),
- the total amount of photon copies produced during the current Geant4 step is determined by throwing a random number from a Poisson distribution with a mean of the amount of visible photons calculated above.
This module should only be run for the fast optical simulation even though it can create sim::SimPhotonsLite
and sim::SimPhotons
as data products. If there is need to create sim::SimPhotons
, there are some considerations you must be aware of. Since the amount of sim::SimPhotons
produced even at low energies and in small geometries quickly exceeds the memory capacity of the job, right now it is actually impossible to produce sim::SimPhotons
for any realistic geometry. A possible way around the problem is to implement a scaling of the produced sim::SimPhotons
, to only produce a fraction of them.
Definition at line 143 of file PhotonLibraryPropagation_module.cc.