REST-for-Physics  v2.3
Rare Event Searches ToolKit for Physics
TRestAxionHelioscopeSignal.h
1/*************************************************************************
2 * This file is part of the REST software framework. *
3 * *
4 * Copyright (C) 2016 GIFNA/TREX (University of Zaragoza) *
5 * For more information see https://gifna.unizar.es/trex *
6 * *
7 * REST is free software: you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation, either version 3 of the License, or *
10 * (at your option) any later version. *
11 * *
12 * REST is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU General Public License for more details. *
16 * *
17 * You should have a copy of the GNU General Public License along with *
18 * REST in $REST_PATH/LICENSE. *
19 * If not, see https://www.gnu.org/licenses/. *
20 * For the list of contributors see $REST_PATH/CREDITS. *
21 *************************************************************************/
22
23#ifndef REST_TRestAxionHelioscopeSignal
24#define REST_TRestAxionHelioscopeSignal
25
26#include <TRestAxionBufferGas.h>
27#include <TRestAxionField.h>
28#include <TRestAxionSolarFlux.h>
29
30#include "TRestComponent.h"
31
34 private:
36 std::string fConversionType = "IAXO";
37
39 Int_t fBores = 2;
40
42 Double_t fMagnetRadius = 350;
43
45 Double_t fMagnetLength = 10000;
46
48 Double_t fMagnetStrength = 2;
49
51 Double_t fOpticsEfficiency = 1;
52
54 Double_t fWindowEfficiency = 1;
55
58
61
64
65 protected:
66 void InitFromConfigFile() override;
67
68 void FillHistograms() override;
69
70 public:
71 Double_t GetSignalRate(std::vector<Double_t> point, Double_t mass = 0);
72 Double_t GetSignalRate(Double_t mass, Double_t Eo, Double_t Ef);
73
74 TRestAxionBufferGas* GetGas() { return fGas; }
75 TRestAxionSolarFlux* GetFlux() { return fFlux; }
76
77 void PrintMetadata() override;
78
79 void SetNumberOfBores(const Int_t& bores) { fBores = bores; }
80 void SetMagnetRadius(const Double_t& radius) { fMagnetRadius = radius; }
81 void SetMagnetLength(const Double_t& length) { fMagnetLength = length; }
82 void SetMagnetStrength(const Double_t& strength) { fMagnetStrength = strength; }
83 void SetType(const std::string& type) { fConversionType = type; }
84
85 Int_t GetNumberOfBores() const { return fBores; }
86 Double_t GetMagnetRadius() const { return fMagnetRadius; }
87 Double_t GetMagnetLength() const { return fMagnetLength; }
88 Double_t GetMagnetStrength() const { return fMagnetStrength; }
89 std::string GetType() const { return fConversionType; }
90
91 void Initialize() override;
92 TRestAxionHelioscopeSignal(const char* cfgFileName, const std::string& name);
95
96 ClassDefOverride(TRestAxionHelioscopeSignal, 1);
97};
98#endif
A metadata class to define the gas properties used in axion search calculations.
A basic class to define analytical axion-photon conversion calculations for axion helioscopes.
It allows to build a signal model using a given helioscope configuration and solar axion flux compone...
void PrintMetadata() override
Prints on screen the information about the metadata members of TRestAxionSolarFlux.
Double_t fOpticsEfficiency
If optics is present we may add an efficiency for Ngamma calculation.
Double_t fMagnetLength
It defines the magnet length in standard REST units (mm)
Double_t fMagnetRadius
It defines the magnet aperture radius in standard REST units (mm)
void Initialize() override
It will initialize the data frame with the filelist and column names (or observables) that have been ...
Int_t fBores
It defines the number of bores or TPCs (number of magnetic volumes)
TRestAxionField * fField
It provides access to axion-photon conversion probabilites calculations.
void InitFromConfigFile() override
It customizes the retrieval of XML data values of this class.
Double_t fWindowEfficiency
If an x-ray window is present we may add an efficiency for Ngamma calculation.
TRestAxionHelioscopeSignal()
Default constructor.
TRestAxionSolarFlux * fFlux
It defines the solar flux we use inside our magnetic field. Must be defined.
void FillHistograms() override
It will produce a histogram with the distribution using the formula contributions.
Double_t GetSignalRate(std::vector< Double_t > point, Double_t mass=0)
It returns the intensity/rate (in seconds) corresponding to the class defined helioscope configuratio...
std::string fConversionType
It defines the helioscope type (IAXO/AMELIE)
~TRestAxionHelioscopeSignal()
Default destructor.
Double_t fMagnetStrength
It defines the magnetic field strength in T.
TRestAxionBufferGas * fGas
It defines the gas mixture we use inside our magnetic field. Vacuum if it is nullptr.
A metadata class to load tabulated solar axion fluxes.
It defines a background/signal model distribution in a given parameter space (tipically x,...