Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implementation of full ray-tracing event processing #12

Merged
merged 82 commits into from
Aug 30, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
dab35f5
TRestAxionGeneratorProcess re-implementation (WIP)
jgalan Feb 17, 2022
28a2bff
TRestAxionGeneratorProcess. Fixing header
jgalan Feb 18, 2022
37f4c0e
pipeline/axionGenerator.rml reviewed
jgalan Feb 18, 2022
65ac912
Updated TRestAxionEvent
jgalan Feb 18, 2022
d150aca
Merge branch 'magnetic_field' into event_processing
jgalan Mar 4, 2022
e0ae03e
Merge branch 'generic_optics' into event_processing
jgalan Mar 4, 2022
71fa9b6
Merge branch 'solar_flux' into event_processing
jgalan Mar 4, 2022
e0f452d
Merge branch 'master' into event_processing
jgalan Mar 24, 2022
d694143
Adding first version of TRestAxionEventProcess
jgalan Mar 24, 2022
86c4acf
Placing validation scripts at the proper place
jgalan Mar 25, 2022
c2f0875
TRestAxionFieldPropagationProcess. Cleaning up
jgalan Mar 25, 2022
21ba5bf
TRestAxionEventProcess. Adding metadata members.
jgalan Mar 25, 2022
cfb964c
TRestAxionEvent::IncreasePosition method added.
jgalan Mar 25, 2022
070cc95
TRestAxionFieldPropagationProcess. Removing fAxionEvent already imple…
jgalan Mar 25, 2022
7fcf3f1
TRestAxionFieldPropagationProcess. Removing fAxionEvent already imple…
jgalan Mar 25, 2022
00565a3
Updating axionGenerator.rml
jgalan Mar 25, 2022
a8c7ec1
TRestAxionGeneratorProcess. Fixed uninitialized random pointer
jgalan Mar 25, 2022
0a86463
TRestAxionEvent::RotateXZ,ZX methods added.
jgalan Mar 27, 2022
5d1dabd
TRestAxionEvent::Translate method added
jgalan Mar 27, 2022
a0dad02
TRestAxionEvent. Gamma probability replaced by fBSquared.
jgalan Mar 27, 2022
545cff5
TRestAxionEventProcess. Adding rotation and displacement logic
jgalan Mar 27, 2022
245e6fa
TRestAxionEvent. Adding coherence length
jgalan Mar 27, 2022
13e149c
Fixing a typo
jgalan Mar 27, 2022
9e31c43
TRestAxionEvent::GetDirection updated
jgalan Mar 27, 2022
0006141
TRestAxionEventProcess::Begin/EndOfEventProcess in now virtual
jgalan Mar 27, 2022
664b5fd
TRestAxionEventProcess. Adding debugin output
jgalan Mar 27, 2022
ec493b4
TRestAxionMagneticField::GetTransversalFieldAverage. Fixed a bug.
jgalan Mar 27, 2022
c1d9676
pipeline/magneticField.py added GetTransversalFieldAverage for testing
jgalan Mar 27, 2022
c355ecc
TRestAxionFieldPropagationProcess implemented
jgalan Mar 27, 2022
1165fcf
TRestAxionEventProcess. Fixing angle rotation definitions. Theta is r…
jgalan Mar 27, 2022
4d5ba2f
Merge remote-tracking branch 'github/master' into event_processing
jgalan Mar 29, 2022
0985aa6
Merge branch 'xmm_optics' into event_processing
jgalan Jun 28, 2022
a74f6e8
Merge branch 'master' into event_processing
jgalan Jun 28, 2022
9a60e11
Fixing compilation issues
jgalan Jun 28, 2022
9568e53
Updating README.md
jgalan Feb 9, 2022
6949058
CMakeLists.txt adding examples to the installation directory
jgalan Jun 28, 2022
3862b15
TRestAxionEvent. Adding RotateXY,YZ methods
jgalan Jun 28, 2022
cf9a2ac
TRestAxionGeneratorProcess. Fixing override warning
jgalan Jun 28, 2022
47a63da
TRestAxionEventProcess. Fixing rotation. Now using X and Y axis
jgalan Jun 28, 2022
28e00aa
TRestAxionGeneratorProcess. Implemented a dummy flat generator for te…
jgalan Jun 28, 2022
7feadfe
TRestAxionGeneratorProcess. Fixing fGeneratorType
jgalan Jun 28, 2022
d0e0f60
TRestAxionGeneratorProcess. Fixing compilation issues
jgalan Jun 28, 2022
ecfa347
TRestAxionOpticsProcess. Renamed and first implementation
jgalan Jun 28, 2022
d22615f
Merge branch 'master' into event_processing
jgalan Jul 6, 2022
b9575ec
TRestAxionEventProcess. Removing fDisplacement. Addng GetInputEvent i…
jgalan Jul 10, 2022
32c7d37
TRestAxionGeneratorProcess::ProcessEvent adding comment
jgalan Jul 10, 2022
9cdcb2d
axionGenerator.rml. Adding optics process
jgalan Jul 10, 2022
2d87239
TRestAxionTransportProcess added
jgalan Jul 10, 2022
1e0bc82
TRestAxionAnalysisProcess. Commenting out few observables
jgalan Jul 12, 2022
1b69b54
Adding examples/opticsBench.rml
jgalan Jul 12, 2022
1b81974
TRestAxionEventProcess::GetCenter method added
jgalan Jul 12, 2022
5f184e2
TRestAxionOptics::PrintMetadata adding missing info
jgalan Jul 12, 2022
40bd007
TRestAxionOptics::GetLastValidPosition/Direction methods added
jgalan Jul 12, 2022
9f537dc
TRestAxionOpticsProcess now inherits from TRestAxionEventProcess
jgalan Jul 12, 2022
f2e7dce
TRestAxionGeneratorProcess. Fixing a major generator error
jgalan Jul 12, 2022
9a052f5
examples/opticsBench.rml Adding efficiency observable
jgalan Jul 12, 2022
359d461
TRestAxionAnalysisProcess. Removed unnecessary InitFromConfigFile imp…
jgalan Jul 12, 2022
be7c452
TRestAxionOpticsProcess. First operative implementation
jgalan Jul 12, 2022
1f4e276
TRestAxionOpticsProcess. Removing unnecessary InitFromConfigFile
jgalan Jul 12, 2022
89eea11
TResrtAxionTransportProcess. Fixing error message
jgalan Jul 12, 2022
ee34245
opticsBench.rml cleaning and simplifying
jgalan Jul 13, 2022
8fe99f8
TRestAxionGeneratorProcess. Added fMaxEnergy and fMinEnergy
jgalan Jul 13, 2022
92f90e1
TRestAxionGeneratorProcess. Now plain or flat generator generates ran…
jgalan Jul 13, 2022
06860b3
TRestAxionDeviationProcess added.
jgalan Jul 13, 2022
0b1fbce
TRestAxionDeviationProcess. Fixing rotation with only 1-angle
jgalan Jul 13, 2022
70e883b
opticsBench.rml adding REST_DEV and REST_YAW global variables
jgalan Jul 26, 2022
fe395ea
opticsBench.rml adding REST_RUN
jgalan Jul 26, 2022
9610a40
A simple ValidateXMM.C for opticsBench.rml validation added
jgalan Jul 26, 2022
454f8ec
opticsBench.rml XMM definition is unified inside xmm.rml
jgalan Jul 26, 2022
071cd40
pipeline optics validation. Adding required data files
jgalan Jul 26, 2022
5fb5dd6
Adding new pipelines to gitlab
jgalan Jul 26, 2022
18b5393
opticsBench.rml updating filename
jgalan Jul 26, 2022
bacf097
Updating pipelines. Creating new stage dedicated to ray-tracing
jgalan Jul 26, 2022
04b43f3
Adding opticsPlots.rml (WIP)
jgalan Jul 26, 2022
92eb164
Fixing pipelines
jgalan Jul 26, 2022
05d38f3
opticsPlots.rml reviewing plots
jgalan Jul 26, 2022
60702e1
Updating pipelines
jgalan Jul 27, 2022
8a6d84e
Removing mpreal.h
jgalan Jul 28, 2022
6326d20
opticsPlots.rml Adding 1-dimensional spot profile
jgalan Jul 28, 2022
26d7098
TRestAxionOpticsProcess::fOpticalAxis added
jgalan Jul 29, 2022
9fbcfc2
opticsPlots.rml Increasing hitmap range
jgalan Jul 29, 2022
f384ae2
opticsPlots.rml Fixing radians to arcmin conversion
jgalan Jul 29, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 33 additions & 3 deletions .github/workflows/validation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ jobs:
restRoot -b -q GetMagneticField_test.C
cd ../boundary/
restRoot -b -q Boundaries_test.C
- name: Optics
- name: Optics Mirrors
run: |
source ${{ env.REST_PATH }}/thisREST.sh
cd pipeline/metadata/optics/
Expand All @@ -91,8 +91,12 @@ jobs:
wget https://sultan.unizar.es/axionlib-data/opticsMirror/Reflectivity_Single_Au_250_Ni_0.4.N901f
wget https://sultan.unizar.es/axionlib-data/opticsMirror/Transmission_Single_Au_250_Ni_0.4.N901f
python mirrors.py
#python optics.py
#python basic.py
- name: MCPL Optics
run: |
source ${{ env.REST_PATH }}/thisREST.sh
cd pipeline/metadata/optics/
wget https://sultan.unizar.es/axionlib-data/optics/optics.rml
python mcpl.py
- name: X-ray transmission
run: |
source ${{ env.REST_PATH }}/thisREST.sh
Expand All @@ -114,3 +118,29 @@ jobs:
python solarTests.py
python solarPlot.py
python compare.py

Ray-tracing:
name: Check ray-tracing processing chain
runs-on: ubuntu-latest
container:
image: ghcr.io/lobis/root-geant4-garfield:rest-for-physics
needs: [ build-axionlib ]
steps:
- uses: actions/checkout@v3
- name: Restore cache
uses: actions/cache@v3
id: axionlib-install-cache
with:
key: ${{ env.BRANCH_NAME }}-${{ github.sha }}
path: ${{ env.REST_PATH }}
- name: XMM optics bench ray-tracing
run: |
source ${{ env.REST_PATH }}/thisREST.sh
export REST_NEVENTS=1000
export REST_RUN=100
wget https://sultan.unizar.es/axionlib-data/optics/xmm.rml
wget https://sultan.unizar.es/axionlib-data/optics/XMM.Wolter
wget https://sultan.unizar.es/axionlib-data/opticsMirror/Reflectivity_Single_Au_250_Ni_0.4.N901f
wget https://sultan.unizar.es/axionlib-data/opticsMirror/Transmission_Single_Au_250_Ni_0.4.N901f
restManager --c opticsBench.rml
restRoot ValidateXMM.C'("OpticsBench_Yaw_0.02_Dev_0.005_BabyIAXO_Run00100.root")'
29 changes: 29 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ stages:
- build
- loadRESTLibs
- metadata
- ray-tracing

before_script:
- export USER="axion"
Expand Down Expand Up @@ -104,6 +105,17 @@ mirrors:
variables:
- $CRONJOB

MCPL Optics:
stage: metadata
script:
- . ${CI_PROJECT_DIR}/install/thisREST.sh
- cd ${CI_PROJECT_DIR}/pipeline/metadata/optics/
- wget https://sultan.unizar.es/axionlib-data/optics/optics.rml
- python mcpl.py
except:
variables:
- $CRONJOB

xRayTransmission:
stage: metadata
script:
Expand Down Expand Up @@ -131,3 +143,20 @@ solarFlux:
except:
variables:
- $CRONJOB

XMM optics bench ray-tracing:
stage: ray-tracing
script:
- . ${CI_PROJECT_DIR}/install/thisREST.sh
- cd ${CI_PROJECT_DIR}/pipeline/ray-tracing/
- export REST_NEVENTS=1000
- export REST_RUN=100
- wget https://sultan.unizar.es/axionlib-data/opticsMirror/Reflectivity_Single_Au_250_Ni_0.4.N901f
- wget https://sultan.unizar.es/axionlib-data/opticsMirror/Transmission_Single_Au_250_Ni_0.4.N901f
- wget https://sultan.unizar.es/axionlib-data/optics/xmm.rml
- wget https://sultan.unizar.es/axionlib-data/optics/XMM.Wolter
- restManager --c opticsBench.rml
- restRoot ValidateXMM.C'("OpticsBench_Yaw_0.05_Dev_0.005_BabyIAXO_Run00100.root")'
except:
variables:
- $CRONJOB
5 changes: 5 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -68,5 +68,10 @@ INSTALL(DIRECTORY ./data/
COMPONENT install
)

INSTALL(DIRECTORY ./examples/
DESTINATION ./examples/axion/
COMPONENT install
)

file(GLOB_RECURSE MAC "${CMAKE_CURRENT_SOURCE_DIR}/macros/*")
INSTALL(FILES ${MAC} DESTINATION ./macros/axion)
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,3 +59,10 @@ cd framework/build
cmake -DRESTLIB_AXION=ON ../
make -j4 install
```

### Publications

This repository makes use of the following published codes:
- K. Altenmuller et al, REST-for-Physics, a ROOT-based framework for event oriented data analysis and combined Monte Carlo response, [Computer Physics Communications 273, April 2022, 108281](https://doi.org/10.1016/j.cpc.2021.108281).
- S.Hoof, J.Jaeckel, T.J.Lennert, Quantifying uncertainties in the solar axion flux and their impact on determining axion model parameters, [JCAP09(2021)006](https://doi.org/10.1088/1475-7516/2021/09/006).
- T.Kittelmann, E.Klinkby, E.B.Knudsen, P.Willendrup, X.X.Cai, K.Kanaki, Monte Carlo Particle Lists: MCPL, Computer Physics Communications 218 (2017) 17–42](http://dx.doi.org/10.17632/cby92vsv5g.1).
2 changes: 1 addition & 1 deletion data
Submodule data updated 1 files
+2 −2 optics/xmm.rml
2 changes: 2 additions & 0 deletions examples/README.md
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
TOBE written, say few words listing, and describing the examples, and briefly explain how to use them.

- **opticsBench.rml**: It defines a simple generator with a parallel flux in order to validate the optics process.
189 changes: 78 additions & 111 deletions examples/axionGenerator.rml
Original file line number Diff line number Diff line change
@@ -1,113 +1,80 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>

<!--This file is an example of REST simulation functionality. We process the output root file
from restG4, converting its TRestGeant4Event to TRestDetectorSignalEvent. Observables and processes's
internal values are saved.
-->

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<TRestManager name="RESTManagerSim" title="Template manager to process a simulation generated by restG4." verboseLevel="info">

<TRestRun name="axionRun" title="REST Metadata run info (template)" verboseLevel="info">
<parameter name="experimentName" value="babyIAXO"/>
<parameter name="runType" value="simulation"/>
<parameter name="runNumber" value="auto"/> <!-- it will find next run number from database when we use "auto" -->
<parameter name="runTag" value="Template"/>
<parameter name="runDescription" value="We launched 100000 events to check everything is ok for 1 volume and from a plane YZ."/>
<parameter name="user" value="${USER}"/>
<parameter name="verboseLevel" value="2"/>
<parameter name="outputFileName" value="./Run_[fExperimentName]_randomWall.root" />

<TRestAxionSolarModel name="sunPrimakoff" file="metadata.rml" verboseLevel="warning" />
<TRestAxionMagneticField name="bFieldBabyIAXO" file="metadata.rml"/>
<TRestAxionBufferGas name="helium" file="metadata.rml"/>
<!--<TRestAxionLikelihood name="babyIAXO" file="metadata.rml" verboseLevel="debug" />-->

</TRestRun>


<TRestProcessRunner name="EventProcess" verboseLevel="info">
<parameter name="eventsToProcess" value="10000" />
<parameter name="threadNumber" value="1"/>

<parameter name="inputAnalysis" value="on"/>
<parameter name="inputEvent" value="on"/>
<parameter name="outputEvent" value="on"/>

<addProcess type="TRestAxionGeneratorProcess" name="axionGen" value="ON" verboseLevel="info" >
<parameter name="energyStep" value="1.e-3keV" />

<parameter name="energyRange" value="(0,15)keV" />

<parameter name="axionMass" value="2.0e-3eV" />

<parameter name="angularDistribution" value="flux" />
<parameter name="angularDirection" value="(-1,0,1)mm" /> <!-- "(-1,0,5)mm"-->

<parameter name="spatialDistribution" value="circleWallXY" /> <!--circleWall or circleWallYZ or sphereIn or sphereOut -->
<parameter name="spatialRadius" value="6500mm" />
<parameter name="spatialOrigin" value="(10000,0,-1000)mm" />
<!--<parameter name="mode" value="nPlanRotation" />--> <!-- XYZRotation or nPlanRotation-->
<!--<parameter name="rotation" value="(0,-0.789,0)" />-->
<!--<parameter name="normalWall" value="(-1,0,5)mm" />--> <!-- "(1,0,-10)mm" -->
</addProcess>

<addProcess type="TRestAxionAnalysisProcess" name="axGen1" value="ON" verboseLevel="info" >
<observable name="energy" value="ON" />
<observable name="posX" value="ON" />
<observable name="posY" value="ON" />
<observable name="posZ" value="ON" />
<observable name="probability" value="ON" />
</addProcess>

<addProcess type="TRestAxionFieldPropagationProcess" name="babyMagnet" value="ON" verboseLevel="info" >
<parameter name="mode" value="plan" /> <!-- plan or distance -->
<parameter name="distance" value="30000mm" />
<parameter name="finalNPlan" value="(0,0,1)mm" />
<parameter name="finalPositionPlan" value="(0,0,10000)mm" />
</addProcess>

<addProcess type="TRestAxionTransmissionProcess" name="magnetWindow" value="ON" verboseLevel="info" >
</addProcess>

<addProcess type="TRestAxionOpticsResponseProcess" name="optics" value="ON" verboseLevel="info" >
</addProcess>

<addProcess type="TRestAxionTransmissionProcess" name="detectorWindow" value="ON" verboseLevel="info" >
</addProcess>

<addProcess type="TRestAxionAnalysisProcess" name="axGen2" value="ON" verboseLevel="info" >
<observable name="energy" value="ON" />
<observable name="posX" value="ON" />
<observable name="posY" value="ON" />
<observable name="posZ" value="ON" />
<observable name="probability" value="ON" />
</addProcess>

<!-- file="processes.rml"/> -->

</TRestProcessRunner>

<!--
<TRestAxionSolarModel name="sunPrimakoff" file="metadata.rml" verboseLevel="info" />

<addTask command="sunPrimakoff->PrintMetadata()" value="ON"/>

<addTask type="processEvents" value="ON" />-->
<addTask command="EventProcess->RunProcess()" value="ON"/>

<!--<parameter name="outputLevel" value="internalvar" /> -->
<!-- options are : nooutput(0), observable(1), internalvar(2), fulloutput(3) --> -

<globals>
<parameter name="verboseLevel" value="essential" /> <!-- options are : silent(0), essential(1), info(2), info(3), extreme(4) -->
<parameter name="inputFileName" value=""/>

<searchPath value="$ENV{REST_INPUTDATA}/definitions/"/>

<variable name="PI" value="3.14" overwrite="false" />
</globals>

<globals>
<parameter name="verboseLevel" value="essential"/>
<!-- options are : silent(0), essential(1), info(2), info(3), extreme(4) -->
<parameter name="inputFileName" value=""/>
<parameter name="Pi" value="3.1415927"/>
</globals>
<TRestRun name="axionRun" title="BabyIAXO V1.0" verboseLevel="info">
<parameter name="experimentName" value="babyIAXO"/>
<parameter name="runType" value="simulation"/>
<parameter name="runNumber" value="auto"/>
<parameter name="runTag" value="Dummy"/>
<parameter name="runDescription" value=""/>
<parameter name="user" value="${USER}"/>
<parameter name="verboseLevel" value="2"/>
<parameter name="outputFileName" value="./Run_[fExperimentName]_[fRunTag]_PrimakoffDummy_[fRunNumber].root"/>
<TRestAxionSolarFlux name="combined" verboseLevel="info">
<parameter name="couplingType" value="g_ag"/>
<parameter name="couplingStrength" value="1.e-10"/>
<parameter name="fluxDataFile" value="Primakoff_Gianotti_201904.dat"/>
<parameter name="fluxSptFile" value="Dummy_Galan_202202.spt"/>
<parameter name="seed" value="137"/>
</TRestAxionSolarFlux>
<TRestAxionMagneticField name="bFieldBabyIAXO" title="bFieldBabyIAXO">
<addMagneticVolume fileName="Bykovskiy_201906.dat" position="(0,0,-4500)mm"/>
</TRestAxionMagneticField>
<TRestAxionBufferGas name="helium" verboseLevel="warning">
<gas name="He" density="0.0025e-6"/>
</TRestAxionBufferGas>
</TRestRun>
<TRestProcessRunner name="EventProcess" verboseLevel="info">
<parameter name="eventsToProcess" value="1000"/>
<parameter name="threadNumber" value="1"/>
<parameter name="inputAnalysis" value="on"/>
<parameter name="inputEvent" value="off"/>
<parameter name="outputEvent" value="on"/>
<addProcess type="TRestAxionGeneratorProcess" name="axionGen" value="ON" verboseLevel="info">
<parameter name="axionMass" value="5meV"/>
<parameter name="detectorRadius" value="75cm"/>
</addProcess>
<addProcess type="TRestAxionAnalysisProcess" name="axGen1" value="ON" verboseLevel="info">
<observable name="energy" value="ON"/>
<observable name="posX" value="ON"/>
<observable name="posY" value="ON"/>
<observable name="posZ" value="ON"/>
</addProcess>
<!-- We move the particle 1-m before origin -->
<addProcess type="TRestAxionTransportProcess" name="ToOpticsEntrance" zPosition="-1000">
</addProcess>
<addProcess type="TRestAxionAnalysisProcess" name="beforeOptics" value="ON" verboseLevel="info">
<observable name="energy" value="ON"/>
<observable name="posX" value="ON"/>
<observable name="posY" value="ON"/>
<observable name="posZ" value="ON"/>
</addProcess>
<addProcess type="TRestAxionFieldPropagationProcess" name="babyMagnet" value="OFF" verboseLevel="info">
<parameter name="center" value="(0,0,-5)m"/>
<parameter name="theta" value="10.*Pi/180."/>
<parameter name="phi" value="5.*Pi/180."/>
<parameter name="displacement" value="(7,-7)mm"/>
</addProcess>
<addProcess type="TRestAxionTransmissionProcess" name="magnetWindow" value="OFF" verboseLevel="info"> </addProcess>
<addProcess type="TRestAxionOpticsResponseProcess" name="optics" value="OFF" verboseLevel="info"> </addProcess>
<addProcess type="TRestAxionTransmissionProcess" name="detectorWindow" value="OFF" verboseLevel="info"> </addProcess>
<addProcess type="TRestAxionAnalysisProcess" name="axGen2" value="OFF" verboseLevel="info">
<observable name="energy" value="ON"/>
<observable name="posX" value="ON"/>
<observable name="posY" value="ON"/>
<observable name="posZ" value="ON"/>
<observable name="probability" value="ON"/>
</addProcess>
</TRestProcessRunner>
<!--
<TRestAxionSolarModel name="sunPrimakoff" file="metadata.rml" verboseLevel="info" />

<addTask command="sunPrimakoff->PrintMetadata()" value="ON"/>
-->
<addTask command="EventProcess-&gt;RunProcess()" value="ON"/>
</TRestManager>


<!--paramater here is accessible to all the classes -->
70 changes: 70 additions & 0 deletions examples/opticsBench.rml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<TRestManager name="RESTManagerSim" title="Template manager to process a simulation generated by restG4." verboseLevel="info">
<globals>
<parameter name="verboseLevel" value="essential"/>
<!-- options are : silent(0), essential(1), info(2), info(3), extreme(4) -->
<parameter name="inputFileName" value=""/>
<parameter name="Pi" value="3.1415927"/>
<variable name="REST_DEV" value="0.005"/>
<variable name="REST_YAW" value="0.05"/>
<variable name="REST_NEVENTS" value="1000000"/>
<variable name="REST_RUN" value="auto"/>
</globals>
<TRestRun name="axionRun" title="BabyIAXO V1.0" verboseLevel="info">
<parameter name="experimentName" value="BabyIAXO"/>
<parameter name="runType" value="OpticsBench"/>
<parameter name="runNumber" value="${REST_RUN}"/>
<parameter name="runTag" value="Yaw_${REST_YAW}_Dev_${REST_DEV}"/>
<parameter name="runDescription" value=""/>
<parameter name="user" value="${USER}"/>
<parameter name="verboseLevel" value="2"/>
<parameter name="outputFileName" value="[fRunType]_[fRunTag]_[fExperimentName]_Run[fRunNumber].root"/>
<!-- Optics definition -->
<TRestAxionWolterOptics file="xmm.rml"/>
</TRestRun>
<TRestProcessRunner name="EventProcess" verboseLevel="info">
<parameter name="eventsToProcess" value="${REST_NEVENTS}"/>
<parameter name="threadNumber" value="1"/>
<parameter name="inputAnalysis" value="on"/>
<parameter name="inputEvent" value="off"/>
<parameter name="outputEvent" value="on"/>
<addProcess type="TRestAxionGeneratorProcess" name="axionGen" value="ON" verboseLevel="info">
<parameter name="generatorType" value="flat"/>
<parameter name="maxEnergy" value="10"/>
<parameter name="axionMass" value="5meV"/>
<parameter name="targetRadius" value="40cm"/>
</addProcess>
<addProcess type="TRestAxionAnalysisProcess" name="axGen1" observable="all"/>
<!-- Moving to Z=-1000 -->
<addProcess type="TRestAxionTransportProcess" name="ToOpticsEntrance" zPosition="-350"/>
<addProcess type="TRestAxionDeviationProcess" name="deviation" devAngle="${REST_DEV}degrees" value="ON"/>
<addProcess type="TRestAxionAnalysisProcess" name="beforeOptics" verboseLevel="info">
<observable name="posX"/>
<observable name="posY"/>
</addProcess>
<!-- Optics response -->
<addProcess type="TRestAxionOpticsProcess" name="optics">
<parameter name="center" value="(0,0,0)"/>
<parameter name="yaw" value="${REST_YAW}degrees"/>
<parameter name="opticalAxis" value="false"/>
<observable name="efficiency" value="ON"/>
</addProcess>
<addProcess type="TRestAxionAnalysisProcess" name="afterOptics">
<observable name="posX"/>
<observable name="posY"/>
</addProcess>
<!-- Moving to Z=1500 -->
<addProcess type="TRestAxionTransportProcess" name="ToZ1500" zPosition="1500"/>
<addProcess type="TRestAxionAnalysisProcess" name="z1500">
<observable name="posX"/>
<observable name="posY"/>
</addProcess>
<!-- Moving to Z=7500 -->
<addProcess type="TRestAxionTransportProcess" name="ToFocalPoint" zPosition="7500"/>
<addProcess type="TRestAxionAnalysisProcess" name="focal">
<observable name="posX"/>
<observable name="posY"/>
</addProcess>
</TRestProcessRunner>
<addTask command="EventProcess-&gt;RunProcess()" value="ON"/>
</TRestManager>
Loading