src issueshttps://gitlab.psi.ch/OPAL/src/-/issues2017-08-12T18:17:25+02:00https://gitlab.psi.ch/OPAL/src/-/issues/150Add a user definable transverse limit to degrader class2017-08-12T18:17:25+02:00krausAdd a user definable transverse limit to degrader classOPAL 1.6.0krauskraushttps://gitlab.psi.ch/OPAL/src/-/issues/22SBEND3D - Off Momentum beam2023-12-20T13:35:05+01:00adelmannSBEND3D - Off Momentum beam
I have some problems in understanding my result. In bold you can see the two questions I have for you. I will explain you briefly.
The configuration is the following:
- single field map from OPERA
- nominal energy: 185 MeV
- RING def...
I have some problems in understanding my result. In bold you can see the two questions I have for you. I will explain you briefly.
The configuration is the following:
- single field map from OPERA
- nominal energy: 185 MeV
- RING definition + Local Cartesian Offset
- Particle distribution from file
From this configuration, the beam envelope looks reasonable and agrees with COSY-Infinity.
However, the dispersion seems not to be completely suppressed at the end of the beamline. This means that I need to study more the dispersion and the off-momentum beam.
* 1st Analysis: Dispersion function
In the distribution file, I set one particle with 1% momentum shift (py = 1% p0) with respect to the nominal momentum. The tracking of this particle represents the dispersion function. The result is attached (Dispersion-Test1)
* 2nd Analysis: Off-Momentum Beam
The goal is to study the beamline behaviour with a beam that has 5% momentum shift from the nominal value. Then I have prepared a new distribution, where all the particles (except 2 particles) has a momentum shift of 5% (py = 5% p0).
In the OPAL input file, I let 185 MeV as nominal energy (EDES = 0.185), the shift in momentum comes from the beam distribution.
The two not-updated particles are:
1- reference particle: py = 0
2- dispersion function: py = 1% p0
Since the majority of the particles have a different energy, the mean beam energy has been updated to 202 MeV. Has this an influence in the tracking?
At the end of this “off-momentum run”, I displayed again the dispersion function, expecting to get the same result as in the first Analysis. The nominal energy, EDES, (185 MeV) did not change and the field map as well.
Instead I got a completely different trajectory (see Dispersion-Test2).
Which is the best way to perform this kind of analysis?
Thanks for your help
Regards
Valeria
Former #23
- Does SBEND3D use a local coordinate system, relative to the
beginning of the element? If so, how is this coordinate system
defined?
- Is the OPAL manual's description of the LENGTHUNITS correct? When
adding an SBEND3D, the diagnostic output from OPAL specifies the
lengths in both 'm' and 'mm,' it seems one of these is wrong and
confusing. I.e. `zini= -1.0000000000000000e+03 m; zfinal=
1.0000000000000000e+03 mm` for the input file attached.
As a test case, I have tried to propagate a beam through a simple π/6
sector (input files attached). However, the beam travels straight in
the initial direction, indicating to me that my element is either the
wrong size or placed incorrectly relative to the beam. Perhaps you can
shed some light on what I am misunderstanding about how this element
interacts with the global coordinate system.
[generate_fieldmap.py](/uploads/ff562c84c870b355ab03161318241823/generate_fieldmap.py)
[sbend3D_test.in](/uploads/4b28f17596b27c218f1c5e6487fb5d86/sbend3D_test.in)
[testbend.bmap](/uploads/302ca3d3632c4c0787bfde583922f037/testbend.bmap)ext-rogers_cext-rogers_chttps://gitlab.psi.ch/OPAL/src/-/issues/71track-orbit of ID1 and ID2 OPAL-1.6 and master2021-06-10T18:49:09+02:00adelmanntrack-orbit of ID1 and ID2 OPAL-1.6 and masterIn data/track-orbit, the coordinates of ID1 and ID2 are **always** stored.
On the distribution command the user can set ID1 and ID2 by *hand*.
@rizzoglio_v : Please commentIn data/track-orbit, the coordinates of ID1 and ID2 are **always** stored.
On the distribution command the user can set ID1 and ID2 by *hand*.
@rizzoglio_v : Please commentadelmannadelmannhttps://gitlab.psi.ch/OPAL/src/-/issues/67Specification of distributions a la Elegant2020-04-22T11:38:48+02:00krausSpecification of distributions a la ElegantTo generate a distribution that corresponds to Elegant using betax, alphax, betay, alphay, nemittx, nemitty, sigma_s/sigma_t, p, sigma_dp.
J. KnedelTo generate a distribution that corresponds to Elegant using betax, alphax, betay, alphay, nemittx, nemitty, sigma_s/sigma_t, p, sigma_dp.
J. KnedelOPAL 1.9.xhttps://gitlab.psi.ch/OPAL/src/-/issues/66Reimplement boundary geometries, surface emission, multipacting etc in Parall...2021-06-10T18:10:55+02:00krausReimplement boundary geometries, surface emission, multipacting etc in ParallelTTrackerBoundary geometries, surface emission etc isn't ported from version 1.6 and in the near futur this won't be ported.Boundary geometries, surface emission etc isn't ported from version 1.6 and in the near futur this won't be ported.OPAL 1.9.xChuan WangChuan Wanghttps://gitlab.psi.ch/OPAL/src/-/issues/65Quadrupole components of dipoles is missing2021-06-10T18:10:26+02:00krausQuadrupole components of dipoles is missingK1 has been removed from RBEND/SBEND, reimplement it.K1 has been removed from RBEND/SBEND, reimplement it.OPAL 1.9.xhttps://gitlab.psi.ch/OPAL/src/-/issues/56Multi-Slit & PEPPERPOT2018-04-14T13:30:27+02:00adelmannMulti-Slit & PEPPERPOTPEPPERPOT with rectangular slits instead of circles.PEPPERPOT with rectangular slits instead of circles.OPAL 1.9.xkrausadelmannext-edelen_akraushttps://gitlab.psi.ch/OPAL/src/-/issues/53Layout-file (ascii-file with coordinates)2017-08-29T21:42:12+02:00baumgartenchristian.baumgarten@psi.chLayout-file (ascii-file with coordinates)It would be important not only for cross-checks but also for cooperation with engineers, to have the layout (numerical values) from OPAL. Especially useful are the central mechanical coordinates of the quadrupoles and the so-called "vert...It would be important not only for cross-checks but also for cooperation with engineers, to have the layout (numerical values) from OPAL. Especially useful are the central mechanical coordinates of the quadrupoles and the so-called "vertex"-points of dipoles (virtual intersection of the straights). A drawing is nice, but to compare the numerical data using sub-millimeter precision with drawings (or data from survey) is extremely important.OPAL 1.9.xhttps://gitlab.psi.ch/OPAL/src/-/issues/8optPilot is integrated in OPAL2017-10-17T21:18:49+02:00adelmannoptPilot is integrated in OPALOPAL 1.9.xadelmannadelmannhttps://gitlab.psi.ch/OPAL/src/-/issues/6A new FFT solver2017-10-22T15:36:40+02:00adelmannA new FFT solverA new [FFT based solver](http://www.sciencedirect.com/science/article/pii/S0010465515003434) is
available and also integrated into DKSA new [FFT based solver](http://www.sciencedirect.com/science/article/pii/S0010465515003434) is
available and also integrated into DKSOPAL 1.9.xadelmannadelmannhttps://gitlab.psi.ch/OPAL/src/-/issues/169New Material: BoronCarbide2017-10-19T19:30:25+02:00adelmannNew Material: BoronCarbideOPAL Name: BoronCarbide
A : 55.25
Z : 26
rho : 2.48 g/cm^3
X0 : 50.14 g/cm^2
A2 : 3.963
A3 : 6065
A4 : 1243
A5 : 7.782e-03OPAL Name: BoronCarbide
A : 55.25
Z : 26
rho : 2.48 g/cm^3
X0 : 50.14 g/cm^2
A2 : 3.963
A3 : 6065
A4 : 1243
A5 : 7.782e-03OPAL 1.6.1adelmannadelmannhttps://gitlab.psi.ch/OPAL/src/-/issues/170SurfacePhysics in OPAL-Cyc2020-04-22T11:41:42+02:00Valeria RizzoglioSurfacePhysics in OPAL-CycI ran a small test using OPAL-Cyc - RINGDEFINITION with a CCOLLIMATOR. I applied the SURFACEPHYSICS on the CCOLLIMATOR but the Monte Carlo was not performed. The beam colliding with the CCOLLIMATOR was simply lost and not scattered. This...I ran a small test using OPAL-Cyc - RINGDEFINITION with a CCOLLIMATOR. I applied the SURFACEPHYSICS on the CCOLLIMATOR but the Monte Carlo was not performed. The beam colliding with the CCOLLIMATOR was simply lost and not scattered. This is related to the
Issue #149
```
Coll: SURFACEPHYSICS, TYPE="DEGRADER", ENABLERUTHERFORD=TRUE, MATERIAL="GraphiteR6710";
Quad1_BP: CCollimator, XSTART=-1000, XEND=-1000, YSTART=1800, YEND=1810, ZSTART=70, ZEND=170, WIDTH=200.0, SURFACEPHYSICS=Coll;
```
I tried to change TYPE with "COLLIMATOR" and "CCOLLIMATOR", but the results did not change.
Attached the input file and the output.
[MonteCarlo_Cyc.in](/uploads/013bde1e7b0452d5fbbe266d0a7026ed/MonteCarlo_Cyc.in)[TYPE_COLLIMATOR.out](/uploads/a33c60beb640faccc6353c882565d3a8/TYPE_COLLIMATOR.out)
I ran on Merlin with the following settings:
```
1) gcc/5.4.0 3) OPAL/1.6.0 5) root/6.08.02 7) Tcl/8.6.4 9) Python/2.7.12 11) gsl/2.2.1 13) psi-python27/2.2.0
2) openmpi/1.10.4 4) OPAL/1.6 6) openssl/1.0.2j 8) Tk/8.6.4 10) boost/1.62.0
```OPAL 2.0.0adelmannadelmannhttps://gitlab.psi.ch/OPAL/src/-/issues/176no error when missing data file for optimisation2017-11-07T09:28:54+01:00ext-neveu_nno error when missing data file for optimisationWhen trying to run an optimisation problem, if the data file is missing from the directory (i.e. optLinac.data) OPAL quits running, but does not return an error. Please add an error when the data file is missing from the directory.When trying to run an optimisation problem, if the data file is missing from the directory (i.e. optLinac.data) OPAL quits running, but does not return an error. Please add an error when the data file is missing from the directory.krauskraushttps://gitlab.psi.ch/OPAL/src/-/issues/201Stat file dumping in ParallelCyclotronTracker2018-04-09T12:19:50+02:00frey_mStat file dumping in ParallelCyclotronTrackerThis issue is related to the discussion in #196. I'd like to fix the dumping and reference particle in the cyclotron tracker such that it works and gives reasonable results for single as well as multi bunch simulations. My idea is to wri...This issue is related to the discussion in #196. I'd like to fix the dumping and reference particle in the cyclotron tracker such that it works and gives reasonable results for single as well as multi bunch simulations. My idea is to write a stat-file per bunch. What do you think?OPAL 1.9.xfrey_mfrey_mhttps://gitlab.psi.ch/OPAL/src/-/issues/209Compiling OPAL using OPAL package2020-04-22T11:42:20+02:00krausCompiling OPAL using OPAL packageIn the past it was possible to build OPAL using the OPAL package downloaded from the wiki (then it was still on trac not gitlab). Furthermore there was a description on the wiki how this can be done.
Currently I face the problem that I'...In the past it was possible to build OPAL using the OPAL package downloaded from the wiki (then it was still on trac not gitlab). Furthermore there was a description on the wiki how this can be done.
Currently I face the problem that I'd like to build OPAL on the servers of Helmholtz-Zentrum Berlin. They use a version of a Linux distro that is outdated (several years old). Modules that provide newer versions such as at PSI are, as far as I know, not supported. That means I would have to build a lot of tools (gcc, cmake, openmpi and possibly many more) before I could build OPAL.
With the current package, OPAL-1.6.1-3, building OPAL isn't supported. Among others cmake and mpicxx/mpicc are missing.
I would propose to reenable this feature since it lowers the barrier to build and develop OPAL. This applies especially to those that aren't yet used to build software from source.gselladelmanngsellhttps://gitlab.psi.ch/OPAL/src/-/issues/225SCAN option adapted from OPTIMIZE command2018-06-22T11:11:14+02:00snuverink_jjochem.snuverink@psi.chSCAN option adapted from OPTIMIZE commandFrom a discussion in runOPAL#7 with @rizzoglio_v suggested by @adelmann. The optimiser mechanism of running with a master core that spawns several opal jobs can be adapted to run a scan through a parameter list. Compared to the scan opti...From a discussion in runOPAL#7 with @rizzoglio_v suggested by @adelmann. The optimiser mechanism of running with a master core that spawns several opal jobs can be adapted to run a scan through a parameter list. Compared to the scan option of runOPAL, an advantage is a single job in a batch system, and possibly better grouping of results.
E.g.
```
dv0: DVAR, VARIABLE="P0", LOWERBOUND=-10.0, UPPERBOUND=0.0, STEP = 0.5;
dv1: DVAR, VARIABLE="P1", LOWERBOUND=-10.0, UPPERBOUND=0.0, STEP = 1.0;
SCAN, INPUT="tmpl/model.tmpl",
OUTPUT="model",
OUTDIR="results",
DVARS = {dv0, dv1},
NUM_MASTERS=1,
NUM_COWORKERS=8,
SIMTMPDIR="tmp",
TEMPLATEDIR="tmpl",
FIELDMAPDIR="fieldmaps";
```
cc: @frey_mfrey_mfrey_mhttps://gitlab.psi.ch/OPAL/src/-/issues/228Restart optimizer from generation file2019-02-23T10:03:25+01:00frey_mRestart optimizer from generation file@snuverink_j and I discussed that it would be a nice feature of restarting the optimizer from a generation file. If the user put the generation number too low, this feature would help to continue computation instead of starting from scra...@snuverink_j and I discussed that it would be a nice feature of restarting the optimizer from a generation file. If the user put the generation number too low, this feature would help to continue computation instead of starting from scratch.frey_mfrey_mhttps://gitlab.psi.ch/OPAL/src/-/issues/231Add z coordinate to stat file2018-07-11T16:57:17+02:00snuverink_jjochem.snuverink@psi.chAdd z coordinate to stat fileProposal from @winklehner_d and @ext-bershanska_a:
Add the z coordinate of the reference particle to the stat file (seems like only s is given, which probably stems from the mismatch between OPAL-T and OPAL-cycl coordinate systems).Proposal from @winklehner_d and @ext-bershanska_a:
Add the z coordinate of the reference particle to the stat file (seems like only s is given, which probably stems from the mismatch between OPAL-T and OPAL-cycl coordinate systems).snuverink_jjochem.snuverink@psi.chsnuverink_jjochem.snuverink@psi.chhttps://gitlab.psi.ch/OPAL/src/-/issues/232Add argument DISTRIBUTIONDIR to Optimizer and Sample Command2018-07-30T08:36:17+02:00snuverink_jjochem.snuverink@psi.chAdd argument DISTRIBUTIONDIR to Optimizer and Sample CommandFrom @ext-bershanska_a: "It would be nice to add OPTIMIZER attribute for distribution directory (like for runOPAL.py)"From @ext-bershanska_a: "It would be nice to add OPTIMIZER attribute for distribution directory (like for runOPAL.py)"frey_mfrey_mhttps://gitlab.psi.ch/OPAL/src/-/issues/236Arbitrary reference point for hypervolume calculation2018-08-02T17:06:51+02:00snuverink_jjochem.snuverink@psi.chArbitrary reference point for hypervolume calculationAs discussed in #235: "the ability to set an arbitrary point would also be nice, but has no priority"As discussed in #235: "the ability to set an arbitrary point would also be nice, but has no priority"snuverink_jjochem.snuverink@psi.chsnuverink_jjochem.snuverink@psi.chhttps://gitlab.psi.ch/OPAL/src/-/issues/237Pixmap image as input for collimator2018-09-22T17:14:37+02:00krausPixmap image as input for collimatorLet the users specify a black and white image that describes the hole of the collimator. An example of a black and white image is attached.
As input file format Portable Bitmap is suggested since a parser is relatively simple to implem...Let the users specify a black and white image that describes the hole of the collimator. An example of a black and white image is attached.
As input file format Portable Bitmap is suggested since a parser is relatively simple to implement and we'll avoid to rely on yet another library.
The simplest way to implement this is to extend the FlexibleCollimator and use one rectangle for each black pixel. However this isn't ideal because the number of rectangles can be big. Since we use a quadtree the performance may not be so bad. We'll have to test it.
Substantially more effort is needed if we try to minimize the number of rectangles by clustering pixels.
Submitted by @ext-roussel_r
![test_mask](/uploads/d4371d755495d590a39af25c65b93a0f/test_mask.png)krauskraushttps://gitlab.psi.ch/OPAL/src/-/issues/238Extend language for FlexibleCollimator2018-08-13T15:59:16+02:00krausExtend language for FlexibleCollimatorAdd additional commands such as
- [x] polygon
- [x] difference
- [x] intersection
- [x] trigonmetric functions
- [x] simple calculations (multiplication, summation, subtraction)
- [ ] 3D operations and shapesAdd additional commands such as
- [x] polygon
- [x] difference
- [x] intersection
- [x] trigonmetric functions
- [x] simple calculations (multiplication, summation, subtraction)
- [ ] 3D operations and shapeskrauskraushttps://gitlab.psi.ch/OPAL/src/-/issues/239Remove requirement of data file for SAMPLER and OPTIMIZER2020-06-22T09:42:35+02:00adelmannRemove requirement of data file for SAMPLER and OPTIMIZERWe still use the runOPAL.py scheme with template / data file. However the design variables could be easily looked up in the dictionary or we invent new types: DvarReal etc.
[Edit: this has been moved to a separate issue, see #249! If we...We still use the runOPAL.py scheme with template / data file. However the design variables could be easily looked up in the dictionary or we invent new types: DvarReal etc.
[Edit: this has been moved to a separate issue, see #249! If we could define quantities of interest (a la optimizer) and write them to the json file lengthly post processing would be avoided.]
Edit:
- [x] remove the need for a data file (!288)
- [x] write a json file containing the values of the DVARs and objectives (#249)OPAL 2.4.0frey_mfrey_mhttps://gitlab.psi.ch/OPAL/src/-/issues/245Re-enable Slice tracker2020-04-23T11:01:30+02:00krausRe-enable Slice trackerThe ParallelSliceTracker was disabled since it relied heavily on ParallelTTracker which has been reimplemented with 3D placement of the elements.The ParallelSliceTracker was disabled since it relied heavily on ParallelTTracker which has been reimplemented with 3D placement of the elements.krauskraushttps://gitlab.psi.ch/OPAL/src/-/issues/249Objectives for Sampler2018-12-06T11:13:03+01:00krausObjectives for SamplerThe user should be able to define quantities of interest (a la optimizer) which are written to the json file. This avoids lengthy post processing of the stat files of all runs.The user should be able to define quantities of interest (a la optimizer) which are written to the json file. This avoids lengthy post processing of the stat files of all runs.krauskraushttps://gitlab.psi.ch/OPAL/src/-/issues/251Allow optimizer and sampler runs to restart from given h5 file2019-02-25T08:43:02+01:00krausAllow optimizer and sampler runs to restart from given h5 fileRestart currently doesn't work for runs when launched from the optimizer / sampler. This feature should be relatively easy to implement. Reported by M. Abo-Bakr.Restart currently doesn't work for runs when launched from the optimizer / sampler. This feature should be relatively easy to implement. Reported by M. Abo-Bakr.krausfrey_mkraushttps://gitlab.psi.ch/OPAL/src/-/issues/257GA interface is appending new generation output to new json file, rather than...2019-07-04T17:15:48+02:00ext-edelen_aGA interface is appending new generation output to new json file, rather than having one generation output per json fileaccording to the input file:
```
INITIALPOPULATION=100,
MAXGENERATIONS=2,
NUM_MASTERS=1,
NUM_COWORKERS=8,
SIMTMPDIR="tmp",
TEMPLATEDIR="tmpl",
FIELDMAPDIR="fieldm...according to the input file:
```
INITIALPOPULATION=100,
MAXGENERATIONS=2,
NUM_MASTERS=1,
NUM_COWORKERS=8,
SIMTMPDIR="tmp",
TEMPLATEDIR="tmpl",
FIELDMAPDIR="fieldmaps",
NUM_IND_GEN=100,
GENE_MUTATION_PROBABILITY=0.8,
MUTATION_PROBABILITY=0.8,
RECOMBINATION_PROBABILITY=0.2;
```
It seems like this should be 200 samples (100 in population x 2 generations)
However, using mldb to convert to pk reports 300 samples:
```
OPAL ML Database Generator
Found 2 json files.
Write ML-Database 1nCGA-small-test.pk
xDim = 6 -> ['G0', 'G1', 'K0', 'K1', 'PH0', 'PH1']
yDim = 7 -> ['DE', 'EMITS', 'EMITX', 'EMITY', 'RMSS', 'RMSX', 'RMSY']
generations = 2
Data points = 300
```
Looking at the json files:
- 1_1nCGA_0.json has 100 individuals
- 2_1nCGA_0.json has 200 individuals
And if we compare the first individual in each case, they are both the same:
```
"G0": 63.7949,
"G1": 17.5757,
"K0": 474.876,
"K1": 185.284,
"PH0": -8.94274,
"PH1": -2.44182
```
So it looks like new data is just being appended to the new json file in subsequent generations rather than creating a new file for each generation with only that generation's data in it.kraussnuverink_jjochem.snuverink@psi.chkraushttps://gitlab.psi.ch/OPAL/src/-/issues/265Sampler: Delete files that are not used2018-12-02T17:06:44+01:00frey_mSampler: Delete files that are not usedWhen running the SAMPLER, it might run thounds of OPAL simulations. In each directory we will then have files like *.lbal, *.out, etc., that might not be needed. Since on clusters you sometimes / normally have quotas on number of files, ...When running the SAMPLER, it might run thounds of OPAL simulations. In each directory we will then have files like *.lbal, *.out, etc., that might not be needed. Since on clusters you sometimes / normally have quotas on number of files, I think it would make sense that we add an option to the SAMPLER command where we can specify which files to delete directly after one simulation.frey_mfrey_mhttps://gitlab.psi.ch/OPAL/src/-/issues/268Store halo in STAT-file2018-12-11T09:00:09+01:00frey_mStore halo in STAT-fileIt would be nice storing the halo per step in the stat file.It would be nice storing the halo per step in the stat file.frey_mfrey_mhttps://gitlab.psi.ch/OPAL/src/-/issues/269Halo evaluation as objective2018-12-11T09:14:40+01:00frey_mHalo evaluation as objectiveIt would be nice having a halo evaluation as an objective for the sampler and optimizer. I also think about multi-bunch simulations. We need either the halo written to the stat-file or evaluate it using the H5 file. In case of multi-bunc...It would be nice having a halo evaluation as an objective for the sampler and optimizer. I also think about multi-bunch simulations. We need either the halo written to the stat-file or evaluate it using the H5 file. In case of multi-bunch simulations where particles are assigned to energy bins, we'd need a stat file for every energy bin. Therefore, I think, it's easier to add new objective funtion.
I suggest something like this
```c++
halo(dir, step, bin)
```
where ```dir=x,y,z``` and ```bin``` the energy bin (default: 0).frey_mfrey_mhttps://gitlab.psi.ch/OPAL/src/-/issues/275OPAL-t : Transverse Distribution from Laser Profile (Under Development)2019-12-17T09:33:15+01:00adelmannOPAL-t : Transverse Distribution from Laser Profile (Under Development)What is the status of the Transverse Distribution from Laser Profile ?
How is the h5 file containing the virtual cathode image defined?
Background: there is an interest at LCLS and LCLS-IIWhat is the status of the Transverse Distribution from Laser Profile ?
How is the h5 file containing the virtual cathode image defined?
Background: there is an interest at LCLS and LCLS-IIkrauskraushttps://gitlab.psi.ch/OPAL/src/-/issues/276Specify trim coil range azimuthally2023-02-13T15:50:53+01:00snuverink_jjochem.snuverink@psi.chSpecify trim coil range azimuthallyFeature request from @matlocha_t: add an option to `TRIMCOIL` to specify besides the radial range also the azimuthal range.Feature request from @matlocha_t: add an option to `TRIMCOIL` to specify besides the radial range also the azimuthal range.snuverink_jjochem.snuverink@psi.chsnuverink_jjochem.snuverink@psi.chhttps://gitlab.psi.ch/OPAL/src/-/issues/278add option to load initial population for GA2019-03-15T11:13:52+01:00ext-edelen_aadd option to load initial population for GAWe'd like to be able to specify an initial population to use in the OPAL GA.We'd like to be able to specify an initial population to use in the OPAL GA.krausadelmannfrey_msnuverink_jjochem.snuverink@psi.chkraushttps://gitlab.psi.ch/OPAL/src/-/issues/318Optimizer: Generalizing objectives with sddsVariableAt2019-06-26T16:56:20+02:00frey_mOptimizer: Generalizing objectives with sddsVariableAt### Summary
Currently, the optimizer allows to evaluate an objective in the stat-file with ```sddsVariableAt``` according to ```spos```
only. I'd like to use other quantities as well.### Summary
Currently, the optimizer allows to evaluate an objective in the stat-file with ```sddsVariableAt``` according to ```spos```
only. I'd like to use other quantities as well.frey_mfrey_mhttps://gitlab.psi.ch/OPAL/src/-/issues/343Distinguish bunches in probe2019-07-25T16:45:26+02:00frey_mDistinguish bunches in probe### Summary
It is currently not possible to distinguish single bunches in a probe in case of multi-bunch simulations. Although the ID and turn number are given it is somehow not possible to get a single bunch. Saving the bunch number (an...### Summary
It is currently not possible to distinguish single bunches in a probe in case of multi-bunch simulations. Although the ID and turn number are given it is somehow not possible to get a single bunch. Saving the bunch number (an attribute of `PartBunchBase`) will help to overcome this issue.frey_mfrey_mhttps://gitlab.psi.ch/OPAL/src/-/issues/353Track back in time2019-09-07T18:55:00+02:00adelmannTrack back in time### Summary
We want to track a beam given beam back in time throughout the lattice. This can either be a followup track
or a given/generated distribution.
### Motivation
From measurements or intuition you construct a final phase spac...### Summary
We want to track a beam given beam back in time throughout the lattice. This can either be a followup track
or a given/generated distribution.
### Motivation
From measurements or intuition you construct a final phase space $`P_{final}`$. One can then ask the question how would you generate $`P_{initial}`$ and transport it. By tracking back (maybe using the optimiser) one can
hope to achieve such a goal.
### Approach (so far only for a straight machine ...)
1. The TRACK command is augment with Boolean **TRACKBACK=**
2. In **ParallelTTracker** the double member **arrowOfTime_m** is set to -1 in case of **TRACKBACK=TRUE**
3. In **ParallelTTracker::invertP** itsBunch->P[ ](2) *= arrowOfTime_m and
itsBunch_m->RefPartP_m *= arrowOfTime_m; is set [invertPz](http://amas.web.psi.ch/docs/opal/master-doxygen-new/d0/d39/a01138.html#ad0851e3c7c4947981014d3989560c7e5) (need to update Doxygen)
This is as far as I have implemented it, if I remember how to do the branch/merge stuff :) I will commit.
### To Do
0. All electrostatic elements do not need to be changed
1. Space charge needs to negate its action in all 3 dimensions.
3. RF
4. Make it more general i.e. 3. in Approach above
krausadelmannkraushttps://gitlab.psi.ch/OPAL/src/-/issues/376Feature Request: OPAL Cheat Sheet2020-06-10T08:29:27+02:00bellotti_rFeature Request: OPAL Cheat SheetI think a cheat sheet would be very helpful for people who are new to OPAL. Especially to get an overview about what is possible, and which commands exist without having to go through the wiki section by section. Of course, detailed info...I think a cheat sheet would be very helpful for people who are new to OPAL. Especially to get an overview about what is possible, and which commands exist without having to go through the wiki section by section. Of course, detailed information should still be looked up.
My suggestion is to give a short config snippet for the most common building blocks. [This PDF](https://pandas.pydata.org/Pandas_Cheat_Sheet.pdf) might be a good guideline what I mean.
What do you think?adelmannadelmannhttps://gitlab.psi.ch/OPAL/src/-/issues/379Add phase-space halo parameter to stat and smb file2020-04-22T11:53:50+02:00frey_mAdd phase-space halo parameter to stat and smb fileWe currently write the spatial-profile parameter to the stat file. However, I think, it makes sense to write also the phase-space halo parameter to the file. The formulas are in https://journals.aps.org/prab/abstract/10.1103/PhysRevSTAB....We currently write the spatial-profile parameter to the stat file. However, I think, it makes sense to write also the phase-space halo parameter to the file. The formulas are in https://journals.aps.org/prab/abstract/10.1103/PhysRevSTAB.5.124202frey_mfrey_mhttps://gitlab.psi.ch/OPAL/src/-/issues/402VFFA2019-12-13T15:41:37+01:00ext-rogers_cVFFAImplement analytical Vertical FFA field map in OPAL with fields as per draft note:
[vertical-ffa-note.pdf](/uploads/1010e8589a932e447794df7ea11d0fb0/vertical-ffa-note.pdf)Implement analytical Vertical FFA field map in OPAL with fields as per draft note:
[vertical-ffa-note.pdf](/uploads/1010e8589a932e447794df7ea11d0fb0/vertical-ffa-note.pdf)OPAL-2.2.0ext-rogers_cext-rogers_chttps://gitlab.psi.ch/OPAL/src/-/issues/470New multiGauss distribution2020-02-20T10:32:48+01:00albajacas_aarnau.albajacas@psi.chNew multiGauss distribution### Summary
In the cathode at the Argonne Wakefield Accelerator they have the ability to produce microbunched electron bunches, thanks to a laser beam which has a train of Gaussian pulses.
[Temporal Laser Pulse Shaping for RF Photocatho...### Summary
In the cathode at the Argonne Wakefield Accelerator they have the ability to produce microbunched electron bunches, thanks to a laser beam which has a train of Gaussian pulses.
[Temporal Laser Pulse Shaping for RF Photocathode Guns](https://aip.scitation.org/doi/10.1063/1.3080991)
At the moment there is no OPAL distribution to reproduce this.
Here is an example with 4 Gaussian microbunches separated (peak-to-peak) by 1.26 mm:
```
Dist: DISTRIBUTION, TYPE = MULTIGAUSS,
SIGMAPX = 1e-2, SIGMAPY = 1e-2, SIGMAPZ = 1e-2, // In units of betaGamma
CUTOFFPX = 4.0, CUTOFFPY = 4.0, CUTOFFPZ = 4.0, // In units of SIGMAP
SIGMAR = 340e-6,
SIGMAZ = .9e-3 / 2.355, // FWHM = 2.355 * sigma
CUTOFFLONG = 4.0, // In units of SIGZ
SEPPEAKS = 1.26e-3,
NPEAKS = 4,
EMITTED = FALSE;
```
This is what it looks like:
![distroInject](/uploads/65acbe6003cd1c8336272d98e3ddc5a8/distroInject.png)
In the case where the bunch is emitted, SIGMAPX/Y/Z and CUTOFFPX/Y/Z are omitted, and SIGMAZ and SEPPEAKS are to be given in seconds.OPAL 2.4.0albajacas_aarnau.albajacas@psi.chalbajacas_aarnau.albajacas@psi.chhttps://gitlab.psi.ch/OPAL/src/-/issues/503Add more information to the HDF5 file written by monitors2021-04-05T20:16:16+02:00krausAdd more information to the HDF5 file written by monitors### Summary
Currently the HDF5 file that is written by the monitors provides very limited information (x, y, t, px, py, pz). More information should be added such as the charge and the mass of the particles. Ideally the same information ...### Summary
Currently the HDF5 file that is written by the monitors provides very limited information (x, y, t, px, py, pz). More information should be added such as the charge and the mass of the particles. Ideally the same information as in the phase space file should be added.OPAL 2021.1krauskraushttps://gitlab.psi.ch/OPAL/src/-/issues/516pyopal - specification2022-07-18T10:19:57+02:00ext-rogers_cpyopal - specification### Summary
Specification for pyopal
[2020-04-20_PyOpal.docx](/uploads/7deccec6c3c38595bfcbe9cae0b4b05c/2020-04-20_PyOpal.docx)### Summary
Specification for pyopal
[2020-04-20_PyOpal.docx](/uploads/7deccec6c3c38595bfcbe9cae0b4b05c/2020-04-20_PyOpal.docx)2022.1ext-rogers_cext-rogers_chttps://gitlab.psi.ch/OPAL/src/-/issues/535OPAL-FEL (MITHRA integration)2020-12-01T15:09:02+01:00albajacas_aarnau.albajacas@psi.chOPAL-FEL (MITHRA integration)### Summary
As part of my Master Thesis I am introducing an undulator/wiggler element in OPAL-t.
For this reason I have integrated the full-wave solver for undulators [MITHRA](https://github.com/aryafallahi/mithra).
This full-wave solv...### Summary
As part of my Master Thesis I am introducing an undulator/wiggler element in OPAL-t.
For this reason I have integrated the full-wave solver for undulators [MITHRA](https://github.com/aryafallahi/mithra).
This full-wave solver takes over when the bunch enters the undulator.
* [x] Add to [release notes](https://gitlab.psi.ch/OPAL/src/wikis/ReleaseNotes/ReleaseNotes)
* [x] Verify [coding style](https://gitlab.psi.ch/OPAL/src/wikis/For-Developers/CodingStyle)
* [x] Update documentation (OPAL/documentation/manual#38)
* [x] Add Regression Tests (OPAL/regression-tests#96)
* [x] Add module and flags to `NighltyBuild` (OPAL/regression-tests#99)
* [x] Resolve MR and all its issues (!361)OPAL 2021.1albajacas_aarnau.albajacas@psi.chalbajacas_aarnau.albajacas@psi.chhttps://gitlab.psi.ch/OPAL/src/-/issues/562General elements for electrostatitic and magnetostatic fields2021-06-10T17:47:02+02:00krausGeneral elements for electrostatitic and magnetostatic fields### Summary
Currently not every element can be modeled with a specific element in Opal. Instead one has to use 3D field maps and either a solenoid (only for magneto static fields) or an rf cavity. This isn't very intuitive. Instead we c...### Summary
Currently not every element can be modeled with a specific element in Opal. Instead one has to use 3D field maps and either a solenoid (only for magneto static fields) or an rf cavity. This isn't very intuitive. Instead we could provide "blank" elements for the general case, e.g. GENERALELECTROSTATIC and GENERALMAGNETOSTATIC.https://gitlab.psi.ch/OPAL/src/-/issues/578Place elements relative to origin and orientation of beamline2020-07-24T12:51:42+02:00krausPlace elements relative to origin and orientation of beamlineUntil now, elements that are positioned with X, Y, Z instead of ELEMEDGE were positioned absolutely in the laboratory coordinate system. It would be much more practical if these elements were placed relative to the beamline.
As far as I...Until now, elements that are positioned with X, Y, Z instead of ELEMEDGE were positioned absolutely in the laboratory coordinate system. It would be much more practical if these elements were placed relative to the beamline.
As far as I know positioning with X, Y, Z isn't used by anyone yet.OPAL 2.4.0krauskraushttps://gitlab.psi.ch/OPAL/src/-/issues/579Add option to Source element to make it transparent to backtracking particles.2020-07-23T20:54:11+02:00krausAdd option to Source element to make it transparent to backtracking particles.Add option TRANSPARENT which regulates whether backtracking particles are stopped.Add option TRANSPARENT which regulates whether backtracking particles are stopped.OPAL 2.4.0krauskraushttps://gitlab.psi.ch/OPAL/src/-/issues/606Container support2021-06-10T17:42:42+02:00bellotti_rContainer supportI suggest to provide container images for OPAL. It is quite complicated to build it, and requires running specific scripts in a specific order. On the other hand, pulling (or building) an image is just one command. The system agnostic ap...I suggest to provide container images for OPAL. It is quite complicated to build it, and requires running specific scripts in a specific order. On the other hand, pulling (or building) an image is just one command. The system agnostic approach circumvents problems when clusters provide different versions of the dependencies, or change them.https://gitlab.psi.ch/OPAL/src/-/issues/607Increase C++ Standard to c++172021-07-07T16:32:50+02:00krausIncrease C++ Standard to c++17The current minimal version of gcc (7.3) and clang (9.0) support c++17 (with the only exception of [Matching template template parameters to compatible arguments (p0522r0)](https://wg21.link/p0522r0) in clang).The current minimal version of gcc (7.3) and clang (9.0) support c++17 (with the only exception of [Matching template template parameters to compatible arguments (p0522r0)](https://wg21.link/p0522r0) in clang).OPAL 2021.1gsellgsellhttps://gitlab.psi.ch/OPAL/src/-/issues/634Reviewing physics behind particle matter interaction models2021-04-23T11:25:39+02:00ext-calvo_ppedro.calvo@ciemat.esReviewing physics behind particle matter interaction models- Extend the energy loss calculation and beam scattering for other incoming heavy ions. It is currently only valid for protons
- Add energy loss at very low energy region (1-10 keV) (see ICRU Report 49)
- Document stopping power at Ander...- Extend the energy loss calculation and beam scattering for other incoming heavy ions. It is currently only valid for protons
- Add energy loss at very low energy region (1-10 keV) (see ICRU Report 49)
- Document stopping power at Anderson-Ziegler region
- Update atomic weight of materials according to [database 2019](https://www.qmul.ac.uk/sbcs/iupac/AtWt/) and other [material properties](https://pdg.lbl.gov/2020/AtomicNuclearProperties/)
- Add alpha particle beams
- Review energy threshold for stripper gas interactionsOPAL 2021.1ext-calvo_ppedro.calvo@ciemat.esext-calvo_ppedro.calvo@ciemat.eshttps://gitlab.psi.ch/OPAL/src/-/issues/647Add option to write VTK file2021-04-23T11:25:53+02:00ext-calvo_ppedro.calvo@ciemat.esAdd option to write VTK fileWriting the VTK file of the voxel mesh increases the time consumption. To speed up boundary geometry initialization I propose to add an option to disable VTK files. In addition, as @gsell suggested, VTK files should only be written if th...Writing the VTK file of the voxel mesh increases the time consumption. To speed up boundary geometry initialization I propose to add an option to disable VTK files. In addition, as @gsell suggested, VTK files should only be written if they do not exist or are older than the geometry file.OPAL 2021.1ext-calvo_ppedro.calvo@ciemat.esext-calvo_ppedro.calvo@ciemat.eshttps://gitlab.psi.ch/OPAL/src/-/issues/665Gas stripping for H2+ and deuterons2021-10-14T13:38:47+02:00ext-calvo_ppedro.calvo@ciemat.esGas stripping for H2+ and deuteronsBeam stripping interactions with the residual gas should be extended for `H2P` beams in `AIR` and `DEUTERON` beams.Beam stripping interactions with the residual gas should be extended for `H2P` beams in `AIR` and `DEUTERON` beams.OPAL 2021.1ext-calvo_ppedro.calvo@ciemat.esext-calvo_ppedro.calvo@ciemat.eshttps://gitlab.psi.ch/OPAL/src/-/issues/673Add option to disable deletion of particles when exiting transversally2021-09-07T13:08:13+02:00krausAdd option to disable deletion of particles when exiting transversallyIn Opal-T all particles that exit an element transversally are deleted. With this feature request an option should be added with which the user can disable this behavior per element. This can be used e.g. for alpha magnets.In Opal-T all particles that exit an element transversally are deleted. With this feature request an option should be added with which the user can disable this behavior per element. This can be used e.g. for alpha magnets.2022.1krauskraushttps://gitlab.psi.ch/OPAL/src/-/issues/680Remove interactive mode, replace it with additional help option.2022-02-04T16:05:23+01:00krausRemove interactive mode, replace it with additional help option.The interactive mode is presumably not used by anyone. I propose therefore to remove it and add instead an option to print the help for commands on the command line.
Additionally I noticed that Opal crashes while printing the help messa...The interactive mode is presumably not used by anyone. I propose therefore to remove it and add instead an option to print the help for commands on the command line.
Additionally I noticed that Opal crashes while printing the help messages. The reason is that the type names `predefined string`, `upper case string` and `upper case string array` are longer than 16 characters. However the user doesn't have to know what these types represent, they are simply strings and string arrays respectively.2022.1krauskraushttps://gitlab.psi.ch/OPAL/src/-/issues/681Use ENABLEHDF5 in OPAL-T2022-02-13T11:50:30+01:00krausUse ENABLEHDF5 in OPAL-TThere is an option ENABLEHDF5 which should allow to disable all HDF5 output. This option doesn’t seem to be supported in OPAL-T.There is an option ENABLEHDF5 which should allow to disable all HDF5 output. This option doesn’t seem to be supported in OPAL-T.2022.1krauskraushttps://gitlab.psi.ch/OPAL/src/-/issues/684Beam stripping physics in OPAL-t2022-07-08T10:15:01+02:00ext-calvo_ppedro.calvo@ciemat.esBeam stripping physics in OPAL-tBeam stripping interactions are currently restricted to OPAL-cycl.
`VACUUM` element must be adapted to extend the beam stripping physics algorithm to beam lines in OPAL-t.Beam stripping interactions are currently restricted to OPAL-cycl.
`VACUUM` element must be adapted to extend the beam stripping physics algorithm to beam lines in OPAL-t.2022.1ext-calvo_ppedro.calvo@ciemat.esext-calvo_ppedro.calvo@ciemat.eshttps://gitlab.psi.ch/OPAL/src/-/issues/693Add option to compute percentiles2022-03-08T16:54:12+01:00krausAdd option to compute percentilesThe rms and max bunch size and the normalized emittance of the whole bunch give only an incomplete picture of the actual situation. By computing the 95 (2 sigmas for normal distribution), the 99.7 (3 sigmas) and the 99.99 (4 sigmas) perc...The rms and max bunch size and the normalized emittance of the whole bunch give only an incomplete picture of the actual situation. By computing the 95 (2 sigmas for normal distribution), the 99.7 (3 sigmas) and the 99.99 (4 sigmas) percentiles one can gain more details about the bunch.2022.1krauskraushttps://gitlab.psi.ch/OPAL/src/-/issues/716Remove usage of IPPL:Tenzor class2023-08-23T16:29:38+02:00adelmannRemove usage of IPPL:Tenzor class### Summary
Remove IPPL `AppTypes/Tenzor.h` usage in
- Classic/AbsBeamline/Bend2D.cpp
- Classic/Algorithms/Quaternion.h:class
- Classic/Algorithms/CoordinateSystemTrafo.h
- Classic/Algorithms/Quaternion.cpp
- Classic/Utilities/MSLang.h
...### Summary
Remove IPPL `AppTypes/Tenzor.h` usage in
- Classic/AbsBeamline/Bend2D.cpp
- Classic/Algorithms/Quaternion.h:class
- Classic/Algorithms/CoordinateSystemTrafo.h
- Classic/Algorithms/Quaternion.cpp
- Classic/Utilities/MSLang.h
- Algorithms/ParallelCyclotronTracker.cpp
- Distribution/Distribution.cpp
- Distribution/Distribution.h
`Tenzor` is mostly used as matrix and in the `Classic/Algorithms/Quaternion.cpp`.
Maybe replacing `Quaternion` by Boost could also be an option.2023.1sadr_msadr_mhttps://gitlab.psi.ch/OPAL/src/-/issues/722Asymmetric Enge function for Scaling FFA Magnet2022-09-14T13:27:24+02:00ext-rogers_cAsymmetric Enge function for Scaling FFA Magnet### Summary
Request to add in a new end field model - using an asymmetric enge function - for Scaling FFA magnet.### Summary
Request to add in a new end field model - using an asymmetric enge function - for Scaling FFA magnet.2022.1https://gitlab.psi.ch/OPAL/src/-/issues/729dumping 6D beam matrix at each time steps2022-09-23T12:59:28+02:00ext-piot_pdumping 6D beam matrix at each time steps### Summary
Introduce an option dumpBeamMarix that enable the 21 elements (upper triangle) of the 6D beam (sigma) matrix to be written in the stat file.### Summary
Introduce an option dumpBeamMarix that enable the 21 elements (upper triangle) of the 6D beam (sigma) matrix to be written in the stat file.2022.1ext-piot_pext-piot_phttps://gitlab.psi.ch/OPAL/src/-/issues/737P3M solver2022-09-23T12:59:37+02:00muralikrishnanP3M solver### Summary
Complete the P3M solver initiated by Benjamin Ulmer in his Master's thesis so that it can be used in
scenarios where collisions might be important.### Summary
Complete the P3M solver initiated by Benjamin Ulmer in his Master's thesis so that it can be used in
scenarios where collisions might be important.2022.1muralikrishnanmuralikrishnanhttps://gitlab.psi.ch/OPAL/src/-/issues/745PyOPAL - FFA lattice2023-04-20T16:54:05+02:00ext-rogers_cPyOPAL - FFA lattice### Summary
Implement supporting code to model our current FFA lattice in PyOPAL. That means writing API for following elements:
- ScalingFFAMagnet and EndFieldModels
- DumpEMFields
- LocalCartesianOffset (other offsets?)
- Probe
- Mult...### Summary
Implement supporting code to model our current FFA lattice in PyOPAL. That means writing API for following elements:
- ScalingFFAMagnet and EndFieldModels
- DumpEMFields
- LocalCartesianOffset (other offsets?)
- Probe
- MultipoleT
- VariableRFCavity and TimeDependence plugin
- General consideration of stability/etc
Maybe some other things I forgot.
Also (of course)
- Code
- Test
I will do Documentation in a separate feature when I am more happy with the whole framework.2023.1ext-rogers_cext-rogers_chttps://gitlab.psi.ch/OPAL/src/-/issues/758Quality of life improvements to PyOpal2023-05-05T12:02:53+02:00ext-rogers_cQuality of life improvements to PyOpalFollowing on from #745
Couple of extra "usability" features:
* It should be possible to pass multiple arguments to a "setup" function for PyOpal objects
* If an argument is passed that is not recognised, PyOpal should throw an error. A...Following on from #745
Couple of extra "usability" features:
* It should be possible to pass multiple arguments to a "setup" function for PyOpal objects
* If an argument is passed that is not recognised, PyOpal should throw an error. At the moment PyOpal quietly ignores unrecognised arguments - technically, this is consistent with "normal" python but it is not very nice
* It should be possible to define something as a required argument; if it is undefined, and user tries to use the class in anger (e.g. call to get_field_value) then PyOpal should throw an error.
* It should be possible to make PyOpal run silently (i.e. suppress output) or send output to a file. Bonus points if we can send PyOpal output to sys.stdout!
* In PyOpal/PyCore/Globals.cpp there is a hard coded constant for --processes (3). This should be user defined.2023.1ext-rogers_cext-rogers_chttps://gitlab.psi.ch/OPAL/src/-/issues/764RingDefinition - Beam rotation and Momentum Tolerance2023-05-16T12:15:30+02:00ext-rogers_cRingDefinition - Beam rotation and Momentum Tolerance### Summary
I would like to be able to introduce an arbitrary rotation to beams in RingDefinition, independent of the azimuthal angle at which the ring is injected. At the moment, transverse "kicks" are enabled by `BEAM_PRINIT` but this...### Summary
I would like to be able to introduce an arbitrary rotation to beams in RingDefinition, independent of the azimuthal angle at which the ring is injected. At the moment, transverse "kicks" are enabled by `BEAM_PRINIT` but this does not permit full rotation through 360 degrees.
My use case:
We decided at a recent meeting that for consistency with the ring layout on the ground in the ring we are designing, the ring should start at "12 o'clock" and proceed in a clockwise direction. OPAL-Cycl mode currently supports element placements in clockwise or anticlockwise direction but beam can only proceed in an anti-clockwise direction.2023.1ext-rogers_cext-rogers_chttps://gitlab.psi.ch/OPAL/src/-/issues/765Momentum tolerance in Opal-t2023-10-05T17:49:18+02:00ext-calvo_ppedro.calvo@ciemat.esMomentum tolerance in Opal-tPart of #727
A new parameter `MOMENTUM_TOLERANCE` has recently been introduced to control fractional tolerance to deviations in the distribution compared to the reference data at initialisation. This parameter should be extended to be ...Part of #727
A new parameter `MOMENTUM_TOLERANCE` has recently been introduced to control fractional tolerance to deviations in the distribution compared to the reference data at initialisation. This parameter should be extended to be useful in Opal-t.2023.1ext-calvo_ppedro.calvo@ciemat.esext-calvo_ppedro.calvo@ciemat.eshttps://gitlab.psi.ch/OPAL/src/-/issues/786Unused degrader attributes2023-10-10T16:03:08+02:00ext-calvo_ppedro.calvo@ciemat.esUnused degrader attributesThe attributes of the degrader (`XSIZE` and `YSIZE`) are currently unused. A function should be added to verify that the particles are inside the element employing these attributes according to the [description](http://amas.web.psi.ch/op...The attributes of the degrader (`XSIZE` and `YSIZE`) are currently unused. A function should be added to verify that the particles are inside the element employing these attributes according to the [description](http://amas.web.psi.ch/opal/Documentation/master/#sec.elements.degrader-opal-t).2023.1ext-calvo_ppedro.calvo@ciemat.esext-calvo_ppedro.calvo@ciemat.eshttps://gitlab.psi.ch/OPAL/src/-/issues/793OutputPlane2023-12-20T13:35:05+01:00ext-rogers_cOutputPlaneFor some precision work it is important to have accurate readout of particle positions at a particular plane. In the presence of fields, PROBE function interpolation is not accurate enough.
As registered in Issue #22 it would be useful ...For some precision work it is important to have accurate readout of particle positions at a particular plane. In the presence of fields, PROBE function interpolation is not accurate enough.
As registered in Issue #22 it would be useful to have a probe that can be perpendicular to a reference trajectory (for e.g. calculating dispersions/etc).
To meet these requirements I have implemented a new _PluginElement_ called OutputPlane. Features:
- detects hits using a RK4 stepping routine, iteratively finding correct step size to find the intersection of tracks with the plane and registering a hit at the exact point
- position can be specified in 2D using PROBE-style placement or 3D with a centre and normal vector
- position can be specified to update to be aligned with the position/momentum vector when a particle with user-defined ID crosses the plane.
- rectangular or circular apertures can be specified (maximum distance from PROBE centre to register hits)ext-rogers_cext-rogers_c