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

Helioscope signal sensitivity #93

Merged
merged 77 commits into from
Jun 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
77f6eef
Renaming example directories
jgalan May 22, 2024
c4346c0
TRestAxionSolarFlux::GetFluxAtEnergy method added
jgalan May 22, 2024
fdb04ab
TRestAxionMagneticField fixing compilation warning
jgalan May 22, 2024
b96cb16
TRestAxionBufferGas. Removing clearing from initialization
jgalan May 22, 2024
0b4b67f
TRestAxionHelioscopeSignal class added
jgalan May 23, 2024
5eb885d
TRestAxionSolarFlux. fTablesLoaded is now protected
jgalan May 23, 2024
1ecdb9c
TRestAxionSolarQCDFlux::LoadTables. Assuring single execution
jgalan May 23, 2024
e77dc98
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] May 23, 2024
2f05b0d
TRestAxionHelioscopeSignal::FillHistograms is filled now as a functio…
jgalan May 23, 2024
af843ee
TRestAxionSolarFlux::Initialize now tables must be initalized
jgalan May 23, 2024
380b2ad
Merge branch 'jgalan_bIAXO_example' of github.com:rest-for-physics/ax…
jgalan May 23, 2024
cbdc061
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] May 23, 2024
8635ecc
TRestAxionField::GammaTransmissionProbability now receives energy as …
jgalan May 23, 2024
096f643
Merge branch 'jgalan_bIAXO_example' of github.com:rest-for-physics/ax…
jgalan May 23, 2024
837d55d
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] May 23, 2024
407a4f4
TRestAxionHelioscopeSignal. Adding Library version at initialzation
jgalan May 23, 2024
89fd731
Merge branch 'jgalan_bIAXO_example' of github.com:rest-for-physics/ax…
jgalan May 23, 2024
f13d411
TRestAxionHelioscopeSignal::GetGas method added
jgalan May 23, 2024
7d3cb74
REST_Axion_PlotResonances.C fixing compilation error
jgalan May 24, 2024
72d38c7
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] May 24, 2024
1946af7
AxionPhysicsValidation.C fixing new GammaTRansmissionProbability prot…
jgalan May 24, 2024
7ee5c10
Merge branch 'jgalan_bIAXO_example' of github.com:rest-for-physics/ax…
jgalan May 24, 2024
25f48bd
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] May 24, 2024
59c2d06
03.sensitivity adding BabyIAXO setup
jgalan May 24, 2024
80c2100
Merge branch 'jgalan_bIAXO_example' of github.com:rest-for-physics/ax…
jgalan May 24, 2024
4a39f36
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] May 24, 2024
366b1f8
BabyIAXO.rml setting final parameters
jgalan May 24, 2024
7fe9f51
Adding IAXO.rml
jgalan May 24, 2024
3f997e1
GenerateSignalComponents.C improving generated file naming
jgalan May 24, 2024
bbff0cf
TRestAxionHelioscopeSignal avoiding double call to FillHistograms
jgalan May 24, 2024
1779346
Updating BabyIAXO.rml
jgalan May 27, 2024
2a71cc9
TRestAxionHelioscopeSignal. Initializing after InitFromConfigFile
jgalan May 28, 2024
9191ea9
Updating README.md
jgalan May 29, 2024
6ef4dd5
Merge branch 'jgalan_bIAXO_example' of github.com:rest-for-physics/ax…
jgalan May 29, 2024
ea89509
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] May 29, 2024
c1618b9
Raw update
jgalan May 29, 2024
d0aaaeb
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] May 29, 2024
ed87fdc
Updating README.md
jgalan May 29, 2024
f222792
Merge branch 'jgalan_bIAXO_example' of github.com:rest-for-physics/ax…
jgalan May 29, 2024
eb8ffaa
Adding README.md
jgalan May 29, 2024
281dd82
Updating README.md
jgalan May 29, 2024
901aa4c
README.md testing maths
jgalan May 29, 2024
e52705b
Updating math expressions
jgalan May 29, 2024
b3f0014
README.md update
jgalan May 29, 2024
0a6e130
Updating README.md
jgalan May 29, 2024
fbb577e
BabyIAXO.rml final updates
jgalan May 29, 2024
1476e5d
IAXO.rml final updates
jgalan May 29, 2024
a55c183
GenerateSignalComponents.C final fixes
jgalan May 29, 2024
a25b83b
Updating README.md
jgalan May 29, 2024
6370aeb
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] May 29, 2024
d7fc899
Final updates
jgalan May 29, 2024
17913e4
TRestAxionHelioscopeSignal Removing forgotten cout
jgalan May 29, 2024
211acd5
Fixing conflict
jgalan May 29, 2024
4365fa3
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] May 29, 2024
c9cfc36
Uploading limits results, gnuplot file and png
jgalan May 29, 2024
a71a2c6
Adding output empty directory
jgalan May 29, 2024
f56a4a9
IAXOPlus. Adding average flag
jgalan May 29, 2024
74bad1c
Merge branch 'jgalan_bIAXO_example' of github.com:rest-for-physics/ax…
jgalan May 29, 2024
cffea4e
Updating README.md
jgalan May 29, 2024
6285dfe
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] May 29, 2024
3d66e49
Updating README.md
jgalan May 29, 2024
29f85d7
Merge branch 'jgalan_bIAXO_example' of github.com:rest-for-physics/ax…
jgalan May 29, 2024
7da7b0f
Adding validation pipeline
jgalan May 29, 2024
0f21d6f
Updating README.md
jgalan May 29, 2024
1f47292
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] May 29, 2024
2d3fc71
GenerateSignalComponents.C now allows to define the first N steps wit…
jgalan May 30, 2024
4adb45b
Merge branch 'jgalan_bIAXO_example' of github.com:rest-for-physics/ax…
jgalan May 30, 2024
405be83
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] May 30, 2024
3beb866
Improving RML templates using constants. Fixing wrong spot window radius
jgalan Jun 9, 2024
6fa6b53
IAXO.rml Updating data taking years
jgalan Jun 9, 2024
f387f0b
Merge branch 'jgalan_bIAXO_example' of github.com:rest-for-physics/ax…
jgalan Jun 9, 2024
ac1d62d
Updating README.md
jgalan Jun 9, 2024
1763269
GenerateSignalComponents.C updated
jgalan Jun 9, 2024
ff9a817
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 9, 2024
4f855b3
Updating reviewed limits
jgalan Jun 9, 2024
ae9f665
Merge branch 'jgalan_bIAXO_example' of github.com:rest-for-physics/ax…
jgalan Jun 9, 2024
79e2cbd
Updating more README.md comments
jgalan Jun 9, 2024
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
24 changes: 24 additions & 0 deletions .github/workflows/validation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -266,3 +266,27 @@ jobs:
export REST_GAS_STEP=2
restManager --c BabyIAXO_Micromegas_XMM.rml --o output.root
restRoot -q ValidateChain.C'("output.root")'

Sensitivity:
name: Sensitivity tests
runs-on: ubuntu-latest
container:
image: ghcr.io/lobis/root-geant4-garfield:rest-for-physics
needs: [ build-axionlib ]
steps:
- uses: rest-for-physics/framework/.github/actions/checkout@master
with:
branch: ${{ env.BRANCH_NAME }}
repository: rest-for-physics/axionlib
path: ${{ env.AXION_LIB_PATH }}
- name: Restore cache
uses: actions/cache@v3
id: axionlib-install-cache
with:
key: ${{ env.BRANCH_NAME }}-${{ github.sha }}
path: ${{ env.REST_PATH }}
- name: Dummy IAXO
run: |
source ${{ env.REST_PATH }}/thisREST.sh
cd ${{ env.AXION_LIB_PATH }}/pipeline/sensitivity/
restRoot -b -q Validation.C
File renamed without changes.
File renamed without changes.
106 changes: 106 additions & 0 deletions examples/03.IAXO/BabyIAXO.rml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<BabyIAXO>
<globals>
<constant name="Pi" value="3.1415927" />
<constant name="Bores" value="2" />
<constant name="SpotRadius" value="0.309" />
<constant name="BField" value="1.73" />
<constant name="Years" value="1.5" />
<constant name="MagnetRadius" value="35" />
<constant name="MagnetLength" value="10" />
<constant name="WindowEff" value="0.7" />
<constant name="OpticsEff" value="0.35" />
<constant name="BckRate" value="1e-7" />
</globals>

<TRestSensitivity name="VacuumPhase" strategy="nodes" >

<TRestExperiment name="Vacuum" exposureTime="Years*365*12hr" useAverage="true">
<!-- Background -->
<TRestComponentFormula name="Flat7" nature="background" >
<parameter name="formulaUnits" value="keV^-1" />
<cVariable name="energy" range="(0,10)keV" bins="20" />
<formula name="bck" expression="Bores*BckRate*Pi*SpotRadius*SpotRadius" />
</TRestComponentFormula>

<!-- Signal -->
<TRestAxionHelioscopeSignal name="Vacuum" nature="signal" parameter="ma"
conversionType="IAXO" bores="Bores"
magnetRadius="MagnetRadius cm" magnetLength="MagnetLength m" magnetStrength="BField T"
opticsEfficiency="OpticsEff" windowEfficiency="WindowEff" >

<cVariable name="energy" range="(0,10)keV" bins="20" />

<parameter name="firstParameterValue" value="0.001" />
<parameter name="lastParameterValue" value="10" />
<parameter name="stepParameterValue" value="1.02" />
<parameter name="exponential" value="true" />

<TRestAxionSolarQCDFlux name="LennertHoofPrimakoff" couplingType="g_ag" couplingStrength="1.e-10"
fluxDataFile="Primakoff_LennertHoof_202203.dat" seed="137" />
</TRestAxionHelioscopeSignal>
</TRestExperiment>

</TRestSensitivity>

<TRestSensitivity name="CombinedPhase" strategy="nodes" >
<TRestExperiment name="Vacuum" exposureTime="1.5*300*12hr" useAverage="true">
<!-- Background -->
<TRestComponentFormula name="Flat7" nature="background" >
<parameter name="formulaUnits" value="keV^-1" />
<cVariable name="energy" range="(0,10)keV" bins="20" />
<formula name="bck" expression="Bores*BckRate*Pi*SpotRadius*SpotRadius" />
</TRestComponentFormula>

<!-- Signal -->
<TRestAxionHelioscopeSignal name="Vacuum" nature="signal" parameter="ma"
conversionType="IAXO" bores="Bores"
magnetRadius="MagnetRadius cm" magnetLength="MagnetLength m" magnetStrength="BField T"
opticsEfficiency="OpticsEff" windowEfficiency="WindowEff" >

<cVariable name="energy" range="(0,10)keV" bins="20" />

<TRestAxionSolarQCDFlux name="LennertHoofPrimakoff" couplingType="g_ag" couplingStrength="1.e-10"
fluxDataFile="Primakoff_LennertHoof_202203.dat" seed="137" />


<parameter name="firstParameterValue" value="0.001" />
<parameter name="lastParameterValue" value="10" />
<parameter name="stepParameterValue" value="1.02" />
<parameter name="exponential" value="true" />
</TRestAxionHelioscopeSignal>
</TRestExperiment>

<TRestExperimentList name="GasPhase" exposureTime="0"
componentPattern="output/SignalsBabyIAXO.root" experimentsFile="output/BabyIAXO.settings" useAverage="true">

<TRestComponentFormula name="Flat7" nature="background" >
<parameter name="formulaUnits" value="keV^-1" />
<cVariable name="energy" range="(0,10)keV" bins="20" />
<formula name="bck" expression="Bores*BckRate*Pi*SpotRadius*SpotRadius" />
</TRestComponentFormula>
</TRestExperimentList>
</TRestSensitivity>

<TRestAxionHelioscopeSignal name="GasSignal" nature="signal" parameter="ma"
conversionType="IAXO" bores="Bores"
magnetRadius="MagnetRadius cm" magnetLength="MagnetLength m" magnetStrength="BField T"
opticsEfficiency="OpticsEff" windowEfficiency="WindowEff" >

<cVariable name="energy" range="(0,10)keV" bins="20" />

<parameter name="firstParameterValue" value="0.001" />
<parameter name="lastParameterValue" value="10" />
<parameter name="stepParameterValue" value="1.02" />
<parameter name="exponential" value="true" />

<TRestAxionSolarQCDFlux name="LennertHoofPrimakoff" couplingType="g_ag" couplingStrength="1.e-10"
fluxDataFile="Primakoff_LennertHoof_202203.dat" seed="137" />

<TRestAxionBufferGas name="helium" >
<gas name="He" density="0.0025e-6g/cm^3"/>
</TRestAxionBufferGas>

</TRestAxionHelioscopeSignal>

</BabyIAXO>
64 changes: 64 additions & 0 deletions examples/03.IAXO/GenerateSignalComponents.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
Double_t Eo = 0.5; // keV
Double_t Ef = 10; // keV

Int_t GenerateSignalComponents(std::string rmlFile, std::string name, Double_t totalYears = 1.5,
size_t firstSteps = 5, Double_t firstYears = 0.5) {
Double_t totalExposureTime = totalYears * 365. * 12 * 3600;
Double_t firstStepsExposure = firstYears * 365. * 12 * 3600;

TRestAxionField field;
std::vector<std::pair<Double_t, Double_t>> scanSteps =
field.GetMassDensityScanning("He", 0.25, 20); // Up to 0.25 eV

TRestAxionHelioscopeSignal gasPhase(rmlFile.c_str(), name.c_str());
std::filesystem::path filePath = rmlFile;
std::filesystem::path newExtension = ".settings";
std::string settingsFile = filePath.replace_extension(newExtension);
std::filesystem::path rootExtension = ".root";
std::string componentsFile = "Signals" + (std::string)filePath.replace_extension(rootExtension);

std::filesystem::create_directories("output");
settingsFile = "output/" + settingsFile;
componentsFile = "output/" + componentsFile;

TFile* f = TFile::Open((TString)componentsFile, "RECREATE");
std::vector<Double_t> exposureTimes;
for (size_t n = 0; n < scanSteps.size(); n++) {
Double_t mass = scanSteps[n].first;
Double_t density = scanSteps[n].second;

gasPhase.SetName("P" + (TString)IntegerToString(n + 1));
gasPhase.GetGas()->SetGasDensity("He", density);
gasPhase.RegenerateHistograms();

Double_t nGamma = gasPhase.GetSignalRate(mass, Eo, Ef);
Double_t ksvzFactor = 3.75523 * mass;
Double_t exposureTime = 0;
if (n < firstSteps)
exposureTime = firstStepsExposure / firstSteps;
else
exposureTime = TMath::Log(20.) / TMath::Power(ksvzFactor, 4) / nGamma;
exposureTimes.push_back(exposureTime);

gasPhase.Write("P" + (TString)IntegerToString(n + 1));
}
f->Close();

std::cout << "Generated signals file: " << componentsFile << std::endl;

Double_t generatedExposureTime = 0;
for (size_t n = firstSteps; n < scanSteps.size(); n++) generatedExposureTime += exposureTimes[n];

FILE* g = fopen(settingsFile.c_str(), "wt");
for (size_t n = 0; n < firstSteps; n++) fprintf(g, "%lf\tP%d\n", exposureTimes[n], (int)(n + 1));

for (size_t n = firstSteps; n < scanSteps.size(); n++)
fprintf(g, "%lf\tP%d\n",
(totalExposureTime - firstStepsExposure) * exposureTimes[n] / generatedExposureTime,
(int)(n + 1));
fclose(g);

std::cout << "Generated settings file: " << settingsFile << std::endl;

return 0;
}
105 changes: 105 additions & 0 deletions examples/03.IAXO/IAXO.rml
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<BabyIAXO>
<globals>
<constant name="Pi" value="3.1415927" />
<constant name="Bores" value="8" />
<constant name="SpotRadius" value="0.2185" /> <!-- Area 0.15 cm2 -->
<constant name="BField" value="2.55" />
<constant name="Years" value="3" />
<constant name="MagnetRadius" value="30" />
<constant name="MagnetLength" value="20" />
<constant name="WindowEff" value="0.8" />
<constant name="OpticsEff" value="0.7" />
<constant name="BckRate" value="1e-8" />
</globals>

<TRestSensitivity name="VacuumPhase" strategy="nodes" >

<TRestExperiment name="Vacuum" exposureTime="Years*365*12hr" useAverage="true">
<!-- Background -->
<TRestComponentFormula name="Flat8" nature="background" >
<parameter name="formulaUnits" value="keV^-1" />
<cVariable name="energy" range="(0,10)keV" bins="20" />
<formula name="bck" expression="Bores*BckRate*Pi*SpotRadius*SpotRadius" />
</TRestComponentFormula>

<!-- Signal -->
<TRestAxionHelioscopeSignal name="Vacuum" nature="signal" parameter="ma"
conversionType="IAXO" bores="Bores"
magnetRadius="MagnetRadius cm" magnetLength="MagnetLength m" magnetStrength="BField T"
opticsEfficiency="OpticsEff" windowEfficiency="WindowEff" >

<cVariable name="energy" range="(0,10)keV" bins="20" />

<parameter name="firstParameterValue" value="0.001" />
<parameter name="lastParameterValue" value="10" />
<parameter name="stepParameterValue" value="1.02" />
<parameter name="exponential" value="true" />

<TRestAxionSolarQCDFlux name="LennertHoofPrimakoff" couplingType="g_ag" couplingStrength="1.e-10"
fluxDataFile="Primakoff_LennertHoof_202203.dat" seed="137" />
</TRestAxionHelioscopeSignal>
</TRestExperiment>

</TRestSensitivity>

<TRestSensitivity name="CombinedPhase" strategy="nodes" >
<TRestExperiment name="Vacuum" exposureTime="1.5*300*12hr" useAverage="true">
<!-- Background -->
<TRestComponentFormula name="Flat8" nature="background" >
<parameter name="formulaUnits" value="keV^-1" />
<cVariable name="energy" range="(0,10)keV" bins="20" />
<formula name="bck" expression="Bores*BckRate*Pi*SpotRadius*SpotRadius" />
</TRestComponentFormula>

<!-- Signal -->
<TRestAxionHelioscopeSignal name="Vacuum" nature="signal" parameter="ma"
conversionType="IAXO" bores="Bores"
magnetRadius="MagnetRadius cm" magnetLength="MagnetLength m" magnetStrength="BField T"
opticsEfficiency="OpticsEff" windowEfficiency="WindowEff" >

<cVariable name="energy" range="(0,10)keV" bins="20" />

<TRestAxionSolarQCDFlux name="LennertHoofPrimakoff" couplingType="g_ag" couplingStrength="1.e-10"
fluxDataFile="Primakoff_LennertHoof_202203.dat" seed="137" />

<parameter name="firstParameterValue" value="0.001" />
<parameter name="lastParameterValue" value="10" />
<parameter name="stepParameterValue" value="1.02" />
<parameter name="exponential" value="true" />
</TRestAxionHelioscopeSignal>
</TRestExperiment>

<TRestExperimentList name="GasPhase" exposureTime="0"
componentPattern="output/SignalsIAXO.root" experimentsFile="output/IAXO.settings" useAverage="true">

<TRestComponentFormula name="Flat8" nature="background" >
<parameter name="formulaUnits" value="keV^-1" />
<cVariable name="energy" range="(0,10)keV" bins="20" />
<formula name="bck" expression="Bores*BckRate*Pi*SpotRadius*SpotRadius" />
</TRestComponentFormula>
</TRestExperimentList>
</TRestSensitivity>

<TRestAxionHelioscopeSignal name="GasSignal" nature="signal" parameter="ma"
conversionType="IAXO" bores="Bores"
magnetRadius="MagnetRadius cm" magnetLength="MagnetLength m" magnetStrength="BField T"
opticsEfficiency="OpticsEff" windowEfficiency="WindowEff" >

<cVariable name="energy" range="(0,10)keV" bins="20" />

<parameter name="firstParameterValue" value="0.001" />
<parameter name="lastParameterValue" value="10" />
<parameter name="stepParameterValue" value="1.02" />
<parameter name="exponential" value="true" />

<TRestAxionSolarQCDFlux name="LennertHoofPrimakoff" couplingType="g_ag" couplingStrength="1.e-10"
fluxDataFile="Primakoff_LennertHoof_202203.dat" seed="137" />

<TRestAxionBufferGas name="helium" >
<gas name="He" density="0.0025e-6g/cm^3"/>
</TRestAxionBufferGas>

</TRestAxionHelioscopeSignal>

</BabyIAXO>
Loading
Loading