Celeritas is a new Monte Carlo transport code designed to accelerate scientific discovery in high energy physics by improving detector simulation throughput and energy efficiency using GPUs.
NB: This code isn't meant to be integrated yet, but rather serve as a reference point and discussion forum for how optical are going to be implemented.
Overview of contents
OpticalModel: this is the base class for optical physics
OpticalProcess: this is the base class for optical processes. Optical models are uniquely identified with optical processes, so the OpticalProcessImpl template is a helper to define processes from static methods in optical models.
ImportOpticalProcess: like ImportProcess but only has lambda physics tables for imported data
ImportOpticalProcesses: builds and stores ImportOpticalProcesses from raw ImportData
ImportedOpticalProcessAdapter: adapter class used by OpticalProcess to create step limiter grids.
OpticalPhysics.hh: contains structs of data, indices, and grids used by optical processes
OpticalPhysicsParams: register optical model actions in the action registry and builds grid data in OpticalPhysics.hh on both host and device.
GenericGridInserter: helper class to build and insert grids into a collection on host
AbsorptionModel: A sample optical model using this framework
Todo
[ ] Finish adding documentation and cleaning up code
[ ] Ensures it builds
[ ] Add some kind of OpticalProcessBuilder
[ ] Add tests that imported data is built correctly
[ ] Make sure imported optical process macro xs tables are indeed cross sections and not mean free paths / attenuation lengths / etc.
[ ] Add remaining optical processes
[ ] Change execute to use OpticalCoreData etc.
[ ] Connect executors and interactors to Soon's implementations
[ ] Add discrete optical action to select optical actions
NB: This code isn't meant to be integrated yet, but rather serve as a reference point and discussion forum for how optical are going to be implemented.
Overview of contents
OpticalModel
: this is the base class for optical physicsOpticalProcess
: this is the base class for optical processes. Optical models are uniquely identified with optical processes, so theOpticalProcessImpl
template is a helper to define processes from static methods in optical models.ImportOpticalProcess
: likeImportProcess
but only has lambda physics tables for imported dataImportOpticalProcesses
: builds and storesImportOpticalProcess
es from rawImportData
ImportedOpticalProcessAdapter
: adapter class used byOpticalProcess
to create step limiter grids.OpticalPhysics.hh
: contains structs of data, indices, and grids used by optical processesOpticalPhysicsParams
: register optical model actions in the action registry and builds grid data inOpticalPhysics.hh
on both host and device.GenericGridInserter
: helper class to build and insert grids into a collection on hostAbsorptionModel
: A sample optical model using this frameworkTodo
OpticalProcessBuilder
OpticalCoreData
etc.ImportProcessClass
?