REST-for-Physics  v2.3
Rare Event Searches ToolKit for Physics
TRestAxionLikelihood.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 http://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 http://www.gnu.org/licenses/. *
20  * For the list of contributors see $REST_PATH/CREDITS. *
21  *************************************************************************/
22 
23 #ifndef _TRestAxionLikelihood
24 #define _TRestAxionLikelihood
25 
26 #include <TRestMetadata.h>
27 
28 #include "TRandom3.h"
29 #include "TRestAxionBufferGas.h"
30 #include "TRestAxionField.h"
31 #include "TRestAxionSolarModel.h"
32 #include "TRestAxionSpectrum.h"
33 
37  private:
38  void Initialize();
39 
40  void InitFromConfigFile();
41 
42  // We consider all this values as constant parameters
43  // In the future we will use the signal generator event chain
44  // to determine a more accurate signal generation
45  Double_t fBmag = 0; //-> Manget field in T
46  Double_t fRmag = 0; //-> Magnet radius
47  Double_t fLmag = 0; //-> Manget length in mm
48  Double_t fEfficiency = 1; //->
49 
50  Int_t fNbores = 0; //->
51 
52  Double_t fBackgroundLevel = 0.; //->
53 
54  Double_t fSpotArea = 0.; //->
55 
56  TVector2 fErange; //->
57 
58  Double_t fTExpVacuum = 0; //->
59 
60  Double_t fTExpPerStep = 0; //->
61  Int_t fNSteps = 0; //->
62 
63  Double_t fLastStepDensity = 0.; //->
64 
65  TRestAxionField* fAxionField;
66  TRestAxionBufferGas* fBufferGas;
67  TRestAxionSpectrum* fAxionSpectrum;
68 
70  TRandom3* fRandom;
71 
72  Int_t fMeasuredCountsVacuum;
73  std::vector<Int_t> fMeasuredCountsPerStep;
74  std::vector<Double_t> fExposureTimePerStep;
75  std::vector<Double_t> fDensityInStep;
76 
77  public:
78  void GenerateMonteCarlo();
79  Double_t LogLikelihood(Double_t ma, Double_t g10, Double_t Nmeas, Double_t rho, Double_t tExp);
80 
81  Double_t GetSignal(Double_t ma, Double_t g10_4, Double_t rho, Double_t tExp);
82 
83  void LikelihoodTest(const std::string& fname);
84 
85  void PrintMetadata();
86 
87  // Constructors
89  TRestAxionLikelihood(const char* cfgFileName, std::string name = "");
90  // Destructor
92 
93  ClassDef(TRestAxionLikelihood, 1);
94 };
95 #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.
void Initialize()
Making default settings.
TRandom3 * fRandom
Random number generator.
void PrintMetadata()
Implemented it in the derived metadata class to print out specific metadata information.
void InitFromConfigFile()
To make settings from rml file. This method must be implemented in the derived class.
A metadata class to define a solar axion spectrum and functions to evaluate it.
A base class for any REST metadata class.
Definition: TRestMetadata.h:74