|
|
|||
File indexing completed on 2026-11-07 10:20:32
0001 //------------------------------- -*- C++ -*- -------------------------------// 0002 // Copyright Celeritas contributors: see top-level COPYRIGHT file for details 0003 // SPDX-License-Identifier: (Apache-2.0 OR MIT) 0004 //---------------------------------------------------------------------------// 0005 //! \file larceler/PDFullSimCeler.hh 0006 //! \note This file is an `art` plugin and should only be included by its .cc 0007 //---------------------------------------------------------------------------// 0008 #pragma once 0009 0010 #include <memory> 0011 #include <art/Framework/Core/EDProducer.h> 0012 #include <art/Utilities/ToolConfigTable.h> 0013 0014 #include "corecel/Macros.hh" 0015 #include "celeritas/inp/StandaloneInput.hh" // IWYU pragma: keep 0016 0017 #include "LarStandaloneRunner.hh" 0018 0019 #include "detail/PDFullSimCelerConfig.hh" 0020 0021 namespace sim 0022 { 0023 class SimEnergyDeposit; 0024 class OpDetBacktrackerRecord; 0025 } // namespace sim 0026 0027 namespace celeritas 0028 { 0029 //---------------------------------------------------------------------------// 0030 /*! 0031 * Run optical photons in a standalone simulation. 0032 * 0033 * This plugin implements a replacement for LArSim's \c phot::PDFastSimPAR 0034 * class. It is instantiated by a FHiCL workflow file with a set of 0035 * parameters. It takes a vector of energy-depositing steps and returns a 0036 * vector of detector responses. It is executed after the detector simulation 0037 * module (ionization, recombination, scintillation, etc.) with a vector of 0038 * steps that contain local energy deposition. 0039 * 0040 * The execution happens \em after LArG4 is complete, so it is completely 0041 * independent of the Geant4 run manager and execution. It requires an input 0042 * GDML with: 0043 * - Detector geometry description 0044 * - Bulk optical physics properties (e.g., Rayleigh scattering in argon) 0045 * - Surface properties (e.g., roughness, reflection probability) 0046 * - Detector properties (e.g., sensitive volumes, efficiency multipliers) 0047 * 0048 * \internal 0049 * \par Parameter set definitions 0050 * 0051 * See \c celeritas::detail::PDFullSimCelerConfig . 0052 */ 0053 class PDFullSimCeler final : public art::EDProducer 0054 { 0055 public: 0056 //!@{ 0057 //! \name Type aliases 0058 using Config = detail::PDFullSimCelerConfig; 0059 using Parameters = art::EDProducer::Table<Config>; 0060 ///@} 0061 0062 public: 0063 // Construct with fcl parameters 0064 explicit PDFullSimCeler(Parameters const& p); 0065 CELER_DELETE_COPY_MOVE(PDFullSimCeler); 0066 0067 // Start simulating events 0068 void beginJob() final; 0069 0070 // Simulate a single event 0071 void produce(art::Event&) final; 0072 0073 // Tear down optical simulation library 0074 void endJob() final; 0075 0076 private: 0077 //! Runner input for building in beginJob 0078 LarStandaloneRunner::Input runner_inp_; 0079 //! Identifying tag should usually be set to IonAndScint 0080 art::InputTag sim_tag_; 0081 0082 //! Constructed runner to process an event 0083 std::unique_ptr<LarStandaloneRunner> runner_; 0084 }; 0085 0086 //---------------------------------------------------------------------------// 0087 } // namespace celeritas
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|