From 1d4f768009b1d9850a3f7c1474e6afca956aa25c Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Fri, 2 Sep 2022 09:40:35 +0200 Subject: [PATCH 01/58] TRestAxionPhotonConversion. Including TRestComplex and using implicit use of REST_Physics namespace --- src/TRestAxionPhotonConversion.cxx | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/TRestAxionPhotonConversion.cxx b/src/TRestAxionPhotonConversion.cxx index b00e97d9..57e97854 100644 --- a/src/TRestAxionPhotonConversion.cxx +++ b/src/TRestAxionPhotonConversion.cxx @@ -45,11 +45,10 @@ /// #include "TRestAxionPhotonConversion.h" #include -#include "TComplex.h" #include "TH1F.h" +#include "TRestComplex.h" using namespace std; -using namespace REST_Physics; // Better we keep specifying mpfr:: explicitily // using mpfr::mpreal; @@ -73,7 +72,7 @@ TRestAxionPhotonConversion::~TRestAxionPhotonConversion() {} /// So that we can still calculate numbers such as : 1.0 - 1.e-30 /// void TRestAxionPhotonConversion::Initialize() { - mpfr::mpreal::set_default_prec(mpfr::digits2bits(30)); + TRestComplex::SetPrecision(30); fBufferGas = NULL; @@ -91,7 +90,7 @@ void TRestAxionPhotonConversion::Initialize() { double TRestAxionPhotonConversion::BL(Double_t Bmag, Double_t Lcoh) { Double_t lengthInMeters = Lcoh / 1000.; - Double_t tm = lightSpeed / naturalElectron * 1.0e-9; // GeV + Double_t tm = REST_Physics::lightSpeed / REST_Physics::naturalElectron * 1.0e-9; // GeV Double_t sol = lengthInMeters * Bmag * tm; sol = sol * 1.0e-10; @@ -108,7 +107,7 @@ double TRestAxionPhotonConversion::BLHalfSquared(Double_t Bmag, Double_t Lcoh) { Double_t lengthInMeters = Lcoh / 1000.; - Double_t tm = lightSpeed / naturalElectron * 1.0e-9; // gev + Double_t tm = REST_Physics::lightSpeed / REST_Physics::naturalElectron * 1.0e-9; // gev Double_t sol = lengthInMeters * Bmag * tm / 2; sol = sol * sol * 1.0e-20; @@ -150,7 +149,7 @@ Double_t TRestAxionPhotonConversion::GammaTransmissionProbability(Double_t Bmag, if (ma == 0.0 && photonMass == 0.0) return BLHalfSquared(Bmag, Lcoh); mpfr::mpreal q = (ma * ma - photonMass * photonMass) / 2. / Ea / 1000.0; - mpfr::mpreal l = cohLength * PhMeterIneV; + mpfr::mpreal l = cohLength * REST_Physics::PhMeterIneV; mpfr::mpreal phi = q * l; mpfr::mpreal Gamma = absLength; @@ -225,7 +224,7 @@ Double_t TRestAxionPhotonConversion::AxionAbsorptionProbability(Double_t Bmag, D if (ma == 0.0 && photonMass == 0.0) return BLHalfSquared(Bmag, Lcoh); mpfr::mpreal q = (ma * ma - photonMass * photonMass) / 2. / Ea / 1000.0; - mpfr::mpreal l = cohLength * PhMeterIneV; + mpfr::mpreal l = cohLength * REST_Physics::PhMeterIneV; mpfr::mpreal phi = q * l; mpfr::mpreal Gamma = absLength; From daded1885b90899ee78817713644cb7ad0c88dfd Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Fri, 2 Sep 2022 10:10:01 +0200 Subject: [PATCH 02/58] TRestAxionPhotonConversion includes now TRestComplex --- inc/TRestAxionPhotonConversion.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/TRestAxionPhotonConversion.h b/inc/TRestAxionPhotonConversion.h index 5065272b..d8bd934d 100644 --- a/inc/TRestAxionPhotonConversion.h +++ b/inc/TRestAxionPhotonConversion.h @@ -24,7 +24,7 @@ #define _TRestAxionPhotonConversion #include "TRestAxionBufferGas.h" -#include "mpreal.h" +#include "TRestComplex.h" /* /// MOVED TO TRestAxionFieldPropagationProcess class From d9f11a801384a3ffe32b8a6abb38fbdafe33e229 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Fri, 2 Sep 2022 11:01:47 +0200 Subject: [PATCH 03/58] TRestAxionPhotonConversion.h. Removing obsolete code related to complex numbers, we use now TRestComplex --- inc/TRestAxionPhotonConversion.h | 84 ------------------------------ src/TRestAxionPhotonConversion.cxx | 3 +- 2 files changed, 1 insertion(+), 86 deletions(-) diff --git a/inc/TRestAxionPhotonConversion.h b/inc/TRestAxionPhotonConversion.h index d8bd934d..df2b649f 100644 --- a/inc/TRestAxionPhotonConversion.h +++ b/inc/TRestAxionPhotonConversion.h @@ -56,90 +56,6 @@ class TRestAxionPhotonConversion : public TObject { /// A pointer to the buffer gas definition TRestAxionBufferGas* fBufferGas = NULL; //! - /* - /// MOVED TO TRestAxionFieldPropagationProcess class - ///////////////////////////////////////////////////////////////////////// - // ----- Just a quick implementation of complex number operations ---- // - // ------------ including mpfr real precision arithmetics ------------ // - - /// A function to calculate complex number addition with real precision - ComplexReal ComplexAddition(const ComplexReal& a, const ComplexReal& b) { - ComplexReal c; - - c.real = a.real + b.real; - c.img = a.img + b.img; - - return c; - } - - /// A function to calculate complex number substraction with real precision - ComplexReal ComplexSubstraction(const ComplexReal& a, const ComplexReal& b) { - ComplexReal c; - - c.real = a.real - b.real; - c.img = a.img - b.img; - - return c; - } - - /// A function to calculate complex number product with real precision - ComplexReal ComplexProduct(const ComplexReal& a, const ComplexReal& b) { - ComplexReal c; - - c.real = a.real * b.real - a.img * b.img; - c.img = a.real * b.img + a.img * b.real; - - return c; - } - - /// A function to calculate complex number product by a value with real precision - ComplexReal ComplexProduct(const mpfr::mpreal& value, const ComplexReal& a) { - ComplexReal c; - - c.real = value * a.real; - c.img = value * a.img; - - return c; - } - - /// A function to calculate complex number cocient with real precision - ComplexReal ComplexCocient(const ComplexReal& a, const ComplexReal& b) { - ComplexReal c = ComplexConjugate(b); - c = ComplexProduct(a, c); - - mpfr::mpreal norm = 1. / Norm2(b); - - c = ComplexProduct(norm, c); - - return c; - } - - /// A function to calculate complex conjugate with real precision - ComplexReal ComplexConjugate(const ComplexReal& a) { - ComplexReal c; - - c.real = a.real; - c.img = -a.img; - - return c; - } - - /// A function to calculate the norm squared from a complex number with real precision - mpfr::mpreal Norm2(const ComplexReal& a) { - mpfr::mpreal result = a.real * a.real + a.img * a.img; - return result; - } - - /// A function to calculate complex number product by a value with real precision - ComplexReal SetComplexReal(const mpfr::mpreal& r, const mpfr::mpreal& i) { - ComplexReal c; - - c.real = r; - c.img = i; - - return c; - } - */ public: Double_t BL(Double_t Bmag, Double_t Lcoh); Double_t BLHalfSquared(Double_t Bmag, Double_t Lcoh); diff --git a/src/TRestAxionPhotonConversion.cxx b/src/TRestAxionPhotonConversion.cxx index 57e97854..b483518e 100644 --- a/src/TRestAxionPhotonConversion.cxx +++ b/src/TRestAxionPhotonConversion.cxx @@ -26,7 +26,7 @@ /// state. /// /// A peculiarity from this class is that it encapsulates internally the high -/// precision calculations using the real precisions types from library mpreal. +/// precision calculations using the real precisions types using TRestComplex. /// It is known that double precision is not good enough in some scenarios. /// ///-------------------------------------------------------------------------- @@ -46,7 +46,6 @@ #include "TRestAxionPhotonConversion.h" #include #include "TH1F.h" -#include "TRestComplex.h" using namespace std; From 5990026c67f817c4ad88696936b3ca97b2e9a7e3 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Fri, 2 Sep 2022 11:04:32 +0200 Subject: [PATCH 04/58] Renaming TRestAxionPhotonConversion to TRestAxionField --- ...onPhotonConversion.h => TRestAxionField.h} | 14 +++--- ...otonConversion.cxx => TRestAxionField.cxx} | 44 ++++++++----------- 2 files changed, 26 insertions(+), 32 deletions(-) rename inc/{TRestAxionPhotonConversion.h => TRestAxionField.h} (92%) rename src/{TRestAxionPhotonConversion.cxx => TRestAxionField.cxx} (87%) diff --git a/inc/TRestAxionPhotonConversion.h b/inc/TRestAxionField.h similarity index 92% rename from inc/TRestAxionPhotonConversion.h rename to inc/TRestAxionField.h index df2b649f..55d523db 100644 --- a/inc/TRestAxionPhotonConversion.h +++ b/inc/TRestAxionField.h @@ -20,8 +20,8 @@ * For the list of contributors see $REST_PATH/CREDITS. * *************************************************************************/ -#ifndef _TRestAxionPhotonConversion -#define _TRestAxionPhotonConversion +#ifndef _TRestAxionField +#define _TRestAxionField #include "TRestAxionBufferGas.h" #include "TRestComplex.h" @@ -29,7 +29,7 @@ /* /// MOVED TO TRestAxionFieldPropagationProcess class /// A structure to define the two components of a complex number using real precision. -/// To be used inside TRestAxionPhotonConversion. +/// To be used inside TRestAxionField. struct ComplexReal { /// The real part of the number mpfr::mpreal real = 0; @@ -39,7 +39,7 @@ struct ComplexReal { }; */ //! A basic class to define analytical axion-photon conversion calculations for axion helioscopes -class TRestAxionPhotonConversion : public TObject { +class TRestAxionField : public TObject { private: /// A two component vector to store the complex EM field amplitude. /// MOVED to TRestAxionFieldPropagationProcess @@ -80,9 +80,9 @@ class TRestAxionPhotonConversion : public TObject { /// void PropagateAxion(Double_t Bmag, Double_t Lcoh, Double_t Ea, Double_t ma, Double_t mg = 0, /// Double_t absLength = 0); - TRestAxionPhotonConversion(); - ~TRestAxionPhotonConversion(); + TRestAxionField(); + ~TRestAxionField(); - ClassDef(TRestAxionPhotonConversion, 2); + ClassDef(TRestAxionField, 2); }; #endif diff --git a/src/TRestAxionPhotonConversion.cxx b/src/TRestAxionField.cxx similarity index 87% rename from src/TRestAxionPhotonConversion.cxx rename to src/TRestAxionField.cxx index b483518e..10a6fff5 100644 --- a/src/TRestAxionPhotonConversion.cxx +++ b/src/TRestAxionField.cxx @@ -21,7 +21,7 @@ *************************************************************************/ ////////////////////////////////////////////////////////////////////////// -/// TRestAxionPhotonConversion is a class used to calculate the axion-photon mixing +/// TRestAxionField is a class used to calculate the axion-photon mixing /// and determine the probability of the particle being in an axion or photon /// state. /// @@ -35,42 +35,39 @@ /// /// History of developments: /// -/// 2019-March: First concept and implementation of TRestAxionPhotonConversion class. +/// 2019-March: First concept and implementation of TRestAxionField class. /// Javier Galan /// -/// \class TRestAxionPhotonConversion +/// \class TRestAxionField /// \author Javier Galan /// ///
/// -#include "TRestAxionPhotonConversion.h" +#include "TRestAxionField.h" #include #include "TH1F.h" using namespace std; -// Better we keep specifying mpfr:: explicitily -// using mpfr::mpreal; - -ClassImp(TRestAxionPhotonConversion); +ClassImp(TRestAxionField); /////////////////////////////////////////////// /// \brief Default constructor /// -TRestAxionPhotonConversion::TRestAxionPhotonConversion() { Initialize(); } +TRestAxionField::TRestAxionField() { Initialize(); } /////////////////////////////////////////////// /// \brief Default destructor /// -TRestAxionPhotonConversion::~TRestAxionPhotonConversion() {} +TRestAxionField::~TRestAxionField() {} /////////////////////////////////////////////// -/// \brief Initialization of TRestAxionPhotonConversion class +/// \brief Initialization of TRestAxionField class /// /// It sets the default real precision to be used with mpfr types. Now it is 30 digits. /// So that we can still calculate numbers such as : 1.0 - 1.e-30 /// -void TRestAxionPhotonConversion::Initialize() { +void TRestAxionField::Initialize() { TRestComplex::SetPrecision(30); fBufferGas = NULL; @@ -86,7 +83,7 @@ void TRestAxionPhotonConversion::Initialize() { /// `Lcoh` should be expressed in `mm`, and `Bmag` in `T`. /// The result will be given for an axion-photon coupling of 10^{-10} GeV^{-1} /// -double TRestAxionPhotonConversion::BL(Double_t Bmag, Double_t Lcoh) { +double TRestAxionField::BL(Double_t Bmag, Double_t Lcoh) { Double_t lengthInMeters = Lcoh / 1000.; Double_t tm = REST_Physics::lightSpeed / REST_Physics::naturalElectron * 1.0e-9; // GeV @@ -102,7 +99,7 @@ double TRestAxionPhotonConversion::BL(Double_t Bmag, Double_t Lcoh) { /// `Lcoh` should be expressed in `mm`, and `Bmag` in `T`. /// The result will be given for an axion-photon coupling of 10^{-10} GeV^{-1} /// -double TRestAxionPhotonConversion::BLHalfSquared(Double_t Bmag, Double_t Lcoh) // (BL/2)**2 +double TRestAxionField::BLHalfSquared(Double_t Bmag, Double_t Lcoh) // (BL/2)**2 { Double_t lengthInMeters = Lcoh / 1000.; @@ -126,9 +123,8 @@ double TRestAxionPhotonConversion::BLHalfSquared(Double_t Bmag, Double_t Lcoh) /// /// The returned value is given for g_ag = 10^-10 GeV-1 /// -Double_t TRestAxionPhotonConversion::GammaTransmissionProbability(Double_t Bmag, Double_t Lcoh, Double_t Ea, - Double_t ma, Double_t mg, - Double_t absLength) { +Double_t TRestAxionField::GammaTransmissionProbability(Double_t Bmag, Double_t Lcoh, Double_t Ea, Double_t ma, + Double_t mg, Double_t absLength) { mpfr::mpreal axionMass = ma; mpfr::mpreal cohLength = Lcoh / 1000.; // Default REST units are mm; @@ -137,7 +133,7 @@ Double_t TRestAxionPhotonConversion::GammaTransmissionProbability(Double_t Bmag, if (mg == 0 && fBufferGas) photonMass = fBufferGas->GetPhotonMass(Ea); RESTDebug << "+--------------------------------------------------------------------------+" << RESTendl; - RESTDebug << " TRestAxionPhotonConversion::GammaTransmissionProbability. Parameter summary" << RESTendl; + RESTDebug << " TRestAxionField::GammaTransmissionProbability. Parameter summary" << RESTendl; RESTDebug << " Photon mass : " << photonMass << " eV" << RESTendl; RESTDebug << " Axion mass : " << ma << " eV" << RESTendl; RESTDebug << " Axion energy : " << Ea << " keV" << RESTendl; @@ -197,9 +193,8 @@ Double_t TRestAxionPhotonConversion::GammaTransmissionProbability(Double_t Bmag, /// /// The returned value is given for g_ag = 10^-10 GeV-1 /// -Double_t TRestAxionPhotonConversion::AxionAbsorptionProbability(Double_t Bmag, Double_t Lcoh, Double_t Ea, - Double_t ma, Double_t mg, - Double_t absLength) { +Double_t TRestAxionField::AxionAbsorptionProbability(Double_t Bmag, Double_t Lcoh, Double_t Ea, Double_t ma, + Double_t mg, Double_t absLength) { mpfr::mpreal axionMass = ma; mpfr::mpreal cohLength = Lcoh / 1000.; // Default REST units are mm; @@ -209,8 +204,7 @@ Double_t TRestAxionPhotonConversion::AxionAbsorptionProbability(Double_t Bmag, D if (fDebug) { RESTDebug << "+--------------------------------------------------------------------------+" << RESTendl; - RESTDebug << " TRestAxionPhotonConversion::GammaTransmissionProbability. Parameter summary" - << RESTendl; + RESTDebug << " TRestAxionField::GammaTransmissionProbability. Parameter summary" << RESTendl; RESTDebug << " Photon mass : " << photonMass << " eV" << RESTendl; RESTDebug << " Axion mass : " << ma << " eV" << RESTendl; RESTDebug << " Axion energy : " << Ea << " keV" << RESTendl; @@ -260,7 +254,7 @@ Double_t TRestAxionPhotonConversion::AxionAbsorptionProbability(Double_t Bmag, D /// Commented because it uses ComplexReal structure that is moved to TRestAxionFieldPropagationProcess class /* -void TRestAxionPhotonConversion::PropagateAxion(Double_t Bmag, Double_t Lcoh, Double_t Ea, Double_t ma, +void TRestAxionField::PropagateAxion(Double_t Bmag, Double_t Lcoh, Double_t Ea, Double_t ma, Double_t mg, Double_t absLength) { mpfr::mpreal axionMass = ma; mpfr::mpreal cohLength = Lcoh / 1000.; // Default REST units are mm; @@ -270,7 +264,7 @@ void TRestAxionPhotonConversion::PropagateAxion(Double_t Bmag, Double_t Lcoh, Do if (fDebug) { RESTDebug << "+--------------------------------------------------------------------------+" << -RESTendl; RESTDebug << " TRestAxionPhotonConversion::GammaTransmissionProbability. Parameter summary" << +RESTendl; RESTDebug << " TRestAxionField::GammaTransmissionProbability. Parameter summary" << RESTendl; RESTDebug << " Photon mass : " << photonMass << " eV" << RESTendl; RESTDebug << " Axion mass : " << ma << " eV" << RESTendl; RESTDebug << " Axion energy : " << Ea << " keV" << RESTendl; RESTDebug << " Lcoh : " << Lcoh << " mm" << RESTendl; RESTDebug << " Bmag : " << Bmag << " T" << RESTendl; RESTDebug << From 73d7e5b2b835a65bb255543d7e5c68cfce904c9a Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Fri, 2 Sep 2022 13:37:14 +0200 Subject: [PATCH 05/58] TRestAxionLikelihood. Updating to TRestAxionField renaming --- inc/TRestAxionLikelihood.h | 8 ++++---- src/TRestAxionLikelihood.cxx | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/inc/TRestAxionLikelihood.h b/inc/TRestAxionLikelihood.h index afd8d231..5a0c70d6 100644 --- a/inc/TRestAxionLikelihood.h +++ b/inc/TRestAxionLikelihood.h @@ -26,7 +26,7 @@ #include #include "TRestAxionBufferGas.h" -#include "TRestAxionPhotonConversion.h" +#include "TRestAxionField.h" #include "TRestAxionSolarModel.h" #include "TRestAxionSpectrum.h" @@ -63,9 +63,9 @@ class TRestAxionLikelihood : public TRestMetadata { Double_t fLastStepDensity = 0.; //-> - TRestAxionPhotonConversion* fPhotonConversion; //! - TRestAxionBufferGas* fBufferGas; //! - TRestAxionSpectrum* fAxionSpectrum; //! + TRestAxionField* fAxionField; //! + TRestAxionBufferGas* fBufferGas; //! + TRestAxionSpectrum* fAxionSpectrum; //! /// Random number generator TRandom3* fRandom; //! diff --git a/src/TRestAxionLikelihood.cxx b/src/TRestAxionLikelihood.cxx index dac3d9c4..f5d26c17 100644 --- a/src/TRestAxionLikelihood.cxx +++ b/src/TRestAxionLikelihood.cxx @@ -84,9 +84,9 @@ void TRestAxionLikelihood::Initialize() { fBufferGas = new TRestAxionBufferGas(); // Conversion probabilities as defined by van Bibber paper - fPhotonConversion = new TRestAxionPhotonConversion(); + fAxionField = new TRestAxionField(); - fPhotonConversion->AssignBufferGas(fBufferGas); + fAxionField->AssignBufferGas(fBufferGas); // Solar axion flux on earth fAxionSpectrum = new TRestAxionSpectrum(fConfigFileName.c_str()); @@ -288,8 +288,8 @@ Double_t TRestAxionLikelihood::GetSignal(Double_t ma, Double_t g10_4, Double_t r Double_t dE = 0.01; for (Double_t en = fErange.X(); en < fErange.Y(); en = en + dE) { Double_t Phi_a = fAxionSpectrum->GetDifferentialSolarAxionFlux(en); - // TODO Needs to be readapted to the new TRestAxionPhotonConversion implementation - // Double_t Pa_g = fPhotonConversion->GammaTransmissionProbability(en, fBmag, ma); + // TODO Needs to be readapted to the new TRestAxionField implementation + // Double_t Pa_g = fField->GammaTransmissionProbability(en, fBmag, ma); Double_t Pa_g = 0; // Just dummy 0 probability!! Double_t nGamma = Pa_g * Phi_a; @@ -347,7 +347,7 @@ Double_t TRestAxionLikelihood::LogLikelihood(Double_t ma, Double_t g10_4, Double // Double_t Ngamma = solarFluxG10 * magnetArea * (fTExpVacuum * 3600.) * fEfficiency; // Double_t nGammaVacuum = - // fPhotonConversion->SetAxionMass( Double_t m ) { fAxionMass = m; } + // fField->SetAxionMass( Double_t m ) { fAxionMass = m; } return lhood; } @@ -361,9 +361,9 @@ void TRestAxionLikelihood::InitFromConfigFile() { fRmag = GetDblParameterWithUnits("Rmag", 300); fLmag = GetDblParameterWithUnits("Lmag", 4500.); - /// This needs to be reviewed. TRestAxionPhotonConversion does not store those parameter anymore. - // fPhotonConversion->SetCoherenceLength(fLmag); - // fPhotonConversion->SetMagneticField(fBmag); + /// This needs to be reviewed. TRestAxionField does not store those parameter anymore. + // fField->SetCoherenceLength(fLmag); + // fField->SetMagneticField(fBmag); fEfficiency = StringToDouble(GetParameter("efficiency", "1")); From 97715bb20e9c015aafa0c2d4d0f1cceed06fe65f Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Fri, 23 Sep 2022 17:52:59 +0200 Subject: [PATCH 06/58] TRestAxionBufferGas. Fixing units to the recent REST units standards --- src/TRestAxionBufferGas.cxx | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/TRestAxionBufferGas.cxx b/src/TRestAxionBufferGas.cxx index 6ef19440..8ea9d4fe 100644 --- a/src/TRestAxionBufferGas.cxx +++ b/src/TRestAxionBufferGas.cxx @@ -142,8 +142,13 @@ void TRestAxionBufferGas::InitFromConfigFile() { auto gasDefinition = GetElement("gas"); while (gasDefinition) { TString gasName = GetFieldValue("name", gasDefinition); - Double_t gasDensity = GetDblParameterWithUnits("density", gasDefinition) * units("g/cm3"); - SetGasDensity(gasName, gasDensity); + if (gasName.Contains("+")) { + TString gasDensity = GetFieldValue("density", gasDefinition); + SetGasMixture(gasName, gasDensity); + } else { + Double_t gasDensity = GetDblParameterWithUnits("density", gasDefinition); + SetGasDensity(gasName, gasDensity); + } gasDefinition = GetNextElement(gasDefinition); } @@ -153,6 +158,8 @@ void TRestAxionBufferGas::InitFromConfigFile() { /////////////////////////////////////////////// /// \brief It adds a new gas component to the mixture. If it already exists it will update its density. /// +/// Density must be given in standard REST units: kg/mm^3 +/// void TRestAxionBufferGas::SetGasDensity(TString gasName, Double_t density) { Int_t gasIndex = FindGasIndex(gasName); @@ -176,7 +183,7 @@ void TRestAxionBufferGas::SetGasMixture(TString gasMixture, TString gasDensities if (names.size() == densities.size()) { for (int n = 0; n < names.size(); n++) { Double_t density = GetValueInRESTUnits(densities[n]); - SetGasDensity(names[n], density * units("g/cm3")); + SetGasDensity(names[n], density); } } else { this->SetError("SetGasMixture. Number of gases does not match the densities!"); @@ -340,7 +347,8 @@ Double_t TRestAxionBufferGas::GetFormFactor(TString gasName, Double_t energy) { Double_t TRestAxionBufferGas::GetPhotonAbsorptionLength(Double_t energy) { Double_t attLength = 0; for (unsigned int n = 0; n < fBufferGasName.size(); n++) - attLength += fBufferGasDensity[n] * GetAbsorptionCoefficient(fBufferGasName[n], energy); + attLength += + fBufferGasDensity[n] * units("g/cm^3") * GetAbsorptionCoefficient(fBufferGasName[n], energy); return attLength; } @@ -381,7 +389,8 @@ Double_t TRestAxionBufferGas::GetPhotonMass(double en) { RESTError << "W value must be defined in TRestAxionBufferGas::GetPhotonMass" << RESTendl; RESTError << "This gas will not contribute to the calculation of the photon mass!" << RESTendl; } else { - photonMass += fBufferGasDensity[n] * GetFormFactor(fBufferGasName[n], en) / W_value; + photonMass += + fBufferGasDensity[n] * units("g/cm^3") * GetFormFactor(fBufferGasName[n], en) / W_value; } } @@ -501,7 +510,8 @@ void TRestAxionBufferGas::PrintMetadata() { RESTMetadata << "---------------------------" << RESTendl; for (unsigned int n = 0; n < fBufferGasName.size(); n++) { RESTMetadata << " Gas name : " << fBufferGasName[n] << RESTendl; - RESTMetadata << " Gas density : " << fBufferGasDensity[n] << " g/cm3" << RESTendl; + RESTMetadata << " Gas density : " << fBufferGasDensity[n] * units("g/cm^3") << " g/cm3" + << RESTendl; RESTMetadata << " Form factor energy range : ( " << fFactorEnergy[n][0] << ", " << fFactorEnergy[n].back() << " ) keV" << RESTendl; RESTMetadata << " Absorption energy range : ( " << fAbsEnergy[n][0] << ", " From 879c8c87a7271f2f278d880545ae874c1578818c Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Mon, 26 Sep 2022 12:29:56 +0200 Subject: [PATCH 07/58] TRestAxionBufferGas::PrintMetadata now prints out equivalent photon mass --- src/TRestAxionBufferGas.cxx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/TRestAxionBufferGas.cxx b/src/TRestAxionBufferGas.cxx index 8ea9d4fe..c19a7958 100644 --- a/src/TRestAxionBufferGas.cxx +++ b/src/TRestAxionBufferGas.cxx @@ -506,7 +506,9 @@ void TRestAxionBufferGas::PrintMetadata() { if (fBufferGasName.size() == 0) { RESTMetadata << "Buffer medium is vacuum" << RESTendl; } else { - RESTMetadata << "Buffer gases defined : " << RESTendl; + RESTMetadata << "Photon mass at 4keV : " << this->GetPhotonMass(4.) << " eV" << RESTendl; + RESTMetadata << " " << RESTendl; + RESTMetadata << "Buffer gases inside mixture : " << RESTendl; RESTMetadata << "---------------------------" << RESTendl; for (unsigned int n = 0; n < fBufferGasName.size(); n++) { RESTMetadata << " Gas name : " << fBufferGasName[n] << RESTendl; From fd46ec9936684be92aadd0050c4c612b33fc84da Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Mon, 26 Sep 2022 12:30:35 +0200 Subject: [PATCH 08/58] pipeline/physics/AxionPhysicsValidation.C added --- pipeline/physics/AxionPhysicsValidation.C | 174 ++++++++++++++++++++++ pipeline/physics/gas.rml | 9 ++ 2 files changed, 183 insertions(+) create mode 100644 pipeline/physics/AxionPhysicsValidation.C create mode 100644 pipeline/physics/gas.rml diff --git a/pipeline/physics/AxionPhysicsValidation.C b/pipeline/physics/AxionPhysicsValidation.C new file mode 100644 index 00000000..8b459d7f --- /dev/null +++ b/pipeline/physics/AxionPhysicsValidation.C @@ -0,0 +1,174 @@ +#include +#include + +Int_t AxionPhysicsValidation() { + std::cout << endl; + + std::cout << "Evaluating magnetic field for BabyIAXO" << std::endl; + std::cout << "--------------------------------------" << std::endl; + + TRestAxionMagneticField magneticField("fields.rml", "babyIAXO"); + + std::cout << "Field at (0,0,0) : " << magneticField.GetMagneticField(0, 0, 0).Y() << std::endl; + std::cout << "Field at (0,0,-4000) : " << magneticField.GetMagneticField(0, 0, -4000).Y() << std::endl; + std::cout << "Field at (0,300,4000) : " << magneticField.GetMagneticField(0, 300, 4000).Y() << std::endl; + + if (std::round(magneticField.GetMagneticField(0, 0, 0).Y() * 1000) != -2007) { + std::cout << "Field at (0,0,0) is not -2.07 T!" << std::endl; + return 10; + } + + if (std::round(magneticField.GetMagneticField(0, 0, -4000).Y() * 1000) != -1700) { + std::cout << "Field at (0,0,-4000) is not -1.7 T!" << std::endl; + return 11; + } + + if (std::round(magneticField.GetMagneticField(0, 300, 4000).Y() * 1000) != -1290) { + std::cout << "Field at (0,0,4000) is not -1.29 T!" << std::endl; + return 12; + } + + std::cout << endl; + std::cout << "--> Magnetic field evaluation succeeded!" << std::endl; + std::cout << endl; + + std::cout << "Evaluating dummy gas mixtures" << std::endl; + std::cout << "-----------------------------" << std::endl; + + TRestAxionBufferGas helium("gas.rml", "helium"); + + std::cout << "Gas name : " << helium.GetName() << std::endl; + std::cout << "---------------" << std::endl; + std::cout << "Number of gases : " << helium.GetNumberOfGases() << std::endl; + std::cout << "Photon mass at 3keV : " << helium.GetPhotonMass(3) << " eV" << std::endl; + std::cout << "Absorption lenght (cm-1) at 3keV : " << helium.GetPhotonAbsorptionLength(3) << std::endl; + + if (std::round(1.e6 * helium.GetPhotonMass(3)) != 1017) { + std::cout << "Photon mass is not 1.017 meV!" << std::endl; + return 21; + } + + if (std::round(1.e12 * helium.GetPhotonAbsorptionLength(3)) != 4720) { + std::cout << "Absorption length is not 4.72e-9 cm-1!" << std::endl; + return 22; + } + + std::cout << std::endl; + + TRestAxionBufferGas mixture("gas.rml", "HeNeMixture"); + + std::cout << "Gas name : " << mixture.GetName() << std::endl; + std::cout << "---------------" << std::endl; + std::cout << "Number of gases : " << mixture.GetNumberOfGases() << std::endl; + std::cout << "Photon mass at 3keV : " << mixture.GetPhotonMass(3) << " eV" << std::endl; + std::cout << "Absorption lenght (cm-1) at 3keV : " << mixture.GetPhotonAbsorptionLength(3) << std::endl; + + if (std::round(1.e3 * mixture.GetPhotonMass(3)) != 651) { + std::cout << "Photon mass is not 0.651 eV!" << std::endl; + return 31; + } + + if (std::round(1.e3 * mixture.GetPhotonAbsorptionLength(3)) != 397) { + std::cout << "Absorption length is not 0.397 cm-1!" << std::endl; + return 32; + } + + std::cout << endl; + std::cout << "--> Buffer gas evaluation succeeded!" << std::endl; + std::cout << endl; + + //// Retrieving the magnetic field profile for a dummy trajectory. + //// We force it to be strongly un-aligned with z + + TVector3 position1(-300, 600, -6000); + TVector3 position2(600, -600, 6000); + + TVector3 direction = position2 - position1; + direction.Unit().Print(); + + std::vector v = magneticField.GetFieldBoundaries(position1, direction.Unit()); + if (v.size() != 2) { + std::cout << "The track does not traverse the magnetic volume" << std::endl; + return 100; + } + + std::cout << "In position. X: " << v[0].X() << " Y: " << v[0].Y() << " Z: " << v[0].Z() << std::endl; + std::cout << "Out position. X: " << v[1].X() << " Y: " << v[1].Y() << " Z: " << v[1].Z() << std::endl; + + TVector3 in = v[0]; + TVector3 out = v[1]; + + if (std::round(v[0].X()) != -101 || std::round(v[0].Y()) != 335 || std::round(v[0].Z()) != -3350) { + std::cout << "Wrong boundary determination. The input position is wrong!" << std::endl; + return 101; + } + + if (std::round(v[1].X()) != 293 || std::round(v[1].Y()) != -191 || std::round(v[1].Z()) != 1910) { + std::cout << "Wrong boundary determination. The output position is wrong!" << std::endl; + return 102; + } + + Double_t dl = 50; // 5cm + std::vector bProfile = magneticField.GetTransversalComponentAlongPath(v[0], v[1], dl); + + // for (auto& x : bProfile) std::cout << x << " "; + // std::cout << std::endl; + + std::cout << "Field elements (5cm step) : " << bProfile.size() << std::endl; + if (bProfile.size() != 107) { + std::cout << "Number of field elements is not the right value!" << std::endl; + return 103; + } + + std::cout << "Coherence length : " << (bProfile.size() - 1) * 50 << " mm" << std::endl; + + Double_t fieldAverage = std::accumulate(bProfile.begin(), bProfile.end(), 0.0) / bProfile.size(); + + std::cout << "Field average (T): " << fieldAverage << std::endl; + + if (std::round(fieldAverage * 1000.) != 1901) { + std::cout << "Field average is not 1.901 T!" << std::endl; + return 104; + } + + std::cout << endl; + std::cout << "--> Track boundaries and field along path evaluation succeeded!" << std::endl; + std::cout << endl; + + TRestAxionField axionField; + axionField.AssignBufferGas(&helium); + + std::cout << "BL(8.8T, 9.26m) : " << axionField.BL(8.8, 9260) << std::endl; + std::cout << "0.5 x (BL)^2 : " << axionField.BLHalfSquared(8.8, 9260) << std::endl; + + if (std::round(axionField.BL(8.8, 9260) * 1e10) != 81) { + std::cout << "BL calculation is not 8.1e-9!" << std::endl; + return 201; + } + + if (std::round(axionField.BLHalfSquared(8.8, 9260) * 1e20) != 1627) { + std::cout << "(BL)^2/2 calculation is not 1.627e-17!" << std::endl; + return 202; + } + + Double_t B = 8.8; // T + Double_t L = 9260.; // mm + Double_t ma = 1.e-2; // eV + Double_t Ea = 3.0; // keV + + std::cout << endl; + std::cout << "--> Axion-photon probability calculations succeeded!" << std::endl; + std::cout << endl; + + // axionField.GammaTransmissionProbability(bProfile, 50, 3., 0.1); + + std::cout << "Probability (CAST. Helium. ma:10meV - Ea:3keV): " + << axionField.GammaTransmissionProbability(B, L, Ea, ma) << std::endl; + + if (std::round(axionField.GammaTransmissionProbability(B, L, Ea, ma) * 1.e20) != 1547) { + std::cout << "CAST Probability. Wrong axion-photon conversion probability" << std::endl; + return 301; + } + + return 0; +} diff --git a/pipeline/physics/gas.rml b/pipeline/physics/gas.rml new file mode 100644 index 00000000..abf23ee3 --- /dev/null +++ b/pipeline/physics/gas.rml @@ -0,0 +1,9 @@ + + + + + + + + + From bc50df2829783e1b6e855bb19da7539ef73b9aa2 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Mon, 26 Sep 2022 12:34:40 +0200 Subject: [PATCH 09/58] Adding axion physics validation to pipeline --- .github/workflows/validation.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/.github/workflows/validation.yml b/.github/workflows/validation.yml index ee2180b2..baaef493 100644 --- a/.github/workflows/validation.yml +++ b/.github/workflows/validation.yml @@ -54,6 +54,28 @@ jobs: key: ${{ env.BRANCH_NAME }}-${{ github.sha }} path: ${{ env.REST_PATH }} + Physics: + name: Check physics + 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: Basic physics tests + run: | + source ${{ env.REST_PATH }}/thisREST.sh + cd pipeline/physics/ + wget https://sultan.unizar.es/axionlib-data/magneticField/fields.rml + wget https://sultan.unizar.es/axionlib-data/magneticField/Bykovskiy_201906.dat + restRoot -b -q AxionPhysicsValidation.C + Metadata: name: Check metadata runs-on: ubuntu-latest From de282f38f4b0d12a3e7e27ac219a77796547e792 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Mon, 26 Sep 2022 13:54:23 +0200 Subject: [PATCH 10/58] GitHub validation. Adding gases data files --- .github/workflows/validation.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/validation.yml b/.github/workflows/validation.yml index baaef493..55acdd29 100644 --- a/.github/workflows/validation.yml +++ b/.github/workflows/validation.yml @@ -72,6 +72,10 @@ jobs: run: | source ${{ env.REST_PATH }}/thisREST.sh cd pipeline/physics/ + wget https://sultan.unizar.es/axionlib-data/bufferGas/He.abs + wget https://sultan.unizar.es/axionlib-data/bufferGas/He.nff + wget https://sultan.unizar.es/axionlib-data/bufferGas/Ne.abs + wget https://sultan.unizar.es/axionlib-data/bufferGas/Ne.nff wget https://sultan.unizar.es/axionlib-data/magneticField/fields.rml wget https://sultan.unizar.es/axionlib-data/magneticField/Bykovskiy_201906.dat restRoot -b -q AxionPhysicsValidation.C From e1add6a2cef74f96b6111f4a5fd27e19312eaa89 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Mon, 26 Sep 2022 13:57:59 +0200 Subject: [PATCH 11/58] AxionPhysicsValidation now uses bufferGases.rml from axionlib-data --- .github/workflows/validation.yml | 1 + pipeline/physics/AxionPhysicsValidation.C | 4 ++-- pipeline/physics/gas.rml | 9 --------- 3 files changed, 3 insertions(+), 11 deletions(-) delete mode 100644 pipeline/physics/gas.rml diff --git a/.github/workflows/validation.yml b/.github/workflows/validation.yml index 55acdd29..eca158b5 100644 --- a/.github/workflows/validation.yml +++ b/.github/workflows/validation.yml @@ -76,6 +76,7 @@ jobs: wget https://sultan.unizar.es/axionlib-data/bufferGas/He.nff wget https://sultan.unizar.es/axionlib-data/bufferGas/Ne.abs wget https://sultan.unizar.es/axionlib-data/bufferGas/Ne.nff + wget https://sultan.unizar.es/axionlib-data/bufferGas/bufferGases.rml wget https://sultan.unizar.es/axionlib-data/magneticField/fields.rml wget https://sultan.unizar.es/axionlib-data/magneticField/Bykovskiy_201906.dat restRoot -b -q AxionPhysicsValidation.C diff --git a/pipeline/physics/AxionPhysicsValidation.C b/pipeline/physics/AxionPhysicsValidation.C index 8b459d7f..1419afdd 100644 --- a/pipeline/physics/AxionPhysicsValidation.C +++ b/pipeline/physics/AxionPhysicsValidation.C @@ -35,7 +35,7 @@ Int_t AxionPhysicsValidation() { std::cout << "Evaluating dummy gas mixtures" << std::endl; std::cout << "-----------------------------" << std::endl; - TRestAxionBufferGas helium("gas.rml", "helium"); + TRestAxionBufferGas helium("bufferGases.rml", "helium"); std::cout << "Gas name : " << helium.GetName() << std::endl; std::cout << "---------------" << std::endl; @@ -55,7 +55,7 @@ Int_t AxionPhysicsValidation() { std::cout << std::endl; - TRestAxionBufferGas mixture("gas.rml", "HeNeMixture"); + TRestAxionBufferGas mixture("bufferGases.rml", "HeNeMixture"); std::cout << "Gas name : " << mixture.GetName() << std::endl; std::cout << "---------------" << std::endl; diff --git a/pipeline/physics/gas.rml b/pipeline/physics/gas.rml deleted file mode 100644 index abf23ee3..00000000 --- a/pipeline/physics/gas.rml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - From be9028c385f2e0689072cdf3680f6b1734169f2f Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Wed, 5 Oct 2022 17:22:56 +0200 Subject: [PATCH 12/58] TRestAxionField::GammaTransmissionProbability with Bprofile (WIP) --- inc/TRestAxionField.h | 3 ++ src/TRestAxionField.cxx | 80 +++++++++++++++++++++++++++++++++++++++-- 2 files changed, 81 insertions(+), 2 deletions(-) diff --git a/inc/TRestAxionField.h b/inc/TRestAxionField.h index 55d523db..37cc547f 100644 --- a/inc/TRestAxionField.h +++ b/inc/TRestAxionField.h @@ -72,6 +72,9 @@ class TRestAxionField : public TObject { Double_t GammaTransmissionProbability(Double_t Bmag, Double_t Lcoh, Double_t Ea, Double_t ma, Double_t mg = 0, Double_t absLength = 0); + Double_t GammaTransmissionProbability(std::vector Bmag, Double_t deltaL, Double_t Ea, + Double_t ma, Double_t mg = 0, Double_t absLength = 0); + Double_t AxionAbsorptionProbability(Double_t Bmag, Double_t Lcoh, Double_t Ea, Double_t ma, Double_t mg = 0, Double_t absLength = 0); diff --git a/src/TRestAxionField.cxx b/src/TRestAxionField.cxx index 10a6fff5..9b169b31 100644 --- a/src/TRestAxionField.cxx +++ b/src/TRestAxionField.cxx @@ -114,8 +114,9 @@ double TRestAxionField::BLHalfSquared(Double_t Bmag, Double_t Lcoh) // (BL/2)** /// \brief Performs the calculation of axion-photon conversion probability using directly /// equation (11) from van Bibber, Phys Rev D Part Fields. 1989. /// -/// m_gamma will be obtainned from buffer gas definition. If no buffer gas has been assigned the medium -/// will be assumed to be vacuum. +/// If m_gamma (mg) is not given as an argument, i.e. it is equal to zero, then m_gamma +/// will be obtainned from the buffer gas definition. If no buffer gas has been assigned +/// then the medium will be assumed to be vacuum. /// /// Ea in keV, ma in eV, mgamma in eV, Lcoh in mm, Bmag in T /// @@ -180,6 +181,81 @@ Double_t TRestAxionField::GammaTransmissionProbability(Double_t Bmag, Double_t L return sol; } +/////////////////////////////////////////////// +/// \brief Performs the calculation of axion-photon conversion probability using directly +/// equation (28) from J. Redondo and A. Ringwald, Light shinning through walls. +/// https://arxiv.org/pdf/1011.3741.pdf +/// +/// If m_gamma (mg) is not given as an argument, i.e. it is equal to zero, then m_gamma +/// will be obtainned from the buffer gas definition. If no buffer gas has been assigned +/// then the medium will be assumed to be vacuum. +/// +/// Ea in keV, ma in eV, mgamma in eV, Lcoh in mm, Bmag in T +/// +/// mg in eV, absLength in cm-1 +/// +/// The returned value is given for g_ag = 10^-10 GeV-1 +/// +Double_t TRestAxionField::GammaTransmissionProbability(std::vector Bmag, Double_t deltaL, + Double_t Ea, Double_t mg, Double_t absLength) { + mpfr::mpreal axionMass = ma; + mpfr::mpreal cohLength = Lcoh / 1000.; // Default REST units are mm; + + mpfr::mpreal photonMass = mg; + + if (mg == 0 && fBufferGas) photonMass = fBufferGas->GetPhotonMass(Ea); + + Double_t fieldAverage = 0; + if (Bmag.size() > 0) fieldAverage = std::accumulate(Bmag.begin(), Bmag.end(), 0.0) / Bmag.size(); + + RESTDebug << "+--------------------------------------------------------------------------+" << RESTendl; + RESTDebug << " TRestAxionField::GammaTransmissionProbability. Parameter summary" << RESTendl; + RESTDebug << " Photon mass : " << photonMass << " eV" << RESTendl; + RESTDebug << " Axion mass : " << ma << " eV" << RESTendl; + RESTDebug << " Axion energy : " << Ea << " keV" << RESTendl; + RESTDebug << " Lcoh : " << Lcoh << " mm" << RESTendl; + RESTDebug << " Bmag average : " << fieldAverage << " T" << RESTendl; + RESTDebug << "+--------------------------------------------------------------------------+" << RESTendl; + + if (ma == 0.0 && photonMass == 0.0) return BLHalfSquared(Bmag, Lcoh); + + mpfr::mpreal q = (ma * ma - photonMass * photonMass) / 2. / Ea / 1000.0; + mpfr::mpreal l = cohLength * REST_Physics::PhMeterIneV; + mpfr::mpreal phi = q * l; + + mpfr::mpreal Gamma = absLength; + if (absLength == 0 && fBufferGas) Gamma = fBufferGas->GetPhotonAbsorptionLength(Ea); // cm-1 + mpfr::mpreal GammaL = Gamma * cohLength * 100; + + if (fDebug) { + RESTDebug << "+------------------------+" << RESTendl; + RESTDebug << " Intermediate calculations" << RESTendl; + RESTDebug << " q : " << q << " eV" << RESTendl; + RESTDebug << " l : " << l << " eV-1" << RESTendl; + RESTDebug << " phi : " << phi << RESTendl; + RESTDebug << "Gamma : " << Gamma << RESTendl; + RESTDebug << "GammaL : " << GammaL << RESTendl; + RESTDebug << "+------------------------+" << RESTendl; + } + + mpfr::mpreal MFactor = phi * phi + GammaL * GammaL / 4.0; + MFactor = 1.0 / MFactor; + + if (fDebug) { + RESTDebug << "Mfactor : " << MFactor << RESTendl; + RESTDebug << "(BL/2)^2 : " << BLHalfSquared(Bmag, Lcoh) << RESTendl; + RESTDebug << "cos(phi) : " << cos(phi) << RESTendl; + RESTDebug << "Exp(-GammaL) : " << exp(-GammaL) << RESTendl; + } + + double sol = + (double)(MFactor * BLHalfSquared(Bmag, Lcoh) * (1 + exp(-GammaL) - 2 * exp(-GammaL / 2) * cos(phi))); + + RESTDebug << "Axion-photon transmission probability : " << sol << RESTendl; + + return sol; +} + /////////////////////////////////////////////// /// \brief Performs the calculation of axion-photon absorption probability using directly /// equation (18) from van Bibber, Phys Rev D Part Fields. 1989. From d90dcd61f8c25aa875c484f25a4dce702725fc88 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Wed, 19 Oct 2022 12:42:24 +0200 Subject: [PATCH 13/58] Adding macro loading validation --- .github/workflows/validation.yml | 22 ++++++++++++++++++++++ pipeline/validateMacros.py | 21 +++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100755 pipeline/validateMacros.py diff --git a/.github/workflows/validation.yml b/.github/workflows/validation.yml index eca158b5..9ba2ecae 100644 --- a/.github/workflows/validation.yml +++ b/.github/workflows/validation.yml @@ -54,6 +54,28 @@ jobs: key: ${{ env.BRANCH_NAME }}-${{ github.sha }} path: ${{ env.REST_PATH }} + macros-health: + name: "Macros with clean error output" + 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: Load restRootMacros in axiolib standalone + run: | + source ${{ env.REST_PATH }}/thisREST.sh + cd pipeline + export DISPLAY=localhost:0.0 + echo "Running validation script" + python3 validateMacros.py + Physics: name: Check physics runs-on: ubuntu-latest diff --git a/pipeline/validateMacros.py b/pipeline/validateMacros.py new file mode 100755 index 00000000..005d339b --- /dev/null +++ b/pipeline/validateMacros.py @@ -0,0 +1,21 @@ +import os, sys + +os.system("restRoot -b -q -m 1 > error.log 2>&1") + +with open('error.log') as f: + lines = f.readlines() + +for line in lines: + if line.find("warning") >= 0 or line.find("Warning") >= 0: + print("Find warnings when launching restRoot!") + print(lines) + sys.exit(1) + if line.find("error") >= 0 or line.find("Error") >= 0: + print("Find error messages when launching restRoot!") + print(lines) + sys.exit(2) + +print("No warning found when loading macros") +print("Succeed") + +sys.exit(0) From f7409bd966afb1fe0909ed638dba0471df478bc7 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Wed, 19 Oct 2022 13:30:24 +0200 Subject: [PATCH 14/58] TRestAxionField added to fix compilation issues (WIP) --- src/TRestAxionField.cxx | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/src/TRestAxionField.cxx b/src/TRestAxionField.cxx index 9b169b31..b98b94a8 100644 --- a/src/TRestAxionField.cxx +++ b/src/TRestAxionField.cxx @@ -47,6 +47,8 @@ #include #include "TH1F.h" +#include + using namespace std; ClassImp(TRestAxionField); @@ -196,10 +198,18 @@ Double_t TRestAxionField::GammaTransmissionProbability(Double_t Bmag, Double_t L /// /// The returned value is given for g_ag = 10^-10 GeV-1 /// +/// \note The density is for the moment homogeneous. We would need to implemnent a double integral +/// to solve the problem with a density profile. TOBE implemented in a new method if needed, where +/// Gamma is not constant and \integral{q(z)} is integrated at each step. +/// Double_t TRestAxionField::GammaTransmissionProbability(std::vector Bmag, Double_t deltaL, - Double_t Ea, Double_t mg, Double_t absLength) { + Double_t Ea, Double_t ma, Double_t mg, + Double_t absLength) { mpfr::mpreal axionMass = ma; - mpfr::mpreal cohLength = Lcoh / 1000.; // Default REST units are mm; + + // Default REST units are mm. We express cohLength in m. + Double_t Lcoh = (Bmag.size() - 1) * deltaL; // in mm + Double_t cohLength = Lcoh / 1000.; // in m mpfr::mpreal photonMass = mg; @@ -213,11 +223,12 @@ Double_t TRestAxionField::GammaTransmissionProbability(std::vector Bma RESTDebug << " Photon mass : " << photonMass << " eV" << RESTendl; RESTDebug << " Axion mass : " << ma << " eV" << RESTendl; RESTDebug << " Axion energy : " << Ea << " keV" << RESTendl; - RESTDebug << " Lcoh : " << Lcoh << " mm" << RESTendl; + RESTDebug << " Lcoh : " << cohLength << " mm" << RESTendl; RESTDebug << " Bmag average : " << fieldAverage << " T" << RESTendl; RESTDebug << "+--------------------------------------------------------------------------+" << RESTendl; - if (ma == 0.0 && photonMass == 0.0) return BLHalfSquared(Bmag, Lcoh); + // In vacuum + if (ma == 0.0 && photonMass == 0.0) return BLHalfSquared(fieldAverage, Lcoh); mpfr::mpreal q = (ma * ma - photonMass * photonMass) / 2. / Ea / 1000.0; mpfr::mpreal l = cohLength * REST_Physics::PhMeterIneV; @@ -243,14 +254,26 @@ Double_t TRestAxionField::GammaTransmissionProbability(std::vector Bma if (fDebug) { RESTDebug << "Mfactor : " << MFactor << RESTendl; - RESTDebug << "(BL/2)^2 : " << BLHalfSquared(Bmag, Lcoh) << RESTendl; + RESTDebug << "(BL/2)^2 : " << BLHalfSquared(fieldAverage, Lcoh) << RESTendl; RESTDebug << "cos(phi) : " << cos(phi) << RESTendl; RESTDebug << "Exp(-GammaL) : " << exp(-GammaL) << RESTendl; } + for (unsigned int n = 0; n < Bmag.size() - 1; n++) { + Double_t Bmiddle = 0.5 * (Bmag[n] + Bmag[n + 1]); + + TRestComplex qC(0, -q); + qC = TRestComplex::Exp(qC); + + std::cout << "n : " << n << " qC: " << qC << std::endl; + } + + /* double sol = - (double)(MFactor * BLHalfSquared(Bmag, Lcoh) * (1 + exp(-GammaL) - 2 * exp(-GammaL / 2) * cos(phi))); + (double)(MFactor * BLHalfSquared(Bmag, Lcoh) * (1 + exp(-GammaL) - 2 * exp(-GammaL / 2) * cos(phi))); + */ + double sol = 0; RESTDebug << "Axion-photon transmission probability : " << sol << RESTendl; return sol; From 2f522820955c212126d328b39ecaaf156f9f5f68 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Thu, 20 Oct 2022 15:28:24 +0200 Subject: [PATCH 15/58] TRestAxionOpticsMirror. Minor documentation fix --- src/TRestAxionOpticsMirror.cxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/TRestAxionOpticsMirror.cxx b/src/TRestAxionOpticsMirror.cxx index b86d0b86..e75f2ce3 100644 --- a/src/TRestAxionOpticsMirror.cxx +++ b/src/TRestAxionOpticsMirror.cxx @@ -29,7 +29,8 @@ /// The following metadata parameters are used to define the mirror /// properties: /// * **mirrorType**: It defines the mirror type (Single, Thick, Bilayer, -/// Multilayer). For the moment only `Single` layer type has been implemented. +/// Multilayer). For the moment only `Single` and `Bilayer` types have +/// been implemented. /// * **layer**: It defines the layer material. Chemical formula. /// * **layerThickness**: It defines the layer thickness in nm. /// * **substrate**: It defines the substrate material. Chemical formula. From 53363e27b28dcd69e55e393d5326524ab6b7cbec Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Thu, 20 Oct 2022 20:41:53 +0200 Subject: [PATCH 16/58] TRestAxionField. Removing obsolete comments --- inc/TRestAxionField.h | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/inc/TRestAxionField.h b/inc/TRestAxionField.h index 37cc547f..22662d63 100644 --- a/inc/TRestAxionField.h +++ b/inc/TRestAxionField.h @@ -24,31 +24,10 @@ #define _TRestAxionField #include "TRestAxionBufferGas.h" -#include "TRestComplex.h" -/* -/// MOVED TO TRestAxionFieldPropagationProcess class -/// A structure to define the two components of a complex number using real precision. -/// To be used inside TRestAxionField. -struct ComplexReal { - /// The real part of the number - mpfr::mpreal real = 0; - - /// The imaginary part of the number - mpfr::mpreal img = 0; -}; -*/ //! A basic class to define analytical axion-photon conversion calculations for axion helioscopes class TRestAxionField : public TObject { private: - /// A two component vector to store the complex EM field amplitude. - /// MOVED to TRestAxionFieldPropagationProcess - /// ComplexReal fAem; //! - - /// A two component vector to store the complex axion field amplitude. - /// MOVED to TRestAxionFieldPropagationProcess - /// ComplexReal faxion; //! - Bool_t fDebug = false; //! void Initialize(); @@ -78,11 +57,6 @@ class TRestAxionField : public TObject { Double_t AxionAbsorptionProbability(Double_t Bmag, Double_t Lcoh, Double_t Ea, Double_t ma, Double_t mg = 0, Double_t absLength = 0); - /// Commented because it uses ComplexReal structure that is moved to TRestAxionFieldPropagationProcess - /// class - /// void PropagateAxion(Double_t Bmag, Double_t Lcoh, Double_t Ea, Double_t ma, Double_t mg = 0, - /// Double_t absLength = 0); - TRestAxionField(); ~TRestAxionField(); From d58bf6cffbea9feed3d15496bda6f58dd4d64c79 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Thu, 20 Oct 2022 20:43:52 +0200 Subject: [PATCH 17/58] TRestAxionField::GammaTransmissionProbability implementation of unhomogeneous field integration --- src/TRestAxionField.cxx | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/TRestAxionField.cxx b/src/TRestAxionField.cxx index b98b94a8..65de3ae6 100644 --- a/src/TRestAxionField.cxx +++ b/src/TRestAxionField.cxx @@ -46,6 +46,7 @@ #include "TRestAxionField.h" #include #include "TH1F.h" +#include "TRestComplex.h" #include @@ -192,7 +193,7 @@ Double_t TRestAxionField::GammaTransmissionProbability(Double_t Bmag, Double_t L /// will be obtainned from the buffer gas definition. If no buffer gas has been assigned /// then the medium will be assumed to be vacuum. /// -/// Ea in keV, ma in eV, mgamma in eV, Lcoh in mm, Bmag in T +/// Ea in keV, ma in eV, mgamma in eV, deltaL in mm, Bmag in T /// /// mg in eV, absLength in cm-1 /// @@ -259,24 +260,38 @@ Double_t TRestAxionField::GammaTransmissionProbability(std::vector Bma RESTDebug << "Exp(-GammaL) : " << exp(-GammaL) << RESTendl; } + Double_t deltaIneV = deltaL / 1000. * REST_Physics::PhMeterIneV; + + /// We integrate following the Midpoint rule method. (Other potential options : Trapezoidal, Simpsons) + TRestComplex sum(0, 0); for (unsigned int n = 0; n < Bmag.size() - 1; n++) { Double_t Bmiddle = 0.5 * (Bmag[n] + Bmag[n + 1]); - TRestComplex qC(0, -q); + Double_t lStepIneV = ((double)n + 0.5) * deltaIneV; + Double_t lStepInCm = ((double)n + 0.5) * deltaL / 10.; + + TRestComplex qC(0, -q * lStepIneV); qC = TRestComplex::Exp(qC); - std::cout << "n : " << n << " qC: " << qC << std::endl; + TRestComplex gC(0.5 * Gamma * lStepInCm, 0); + gC = TRestComplex::Exp(gC); + + TRestComplex integrand = Bmiddle * deltaL * gC * qC; // The integrand is in T by mm + + sum += integrand; } + mpfr::mpreal sol = exp(-GammaL) * sum.Rho2() * BLHalfSquared(1, 1); + // Now T and mm have been recalculated in natural units using BLHalfSquared(1,1). + /* double sol = (double)(MFactor * BLHalfSquared(Bmag, Lcoh) * (1 + exp(-GammaL) - 2 * exp(-GammaL / 2) * cos(phi))); */ - double sol = 0; RESTDebug << "Axion-photon transmission probability : " << sol << RESTendl; - return sol; + return (Double_t)sol; } /////////////////////////////////////////////// From 300f7924cddd2b69b86b537ed2ec1f506c83c3cb Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Thu, 20 Oct 2022 20:44:25 +0200 Subject: [PATCH 18/58] AxionPhysicsValidation.C adding validation for unhomogeneous field --- pipeline/physics/AxionPhysicsValidation.C | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/pipeline/physics/AxionPhysicsValidation.C b/pipeline/physics/AxionPhysicsValidation.C index 1419afdd..78a1be6f 100644 --- a/pipeline/physics/AxionPhysicsValidation.C +++ b/pipeline/physics/AxionPhysicsValidation.C @@ -156,12 +156,6 @@ Int_t AxionPhysicsValidation() { Double_t ma = 1.e-2; // eV Double_t Ea = 3.0; // keV - std::cout << endl; - std::cout << "--> Axion-photon probability calculations succeeded!" << std::endl; - std::cout << endl; - - // axionField.GammaTransmissionProbability(bProfile, 50, 3., 0.1); - std::cout << "Probability (CAST. Helium. ma:10meV - Ea:3keV): " << axionField.GammaTransmissionProbability(B, L, Ea, ma) << std::endl; @@ -170,5 +164,17 @@ Int_t AxionPhysicsValidation() { return 301; } + Double_t prob = axionField.GammaTransmissionProbability(bProfile, 50, Ea, ma); + std::cout << "Probability BabyIAXO : " << prob << std::endl; + + if (std::round(prob * 1.e22) != 2482) { + std::cout << "BabyIAXO Probability. Wrong axion-photon conversion probability" << std::endl; + return 401; + } + + std::cout << endl; + std::cout << "--> Axion-photon probability calculations succeeded!" << std::endl; + std::cout << endl; + return 0; } From 1db238aa260971a244331e9c71beeb2705d2b6a0 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Thu, 20 Oct 2022 22:06:57 +0200 Subject: [PATCH 19/58] Adding MPFR to axionlib compilation --- .github/workflows/validation.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/validation.yml b/.github/workflows/validation.yml index 904dab90..7e58573e 100644 --- a/.github/workflows/validation.yml +++ b/.github/workflows/validation.yml @@ -41,7 +41,7 @@ jobs: - name: Build and install uses: rest-for-physics/framework/.github/actions/build@master with: - cmake-flags: "-DCMAKE_INSTALL_PREFIX=${{ env.REST_PATH }} -DCMAKE_BUILD_TYPE=${{ env.CMAKE_BUILD_TYPE }} -DREST_WELCOME=ON -DRESTLIB_AXION=ON" + cmake-flags: "-DCMAKE_INSTALL_PREFIX=${{ env.REST_PATH }} -DCMAKE_BUILD_TYPE=${{ env.CMAKE_BUILD_TYPE }} -DREST_WELCOME=ON -DRESTLIB_AXION=ON -DREST_MPFR=ON" branch: ${{ env.BRANCH_NAME }} - name: Cache framework installation id: axionlib-install-cache From 025c9d6b15fbbe8ded22a08be02135d22f6862bb Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Fri, 4 Nov 2022 09:42:25 +0100 Subject: [PATCH 20/58] TRestAxionSolarFlux. Fixing name extension .dat --- src/TRestAxionSolarFlux.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TRestAxionSolarFlux.cxx b/src/TRestAxionSolarFlux.cxx index 4998734a..99146f95 100644 --- a/src/TRestAxionSolarFlux.cxx +++ b/src/TRestAxionSolarFlux.cxx @@ -290,7 +290,7 @@ void TRestAxionSolarFlux::LoadContinuumFluxTable() { RESTDebug << "File : " << fullPathName << RESTendl; std::vector> fluxTable; - if (TRestTools::GetFileNameExtension(fFluxDataFile) == ".dat") { + if (TRestTools::GetFileNameExtension(fFluxDataFile) == "dat") { std::vector> doubleTable; TRestTools::ReadASCIITable(fullPathName, doubleTable); for (const auto& row : doubleTable) { From c50133ef6ea62214124775535bfead545acc9c74 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Fri, 4 Nov 2022 17:40:37 +0100 Subject: [PATCH 21/58] TRestAxionEvent. Removing some unnecessary data members --- inc/TRestAxionEvent.h | 21 +++------------------ src/TRestAxionEvent.cxx | 1 - 2 files changed, 3 insertions(+), 19 deletions(-) diff --git a/inc/TRestAxionEvent.h b/inc/TRestAxionEvent.h index 183f95da..38cdc54b 100644 --- a/inc/TRestAxionEvent.h +++ b/inc/TRestAxionEvent.h @@ -47,17 +47,8 @@ class TRestAxionEvent : public TRestEvent { /// Axion mass in eV Double_t fMass = 0.; //< - /// The effective magnetic field fixed by TRestAxionFieldPropagationProcess - Double_t fBSquared = 0; //< - - /// The effective conversion length fixed by TRestAxionFieldPropagationProcess - Double_t fLcoherence = 0; //< - /// It keeps track of efficiency introduced at different helioscope components - std::map fEfficiencies; - - /// We may use it to integrate a detector response inside each event - std::vector fResponse; //< + // std::map fEfficiencies; //< protected: public: @@ -76,10 +67,7 @@ class TRestAxionEvent : public TRestEvent { Double_t GetEnergy() { return fEnergy; } // returns value in keV Double_t GetMass() { return fMass * units("eV"); } // returns value in eV - Double_t GetBSquared() { return fBSquared; } - Double_t GetLConversion() { return fLcoherence; } - - Double_t GetEfficiency(std::string name) { return fEfficiencies[name]; } + // Double_t GetEfficiency(std::string name) { return fEfficiencies[name]; } void SetPosition(TVector3 pos) { fPosition = pos; } void SetPosition(Double_t x, Double_t y, Double_t z) { SetPosition(TVector3(x, y, z)); } @@ -98,10 +86,7 @@ class TRestAxionEvent : public TRestEvent { void SetEnergy(Double_t en) { fEnergy = en; } void SetMass(Double_t m) { fMass = m; } - void SetBSquared(Double_t b) { fBSquared = b; } - void SetLConversion(Double_t conv) { fLcoherence = conv; } - - void AddEfficiency(std::string name, Double_t value) { fEfficiencies[name] = value; } + // void AddEfficiency(std::string name, Double_t value) { fEfficiencies[name] = value; } virtual void Initialize(); diff --git a/src/TRestAxionEvent.cxx b/src/TRestAxionEvent.cxx index 71ef12e8..ec262244 100644 --- a/src/TRestAxionEvent.cxx +++ b/src/TRestAxionEvent.cxx @@ -163,6 +163,5 @@ void TRestAxionEvent::PrintEvent() { << endl; cout << "Direction : ( " << fDirection.X() << ", " << fDirection.Y() << ", " << fDirection.Z() << " )" << endl; - cout << "B^2 : " << fBSquared << " T^2" << endl; cout << endl; } From 1b3c9f260f8c39fe00af39f7b6b7ecd7c076bbe5 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Fri, 4 Nov 2022 17:44:20 +0100 Subject: [PATCH 22/58] TRestAxionFieldPropagationProcess. First implementation of non-homogeneous magnetic field axion-photon calculation --- inc/TRestAxionFieldPropagationProcess.h | 26 +++++++++++++++- src/TRestAxionFieldPropagationProcess.cxx | 36 ++++++++++++++++------- 2 files changed, 50 insertions(+), 12 deletions(-) diff --git a/inc/TRestAxionFieldPropagationProcess.h b/inc/TRestAxionFieldPropagationProcess.h index b617705a..27d7eb91 100644 --- a/inc/TRestAxionFieldPropagationProcess.h +++ b/inc/TRestAxionFieldPropagationProcess.h @@ -28,14 +28,27 @@ #include "TRestAxionEvent.h" #include "TRestAxionEventProcess.h" +#include "TRestAxionField.h" #include "TRestAxionMagneticField.h" #include "TRestPhysics.h" //! A process to introduce the magnetic field profile integration along the track class TRestAxionFieldPropagationProcess : public TRestAxionEventProcess { private: + /// The differential length in mm used for the field integration + Double_t fIntegrationStep = 50; //< + + /// The additional length in mm that the converted photon propagates without magnetic field + Double_t fBufferGasAdditionalLength = 0; //< + /// A pointer to the magnetic field description stored in TRestRun - TRestAxionMagneticField* fField; //! + TRestAxionMagneticField* fMagneticField = nullptr; //! + + /// A pointer to TRestAxionField that implements probability calculations + TRestAxionField* fAxionField = nullptr; //! + + /// A pointer to TRestBufferGas given to TRestAxionField to perform calculations in a particular gas + TRestAxionBufferGas* fBufferGas = nullptr; //! void Initialize() override; @@ -47,6 +60,17 @@ class TRestAxionFieldPropagationProcess : public TRestAxionEventProcess { TRestEvent* ProcessEvent(TRestEvent* eventInput) override; + /// It prints out the process parameters stored in the metadata structure + void PrintMetadata() override { + BeginPrintProcess(); + + RESTMetadata << "Integration step length : " << fIntegrationStep << " mm" << RESTendl; + RESTMetadata << "Buffer gas additional length : " << fBufferGasAdditionalLength * units("m") << " m" + << RESTendl; + + EndPrintProcess(); + } + /// Returns the name of this process const char* GetProcessName() const override { return "axionFieldPropagation"; } diff --git a/src/TRestAxionFieldPropagationProcess.cxx b/src/TRestAxionFieldPropagationProcess.cxx index 96b6e4aa..860d4ae7 100644 --- a/src/TRestAxionFieldPropagationProcess.cxx +++ b/src/TRestAxionFieldPropagationProcess.cxx @@ -119,12 +119,19 @@ void TRestAxionFieldPropagationProcess::Initialize() { void TRestAxionFieldPropagationProcess::InitProcess() { RESTDebug << "Entering ... TRestAxionGeneratorProcess::InitProcess" << RESTendl; - fField = (TRestAxionMagneticField*)this->GetMetadata("TRestAxionMagneticField"); + fMagneticField = (TRestAxionMagneticField*)this->GetMetadata("TRestAxionMagneticField"); - if (!fField) { + if (!fMagneticField) { RESTError << "TRestAxionFieldPropagationprocess. Magnetic Field was not defined!" << RESTendl; exit(0); } + + if (!fAxionField) { + fAxionField = new TRestAxionField(); + + fBufferGas = (TRestAxionBufferGas*)this->GetMetadata("TRestAxionBufferGas"); + if (fBufferGas) fAxionField->AssignBufferGas(fBufferGas); + } } TRestEvent* TRestAxionFieldPropagationProcess::ProcessEvent(TRestEvent* evInput) { @@ -133,17 +140,24 @@ TRestEvent* TRestAxionFieldPropagationProcess::ProcessEvent(TRestEvent* evInput) RESTDebug << "TRestAxionFieldPropagationProcess::ProcessEvent : " << fAxionEvent->GetID() << RESTendl; std::vector trackBounds = - fField->GetFieldBoundaries(fAxionEvent->GetPosition(), fAxionEvent->GetDirection()); + fMagneticField->GetFieldBoundaries(fAxionEvent->GetPosition(), fAxionEvent->GetDirection()); + + std::vector bProfile = + fMagneticField->GetTransversalComponentAlongPath(trackBounds[0], trackBounds[1], fIntegrationStep); + + Double_t Ea = fAxionEvent->GetEnergy(); + Double_t ma = fAxionEvent->GetMass(); + + Double_t prob = fAxionField->GammaTransmissionProbability(bProfile, fIntegrationStep, Ea, ma); + SetObservableValue("probability", prob); - if (trackBounds.size() == 0) { - fAxionEvent->SetBSquared(0); - fAxionEvent->SetLConversion(0); - } else { - Double_t B = fField->GetTransversalFieldAverage(trackBounds[0], trackBounds[1], 100, 200); - Double_t lenght = (trackBounds[1] - trackBounds[0]).Mag(); + Double_t lCoh = (bProfile.size() - 1) * fIntegrationStep; + SetObservableValue("coherenceLength", lCoh); - fAxionEvent->SetBSquared(B * B); - fAxionEvent->SetLConversion(lenght); + if (fBufferGas && fBufferGasAdditionalLength > 0) { + Double_t Gamma = fBufferGas->GetPhotonAbsorptionLength(Ea); // cm-1 + Double_t GammaL = Gamma * lCoh * units("cm"); + SetObservableValue("absorption", exp(-GammaL)); } if (GetVerboseLevel() >= TRestStringOutput::REST_Verbose_Level::REST_Debug) fAxionEvent->PrintEvent(); From eac4f60d367495bec7293e3e2f4952777c6cbef8 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Mon, 7 Nov 2022 09:55:04 +0100 Subject: [PATCH 23/58] TRestAxionFieldPropagationProcess. Protecting against the case when a track does not cross the magnetic field --- src/TRestAxionFieldPropagationProcess.cxx | 40 +++++++++++++++-------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/src/TRestAxionFieldPropagationProcess.cxx b/src/TRestAxionFieldPropagationProcess.cxx index 860d4ae7..6534a2af 100644 --- a/src/TRestAxionFieldPropagationProcess.cxx +++ b/src/TRestAxionFieldPropagationProcess.cxx @@ -117,10 +117,12 @@ void TRestAxionFieldPropagationProcess::Initialize() { /// should be initialized here. /// void TRestAxionFieldPropagationProcess::InitProcess() { - RESTDebug << "Entering ... TRestAxionGeneratorProcess::InitProcess" << RESTendl; + RESTDebug << "Entering ... TRestAxionFieldPropagationProcess::InitProcess" << RESTendl; fMagneticField = (TRestAxionMagneticField*)this->GetMetadata("TRestAxionMagneticField"); + RESTDebug << "Magnetic field : " << fMagneticField << RESTendl; + if (!fMagneticField) { RESTError << "TRestAxionFieldPropagationprocess. Magnetic Field was not defined!" << RESTendl; exit(0); @@ -132,34 +134,44 @@ void TRestAxionFieldPropagationProcess::InitProcess() { fBufferGas = (TRestAxionBufferGas*)this->GetMetadata("TRestAxionBufferGas"); if (fBufferGas) fAxionField->AssignBufferGas(fBufferGas); } + + RESTDebug << "Axion-field : " << fAxionField << RESTendl; + RESTDebug << "Buffer gas : " << fBufferGas << RESTendl; } TRestEvent* TRestAxionFieldPropagationProcess::ProcessEvent(TRestEvent* evInput) { - // Already done by TRestAxionEventProcess fAxionEvent = (TRestAxionEvent*)evInput; + RESTDebug << "TRestAxionFieldPropagationProcess::ProcessEvent : " << fAxionEvent->GetID() << RESTendl; std::vector trackBounds = fMagneticField->GetFieldBoundaries(fAxionEvent->GetPosition(), fAxionEvent->GetDirection()); - std::vector bProfile = - fMagneticField->GetTransversalComponentAlongPath(trackBounds[0], trackBounds[1], fIntegrationStep); + Double_t prob = 0; + Double_t lCoh = 0; + Double_t absorption = 0; + if (trackBounds.size() == 2) { + std::vector bProfile = fMagneticField->GetTransversalComponentAlongPath( + trackBounds[0], trackBounds[1], fIntegrationStep); - Double_t Ea = fAxionEvent->GetEnergy(); - Double_t ma = fAxionEvent->GetMass(); + Double_t Ea = fAxionEvent->GetEnergy(); + Double_t ma = fAxionEvent->GetMass(); - Double_t prob = fAxionField->GammaTransmissionProbability(bProfile, fIntegrationStep, Ea, ma); - SetObservableValue("probability", prob); + prob = fAxionField->GammaTransmissionProbability(bProfile, fIntegrationStep, Ea, ma); - Double_t lCoh = (bProfile.size() - 1) * fIntegrationStep; - SetObservableValue("coherenceLength", lCoh); + lCoh = (bProfile.size() - 1) * fIntegrationStep; - if (fBufferGas && fBufferGasAdditionalLength > 0) { - Double_t Gamma = fBufferGas->GetPhotonAbsorptionLength(Ea); // cm-1 - Double_t GammaL = Gamma * lCoh * units("cm"); - SetObservableValue("absorption", exp(-GammaL)); + if (fBufferGas && fBufferGasAdditionalLength > 0) { + Double_t Gamma = fBufferGas->GetPhotonAbsorptionLength(Ea); // cm-1 + Double_t GammaL = Gamma * lCoh * units("cm"); + absorption = exp(-GammaL); + } } + SetObservableValue("probability", prob); + SetObservableValue("coherenceLength", lCoh); + SetObservableValue("absorption", absorption); + if (GetVerboseLevel() >= TRestStringOutput::REST_Verbose_Level::REST_Debug) fAxionEvent->PrintEvent(); /// Missing to propagate the axion to the end of magnet bore? From 8597432f056902d7e7d8e4565dd859b666bb147d Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Mon, 7 Nov 2022 09:56:14 +0100 Subject: [PATCH 24/58] .gitlab-ci.yml including REST_MPFR in compilation --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fce91ddb..2e0f6b9c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -45,7 +45,7 @@ build: - cd ../../../ - mkdir build - cd build - - cmake ../ -DREST_SOLAXFLUX=OFF -DREST_WELCOME=ON -DRESTLIB_AXION=ON -DREST_GARFIELD=OFF -DREST_G4=OFF -DCMAKE_INSTALL_PREFIX=${CI_PROJECT_DIR}/install -DMPFR_PATH=${CI_PROJECT_DIR}/mpfr-4.0.2/install + - cmake ../ -DREST_SOLAXFLUX=OFF -DREST_WELCOME=ON -DRESTLIB_AXION=ON -DREST_GARFIELD=OFF -DREST_G4=OFF -DCMAKE_INSTALL_PREFIX=${CI_PROJECT_DIR}/install -DMPFR_PATH=${CI_PROJECT_DIR}/mpfr-4.0.2/install -DREST_MPFR=ON - make install -j2 # - . ${CI_PROJECT_DIR}/framework/source/libraries/axion/external/solarAxionFlux/bin/thisSolarAxionFluxLib.sh - . ${CI_PROJECT_DIR}/install/thisREST.sh From 560b5ec1c5c036a88ddc21deb57dbc2a4d81eab8 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Mon, 7 Nov 2022 10:44:00 +0100 Subject: [PATCH 25/58] TRestAxionFieldPropagationProcess. Increasing class version --- inc/TRestAxionFieldPropagationProcess.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/TRestAxionFieldPropagationProcess.h b/inc/TRestAxionFieldPropagationProcess.h index 27d7eb91..287645db 100644 --- a/inc/TRestAxionFieldPropagationProcess.h +++ b/inc/TRestAxionFieldPropagationProcess.h @@ -81,6 +81,6 @@ class TRestAxionFieldPropagationProcess : public TRestAxionEventProcess { // Destructor ~TRestAxionFieldPropagationProcess(); - ClassDefOverride(TRestAxionFieldPropagationProcess, 1); + ClassDefOverride(TRestAxionFieldPropagationProcess, 2); }; #endif From cea15eaa72a9fedd6898f067751563fca42061b3 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Mon, 7 Nov 2022 11:16:15 +0100 Subject: [PATCH 26/58] TRestAxionFieldPropagationProcess. Adding field average to analysisTree --- src/TRestAxionFieldPropagationProcess.cxx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/TRestAxionFieldPropagationProcess.cxx b/src/TRestAxionFieldPropagationProcess.cxx index 6534a2af..838e1ae7 100644 --- a/src/TRestAxionFieldPropagationProcess.cxx +++ b/src/TRestAxionFieldPropagationProcess.cxx @@ -168,6 +168,9 @@ TRestEvent* TRestAxionFieldPropagationProcess::ProcessEvent(TRestEvent* evInput) } } + Double_t fieldAverage = std::accumulate(bProfile.begin(), bProfile.end(), 0.0) / bProfile.size(); + + SetObservableValue("fieldAverage", fieldAverage); SetObservableValue("probability", prob); SetObservableValue("coherenceLength", lCoh); SetObservableValue("absorption", absorption); @@ -175,6 +178,8 @@ TRestEvent* TRestAxionFieldPropagationProcess::ProcessEvent(TRestEvent* evInput) if (GetVerboseLevel() >= TRestStringOutput::REST_Verbose_Level::REST_Debug) fAxionEvent->PrintEvent(); /// Missing to propagate the axion to the end of magnet bore? + /// May not be necessary, it can be done by TRestAxionTransportProcess if user needs any process + /// that changes direction, this is done for example by optics processes internally return fAxionEvent; } From 999050fe4dd5ab4774758ee2f29a5773f6c4f954 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Mon, 7 Nov 2022 13:14:00 +0100 Subject: [PATCH 27/58] TRestAxionFieldPropagationProcess. Adding numeric header --- src/TRestAxionFieldPropagationProcess.cxx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/TRestAxionFieldPropagationProcess.cxx b/src/TRestAxionFieldPropagationProcess.cxx index 838e1ae7..8e571da3 100644 --- a/src/TRestAxionFieldPropagationProcess.cxx +++ b/src/TRestAxionFieldPropagationProcess.cxx @@ -75,6 +75,7 @@ #include "TRestAxionFieldPropagationProcess.h" #include +#include using namespace std; ClassImp(TRestAxionFieldPropagationProcess); @@ -150,10 +151,13 @@ TRestEvent* TRestAxionFieldPropagationProcess::ProcessEvent(TRestEvent* evInput) Double_t prob = 0; Double_t lCoh = 0; Double_t absorption = 0; + Double_t fieldAverage = 0; if (trackBounds.size() == 2) { std::vector bProfile = fMagneticField->GetTransversalComponentAlongPath( trackBounds[0], trackBounds[1], fIntegrationStep); + fieldAverage = std::accumulate(bProfile.begin(), bProfile.end(), 0.0) / bProfile.size(); + Double_t Ea = fAxionEvent->GetEnergy(); Double_t ma = fAxionEvent->GetMass(); @@ -168,8 +172,6 @@ TRestEvent* TRestAxionFieldPropagationProcess::ProcessEvent(TRestEvent* evInput) } } - Double_t fieldAverage = std::accumulate(bProfile.begin(), bProfile.end(), 0.0) / bProfile.size(); - SetObservableValue("fieldAverage", fieldAverage); SetObservableValue("probability", prob); SetObservableValue("coherenceLength", lCoh); From 692a18f4b463af09ae1a3843f985040e46185be2 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Mon, 7 Nov 2022 14:30:48 +0100 Subject: [PATCH 28/58] TRestAxionEvent. Increased class version --- inc/TRestAxionEvent.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/TRestAxionEvent.h b/inc/TRestAxionEvent.h index 38cdc54b..56ff7c10 100644 --- a/inc/TRestAxionEvent.h +++ b/inc/TRestAxionEvent.h @@ -97,6 +97,6 @@ class TRestAxionEvent : public TRestEvent { TRestAxionEvent(); ~TRestAxionEvent(); - ClassDef(TRestAxionEvent, 1); + ClassDef(TRestAxionEvent, 2); }; #endif From 4e03bb1d7584db707e2580540b32daf91f4cf549 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Mon, 7 Nov 2022 14:34:35 +0100 Subject: [PATCH 29/58] TRestAxionAnalysisProcess. Adding theta and phi direction angles --- src/TRestAxionAnalysisProcess.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/TRestAxionAnalysisProcess.cxx b/src/TRestAxionAnalysisProcess.cxx index 4a53e24d..5fa0a787 100644 --- a/src/TRestAxionAnalysisProcess.cxx +++ b/src/TRestAxionAnalysisProcess.cxx @@ -118,8 +118,8 @@ TRestEvent* TRestAxionAnalysisProcess::ProcessEvent(TRestEvent* evInput) { SetObservableValue("posY", fAxionEvent->GetPosition().Y()); SetObservableValue("posZ", fAxionEvent->GetPosition().Z()); - // SetObservableValue("B2", fAxionEvent->GetBSquared()); - // SetObservableValue("Lcoh", fAxionEvent->GetLConversion()); + SetObservableValue("thetaAngle", fAxionEvent->GetDirection().Theta()); + SetObservableValue("phiAngle", fAxionEvent->GetDirection().Phi()); if (GetVerboseLevel() >= TRestStringOutput::REST_Verbose_Level::REST_Debug) fAxionEvent->PrintEvent(); From 4c7ec760fd744e69b3fe56cbb4a8ae282941b185 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Wed, 9 Nov 2022 12:07:41 +0100 Subject: [PATCH 30/58] TRestAxionFieldPropagationProcess. Observable absorption renamed to transmission --- src/TRestAxionFieldPropagationProcess.cxx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/TRestAxionFieldPropagationProcess.cxx b/src/TRestAxionFieldPropagationProcess.cxx index 8e571da3..ceb7f248 100644 --- a/src/TRestAxionFieldPropagationProcess.cxx +++ b/src/TRestAxionFieldPropagationProcess.cxx @@ -150,7 +150,7 @@ TRestEvent* TRestAxionFieldPropagationProcess::ProcessEvent(TRestEvent* evInput) Double_t prob = 0; Double_t lCoh = 0; - Double_t absorption = 0; + Double_t transmission = 0; Double_t fieldAverage = 0; if (trackBounds.size() == 2) { std::vector bProfile = fMagneticField->GetTransversalComponentAlongPath( @@ -168,14 +168,14 @@ TRestEvent* TRestAxionFieldPropagationProcess::ProcessEvent(TRestEvent* evInput) if (fBufferGas && fBufferGasAdditionalLength > 0) { Double_t Gamma = fBufferGas->GetPhotonAbsorptionLength(Ea); // cm-1 Double_t GammaL = Gamma * lCoh * units("cm"); - absorption = exp(-GammaL); + transmission = exp(-GammaL); } } SetObservableValue("fieldAverage", fieldAverage); SetObservableValue("probability", prob); SetObservableValue("coherenceLength", lCoh); - SetObservableValue("absorption", absorption); + SetObservableValue("transmission", transmission); if (GetVerboseLevel() >= TRestStringOutput::REST_Verbose_Level::REST_Debug) fAxionEvent->PrintEvent(); From 2384525c2f28112614f172655d7db16e9cbe2697 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Wed, 9 Nov 2022 12:26:23 +0100 Subject: [PATCH 31/58] TRestAxionFieldPropagationProcess documented --- src/TRestAxionFieldPropagationProcess.cxx | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/TRestAxionFieldPropagationProcess.cxx b/src/TRestAxionFieldPropagationProcess.cxx index ceb7f248..092d2d6e 100644 --- a/src/TRestAxionFieldPropagationProcess.cxx +++ b/src/TRestAxionFieldPropagationProcess.cxx @@ -50,6 +50,26 @@ /// In a first approach this process will be only valid for the axion propagation inside a single magnetic /// volume, until it is confirmed the process is valid for any number of volumes. /// +/// This process requires at least the definition of a magnetic field using a TRestAxionMagneticField +/// metadata definition. Optionally, if the field uses a buffer gas we may define a TRestAxionBufferGas +/// that will include all the necessary gas properties, such as photon mass or absorption. +/// +/// Two process metadata parameters can be defined: +/// +/// * **integrationStep**: The integration length used for field integration along the particle track. +/// * **bufferGasAdditionalLength**: In the case we use a buffer gas we may include an additional length +/// that the particle needs to travel inside that buffer gas but outside the magnetic field volume, the +/// result will be written as an independent efficiency at the `transmission` observable inside the +/// analysis tree. +/// +/// List of observables generated by this process: +/// +/// * **fieldAverage**: The averaged magnetic field calculated along the particle track. +/// * **Probability**: The final axion-photon conversion probability. +/// * **CoherenceLength**: The lentgh of magnetic field region traversed by the particle. +/// * **Transmission**: This observable will register the photon transmission produced by an additional +/// buffer gas length at the end of the magnetic region. +/// ///-------------------------------------------------------------------------- /// /// RESTsoft - Software for Rare Event Searches with TPCs From e5fcb6a1230ccbf96acd2c15736eeeb9b3d5a12f Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Wed, 9 Nov 2022 13:02:44 +0100 Subject: [PATCH 32/58] Adding axion-field pipeline directory --- .../axion-field/photonConversion.rml | 32 ++++++++++++ pipeline/ray-tracing/axion-field/plots.rml | 50 +++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 pipeline/ray-tracing/axion-field/photonConversion.rml create mode 100644 pipeline/ray-tracing/axion-field/plots.rml diff --git a/pipeline/ray-tracing/axion-field/photonConversion.rml b/pipeline/ray-tracing/axion-field/photonConversion.rml new file mode 100644 index 00000000..e1fd4cfc --- /dev/null +++ b/pipeline/ray-tracing/axion-field/photonConversion.rml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pipeline/ray-tracing/axion-field/plots.rml b/pipeline/ray-tracing/axion-field/plots.rml new file mode 100644 index 00000000..d4a53462 --- /dev/null +++ b/pipeline/ray-tracing/axion-field/plots.rml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From e0711b56ac9cdc621a36bf753dc2c679a87e3deb Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Wed, 9 Nov 2022 13:05:46 +0100 Subject: [PATCH 33/58] Adding image for TRestAxionFieldPropagationProcess documentation --- images/axionFieldPlots.png | Bin 0 -> 277274 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/axionFieldPlots.png diff --git a/images/axionFieldPlots.png b/images/axionFieldPlots.png new file mode 100644 index 0000000000000000000000000000000000000000..85eaa7659dfe766bd8676bc24eae728a3499a3f8 GIT binary patch literal 277274 zcmeFZ_g7O}7d9Fz3J8h<(ovdpq)Sy15oyu{L7Fr{x|GoIAfVEe&_Y#d0#c-ePACF~ zP=tUOA~keE2|YmIu6WLSzhCaSf5ErMP)hdRYpq$H`OLZI;_V|{jSJMQ)DQ^dg64yJ z1`r4xEd+A@-noKBzZ7kDh$a^CL7P41R*M$@kK z)5(*I=c$W(bSmDdR~)N^^j{VUiq`qX6fcT)%f31ru*+jc(3{Sf8RqOigpP%{@G3x|5qe`&EfxA2@u2obsQjs|6fq} zNpEQZ`5j)mTwfY}?26mDRQKJEEAi-HPf2DB4!tg|gOTn%aAd9FV0S9y`T60z_yEFn z#HW|pcz?!XMa(3@(Q=<+Zj+dRzAx-rK338?Qk;5q2Tgw%&ySNkCD;0YjtB139(0_c zf~rN~R(6&oTcSp!d$$8(kDH!~#i#On$+Nd{HK@9(>go99FW2LVrpCjI-T`KzHLkc# zQll6KI!D)s9lEseC~erRp_^INYru-^vVJJm2@ zI!DGXt}RLtQu-fhOtus2{cFQRM9hqn6yI_g;Sf{)K4oI(xU@%nrY8M;?pV9;`!N<5 zF{qy^*Igp6gVhJ!yFWXwGvX5-SO>{|b@SPz?M=-q2-eVLn%63yFScg&JC4aGd#$(d zZ0UW$t@t*KX)~O$&b$*QdsSzqq{=l=o}Df#T;K9+TK@U2&SILAK`vta5JhXF)e9Y& z1|vSTDF=ho5G76Mn+;NsFAvS$#gO%-lPyuq;r;cccn{kVAHQt$_56Ph%to#J=-RY0 zbPHM;T4f=#{79KqwlW!=%grT+Sts~K6*L+rPC>#N3u3$VOOZThxmZk3K%kfT-?oi; zTQG-4x*45|36=YZq5E3g8nWzE(Y@ zKdl^ni7rU}PuJJ0^`wfAuJubC|6BqMst>J|Lx!D58pmEO;D$@d)x4| z=>)XmD5YbP_!{0f=pta(cz4Rgu4-CK)vb2AK?X)hUihjcz3hiGFup47qA9RsyaIPe zwW$>!Fd%ZxY=1tV?ZDNBGuboOWR7|4u(N!UQIbM8Yjo9IO#W9m??a=Mi2PvEv1WEY~=nMUxIw>LZbV8DfKa34> zheTKN7XJ_@1;38T7yj;NDPvb$=hM(dUHf2VlQEV&Hl+7*@lLJh)#>waI@U_`*-QBE zDV)5*&eF93S5|w~P1;tH9psw#zREu{G>P}Dj5_YjzLEG;Y}IS{%9jTXsFjnariu`t;q%A>(TQM4L(}0KDlsg*wi1fJq8ni9*=(11q z+a}2bZp}J=nT-R3bG_{Dq#_HkltToh@zME;djZjT-(BmU##=X z6yYw&u4ZqllGV;A0<|AjG&oNC*Ncnce+D%MTuYhd#9msW(h7YfV{frt-1d7KI-5tO zHkWfqttFLKy>&GB?&OxLj(v*I_+Vy|0-9+|9W``4*D&Pn?55D$3iL}&)QB*K4vq_3 z9=&E<7?R6Wqm$(PDB;kvx~c?HTjrDF6_G;p>>gN3j}1@kvi~uW(l_DW6J*{InZ{9X zmbQ31-;r^IMO;wZ=Fijcwt3Y|kwHT2tPxhScw3Pd_hLlPx!hj}laQ!&w?G^J^=f!l zwRC;yCU?%Qjd`ke-8PxiHQ@Z^_k z9=bmbMO>)i3WWGMCfxYSj2t~6ztxtwIE#OWvUA7E3r&P;Z%gd^X&tv03c9+|?(Eb~RfG)ziOm z&_b)Uv6TbZJt={;`pqwPxS*tw%xyuqBy9y+`_7LM`*PzsPAtJ5F{4d2Y20aL$!Dts ze{nFQ0oVM@H^Eb=v#(yVtS}Lno%HU=0gdUuX_)0>)eUoPc$OJ*jcY86?55_w;S^MRN;b_ru>S!pL^c5PgpdX5jePVkDenpg+JT zt&m!`w0!yt+B|J^@I}W*vGDJXa(}#%?R|f_bVyapXX=s@Qih)GJga>MQ}^6*$;-mf zkqq6@yaPuCe0(P+oqol3C;c&5qnD;t=?)tEE}m)RjPE^|sH+sz@AD4C<=bk5|d(>JYGwfl0fitUJTT#!Kl|4+4M$MLW zzdS~pUPUTdqG9Fp_~ysAZ7qYJ2Y2FI0Cvbf9+APddq>8NuT zHaei+7Y@00e?Eb3+s0EDJ~Y=3SXAjA6x;6i$ju z!|~a-*2gx?R}hZ=CMCMswe0SxSQ@_INzXJmo&OR$D&>}O(a;9U%^&q>p*EvX-d?iI zM`MmaeB?FqT(VdDy-eL*%_+n4`4wL(Y6KsDFCqzR`(I}K`tB5Ft@WnfLnP*K>hjCj<|Wdc#^CCH7=81J9o9X7OiFxMQA zf8dFVd;6!tFSU3Ly?a{{Cq`~YCn9EYf;RJuvfmy_jt!_Y64ts=j0PGeq}W;Q^zUPd ztcj>CQ-iTFZ98d2yT@4;mNpZL$WR*9`d;;3(yP&7c;_tnJJp?uk0)r>L`8}Q>H}qr zcgjVO40B__iH<=hMB;-bsa}#G*xKtP!iP=9ON*YViWw}%;EF8JbSEjoQ*FFSsKgtVqgR#va{S7z5Ps2B6kQdzFI>5;W zy2IDqQs2Je8p?vr_Bcw{85f~PCxo~-dLp4P^E{zc>ek1EUkPU4^$x0kWb+hW5nxq`Yc0q4`c6Og&9G zRZ1C-itL@Z`$R4-qv+t{)#&^hfk(c_2_wpHF?X? zoiF#Hr6~ee1XB=4`Waw*W!;M;aP*TwJdSZN)Z^Za0un*eK~8gJB52I9i&<*-8UL<{ zYU>c9@@-0nMrGc^;pZI@a%H?#x|xky^xKET$6ip85)O#o`+Z+w!Yle_QzyaVO?sqAcGznB`?& zyv%SBDjXt8)D>_lXl_0Bs7Q%7vJV)lRPHoNg9-N_?2a&)Mem1=#?}b)ajR<+_fpXI zk~u;9!wKfvmFYck7w6~wa}f`XZ8rXqVB6@iyzhWEw2VIFCc7?a3&Jl-;3WB$-QA-O zXFWH5>Lk_KX)7C+sdq6#^eXL*#Ev=A_Un5>WoUnCCOK{|m@hT>AYLZ06vD})qJqB% zOANSr9i#)}gY_5u4nnq!I3LZ+!4Io=wSTMJt-nzvvUqt;v3=H}x=}s+QZ%Ce;P#5k z#6hxKcIxEk-~QIV(n0!cR6P5YDdIvyZ!X z^&JAQ-9ZM*;m&}U=SHOot<=XsKP80d6=_cE}A3LaW)TFnm z*n~|K-_>?K5rIt2<(9F2SVt^OhDL)o;2yt?)h;>%EB--_StUyVBsdf?^$VkVlbxCSjhp zt7adj`t9mxCAe<#eB$#Y%M%kmd{qymp8V8Y6gCU01EF#{QkK_3mUlFEU8N9aPc|yTy*_L=O!t?E(YGmF>_&ZtC-n`e#yBKSG%j z*_|v#WOSs=H?(~tcGXsIR4?0#cJGGde-JPX{PTe&od{Ku)!F>m$$rn&TvF&35hva) zhcd6S>Dg^gnbmkoL_AN+pZF263LTxpO<9&0c`Yf=*Pfhol8vL#Grf|>&`M%+j=RN( z&JK!3!-IdbNh@}BRxCUn_D~@(+AgxnAY7ct*_J$-hgj(niI2X*nPP#mzBl4ya~-{x zBYLX3*qz3uF8lqcuX?Rn)?RLc@NJCrr`eSIuDkVae}WSW?xC80r{c%lHBWrq2{&Pe zsN{xlNr&QneC=kv>b@_2GB(cCEl}r(nD@J0T%^EG2Se)>UcS1LH!uNLc#r&{9>WLo-iK z`<|?O#V@?YwbFORj@VMh!nD@Hv+>eOnfonuL@h*jCh&`L#PfsW==lg7KA?o0?ZRFW$G z0`dw3TD6knRk=G%rQCE>gIiL}p0zTb5_3z+;;etrtY>MO6ScEsJ592QK5~wTB`t8e zsFI=WO2!cgSE<=2`VC75enMwC_J-A})?i~zE(BM)E5E!g@=4*m*?aYxpO+D%UVKkK zSXA32I{Lh}Pq?wplFCc{VoNOt3wI=0tJHuh<_XpVdPgV zMsiKubNDS&ZN)hh!}r9*YPIj{i%u+$t9qK>rGj7ER3e73bIg45&%a=ACM<8)?_ca) zt6n-VX?w443Nm$@H|7g>uqBE+`z+i26;MulvBmiGYIe8cF|wC5wume|Q#@xA?|N&< z1bQTW4&osCuE+sj?IWc>?t9cNh2EU0pBETwu3M>`eRx*ttSD@$v(d&y@x{}*q4))d z4y%8*59$j!kJQ+Nl$z~-_Nrv}+n|8;p#^_Q_pbP|vD1>dizRZpdiR1hPkAi{BN}K; zR9EAAgEcVBb%A;JoFR&p!A4>`Uk!GL<;Kw#yG@l_&E8Yzbfvb#LwCK3tAo)fmQKEd z={w<)Hs`oy9#+i0QYj=z65Bo#eqAs?+I`${nn%O*UWs!0@nvYw=Sb7EbUjPBA%duK zSBAFzF-4}pxIP74F2FcdXdE5!&Aa+o$dM%C_YM=>HreK_>?ISj$*-Jj{_#AVJ6{nwC>MQ(la&<}|8U*@&Z;SLq_B=m$ z%YK#bkIPFZ38*oRSx!%@U?=Lz-8?QLcbK}$GwW?`m{g3(vB-+0I(4Vq?Y6bhM(kM|mbKwpBg-?ML28OSv(@>>>535!T}ti?#(+GP%=q;)6T_d3(WcQ}~n(@nmq zfM$P_n0LxwSPuBzF}rJ#+RZBNJ98l+5hHOIwn807Lyj$Em;2&~!UU~VjX&hwoKrW6 z#2?e7AkH<69Lf#hqe^$=wCD z;K^Viy4ydIlJf<+on?JS1qxyrLF6spHQ7QU%E~$VbCQ5wy(sb10fa0ol5O*Jp?Q~! zx_TlMAEcSBWP8!W{&UGuxHG58guK?r{iDEBOk;P1Zaq6-*`^AM@4^#28Pviz3~f93 z{XBOktFkwE5}Hy97}w6TG)<+PgwXqx>DLiAxvij9!8^@cxowv+hMNAA55wHE=al`u zrj|aGdG6-$UaSqQlDTM`?Y0&0EkWh5#Rc!u?>5#PLb|=8wu{f9PYCqi@WGde8A1a8 zZs~EEriQ`>*BWwH{kl}VEk-;Sp6N5+isKLYd7@}Oo-_DoWPlvW;VEn6wqEl3-6qB^ zwJGHfDYPwJOSETOeqAtq+{6^U+bFrqlcj3OAQo1GE8+U1dnBY_JMd$AiLl=_KI`?w zldwHPZ{MfHFI#%}#+;GN)bLbHk5ecxib|(re|%ZtcmQd0LZyU}1Bp85yJ@pjFE|gY zWV=y!?bP}J*#1Os9n@BGe80+;8_95>>P*lmm{neE8y}>Z2+rWT-(=g`X;{tg%CgsU ze9xzXH{N&m`dBfG*8Lm!E2vs8hryZ7qg@zP4AohG9G{Y*@Hpks$GC^m9I4 zoug1iz>vR}{JbYNB4tlIL>kA9=c#*`!5R@|HR7|pquvv+?V06-L&YcmTKJ?&7U4<~ zaT#xW+4YmBr9p7*MTa<%*wMJG{E9#KvWCij{A%9~5+|xhDKKMsJ8hpK=$^kp;59Mv z81#6hvZ3g$ti)TzxdJdfS&Zb(-ir<(3D4e2Q!kOanC}Fr$6_L>+M)>NZ;pJRhx_q|+ zck1(Rx=ND~PmH~nYKUh_h4Lp32R-HRT1cSRgnr!-^J5#mHA^`*Ds%gaz8mbVaFI>5 z7ga;nefAI85ve-mx&4)S_rqB_iAWfhapyDoh1_o;sfUBoy-Ni!mmW8#&EzfJE~jR@ zkFr+PKDJyDR45Lr#}7*(c+LY@8Jl>Wb`pVxc&407&iXBMb;w7#!3)U~Qup+1cBe|$ zqBphHKC-skZp`ZUgk45Q?Nu1s_5`(*=m0VpS!G=b?=+*|x!WUM>Gy0p+^k@*C$W-u zxmIcTT#a$;pN4nh!UiZ^tFahz&Nn;UZ+`sCPZC|Y-CbQF%#c&UsA3^PM^xNtxK>wl zGkL+06{B6E^n^U5K#r)STK^m@*C4U9cKGnr@c()NDnh!8E48p*guGwa@n^8!th)PW z$hIy{77t6kjQj1Jq)5qt)Em#yNc(JvDGv$sPv=dPM>|usgwLoIeH+RP@$z3{6LnB9 z%{q=ty?}8*21`!(kqG?AY7-4dl3A{-c6Cs`ulrzDI1#at08+wc^CSht!KdAsNEm94 z28InL*XtpE&$xAiLIJme@duP-d~}L}5p^upV@IjX9T@?wqGTOkuq2&PUr$V4IGlD(q4)CV!|vJpKP5;>z5P9Tu43q z!VAq_$=cScea`Lfw9-kM+Z;7$z+P}HmVj@#^sD-;COVq@)-aR4`t5mf1N~64U77+G zEhqA1-clxQEFJc#mGHQbu(7JrZRmBQv^l^?If4-tnpj5Dg0KD4a*}UT{p|F9I48=b z%k59N<~D;QIiZ!h@X4L{EMA2=e`f|$&HTcUaROcU*5*cVmyv!KD!*;JONSwoV>*+t z=-|8WBDLe^=G;DnfN6BNc#rnql&W);#k9!_RcjcaQxHpp?ufJJlV2<2+vp#gvO4#5 z>Q>s$RCZ}1KRtF#shIt(#VDVBu!J6R2~rHi3#w+`wCe5Q3r0uCxvM{K+JBVYlq3b8 zoNOEqF*sFjfhuF(pSBP38Z?+=t3*o3oDh?eOkqh2XyY9q&cRjs3A<3|2qR0lL!CX_ zvCgQ}L;_jQu>BkSyH)~6RnNz4*;MUhXLt`>@__`Sa4e0~0_%27{TlB;PgYvfrEd?4 zY^WqP9Of)rU9L$zDNtxC)H&P0FN61J93B*2Dj{6$V>gO$#E5#X_mn=Wtu%1NzI!)c z23>akpinkq!Ru)IB`BB*EoG0ks|t2^C{>3G#f$SVKRnr@Hs)#M*4Rdf2;S+O8%&SI zGd^6^q8C!Z@xw=Zbw68-$ko~()D*^d?-~^aCNG)x#ib>2=>|vN_kTR%h9ElzE`mA+ z9ak=^qlK?O>8v(i>crBWQ`IDGDFHkoq_LNS7yjL3!m@eEYwotr7&cp53Ud@K*~EDIRJent zsJP4Uom)~bn7ZjF9K8Ao7|~C2(CQuubLZk=4Skh{MA0rwq2ZXT4S5hMKYu6Fpt{P~xl)su-6FZ{ep`v+WH zuNihZEuh>^64O>+5c#b}n}K7?#8G2_DOOjfdy7-bUfAgv*EZiR;yNE9yp4YEz8>8KJwPV}2K^mVM?^l8?vi&a}JSP)oS;)Xn-8ic`}P>CO=dA$c3*B)~1(-nE9C-$_mD zmoD?jb*=!wK6l_>sqlr3CkPhcR$QnY5%^hmu?+ibGN(o!G~{+O#JpQ5zGF1;fSP^z5ojG?UVg z#eM`O&5VTp@2_C% z#hV!uyrHKY$LyL#9iNO33Xdn7eXXr`kgdauyl1q>4bs87f=s2V@tssH7Qk`CzoWN1 z_3MVH3(G2px?z%jSEM?!n#7e&uSre0i@cQbw}^GUKn|uxmvLEX1Q}r!ylo| z(ByiR8y#~gotL`tS_<0@88*}W?K_a4XX) zay@`KtOibr7NQ3i(ZY1wht-}tqZN5+kRXN>bl$4}QB5bbeBN6@xj@Or%vrSz+vgEV z#xgF=V$u;;{n(O!m40734OD1Tq=a)T z_i2U1+uy}V?ngbdF%(e_kPG8tvvIJrKaEF6x9y4`S}&x9-I^D2aDOJ}-q}RAc}DpRKMl|>y;|QZ zXOf5whgakwsJl>m&8?k;4arl=@XG>~#zmT&RNC*|cNo=s1@=Z+XQ>`ZsyD6q@K{AN z<|y%nKVL58B-?!Syc`>?K&QE?s0p!-ZZ9G1aap}4x+8fR`a z0lj^;66b5B{g^kGNu`@zHC#K}Bex@F`qfRi(}+(O{^lXMO?)DV$Nf@TQ?}RB)QO_d zyGd(hKG?h-S*_aq+4v^LvyN`npQ!aUEvC8P#eXIrUZtO`FFj~*@xq1N??>J}>!&(o z!c`1eryE5mXZIV6-?q*Colt;TG$ykf5IDG5ClpSFiE?^d1!uS*xfB)o6Id?@E?!l2 z%e9VZpm$RVy(ej_WZ*jy?x^2QQd?cc_L|Af>?gb$jdIvOWGzu#%nBNVqU?oajJYpc z(e@F0&at+jLH3|@Pb!VKo1+dxzQj^KqZUo&5d!)v*Rz04GdJz~@f$?yJ=@WUi9mXt z4r`LUOXZ<4O=B(B9N=>TGHH0u7G=D4D{h@1%o()wv|p1N__VBiV^=WZBqZ!i45nrN z(pvG;vJuov)y|TWrjVTir!)_7Im`(2;6rl(&sv z*(LZmVV**px1n{N*7lT68-#0n15dl5a#2zJQ?W8phV|107{NnNB~Co*1t+3=W6QjijOXFCx}h$oD@)i5W~K{#*d>epMA>0n~k zW?5q(rn#ld>s`<=5hX|Oa@LkEP|t!WJ-qs5fnNV=`Hb@R+SSN`>KmLbJ{AW_yby@{ zvbTc&qEZm2E6!3Z1@&PRvuGE21ER$K%(ei7qSc4&{cLM;8Nm9QF#u7O zte>qMYI=I=B}B{q?2n~-S+y&_sbKeBMV)iUmL3+(-FyZu^PhM+;^TP^tHYx5ZZ&!d z{b_mO45g_JDohk}15IB{rJ%3N{3`dUonBsj$_Ib1FpmAD;lKC&`}5=x=;~U{S*~xN zlCT_??wz7pyH5py?7co6^Y?~zA<)FT3v|>)17x`!pq!}-fT?sDPkjEH9>~4&lEmL0 z-9uaow@3@wIV7Uj+)8+!2=)?rc0y=*`o;ey;b;x+ehj+tW`hMSMj}oi>r35h z%tw4`a4X&lpsdtnS%aJ_D_sT^&zqE$uj;m(`#YoT*P5Tp@R0%^#psab$aEz85@n@!ZuDl%c{J+gE%8eOSVPH*BcclNj3yjE!}&7Ngof6&0ap z8L}n~_6Ddwx%g><-tMs5|BckM!K)8_p@RW!d&}Djx2$Cqucuy;L(z7OEngGU!Ca-N zqE`Gr@k*e<&3;oHL3kUa=&2AeC?V`WMgNe}yrL3DET7mpfjo@#vFI#5og8p~NhyNaW02=gEV&n;aDJPJv4d+5kx%g}21f)g4HsOX+|I&M?(j@cA$=G&aH=u$~oWpfp0*{;CqfC&XrdkhL z7mJD{@S6cmoOG17({3>TmVzxxk9~FrH!q#O=Qba2)|iKq^l!wvvg&^ z1m#kIdA0t)ELMp<0g_<)YpxBKa?)`tOqT4S4P#;{TBfE9xvw?zQqZ%qvo>d_AYo%0 zFGQgU^5r9{i_^EQmxvODCy<~I5kRLxCcjnbC5&F?B7m+34W-K$lcP=`d-%bt|D^m~ zZj|=NOV<-o@n`S8;avrW5l93&j+B2UckX$5{`r2Z^QYWxZ6bP>58LoIk5$<~m+W4C z{3eOr>iLcJvjC>(D5@%FgP-H;>IKLa z^wd(0zU+z>{6pv(n037Do0y~ZC@y3XZ}j1U#xZ|>coPM0+)KG)8eM7mp8wGpltNCWj34ltY zwkmI*(yh*67Rcm4%yq~b#i<+X;yLg8Sd1WCgLG}6-?sNalczIXz_akv2Qb{E)Uw{{ z*Y3Ni9{hB=sC*}&;s-^pxFHhXy_3+_Wk`~nS6%Vyrp_vj;I1k(_nk~z^@SYMYBAe!!uOu#%W>1oWWFOG#V7{|_F2EE@ z)H~r2%k{+Em3*f*&<@+L14>O2npd)1Egk?hwX9P7HjDd^Tfn>KAF%b7LOtSEf`vD~T5bPuMZ+?6a;4Cbj0)p%8pHdjd z#Z^sBgG0?6p=MKio{_NgkDChEB6pveynRwo9!O-|w3(~=37)oGr79DH1Tm4{|BjXb zt9nE6WWCGv=J+Qs{yJNT<5!P_=Rsmlp*DY(BYEZ_7=@GP{+Hh9~G?yP6@EpyLP1@E5YQDT-Fo*;HS`?CpLwF^j((Q>m-NFl)%7 zYVP+T-|23Uw0~CQEo`44@ab-fEyrHF3FZ>WXMGw1%|~@z_O)Qne;p@~-4WGHRmimy zBj=Llu>Ra&kG4&z?@(`Ye_m^^!6^;u7J2?x7oO&v`Kbc!W zDadlGFW_TQ(O)}z6HkeIysR1V5XkLofSrMb0NJ$n!0v#-RY%{( zpSyq=DjJX)1EDWfVALnGtEv6>pjE9-=>%naZMpe*bFChL!pY5BP^L4DmF=w{)U12p zbw{|4*6}8c4j;J43lrYVQy7X0#HAPB0beubl&*GV8yB(Kc=L04n>G9S)w!6s8tU`E zd{&aSlpe_MJpTQH{o1{g+6@%p}oT^=e#YwVs%PDvp^rMG5rOkQB zSGg|7od*l>zxx2h;4g<9zotAR13rP@1YO~OyW!h6ze$ABss)#cq0Qy51o~)#^=7TW zqTYX2hlJ&ID?TW6`e;L%>>a@;37CW{*2jRbxVQM1+Su4wj8Oh@vY&ypfFNFoL*oP2 zTyc?6lm_~Ir^A0%)z*iC$F-nmd%yt$t)+T8=9Ce}rKCpIQ;^B?D&1PQI~$o^>#c&( zPTq%1MyRYV&$ZKnlwLAx)?bOUSloS@v(ZomcGtOg=*7a6r$Ln8#kk@6(p`mj;$Zpf z_5Rn((z&!^g(I4$XZXXd9ld%{Ki}3&YkqD_k!bU47@Lmg01*T#6jL`37QA)-+6joM zkdlF?QV5H~n@%dRNJg;yk0vZ~F|hUNH2m;0=k?Q5sY;o;g;u>0;iQ13cS#UPs(0N} zHy-kWpi1?Ww?c$odoRgz;d=uyTxi^E1OV8D)smp1#rcqJ;Mu3SW_L4f0sjlm7JYq% zqS7tTY+kcq|Iug0#>ATY-{`Scw^X;_ zFYv;%gVR+28P@gh?%ssmvl$dPf9*^Rq=hDULGv@QcOw|alLiwv$jI2gWr?BH&-!Zj z6#4f=#|Sa-8bi>PgH->WR|MO(>FeUEojU__;_jUd5}MuwG1xt-;*N7#j)Y7K%LwzI zI`a>n?dCj)q$&;lAdcMTeSI3jUFMVq!f}=wSBmxyLpwFuq{q>6W=zk+QB`mHloL+& zs}y%_ikBC-_Uf)VOQuOwkaVk!+jL7vd0++*7l8N ze)HBJBYN?i-JBeH0O8{g8uLZQDD=Po{yBgT5<76NZMz)-NQ(k2vva5{zOyZGN!7T2 zvz~6I)>tJ#N2Bw%lR~7>g(EDkpIR1(vQtrINByeo<{S@Z` zT`F%kn;`tvxX&0kC9{135*Aas4E7`UrW`ydy-N66o-qpc#=VFf?!0`vp;VDGo_xB0 z{^gX`pUFEE0{~aK{)i8$VPUF3V`}2)(ZGyzqX6ulzao5Dcf=>l1Wdm&uFKZg7-)G% z9qi@$5BXS}o5QDpcwSUQ%&jk{AXGJA`pL`Ln_d(IoP4S9b$jWbQ;>DbxGwz6%ll`w zrrCeCdc`~KU8Do4%dq{Vp|JlJ`uC#uKCfDE^fR9VDIk-mb_vOSyefISn7Z-@{qa%_ zUe_8UJ+fR~y6m|X(qwrMy!aExzE#?l-lZF;TDI;o@K8K)p5g9J5>-r}A!Ks(tj!Rv z^AYUMWkUPXVpgECU}ueA*f$E1X z(SG7RlPIkE&@i_ATL+-t96Nmg<-22qjdS9rp;rX|eCCR|twSeEbo+Y>>6wp3Xc78d z7!xE+{VuQSs#J}uB1!9KYnn}UYx-<)5j8za?7r&N?UR?rvCV1^C|okgtOnPsmJWzM zICds6u<0THz4hZ>W8~3=9SO~?fF@ZT48rwTd0VlW9!U>k#xqx3C;DD0-0cleHG)m= z53SZTp?~Osf%DG1Jjg-IMv65*E5ZKS14H~NhzB#^M~y0_$6{qf#pUTVkUo6ns?|RR z3Hog8_bz7OMQpM2Zgkg4>l45iE@x!;u=2kx6~5*|ffjIutpJyxFQN}u0cIBxZ`921 zK3fd>sgAU8i2USJkQR%c=Eo{LJ?s|*Q%`l{814dRim7(RfuujWyxfWPgbIj%Q+ykr zRQ=0j{4WD|27XJcdRRQ6B9OD5AHRP0z5LB8SKLwb9Ded=@m719V?SgDu(MP0=NItw?gK&1mY z`DNg}HB?Sn>0dAA(55}WUIR`u*Kb}r{KMdZ1!vDx9-F+1RZ+xX2vAB#C=ioA{h4hUZucN~z8 z{Rm*2({6pTKi>(&-Mx~nfxS;Wcs~5_q~~9M_b1&DZ1f(d6m|Ao8r{GU)+T>Tcj1fP z!zqsMzI%S$>zaHLgV&IX^v}c3+WfO95A2t6P3o|pUE?}E-aR$RdjG-?t2}gnwbfn#TZ%!X<{vTCHMQqp^c2}Aw5&)CYWF+jWlCjV! z)njtM9KYg|XaO$TSz*-$>j&81bn(I~cHJ+Ueu1!o+>6}Rp{Dk=hLPiU_Mzju>mdj4X)*jMcF4gRZ~{HzSLWqCB`SG|nh*6>kW zU1Q@2E`Qy3*BU9RQAy`&tf$E34|c`(1*O&$S(woZlD3z(bI`M1N}PZeg^%JtqC#*=O1S&wh5oR)D;&qBZeGX55EDQf`b zmT-ityVX;%ly!{}ABQ(5AuW(hZID_2`*#5fW&zm^7 zNwp_p{h+GHP=^z$`Xr%kXKrkq4p%0MSt+lx)@#mc zx1bn1u(NfIbDe4Vb(Up(Y}Dgm0V-_QC?aP0tP1$#jL&AHrNu~@SevB9NVRK&J+7@_ z416lFK6fn_zySmr*FFU(%yi{l96~wK->DD;Pi9at;?V9K(r^!{B&p>OO* zaiKsi{X6-fW*O$Aa_^j=HCTI=V6*jiHALS_xMpEXWm0foO2wpbN#ufut?zQ{S-JdCMARi+4?13z7 z=>OX_m&7(uO-g^sayI6p@CM>$;>WifG(_E)006!9t5T|ZMsL0sQ1H)HdkVx#gc25& zBmguwG}rGEwIP)2QZ~9Hc{nQ`Vq7~%@vaR!G)=Nl3&jh&XtIMc^!CYmp|Y0pSowIx zhiLSpW`Cgw@P=L8?wx&=ADs@`Bud@lzjDRj)M*zSo4#s6vo=c8H~$iv+TF##>3}JF za4{59w;KBzEI<1X-QB;jv%HTKw2JJt9z#28i7!bxBK{d^txA~;47exGColRrO zay|W(R)j0tyD<=eWw<;E>!&Cs?nxa2&tHK-mO&As$vM6aRjX4H5h9e$W*N63m zM6fYx_Q@%2ovt~4`#};&;`7=X=+g5+(Ykr-(G74GxV%l}zcm0db!`Ta*dLpK80sDg z3hH3Mu81G!RQi=p{`QLw$1?xGr+RM0(T#t2bstn!%R+YXCd{9Hx?5R5px-!NzjtSl zcz5|knCQ5CB!l!fN3ylRYgL6E4`!>-%`xayStw~`CyC2Ozcu6-lg(IK_l0`aU-Y3( z1IjFSL&!afDoNJ9g70_(oKH+8P!!nK$b_{lUx~uxsvfHfEFCbvO+r@+s}>jtyH8x2 z71o=pz7e5rTr9g*ZS+cu=KX_DO4vk{aQoD{UpU_yE8qDKDuNW2NZN%&dhE70xrxW& zK%+GUJ3tK#sszaUk?@(W?*Nn_f{N!TX%eKx*Ct`1SPKZDkq11>^S7#8CKTd=0{#reSr2;D5sJBi!1H$57?armU)SxmH*6f~2+Tz(Q2-z<-b(rxMX3Ox zulCTWJsVE3shqS`R^w9{bg1|}P6kta^gQ%mpa2g+rNMObHc1&)HeN~us1luJJEeBG zO38I8S29R6Oy24FW54YwrIs#t_D7zNk0sHrfRD-tj_wLj2p~kM3uF~0%^MU=;U8|8 z9UtzhW}7K}TNe){7Nf3&Y&1;7FzX^r>w5(%0w1O8{hAht|4~>(QKzf6jefeG*-(sC zs9_obdAKrTV@U2$)xNSvA9{o*ws9RTAB%{a`fKHzIY>sJBt=GFz_2>`?;j$RBGkL% z-zRP~B@3-^9na}?(Hzfk9S3WjC@Lxnk^AOSL5pLv+1S#|Oe&mR?*m*hX*zv-hnJQB z_{GHQtCnF&eybM-+_4l2B5fH2@tA|%#B?~3+wK1M}Z~-J3l$s9! z=lW8$DSRLU9^@;K)zy-JodA5lZfDh04=D$KR{+$g+LbkDeH$W7P6I^%n58<@Ex^!a zMF5?zXZ;Ul!84p)6iWm3^vKrf=h$LtotF(`lES$vE6r~fp`4V$;eB_;e=Q`1rd9p8 z%WKO0)maMXjyha8qx1wLjjvgY1z@4a(8WooYXAw0V)Ls%+B_y%SsACQhpZ#X^keEO zm3o|%m;8^KFh~;%U;7EZMjmK{&}J^xj}s55L25OXCPve<4~jyv`RgEEG*2bWr1=T9 z-;btFHmm!CUN$!#UJKo?B(_lkn|S}S-|YVig*&IN!3EYb88z-RTy{f--Q6CiZ8ph7X z(_DCEa4zlPcqh;YAqH@POt2rzbuDeB>)X`Yp5hO^=|_ZNK7gB01Q6ppCg82yJx8=s zcLabXg*;?#zX7}!CZU<=C%31LU-T|&RwdK~MwE4~`vL`q^)vnZO!FabW|v$F$P0G| zz{%0Q*)Y6gI~eo!Uk>(zfgS8=%x_T+dH~83t!n2&;avc|CxWg8fzi4D<|RhP#v|L@ z+^jTfmg`FTwPh4WBKjhP-0R0ivwo0$ zqZf7m#zc^Qg|RUirFwJ#otil!qpc2|ZCm-#??EEaJsZ0z9;&Dx0bFRW>{!a=`$-r$ zblh;G3{^y)>JL@2+&d;Jw$ z8{uEXa=a&Z*;u&0^za?kT0aF9r+Nh#@W5Cn(r29*Xu z=@1l@WRO*-?za4NYQN2;Zlc#39koUafL#-GpqdUy{&XVhAw)Ry~&o~yacY)_zKr=P4uZBoVDnJ}(XM+LG zei6i&v~i_^_v>+w%~tNgbce?F!?o56nUN(!T4z7m1%dYfndu!$fXiSouFhN81gto~ zYG5!K)~t266(JagG_KHh@Vk0<-74S7(rZ!2^w{w8*|G`Nt1=-FG`y2(&-8eVIQT23 z2D$Hxa(~TDetlMHFL9~Dvwqw^baTdZ=pN`>By&g z3pQ1s?(~SVY)lgDJD<(0Flxn}Yu(;VSb62nS-A8ewjuiK)hgQCWE_efE$PFE;l}n9 zW3T;D?z%r0Z5Q@+HYe(W-R_09OGJ4VxBZ0A5-*f3o^SkF-CXyY9otH5O-N~<%fff2 zr1l!#7Y1E11vTDhM>?TgI8-bwrnpTnMzQeOo`6IV2BW3A%1vs-jJOgLCw$+!C(lD3_~w|ISeKK zjk)8rv%CB5>&%1_o{mB%DMfs7#UG)M@>K8+%i)D>rqFu(+=~$7pz6{to$Dy?Qch&< zaQT7$7BXQF#{nanx56KR!ra3DPCIZAHXmA>#CQDf+a1s^K7^o(}u9ZP8%XOE^nT=BdBwpOuWh1pl(p9~(LP_a`^E8Y1+n?<4@`!$$UBo)z9Q_*Dl^}% zUw14{afcKE1!hBh7Fz_9R1V^b#mhPtY{^ej5~d9_WAZ#G@wVCZV+4GuwXVZpD>8_r zW!Dvn0tPIWakA_g-njHtUnd`#;oLO#w;gu0F#wUlV(v<%5+}9E%eo{(#v?m4!C7XV z{DI>fBdy#eHD^fErJ(<-wt%9i#x^N2HrhqFnX}PPn@xRPU+}3sr1$?qy(V4$s424? z9?=2WodyqekdfF#t~lP5z6E*zpD+l@VdLKKxbs25X)A9se3N@cmo~FXce|LD2cz>Q zdd&1!p?z9(QopO86LAuFp4FhopV8(?sm4QM!=s8`ovSBGj0`NR^y`+D)1H*n%4aBR-w?x# z-4idvl@WiZr&Hr!Fj?|9Z*w;l;jP8F*x=F>V^fjeI#SuE^wPSp-pc^jod&ne&a-*{ zfj42ztRe9VMhC5@f*0%KfTN^L;&-4^qYr-P48;u}%(Y4rwb9&FT|Y4*w_%8RDys7742pu+ftRE#SOZB5ET*NC zP&Tx2E+~%w()I9lCETh1JVzrB-h@#CLwnJ=1nkyl(KZN9%Oet$VRf|+^2e-qi{tSF zn(#R4(9W7&kcc&je{!aRt;un!++K#mLHhJfJ+mziWb-y^{ya zm1+n8)a6Y35wGs_#Xb=fmDlSIk=|8L3{heSOwP)dNXKu9%cZ^NIZoWp>&eScM_q_} z9|wGdiuDH1lC(edH7nq~qaAGDvrrP?kJjyirfx_Jfvh^(P(fHp?+Q4xF;`F!ojBne z_xm1g1v_r{Wnsl4PRc@#x9BNwAZUVszt)sA%!F=6HR2@&~p= zQA#<})gLxSKE(E%iJ&(A;_^jjl;umR5h7lijnZvxL$+7wGUbk=9ai^Q&XmSPi= z>~LK;$ohG8^V+;>-JcDLi=>f;l8dA8(*`|vO1Bfv*;Bm}?Ud1IIYTi1cDQfNlfw|< zq>xXv9AXWR4Bi3$FS``D)1uDm&sxVF;%ee}pNd+)g`W6w{E3qiJhhzSp-NYy z7)B3E`45~V*S>&v6_Ddg)KaHScpZfnZ|)lhr)FliBLj%<_YG)O8Bz}$xTC~w3UNFX zc|kzNj>`hZJEVQ(p_gmw@xFdA-UFvnebsc32#f z?KoS!2PSCOs!jC8RSD=iRAclC1R?n<_>4rZBfVJOC) zF3@YN!LUT2J(*`Uql#eIq?(yMqRRTTp?`e1iBOHF=d^*S!X~=?HQmg{p4+P~g%+_O zTsQu+^I(xGn^Kmjx{JT=bvE9jPgaerRc9hz@))_3zNr|V^*r$VC|h!TY@A}V3!cTB zTDQkDm*PRt;>D= zou0iG4xflodb5{U<~0j^Ecc>y%1SsUyB9D52U>a5?>o9Z+5BKe>Z^@VV$9c|qy?;! zG>LH`vwe+e_Yf@Gm!K6N9YA5lW=P#A6@2js zYPkoO!E|o!TOsqU4G^keKF@(q#W9~k$VN1JwJ@TJT$8K3tD+RrR21>M>N*M+XwZ=o6S#XEfME-A+`9^pK?b)dSP*LK zD;+gitLFk8k8K~~f!kr&#-AyvuRMZ2`U;8hT4ndHfSfXKLFS2M@-omI8vAFK#FT-u zEzE}jjAzTy4E9p0+LsW6*Ar=B@PMzI&)ZFJg`^rlnpYT%)zsp@(Ku`vqKC$SxQ4nT zg?}&+1QY3DuS6^IT^%U!{G@rGF>!^`%Ardur-WRp^>wIuy6@`VXrETqmAZZXAV0GI zx6foL3-RG}!9a`CVx*VVUKMlTKgVOw$Su)~sqn5+Urpd$S9z#FC3e5!e^6vD2^EOQ zZ)MCWYey5qlUvFjj*WQ}=pWfEcXN&NjZWcr3}b~+X=CgGpZ7k;%<0%NsLEqL&1R_4 zv?<}u8XgXa%0wvc6SXjF%F!pg@L{LvL%-Kwbny}e-D`y8ic(_ad0(D2M0Qa$5(=GL zZv1pTnLe%2FFzjkrs5&3BLY4#gyr+3+cFXP*{=5rD6(^-{`FHxs{6boz;}hXMc^n zx2_HsGV?D=MPy=qi|gNm3<4H2rtseyC_Z%#dS8LTk?`ksS{|Nxm{Ej}aG|kH=f6SQv=snCpe>D{R($Jxeb9rIvakB*suM`aq1`kz)>but zuW3;$^fh#g`tkvtwy5)!`lsLtABfh!_zWr_>Cf-nFu0jpV#OV#@K-XB%NV58D7e0W zJG0uoX#E=n#+1Aif(P)jef_2~n{s=)LaaG&<|biv=_Cv5V?XzCknfPP`RRhJ1jCYb z3d)5IJ*(GHfh){Mgh;Ftd{C(vVl6S-U|Z~S@0#ZsU(n$h<8=fq%C74&Uq{C|1KD51pUA;4vij6yZ52mg+}cTM_O z5@h;;WB$tsnmds&x$-~uNz=2NN>BJuVMh~@xJZN_{}tT)%p0<+;vu-e-{|EEjg=+; zcu#NeI?N!CMd{LUzzn3fZWJw<6s1(zn->qsX+$j_QElD_*RXR^2VLcSZ0Pw6x}*N_ zqf0ZSK_ELan1fU4gSq7B20k0svE~WBrC)`BrsOG|;y zYjzX>yD&dSFy>m$*wGrI!0)VQ8}3=Y*9}sX{Bn58PH!}4+Mu>z*wLE5gG*!0laIV~ zULU9>cWnOzQ8=YVDG48n&pDDGxARre=zRQA9h0ZDD&{Lx*YBP8cJz@H{y#5SAMO3T{iR?E`k&e5K4yGC;!o%bHvOL{~u|kk@@Uhj3`_G&`R8=d) zm&HN+EaU`lbusWsCz6nE)$UK?jO7WOa9_N@&6xD8C%f&PW=Oh#q?G9d ztOTdSVDx|t9~l4hgZO1JBCkxEfn*-W{?nJVsoOHcy&!-At2vxnu`^zeati~M1bh(; z#>uJwpYtCzqg{Ql?D2VigTMnKQ}R8wXCvcF9u9q;05UhSi08X#7Ne14}VyB(9LGwe_?A$_e{k)!M{xjqv#4gX89hPLfiA93{T z7BY7fcJ5X)$oCIKm%B*gu!5f?(WB9j!JvuL&^h>=!iK;yH6ESHhb;6Wu&J%Ld2^X_u2iRN&LwwxZq5(KgV$E0*~ zRaL+{hL#L<4XsMw+~Nh-N&HHC8)Nb`vKv( z`Lt5Mub2JWw{KoE6Foo&GgDA27rzxM>I@;a`e=LOUDxCQy-0f;^$RDw(JYF2(|w!`=Zphs#& z-jDeu$v>Vz2~JFKNojUAmz-!>)K+aD3u}0V=>PF22|(Z;stJ&9+yVI`Dmnvja0^S{ zmO&;N4WbvC0I79fAcArLZESv8^{MT?g0t}hV}uv$u+F&WJW(*&$r+nBE0;U|N_~NX z8b$uGUyjl(km*^&qs#Q9$xdWfM#f@=13~Hl?+RA4P6}MiART_B9Vm&~L(7`=$QoKNCAB(NCTCf`d)vIV2XJpjPq<%g3t@Dk&8(3%cAB}Cs_O1z zT!}!y;bY`8qJ0$=4y03pJqzG4ZFrR`u1Ie!sBjb7loDG``*nJIv=f4cnlX55HV03J zU!ZwfXug4Oc)Ao5!4@onURwUd-GG$u#n zrkV7U`P2XL=OSSCoy7AILX&(cV5vB~c!RgS(u6winIIhp@zG1)(WSM%MUc^Uo|`Rg zYy8v-#4z;7LjTlz z-=DaclG40&=(Kpt+u+3b-Rit`Q!{-)8PkwJwidXo$7`2QEtlzIYeb8NgO|5zU@x;0 zRA$Z}%>7jtDl|?45Ik@Z_@3I}E{HbEbp`mR)(>EC`68sACk8iDObE;0H%=G(o+&#W zBbI)R>OyEZ?i`-J@e9O05xBJ3>{(y7e);a;uu&1p6Pv%cV~y8(K9L|i?u9^|bXH9j z7L~S!aNuOj?axL9e!Z%U>K1ai3A+xto!qWIFYg5!UN7zS*6Y1J&96iv@VQ$G z0;>QzIZ{P=odoIA>fM=RWhO_KxHvCt<&M?8*`h?2Y@W244`sDT!Dm*NAG-%Pl>;E7m!ey%R{>cX%Q@uID*KA+4$ zZlS|%L~mdtHxs#BF*HW3tg4!jo;Pup8F&wScIp@1CvJdd9%zmrv_U0lPWuo7H5&AH zHirSKX%!0Oj#i=@Z}7fuUG2dNGASnz73P^j8f!+Xn8*vr8_xs}Wm1fVkM`gNe#b7{ zcG^sduK|_$@bAd9v8z1*L!Zdj7ys@%LKM{ped00h0%M~hy6hH~(KTe`2;u&`c62^A zDlXt&c{yV4Ck~eJ4=m5XM1J?0Euy^aGB3k?1jG3$V;U}v2mMRlh4$Ls47O411cEYx zV^-bBFp%J_SN%S}>69{DR$#VAI(t3I5}r{Q+lsI#_(p9fx_l475hA2xCoVBupkeuu z4wOZ~aQ=l_SO)#=G?nCKIW@BwldhQ>_X^gI$6(C^&>Vr-WrW%#L?_vBneKj)yN{dA zkdyhvLn$OA$Pzj3Ivj)je-*)RK|{J$nH>)-!KpizvCyYz;6i{_M<*fO+%p+nSb#BO zARQI)<z2xSde8EqdPaoXsnD>@R1kz)}U^QGt!S^Q6S$UB-2xI}hP%P;$ zKlsxI{I~yB)5mVPXoTG}WC`mwXOF!)Wsg0S@+6J#Fn6dhk>)dZyi~4NxO}Q-QR!L7 zzrF^c?b6`srE@Y!sdm{vY$|FIJunKLP*8}R&H@J%F1b!ExZO9NAXef(DN0fq<60au zjE49K7_7M-Yxyin;kPI-FQ3Jz9~<|Ze<9V{xJP5CJzjv<+@NQ>@mTCEG4JA!^~LI< zs$rzq#|RNzaEo{GM=BSMpRXFrUp@9PPmA>5qqmZjKi1_k52ZlG`h;XyNjf zxve*{2>=ejq@^*0(!r_mmo^m7KteY1&V{uxOzz@2DUw7#ZLT74`t!)R9*eIK4l3ix zz^%S+b#N>_aDgk1LydS2hxz9}|F_H;SY8pR@dI5LoKcH^eXkFj_Z~i{=L=4Sfvg#< zhezu}SBk_g*Z3~7B&0tld(C%EGloWLF8K~ULp@}fKSrSHpc!%(P?YbU3xQYuHZktv zm6L7=^o;viHMZV;*z~96xW{MTym4ukF2;WbJmI3?_NTRl|R>x0OfC4Sq{+Zmvn-wY0 zGem$C0_1{*UJ#l2_c76GO84-^xVQVNWpbj+8>FMT{hSfXsX z`%S`3>w79J#T72V9f5EHDu{J|08|lC%`#;(vTnLZpLXy3ajCJpGsU4F@Grodj3ByIzgmv#zw`WF`npgr>cTzpL}TOghq-yq zhB4UPFB9DA4uJT5Uf6R5toTge0!Vmpoa3ao>Z|P#`-MnrhP3?6<#hC#BKKl-{tP+_ zCZ2;igb`z2#s&k!icgfWj8Mq~)J>wH^7UofY7h#n=LLYq)nY?qrfzYIpQ&l3B3cuw zkAY)}xosbq+_C8IZ+bkSMI_E)==G_4v#g49JL+)I=Q*<_1_{X}9}R=&yFTaY*)<9D zhd!VYN(GHW8G=)Fl~kjdr1}T$p0E(y+y!rWfLxeT>aR{@E_a5M~CqyKv9Nltr zox2nHGlUuTb#^*_FUhAC%%$IsqH9|)AD+uW4sn-0*SlySCVh&ZOv>zPm&n?uQDagl zfmvl*o_073@IH|b0JZLei_?6OvXHK`-GvjWGBwA9^k(8RgEASG%~KGaqpQT%LpeGX z-u=W8ftv7qt~gqWOOT4nVI=t6n7?{zQadw=6IkFYxr)Zg&hivGO{JyYd(zBxD5Vuq zHjsv$HXuD+?LT>wzeyP`ZEOd2=rw!%v+p~rMBuh%CKgJhMzF?nlI>LfVkcRjUeBc; zo)lP9rEVt`((+uO6mmBr=)AwTMNFV+E(p7ffG--QZVp_Ovnz;}8c&m5f}3{7*Et8* zm0iUtW>{XZmnLv~z%Uf-CY6 z7pw&}8Xg$}=9rUu$BUb*5c&a*85@L4GGkew2Gv}0O$JiybXTwe^kUKuXH0KGG<(0S zh;gW*bej3vIr@&c-!qpGwBE?ZzVgI+qkM2-JaP!gGroI8Tnk3opfIjLY#NNBqs#bv z@sK^&q|6-z(mke;6M#`4%q>BW9Z(YnZr`B0)BSSJdYvwMF5bi>ayE0tf0cWuYi}I0 z?8?91-F2R9qNzI^nK%gCejlRC4cdYNJt3(-hVC0L@rgmZ!lnYfI=46?DRMOsMa+r$ z1lPz82zPEQMcamdW*x4O&j(kTZi8$=I_uM`!1I>q_5X`cx2@n9xY!xKm^9(u)4!O% zFmJG)+)O=jrXx{7Y+Cj3IY&6^R=KkyHe0P97g!`XfMX>R;M$E{7e?ikugy>_RT-|j z{LYQ-0ZK=}**5az41oIdBmUBo3&z50lr@YkWkB3>@&(xN`uyObP$NZw-pR=poS|)j zS46YWmhh7JBCdl&6s)?UD@0#4^cvzPPP#GZ+;MmIllKMe)@r^|-|D6iuj7eGybB|i z>IR+24JWzkL(vT8^CH4AeOn+q^g3O{f?$P6%AwTL$&dV{pyBxM?6Z~kBO5^O_N>LX zC_T)tuvc>&oWnA8DCE0;knww|(bDf_T6M+Bx{lD}K4SBR%pVg164a*6`0B5>meg#+ zgMV|?)N_72zO8e756rnN!{0wdFcCsp-v?6lE~_VCx!LWs5V0>})6F$w&Z#C-R@Wwf z?{3lBH?Vxp>CIKf(kc0L3xb5On~lJe$CZ=@X-#G`;i+L34|UJCGdB|tTh7@-)*6$%vwY{fUw^O0~0WupHJ1I1Z)_OM=`*L25 zQE2?P492e8+?$xz_lLC9f9gZWAQ;S+^ozzz;6Drfud-v>GpUo5NV%2{@7kTHBSEAW zI}4|quh9~2PB>M*ndm@o5s1XQIYd6Iy+NbJS2X#g>oYH&+6xFzz@CKM|FQ~ z&f6g&2graD3usr17%bkD?mkac8R%H!fi8v-NkD8MaS`z^cgtpCl=!TvpxD93z$?N4 zZWqUi;@3AZKl|r(qEhJ_i5#Pp9Cew}iifO%dzm|S1f1&%hbpy83Yim+<+`Y)b_9mC zNR8tp@aqpth>pzhD29Tfv7EOK{Q$#-U00D9?wg=JH+_r8S-f;#ACpYM?p9;_+h6np z0)QY%)SVVg7-$L^yEv`Y*PzJ1P4?s?zs(ME!f+bc)nQoB{#JWzB>ljw3n)Fp(@sQ2 z|Ee436XvbV5#zU>^X#FNBxJGfVzK9}L2z*X9e$ho zDxgQkO8T|8Peo?0O+=0qfKn8RNx-cg%_`JRg+9HPZxhy7`%?T!uFEHCQacmHQ^%?G zcc0JUx8ek$xDJ2%RN6f`v6NaWN@-4s8_Z$H!@tD$VN@*tO_ZtC4bY{=xBA^g)5%I~ zoIA1I3%U%LCgAOxL1|8+VXP>lyv+L6hAQ8AZ;yYues{X% z@b9*Am`oyaV&^&@bV3!~}=P}U-c zvp(1Q9h!* zMbxm;p|01Qh`fk7Ih1i7_VFut>~PD6qJlwhM*xeZ)d=Z$VQ?Qh)8wfgs7sjMQ?wJk zqC3Q2=gr)=Cbbq4G|gV0ds#4XTPDN?`?r3AQV_ph^&h17=Kv`Ra|a}o z0Z2<7gsKQ?nFw@p^YuNoqQOSQC7J#VyY3kQ>?<2ModW!T{8`)XIYV@MmOf?2;~jL# zh(-+T^VfC`mA(ath2O-vVUQa!z+`d7kSc~sEcG1C<*uT;0{QEecy|XKH-AeMF_V6G zhlaZe-MTQbQXFJmGQ_z~0A6BU0k4FQNJ;f_n9O0Z6`}`j-SG&0T5=c^#gp(wA~_)gT2MVxfyGT010}Z!$+K z_-95gyMki1R_ga7Dz9G$$8KM0{m}IM{Qt5Y0Sb$)!dN8_)wUe58zB?<3kMd|NZ8m8 z<+q1(SssiT8=^p%!^5;zf|%o&t~z;^d8|dRtqQTNJz6Vs)929+PdDKvb9tTzDr0{2 zLFFhVdVu`ePIBCed)ITD%Gd>uj6VKdLuwp}wN*V-kJ&$f@?~}hDyV`KCC!ghNel>m zjA*R91tvGQIYWU->@bZNrvV}Yk7v7T@ZLyg*mge@ z%PhV;4e4u0HBX8rHI^MvB39K=iIY_)^=$agEDpp?k7!G6 z+)gTcH#*3>g5MF<6(dkyJL^P7t}ID&HJc;9GOxB60^;3JyCo;G@-Uzgu_4x^SD9j0 zP*#&W#fO6T=;eb(fN=TK*Kz_F(pmj?4cUgA(@fJI5f&bIX&Y+mV+3gqJKWYCL6YJraOw?j#k9<63~`nZ*PEFp@72!kGW5nn*4gZaPQ;6VXu_K4;fL? z11cx*J4Pl@t3xv}((!R$uP3y#!vQY+y&nGzy64M#b<%fDZP<04} ze{%-2xEqosdZm+?k{bLUR&0(0g5{D@O$R+h7cRstfD%67kA7dzG*7_IMPm)xe;xxH z7vdpdQ29PkMKvv|eRqPG(?K7+WK+A(xGVeUwn6iy(SVm=ux>PmIx7eqRz>ftK%Ui< zyjMJ$hRhNn7j}EzSVcxp3OPzY8tO%vOt{8(AVB5*jcrl6^;$!!_(G)Ds4b}rzhSb zmV!q)Hb(SPET3@BFCnQGYwjmdUkaE|f=&x~v=R^-htxHLBu>j>@1X7!bbIJ!yQVIL z(U3L_GLZ)q_2h|L$uKzXyLl#9X4TtbV;Qrdy4ty~sp*HXv_|(>)$GEtoc(hCI?NBS z>A?496U#*4`m%|Nw8;kqD4FfOmbW}c!fGJEXt3%%ou0-85ciYz+It`oDMW{ZG|)Ul z^m?+93X$@YValt7Q}$^d?;Om;S? zXhAFbPe(bT7h@vo3<106=Zw2Bc8p8YF*8Gkq$)@+y6O#=fG(Q#p|8MkGt2BzG8HR7 zwyA?mKnFrAtXpI))KWSFd=8LR{dvUub_LWefZL9wylwE0yr{Ref4Agn6^i4%PDo;= zSKO~v^-($(LJbC=ASpBr`9at>rEL0O&=hjJ`^O|etr{-@zXRH9EH>+mDvn$Yfq0(R zxi1C3(utclB~YVFYaAr6)Scv)_Ul{z^f{g6x>d?idRPb3;s>ZCXE5u@<$y*rp-D2B zlSP^>>fRXMjqjX3WuUm_GbUGV0+GlZnpp+VxS>LgL`J_QI^B<%P&0F1C-z(^Fgr$R?+fQ zm7dV<^td~2ymH_D%$hv>j(%X{L+lR2e$rGeYfMNBWo^34EJIqUH-Y8B*=oolxB-%lPx37QmjV3&?}pXdFpW%@azsm2;&6M*p$p zZM5?6u_NS3Ul&~^F$OMVML@6u%{cATiHcp&F$G}!ACOu@aliLe#|B{ol=Pv0f%NmL z89%Z=&8u|zE_buTP%`48ibVFeR+T`XX@NB~0F3=1QMYr<6?23hy=8+3(Eyv$W%(Ua z#Bd{!9Hu+k;m~zsV_Ba!?TlrUm(NG!U-Kv&7`q=mhopU5-*7xI{qwD{5y z-^oZcfx=yD-O0fkX{lyPCk0i5G+Y4I4TThRKpYR{K0riCp$RpI7{q{`2mvz?gf<(% zw+LYD`L6urOO@r;f&)+8PR5N*3={9;_YzhSxVSs)PcAo`f^>zraFo(!D?PByj)|(T zpm*w7R?uRiFf>Cy>VdBZe zNsx^W_$e{=?CyVOv$Cin*))9sv|Tf6fE-(}Sq@WL15HN$TX5EHtwa;e-EUR>pju~o zNGI116#Q=-CftpS(SG05NA;0UMZc!Fn8&@ZCA5MLpXcfvGrSG?i;>8jQJw0VsvXWY zAjgs{ok_NA#_t}1w0pBD5&T1%)2kQx%$rSs!;SI;z8G)%-N-GJ)J~V=4nxQ^cfnFk zfJlnc8{IdvuiTY$nQ@sy=;$F~sXC9J2&fV8S_8R^*g#8;5qw+tY>I6{xq(A}nt=7D zt#STBU)?Ai~XV`a*-AN)l)}giaaOi&Du+4F8k;Mj(s0NeXS`wEnecbRyzUqduLNnWz;0hsleM&Kv0c4}#%vA?@I1uz?QYme6^!aIKi9*O^} zbe5}1^2u<3kuD9|ffj3$W%h+r1obEGvsFN4z~;DfIzvJZ4Ys)K19@^wJ{`n#QBA&? zJFBQ-k?;T8kaRu0Y=QFCLO=pkv(0<#s#(20e_wY17_%|_Zg|MXwae$~(tDQ~WwKqDB4K?vi!x!V?>&*sw) z;1wGN5X$qSfCza|3PwZW@Ur4$%|6E*#Hl!i{x5+8Y^afi020v34V`8=_mi z7MkNiQrVjW2`2d5&MV`=+?K}y%?a4(uMii}htz#%rAH`Gp#~BZLdm-vj9X4)`dWDm ztGSP+vsN!sNR@UvCNY#(w#fdcRtCzP3_v!jZB@%GlNL2JcBTOi3R@OEfb624Jx&UL zUI{|&klwhDysc=6XZy(;B)_PS7NYqSTmoyEBt79|uB=)y#l?Xn0jxjsl3)oY@h7S$ zSd+SLCqfg}cjE;AK@&s+1<_vdyr(e`B5KBf0$m4d1@oX@eq5z6=2=XcD%c!8wUG6g zA;&{>)l_NnJXiJnED|3u=~cqTijwL!WuYV3*aN|LE+34V;7aXcPU%uoo=Z^9eJ)I- zv;P`wzcC$qqRntDRn^79m9c}t&2e3j^bYe&MF1dWl8)0f(@b*7qQHp5Uq&sE6FE#V z)V$d;8PHQy+8v?%JD$Z4QOL|hF^MgKI!~yQP&4s~nd#g5B*2l|dIJ{<39qqRpvo87 z*2EFuDz=k_Y}Q+Iu;A^0Yt;-VpEnG(Rer0cx=5?30+HA9gmW=pazL3StCEAbE}>*d z?*7`AsV?Bg+Khks{O|K%dhcO*yY=PpbXY=u0>coX{y+}XQ)2_75YutaiSoFKvz4h~ zY7qdmIF}ytmqjV9J+D&e#J(HNWJ*BByZiQpqqr6bUGmnK(j6KePwc->KkL|f+}rc7 zq5^~cS`)YpCsy6iA7L2im8UJ}s>~(d1Yuul z*Jj3uA<+|*RdIKfwKfzohs)NZrWb0oM=J0%U1g5fMOS+ui43~-_h}+vg>b;j<62=i zr;_AEh=O$!;r^D;AGrJG_WAO`x19DSUOgdDg`sPu+fvU2!e1LAKqZ4lnv9K+sZyIx z@f1AUW33gSdV}MzO+s~?+;H_K!p4p)bvPBM^|64$wJKqvoJ#mq-V`5Bho9x78(oYy zAgsMoPRVc|ZtaXB5e429hq)ocQ=_j%ia>q4iSQ+lAE8jpo4neX;ANT6-;&hcx&}-NSWl-T7I`)FrzhDTEG}LWP@0NSv z39=2qbWJ;v_q@yPUn4FCfhJX<^7V4OwK8(s=r4@j`2D|v3#|ET66P3nP$d8<5L9t^ zgGT+3DrR6}&JCzfw5-(P1bWW&D;i7 zmN^KgEi{wP3md9DpShZtSoH%^I}iiO)Z1M-k}jSPI&U(-3vM>{ft8qI<9jVCYP+xaAMW6fa z)`lB+F(zEwNRMH#8(S6WxIhOgReAWAL+0>=uXm`c4r;1{W5ubZ+6$?*Avm)V0(dL- zW@4i0m-o6OsVn}<$rD4cKBR?(V>?zpj%z^fF<-~$zJe};WADL4sE(qP=!tGhsDE-K z^DOh(589#6B#>l_l~2RxLAz%lG`Rup)&_f3STtg zs2Wx2Nf(lF3pSMJ2w;GiiTG)ShBkd7FttT}s+YQH78|Sp7BDYj#Uija$769^eEYR-NNC?; z3U&v2it`hp#$Sg)5&3DVtLt-Om?7P>Kbj`~= z;pM$yl1yk_e9}bfArf!KD7R!cnR@NmI@EkSa0n!Xv2<@jF>B-`(JfqoP^0M&hfofw zi1I6SVA6=FfCFNk?2_yOjcv6h7i%D>Y+h7Mzl^IW(q-Wy?ON~l>E%;~-8VlW5{>@(B=5y7N zO2QRki4zd%?mXC<7#;IYi>f^M6TK7hWE-UAn$lBeBdpG#5J(M(SK|Nbg)jrR=D2692Cy zL!0;=H$d#jSyGFi9`jzL^Uub5nzX6!cYYUUZ}_i$A}=iDJ)Z>WVPK8w+j{|w*ECE+ za1_jtMa=dWe-2v3^nNx@|Cpu5Oej{br4O!)&K|HKWc{PxsC zA!^dsMsRfL5A<*~9?bsT-!s>G@~;EzRK(Rg+JiVl_&HUtcro8ulwt-Yy+g!r(n$32I z4zAIScFT$4bFU#EZD_f*lUH-1@7pDQ_NL(Kj<_o~!m zfn6B7qbUGoQZpp~Hf_)#JG!+$p`hT#eC@4W0sYWSKyZet6}4Ae7teo%*%*dgid6t$ z!nfyR+!mokI`&_Hztx-leA%;()-0i45CnZ!=(F>baIU z{^@vpO82=`!Z@1!+@&JEn`f6;+2KSfxhD5iLaOADZozyfcuN^vcPW!2ox%CQJV{5% zxoqj2o#ob}I7i^Es6KV>15{2tD z^5_6r$lBy_L-}$`n$~-L6>20K8gq3$lLb=dv<_hq`N<>-LK%R?tJ*k+o_~l*oST$C z+Zb?QJ33^$Fo1kW9-;XTa2V2nO4ng*Hs7@kqv*I(I&U&Wn39FB~{9_S1d8Q2+ z_hRieV-`b|#Y=`F_1*Ej*Uz)190w_MRM~+0h#6lPN2Uw>eO9IW*1fb3^f;|#SaXdh zJCZ=#@JIdSICowkCS_+9(mmHyS_>`qT~mo9jOfAhSpO;YW&%iw|%swvqo8mLDq z0^DMfoi2Os~X_}@8}b}MBPaN z6nyfXx-O_+mg-RCHy=@TlCK#@_>3h<)_unbd{r+5uf9QJ#Nr+GBz>#dMD^f zBx@_Q!Tf*@ivMfW@v6E$_?JfgTS~hvd6cFN@d(*^WX9AwlDT_`KRrgO7msGq`$S z;0&5ZdpR3hB}C@mamdGKJZN~Z>B8dU`ux92Pl0kIC8L^+`L{b$AOv;BdZT1Gi!4hx z#Z(dZ758TSBl+8&LgaGejWnnqT@k;@7c+SBpgY2>ZsjRSzSmXQ4}l5o89D!z3e4Ee z3Sm0ghxbSC!$Pl6eh|ehWzC#Poq@u2T{S}`VG zS2L%-x_=6);ts`|KL!RKSD)rvNi-Xr+FH0V(c9c4R~^J<3NW15VIlPH#?m)o4V_v| zqN$$MS1c|tc=*4wad7!S6N1vBPRwgn)#fUxZ62re9 z=%4DT?$B|f4P)AcR|Zu(Y~8YRR3H!y!UqM`_(goqP-r*eBq<_n;O zuT$7SYA7@8Me5i6fjie8^A#FzwPjnQTdGE;CRn%x_@XA$`JRMwIOSYk(6DRfwYi|fi;=2v z;-_H(J=>oq*J`)$$|%0CTA9Owt;@exbBf|UEP&_UP$OLW!Dh8>(E6dM_y-oT!D11I z(8kq5eKHGm!l82Y{d>$K?+in4T^oV38QOEzch~#B_G^z=;MlLf`Q*3R!%|Y7C)Z8= zHxg;8Vzun52AS(HIHE%jC11TV5qzcUDLfNm>Y(yUMa|Jsd^!J|QYb1d5bNWiLO1gE z2kET&==pl%u4%p7U*cYTMy|ij^m_8igYaSPoUc=I;qkzW3AF@W1e4`U z`hqCYl5mfS=X9Fmk$$^&v2^ft7*o;s*|1stpI7oPIbaF8ed;PucaKk_UNtdGp2@wO z3OtI)^0^=mNUAH8vt`?~xL#eQd{+B=CxjA0vM^WTFHqxh&S zy?XHRxGKTxm-*j;$qo6r6t#uli}l2d!X25b;j@fsJMOQ*#hq7;TWG58nR(qhI(0r7 zQJ!*)%uVuKyE1?+^8&mbHRl!*_y5uL7En=k-TUy^frvDcA|NTCfHWuw3P^XCG!gjL2uKaxIWzw=A&@Vr?eE)?LzhyWB0?z<2E>b)Kb$_DFOSxth?BktJFds442&U^GK0LHgEuKK9tHbW*uPBo)3QUSADG{M`DOCY~ld&;h(g*a)y8*}R@L z;ZE829`Dn}H}_87tXwc+!+i`f8|FvDs_@j)bLOoFA1FIh`9W_KyU(C?#qK0SskX?2 z2!n%_tX~N^kHtXw#W|^3k!WUCz=prpU}iMHN#I25%<~;E`#sIfUX{KBevMW_vMteX zRITG7PFmkx@7-P#`1I?`rg6OiOPhfnTubmRrO|Y7K=O#||e;7OjuETg0mP5LFA$l1D_a;?FZ#0n>S&*KT^t zKPnyM1b8|h8SnfFinKqz3>5hJX?=GV6Sh12%@B^OANpDdY3p|LrrpZfoDEJ(wmZ3x zcFN|zwOjak()S+rvlsEkb6?vLgu0@lr&l~a1&GHM z_3~Z+uOuI7WfHU({Ba%k0{j6uDYv!Xb7f(4W(}HC6G$c+%O@sg#wTVTiA^M!N$U42 zGE9xT{!*n*9b@qoGQ9!p+gI$la%LGkMIo?hFX8ryktJd}BAq3|R6`P+4MIY%JQM}1 z``XYoYXi=vCInkV_Mc*ZrP#!aWIf%0W|Ym?`6$gPJbEJAqYUBuK?Kq(h}kNB9#yz> z@u*Xs=Fo=FOXO-)$!z?t0SN zZVuGhr`8>9lu0892XDz(ESY9#V@f*|G-0CE7Q&wQGa=HxOpM?^pMIHr`h*f6(;i-W z6eZ1nrg7?>H(fLvO4QrD0t5wM&WCWEFE|xlnPz#xVs?ZY-P?L(jR+_ump_${ zJ*FLqVw6ElKbg-w>?w1FpIi#Ay3%%Eeh`S@%p7xE-Wg%sb9!a#1ZHQs#Z`*HOsv^_ zfk2f8fu`l(lu#Sbb~_OVv1$&(^;?q5`I?VJGR+W5UVgf%@NFjrc=cH#TeJ z=C6;_x!^7TuC=+pgAO^muOmqK!eQEM@_dy6v9t5eYp+Iq&cS3kW-zjaknA@3Mdk;$ zb&+?8#B{TUnu~8T6rU@toUFuI_yr4Yj_!1pObfs~JM2h6G$OtY^O6&lZ0XH{*QUqd zbwM-M-rez^H6-70_j&92$m{aXpV&mLgF(;odTaiWV$*p=zfgg|ZB6~fV?KH|zLIV7 z6BUM_;^lcO626x7}ZDBiALkh$>M+sI8v`EP9YU}+Z>azBdQ#!Uns}w&ww2j zO;eU~58j7+W`ngrr#mSOeuW<0-aj48{dKpx1kq5mY)PUJJ&_K%8p@P;(||j|GZDP% ziWpLjax-t|Tji4*ZH@(|P;K{quSQ-^!>?Vu*;bV8j)-ZESVAe$6=nwwbu7=+c#BAE z783Rmy%vlXFa=vVz>1W?r`wVMq9nU*XZWBr9=oV5bc$$>s^IIZ_{a)bYw6Amsa!y7zCO46TDqzOUQnVoi3Z z8yg4BiNVSw=>jw@_q6k)-i0o5{^G4%X7wj!DU0^?M~TXXgNE$oTlZ5?ard$wu=v&* z;}-kejdKW5s%q2NM|=>v!HfxqGYIL(>}R^ihPU4FY=xccHM{wqF%0xz;rFcG!)j`{B;SMmbX_( zS?})xMPJeyTI`$|X2ai$!RAlNyag)A5@)Wa8aVw&qJR|4cG|ClrnjxlJ+q%87Txao zS=6YsTV%rLZR0#RM4g_`XF$K-pY=lTf1GxE>#0mZ?{=|s$BBj}*6mkw>OfI&u+yEb ziG^Y>wg_&RXI^KEUZ0BN&E%DjVeFVGDbuHsj>K6lr24W?5U$7V)_um1 z9UETC1?*JC#$T&{7I*$h157M0;1~R>1&A0_4I8BUQEu~|%A%!oLMSy+%GMDtVG4 z8WqHLzRyJGIC?BXgX$i|mydoPZ`BPxzPQZ6fVy3X896ZoY9inW)BJ=Fp2TZhd#5&; zvht;aH1d4^>1f8!DIQYFEm#;9^Tx*W19_PnCxvtS|e}EUu26 zG?MT8rE&Y(O4$BLR0N;a>{*>S*(|5Da%L=>7c(og3;L;V!iC?Hz+-x5)mdVu?b4-o zqUb9O5XdD)pWebD%GV=LUX6KU4$gHyP86l-g+4F}$+Ajh3{JWEhL=(%`qd6meWhHc zN`pyD?-76RMEGfBxVp5~&qUg>X=)zQc-$eL)jSD`z$3CJ-vc_#YY|I^fsB-*suH{B3u`W8#%dVBM zC5A!lL{8MD)wIUoLd(Z|aqBtP!rJZSG8JSoX8-$if`0N%dU#2XzOf&YYiW+yq37A3 z#DwE6&U5m7n>gkOha=B;=6P9Sxy;W}Ov*zq!E7UvyJtF-^8(pgpg@&C0s;xRIhs_# zipqwZP#beZV|-yY>mk2J4zypXBz+l@@##bx|Li?W>x*l>2W`R#z1Pm)xENLwGtm6o zjoaU_c{kXOsW)K4MH1vXVAlPC$2+=mtWV_j2A}{67Od8yRI%;&ZS22ociG>hTcofr zbK$4izh!JFGw{&w`6GkB_Ss#{L6wLJ)2p0G-9)B=pN2?a^K&r8*SZ2INuau0dY^;S zUl!X^g|`(9i$?s7hrjV^{g!t=t5S{H+v+u>!8vPJzwTH?{@(gjJa6UPMb261VG;7W zo$~PA9TvGaNH;yG_D`Rrjc6`H*{dWKtwbtUxG361<*^_4A*U>DeD?+L*7z7bz_dYp zR}Z_ZnIR%lu;h|)TehrpmQK#&)vZdMhb0o-&Pki>Aj-bVH-w>VWb?v-ug6ec=;ToO z%p_cfnJ|3KUjhUt?(`pfo-qjr2VOm$*+T6EMS|_1c0JqIs>WraSNMm8P}*6EK{G#- zWWy;KK1Fe0cXajrZ1!3*4+~Zxjs8(A*31zL2F3B%ys3AjDqQ-*O~6nX-7jb;$%&nq zLcNq(1#!iyU2<>Zgll*D+;BP4}FmB7X14GzKSroGl zQpowIa!{ZGbqO>`q2GT>kNn#32e;0sl{>VE(X;?;zV18Mq2c~vQ9BQR!2yyTjQ&a8 z`aDkMFBlTNJ92om-nOUd*QUZSH7hWQNp3TCa%~6jp%uJE=t5KBwfS!^6fuIDy5C*z z2o$J%brrDZmquoGmdN(Z?W`)c5-!N$NT0Jjx|yCZxHxx8}TCn@~aFfP74aOFO;r&DeTTLk1L?P(Ul8{QuLY1-}ZUj(^~^Fq&& z0bVicGl4G>B%k9bbp70Kf4E4{nUkA6+MQL`KBn~|76|2s_ft~y88d-2a z7sA~&FQ7134)!L~DJ)RVkt(ae!Wu9aSStMWq#;P#z?JITMl4j1uB}FMgZ+_DIVIKz zJR&?n{_{n#0ew2^gE}Y{#caOlYdBLLNiY))KhHwji)m?(JzF>DZc2pqo%gT@2yBc` z#N4DD<68>Rz;U~o#oJPKcXjorjAcLUt4&XZ#UF_ zvCTyKpT!CB8?@>N&))DG2=@BAv5H@?fwYYEUr+@msc7VQY=x!unX3)(4#&^6(zUV7 zgPE_si8=sL!AfcnF?#B95mw? zVUO9Ba`Xe4;l)6gl;q}Fa!SL~B8RpX!60HKSr8>i$4>qV0vV=lYC|0fAmsEt&*Ky~0DqB+zh1Nd!(#s1oNLd)>pQ8Y?Bchm zhXvmO5T;C=`lKk>pLqF~aBONih_>s}JIYR?J1rkudrkVzE8@PZ6f2O{z_aE%2o2K% zc_&qfi4En-Y_$COHO)2?-8j_E`P7hM{)*iPc)Z`8@{Fb0h-8Lc;#!ET%td)NZ$J#M zpP$eFF__Pm?HYSE-0u%;0}k8|I3P7w=ZaZ9(hK8vMcy2xA-uE$jSz5W4!6~yRw zX*o+5*bD+&)Kv$API{3X2o6G7Xjo^9K>cyZF?>_=@>XTvJX{id* z-&IU8XyS(~O6tHZYq^p^?hO&a6>jZp(|>LUdlJa4I{;XHTx&AO=zkgQHz5TsjRUNq zY!&O(5sQZ4vS{Vygw|Le(cXVL>nfb;-J zam%Oes5W?fjJZP6-$j0o%L32l-N@{isG%B`Z4I%32hnC_EeJg2b+FXa`F zdy2MmBbN|6$K9-m9bn|s6g0^{7i48q3>WS7rQVjq%0yhOxO9eAXBBo^$4u2Py^5#p;XkvCrn;b?2z$slIHZUq*(wt9vF ze1WZ~oFj+h4c(TB2AT1%TJIo$8IN5XjIEfNVg%F2$M!@($+=i}u5U4`X&}6r`@H zpRN#S*3_Qf4dF;X3ImPbtk*HXvB+bvF0ei6@u zWJ3$d7$i=Z4%~4IbmsyN!s~r!!W;)N#Cl9g&HJ?m2lrWIsck8_$%dB7J#;^_;Owm1 zx)OmTK}Rp%SI{CsC+5NRd>#jhj}|c-9NXCD#oU{jC2CNjZc>b}8QT_2Zn!W0dQQCQ z{)ubLJ)iLl8T|Z!P0z;eHkC7I$-55&kFjh#3^1V!yz=crpu7&;UESZLANw_gB~&(@ zqHNv7Aes^6=ln=H?}cO#juX_uBHSbY6sH0L|Hqxea|>eq3XzTX8PW$mO%iEEs1<#e zSNeu$>QiR*4bkbbgjbYk{^uR45{;#LD?8d1Q% zg6w8_7PSJrV=bVKPgBuF6yx3XBWZnJr96l?K6gs=XMZJxu`61Ina}!19X8t0qOC}X zwjM)boBqOa?B(CP42&(JekgucQi*lguIk{)dzt7kduw3Ai6~&g*u|iIp`YU?OPlC{ z>mH`mu>~qjY!zu=PLa*oFoq%8dIws~o%99O=`UmS{Pu}=pV@X+coc2A~ zCrxHx1M1=lo@Ui#oq>IF48THzi*g%a4$LR9^H=9~#&-rS$rmCI(Yr;C&x^cg!cEO2 zYbwi*Uhs&X^p~DaM$$q~+x~mqPoKXeaapb%;^&(eSbEO{CVTHsCGmR(f}+Lpk+@2Y zTh^z=2cp82p)x(|8i(YE@_LfvsPKLfhFc6@?$V+dX>S_oW!vH$zVB1|)cQ-1S9L({ zT8sZWg)h@kblz~d#k2;EuB@mt)s$V;0lXvWVu<#8|K&Wt;-dy%FP z?j}@tnaT3DF|d`9d5yVOFsq~U+qer*qGx}{{9+)&4OJ3q6TCQseiZ}7!D zWRFg)oT~MjMDiGx5>kBiww&`7hsy3<;hJx@{G47aB6nNh^Cht=dsSJ@g0y`7fRuF_ ztL8kN$8zuUOEHA~n3RrAJK5HyT=V zJVE3G({Hwu4WD1DaU+-gxP0e4aW%1-rrkdEfZs2stcE?z0Uh#-=e%{Ql~1D8BF~Ln zZ&O2%h}#PQ(?_Lp-nQf*MqicS(#{}t3SZ{BVtqcEJ8sp&zxPpIvuS`%!bM*C`wRcO zsxU;!ns+@DH?8aiWyrzb3IN0$KeZH#d!K`oxmRPSntTPdK=<=b9-NPTzOF=3Od{v! zVP|=3{_D*zlN-+FuoF3qvPjv(3Pta6yF;(j`iBsbe_}hUn*`8ZR5wX4_Sw-dzo?xW5+ z5^Pq2JsKGS@i|08z6Vq@1*xzF!1!ft`M~e+5rs&b{qhPMFx(!9!^gkn4d#9MXONOD zbh~b=5z)LV$!3YgyO4#&i6Z*s>c%`V4hSSG_SBmM?b$i(^l^XmeX|5A{dP%Q{ z^R^`tub6ln-QpGthNUoTX@BIeWXZPK6Q>E2d?uNJ^0F9!t zuA}~*%GQ_rPpJk3U8k<>I2^_O()PNi*TPd-p+9e+23XGVkd!{dk1xikd#MA;*+}}_ z^MWtL1Vv#pM{{hLTc_b<%R(Pi%&OG5*j6@?41U%QtqUV5%RGdI@8^uk3qH<7_8!iE zLowY$`O8VFz)wCkS?0l_{riU{inw#dYjH2&@5yriURCxu$Oz~fK-y@%m!eoomNf*x zBu|Jd*%E8G$`=!gp)tdmA~{N}u0h&aK6Xt6Gi+7yOTaCIPq54LY5!gpaN3N1SiK2% zinG{m{OtK|s6C99z~#;KW{BsKFjbzsX72!LyYu3`joZ=z729H0m$>#~j;3DcN{My_ zsQzoM;B=&f*iw6=^XUnHFI$#@hbNcKPT(_1whsY!j@*x2RX1&O#Vc0X1lSI{BUumo zst6b!%1U4f*QWw~78@6Z1B(}csRwO~!{Sc)m}?sxHEazhXUnLz;8<>bbMrE7m)XwD zGdByzCLH4jNOecQ#Z>rMxXl^=dK+S`3FW<>Ft)=k@!Dk5G|i&?{;Q{~75fY72#~A2 zkX>1&92vHAN_o`ZU(0>%&as~t1m#&sKao&V?zqz zXdnvwAYH18c-)bCuqVB^^_hfjUaE~_)2=Ozt9){T*W1jqH4mn#iQ9GLS-tLg@dci< zWYT1Y>2jjXn=$ra}p@O@jJU8-lt8LEskfuDU|#yEOo;8SJZW@xpGnM;k1Bf zfwk_SNA}<23xE{h>sP_cGvD)K6Lr0<`H2{r5k0 z?As1)j@#ASw#sXMR6u;n5vbP>DsRA_4R5ZIEh0<*ja_{I9AV^G*P709a~({=4iF-S zK#(%a_vn1~y1435p~mAm|C?|P9|PX7-Vj#0)|_(^chDLHMC z8Ya&f(?3z21A(+&1W*NNvIbiYI%@m-GVO6Rv(1@jMrsG7B;X=s@z`4p#jlxXNNuv* zGYwKn9Qp>N&BZ`c0JfPbk8Usfk4UCH#MUnpbV(;#gCEWa-?4)!Qma3lBBBKTteuGY zORNV6A8qmVWqOsS>&!WH!Ogw121Jw152rkgfGY$n_WWJqt@m$5p3X0@D>O=ZeL|n^ zkFK{>pcL0ZThFvpyq|F~UUP`3eoJb_cItIai=B6O6yK{L>)9Nu8*fwxacS#L?zR9{ zI_GGn%3rWLfM!6Di?2YW>bGFEL3&kXROaT~enkb`crbCsVQ z{=t(U^?A8rEx0^DjlhM;@B)OP8HcuU@9OxkBgoV_**l6OCFr>r;a}2qUKpF9mCero zxz8@-tc$9ubT9Vs-O%7i4M&*!P9?qGk?5=eRIBuV{F0K>--Yql{Xn$}!2YkNB`tsi1-RJsz|d))D+0jb z<`;K_?e!W6X9V@O91LtDH5Aw)zG(OpHYxT3C5Yot`?aRI7D4J%AI6Ap`*V`m;^MHK z9=62JIYsnBJ<@>iHrT_!h#y|vtMv^hR8b*VTq@fB)8M%oE%1I!+iR%hMNTZLi+rQ) zWk(;j+PL1fO?QZ7L+{sA&v=Cd=KGAcv>%<5raAUJdM{9dv`@@?@Q^fDntS6l>iA5S^BqCR%nyEt=7*8h6*+P{R0qU!lXyNs9v){*PyE0;;idpBneH2}o&Eu>op94Dbdi__?nbUS_#o@ik)b zcf{;`1;@E@9`pXXll)yWv7*Uq$)TF}no}}=DM8(e6a;7B zao2(4by+?kj(ZpK3*swtg!7)MsKa7Ik2CT^SN)xyrZ0J zvzW1e7!iSK@2w6;)e`|3R*PJ;wzkraMyD+7Z3l5~TH_Uld_Z~n)|*ka+k{I?>b)B8 zN*9PY2(bzR$bI<^15lCv-6H^8#61W$Yp71R21y_UF181=f>Du0?JHJ>+50onG%tMc zj}s2R|K-Hq|JMAhMm={4vNla?bBH#Xg6Xlx=&^Lh+{A4I!>>T{`R)?-)9J~=z*(EK zt2BP4epHopK}@rRU^SBWOYULU6=aAG=c~d#_sXNmHyS+h4}?#ku##5{cUC)Igls?; zl}G3Fl14%7L`HF4M;71GsrLRZo=)i&3%30BPG42wN9lj-j=#PbjfHIIT93mFelL;6 ztR3cK+@@5IO&$#cAtPPgVAfPpkNI4?%e(*}EwT;^t|>`o`Shs6yrC$jLA&n_j+OHz zIMSz@IR04+`F_i3iGl|G}1kNvTimWg^5NjvfQcoG1K*N94a=F%n zurgg;gCG{Ny$edcW8p=qYul-=jwVG(vo#N<40o>NoU+eFNjuabLsF_L^TlFKmO-%~ zj`EooZ)>o>czuyz?0p5>mjsJZK~8rJ$zm7cF60X0{2xV`xHTqDrSoOb#JYevoRC7j z=2y-~boc!-LtX?!S%po!_OuUwTQ88r&FHrlw(#|ecob23K7$8$wezSL zw&V?XEQmYJdk_gFRzp`#*Pw{PSfsPiT>NGGrB}WeG$STGm`bD} z%a_#C7z#aE^FO`sF^-iRh)s%npP=m{ED^#Z1hEbJjzBM-@#9wLeIs z7y98Hq2sEHKfl#h#vQ#DMKPysGZGV|Ts#4f+BAQ7UgakDQylk@9c?4&PD8*~Z{|vd zxR6_ftcd}8#CWgcicA^Y#J z7lkm1#}F$Pj}DS==+QmseZ8i>5cv!gabaVG;DMIxE^o1C#pl#MaHEx|CA^v<=13j-@iA(K4^y}< zU$7G}Qa{ziq}ccYXkv_XPBabNvp$i|f8%(iBnjkDNj*>mO}itSM*pz#p-s2P(ro`~ zu}g{@9ZuhDk+>qez#9B3w5)d5hc^Sna50jv%EN>oK4m~6+?Ogw zBt+Lc84iTV08fAz2VEEl1VR|{PtD9^g|XG-yDgcXX`C-bvy7MH9L)7nTE}Z?AD8US z7hWoHs)oD4*mb`%zgou?Uh0L|BkqZvw8k*N?=A`m(hCQBiFyxY8}g zTY536^z+wkOf&Mr?un6+DrQi&l<|7qE`kGT8am`W zmNozx+8IJ1qy+PO{_bKCI~2s3b2{Cj*$NEBpISBopc2+W_x9TRoB$`ag2&ovg#YSQX50oVX|O^oOn+V`i|_?!7H?d-By=VDY5h ztPrM9eM`zxkz>t$|637)S|uQ7d&wmS8L#o)!Ga3yFRY6&O&LQ4@(`&t7G_VoiRZG>1QNV|tJDspQpt zwOjbfeL<>8^kzzrSUlux^l6xF%J~bHqnYoSVCzxbtLux3aG!?wS(BNALk@2VOgzER zg-ayuj)xht>R8U;3jy|()qatS>v{_$vT|Fe?`!M55{83!FjsCue1o%N{4u8usF>N) zWsJLVmB=FoOXsps%UZVJ+N-znX$veRCP4LvwF3SSXLZs()RF zP=rUKcL9a(vqpDLaM}P3R$_p%k{#^Fp5J2KunPNhgX3gX*4^W6ZrhU`|H+;+VLyAt zRJxwuHzOw&EW)4jY>Dg89Fa(~ZRXT(m~Y(0C#9n{-a(H}X>4)?m}uvI7FK0p;vD$-rKy>@@bP&v=o zGf=|fq+c27wipW<44j%$pL9CD9kM%yFmYh%gqfNL;x1K{{?a>trcNqF-Y*odrCF?7 z>iY;Y_C2d5pD)p)X7B^DoY?41f45P<%CuaF$c+EkqhC{2IK)1eI5c=LL^CkywsSD$ z@|NxP+UdqZwN29{W$Uq!h9MCKO%k#7s0T_r=u%mULSTr}^t!P?Y=x3a%=S?1)5u@M zkUSZ>yBt_k>P5(hUgRs5i_!^Q?W}mLarHWA|msmYF*a7D_}mz;PQ&4I%~y24^7rk_Qaz~OVzB?2_y|JNqrU;|6OH2G^0-0s4~l_Z2V6~IKk z7-bmxi77SgbTDoSIGkSiVU_pyl%N9wT{azS>YoP>0cOPc73@>+?Z_fd2gvWtsVX8I z)I1qwN+FgSPkH71LB+|gD$n(=vy;9o#`Q;A3VfcHNQb;W#ELC#{fH^^sD zKhbt#2bNB8=jCU|HrAAZU6BtoC|u+R=!(k&dj>xHA1I*)$+k*G>lz&_jH{YRtg4&9 zIGe#htkx2D7^N@re9<KHt%dXQiW~Nidi*W zm?^>>%(Ph@=RXP*+t|9zJt8AP(%6l2AGj+>P&zFhFVyI=?E6ZUX_Z*)Y_!gi${1WE zDAdB5{#YXY=>>fXZEY@hP&RxDt9U)iZa$J*ZG9b*;Pp2RsK{D2@WMg{QQdq`wht2z z51;I#FZqxDbT(5Ljp?ZJJoG<${i+oT`&0fcNwlwVdgB5Fg{`LNK6JEF^_KcQdoR5K z4pOvqWpp-BXy*$w0UaB30RYFj6sZ?$`Ot;=!VlZMPWjBx1s;sGD)ro-{ftKA;j~|s z4%PQ=pJ~~OBves>)t8}Sy#sfM*U!;RNLcU-We9SLQhdKqQjJZ2DGIL>v;bZ3{I|1f zfK~x4PHXR6izkp2nPR2k41So*YH6i`x;ufSR9oyPj8ioalJ|ggttgn-;RcM9ZA!Bc zcE)tu!b$W^3(tezk%KRqFo^*610rvib(52?Kwyr= z!`or-Ze&x>yuQB#3brCG4_0OfA7wbOb!=v3Fp^MLboYY$G;O=%2z>hc;3`FjhxhO= z0K9!~l%A)6^(8KX!mwreoHFZbdx|+&api|)nvOeXkIe>|gVL8PySgSx z89$s>?;3}<_7{7PR|sXPG~;RCG}aaHR1`7F-g1@zpx}Lr(r1%@}X-j^OrBIuthBa2g#Nz$ciMSb- z0agVtzw!9|+sOqy*BIB~M->)ppTpeloh=oenJLZ;YKwZ?sh_+}qeW+&t%Z%e*7N{Z zYLp(QbGJq)5D!LRh|&U1>D{uT?zQ6MHWJ z`idrswqK8lGbATtiBRd$GUatIAbkgwO#BmVwuxBUPOOR;x&XvHj1l(~w2~8MxC=v~ z#n+pt^~9Uf_cSGhLz&Zt@|E%s8aocI)Lh@@FO@$y;5Z<9NI7tQxUWX;xHuR&YS==T zO3zyHtxh_N_|dN;s|i*2|F-FtZj(d~Kpf4g}5^=-wf9i}#F@iXZ10%ND^7rs98NAUC$cu4# zv4{nLJ3|9%g>D&JQ``d1cG^rCC9z(70YU-CA!}se$QF?N4ER9fYPWbpW)uWnr>#aU6=M(UT`?HL_@_9x->+eyzM0o13NA?2L0Et z)%xwK)U{}SY2*W)2xuX>CJCD7&?DcL0-xQ(^-$#CVcIbTv9+iMRC5oCX4-_2T=LMr zuWI?4a-5v_rwPoorQ;&UMiSzFj>+yYJc(TgDVRGpiM`>*sC*HECYB3Nzm1ubk7sgY%}^5vBy%OFsg0-PBMNYwKlI=#7# z``l$%f+2Px#GcG=|ENbvK<5PXmQ`?hMIA$B@kWv-Cw?E$e9RH!Vp6r+ z*1dBF(DSg-wh(8EaGZ0X_ZmYoP^VxjrUfwZTvumAbOdjRf68?gFm(J=qn@@5bhu}! zpq)7ns7JSZlMqd+I$jZRLV9_|trqsj)B#6>BiZfo_zoJWGj^d4x@Yq$gbY{?4=mRvdgK^fa93jIkTkZcd}uW8P-T=-ro6{?nk2 zegHzlKw8o5TxJ|W+PFV(1l#^yH>+0DuukFm#Uk9Kb5PYnZK`9MRMeSCb>lV~3UjXb zwwd=RJKsEqy_RhR&8v{ITu(yAOUg`~Yum>AZ7(Pz|DRO={y0@-o4?!cSUlQg9R#{- zN)<)h0Q&&GQU47W`*sy!P79~_X9%d);7fn=a1&n@(yUu3nHQSy0d>8>+m%-XUWE77 zwpJK^cRaeZ_i^s7Eap$yVN-e`X^ygN>&jQWan=8Pn$h~t00n9sYjr%e>k1_!fGf-1 zy`kJEwyS*&<^PfF;gpUjX4(tYza0`s@7>a!&a7q~_RICzU{uFZiU*1P3hN7GL!{*6 zu}dFu`*Qs~voAJB1J#H^pEa->htxqg-j-Lo?(S!azTR~cb2a}g34Anac=ifL zVY8@zol6AO`cd>nNduLZq_a7@_k?||2KpT3D4!jRjfLO!FPoDAl-u|;2yuVt2UeYQ z27EbwV9K-qYtqk^Nyf^Cx|(pUbXZ@kd|rq=9ailJNt=o1mctBI$b@T?YavwND(526k)yQ_XgV(vovRWuczjY=4#*cx#1wRia zUx--EHGitb8&-TTAaN`gW8;TB_q=o{`o82j*h_+`U#0fk3T~bLCHWM>f>|X zdI!?!@(*G2e6E5K%s?3JU!DT(BqqE1%LQk$NZUSvR9(aS@VWDMWipg;@b2i=|Yb#0o0U z7Q}p-|3_J~D`XqS`jeeh8CMRE7-{s!RUOGa5&DAFvVN!Rk+p0eLIPP{wM>l5W0cT| z#b$W1y=tQU3k|3ZH1l>O-*lkeP3#~gD-N!J(q5w`HZoa>Vwz0NuRbI!>Dr3OHTxW>EY+NFC$Fu#0) zwa1p1t(E~+g8u!~wv?)kp zs=FF8xun=6!SN9RL}_~Du-E>4(2yQ3Dz>U0vsVUya zifHJ@s$1@lARkaT4}Tw9L^FoBrWBHtfROd1oL+~5rHhOtvs2`{%CsSgctA|?Wq+Bg z&#;D4rFf{i>+m;xW3^RKO|bbt_5|^rz*XzHQ%c=(0f5EY>AkaD-MpHcp{ESN=#?BA zkqSU}U7Cxlr%9RiJ52*XxoK z7GpF-=Q2%xriG3%Prj__t=bS}S200ZuMzX#W#Kzc2-LNXeHVOHNp>V}LRenp?9kSq ztnbFSS;B2hU4gn~+!ggsLHOcIUuH=2(y~ztFWy$g&kC733vrJF=Lf^+Vo`QYOjB;I zn?T>YmJUxl+Vt(-fJjqCm(nr&TA-=mDe8#bT_NDwgAyia1IpegB$!T)c=qj?_*edZ z(40&<36!PMPXe`tm$TOEF&^l`mv2UuI1+uwAI&ojMETHE`=IcfLGnF@K4x#C`?PG& zr7kjM(cnF5=e1<`W&+!i8N@)1uK!iNE1A~sGTJ1?&J4}4F;V?8bQg4wVfiX3D`?7Z zXFl)P^5EA(r6dVl+i}S9QEMGU)Ci-G6y_`nzOl4j4_cl&Xvr5V31MzmwP>-MnjnMU z8ctmv<{H1X+QFSkH;gQn0AhTZngMKQi86L#wvk6N=(Czj>SN1l@ym^V8*_?h`q8wV zMPH6V(|3U7gmvT&-)`)oCA46Wwq?`2Z~Uiftx0?lN8S$?fiuP+ey##fi{IK}f=NQuiT%8YeQH%OO2GZh z;M!&h=cY$0-IFK`wYdaaLhTa-LAT|SJzrz^k_>J)jlZAM*!b7)8es?PETlbQNJ}6% zAqDA_9WBwDa{En!$5*A*L<4!29@s$*wZ06&oINS&wTGLKU;P(eqgpWm_E4@7QT&FQ zH3XyZf9>{5Z@NJ-|E3_sAq1x%DCIhgKWdZYDWX}{k9#J0Q}JpW|AtkN%=11=bad)` z)w;31nNnAPlD-tL-0;vk!=lyHFPFWLt6F!R|9{LBBC7+vkWq4mUOTC}U!gBqVtLWL z9V-d&84iJ|Pfm~-&_|AFf*f{qzV4rfkrGz{u88ep_SA{+y{dRNg;yead8R4JKCk&X zy|=Z0Uk3R@=mt*p3@jdp7s1pQJM7e#KrJt4>Gi+uR~)2Rx)lcU+qbX<+g8Fhp8^$_ z1l@ozRMR`85zbjblU9o)7qb?Aq)bEGsr*({h?H5+dhGvL<*pye9a6b>l(VG5?D>Z| z>>@y~JmW8dsBz5SmWcDA2hQ^vsl^&AUm{(a?b8vsx=(r2%lzYqefZ&aXgECM7BcM_ z4WQ5%WvV8JF}P0Y7DwBoSJ9yBY#@m0q|l2G%3tbU)?JO$~zN7Dpe^Ftx z30|nijmZGB0Tf97Kcd!U0obCo7_Cmi9M2PJS0?i2syKe>%7wIf`O@C`nH9LRIh}6q zc_HE3>q~Llnzgej5ogJ!L}PY^4PiLM4W|ISaMRPfvjNKZj^=48oa^G zaa%CJst*~xglKh4rr|vMue|apmTd>^qkJhdXFyzAzkdjy-kg`Y5HfxKqRL(?ftBNy z-dErK9MP&q-kg+=>JgW}{y(zbJFKbY`yR%MqJWJiC<+SF5$RP#K|nw$fzW~!=^(u) zC<-b~x|9IYNuh<%0t7^QF9}TuQl*LXn(!X*-tYbVp7;EPgvWC-XJ*gdYpuOTjxQ50 z*IH{43#2Q1>lN?C%*nRB+HP(dt^MIe^WKeG6}3owQGbSK$ic0xK=4BB(VqN}bPy^6 z@UwzP!nEuy%Zej;4Q9taK!Xhw$GmmacD1u(X1e5`1p;Ja@S*VaT)?6wV^kezm`4b| zl?(}i1l*$IGu$f{9$hec#fHAnfEab1^V#fi;@_+Y1(e*Uw~T=n{!wJNVksr~b%llt z-TvCSpI6;B-N$BL-t*u;q;q&5o=xEu^c)`f(I3)Yz;LfXabR0|9Ikm%NVs#8GY1;9t;tnIg3pMSx5;a<+|@YF3BU@3&F z$U%zd+N*f13SMhs4-dMoQeMgUnX;7Mo0?V~CAX=6(ZfnY{Vqg_x9n47#9_*)SKE^m z$Dh-um>PaY>3{~6IDQ`%NJQy_o|g97oTjtqR-BS#RFC;PW5Z1I|F!_j0Cn07;FPI; zchf{5fA1X7_xhUBMmQ4hw>2t-uPg{HeToKC!*;r#vM~}zuHhLY?aN1TLyJzzbKibs z$!WQ8dDduWj@7C@CFtpA6u-9cnwnLX?%#a6slV1QpK^$Q&+{^&E;<8x=dlVPDC570 zh_%BS-d=gMe)myp;K`rILWJXGA6NwlI^XqqL~jfNtv@`3d3QCFa*T=%*3cZz4Kz^g zo5OZj_qX_@_XAc=^iqyuf#zE#)rG-06g8I3MKoXXdyPCW?y zKN^B6j~mDFnW6TfWUM!0DgTAn<$kn{?V|VHB_h~2JS9L1~+ENwJD zys#3%=e3BqyeLK3a?5e}%tQw7u@}<&cYK@3FHp;i1y0x)U7jV?16E+d_x@{=c|b_bVFzEy1MW!tU)hwPIWT>{9*|()(gSxU;E9p zf|$(DV#~U3=snZ*`JK6$giGoq%w+83sMw(Dy&u7~do}A?eS}2eyjS@7BNn@YOQ$VU zp_+~2d0+JkT&iE9_b8NmYU<(#JIBcjha=Q$VN@M-K*}r}@Mz2WSD{;@6cx7Q|F*n1 zL(vmoYzPTYCs# zaCiaUc?D8yBe6yI{v(i-O`dZ@KH5L(RFoK(^WyP0i1O|VdF(F;oH_*Nz0&<<5p1|> zK&TvdaCQu-Wvz76sKDFVIDc!B_KVXn zWsO(=;lRWv=A+E!wx-`h8P0ox@v<<*bHlo0019)z1o ztc#S*AlPyNRMQVk3r^}!67fEZe_&5)ntu;FuC?~hvP z?67;OM@Pe&0cQx~J+PrrFGRm>Djf^XIM3;JZ7{g$|9C{I0k$}R>rO>K09w0oV_U|c zLHA0o)e*p7#aM?rki`pF?c8FIw`0ASTo0Ac7udnUj+z#qzxl@8j=R-3lIW=p6}7PT z^h4~bj>N2Xw+Y^`dsZ?~`=`KdQmVk(iQ+sH$>80EIsBAc`a1fy7VAF#XWnf?YR^r@ zDY)a7NoFqjY(=k)JI=)KAz8CR_!RZC`~THd>9auiIkO>#SI&G1jOs7fc8x-U!|}%g=8+zzH{OHVWoNKmf&2IoT~aht!EF_G|InN(Jv`hIsOp z4p;yh>%v4Aw(~4~Sh}oQ1DAjPFeZSDf~K)QEfwH0Cq!)U`Q7-8B7ywrIZ#Kd#4jQ8q2F^Bwq$*h;^ z`4r1MNe9P44JF@uCY<`PTfrM{0<{wtRX6($#*Ro{cVpr8~Xk#3LkCu(OZrS-jzNx+r*mxE<*WwgSaQdura>>TI zT7ckl;!I zyLK_Zgr(%J?@!|LRd;Ygoll})z zGu^3GltrlwZ+Do*(+M$ue=9i?_3)1;*6zsfFS5wr66X9X7nC-k8pmk8g(~EbHUYZ! zj_UVR+r2}KmjvF`avo07`pofSOm9}b+`vlU*OjKFjCVx!Q%kGgKJz}venV?<(IWk1 z6ZX%yq7fvxl1%-hBU{3W`A?hcsc~@4J=%%lmj<8R*ENR?y*~w3W%qq?Fm(Modq(du z@~I{k5$r(R#Qpo_W z3FlZSi9cFfKaLC$gIOdcsmwYGV2g@s`99=0ho7uiNgD;~dDI!9a@tuj^xZD2=LCd> zA+Ez$9I8-jtI^$x*n9t!%%3mD0=rI@Y8NRWZ<(=S3_?-nE1``X zMz6kVe9+{I+0rmeV1akf4O|5>bKvjT0EYQ7S?ut!v;!>R{6pC8Va5) zOS2ANzS{~#Or>yGHxSlPR8$v$0SXM;(;Pi?!`|?9pNb!WF8>TN<5Z47a$&*U=H=qQ zh6`Co1msAROnZmJUhK2ne&8B*C^O&(_J*k}%HjShtC!^za(e~AS-llME=VT8{EWn* zGo#xBU2|H3ZB0Vo{3HzdgXp(QicEJVG;MzVr*Ja{CEh3vgn7wyA^e*~wFA)JCM5b9C~VJwCAGYUl7 zF$@2RGuKRpHctl@$KXlxrR=8}6o~}&CH}VEXl}plp>yackLi@w1AL;W?_r!r25iopBW&g2*L(BXR2gP!7uE~(GgYB>(1xTrQ( zkB+w}^4fE*0rshVgP&c{JKjEpE7~3~L zZ%YK5SpS)xwp`T#!@tDDT!ku~rV5$nBh?NTB=@70riH$aW38he!>qQInqQJtclQpRe@?={C!cWFnZjKw1x0pQvMX4UQ7++55se@(?XvxBLst;pz6 zN6h6snp0HNnF6VGt%kBv^`Gxk-8vq(*Oq(71<%nl zGy!n(B@wu0cXxL}yVW);`y!@_LK76Qp0;o{3vgXx3lqGVqz$yQsal>kD$&lwR#Zax zAFy&8+|XGrx{m$u%7x&{65An-j3RnFm6ZLqy_1tT!;hw{F%yQR=MV-x15)=q*bdtr zgvPu+hMauJc0A1%H>XEQLz~wqInlp9ds+3*yB8beVW*G7(@;*+p8v@@W>H!pZNMus z&E#OWk=;MO)H_e<)oJu4>p=+mGz$ylMj10N*5K|VxZ}Rx`QKe?f{4mi@6LAfT>=y* zrex0tgRFu*!W*BX6y&oXB3mR(^zrLt6OEj<7-v{ed1zhlW%)bQW>H--+rOFw zh7C4_L$O0^?}vJR|Hkio9->=p(!PG8*U;$Ciq+K8!pQ#emxu5(#1XdLRP5=LwqXV#FJ}KtXN*)vNce>8;WvLj?2Med!!$K)NRQtyT|c``!KTvH#lB}`zWPLzT&+jL-^?| zFgZAx=@si{|AO98$$1bN91clGd~|dhqJ`gAKhSn^diN$+LBVO)qh`H3IvDRCyyCP| zyEPNTC9f}Sc_4spBeEXai$?~E!jD#t60ikK%r zHxjG{*UogTau-Q-um(|GNpt|FSKV=UZMr7w*nY1wr6eqbONMhO0J-=IZJSC~LL2cU zBqzvpio7SH25JTi-uz}q>ACBiWhZ}Z?fbf5iVBJ@aY^CSi{z;2!V%C0QKH)1V$qD@ z&t74Bk0$Rw7blPzGvj_DEvTr7*`XmhOcy>dW+rM%aPKhxs3w`CJ8tqzURQN9q#k8Q ze@WJ5oym`RF@Ts%YTP6emhvCWnWLXu3w5CmMvCpY2I}N9C#KGO3JdzG!zWO(`4=wDt;|iLO|*T)ezmyBi}sntP5VR=DWrBh9wf8b#--FJ}ssF(lxi(0OTrs>j!gjg5)ZBP z_9F2C;V6dJ7jKSL++_tqTM;?Y0XTPN<@Gix0CxzoEbV^Y7?P7?tE~pa#f7Rr%U;|u zt-!Jq1V+3BO`jAl1=k$iiiwE~+mZ)Zh4-}zF2xzcnmD09DC-m(HbYg6TJ(he~sq7ao6tN zK2|I+pFhU2tAMbQtnKSdUI3C9E`gb0N`vZ(RJO7+epgOm=L;Wv3`0j@=RGcXlo zIomtiTg+aMy%y6Q5h|D$QUfL#!;{TWD?`4@_8OJRWRMF8pag{_`V@xsze{(R-+i%J zdPm?Q;;h|F1jj)YrnMq{^+b8thhs9xEIGyD7tPr501W{$S>Oku3JRJ!K}U_p#Bb+T z4RfvzlU~9{WmvBpI8B@Gm;2|SeZ2?dmqG8J?&I9zlOs`Y3Vut-#5IUeXqzTgZ}yGc2H6xAD3w5{oCTRKfPeewCcLllfJZ>@R3dk7fOSS>*QC zsmluEDiTh#Y%kjf&PRHdQ5D@F(z~_pz1iK^(;N0)ZJ4WnnN~yjGy6>Lk6qjto-e@}R(V##Lau zIvXMEZ?NfwUT8i+B>#Z+-BxDayIJS`;@*BqUI-EL6J1(Jv)XSk3NCpib1*ntANj^^ zn}OZ)qOwe}Kqv(Jb5H`hJ{VEG)j4Rs!(yLQJ}7a+j0_}3RDl*=`<*LTe3H**4X(A| z;(|j#&PGYRdAKqXzc*&7!hrsk4Qdez%`*Q8=T4ybzM zAW|2e{t{0frHTA5GG^bY(fNgIKMQDT{x?nn%Tw~0$ZJM+)&v|h!6|7Ao-8ta_rUxI z`Li-JMU6dQbtYH0l1Vyq!`TA&pG4 zd@*45rCaM^j&`ax+{ZFk^LZa{2Dn4#>?r!H<+1_NP29)6-b>-)b=jYqCkCdKb@eOm z@i}16BN?=gi>SX}N>Xsi7pT1cpUdEg5~2#sWji;D-zsg;L2CB^IexKD8tl}Ed(34ZMllL zgTK_y8-hf$PPLotgX6^Q_?Ce|y(wvFE53A8&ouhK%dESe4b1pA=GghV#QBJ6+`IY? zx>PtNWa>P_Pk3i;X#i{W;G>>rw|KnCy=b%ovUE|I?N(>9QbY@i63)i_WNgA$FD?^_HhhI}dJcnw5sh__*cvF68 z?HN&1uCzv`V1K1{3>JBR#QNUNq`;}$u$n0w*bBCoWPj*Rr*liwIyX~LgK71yuH)fk zvBsYQIO)MmA=UFUV4pyLYaer57KX?Ll6?9jjpWrx*lEVewoj{Hj8^2l#!6J z5&_6I`3nBKMFmTfaERkbf>x6EDff8nTc#BB4< zCx*M^wM5YSUh^i=l1h}UA%kk^$&zi#Dhv@Zq3gUH`HErQUGn_MgOY|PFua^(z0k5Rpdpx;`Dro7^dP?Rh0-%mT_@lS5-sI!cLD_Pvz<4064$X z?6QUjSJ!Og@SgS1a5e9HhbJkj@Bf>Zb^aNBCzfWVl0Bth>nIz zI}kO{ZHbNd(XEyoZ+dU>H6+3L@H9DTDoc@NkA(GaI(XV1>}5uQt>${9vlkfnO>OYk z@*p?Gy!oT(qV~V5)&jPV|9&f~z<^_7i!J@AlBwGI^Cphsz>40ipZQ`}cb_Gy(_28< z1MN24oRnqgqx-w-Q2VAu*#)r~9&0`9y~?=Ui^>dWL|$Y29UQn=)1%CU9VX}N!^PPk zJ+NG;c)-m8@7}x9TNA9M#_x)Qikmp#Afw+@R@P zTWkKF9LD$Bvb9`d|=UDlh76v z?N{EUTC!b4id8uj% z5UR1O&nt`kAhKV-gp(Xo#S8_Ayz7kitG@P|yG!bcFZD+C+ecgVmO{C~aI_f8LBE_P z;uZX=eHXN2FcITn@mRA&ntHgtl2qbUAEUe^^0an-Z@4jS#ZE*IDtajG%=9L+@f2rZ zkgk99f?KMPavqsaC4V2Ma`9{GIKoXP`0`de*^BfW&%m<$;2OO~-Rg7pD8x9k!66u# zYKp(UwA(lcV`B$-%(vbh-kC~H%ZKAPtP3B9kSBDodaJ!)2a^a$*cBij zR|nni%E}fd4`uT&=Lbu|YxZOK%k;@{xiMnyf{NAAHjbAy7Ufr|J2XAwUkl_&&5UEZ z>_SF3P>n-Q%Qm_<|0g^vJvu7ib8O$r<)5RS2n0*Dqm+umvhjNNS$Xq0cP?PJ`Q(-N zWUem4YzeusD25?)V<$m4L(hYNP&YKn)7EUNG-%{V(i9gBwLPm3EmwQ9$9-ES-ppOh z8!RxKzZfZ=wRW$`SsI=S)JKP@&$s}%Nj|OJX?@op00-rc3(Pdl+>%k($|LAL5Gb7& zY^ch3{we(bj)zJp&?@Wc|Al(ui$`cXM4jh7XOIa0&|$#?&EiRm_%r;BUplssW!9Kw z{lblyP*=9xWH$7EJmL3Bm-Lf`D8#zUNT}XZ!c%0JNn4^dHL^(*orKcN^rZ`(%My>_ z-JXer$iBn6nMNB8$%wSixQZul8UbZKaK!`vs$44H4$5)_JZJzw-?gsMyx4%>8$+|i zSg82#>zc6NkvzeS$@%$&X5uN>LvSCGqy4$q;06X^leal$Ue?_WfS5ffe4J=!M23Nc zsJG@PpC25DYz160`mGw)2;91Tv*EA~tn^Mn?0UA_bH&w@#h?SP@EEB(YZ`;yf)s!K znEbWO-9bWmsH01Lt7YGlN4QvP1u9CILtN9myRWaWbaE$S=#xRkvvRoXxlx$G(TM%~8mX9BA7wm*d%o$KcONN4mNvLh zP1K>{>G&DLI)bt0{w8Vso%v<$=iL<>TBfbyMNJp)FQR7o$*P7g9wqv3Vi2JC0bas9 z+mo_T{6nE1u70gC}MjKZG{FftNl?YT}X`RbU{0d!7wS`y13qSvmy9`M-d zfT{5Ms0kOmQe9n+vK&E^C zSdnvzT~Osyq?Xh|lO-=VzksfSvu-HmhIR(2vhW(gP#^rt800DX|0c zj8XTF;wUjYpImWL^3ih8Vr#2vS>TgV)BUiK!$no8oTZM?Yjr1L606O}3lOE25;>3& zov!Z)w2hS(IVD@KM>k^1-EA_GI8AoZZR|;P%NUpkGYM*+1j#WXp@{zGJ&>%5%wtO- zrL}}pZt;B1zajMjcS!E!rOEEW+64AaeC^hK9kr~d8u>f)w;J7)V2K0dcj78n1y)0&?&1ck3RygnQ& z-*0itbN2OSMBjVf6Y#+)KyncJ`X(FNPuNKzi#jlqfq!_Y zIR0R(KMne>c;^}4sfdMOFiMAF1lKB_$XhDB87iA%{$73Y7m5yytC9gT5PWq#86{S< za=s|Xq5RPusdNYL6J$L==GyQ|9bfSZ5_F12|MmNtr*_oPGtV~&yZiR+7-rdJ*A!KM z*#`5~y4U}%Qs1;_U~*8Qj=VSOe6$@EszQa%49U}Lam5rwU!`LE`gEsI+zw=nHxk&j z4Zq6sH1VXOvc1mO5;qodZE zKKB}I;wbriAa#!%fzf^LdMSP4IBqc_sJH21zZU6jQ#(tU5ta-`kCe9o(DQ`s8#0iF z9X-+p@K!k<0kvk4kt6wXE|vejwE{BWAim2T4FZ8vmI4De zhk0v-y^4La)7Es`4Ghmek8=+0Y3^f~xY#Leu)aDvQ%ZK~x-(PzX$~RTN}!1{*R6VjwAaU-z0~~Qqb(@6 zP~JL;B>wphfaOJJK&m?+{q!skPfx&Pt^~Uz{0M0FeG6sCzCEHRucf6GqII5XOH-jI zeugKMjB!4b`3d~!{(guUHFCnHnAw`qB0OsmWi#J~%F5K!8Ypz*iR57JFV%#{^>>zG z7rq$wKUZ-pNXJ(CHW&;R4=HwX$Rym-rV(ZRQAPel4j`h6B1hik9j>bG4~Oa0ar)6$ z8w*;6E}dm#_!~;oolUe7m3vD!) zhOfyxb^y@YXb*)A2y}c050}&)qI-9DcSo8}Q^heb8h^cI)3^3I>Q-i0-YbaV@|wD} zd6xr{SEH>Yf1!5rguK}9LhKel<5XBjGf(6~H(sHkW5vuLR{K>a4qn~JXEN+ zP=!$7lXSFIbTz0ST%MoO4zUM1RJYg@V1Eo&R{0>&ju2xXK~{zRY#=BkP?i`x26FXb z9IS`KD~FERNO1?X`BswNbqM7TkY+p@lh0n~4uWPG9r_^-3G#j>QuN#7y)bnjvQb+L zPzkf9eA&FYa>NQKZ`S;_cb?~j=&&}da15N!iZ%69mnua-ej+&YaBeh=r)k+=R*ZCO zyydtMixz$q=a@SFvsvbBL!`MSE2>j_poVbcq%W*v`HCp zE6(zxTlee13Y>X2Yu)(4HQLDBxVKo(1>L>UZ#kM0eCO=peItMJ4hqE52_)$upyNEF zMUsT>w6rM1My^Jc4!5?pnisdEj^elv3asSQx?f?+tnv3*7Mo9em;#7W;MyC3*mTUT zQ=G*CTpwW3_xVD1{hi453#@nw4&2`C{A(50o_4RdJ9n_KK=>t4TwBD{u-Gd+aa{lo zZ8}0F>xO6#hWvn>o4pU?bPM<|%WR7cM1u>o_L*V8;(}`e4D{itFO;hkfF>s~07uVq zsf}hYT(x@avhnXm{1c`zLY}>CzXFv}d=KFKf!O5kxj6-^&EoOkP5lC+!;T^@fbM(* zq9_s}=alIBpjXm%Uf-xYah}ntlvibMlRxG~+lw|DRYQ_q?#ml*9k$hF&#FVE7lVv0 ze9vWSH$Yr?zfaKHZxlmYsd1d)LMz2DwixYyN|DAsx4$ALGsPsmmKk(1d={3$6TV~=zxoi3yriL?e*CXn)#PqY9dM}xFD z6%z8#K0f+fKAlWB{R9CFhi67WWb+j_KfrGAd5`>S1PS5$eOX>@W$~s}Za+_2;VDTf zk>XszfN|@_`I3iORWgY;HX3{ycdrd@mOaX@chC2@HEc6H3#z-%3Q|@l=;j&Qj-B^q z%>8-Vnh-OQ)(0&TW9Hb9X}RiTvP!Wbf{3*T!ZwToahbakuq)-@KW1b%1J*rv=|aZs zJ2$Ir_1d+7K)k-bE|@-BEo4H`-M^bJ_E$jwP$`CkI!DaoR?Bf_r?XgZapy?RuyD%p z4yQs|HzBeccVe`2m*>10Nvg7=7PVo4A7h7TtT6O@P&TG52P(3{EM6tcZ1NLU(I+#8 zi(HKqGVE@kVBg>aIqbHZ^lkZlh@3|=mIM7?o|pvfG2Kf>vnkYgTLHgmMV^58NH98^ zS&Mp{bd7FIFT?tL{_&||uKt{I&r`$+-hTt*Om5ciZXGyYBioySib_&E&3}%`Q|^5% zbk8$_q`#7%gJ`<=IwdJbb;LZ$aUWO$GjST43~g~9GnE8i7`NjPgSo%M9R95uFsKg(h){$z-NByGC2YV~8!ik4m2w>42BYFt9 z5M|=Q@XquKuiOzz@qI3RZz(}O+zUD%nW?hcI2F2ZEO}#R z^dYs?cBb(DiNP|hTpj426Os;%u7EPrNZ93znh%cRI?aVk7?T4_X#EB^#QeIFO|EBivT?lUM$n)*CEYE(x z=ivk*=q;+-rf?vesv{ zwn+fTT$W8f;pOX_DWMXw9QC{OBLV1J0U)FJcqx?) zGRuV-W>oScR(hDjL2r8yTDAmsY}Z%F4INKDQ!ji|ZVJXDWJe;9P+(f$^1M~ku`M5= zr@Nou=@7Y4-^SXYz(8ct=?;|5i$n7{&`^cE`L`fhixoY3w(hR3JsxdFVW2P>`g$yx zNYOrbpyq#+c--!v-#9n`P#1vCFKhIr>14zgoyMK0dup)Tf>O#lu#68usy&ome<5SQ z@*J7Wa2CrbvF$ZyO&yBEENJX`+(X-*o{A&WExcf|CIslqRiV1F8E{KpEhF&nj@2J> zJQhkQu4}_mrRGT#ve}KCgMzeEo~BN&E3VTBUNjXI`+p;vkKYC09?C#Y4q%}Z82FoP zuuq4!Um0I}*>PRoo2m(A>m7A+=surW!g($xG{X>CB&PoEfWCa5d5iWk1T{RbauyiX zB9ew&NSE(oy$+LXHlNBxGzPs@{QESvbS`IG5clNw=m?)xXLF&)0{aV^6r=`Zdo{+n zs&;MJ50~^TPOEnP0?^PO!3aE68COZk_nf1wXJ{SBdR8x^y7II=oTd``zUi@kJm#+W zME>EfdPO^t_|5UpmjQ4RanWz4a%6Y6v)gK_kscBqo<{D=ReBYtU9~ZTkMN=-9_|y& zx-aN&D(RRU)LWOlAZt|uN9B2(KJ1?2492hOsO*!3SjqpJELf~~z1&=Cl5>ax6IBLzDR}J*_-T4 zT7r8IJc!a`jTbX8l^)lC zl-R^?*Q%u7ul~#op>xJ=lOp9n%~K$3iW9-XzS(mIuj(zKb@ZS8k`B5y6}LuN)k%e> z3`%`+c)eI=EFgdD2*Wm(51-Rx6VuSfM zkPZ&5zPuUeSdtM!Hcq;pyMD^L@m&VM_`pv)5<)AfBApaH1syWVAlEU^WP7&>bYBkDjDa7)e zidrZ(Fk*O+UjJYzQYS3KFeWl3) zdWcikgDd;zoaaubu)o)j+Y$fo^86~#0ak!_r5WogSFFj_;s8c1;jg3u5LaB-dd3s5 ztAF@NT%OXNyn4CT8^tz~O)sw}b3`@p9)S~*L;V>?J238?{ZLC`MZm(j!Ws{Kap*=D ze5c5zfz+T6e@EUkanXav!ezqTY9W$y2AKi7SszuhGJ$h&si-0%u43KI6QERr%rvFZ z5ukHgv(pC^rh|EmU!HLga$P6CfVIG<`V#HRw#~&w`9gTO+4DOAow;;86gvQQ=`qvL z82;@%M2NuV^m>$y5Nag7Oz?~-w>K!JC&W&>^8j=`ZSQrh9QQa}oo{AGrV4D5E13bcvwIziE(YlY0cI_l82%P6z#xJdUl z&$eDmoUceweY0+rc0JgNrGMuR8E*JQZf3TT?RB5i#lxrYO4=VkoOzTrIfa@=K4Jd7 zBM`hBjx>gW7MJrMvZ(qnF50)P7{=W~yT%cVL>%XtQe*pz?A#F9Y~Y*-_f<0ini)>IU% zN4*_{>2e@@{&(ZLmq+GEb#E>dXr^v%XZkIa4|Jkwq8e2V6Cc?RK||vf+!#H*UNN(D zlA@%MPZfKf9xh$nImNa74Ds^0{pT<}2C*+N56`)Tb67gWeu&-^J-KY+4CYZyiIUex zbfr~)%VX_SkTsvA`p5t2oqwn{|E+-gzo$6b<`H~t%-q{s* zP}WFM9^LSh*->hr8|U-ST%VbBJ-=ywUfY_EShCi5Ka{Tsnaquo&T%^fpP8~BH0Z8H zrZP$y>S<`eBG*WbRwQ&nP)gZ|xrxZ8G5Cp*K-YUC^tWHWPw0+9yNs^?g&NyPryrlZ zYJs%1E{bp&5qu+P=WC-xxiWJ_A>t+SB2Wj{;M}OFwEIP)oCcx$AxzHlam(Eb)%-`3 zeTaFMVOVrGl0rZ1z10lk7C{ml@Ox5LbcR|UWvyTSUHaOt-fONT&lkh6NT zOys>BtV)zdcU4JavO@a`f@NkxGn6`RS(nb}hw!N7`wHtjOX{BhULDwb4FSFjP+60t zrKA$O=fHC_u0Ecg@!CnxxPT9&;Z9JXgAlk-v_~3-tyI7aLr<#2uGbFfg1z#Un1Zfx zZ`L->F~0Fbt9^6sGhwN8>vveZnsqHRi9ceBn-kY$Zlebe)6>8hY>SSzjaUqJR@S2c z05l+e@a~tJ@v9L0V;dJYJm$KThnz0!n|pgqLKsdP=h)lJsc!RQmmOeI@jf4>f%%SQiUsrvh}yHA-y8{MU| zQ;+psW)RW2xj9_wDJq?Q(bcZ%ls6U@ggDfVEJUz**|u5d6F#S*V%}&^k^l(X(dTD} z>OZe0?bCMW+XqbxOD|BTrpM{cd(%I+WlpQC)3@1eJ2QjZb#9jEycN|xQOe5(eipT7 z1z3g?r#X|2m;?>B-DN5}CN1d<`lq#&2l1O`N4(rG9Arx4*6Y$q`mlp^fKP*TLzn;2 z*rL4gSrO@o>z<|J?oDO>u9Ny29?S`A!UL2t?q3v~^ESyMY>P!Lz{ZZG!a(B0j+In> zb#&|n+HizaXv}1iaw@k*6*^c8W%Xs!6e{z=(v6%n2LIIpctD}+ZXWN{wFFz6*hvQ{ z;r6tu1B1euEV}(h3#&5XcR}b*v_ti4J(*H^p+&cSK#tl+NQ9cv84}EfUIa( z-Cl?ie%s#7bJTOLP4#`-2fOmK%5UXA}~0L~vs${m4>sZYP2gu`1; zOHfmVoj$G`lH<|*0I~rTurS&qlSL{jQ0Sj=L?Kop-D)J0xsOn=p z{%Y4cCJ1V)jQnN;QKKQrj;w`UY*Cip>f@qfo)cn{3Mt?xp zVED%5FftmW&d9Tg==xD9x?st{V_K;PbZ-{lw6px&^;!1UeI~ZQbMid$xlMW7for8@ zqtDUf)R`V{NJ9+ms=)Y|`+P$P+f@Hfha~H0xJkD@Kw4UCTfw|E*Yp7BxuC0!hQFefAoxq%P*UG=xz4+ zM|u22;|8jJ6Q$S2@Ie>atgW?EMGvnSSc-ulMeqJxy2f!ljt&EvD^SM^eo}IB%Y`=- zk~_8405%KFJ@V=y`1!HA>orvp0E3wTc0&0_WnptmWJLbU&Pf}ry#dp@BhjYbiFk+b zIS*r6jZLY+BfRlX;AK^N{`V!3zhB(UA#^4s7kaw5DFlzMls&rC^U;Eld)C?1v#G$~)Eo%R9Ra;>R4oWEl=5rM=go)q0#4**%lp>b7VPSw#Hb{g;<+ezmPMZrhkU zZeZcbE`#mQSc*h3D2;k7U}ok|EE)HU7E*|Q;HmyaeL~mK4jull5?EVhXRVO(-obxI zUxAxdNCDI)UPB250HghS1+vw!_fK+ym4(|(CD7-FRNG&t2lzN(l}mpsuDKm{m{#%4 z+1yL!WRru^V7cAUsfuPh1jq>Qs&jBfO>*luIW*z#!)oZk-pAEQtlF;(hO!y1h_^1WN7>}>(YNowLR>$Ck7#SEI>x+BMcikb z7dTD1C(6fjc>nE@j|Z;&(fQU9n^^w7%C+a71zIb)8tJ#@8q7bT|YRavMllsShG&!Bfay%`~U`M&MnKh^-m{G;; zn@?2WE4`8-rq`{Fd?xC3dc_P|^^vpo;&T(UkZO*F?2paT`sW51Th%XBr|Xfh z(w9ho`vE~X|LUu!9PwgsO{UN%Mxq1re?9b%k0&#eu`^}P=3lL6*u z>_WXfL{4kfR<+9EW|7xz1xyt^hAi1VTzrSi2i9*DKG9n%5x)p9g~0oY`qKG|CmZO< z96iAzFR9}*UnRs45AK?91?@>oB$mFEw8I~(W_+?o{ zmwh#LUCD1vT?{rqXo=0p5XoJ1f4;4aI)h~VQW{K4+}YTk=~h|OsZ`n#Q^YkP?DdTv z_v7EH8eg}5xOiy*e8#?3nJ#MxFX?l-Rl?+dH{NBA*QG$6yfs1tV`Nx8Y9;et{<_wr zybK=ox#a;#zN+vE@sU~=Yg_K`-AgUhrdV3@{qvNQ`b4-v!>!``qvMeb*m|3wG|j&ZB?F?=Vx?)Qi^gYJ~7_`mt8i}2rw>#^2Y{*s?`oC89nI9b=1_<#I*v6PBNT>UUOq=pQXRfM0*?{K z@2ae&9)lre1e?w&X8_|9sSf@&$>=k^luHNtwqN~CnK6p|ll3W%YWRQGnqWO_nxVCUk} zY~5PChgG`4%2_#!uO|$@qpRehVJ%9nvoq=UZNz~FBYv)k#qQzNq?}izkGcLoNs7bm zTk|HPUp?y%Y7sT_1CD$?)qdM{-n`?h9BP(@JVl1`=l@L|C&Nu6$rmCHW;V-i41UH1 z7GUVPsMjaFB4>cRqlmnwt>OK%XviGZS!L9&B@}PO`bB16mHw$0uOT!q$-Y!fqu8im z!0=uQ=FIb2!@T~?Z`WYuiy3-357WQrV0&pey1x<%#s<*wad<3CU$%t9`~PKx(NiNW zvmUak-9XMA)ggThAOz4ZISD{lbfBVsz~8Khxo_I0|bM%ot2_2NBb z`I&zrWw&3oH^Jto!clnBG`W&Vd*{6$XEhtMG@T#m&)?o_U>W{iU*KK&g+m5gJba9i zQ)2%_#Ts^mkTgG72@r$s@eGq^%}JMr_x@}m4pzvsiF>0{$F&@w_*1rbzQ+uz#IzF% z)V$YrsdQaM`Y}KaM@34H)I(1J@Tj1Uf?X9g+Jm&6PBL=aekK3|V6XCDl@*lu9l z`z>PPjeIRh?#?oYhs#t2#kR!2ZvEHm+1n(6_ENYZEb}Vn=b=UnoZVEskgdI9jKRyT zRw5s3iei7Oz;B-icrA1z?>6CSfF|q=%1rwDOcr0mDQ9tzO zSM5bW^@dl9j!YFTJ%De)cpMcK`WE^Nny-&4eVBbGroT6J=Y_U z>o7|w09uB*B6Nqx1tpzYR?|-O!6J0g53^a#X@WY6Kg-=i%;b&MdVy_uKmfEA`T(~3 zT>Qj>d7Sh8`8oF(ZA{)?<)D!HYh*7S#`|@SC4er^3o-?%@v}ufZP>}{r@u^i{snLz zHK2B@z9Vn`*hm7`bGex!zFiaW=fZCAOjmYqV|IZc1DHkEq7VF4UcU6yIFd8lWN@{6Xa3i$WsP}?a;)Q zY@{5GtlbRHvdQa#CrO1ZP6OU0#w6*?7=Q->s`LNnLGXQa=^q5&(YI(c09=$~$lkq_ zr#L!_U76vUbpv_+ZG1a-PJeJU&@TI2oaLiL$aYyIv(dUh-e(IB9iIXmx?uW?D5BNA zf(y(`f{<_ViSRG9Eh8Zk`HTA8-MN#eMQ2yi7Gs0`UQifk_kxjkd>5bFDnDc3L}R`& z3r1_TiWz_hc)CloJ?=_+EdIEAn7UhgW_8ix*@)O>T@u}6S3^YOJp>A2-|F{{EKjPll*7z#=~Z4VTY*2tZuCC44?$2qvX!Ndy<{**#zr2jZQ1;n|B zFl`G9mX#&yALw$e4i*{EONZE8(b#AW@U`zPJ_2f1N#O!a<)+DT`;rWnP+~&hI0VN z#azmdukqI~PEK~UK&8r#xH2`Imk}fw|Eh4dd=uC=5;o*31UuT|WWSMW9 zF0F3ApKYG4(>g)?oZaB(FFrQU%{Bn^DFc|O8l7zm62yrY-Jm1HG&)}JF|SLi2SV-l zU_i&zIawv{ZgABd`8V7UBR_qgaY9=lOj}<7wqHO9h68!YzUoTUn!D7srGXn!smAA4 zRPV{z3H|ed8#AedTkb;oCCOvu`rr0ZF(RdTNNbVd#tV`ruoAdG3Jq^{F3`XC5H* zMlo~CNK-RmI6qy-aDh{`n|jHNJr?5izVB!Ki>1U4>n*Wz)`oF@K4)F+?M`^dm;Tr2 zjo^4mtAV=fU}!J^C#pq@H_~<9yb*c9OyRkI|Cmm)QOU@i+h`}75 zs%r@?Q?Dlf@9*WXRPUUH1YBd+bCp=0)5T|6?i)84yD2$`(_5AOPQ&cA)X9(Q`q-mN zAOuW@h8)(G?J#Cyo*+dmQ{y8f80m@@S_JF6}N4Thc(FF8AB&q~}olDDi3rDT8zZ zM$d_oNw1LyXL#Igc$Ool3%)_xLH@9ISuSF%iV7Tz-0V0Myp(D*D^m90_3WLpIs@Z< zv}|ZVoC@KbTiK~{JDzYa(IEE<&9uP|d_hrMVW{M1$@zf-uU5~x^;Nlh;5%@v7agR2 z5NJp79n_(6`{upT_|ub|}aD^#?W zol~p7LbNAE@e&yyZVLhsOBVpyh5r-^v}3ds+zxzp4yg@vT71I-In$O;F!Dr;U|#Tb z$ts@|lVvN<;H}~$bGE)n>H|Y9gfVu7sM#S%%>?3{A4lsKdp9(pUVrJCSeYr-doASw zS*5ms5177-yzvp6O@4{TK4Fa*fCb&Z&o)Ghuz~kM(UBpFDXu!_R#)#m z57MbX;13>D22XWgoWw7o{7{fFf>L*#Y(-*hzzN6biNC|aBDT7qwzZ9D+pxE9Kv%l%N++(CVMGp&;3rp@QKj{)D z_nNe62dGkhfE?~rq6R)9uNP*>VVc~cAR zOpVdQt0yy{XcP}3ck{kYwJYXN*+d#z&X1|?q$HQ2Apy|4k``<|4909VkQN8D;KwE1 z`7#et?>g0YF-^xB^<&RGsj}APDPd+N8w?aCfR+QouN4_@A6V?Z;>g@Nk*b$S6D_>^?co?^0U1`F_B%>*PWU;i_@#2g6p)v}KAlhmqd=A; zTdu+dK|`MY@wJTnq))a_LlYm&D!`f7o<3OHBy*Rf51zIbKk6EFzgs$|t{ z-La(M5`(s}?Mk~@K66y}0867B12~XrUbihmMG1T@DcCpR+gz{HcrFkFXyo-t3F7Kn z2n}E$j&rI0@i$z>BwRUj^)Kq==+szj{gX&!M6XQC?OQp5XaOKDIUI`5dL<-$W9Z1y z;OB!5Q%V_GG*~XFx9pn9(}1|DaC({@I*=T8B`k0UxSFbbZ?z}xPrpcycNQ8(eXQ-S zc;2><8E-MG3VLW7aJVnt?fgdd=15AImobBM53f$3_SQLVx*wkc2h`$Ui|Kl#vG4%1 zrgyOTBR-tAhTU!;uE}-$Kr*{)JXwC6T{@b0|jv! zfGMXL8eNTB)xM=m>WL9dGp71|l#BQuto>Z2iD;SDGOp(*jAI&|Xo35n&XU6EHcH$} z(7pNVc_Q~x&n?D~&iYisprHQ3d=D}$CsDH8Nr>Uj>%}>}uSy81`FkbQb!goNCA-rk z;m`gbOQ96?2JUQJ_a_&q5PHqV&3t|0v+hNJ$D5(Lnj%lT?TvnoYI;|YraZ8%kuxIZ zsIS46J&y9#BrdI#8^e`?KMjySmM%-l#iG_Tck+(eFZ3S)fxXeHQ8GZ3p;q_kKk&(; z!=MaMFFnH+qJVhvAhXDaW5PBwrjkIon&zUe@7n&Aqq*%B@T#F(d@MB&r6=-%`*HNH zqpLLvcxQ!)=!m3TYObuTtfMhbYvYKb2s3;&4L=_UYsnJ14bS>`=NY&T*yG4pa&V~p zcCwX^leZnAWxJ~E;Ro`ZM?;)f9SUAnU}1!}d8_JGvBA$t&x(SOR_$6OLsjMn#nGZU z=62|c%Z`D1!>5rvy(s2P(^@&_z*S61CwYU~K*_kwa-eol(1aOT?}*pmkj!C6d$Q~m zX&}Uhx<8?M_8+_$y+ZZ*AJG5N!jJu`BMhvwl)At+s1hc8{?GN$6U8U(#lhR1Qx2xt z&TqTrTM~4!sPPZoeB0msFfuJk*>Cr2#M1v*-agAW0*iQrZoXG?@Qs-gEsTPo5vlf5 zm;5@fTSMPiRsF)%`fH|ndu_C^G}o-e9r6t)58)0k7V!!p2z;pnkl^A{U;P_*iUe3? zz09s_c3#$<-m7*(fZDaGe*SBFm4RNre{o_lnN>Jg@CmI;WcHvksHQmSIe_5G>Ze#| zm=WBt_EN=QlDt=>WUiZ{#0OWHjV`Q>(>nbDDb%Av1bbTJ)%#3hAv1d-U$&sSzwwK# z?%Xc`o^0_W$#7qwM^MwDYP?D9uAO7Qg}(tlpaCCiYSf3RN9chxrdl|m&tBq*#=SMa zu)Iu5=U{RK`ohxq_c2;pF$?EhPEZB?E1c|gGAN@y#>PZW^K{-V2r8J;2$qph6oNkD zyU4J>Q50i{^!_@xNGwQ7BJ1f5bRnTq`$#+!NKpvPDzvp=bAqH$2&zZ>`LAcm8`H1m zbFXmlRe>U!#XjwZ#C)1S0U`&Ryh73Q~_(6!IOmzJ|HjZFz!lC0nlzYVs$B6P2U|)htLfFmtBD>3dYPVge||Mx96GR zfg+|gsI8S4M$gK|mv?X$Sa-A^2KYQtwPV@YWqImngq9s}C)Vw;baa{PmFciyix>oA zzsuDWYO_`QZeG`^&_nj&0tQxQ@I3JMgygu9frZcPb~9)s1Y&E0TD23wCu=er2+nb# zZfH}~g=Cf*8ex6>c3OZVQjPuOS8}R>^*HHH)mXn*L~+YN6X`f8t)jd~WwEGBKs~;Z zf3Lbm^;Kg58|uC9<_JkKcw^wn;C@;3^#@&2yXqjL5?PS-;$!LoOO)pnbeIDRw6pCl zWv}!{eI7s^Rw|@9i|Ji{#x_1)tH59V#WSi>iO0zAI(cs6T|XI1GhJz~Vo7L;bUgs^ zBL@=#OHP9k`S#E64K3Gi%sZbk5NXMbJd)mjE(0LNYJJ0;Ej04ikXRGvyXQ%*I-3ca z)g1#Lbe(n(9|3mX>*kctNN$s>^A9i`f_DvsXY*I;3i54AmrM?TY%KgI*;0v{#B{Km zx@~(~!eBID2PN9Rn0En%%QVfL`ikhdi%7AS6&hag>EwkgE6pZjS0Wv)q5kV@`OpPh zsq%(>m)c_YnHiZB-)%;iyBk%bnE2# z_rdlWo)em9jfj_9cq&xQ=nNoa#_BL*h=TF*S-sy!);kfnkX+ zR1Rp|AK;Uq0W}u{3)q8cz}*+A+!+5AC)9_RK9ivxbZ71y)L2f6Pj2vGW`p!VRynv;oGBTGt zJ=9C{^|HV~?yGbbVMqO6H5_RIJhjgq0~Il{?h?6+587P~OFD5kdYu-!27;rghc5>K zZM^{68xOE_1rh_sXZ}_(e&id_oovcz2B4_mYt4#B{8>i=s%QDg^H^|qwwJf{`*+ki z0_EIn68&owAFlrg3&4BSS$FNQAS+|c`Wo?3+xk0-^H=|8xL-XbE|>}@+Gg8h-=O8u zH8+J%x%=kiiH0s_N>jsuRzGIY%%7Wu652^Aawc}p4-Q<>r0i0jNd@nycNl+#&O@J% zxdswj*}R4(UElXtO0yh*+^bwxE>VR<|A#T<|3#ZpAvunqrBXSIboa}C2MH0=9o$>& zp+ewchrGw;*|hmOr^_2&R~Y&HDykkTy5^XOcrgMyBY@&Tp>lc#2AXHhA_wly{%lb; z6xO-Nx1m~=^)Yxq`seHAxY_S8742`N(#4Nh!env?8ZfKoc6g-DO!;As1Cr&Y!LJvI z>HO$WD2sjSp;$CoZ!z(r$I7)l#lkz{|B)i#U%8`{I(V+F07=HY#*@vkS6fS4-4E-M%9&nt|1 zSV(^?E2_I}ccgu;h7XUW2ij|ktJmO)OB?*}$e-atEqrzF8i3@Hll4s7mm~Me&~rLn zcM$|Vpefz2UklmssO!8?=BJ=O4)D&=$OJ)`)zGBidRD?7&C^-<4uTz@WeaVqSMOeg?X zJ)($2w7=Nj+pTXOQJQdAZ+w?-FnI0p5n45sQ7UKanCfdkzU`5emO!1qxgX*-k-s1R z_3!{-s5rIjwLS;%S0JE!d8OjP4p=52%I`dexQ5h~eKEInUXkX;x@Jy!zC$oeja4sl zkN!{3{`#-etg*R{!ArZ8TI9NP@Ek=)p3$Gy zqK}v{aE0}&xL+(^a9WmUW2h|Ze05J+mx*QGU4Qqo9Ow?AI=|lMs3gH@N8l7<{o`{< zv%NrUi1PbMwyXdG_b^1SU-S3k`BtZfKmofcMDQpI`>&yXZuv(A#g{FSUl0TNEbK;t*wZNHCv${SF_LeR?rUwD zM*N+mXO-TTiFbtAUtl?7TiUN1<=j8Cd?snapJ!=%IrJ?z>gz#^%rrpJ;hH){vq}d} ze?+-xSD6W#-{an}eGc4E;uzYndpJxXR&< zFIs}3|HZCTIURumh%^9UO^#Il^(bjwFZDX^6dimqB}ezn9oQ!ngOZ4{Baki%m*W1+ zE1hg!@TC#==^fS#xtH5z+hP5}xF1iCa5O3_mD1mReqFY8f*Tf@hw0HdfXkj@i2sEx zjvJ9lRfdWgn#o=*dbv|bw)wMjl{&F7DN wgkp$_-|?RuS^^qZIT}H%SRW{z88kA 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ĵ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 literal 0 HcmV?d00001 From 971d4f2b33d63ca042bd036c0d1cf278a3b6e69d Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Wed, 9 Nov 2022 13:18:24 +0100 Subject: [PATCH 34/58] TRestAxionFieldPropagationProcess. Adding documentation image --- src/TRestAxionFieldPropagationProcess.cxx | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/TRestAxionFieldPropagationProcess.cxx b/src/TRestAxionFieldPropagationProcess.cxx index 092d2d6e..2de69b4b 100644 --- a/src/TRestAxionFieldPropagationProcess.cxx +++ b/src/TRestAxionFieldPropagationProcess.cxx @@ -70,6 +70,23 @@ /// * **Transmission**: This observable will register the photon transmission produced by an additional /// buffer gas length at the end of the magnetic region. /// +/// This process can be tested using the RML files found inside the directory +/// `/pipeline/ray-tracing/axion-field/`. The following commands will generate plots with different +/// distributions containing different axion-photon probability calculations. +/// +/// \code +/// restManager --c photonConversion.rml +/// restManager --c plots.rml --f AxionPhotonProbability.root +/// \endcode +/// +/// The previous commands were used to generate the following plots where a total of 100,000 events +/// were generated. +/// +/// \htmlonly \endhtmlonly +/// +/// ![Distributions of axion-photon probability, field average, coherence length produced by +/// tracking.](axionFieldPlots.png) +/// ///-------------------------------------------------------------------------- /// /// RESTsoft - Software for Rare Event Searches with TPCs @@ -85,6 +102,9 @@ /// 2020-March: Review and validation of this process. /// Javier Galan and Krešimir Jakovčić /// +/// 2022-November: Finally including non-homogeneous field integration +/// Javier Galan +/// /// /// \class TRestAxionFieldPropagationProcess /// \author Javier Galan From e17f4ee9fca1aba74e04ff8d8682711111388f55 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Wed, 9 Nov 2022 13:30:23 +0100 Subject: [PATCH 35/58] TRestAxionFieldPropagationProcess. Minor corrections --- src/TRestAxionFieldPropagationProcess.cxx | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/TRestAxionFieldPropagationProcess.cxx b/src/TRestAxionFieldPropagationProcess.cxx index 2de69b4b..8ee3b150 100644 --- a/src/TRestAxionFieldPropagationProcess.cxx +++ b/src/TRestAxionFieldPropagationProcess.cxx @@ -54,20 +54,21 @@ /// metadata definition. Optionally, if the field uses a buffer gas we may define a TRestAxionBufferGas /// that will include all the necessary gas properties, such as photon mass or absorption. /// -/// Two process metadata parameters can be defined: +/// Two metadata parameters can be defined inside this process: /// -/// * **integrationStep**: The integration length used for field integration along the particle track. -/// * **bufferGasAdditionalLength**: In the case we use a buffer gas we may include an additional length -/// that the particle needs to travel inside that buffer gas but outside the magnetic field volume, the -/// result will be written as an independent efficiency at the `transmission` observable inside the -/// analysis tree. +/// * **integrationStep** (Default:50mm): The integration length used for field integration along the particle +/// track. +/// * **bufferGasAdditionalLength** (Default:0mm): In the case we use a buffer gas we may include an +/// additional length that the particle needs to travel inside that buffer gas but outside the magnetic field +/// volume, the result will be written as an independent efficiency at the `transmission` observable inside +/// the analysis tree. /// /// List of observables generated by this process: /// /// * **fieldAverage**: The averaged magnetic field calculated along the particle track. -/// * **Probability**: The final axion-photon conversion probability. -/// * **CoherenceLength**: The lentgh of magnetic field region traversed by the particle. -/// * **Transmission**: This observable will register the photon transmission produced by an additional +/// * **probability**: The final axion-photon conversion probability. +/// * **coherenceLength**: The lentgh of magnetic field region traversed by the particle. +/// * **transmission**: This observable will register the photon transmission produced by an additional /// buffer gas length at the end of the magnetic region. /// /// This process can be tested using the RML files found inside the directory From e072446805525222b619ba3a4f4347fe933317f5 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Wed, 9 Nov 2022 13:35:07 +0100 Subject: [PATCH 36/58] TRestAxionFieldPropagationProcess. Minor fixes --- src/TRestAxionFieldPropagationProcess.cxx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/TRestAxionFieldPropagationProcess.cxx b/src/TRestAxionFieldPropagationProcess.cxx index 8ee3b150..afc6acf3 100644 --- a/src/TRestAxionFieldPropagationProcess.cxx +++ b/src/TRestAxionFieldPropagationProcess.cxx @@ -85,8 +85,7 @@ /// /// \htmlonly \endhtmlonly /// -/// ![Distributions of axion-photon probability, field average, coherence length produced by -/// tracking.](axionFieldPlots.png) +/// ![Ray-tracing distributions of probability, field average and coherence length](axionFieldPlots.png) /// ///-------------------------------------------------------------------------- /// From 38653cc9187c15de285b7049c92a27519cbac32e Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Wed, 9 Nov 2022 13:37:28 +0100 Subject: [PATCH 37/58] plots.rml Fixing titles --- pipeline/ray-tracing/axion-field/plots.rml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pipeline/ray-tracing/axion-field/plots.rml b/pipeline/ray-tracing/axion-field/plots.rml index d4a53462..bdc704ff 100644 --- a/pipeline/ray-tracing/axion-field/plots.rml +++ b/pipeline/ray-tracing/axion-field/plots.rml @@ -16,11 +16,11 @@ - + - + @@ -30,11 +30,11 @@ - + - + From 316c6f26833e02315593cca3912c2f6ae8f1f563 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Wed, 9 Nov 2022 14:00:33 +0100 Subject: [PATCH 38/58] Integrating the validation pipeline --- .github/workflows/validation.yml | 10 +++- pipeline/ray-tracing/axion-field/Validate.C | 51 +++++++++++++++++++ .../axion-field/photonConversion.rml | 2 +- 3 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 pipeline/ray-tracing/axion-field/Validate.C diff --git a/.github/workflows/validation.yml b/.github/workflows/validation.yml index 7e58573e..5d56656e 100644 --- a/.github/workflows/validation.yml +++ b/.github/workflows/validation.yml @@ -188,7 +188,7 @@ jobs: wget https://rest-for-physics.github.io/axionlib-data/opticsMirror/Reflectivity_Single_Au_250_Ni_0.4.N901f wget https://rest-for-physics.github.io/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")' + restRoot -b -q ValidateXMM.C'("OpticsBench_Yaw_0.02_Dev_0.005_BabyIAXO_Run00100.root")' - name: Window transmission run: | source ${{ env.REST_PATH }}/thisREST.sh @@ -199,4 +199,10 @@ jobs: restManager --c shiftedWindow.rml restRoot ValidateTransmission.C'("ShiftedVacuumWindow", 0.3, 0.5)' restManager --c siWindow.rml - restRoot ValidateTransmission.C'("SiWindow.root", 0.9, 1)' + restRoot -b -q ValidateTransmission.C'("SiWindow.root", 0.9, 1)' + - name: Axion-field integration + run: | + source ${{ env.REST_PATH }}/thisREST.sh + cd pipeline/ray-tracing/axion-field/ + restManager --c photonConversion.rml + restRoot -b -q Validate.C diff --git a/pipeline/ray-tracing/axion-field/Validate.C b/pipeline/ray-tracing/axion-field/Validate.C new file mode 100644 index 00000000..30bdc6ad --- /dev/null +++ b/pipeline/ray-tracing/axion-field/Validate.C @@ -0,0 +1,51 @@ +#include +#include + +Double_t probTolerance = 1.e-21; +Double_t fieldTolerance = 0.01; + +Int_t Validate(Double_t prob = 6.645e-19, Double_t fieldAverage = 1.665) { + TRestRun* run = new TRestRun("AxionPhotonProbability.root"); + + if (run->GetEntries() != 100) { + std::cout << "Error. Number of entries is not 10000!" << std::endl; + + return 1; + } + + run->GetAnalysisTree()->Draw("axionPhoton_probability", "axionPhoton_probability"); + + TH1D* h = (TH1D*)run->GetAnalysisTree()->GetHistogram(); + if (h == nullptr) { + std::cout << "Problems generating probability histogram" << std::endl; + return 2; + } + + Double_t probability = h->Integral() / run->GetEntries(); + std::cout << "Average axion-photon probability: " << probability << std::endl; + + if (probability < prob - probTolerance || probability > prob + probTolerance) { + std::cout << "Wrong axion-photon probability!" << std::endl; + return 3; + } + + run->GetAnalysisTree()->Draw("axionPhoton_fieldAverage", "axionPhoton_fieldAverage"); + + TH1D* h2 = (TH1D*)run->GetAnalysisTree()->GetHistogram(); + if (h2 == nullptr) { + std::cout << "Problems generating field average histogram" << std::endl; + return 4; + } + + Double_t field = h2->Integral() / run->GetEntries(); + std::cout << "Average magnetic field: " << field << " T" << std::endl; + + if (field < fieldAverage - fieldTolerance || field > fieldAverage + fieldTolerance) { + std::cout << "Wrong average field!" << std::endl; + return 5; + } + + delete run; + + return 0; +} diff --git a/pipeline/ray-tracing/axion-field/photonConversion.rml b/pipeline/ray-tracing/axion-field/photonConversion.rml index e1fd4cfc..e0baa054 100644 --- a/pipeline/ray-tracing/axion-field/photonConversion.rml +++ b/pipeline/ray-tracing/axion-field/photonConversion.rml @@ -16,7 +16,7 @@ - + From 9b6fd505ef9befd7a85f091be6bddb86be97e665 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Wed, 9 Nov 2022 17:16:08 +0100 Subject: [PATCH 39/58] Optics bench ray-tracing validation. Fixing input validation filename --- .github/workflows/validation.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/validation.yml b/.github/workflows/validation.yml index 5d56656e..9fb821e9 100644 --- a/.github/workflows/validation.yml +++ b/.github/workflows/validation.yml @@ -188,7 +188,7 @@ jobs: wget https://rest-for-physics.github.io/axionlib-data/opticsMirror/Reflectivity_Single_Au_250_Ni_0.4.N901f wget https://rest-for-physics.github.io/axionlib-data/opticsMirror/Transmission_Single_Au_250_Ni_0.4.N901f restManager --c opticsBench.rml - restRoot -b -q ValidateXMM.C'("OpticsBench_Yaw_0.02_Dev_0.005_BabyIAXO_Run00100.root")' + restRoot -b -q ValidateXMM.C'("OpticsBench_Yaw_0.05_Dev_0.005_BabyIAXO_Run00100.root")' - name: Window transmission run: | source ${{ env.REST_PATH }}/thisREST.sh From 1ea0d509f76d1bee85c829169d8bdd7fe1c5745d Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Wed, 9 Nov 2022 17:32:09 +0100 Subject: [PATCH 40/58] Optics XMM validation. Fixing directory --- .github/workflows/validation.yml | 1 + pipeline/ray-tracing/{ => optics}/ValidateXMM.C | 0 2 files changed, 1 insertion(+) rename pipeline/ray-tracing/{ => optics}/ValidateXMM.C (100%) diff --git a/.github/workflows/validation.yml b/.github/workflows/validation.yml index 9fb821e9..655ad8a4 100644 --- a/.github/workflows/validation.yml +++ b/.github/workflows/validation.yml @@ -183,6 +183,7 @@ jobs: source ${{ env.REST_PATH }}/thisREST.sh export REST_NEVENTS=1000 export REST_RUN=100 + cd pipeline/ray-tracing/optics/ wget https://rest-for-physics.github.io/axionlib-data/optics/xmm.rml wget https://rest-for-physics.github.io/axionlib-data/optics/XMM.Wolter wget https://rest-for-physics.github.io/axionlib-data/opticsMirror/Reflectivity_Single_Au_250_Ni_0.4.N901f diff --git a/pipeline/ray-tracing/ValidateXMM.C b/pipeline/ray-tracing/optics/ValidateXMM.C similarity index 100% rename from pipeline/ray-tracing/ValidateXMM.C rename to pipeline/ray-tracing/optics/ValidateXMM.C From ca1c570050a00c5e2789741ca16ecc623a67e2bf Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Wed, 9 Nov 2022 17:46:03 +0100 Subject: [PATCH 41/58] Fixing optics XMM validation --- .github/workflows/validation.yml | 1 + pipeline/ray-tracing/{ => optics}/ValidateXMM.C | 0 2 files changed, 1 insertion(+) rename pipeline/ray-tracing/{ => optics}/ValidateXMM.C (100%) diff --git a/.github/workflows/validation.yml b/.github/workflows/validation.yml index 9fb821e9..655ad8a4 100644 --- a/.github/workflows/validation.yml +++ b/.github/workflows/validation.yml @@ -183,6 +183,7 @@ jobs: source ${{ env.REST_PATH }}/thisREST.sh export REST_NEVENTS=1000 export REST_RUN=100 + cd pipeline/ray-tracing/optics/ wget https://rest-for-physics.github.io/axionlib-data/optics/xmm.rml wget https://rest-for-physics.github.io/axionlib-data/optics/XMM.Wolter wget https://rest-for-physics.github.io/axionlib-data/opticsMirror/Reflectivity_Single_Au_250_Ni_0.4.N901f diff --git a/pipeline/ray-tracing/ValidateXMM.C b/pipeline/ray-tracing/optics/ValidateXMM.C similarity index 100% rename from pipeline/ray-tracing/ValidateXMM.C rename to pipeline/ray-tracing/optics/ValidateXMM.C From 9f538092579f93c25367a582be4df2d89a6a1464 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Wed, 9 Nov 2022 18:12:01 +0100 Subject: [PATCH 42/58] ValidateXMM.C analysisTree output --- pipeline/ray-tracing/optics/ValidateXMM.C | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pipeline/ray-tracing/optics/ValidateXMM.C b/pipeline/ray-tracing/optics/ValidateXMM.C index 2cca73f4..ca5f6ec5 100644 --- a/pipeline/ray-tracing/optics/ValidateXMM.C +++ b/pipeline/ray-tracing/optics/ValidateXMM.C @@ -13,6 +13,8 @@ Int_t ValidateXMM(std::string fname) { run->GetAnalysisTree()->Draw("optics_efficiency", "optics_efficiency"); + run->GetAnalysisTree()->PrintObservables(); + TH1D* h = (TH1D*)run->GetAnalysisTree()->GetHistogram(); if (h == nullptr) { From a7286d4ed2613cd76a534f67e5cf7b3027e0a3fa Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Wed, 9 Nov 2022 18:13:00 +0100 Subject: [PATCH 43/58] ValidateXMM.C printing a specific entry --- pipeline/ray-tracing/optics/ValidateXMM.C | 1 + 1 file changed, 1 insertion(+) diff --git a/pipeline/ray-tracing/optics/ValidateXMM.C b/pipeline/ray-tracing/optics/ValidateXMM.C index ca5f6ec5..8bf1ebcf 100644 --- a/pipeline/ray-tracing/optics/ValidateXMM.C +++ b/pipeline/ray-tracing/optics/ValidateXMM.C @@ -13,6 +13,7 @@ Int_t ValidateXMM(std::string fname) { run->GetAnalysisTree()->Draw("optics_efficiency", "optics_efficiency"); + run->GetEntry(10); run->GetAnalysisTree()->PrintObservables(); TH1D* h = (TH1D*)run->GetAnalysisTree()->GetHistogram(); From 67dcfe45610543a2966273374e267eab65c8be30 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Wed, 9 Nov 2022 21:13:19 +0100 Subject: [PATCH 44/58] Pipeline validation axion field ray-tracing. Downloading necessary files --- .github/workflows/validation.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/validation.yml b/.github/workflows/validation.yml index 655ad8a4..069d5a14 100644 --- a/.github/workflows/validation.yml +++ b/.github/workflows/validation.yml @@ -205,5 +205,7 @@ jobs: run: | source ${{ env.REST_PATH }}/thisREST.sh cd pipeline/ray-tracing/axion-field/ + wget https://rest-for-physics.github.io/axionlib-data/magneticField/fields.rml + wget https://rest-for-physics.github.io/axionlib-data/magneticField/Bykovskiy_201906.dat restManager --c photonConversion.rml restRoot -b -q Validate.C From b460cf85075616ed448381060fb476c49cdf6c48 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Thu, 10 Nov 2022 08:40:44 +0100 Subject: [PATCH 45/58] Adding buffer gas download at validation pipeline --- .github/workflows/validation.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/validation.yml b/.github/workflows/validation.yml index 069d5a14..91fb87da 100644 --- a/.github/workflows/validation.yml +++ b/.github/workflows/validation.yml @@ -207,5 +207,8 @@ jobs: cd pipeline/ray-tracing/axion-field/ wget https://rest-for-physics.github.io/axionlib-data/magneticField/fields.rml wget https://rest-for-physics.github.io/axionlib-data/magneticField/Bykovskiy_201906.dat + wget https://sultan.unizar.es/axionlib-data/bufferGas/He.abs + wget https://sultan.unizar.es/axionlib-data/bufferGas/He.nff + wget https://rest-for-physics.github.io/axionlib-data/bufferGas/bufferGases.rml restManager --c photonConversion.rml restRoot -b -q Validate.C From 5f54dde7ea299110d427d68a97f1481ef9dcfa97 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Thu, 10 Nov 2022 09:27:56 +0100 Subject: [PATCH 46/58] Fixing seed for validation --- pipeline/ray-tracing/axion-field/Validate.C | 2 +- pipeline/ray-tracing/axion-field/photonConversion.rml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/pipeline/ray-tracing/axion-field/Validate.C b/pipeline/ray-tracing/axion-field/Validate.C index 30bdc6ad..598eca5c 100644 --- a/pipeline/ray-tracing/axion-field/Validate.C +++ b/pipeline/ray-tracing/axion-field/Validate.C @@ -4,7 +4,7 @@ Double_t probTolerance = 1.e-21; Double_t fieldTolerance = 0.01; -Int_t Validate(Double_t prob = 6.645e-19, Double_t fieldAverage = 1.665) { +Int_t Validate(Double_t prob = 5.9978e-19, Double_t fieldAverage = 1.631) { TRestRun* run = new TRestRun("AxionPhotonProbability.root"); if (run->GetEntries() != 100) { diff --git a/pipeline/ray-tracing/axion-field/photonConversion.rml b/pipeline/ray-tracing/axion-field/photonConversion.rml index e0baa054..1d176dc4 100644 --- a/pipeline/ray-tracing/axion-field/photonConversion.rml +++ b/pipeline/ray-tracing/axion-field/photonConversion.rml @@ -22,6 +22,7 @@ + From 35d11890c061e8402ca9daef69aae2d3dbe4c238 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Mon, 14 Nov 2022 11:26:04 +0100 Subject: [PATCH 47/58] TRestAxionField. Protecting mpfr types and TRestComplex in case MPFR was not linked --- src/TRestAxionField.cxx | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/TRestAxionField.cxx b/src/TRestAxionField.cxx index 65de3ae6..d7611fc9 100644 --- a/src/TRestAxionField.cxx +++ b/src/TRestAxionField.cxx @@ -46,7 +46,10 @@ #include "TRestAxionField.h" #include #include "TH1F.h" + +#ifdef REST_MPFR #include "TRestComplex.h" +#endif #include @@ -71,7 +74,9 @@ TRestAxionField::~TRestAxionField() {} /// So that we can still calculate numbers such as : 1.0 - 1.e-30 /// void TRestAxionField::Initialize() { +#ifdef REST_MPFR TRestComplex::SetPrecision(30); +#endif fBufferGas = NULL; @@ -129,6 +134,13 @@ double TRestAxionField::BLHalfSquared(Double_t Bmag, Double_t Lcoh) // (BL/2)** /// Double_t TRestAxionField::GammaTransmissionProbability(Double_t Bmag, Double_t Lcoh, Double_t Ea, Double_t ma, Double_t mg, Double_t absLength) { +#ifndef REST_MPFR + RESTWarning + << "MPFR libraries not linked to REST libraries. Try adding -DREST_MPFR=ON to your REST compilation" + << RESTendl; + RESTWarning << "TRestAxionField::GammaTransmissionProbability will return 0" << RESTendl; + return 0; +#elif mpfr::mpreal axionMass = ma; mpfr::mpreal cohLength = Lcoh / 1000.; // Default REST units are mm; @@ -182,6 +194,7 @@ Double_t TRestAxionField::GammaTransmissionProbability(Double_t Bmag, Double_t L RESTDebug << "Axion-photon transmission probability : " << sol << RESTendl; return sol; +#endif } /////////////////////////////////////////////// @@ -206,6 +219,13 @@ Double_t TRestAxionField::GammaTransmissionProbability(Double_t Bmag, Double_t L Double_t TRestAxionField::GammaTransmissionProbability(std::vector Bmag, Double_t deltaL, Double_t Ea, Double_t ma, Double_t mg, Double_t absLength) { +#ifndef REST_MPFR + RESTWarning + << "MPFR libraries not linked to REST libraries. Try adding -DREST_MPFR=ON to your REST compilation" + << RESTendl; + RESTWarning << "TRestAxionField::GammaTransmissionProbability will return 0" << RESTendl; + return 0; +#elif mpfr::mpreal axionMass = ma; // Default REST units are mm. We express cohLength in m. @@ -292,6 +312,7 @@ Double_t TRestAxionField::GammaTransmissionProbability(std::vector Bma RESTDebug << "Axion-photon transmission probability : " << sol << RESTendl; return (Double_t)sol; +#endif } /////////////////////////////////////////////// @@ -309,6 +330,13 @@ Double_t TRestAxionField::GammaTransmissionProbability(std::vector Bma /// Double_t TRestAxionField::AxionAbsorptionProbability(Double_t Bmag, Double_t Lcoh, Double_t Ea, Double_t ma, Double_t mg, Double_t absLength) { +#ifndef REST_MPFR + RESTWarning + << "MPFR libraries not linked to REST libraries. Try adding -DREST_MPFr=ON to your REST compilation" + << RESTendl; + RESTWarning << "TRestAxionField::GammaTransmissionProbability will return 0" << RESTendl; + return 0; +#elif mpfr::mpreal axionMass = ma; mpfr::mpreal cohLength = Lcoh / 1000.; // Default REST units are mm; @@ -364,6 +392,7 @@ Double_t TRestAxionField::AxionAbsorptionProbability(Double_t Bmag, Double_t Lco if (fDebug) RESTDebug << "Axion-photon absorption probability : " << sol << RESTendl; return sol; +#endif } /// Commented because it uses ComplexReal structure that is moved to TRestAxionFieldPropagationProcess class From 95763daa993124d7881ccff671afd74d82b3f5c5 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Mon, 14 Nov 2022 11:50:18 +0100 Subject: [PATCH 48/58] Updating data submodule --- data | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data b/data index 25bc0649..5db5a84f 160000 --- a/data +++ b/data @@ -1 +1 @@ -Subproject commit 25bc0649f7c6ed160e12002d582254f396ed9776 +Subproject commit 5db5a84f053c0a8357ab9a50c00229f9a58f37cc From 1185e268c825a5a61c8c73b74d7dfe5d28e7e118 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Mon, 14 Nov 2022 12:15:11 +0100 Subject: [PATCH 49/58] TRestAxionField. Renaming REST_MPFR to USE_MPFR --- src/TRestAxionField.cxx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/TRestAxionField.cxx b/src/TRestAxionField.cxx index d7611fc9..64252cb2 100644 --- a/src/TRestAxionField.cxx +++ b/src/TRestAxionField.cxx @@ -47,7 +47,7 @@ #include #include "TH1F.h" -#ifdef REST_MPFR +#ifdef USE_MPFR #include "TRestComplex.h" #endif @@ -74,7 +74,7 @@ TRestAxionField::~TRestAxionField() {} /// So that we can still calculate numbers such as : 1.0 - 1.e-30 /// void TRestAxionField::Initialize() { -#ifdef REST_MPFR +#ifdef USE_MPFR TRestComplex::SetPrecision(30); #endif @@ -134,7 +134,7 @@ double TRestAxionField::BLHalfSquared(Double_t Bmag, Double_t Lcoh) // (BL/2)** /// Double_t TRestAxionField::GammaTransmissionProbability(Double_t Bmag, Double_t Lcoh, Double_t Ea, Double_t ma, Double_t mg, Double_t absLength) { -#ifndef REST_MPFR +#ifndef USE_MPFR RESTWarning << "MPFR libraries not linked to REST libraries. Try adding -DREST_MPFR=ON to your REST compilation" << RESTendl; @@ -219,7 +219,7 @@ Double_t TRestAxionField::GammaTransmissionProbability(Double_t Bmag, Double_t L Double_t TRestAxionField::GammaTransmissionProbability(std::vector Bmag, Double_t deltaL, Double_t Ea, Double_t ma, Double_t mg, Double_t absLength) { -#ifndef REST_MPFR +#ifndef USE_MPFR RESTWarning << "MPFR libraries not linked to REST libraries. Try adding -DREST_MPFR=ON to your REST compilation" << RESTendl; @@ -330,7 +330,7 @@ Double_t TRestAxionField::GammaTransmissionProbability(std::vector Bma /// Double_t TRestAxionField::AxionAbsorptionProbability(Double_t Bmag, Double_t Lcoh, Double_t Ea, Double_t ma, Double_t mg, Double_t absLength) { -#ifndef REST_MPFR +#ifndef USE_MPFR RESTWarning << "MPFR libraries not linked to REST libraries. Try adding -DREST_MPFr=ON to your REST compilation" << RESTendl; From 1b108ddbcbd6c83eca8e1d91d1706543a47db366 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Mon, 14 Nov 2022 12:32:21 +0100 Subject: [PATCH 50/58] TRestAxionField. Solving compilation issue --- src/TRestAxionField.cxx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/TRestAxionField.cxx b/src/TRestAxionField.cxx index 64252cb2..1514b285 100644 --- a/src/TRestAxionField.cxx +++ b/src/TRestAxionField.cxx @@ -140,7 +140,7 @@ Double_t TRestAxionField::GammaTransmissionProbability(Double_t Bmag, Double_t L << RESTendl; RESTWarning << "TRestAxionField::GammaTransmissionProbability will return 0" << RESTendl; return 0; -#elif +#else mpfr::mpreal axionMass = ma; mpfr::mpreal cohLength = Lcoh / 1000.; // Default REST units are mm; @@ -225,7 +225,7 @@ Double_t TRestAxionField::GammaTransmissionProbability(std::vector Bma << RESTendl; RESTWarning << "TRestAxionField::GammaTransmissionProbability will return 0" << RESTendl; return 0; -#elif +#else mpfr::mpreal axionMass = ma; // Default REST units are mm. We express cohLength in m. @@ -336,7 +336,7 @@ Double_t TRestAxionField::AxionAbsorptionProbability(Double_t Bmag, Double_t Lco << RESTendl; RESTWarning << "TRestAxionField::GammaTransmissionProbability will return 0" << RESTendl; return 0; -#elif +#else mpfr::mpreal axionMass = ma; mpfr::mpreal cohLength = Lcoh / 1000.; // Default REST units are mm; From 219fd8c2fe21a6ec27eb14cb5fb5a10ef42002e2 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Tue, 15 Nov 2022 08:28:13 +0100 Subject: [PATCH 51/58] Cleaning examples --- examples/likelihood_BabyIAXO.rml | 28 ----------- examples/likelihood_BabyIAXO_2.rml | 12 ----- examples/metadata.rml | 48 ------------------- examples/{ => old}/axionGenerator.rml | 0 examples/{ => old}/axionSpectrum.xml | 0 examples/{ => old}/axionlib.xml | 0 examples/{ => old}/bField_BabyIAXO.rml | 9 ++-- examples/old/likelihood_BabyIAXO.rml | 24 ++++++++++ examples/old/likelihood_BabyIAXO_2.rml | 11 +++++ examples/old/metadata.rml | 39 +++++++++++++++ examples/{ => optics}/opticsBench.rml | 0 examples/{ => optics}/opticsBenchTrueW1.rml | 48 ++++++++----------- examples/{ => optics}/opticsPlots.rml | 0 .../{ => optics}/opticsPlotsAllTransm.rml | 0 examples/test.C | 16 ------- 15 files changed, 97 insertions(+), 138 deletions(-) delete mode 100644 examples/likelihood_BabyIAXO.rml delete mode 100644 examples/likelihood_BabyIAXO_2.rml delete mode 100644 examples/metadata.rml rename examples/{ => old}/axionGenerator.rml (100%) rename examples/{ => old}/axionSpectrum.xml (100%) rename examples/{ => old}/axionlib.xml (100%) rename examples/{ => old}/bField_BabyIAXO.rml (68%) create mode 100644 examples/old/likelihood_BabyIAXO.rml create mode 100644 examples/old/likelihood_BabyIAXO_2.rml create mode 100644 examples/old/metadata.rml rename examples/{ => optics}/opticsBench.rml (100%) rename examples/{ => optics}/opticsBenchTrueW1.rml (80%) rename examples/{ => optics}/opticsPlots.rml (100%) rename examples/{ => optics}/opticsPlotsAllTransm.rml (100%) delete mode 100644 examples/test.C diff --git a/examples/likelihood_BabyIAXO.rml b/examples/likelihood_BabyIAXO.rml deleted file mode 100644 index cf7fa5c2..00000000 --- a/examples/likelihood_BabyIAXO.rml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/likelihood_BabyIAXO_2.rml b/examples/likelihood_BabyIAXO_2.rml deleted file mode 100644 index 4a71524d..00000000 --- a/examples/likelihood_BabyIAXO_2.rml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/examples/metadata.rml b/examples/metadata.rml deleted file mode 100644 index 7e3c00c8..00000000 --- a/examples/metadata.rml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/axionGenerator.rml b/examples/old/axionGenerator.rml similarity index 100% rename from examples/axionGenerator.rml rename to examples/old/axionGenerator.rml diff --git a/examples/axionSpectrum.xml b/examples/old/axionSpectrum.xml similarity index 100% rename from examples/axionSpectrum.xml rename to examples/old/axionSpectrum.xml diff --git a/examples/axionlib.xml b/examples/old/axionlib.xml similarity index 100% rename from examples/axionlib.xml rename to examples/old/axionlib.xml diff --git a/examples/bField_BabyIAXO.rml b/examples/old/bField_BabyIAXO.rml similarity index 68% rename from examples/bField_BabyIAXO.rml rename to examples/old/bField_BabyIAXO.rml index 18ebac2e..eb06bc99 100644 --- a/examples/bField_BabyIAXO.rml +++ b/examples/old/bField_BabyIAXO.rml @@ -1,6 +1,5 @@ - - - - - + + + + diff --git a/examples/old/likelihood_BabyIAXO.rml b/examples/old/likelihood_BabyIAXO.rml new file mode 100644 index 00000000..10c0b7dd --- /dev/null +++ b/examples/old/likelihood_BabyIAXO.rml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/old/likelihood_BabyIAXO_2.rml b/examples/old/likelihood_BabyIAXO_2.rml new file mode 100644 index 00000000..657e848d --- /dev/null +++ b/examples/old/likelihood_BabyIAXO_2.rml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/examples/old/metadata.rml b/examples/old/metadata.rml new file mode 100644 index 00000000..280d5c08 --- /dev/null +++ b/examples/old/metadata.rml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/opticsBench.rml b/examples/optics/opticsBench.rml similarity index 100% rename from examples/opticsBench.rml rename to examples/optics/opticsBench.rml diff --git a/examples/opticsBenchTrueW1.rml b/examples/optics/opticsBenchTrueW1.rml similarity index 80% rename from examples/opticsBenchTrueW1.rml rename to examples/optics/opticsBenchTrueW1.rml index d0969112..063b332f 100644 --- a/examples/opticsBenchTrueW1.rml +++ b/examples/optics/opticsBenchTrueW1.rml @@ -23,32 +23,25 @@ - + - - - - - + + + - - - - - + + + + + + + - - - - - - - + @@ -58,7 +51,7 @@ - + @@ -74,7 +67,6 @@ - @@ -92,20 +84,18 @@ - - - - - - - - + + + + + + diff --git a/examples/opticsPlots.rml b/examples/optics/opticsPlots.rml similarity index 100% rename from examples/opticsPlots.rml rename to examples/optics/opticsPlots.rml diff --git a/examples/opticsPlotsAllTransm.rml b/examples/optics/opticsPlotsAllTransm.rml similarity index 100% rename from examples/opticsPlotsAllTransm.rml rename to examples/optics/opticsPlotsAllTransm.rml diff --git a/examples/test.C b/examples/test.C deleted file mode 100644 index 0accd9a7..00000000 --- a/examples/test.C +++ /dev/null @@ -1,16 +0,0 @@ -void test() { - TFile f("Run_babyIAXO_1Volume_XY.root"); - // TFile f("Run_babyIAXO_1Volume_sphereIn.root"); - // TFile f("Run_babyIAXO_1Volume_sphereOut.root"); - TRestAnalysisTree* anaTree; - f.GetObject("AnalysisTree", anaTree); - // anaTree->Draw("axGen2_posY:axGen2_posZ"); - // anaTree->Scan("axGen2_posX"); - // anaTree->Scan("axGen2_probability"); - anaTree->Draw("axGen2_probability:axGen2_posY:axGen2_posX", "", "", 10000, - 0); // probability for the plan - // anaTree->Draw("axGen2_probability>0:axGen2_posY:axGen2_posX","","",10000,0); // To get the shape of the - // geometry - // anaTree->Draw("axGen2_probability:TMath::ATan(axGen2_posZ/axGen2_posY):TMath::ACos(axGen2_posX/15000)","","",10000,0); - // // probability for the sphere -} From e2e2ed929152fd181d8b6d9ed7fe987cedd27db1 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Tue, 15 Nov 2022 09:16:43 +0100 Subject: [PATCH 52/58] TRestAxionAnalysisProcess. Added R distance observable and documented --- src/TRestAxionAnalysisProcess.cxx | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/TRestAxionAnalysisProcess.cxx b/src/TRestAxionAnalysisProcess.cxx index 5fa0a787..df968b5b 100644 --- a/src/TRestAxionAnalysisProcess.cxx +++ b/src/TRestAxionAnalysisProcess.cxx @@ -21,7 +21,17 @@ *************************************************************************/ ////////////////////////////////////////////////////////////////////////// -/// TRestAxionAnalysisProcess TOBE documented +/// TRestAxionAnalysisProcess adds to the analysis tree information about +/// the particle state. +/// +/// Observable values defined by this process: +/// - **energy**: The energy in keV. +/// - **posX**: The X-position in mm. +/// - **posY**: The Y-position in mm. +/// - **posZ**: The Z-position in mm. +/// - **thetaAngle**: The angle in radians respect to the propagation axis, defined in Z. +/// - **phiAngle**: The angle moving along the XY-plane. +/// - **R**: The distance to the Z-axis in mm. /// /// The axion is generated with intensity proportional to g_ag = 1.0 x g10 ///-------------------------------------------------------------------------- @@ -114,10 +124,15 @@ TRestEvent* TRestAxionAnalysisProcess::ProcessEvent(TRestEvent* evInput) { SetObservableValue("energy", fAxionEvent->GetEnergy()); - SetObservableValue("posX", fAxionEvent->GetPosition().X()); - SetObservableValue("posY", fAxionEvent->GetPosition().Y()); + Double_t x = fAxionEvent->GetPosition().X(); + Double_t y = fAxionEvent->GetPosition().Y(); + SetObservableValue("posX", x); + SetObservableValue("posY", y); SetObservableValue("posZ", fAxionEvent->GetPosition().Z()); + Double_t r = TMath::Sqrt(x * x + y * y); + SetObservableValue("R", r); + SetObservableValue("thetaAngle", fAxionEvent->GetDirection().Theta()); SetObservableValue("phiAngle", fAxionEvent->GetDirection().Phi()); From 21a155bfd9b2dc0b67575b659d76c426f9483173 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Tue, 15 Nov 2022 10:09:45 +0100 Subject: [PATCH 53/58] TRestAxionEventProcess. Adding units in PrintMetadata --- src/TRestAxionEventProcess.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TRestAxionEventProcess.cxx b/src/TRestAxionEventProcess.cxx index b303a12a..d8f4cee2 100644 --- a/src/TRestAxionEventProcess.cxx +++ b/src/TRestAxionEventProcess.cxx @@ -117,7 +117,7 @@ void TRestAxionEventProcess::EndOfEventProcess(TRestEvent* evInput) { void TRestAxionEventProcess::BeginPrintProcess() { TRestEventProcess::BeginPrintProcess(); - RESTMetadata << "Center: (" << fCenter.X() << ", " << fCenter.Y() << ", " << fCenter.Z() << ")" + RESTMetadata << "Center: (" << fCenter.X() << ", " << fCenter.Y() << ", " << fCenter.Z() << ") mm" << RESTendl; RESTMetadata << "Yaw angle (Y-axis): " << fYaw * units("degrees") << " degrees" << RESTendl; RESTMetadata << "Pitch angle (X-axis): " << fPitch * units("degrees") << " degrees" << RESTendl; From d5578274f79b26bdb44d67fdc028eb2540424d6a Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Wed, 16 Nov 2022 12:56:16 +0100 Subject: [PATCH 54/58] TRestAxionTransportProcess. Improving output message --- src/TRestAxionTransportProcess.cxx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/TRestAxionTransportProcess.cxx b/src/TRestAxionTransportProcess.cxx index ef901b19..4894228b 100644 --- a/src/TRestAxionTransportProcess.cxx +++ b/src/TRestAxionTransportProcess.cxx @@ -125,9 +125,8 @@ TRestEvent* TRestAxionTransportProcess::ProcessEvent(TRestEvent* evInput) { TVector3 inDir = fAxionEvent->GetDirection(); if ((inPos.Z() - fZPosition) * inDir.Z() >= 0) { - RESTWarning - << "TRestAxionTransportProcess::ProcessEvent. Not appropiate particle direction to reach Z=" - << fZPosition << RESTendl; + RESTWarning << "TRestAxionTransportProcess::ProcessEvent (" << GetName() + << "). Not appropiate particle direction to reach Z=" << fZPosition << RESTendl; RESTWarning << "Axion position. Z:" << inPos.Z() << " direction Z: " << inDir.Z() << RESTendl; fAxionEvent->PrintEvent(); From d0e8f79f4c6f064c1caca85a0d5cafd118b07401 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Wed, 16 Nov 2022 13:09:30 +0100 Subject: [PATCH 55/58] Fixing rotations using GetRegion and added SkipRotation inside TRestAxionOpticsProcess --- inc/TRestAxionEventProcess.h | 5 +++++ inc/TRestAxionOpticsProcess.h | 3 --- inc/TRestAxionTrueWolterOptics.h | 4 +++- inc/TRestAxionWolterOptics.h | 4 +++- src/TRestAxionEventProcess.cxx | 2 +- src/TRestAxionOptics.cxx | 12 +++++++++--- src/TRestAxionOpticsProcess.cxx | 24 +++++++++++------------- 7 files changed, 32 insertions(+), 22 deletions(-) diff --git a/inc/TRestAxionEventProcess.h b/inc/TRestAxionEventProcess.h index df6147c3..f91e615a 100644 --- a/inc/TRestAxionEventProcess.h +++ b/inc/TRestAxionEventProcess.h @@ -38,6 +38,9 @@ class TRestAxionEventProcess : public TRestEventProcess { /// The rotation angle with respect to X-axis Double_t fPitch = 0; + /// If enabled it will skip the end rotation that recovers the original axion trajectory direction + Bool_t fSkipEndProcessRotation = false; //! + protected: /// A pointer to the specific TRestAxionEvent TRestAxionEvent* fAxionEvent; //! @@ -47,6 +50,8 @@ class TRestAxionEventProcess : public TRestEventProcess { TVector3 GetCenter() const { return fCenter; } + void SkipEndProcessRotation(Bool_t value = true) { fSkipEndProcessRotation = value; } + public: RESTValue GetInputEvent() const override { return fAxionEvent; } RESTValue GetOutputEvent() const override { return fAxionEvent; } diff --git a/inc/TRestAxionOpticsProcess.h b/inc/TRestAxionOpticsProcess.h index e79514d3..563025c4 100644 --- a/inc/TRestAxionOpticsProcess.h +++ b/inc/TRestAxionOpticsProcess.h @@ -57,9 +57,6 @@ class TRestAxionOpticsProcess : public TRestAxionEventProcess { TRestEvent* ProcessEvent(TRestEvent* evInput) override; - /// End of event process. Called directly after ProcessEvent() - void EndOfEventProcess(TRestEvent* evInput = nullptr) override; - void LoadConfig(std::string cfgFilename, std::string name = ""); /// It prints out the process parameters stored in the metadata structure diff --git a/inc/TRestAxionTrueWolterOptics.h b/inc/TRestAxionTrueWolterOptics.h index 10f55073..505d6465 100644 --- a/inc/TRestAxionTrueWolterOptics.h +++ b/inc/TRestAxionTrueWolterOptics.h @@ -128,7 +128,9 @@ class TRestAxionTrueWolterOptics : public TRestAxionOptics { } void SetMirror() override { - fCurrentMirror = fEntranceRingsMask->GetRegion(fEntrancePosition.X(), fEntrancePosition.Y()); + Double_t x = fEntrancePosition.X(); + Double_t y = fEntrancePosition.Y(); + fCurrentMirror = fEntranceRingsMask->GetRegion(x, y); } TPad* DrawMirrors() override; diff --git a/inc/TRestAxionWolterOptics.h b/inc/TRestAxionWolterOptics.h index dbf3e119..83be3ccb 100644 --- a/inc/TRestAxionWolterOptics.h +++ b/inc/TRestAxionWolterOptics.h @@ -128,7 +128,9 @@ class TRestAxionWolterOptics : public TRestAxionOptics { } void SetMirror() override { - fCurrentMirror = fEntranceRingsMask->GetRegion(fEntrancePosition.X(), fEntrancePosition.Y()); + Double_t x = fEntrancePosition.X(); + Double_t y = fEntrancePosition.Y(); + fCurrentMirror = fEntranceRingsMask->GetRegion(x, y); } TPad* DrawMirrors() override; diff --git a/src/TRestAxionEventProcess.cxx b/src/TRestAxionEventProcess.cxx index d8f4cee2..12987f9e 100644 --- a/src/TRestAxionEventProcess.cxx +++ b/src/TRestAxionEventProcess.cxx @@ -98,7 +98,7 @@ void TRestAxionEventProcess::EndOfEventProcess(TRestEvent* evInput) { << RESTendl; RESTDebug << " ---- " << RESTendl; fAxionEvent->Translate(TVector3(fCenter.X(), fCenter.Y(), fCenter.Z())); - fAxionEvent->RotateXY(fCenter, fPitch, fYaw); + if (!fSkipEndProcessRotation) fAxionEvent->RotateXY(fCenter, fPitch, fYaw); RESTDebug << "EoEP: Final Position. X: " << fAxionEvent->GetPosition().X() << " Y: " << fAxionEvent->GetPosition().Y() << " Z: " << fAxionEvent->GetPosition().Z() << RESTendl; diff --git a/src/TRestAxionOptics.cxx b/src/TRestAxionOptics.cxx index 40382aed..187560f7 100644 --- a/src/TRestAxionOptics.cxx +++ b/src/TRestAxionOptics.cxx @@ -261,7 +261,9 @@ Int_t TRestAxionOptics::TransportToEntrance(const TVector3& pos, const TVector3& fEntrancePosition = REST_Physics::MoveToPlane(pos, dir, TVector3(0, 0, 1), TVector3(0, 0, GetEntrancePositionZ())); - return fEntranceMask->GetRegion(fEntrancePosition.X(), fEntrancePosition.Y()); + Double_t x = fEntrancePosition.X(); + Double_t y = fEntrancePosition.Y(); + return fEntranceMask->GetRegion(x, y); } /////////////////////////////////////////////// @@ -290,7 +292,9 @@ Int_t TRestAxionOptics::TransportToMiddle(const TVector3& pos, const TVector3& d fMiddlePosition = REST_Physics::MoveToPlane(pos, dir, TVector3(0, 0, 1), TVector3(0, 0, 0)); fMiddleDirection = dir; - return fMiddleMask->GetRegion(fMiddlePosition.X(), fMiddlePosition.Y()); + Double_t x = fMiddlePosition.X(); + Double_t y = fMiddlePosition.Y(); + return fMiddleMask->GetRegion(x, y); } /////////////////////////////////////////////// @@ -319,7 +323,9 @@ Int_t TRestAxionOptics::TransportToExit(const TVector3& pos, const TVector3& dir REST_Physics::MoveToPlane(pos, dir, TVector3(0, 0, 1), TVector3(0, 0, GetExitPositionZ())); fExitDirection = dir; - return fExitMask->GetRegion(fExitPosition.X(), fExitPosition.Y()); + Double_t x = fExitPosition.X(); + Double_t y = fExitPosition.Y(); + return fExitMask->GetRegion(x, y); } /////////////////////////////////////////////// diff --git a/src/TRestAxionOpticsProcess.cxx b/src/TRestAxionOpticsProcess.cxx index 8e418d33..85df0c0d 100644 --- a/src/TRestAxionOpticsProcess.cxx +++ b/src/TRestAxionOpticsProcess.cxx @@ -115,6 +115,17 @@ void TRestAxionOpticsProcess::InitProcess() { } else { RESTError << "TRestAxionOptics::InitProcess. No sucess instantiating optics." << RESTendl; } + + if (fOpticalAxis) { + // The outgoing particle will be referenced to the optical axis. + // The particle will not be counter-rotated when the process ends + SkipEndProcessRotation(); + } else { + // The outgoing particle will be referenced to the universal axis + // The optics will apply a deflection angle, but the main axis will be kept aligned with the previous + // axis reference + SkipEndProcessRotation(false); + } } /////////////////////////////////////////////// @@ -148,16 +159,3 @@ TRestEvent* TRestAxionOpticsProcess::ProcessEvent(TRestEvent* evInput) { return fAxionEvent; } - -////////////////////////////////////////////////////////////////////////// -/// \brief End of event process. -/// -void TRestAxionOpticsProcess::EndOfEventProcess(TRestEvent* evInput) { - if (fOpticalAxis) { - // The outgoing particle will be referenced to the optical axis - TRestAxionEventProcess::EndOfEventProcess(evInput); - } else { - // The outgoing particle will be referenced to the universal axis - TRestEventProcess::EndOfEventProcess(evInput); - } -} From 8ba190a5ca6f61bd2c843d72a0f8d99239d8f249 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Wed, 16 Nov 2022 13:38:29 +0100 Subject: [PATCH 56/58] Adding full-ray-tracing example --- examples/full-ray-tracing/helioscope.rml | 85 +++++++++++++++++ examples/full-ray-tracing/summary.rml | 115 +++++++++++++++++++++++ 2 files changed, 200 insertions(+) create mode 100644 examples/full-ray-tracing/helioscope.rml create mode 100644 examples/full-ray-tracing/summary.rml diff --git a/examples/full-ray-tracing/helioscope.rml b/examples/full-ray-tracing/helioscope.rml new file mode 100644 index 00000000..5246b30d --- /dev/null +++ b/examples/full-ray-tracing/helioscope.rml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/full-ray-tracing/summary.rml b/examples/full-ray-tracing/summary.rml new file mode 100644 index 00000000..bb32de26 --- /dev/null +++ b/examples/full-ray-tracing/summary.rml @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 00adbd490835e36cdb26eb4ad6b7d051b85649e1 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Thu, 17 Nov 2022 08:21:51 +0100 Subject: [PATCH 57/58] Updating examples/full-ray-tracing/summary.rml --- examples/full-ray-tracing/summary.rml | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/examples/full-ray-tracing/summary.rml b/examples/full-ray-tracing/summary.rml index bb32de26..78a511eb 100644 --- a/examples/full-ray-tracing/summary.rml +++ b/examples/full-ray-tracing/summary.rml @@ -3,7 +3,7 @@ - + @@ -76,36 +76,35 @@ - + - + - + - + - - - - + + + + - - - - + + + - + From cf6d49697ef78334706fe4e169b6cad67ae1d746 Mon Sep 17 00:00:00 2001 From: Javier Galan Date: Thu, 17 Nov 2022 08:28:37 +0100 Subject: [PATCH 58/58] Updating data submodule --- data | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data b/data index 5db5a84f..c460ad98 160000 --- a/data +++ b/data @@ -1 +1 @@ -Subproject commit 5db5a84f053c0a8357ab9a50c00229f9a58f37cc +Subproject commit c460ad9853e02c7a15e21f31bf77610f959ab50c