Giter Club home page Giter Club logo

openpmd_raytrace_api's Introduction

c++ API for the openPMD ray trace extension {#readme}

This library provides a high-level API in C++ and Python to read and write openPMD files following the raytrace extension. It uses the official openPMD-api at lower level.

Quantities

The list of variables stored in the openPMD file as defined by the extension is reported in the following table:

Variable Comment Units
x,y,z position []
dx,dy,dz direction (normalized velocity)
sx,sy,sz polarization of non-photons
sPolAx, sPolAy, sPolAz, sPolPh s-polarization amplitude and phase of photons
pPolAx, pPolAy, pPolAz, pPolPh p-polarization amplitude of photons
time ray time w.r.t. ray generation [ms]
wavelength [Ang]
weight weight
id unique ID
status Alive or Dead

Dependencies

This package depends on:

If you do not have the openPMD-api installed on your system, this package downloads, compiles and install it for you. But installing it separately is highly advisable.

Compilation and installation

git clone -b devel --depth 1 [email protected]:PaNOSC-ViNYL/openPMD_raytrace_API.git
cd openPMD_raytrace_API/

cmake -S . -B build/
cmake --build build/

# for the documentation
cmake --build build/ --target doc

For testing:

ctest --test-dir  build/openPMDraytrace-prefix/src/openPMDraytrace-build/tests/ --output-on-failure

More information about the usage can be found [here](@ref usage)

To do

  • Make a dedicated set of tests for the C++ API in cpp/tests/

openpmd_raytrace_api's People

Contributors

shervin86 avatar

Watchers

James Cloos avatar Carsten Fortmann-Grote avatar

Forkers

pinkdiamond1

openpmd_raytrace_api's Issues

Maximum number of rays fixed at init

There is one common way in McStas to increase the number of rays during the simulation, which is called SPLIT, it just divides the weight of one ray into a number of rays with identical state but smaller weight. This is usually used late in the instrument, so most rays won't reach a SPLIT statement. It means that for example changing the wavelength simulated, the number of neutrons reaching the SPLIT statement can change wildly, and so can the number of rays reaching the component that saves to openPMD. Even to more rays than originally simulated. So my bet is that it will happen, the question is how to handle it well.

If starting a new file is too much work (completely fair) I think throwing an error would be best, as taking a subset of the simulated rays would provide a wrong overall intensity, which is one of the more important aspects of the simulation.

Originally posted by @mads-bertelsen in #1 (comment)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.