From 18c90fef998296387c2e4c6190c17698a677d4e8 Mon Sep 17 00:00:00 2001 From: Andreas Suter Date: Sun, 22 Nov 2015 18:57:24 +0100 Subject: [PATCH 01/22] adopted to qt5 Mac OS X --- src/musredit_qt5/PAdmin.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/musredit_qt5/PAdmin.cpp b/src/musredit_qt5/PAdmin.cpp index 66f32955..d4d67ae7 100644 --- a/src/musredit_qt5/PAdmin.cpp +++ b/src/musredit_qt5/PAdmin.cpp @@ -643,7 +643,7 @@ PAdmin::PAdmin() : QObject() // XML Parser part QString fln = "musredit_startup.xml"; // check if it is a MacOSX -#ifdef Q_WS_MAC +#ifdef Q_OS_OSX fln = "./musredit_startup.xml"; if (!QFile::exists(fln)) { fln = "/Applications/musredit.app/Contents/Resources/musredit_startup.xml"; @@ -773,7 +773,7 @@ int PAdmin::savePrefs(QString pref_fln) QString str; QString fln = "musredit_startup.xml"; // check if it is a MacOSX -#ifdef Q_WS_MAC +#ifdef Q_OS_OSX fln = "./musredit_startup.xml"; if (!QFile::exists(fln)) { fln = "/Applications/musredit.app/Contents/Resources/musredit_startup.xml"; @@ -898,7 +898,7 @@ void PAdmin::saveRecentFiles() QString str; QString fln = "musredit_startup.xml"; // check if it is a MacOSX -#ifdef Q_WS_MAC +#ifdef Q_OS_OSX fln = "./musredit_startup.xml"; if (!QFile::exists(fln)) { fln = "/Applications/musredit.app/Contents/Resources/musredit_startup.xml"; From c3b5a52519442a330fcc165d88d1867eea48d71e Mon Sep 17 00:00:00 2001 From: Suter Andreas Date: Fri, 18 Dec 2015 15:34:18 +0100 Subject: [PATCH 02/22] start working on RRF. For now only work on the msr-file side is done. --- src/classes/PMsrHandler.cpp | 60 +++++++++++++++++++++- src/classes/PMusr.cpp | 100 ++++++++++++++++++++++++++++++++++++ src/include/PMusr.h | 47 +++++++++++------ 3 files changed, 188 insertions(+), 19 deletions(-) diff --git a/src/classes/PMsrHandler.cpp b/src/classes/PMsrHandler.cpp index 8ce87844..24316616 100644 --- a/src/classes/PMsrHandler.cpp +++ b/src/classes/PMsrHandler.cpp @@ -612,6 +612,9 @@ Int_t PMsrHandler::WriteMsrLogFile(const Bool_t messages) case MSR_FITTYPE_SINGLE_HISTO: fout << left << "fittype" << MSR_FITTYPE_SINGLE_HISTO << " (single histogram fit)" << endl; break; + case MSR_FITTYPE_SINGLE_HISTO_RRF: + fout << left << "fittype" << MSR_FITTYPE_SINGLE_HISTO_RRF << " (single histogram RRF fit)" << endl; + break; case MSR_FITTYPE_ASYM: fout << left << "fittype" << MSR_FITTYPE_ASYM << " (asymmetry fit)" << endl ; break; @@ -624,6 +627,9 @@ Int_t PMsrHandler::WriteMsrLogFile(const Bool_t messages) default: break; } + } else if (sstr.BeginsWith("rrf_freq", TString::kIgnoreCase) && (fGlobal.GetFitType() == MSR_FITTYPE_SINGLE_HISTO_RRF)) { + fout.width(16); + fout << left << "rrf_freq"; } else if (sstr.BeginsWith("data")) { fout.width(16); fout << left << "data"; @@ -2796,8 +2802,8 @@ Bool_t PMsrHandler::HandleGlobalEntry(PMsrLines &lines) TString str; TObjArray *tokens = 0; TObjString *ostr = 0; - Int_t ival; - Double_t dval; + Int_t ival = 0; + Double_t dval = 0.0; UInt_t addT0Counter = 0; // since this routine is called, a GLOBAL block is present @@ -2828,6 +2834,7 @@ Bool_t PMsrHandler::HandleGlobalEntry(PMsrLines &lines) if (str.IsDigit()) { Int_t fittype = str.Atoi(); if ((fittype == MSR_FITTYPE_SINGLE_HISTO) || + (fittype == MSR_FITTYPE_SINGLE_HISTO_RRF) || (fittype == MSR_FITTYPE_ASYM) || (fittype == MSR_FITTYPE_MU_MINUS) || (fittype == MSR_FITTYPE_NON_MUSR)) { @@ -2839,6 +2846,55 @@ Bool_t PMsrHandler::HandleGlobalEntry(PMsrLines &lines) error = true; } } + } else if (iter->fLine.BeginsWith("rrf_freq", TString::kIgnoreCase)) { + if (tokens->GetEntries() < 3) { + error = true; + } else { + ostr = dynamic_cast(tokens->At(1)); + str = ostr->GetString(); + if (str.IsFloat()) { + dval = str.Atof(); + if (dval <= 0.0) + error = true; + } + if (!error) { + ostr = dynamic_cast(tokens->At(2)); + str = ostr->GetString(); + global.SetRRFFreq(dval, str.Data()); + if (global.GetRRFFreq(str.Data()) == 0.0) + error = true; + } + } + } else if (iter->fLine.BeginsWith("rrf_packing", TString::kIgnoreCase)) { + if (tokens->GetEntries() < 2) { + error = true; + } else { + ostr = dynamic_cast(tokens->At(1)); + str = ostr->GetString(); + if (str.IsDigit()) { + ival = str.Atoi(); + if (ival > 0) { + global.SetRRFPacking(ival); + } else { + error = true; + } + } else { + error = true; + } + } + } else if (iter->fLine.BeginsWith("rrf_phase", TString::kIgnoreCase)) { + if (tokens->GetEntries() < 2) { + error = true; + } else { + ostr = dynamic_cast(tokens->At(1)); + str = ostr->GetString(); + if (str.IsFloat()) { + dval = str.Atof(); + global.SetRRFPhase(dval); + } else { + error = true; + } + } } else if (iter->fLine.BeginsWith("data", TString::kIgnoreCase)) { // data if (tokens->GetEntries() < 3) { error = true; diff --git a/src/classes/PMusr.cpp b/src/classes/PMusr.cpp index 478db109..f6304d18 100644 --- a/src/classes/PMusr.cpp +++ b/src/classes/PMusr.cpp @@ -34,6 +34,8 @@ using namespace std; #include using namespace boost; +#include "TMath.h" + #include "PMusr.h" //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ @@ -708,6 +710,10 @@ void PRawRunData::SetTempError(const UInt_t idx, const Double_t errTemp) PMsrGlobalBlock::PMsrGlobalBlock() { fGlobalPresent = false; + fRRFFreq = 0.0; // rotating reference frequency in units given by fRRFUnitTag. Only needed for fittype 1 + fRRFUnitTag = RRF_UNIT_MHz; // RRF unit tag. Default: MHz + fRRFPhase = 0.0; + fRRFPacking = -1; // undefined RRF packing/rebinning fFitType = -1; // undefined fit type for (UInt_t i=0; i<4; i++) { fDataRange[i] = -1; // undefined data bin range @@ -720,6 +726,100 @@ PMsrGlobalBlock::PMsrGlobalBlock() fPacking = -1; // undefined packing/rebinning } +//-------------------------------------------------------------------------- +// GetRRFFreq (public) +//-------------------------------------------------------------------------- +/** + *

get RRF frequency value in specific units. If units is unknown, 0.0 will be returned. + * + * \param unit unit string in which the units shall be given + */ +Double_t PMsrGlobalBlock::GetRRFFreq(const char *unit) +{ + Double_t freq = 0.0; + + // check that the units given make sense + TString unitStr = unit; + Int_t unitTag = RRF_UNIT_UNDEF; + if (!unitStr.CompareTo("MHz", TString::kIgnoreCase)) + unitTag = RRF_UNIT_MHz; + else if (!unitStr.CompareTo("Mc", TString::kIgnoreCase)) + unitTag = RRF_UNIT_Mcs; + else if (!unitStr.CompareTo("T", TString::kIgnoreCase)) + unitTag = RRF_UNIT_T; + else { + cerr << endl << ">> PMsrGlobalBlock::GetRRFFreq: **ERROR** found undefined RRF unit '" << unit << "'!" << endl; + return freq; + } + + // calc the conversion factor + if (unitTag == fRRFUnitTag) + freq = fRRFFreq; + else if ((unitTag == RRF_UNIT_MHz) && (fRRFUnitTag == RRF_UNIT_Mcs)) + freq = fRRFFreq/TMath::TwoPi(); + else if ((unitTag == RRF_UNIT_MHz) && (fRRFUnitTag == RRF_UNIT_T)) + freq = fRRFFreq*GAMMA_BAR_MUON; + else if ((unitTag == RRF_UNIT_Mcs) && (fRRFUnitTag == RRF_UNIT_MHz)) + freq = fRRFFreq*TMath::TwoPi(); + else if ((unitTag == RRF_UNIT_Mcs) && (fRRFUnitTag == RRF_UNIT_T)) + freq = fRRFFreq*TMath::TwoPi()*GAMMA_BAR_MUON; + else if ((unitTag == RRF_UNIT_T) && (fRRFUnitTag == RRF_UNIT_MHz)) + freq = fRRFFreq/GAMMA_BAR_MUON; + else if ((unitTag == RRF_UNIT_T) && (fRRFUnitTag == RRF_UNIT_Mcs)) + freq = fRRFFreq/(TMath::TwoPi()*GAMMA_BAR_MUON); + + return freq; +} + +//-------------------------------------------------------------------------- +// SetRRFFreq (public) +//-------------------------------------------------------------------------- +/** + *

set RRF frequency value in specific units. If units is unknown, 0.0 will be set. + * + * \param RRF frequency value + * \param unit unit string in which the units shall be given + */ +void PMsrGlobalBlock::SetRRFFreq(Double_t freq, const char *unit) +{ + // check that the units given make sense + TString unitStr = unit; + Int_t unitTag = RRF_UNIT_UNDEF; + if (!unitStr.CompareTo("MHz", TString::kIgnoreCase)) + unitTag = RRF_UNIT_MHz; + else if (!unitStr.CompareTo("Mc", TString::kIgnoreCase)) + unitTag = RRF_UNIT_Mcs; + else if (!unitStr.CompareTo("T", TString::kIgnoreCase)) + unitTag = RRF_UNIT_T; + else { + cerr << endl << ">> PMsrGlobalBlock::SetRRFFreq: **ERROR** found undefined RRF unit '" << unit << "'!"; + cerr << endl << ">> Will set RRF frequency to 0.0." << endl; + fRRFFreq = 0.0; + fRRFUnitTag = RRF_UNIT_UNDEF; + } + + fRRFFreq = freq; + fRRFUnitTag = unitTag; +} + +//-------------------------------------------------------------------------- +// SetRRFPacking (public) +//-------------------------------------------------------------------------- +/** + *

set RRF packing. + * + * \param RRF packing + */ +void PMsrGlobalBlock::SetRRFPacking(Int_t pack) +{ + if (pack <= 0) { + cerr << endl << "PMsrGlobalBlock::SetRRFPacking: **WARNING** found RRF packing <= 0. Likely doesn't make any sense." << endl; + fRRFPacking = -1; // set to undefined + } + + fRRFPacking = pack; +} + //-------------------------------------------------------------------------- // GetDataRange (public) //-------------------------------------------------------------------------- diff --git a/src/include/PMusr.h b/src/include/PMusr.h index 9074a34b..155a17e2 100644 --- a/src/include/PMusr.h +++ b/src/include/PMusr.h @@ -52,10 +52,11 @@ typedef struct { char a[7]; } __float128; // needed since cint doesn't know it #define PMUSR_MSR_FILE_WRITE_ERROR -7 #define PMUSR_DATA_FILE_READ_ERROR -8 -#define PRUN_SINGLE_HISTO 0 -#define PRUN_ASYMMETRY 2 -#define PRUN_MU_MINUS 4 -#define PRUN_NON_MUSR 8 +#define PRUN_SINGLE_HISTO 0 +#define PRUN_SINGLE_HISTO_RRF 1 +#define PRUN_ASYMMETRY 2 +#define PRUN_MU_MINUS 4 +#define PRUN_NON_MUSR 8 // muon life time in (us), see PRL99, 032001 (2007) #define PMUON_LIFETIME 2.197019 @@ -92,10 +93,11 @@ typedef struct { char a[7]; } __float128; // needed since cint doesn't know it //------------------------------------------------------------- // msr fit type tags -#define MSR_FITTYPE_SINGLE_HISTO 0 -#define MSR_FITTYPE_ASYM 2 -#define MSR_FITTYPE_MU_MINUS 4 -#define MSR_FITTYPE_NON_MUSR 8 +#define MSR_FITTYPE_SINGLE_HISTO 0 +#define MSR_FITTYPE_SINGLE_HISTO_RRF 1 +#define MSR_FITTYPE_ASYM 2 +#define MSR_FITTYPE_MU_MINUS 4 +#define MSR_FITTYPE_NON_MUSR 8 //------------------------------------------------------------- // msr plot type tags @@ -133,11 +135,12 @@ typedef struct { char a[7]; } __float128; // needed since cint doesn't know it //------------------------------------------------------------- // RRF related tags -#define RRF_UNIT_kHz 0 -#define RRF_UNIT_MHz 1 -#define RRF_UNIT_Mcs 2 -#define RRF_UNIT_G 3 -#define RRF_UNIT_T 4 +#define RRF_UNIT_UNDEF -1 +#define RRF_UNIT_kHz 0 +#define RRF_UNIT_MHz 1 +#define RRF_UNIT_Mcs 2 +#define RRF_UNIT_G 3 +#define RRF_UNIT_T 4 //------------------------------------------------------------- /** @@ -542,6 +545,9 @@ class PMsrGlobalBlock { virtual ~PMsrGlobalBlock() {} virtual Bool_t IsPresent() { return fGlobalPresent; } + virtual Double_t GetRRFFreq(const char *unit); + virtual Double_t GetRRFPhase() { return fRRFPhase; } + virtual Int_t GetRRFPacking() { return fRRFPacking; } virtual Int_t GetFitType() { return fFitType; } virtual Int_t GetDataRange(UInt_t idx); virtual UInt_t GetT0BinSize() { return fT0.size(); } @@ -555,6 +561,9 @@ class PMsrGlobalBlock { virtual Int_t GetPacking() { return fPacking; } virtual void SetGlobalPresent(Bool_t bval) { fGlobalPresent = bval; } + virtual void SetRRFFreq(Double_t freq, const char *unit); + virtual void SetRRFPhase(Double_t phase) { fRRFPhase = phase; } + virtual void SetRRFPacking(Int_t pack); virtual void SetFitType(Int_t ival) { fFitType = ival; } virtual void SetDataRange(Int_t ival, Int_t idx); virtual void SetT0Bin(Double_t dval, Int_t idx=-1); @@ -566,10 +575,14 @@ class PMsrGlobalBlock { private: Bool_t fGlobalPresent; ///< flag showing if a GLOBAL block is present at all. - Int_t fFitType; ///< fit type: 0=single histo fit, 2=asymmetry fit, 4=mu^- single histo fit, 8=non muSR fit - Int_t fDataRange[4]; ///< data bin range (fit type 0, 2, 4) - PDoubleVector fT0; ///< t0 bins (fit type 0, 2, 4). if fit type 0 -> f0, f1, f2, ...; if fit type 2, 4 -> f0, b0, f1, b1, ... - vector fAddT0; ///< addt0 bins (fit type 0, 2, 4). if fit type 0 -> f0, f1, f2, ...; if fit type 2, 4 -> f0, b0, f1, b1, ... + Double_t fRRFFreq; ///< RRF frequency given in units of (MHz, Mc, T) + Int_t fRRFUnitTag; ///< RRF unit tag + Double_t fRRFPhase; ///< RRF phase in (°) + Int_t fRRFPacking; ///< RRF packing + Int_t fFitType; ///< fit type: 0=single histo fit, 1=single histo RRF fit, 2=asymmetry fit, 4=mu^- single histo fit, 8=non muSR fit + Int_t fDataRange[4]; ///< data bin range (fit type 0, 1, 2, 4) + PDoubleVector fT0; ///< t0 bins (fit type 0, 1, 2, 4). if fit type 0 -> f0, f1, f2, ...; if fit type 2, 4 -> f0, b0, f1, b1, ... + vector fAddT0; ///< addt0 bins (fit type 0, 1, 2, 4). if fit type 0 -> f0, f1, f2, ...; if fit type 2, 4 -> f0, b0, f1, b1, ... Bool_t fFitRangeInBins; ///< flag telling if fit range is given in time or in bins Double_t fFitRange[2]; ///< fit range in (us) Int_t fFitRangeOffset[2]; ///< if fit range is given in bins it can have the form fit fgb+n0 lgb-n1. This variable holds the n0 and n1. From 99864b2b82bc2169d1be5376ff108c6b6bd7b8e4 Mon Sep 17 00:00:00 2001 From: Suter Andreas Date: Sat, 19 Dec 2015 20:32:07 +0100 Subject: [PATCH 03/22] some more self-consistency checks with RRF. --- src/classes/PMsrHandler.cpp | 138 +++++++++++++++++++++++++++++++++++- src/classes/PMusr.cpp | 37 ++++++++++ src/include/PMsrHandler.h | 1 + src/include/PMusr.h | 2 + 4 files changed, 177 insertions(+), 1 deletion(-) diff --git a/src/classes/PMsrHandler.cpp b/src/classes/PMsrHandler.cpp index 24316616..284b950b 100644 --- a/src/classes/PMsrHandler.cpp +++ b/src/classes/PMsrHandler.cpp @@ -311,6 +311,11 @@ Int_t PMsrHandler::ReadMsrFile() if (!CheckAddRunParameters()) result = PMUSR_MSR_SYNTAX_ERROR; + // check that if RRF settings are present, the RUN block settings do correspond + if (result == PMUSR_SUCCESS) + if (!CheckRRFSettings()) + result = PMUSR_MSR_SYNTAX_ERROR; + if (result == PMUSR_SUCCESS) { CheckMaxLikelihood(); // check if the user wants to use max likelihood with asymmetry/non-muSR fit (which is not implemented) CheckLegacyLifetimecorrection(); // check if lifetimecorrection is found in RUN blocks, if yes transfer it to PLOT blocks @@ -629,7 +634,23 @@ Int_t PMsrHandler::WriteMsrLogFile(const Bool_t messages) } } else if (sstr.BeginsWith("rrf_freq", TString::kIgnoreCase) && (fGlobal.GetFitType() == MSR_FITTYPE_SINGLE_HISTO_RRF)) { fout.width(16); - fout << left << "rrf_freq"; + fout << left << "rrf_freq "; + fout.width(8); + fout << left << fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data()); + fout << " " << fGlobal.GetRRFUnit(); + fout << endl; + } else if (sstr.BeginsWith("rrf_phase", TString::kIgnoreCase) && (fGlobal.GetFitType() == MSR_FITTYPE_SINGLE_HISTO_RRF)) { + fout.width(16); + fout << "rrf_phase "; + fout.width(8); + fout << left << fGlobal.GetRRFPhase(); + fout << endl; + } else if (sstr.BeginsWith("rrf_packing", TString::kIgnoreCase) && (fGlobal.GetFitType() == MSR_FITTYPE_SINGLE_HISTO_RRF)) { + fout.width(16); + fout << "rrf_packing "; + fout.width(8); + fout << left << fGlobal.GetRRFPacking(); + fout << endl; } else if (sstr.BeginsWith("data")) { fout.width(16); fout << left << "data"; @@ -1624,6 +1645,30 @@ Int_t PMsrHandler::WriteMsrFile(const Char_t *filename, map *co } } + // RRF related stuff + if ((fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data()) > 0.0) && (fGlobal.GetFitType() == MSR_FITTYPE_SINGLE_HISTO_RRF)) { + fout.width(16); + fout << left << "rrf_freq "; + fout.width(8); + fout << left << fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data()); + fout << " " << fGlobal.GetRRFUnit(); + fout << endl; + } + if ((fGlobal.GetRRFPhase() != 0.0) && (fGlobal.GetFitType() == MSR_FITTYPE_SINGLE_HISTO_RRF)) { + fout.width(16); + fout << "rrf_phase "; + fout.width(8); + fout << left << fGlobal.GetRRFPhase(); + fout << endl; + } + if ((fGlobal.GetRRFPacking() != -1) && (fGlobal.GetFitType() == MSR_FITTYPE_SINGLE_HISTO_RRF)) { + fout.width(16); + fout << "rrf_packing "; + fout.width(8); + fout << left << fGlobal.GetRRFPacking(); + fout << endl; + } + // data range if ((fGlobal.GetDataRange(0) != -1) || (fGlobal.GetDataRange(1) != -1) || (fGlobal.GetDataRange(2) != -1) || (fGlobal.GetDataRange(3) != -1)) { fout.width(16); @@ -3169,6 +3214,7 @@ Bool_t PMsrHandler::HandleRunEntry(PMsrLines &lines) if (str.IsDigit()) { Int_t fittype = str.Atoi(); if ((fittype == MSR_FITTYPE_SINGLE_HISTO) || + (fittype == MSR_FITTYPE_SINGLE_HISTO_RRF) || (fittype == MSR_FITTYPE_ASYM) || (fittype == MSR_FITTYPE_MU_MINUS) || (fittype == MSR_FITTYPE_NON_MUSR)) { @@ -5249,6 +5295,9 @@ Bool_t PMsrHandler::CheckRunBlockIntegrity() fRuns[i].SetPacking(1); } break; + case PRUN_SINGLE_HISTO_RRF: + // STILL MISSING + break; case PRUN_ASYMMETRY: // check alpha if ((fRuns[i].GetAlphaParamNo() == -1) && !fFourierOnly) { @@ -5687,6 +5736,93 @@ void PMsrHandler::CheckMaxLikelihood() } } +//-------------------------------------------------------------------------- +// CheckRRFSettings (public) +//-------------------------------------------------------------------------- +/** + *

Make sure that if RRF settings are found in the GLOBAL section, the fit types + * in the RUN blocks correspond. + */ +Bool_t PMsrHandler::CheckRRFSettings() +{ + Bool_t result = true; + Int_t fittype = fGlobal.GetFitType(); + + // first set of tests: if RRF parameters are set, check if RRF fit is chosen. + if (fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data()) != 0.0) { + if (fittype != -1) { // check if GLOBAL fittype is set + if (fittype != MSR_FITTYPE_SINGLE_HISTO_RRF) { + cerr << endl << ">> PMsrHandler::CheckRRFSettings: **ERROR** found GLOBAL fittype " << fittype << " and"; + cerr << endl << ">> RRF settings in the GLOBAL section. This is NOT compatible. Fix it first."; + result = false; + } + } else { // GLOBAL fittype is NOT set + for (UInt_t i=0; i> PMsrHandler::CheckRRFSettings: **ERROR** found RUN with fittype " << fittype << " and"; + cerr << endl << ">> RRF settings in the GLOBAL section. This is NOT compatible. Fix it first."; + result = false; + break; + } + } + } + } else { + if (fGlobal.GetRRFPacking() != -1) { + cerr << endl << ">> PMsrHandler::CheckRRFSettings: **WARNING** found in the GLOBAL section rrf_packing, without"; + cerr << endl << ">> rrf_freq. Doesn't make any sense. Will drop rrf_packing"; + cerr << endl << endl; + fGlobal.SetRRFPacking(-1); + } + if (fGlobal.GetRRFPhase() != 0.0) { + cerr << endl << ">> PMsrHandler::CheckRRFSettings: **WARNING** found in the GLOBAL section rrf_phase, without"; + cerr << endl << ">> rrf_freq. Doesn't make any sense. Will drop rrf_phase"; + cerr << endl << endl; + fGlobal.SetRRFPhase(0.0); + } + } + + // second set of tests: if RRF fit is chosen, do I find the necessary RRF parameters? + fittype = fGlobal.GetFitType(); + if (fittype == MSR_FITTYPE_SINGLE_HISTO_RRF) { // make sure RRF freq and RRF packing are set + if (fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data()) == 0.0) { + cerr << endl << ">> PMsrHandler::CheckRRFSettings: **ERROR** RRF fit chosen, but"; + cerr << endl << ">> no RRF frequency found in the GLOBAL section! Fix it."; + return false; + } + if (fGlobal.GetRRFPacking() == -1) { + cerr << endl << ">> PMsrHandler::CheckRRFSettings: **ERROR** RRF fit chosen, but"; + cerr << endl << ">> no RRF packing found in the GLOBAL section! Fix it."; + return false; + } + } else { + UInt_t rrfFitCounter = 0; + for (UInt_t i=0; i> PMsrHandler::CheckRRFSettings: **ERROR** #Runs (" << fRuns.size() << ") != # RRF fits found (" << rrfFitCounter << ")"; + cerr << endl << ">> This is currently not supported."; + return false; + } + if (fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data()) == 0.0) { + cerr << endl << ">> PMsrHandler::CheckRRFSettings: **ERROR** RRF fit chosen, but"; + cerr << endl << ">> no RRF frequency found in the GLOBAL section! Fix it."; + return false; + } + if (fGlobal.GetRRFPacking() == -1) { + cerr << endl << ">> PMsrHandler::CheckRRFSettings: **ERROR** RRF fit chosen, but"; + cerr << endl << ">> no RRF packing found in the GLOBAL section! Fix it."; + return false; + } + } + + return result; +} + //-------------------------------------------------------------------------- // GetGroupingString (public) //-------------------------------------------------------------------------- diff --git a/src/classes/PMusr.cpp b/src/classes/PMusr.cpp index f6304d18..f77015b1 100644 --- a/src/classes/PMusr.cpp +++ b/src/classes/PMusr.cpp @@ -802,6 +802,43 @@ void PMsrGlobalBlock::SetRRFFreq(Double_t freq, const char *unit) fRRFUnitTag = unitTag; } +//-------------------------------------------------------------------------- +// GetRRFUnit (public) +//-------------------------------------------------------------------------- +/** + *

returns RRF frequency unit. + */ +TString PMsrGlobalBlock::GetRRFUnit() +{ + TString unit; + + switch (fRRFUnitTag) { + case RRF_UNIT_UNDEF: + unit = TString("??"); + break; + case RRF_UNIT_kHz: + unit = TString("kHz"); + break; + case RRF_UNIT_MHz: + unit = TString("MHz"); + break; + case RRF_UNIT_Mcs: + unit = TString("Mc"); + break; + case RRF_UNIT_G: + unit = TString("G"); + break; + case RRF_UNIT_T: + unit = TString("T"); + break; + default: + unit = TString("??"); + break; + } + + return unit; +} + //-------------------------------------------------------------------------- // SetRRFPacking (public) //-------------------------------------------------------------------------- diff --git a/src/include/PMsrHandler.h b/src/include/PMsrHandler.h index fbc6b98b..3df7034d 100644 --- a/src/include/PMsrHandler.h +++ b/src/include/PMsrHandler.h @@ -102,6 +102,7 @@ class PMsrHandler virtual Bool_t CheckFuncs(); virtual Bool_t CheckHistoGrouping(); virtual Bool_t CheckAddRunParameters(); + virtual Bool_t CheckRRFSettings(); virtual void CheckMaxLikelihood(); virtual void GetGroupingString(Int_t runNo, TString detector, TString &groupingStr); diff --git a/src/include/PMusr.h b/src/include/PMusr.h index 155a17e2..3374558f 100644 --- a/src/include/PMusr.h +++ b/src/include/PMusr.h @@ -546,6 +546,8 @@ class PMsrGlobalBlock { virtual Bool_t IsPresent() { return fGlobalPresent; } virtual Double_t GetRRFFreq(const char *unit); + virtual TString GetRRFUnit(); + virtual Int_t GetRRFUnitTag() { return fRRFUnitTag; } virtual Double_t GetRRFPhase() { return fRRFPhase; } virtual Int_t GetRRFPacking() { return fRRFPacking; } virtual Int_t GetFitType() { return fFitType; } From 6ee5d76b35614ba144123d7a992054d194762459 Mon Sep 17 00:00:00 2001 From: Suter Andreas Date: Mon, 21 Dec 2015 16:54:12 +0100 Subject: [PATCH 04/22] first implementation of the single histo RRF fit (no plotting yet). Seems to work but the error estimate of the RRF asymmetry seems to be too large. Needs to be checked. --- src/classes/Makefile.am | 2 + src/classes/PFitterFcn.cpp | 2 + src/classes/PMsrHandler.cpp | 9 +- src/classes/PMusr.cpp | 12 +- src/classes/PRunListCollection.cpp | 119 ++- src/classes/PRunSingleHistoRRF.cpp | 1483 ++++++++++++++++++++++++++++ src/include/PRunListCollection.h | 16 +- src/include/PRunSingleHistoRRF.h | 79 ++ src/musrfit.cpp | 30 +- 9 files changed, 1738 insertions(+), 14 deletions(-) create mode 100644 src/classes/PRunSingleHistoRRF.cpp create mode 100644 src/include/PRunSingleHistoRRF.h diff --git a/src/classes/Makefile.am b/src/classes/Makefile.am index f6c13d5d..7e70efb4 100644 --- a/src/classes/Makefile.am +++ b/src/classes/Makefile.am @@ -21,6 +21,7 @@ h_sources = \ ../include/PRunNonMusr.h \ ../include/PRunMuMinus.h \ ../include/PRunSingleHisto.h \ + ../include/PRunSingleHistoRRF.h \ ../include/PStartupHandler.h \ ../include/PTheory.h @@ -65,6 +66,7 @@ cpp_sources = \ PRunNonMusr.cpp \ PRunMuMinus.cpp \ PRunSingleHisto.cpp \ + PRunSingleHistoRRF.cpp \ PStartupHandler.cpp \ PTheory.cpp diff --git a/src/classes/PFitterFcn.cpp b/src/classes/PFitterFcn.cpp index e67ac505..ccae307c 100644 --- a/src/classes/PFitterFcn.cpp +++ b/src/classes/PFitterFcn.cpp @@ -77,11 +77,13 @@ Double_t PFitterFcn::operator()(const std::vector& par) const if (fUseChi2) { // chi square value += fRunListCollection->GetSingleHistoChisq(par); + value += fRunListCollection->GetSingleHistoRRFChisq(par); value += fRunListCollection->GetAsymmetryChisq(par); value += fRunListCollection->GetMuMinusChisq(par); value += fRunListCollection->GetNonMusrChisq(par); } else { // max likelihood value += fRunListCollection->GetSingleHistoMaximumLikelihood(par); + value += fRunListCollection->GetSingleHistoRRFMaximumLikelihood(par); value += fRunListCollection->GetAsymmetryMaximumLikelihood(par); value += fRunListCollection->GetMuMinusMaximumLikelihood(par); value += fRunListCollection->GetNonMusrMaximumLikelihood(par); diff --git a/src/classes/PMsrHandler.cpp b/src/classes/PMsrHandler.cpp index 284b950b..3a3148d0 100644 --- a/src/classes/PMsrHandler.cpp +++ b/src/classes/PMsrHandler.cpp @@ -636,7 +636,13 @@ Int_t PMsrHandler::WriteMsrLogFile(const Bool_t messages) fout.width(16); fout << left << "rrf_freq "; fout.width(8); - fout << left << fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data()); + +cout << "debug> PMsrHandler::WriteMsrLogFile(): fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data())=" << fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data()) << endl; +neededPrec = LastSignificant(fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data()),10); +cout << "debug> PMsrHandler::WriteMsrLogFile(): neededPrec=" << neededPrec << endl; +fout.precision(neededPrec); + + fout << left << fixed << fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data()); fout << " " << fGlobal.GetRRFUnit(); fout << endl; } else if (sstr.BeginsWith("rrf_phase", TString::kIgnoreCase) && (fGlobal.GetFitType() == MSR_FITTYPE_SINGLE_HISTO_RRF)) { @@ -1650,6 +1656,7 @@ Int_t PMsrHandler::WriteMsrFile(const Char_t *filename, map *co fout.width(16); fout << left << "rrf_freq "; fout.width(8); +cout << "debug> PMsrHandler::WriteMsrFile(): fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data())=" << fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data()) << endl; fout << left << fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data()); fout << " " << fGlobal.GetRRFUnit(); fout << endl; diff --git a/src/classes/PMusr.cpp b/src/classes/PMusr.cpp index f77015b1..e2491b1d 100644 --- a/src/classes/PMusr.cpp +++ b/src/classes/PMusr.cpp @@ -752,21 +752,25 @@ Double_t PMsrGlobalBlock::GetRRFFreq(const char *unit) return freq; } +cout << endl << "debug> PMsrGlobalBlock::GetRRFFreq(" << unit << "): unitTag=" << unitTag << ", fRRFFreq=" << fRRFFreq; + // calc the conversion factor if (unitTag == fRRFUnitTag) freq = fRRFFreq; else if ((unitTag == RRF_UNIT_MHz) && (fRRFUnitTag == RRF_UNIT_Mcs)) freq = fRRFFreq/TMath::TwoPi(); else if ((unitTag == RRF_UNIT_MHz) && (fRRFUnitTag == RRF_UNIT_T)) - freq = fRRFFreq*GAMMA_BAR_MUON; + freq = fRRFFreq*1e4*GAMMA_BAR_MUON; // 1e4 need for T -> G since GAMMA_BAR_MUON is given in MHz/G else if ((unitTag == RRF_UNIT_Mcs) && (fRRFUnitTag == RRF_UNIT_MHz)) freq = fRRFFreq*TMath::TwoPi(); else if ((unitTag == RRF_UNIT_Mcs) && (fRRFUnitTag == RRF_UNIT_T)) - freq = fRRFFreq*TMath::TwoPi()*GAMMA_BAR_MUON; + freq = fRRFFreq*1e4*TMath::TwoPi()*GAMMA_BAR_MUON; // 1e4 need for T -> G since GAMMA_BAR_MUON is given in MHz/G else if ((unitTag == RRF_UNIT_T) && (fRRFUnitTag == RRF_UNIT_MHz)) - freq = fRRFFreq/GAMMA_BAR_MUON; + freq = fRRFFreq/GAMMA_BAR_MUON*1e-4; // 1e-4 need for G -> T since GAMMA_BAR_MUON is given in MHz/G else if ((unitTag == RRF_UNIT_T) && (fRRFUnitTag == RRF_UNIT_Mcs)) - freq = fRRFFreq/(TMath::TwoPi()*GAMMA_BAR_MUON); + freq = fRRFFreq/(TMath::TwoPi()*GAMMA_BAR_MUON)*1e-4; // 1e-4 need for G -> T since GAMMA_BAR_MUON is given in MHz/G + +cout << endl << "debug> PMsrGlobalBlock::GetRRFFreq(" << unit << "): freq=" << freq << endl; return freq; } diff --git a/src/classes/PRunListCollection.cpp b/src/classes/PRunListCollection.cpp index 4082e91e..bc58df51 100644 --- a/src/classes/PRunListCollection.cpp +++ b/src/classes/PRunListCollection.cpp @@ -58,6 +58,12 @@ PRunListCollection::~PRunListCollection() } fRunSingleHistoList.clear(); + for (UInt_t i=0; iCleanUp(); + fRunSingleHistoRRFList[i]->~PRunSingleHistoRRF(); + } + fRunSingleHistoRRFList.clear(); + for (UInt_t i=0; iCleanUp(); fRunAsymmetryList[i]->~PRunAsymmetry(); @@ -100,12 +106,20 @@ Bool_t PRunListCollection::Add(Int_t runNo, EPMusrHandleTag tag) fitType = (*fMsrInfo->GetMsrGlobal()).GetFitType(); } +cout << "debug> PRunListCollection::Add(): (runNo: " << runNo << "), fitType = " << fitType << endl; + switch (fitType) { case PRUN_SINGLE_HISTO: fRunSingleHistoList.push_back(new PRunSingleHisto(fMsrInfo, fData, runNo, tag)); if (!fRunSingleHistoList[fRunSingleHistoList.size()-1]->IsValid()) success = false; break; + case PRUN_SINGLE_HISTO_RRF: +cout << "debug> PRunListCollection::Add(): add RRF single histo run to PRunListCollection (runNo: " << runNo << ")" << endl; + fRunSingleHistoRRFList.push_back(new PRunSingleHistoRRF(fMsrInfo, fData, runNo, tag)); + if (!fRunSingleHistoRRFList[fRunSingleHistoRRFList.size()-1]->IsValid()) + success = false; + break; case PRUN_ASYMMETRY: fRunAsymmetryList.push_back(new PRunAsymmetry(fMsrInfo, fData, runNo, tag)); if (!fRunAsymmetryList[fRunAsymmetryList.size()-1]->IsValid()) @@ -147,6 +161,8 @@ void PRunListCollection::SetFitRange(const TString fitRange) { for (UInt_t i=0; iSetFitRangeBin(fitRange); + for (UInt_t i=0; iSetFitRangeBin(fitRange); for (UInt_t i=0; iSetFitRangeBin(fitRange); for (UInt_t i=0; iSetFitRange(fitRange); + for (UInt_t i=0; iSetFitRange(fitRange); for (UInt_t i=0; iSetFitRange(fitRange); for (UInt_t i=0; i& pa return chisq; } +//-------------------------------------------------------------------------- +// GetSingleHistoRRFChisq (public) +//-------------------------------------------------------------------------- +/** + *

Calculates chi-square of all single histogram RRF runs of a msr-file. + * + * return: + * - chi-square of all single histogram RRF runs of the msr-file + * + * \param par fit parameter vector + */ +Double_t PRunListCollection::GetSingleHistoRRFChisq(const std::vector& par) const +{ + Double_t chisq = 0.0; + + for (UInt_t i=0; iCalcChiSquare(par); + + return chisq; +} + //-------------------------------------------------------------------------- // GetAsymmetryChisq (public) //-------------------------------------------------------------------------- @@ -299,6 +338,9 @@ Double_t PRunListCollection::GetSingleHistoChisqExpected(const std::vectorCalcChiSquareExpected(par); break; + case PRUN_SINGLE_HISTO_RRF: + expectedChisq = fRunSingleHistoRRFList[subIdx]->CalcChiSquareExpected(par); + break; case PRUN_ASYMMETRY: expectedChisq = fRunAsymmetryList[subIdx]->CalcChiSquareExpected(par); break; @@ -353,6 +395,9 @@ Double_t PRunListCollection::GetSingleRunChisq(const std::vector& par, case PRUN_SINGLE_HISTO: chisq = fRunSingleHistoList[subIdx]->CalcChiSquare(par); break; + case PRUN_SINGLE_HISTO_RRF: + chisq = fRunSingleHistoRRFList[subIdx]->CalcChiSquare(par); + break; case PRUN_ASYMMETRY: chisq = fRunAsymmetryList[subIdx]->CalcChiSquare(par); break; @@ -376,7 +421,7 @@ Double_t PRunListCollection::GetSingleRunChisq(const std::vector& par, *

Calculates log max-likelihood of all single histogram runs of a msr-file. * * return: - * - chi-square of all single histogram runs of the msr-file + * - log max-likelihood of all single histogram runs of the msr-file * * \param par fit parameter vector */ @@ -390,6 +435,27 @@ Double_t PRunListCollection::GetSingleHistoMaximumLikelihood(const std::vectorCalculates log max-likelihood of all single histogram RRF runs of a msr-file. + * + * return: + * - log max-likelihood of all single histogram runs of the msr-file + * + * \param par fit parameter vector + */ +Double_t PRunListCollection::GetSingleHistoRRFMaximumLikelihood(const std::vector& par) const +{ + Double_t mlh = 0.0; + + for (UInt_t i=0; iCalcMaxLikelihood(par); + + return mlh; +} + //-------------------------------------------------------------------------- // GetAsymmetryMaximumLikelihood (public) //-------------------------------------------------------------------------- @@ -419,7 +485,7 @@ Double_t PRunListCollection::GetAsymmetryMaximumLikelihood(const std::vectorCalculates log max-likelihood of all mu minus runs of a msr-file. * * return: - * - chi-square of all mu minus runs of the msr-file + * - log max-likelihood of all mu minus runs of the msr-file * * \param par fit parameter vector */ @@ -493,6 +559,9 @@ UInt_t PRunListCollection::GetNoOfBinsFitted(const UInt_t idx) const case PRUN_SINGLE_HISTO: result = fRunSingleHistoList[subIdx]->GetNoOfFitBins(); break; + case PRUN_SINGLE_HISTO_RRF: + result = fRunSingleHistoRRFList[subIdx]->GetNoOfFitBins(); + break; case PRUN_ASYMMETRY: result = fRunAsymmetryList[subIdx]->GetNoOfFitBins(); break; @@ -526,6 +595,9 @@ UInt_t PRunListCollection::GetTotalNoOfBinsFitted() const for (UInt_t i=0; iGetNoOfFitBins(); + for (UInt_t i=0; iGetNoOfFitBins(); + for (UInt_t i=0; iGetNoOfFitBins(); @@ -581,6 +653,49 @@ PRunData* PRunListCollection::GetSingleHisto(UInt_t index, EDataSwitch tag) return data; } +//-------------------------------------------------------------------------- +// GetSingleHistoRRF (public) +//-------------------------------------------------------------------------- +/** + *

Get a processed single histogram RRF data set. + * + * return: + * - pointer to the run data set (processed data) if data set is found + * - null pointer otherwise + * + * \param index msr-file run index + * \param tag kIndex -> data at index, kRunNo -> data of given run no + */ +PRunData* PRunListCollection::GetSingleHistoRRF(UInt_t index, EDataSwitch tag) +{ + PRunData *data = 0; + + switch (tag) { + case kIndex: + if ((index < 0) || (index >= fRunSingleHistoRRFList.size())) { + cerr << endl << "PRunListCollection::GetSingleHistoRRF: **ERROR** index = " << index << " out of bounds"; + cerr << endl; + return 0; + } + + fRunSingleHistoRRFList[index]->CalcTheory(); + data = fRunSingleHistoRRFList[index]->GetData(); + break; + case kRunNo: + for (UInt_t i=0; iGetRunNo() == index) { + data = fRunSingleHistoRRFList[i]->GetData(); + break; + } + } + break; + default: // error + break; + } + + return data; +} + //-------------------------------------------------------------------------- // GetAsymmetry (public) //-------------------------------------------------------------------------- diff --git a/src/classes/PRunSingleHistoRRF.cpp b/src/classes/PRunSingleHistoRRF.cpp new file mode 100644 index 00000000..856935af --- /dev/null +++ b/src/classes/PRunSingleHistoRRF.cpp @@ -0,0 +1,1483 @@ +/*************************************************************************** + + PRunSingleHistoRRF.cpp + + Author: Andreas Suter + e-mail: andreas.suter@psi.ch + +***************************************************************************/ + +/*************************************************************************** + * Copyright (C) 2007-2016 by Andreas Suter * + * andreas.suter@psi.ch * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifdef HAVE_GOMP +#include +#endif + +#include +#include +#include +using namespace std; + +#include +#include +#include + +#include "PMusr.h" +#include "PRunSingleHistoRRF.h" + +//-------------------------------------------------------------------------- +// Constructor +//-------------------------------------------------------------------------- +/** + *

Constructor + */ +PRunSingleHistoRRF::PRunSingleHistoRRF() : PRunBase() +{ + fNoOfFitBins = 0; + fBackground = 0; + fPacking = -1; + + // the 2 following variables are need in case fit range is given in bins, and since + // the fit range can be changed in the command block, these variables need to be accessible + fGoodBins[0] = -1; + fGoodBins[1] = -1; +} + +//-------------------------------------------------------------------------- +// Constructor +//-------------------------------------------------------------------------- +/** + *

Constructor + * + * \param msrInfo pointer to the msr-file handler + * \param rawData raw run data + * \param runNo number of the run within the msr-file + * \param tag tag showing what shall be done: kFit == fitting, kView == viewing + */ +PRunSingleHistoRRF::PRunSingleHistoRRF(PMsrHandler *msrInfo, PRunDataHandler *rawData, UInt_t runNo, EPMusrHandleTag tag) : PRunBase(msrInfo, rawData, runNo, tag) +{ + fNoOfFitBins = 0; + + fPacking = fRunInfo->GetPacking(); + if (fPacking == -1) { // i.e. packing is NOT given in the RUN-block, it must be given in the GLOBAL-block + fPacking = fMsrInfo->GetMsrGlobal()->GetPacking(); + } + if (fPacking == -1) { // this should NOT happen, somethin is severely wrong + cerr << endl << ">> PRunSingleHistoRRF::PRunSingleHistoRRF(): **SEVERE ERROR**: Couldn't find any packing information!"; + cerr << endl << ">> This is very bad :-(, will quit ..."; + cerr << endl; + fValid = false; + return; + } + + // the 2 following variables are need in case fit range is given in bins, and since + // the fit range can be changed in the command block, these variables need to be accessible + fGoodBins[0] = -1; + fGoodBins[1] = -1; + + if (!PrepareData()) { + cerr << endl << ">> PRunSingleHistoRRF::PRunSingleHistoRRF(): **SEVERE ERROR**: Couldn't prepare data for fitting!"; + cerr << endl << ">> This is very bad :-(, will quit ..."; + cerr << endl; + fValid = false; + } +} + +//-------------------------------------------------------------------------- +// Destructor +//-------------------------------------------------------------------------- +/** + *

Destructor + */ +PRunSingleHistoRRF::~PRunSingleHistoRRF() +{ + fForward.clear(); +} + +//-------------------------------------------------------------------------- +// CalcChiSquare (public) +//-------------------------------------------------------------------------- +/** + *

Calculate chi-square. + * + * return: + * - chisq value + * + * \param par parameter vector iterated by minuit2 + */ +Double_t PRunSingleHistoRRF::CalcChiSquare(const std::vector& par) +{ + Double_t chisq = 0.0; + Double_t diff = 0.0; + + // calculate functions + for (Int_t i=0; iGetNoOfFuncs(); i++) { + Int_t funcNo = fMsrInfo->GetFuncNo(i); + fFuncValues[i] = fMsrInfo->EvalFunc(funcNo, *fRunInfo->GetMap(), par); + } + + // calculate chi square + Double_t time(1.0); + Int_t i, N(static_cast(fData.GetValue()->size())); + + // In order not to have an IF in the next loop, determine the start and end bins for the fit range now + Int_t startTimeBin = static_cast(ceil((fFitStartTime - fData.GetDataTimeStart())/fData.GetDataTimeStep())); + if (startTimeBin < 0) + startTimeBin = 0; + Int_t endTimeBin = static_cast(floor((fFitEndTime - fData.GetDataTimeStart())/fData.GetDataTimeStep())) + 1; + if (endTimeBin > N) + endTimeBin = N; + + // Calculate the theory function once to ensure one function evaluation for the current set of parameters. + // This is needed for the LF and user functions where some non-thread-save calculations only need to be calculated once + // for a given set of parameters---which should be done outside of the parallelized loop. + // For all other functions it means a tiny and acceptable overhead. + time = fTheory->Func(time, par, fFuncValues); + + #ifdef HAVE_GOMP + Int_t chunk = (endTimeBin - startTimeBin)/omp_get_num_procs(); + if (chunk < 10) + chunk = 10; + #pragma omp parallel for default(shared) private(i,time,diff) schedule(dynamic,chunk) reduction(+:chisq) + #endif + for (i=startTimeBin; iat(i) - fTheory->Func(time, par, fFuncValues); + chisq += diff*diff / (fData.GetError()->at(i)*fData.GetError()->at(i)); + } + + return chisq; +} + +//-------------------------------------------------------------------------- +// CalcChiSquareExpected (public) +//-------------------------------------------------------------------------- +/** + *

Calculate expected chi-square. + * + * return: + * - chisq value + * + * \param par parameter vector iterated by minuit2 + */ +Double_t PRunSingleHistoRRF::CalcChiSquareExpected(const std::vector& par) +{ + Double_t chisq = 0.0; + Double_t diff = 0.0; + Double_t theo = 0.0; + + // calculate functions + for (Int_t i=0; iGetNoOfFuncs(); i++) { + Int_t funcNo = fMsrInfo->GetFuncNo(i); + fFuncValues[i] = fMsrInfo->EvalFunc(funcNo, *fRunInfo->GetMap(), par); + } + + // calculate chi square + Double_t time(1.0); + Int_t i, N(static_cast(fData.GetValue()->size())); + + // In order not to have an IF in the next loop, determine the start and end bins for the fit range now + Int_t startTimeBin = static_cast(ceil((fFitStartTime - fData.GetDataTimeStart())/fData.GetDataTimeStep())); + if (startTimeBin < 0) + startTimeBin = 0; + Int_t endTimeBin = static_cast(floor((fFitEndTime - fData.GetDataTimeStart())/fData.GetDataTimeStep())) + 1; + if (endTimeBin > N) + endTimeBin = N; + + // Calculate the theory function once to ensure one function evaluation for the current set of parameters. + // This is needed for the LF and user functions where some non-thread-save calculations only need to be calculated once + // for a given set of parameters---which should be done outside of the parallelized loop. + // For all other functions it means a tiny and acceptable overhead. + time = fTheory->Func(time, par, fFuncValues); + + #ifdef HAVE_GOMP + Int_t chunk = (endTimeBin - startTimeBin)/omp_get_num_procs(); + if (chunk < 10) + chunk = 10; + #pragma omp parallel for default(shared) private(i,time,diff) schedule(dynamic,chunk) reduction(+:chisq) + #endif + for (i=startTimeBin; i < endTimeBin; ++i) { + time = fData.GetDataTimeStart() + (Double_t)i*fData.GetDataTimeStep(); + theo = fTheory->Func(time, par, fFuncValues); + diff = fData.GetValue()->at(i) - theo; + chisq += diff*diff / theo; + } + + return chisq; +} + +//-------------------------------------------------------------------------- +// CalcMaxLikelihood (public) +//-------------------------------------------------------------------------- +/** + *

Calculate log maximum-likelihood. See http://pdg.lbl.gov/index.html + * + * return: + * - log maximum-likelihood value + * + * \param par parameter vector iterated by minuit2 + */ +Double_t PRunSingleHistoRRF::CalcMaxLikelihood(const std::vector& par) +{ + // not yet implemented + + return 0.0; +} + +//-------------------------------------------------------------------------- +// CalcTheory (public) +//-------------------------------------------------------------------------- +/** + *

Calculate theory for a given set of fit-parameters. + */ +void PRunSingleHistoRRF::CalcTheory() +{ + // feed the parameter vector + std::vector par; + PMsrParamList *paramList = fMsrInfo->GetMsrParamList(); + for (UInt_t i=0; isize(); i++) + par.push_back((*paramList)[i].fValue); + + // calculate functions + for (Int_t i=0; iGetNoOfFuncs(); i++) { + fFuncValues[i] = fMsrInfo->EvalFunc(fMsrInfo->GetFuncNo(i), *fRunInfo->GetMap(), par); + } + + // calculate theory + UInt_t size = fData.GetValue()->size(); + Double_t start = fData.GetDataTimeStart(); + Double_t resolution = fData.GetDataTimeStep(); + Double_t time; + for (UInt_t i=0; iFunc(time, par, fFuncValues)); + } + + // clean up + par.clear(); +} + +//-------------------------------------------------------------------------- +// GetNoOfFitBins (public) +//-------------------------------------------------------------------------- +/** + *

Calculate the number of fitted bins for the current fit range. + * + * return: number of fitted bins. + */ +UInt_t PRunSingleHistoRRF::GetNoOfFitBins() +{ + CalcNoOfFitBins(); + + return fNoOfFitBins; +} + +//-------------------------------------------------------------------------- +// SetFitRangeBin (public) +//-------------------------------------------------------------------------- +/** + *

Allows to change the fit range on the fly. Used in the COMMAND block. + * The syntax of the string is: FIT_RANGE fgb[+n00] lgb[-n01] [fgb[+n10] lgb[-n11] ... fgb[+nN0] lgb[-nN1]]. + * If only one pair of fgb/lgb is given, it is used for all runs in the RUN block section. + * If multiple fgb/lgb's are given, the number N has to be the number of RUN blocks in + * the msr-file. + * + *

nXY are offsets which can be used to shift, limit the fit range. + * + * \param fitRange string containing the necessary information. + */ +void PRunSingleHistoRRF::SetFitRangeBin(const TString fitRange) +{ + TObjArray *tok = 0; + TObjString *ostr = 0; + TString str; + Ssiz_t idx = -1; + Int_t offset = 0; + + tok = fitRange.Tokenize(" \t"); + + if (tok->GetEntries() == 3) { // structure FIT_RANGE fgb+n0 lgb-n1 + // handle fgb+n0 entry + ostr = (TObjString*) tok->At(1); + str = ostr->GetString(); + // check if there is an offset present + idx = str.First("+"); + if (idx != -1) { // offset present + str.Remove(0, idx+1); + if (str.IsFloat()) // if str is a valid number, convert is to an integer + offset = str.Atoi(); + } + fFitStartTime = (fGoodBins[0] + offset - fT0s[0]) * fTimeResolution; + + // handle lgb-n1 entry + ostr = (TObjString*) tok->At(2); + str = ostr->GetString(); + // check if there is an offset present + idx = str.First("-"); + if (idx != -1) { // offset present + str.Remove(0, idx+1); + if (str.IsFloat()) // if str is a valid number, convert is to an integer + offset = str.Atoi(); + } + fFitEndTime = (fGoodBins[1] - offset - fT0s[0]) * fTimeResolution; + } else if ((tok->GetEntries() > 3) && (tok->GetEntries() % 2 == 1)) { // structure FIT_RANGE fgb[+n00] lgb[-n01] [fgb[+n10] lgb[-n11] ... fgb[+nN0] lgb[-nN1]] + Int_t pos = 2*(fRunNo+1)-1; + + if (pos + 1 >= tok->GetEntries()) { + cerr << endl << ">> PRunSingleHistoRRF::SetFitRangeBin(): **ERROR** invalid FIT_RANGE command found: '" << fitRange << "'"; + cerr << endl << ">> will ignore it. Sorry ..." << endl; + } else { + // handle fgb+n0 entry + ostr = (TObjString*) tok->At(pos); + str = ostr->GetString(); + // check if there is an offset present + idx = str.First("+"); + if (idx != -1) { // offset present + str.Remove(0, idx+1); + if (str.IsFloat()) // if str is a valid number, convert is to an integer + offset = str.Atoi(); + } + fFitStartTime = (fGoodBins[0] + offset - fT0s[0]) * fTimeResolution; + + // handle lgb-n1 entry + ostr = (TObjString*) tok->At(pos+1); + str = ostr->GetString(); + // check if there is an offset present + idx = str.First("-"); + if (idx != -1) { // offset present + str.Remove(0, idx+1); + if (str.IsFloat()) // if str is a valid number, convert is to an integer + offset = str.Atoi(); + } + fFitEndTime = (fGoodBins[1] - offset - fT0s[0]) * fTimeResolution; + } + } else { // error + cerr << endl << ">> PRunSingleHistoRRF::SetFitRangeBin(): **ERROR** invalid FIT_RANGE command found: '" << fitRange << "'"; + cerr << endl << ">> will ignore it. Sorry ..." << endl; + } + + // clean up + if (tok) { + delete tok; + } +} + +//-------------------------------------------------------------------------- +// CalcNoOfFitBins (protected) +//-------------------------------------------------------------------------- +/** + *

Calculate the number of fitted bins for the current fit range. + */ +void PRunSingleHistoRRF::CalcNoOfFitBins() +{ + // In order not having to loop over all bins and to stay consistent with the chisq method, calculate the start and end bins explicitly + Int_t startTimeBin = static_cast(ceil((fFitStartTime - fData.GetDataTimeStart())/fData.GetDataTimeStep())); + if (startTimeBin < 0) + startTimeBin = 0; + Int_t endTimeBin = static_cast(floor((fFitEndTime - fData.GetDataTimeStart())/fData.GetDataTimeStep())) + 1; + if (endTimeBin > static_cast(fData.GetValue()->size())) + endTimeBin = fData.GetValue()->size(); + + if (endTimeBin > startTimeBin) + fNoOfFitBins = endTimeBin - startTimeBin; + else + fNoOfFitBins = 0; +} + +//-------------------------------------------------------------------------- +// PrepareData (protected) +//-------------------------------------------------------------------------- +/** + *

Prepare data for fitting or viewing. What is already processed at this stage: + * -# get proper raw run data + * -# get all needed forward histograms + * -# get time resolution + * -# get t0's and perform necessary cross checks (e.g. if t0 of msr-file (if present) are consistent with t0 of the data files, etc.) + * -# add runs (if addruns are present) + * -# group histograms (if grouping is present) + * + * return: + * - true if everthing went smooth + * - false, otherwise. + */ +Bool_t PRunSingleHistoRRF::PrepareData() +{ + Bool_t success = true; + + // keep the Global block info + PMsrGlobalBlock *globalBlock = fMsrInfo->GetMsrGlobal(); + + // get the proper run + PRawRunData* runData = fRawData->GetRunData(*fRunInfo->GetRunName()); + if (!runData) { // couldn't get run + cerr << endl << ">> PRunSingleHistoRRF::PrepareData(): **ERROR** Couldn't get run " << fRunInfo->GetRunName()->Data() << "!"; + cerr << endl; + return false; + } + + // collect histogram numbers + PUIntVector histoNo; // histoNo = msr-file forward + redGreen_offset - 1 + for (UInt_t i=0; iGetForwardHistoNoSize(); i++) { + histoNo.push_back(fRunInfo->GetForwardHistoNo(i)); + + if (!runData->IsPresent(histoNo[i])) { + cerr << endl << ">> PRunSingleHistoRRF::PrepareData(): **PANIC ERROR**:"; + cerr << endl << ">> histoNo found = " << histoNo[i] << ", which is NOT present in the data file!?!?"; + cerr << endl << ">> Will quit :-("; + cerr << endl; + histoNo.clear(); + return false; + } + } + + // keep the time resolution in (us) + fTimeResolution = runData->GetTimeResolution()/1.0e3; + cout.precision(10); + cout << endl << ">> PRunSingleHisto::PrepareData(): time resolution=" << fixed << runData->GetTimeResolution() << "(ns)" << endl; + + // get all the proper t0's and addt0's for the current RUN block + if (!GetProperT0(runData, globalBlock, histoNo)) { + return false; + } + + // keep the histo of each group at this point (addruns handled below) + vector forward; + forward.resize(histoNo.size()); // resize to number of groups + for (UInt_t i=0; iGetDataBin(histoNo[i])->size()); + forward[i] = *runData->GetDataBin(histoNo[i]); + } + + // check if there are runs to be added to the current one + if (fRunInfo->GetRunNameSize() > 1) { // runs to be added present + PRawRunData *addRunData; + for (UInt_t i=1; iGetRunNameSize(); i++) { + + // get run to be added to the main one + addRunData = fRawData->GetRunData(*fRunInfo->GetRunName(i)); + if (addRunData == 0) { // couldn't get run + cerr << endl << ">> PRunSingleHistoRRF::PrepareData(): **ERROR** Couldn't get addrun " << fRunInfo->GetRunName(i)->Data() << "!"; + cerr << endl; + return false; + } + + // add forward run + UInt_t addRunSize; + for (UInt_t k=0; kGetDataBin(histoNo[k])->size(); + for (UInt_t j=0; jGetDataBin(histoNo[k])->size(); j++) { // loop over the bin indices + // make sure that the index stays in the proper range + if ((j+(Int_t)fAddT0s[i-1][k]-(Int_t)fT0s[k] >= 0) && (j+(Int_t)fAddT0s[i-1][k]-(Int_t)fT0s[k] < addRunSize)) { + forward[k][j] += addRunData->GetDataBin(histoNo[k])->at(j+(Int_t)fAddT0s[i-1][k]-(Int_t)fT0s[k]); + } + } + } + } + } + + // set forward histo data of the first group + fForward.resize(forward[0].size()); + for (UInt_t i=0; iGetDataBin(histoNo[i])->size(); j++) { // loop over the bin indices + // make sure that the index stays within proper range + if ((j+fT0s[i]-fT0s[0] >= 0) && (j+fT0s[i]-fT0s[0] < runData->GetDataBin(histoNo[i])->size())) { + fForward[j] += forward[i][j+(Int_t)fT0s[i]-(Int_t)fT0s[0]]; + } + } + } + + // get the data range (fgb/lgb) for the current RUN block + if (!GetProperDataRange()) { + return false; + } + + // get the fit range for the current RUN block + GetProperFitRange(globalBlock); + + // get the lifetimecorrection flag + Bool_t lifetimecorrection = false; + PMsrPlotList *plot = fMsrInfo->GetMsrPlotList(); + lifetimecorrection = plot->at(0).fLifeTimeCorrection; + + // do the more fit/view specific stuff + if (fHandleTag == kFit) + success = PrepareFitData(runData, histoNo[0]); + else if ((fHandleTag == kView) && !lifetimecorrection) + success = PrepareRawViewData(runData, histoNo[0]); + else if ((fHandleTag == kView) && lifetimecorrection) + success = PrepareViewData(runData, histoNo[0]); + else + success = false; + + // cleanup + histoNo.clear(); + + return success; +} + +//-------------------------------------------------------------------------- +// PrepareFitData (protected) +//-------------------------------------------------------------------------- +/** + *

Take the pre-processed data (i.e. grouping and addrun are preformed) and form the histogram for fitting. + * The following steps are preformed: + * -# get fit start/stop time + * -# check that 'first good data bin', 'last good data bin', and 't0' make any sense + * -# check how the background shall be handled, i.e. fitted, subtracted from background estimate data range, or subtacted from a given fixed background. + * -# packing (i.e rebinning) + * + * return: + * - true, if everything went smooth + * - false, otherwise + * + * \param runData raw run data handler + * \param histoNo forward histogram number + */ +Bool_t PRunSingleHistoRRF::PrepareFitData(PRawRunData* runData, const UInt_t histoNo) +{ + // keep the raw data for the RRF asymmetry error estimate for later + PDoubleVector sqrtNt; + for (UInt_t i=0; iGetBkgFitParamNo() == -1) { // bkg shall **NOT** be fitted + // subtract background from histogramms ------------------------------------------ + if (fRunInfo->GetBkgFix(0) == PMUSR_UNDEFINED) { // no fixed background given + if (fRunInfo->GetBkgRange(0) >= 0) { + if (!EstimateBkg(histoNo)) + return false; + } else { // no background given to do the job, try estimate + fRunInfo->SetBkgRange(static_cast(fT0s[0]*0.1), 0); + fRunInfo->SetBkgRange(static_cast(fT0s[0]*0.6), 1); + cerr << endl << ">> PRunSingleHistoRRF::PrepareFitData(): **WARNING** Neither fix background nor background bins are given!"; + cerr << endl << ">> Will try the following: bkg start = " << fRunInfo->GetBkgRange(0) << ", bkg end = " << fRunInfo->GetBkgRange(1); + cerr << endl << ">> NO WARRANTY THAT THIS MAKES ANY SENSE! Better check ..."; + cerr << endl; + if (!EstimateBkg(histoNo)) + return false; + } + } else { // fixed background given + for (UInt_t i=0; iGetBkgFix(0); + } + } + } + + Int_t t0 = (Int_t)fT0s[0]; + + // 2) N(t) - Nbkg -> exp(+t/tau) [N(t)-Nbkg] + Double_t startTime = fTimeResolution * ((Double_t)fGoodBins[0] - (Double_t)t0); + cout << endl << "debug> PRunSingleHistoRRF::PrepareFitData(): t0=" << t0 << ", fGoodBins[0]=" << fGoodBins[0] << ", fGoodBins[1]=" << fGoodBins[1] << endl; + cout << endl << "debug> PRunSingleHistoRRF::PrepareFitData(): startTime=" << startTime << endl; + cout << endl << "debug> PRunSingleHistoRRF::PrepareFitData(): endTime =" << startTime+fTimeResolution*((Double_t)fGoodBins[1]-(Double_t)t0) << endl; + + Double_t time_tau=0.0; + for (Int_t i=fGoodBins[0]; i A(t) * cos(wRRF t + phiRRF) + PMsrGlobalBlock *globalBlock = fMsrInfo->GetMsrGlobal(); + Double_t wRRF = globalBlock->GetRRFFreq("Mc"); + Double_t phaseRRF = globalBlock->GetRRFPhase()*TMath::TwoPi()/180.0; + cout << "debug> PRunSingleHistoRRF::PrepareFitData(): wRRF =" << wRRF << endl; + cout << "debug> PRunSingleHistoRRF::PrepareFitData(): phaseRRF =" << phaseRRF << endl; + Double_t time = 0.0; + for (Int_t i=fGoodBins[0]; iGetRRFPacking(); + Double_t dval=0.0; + for (Int_t i=fGoodBins[0]; i 1 + if (((i-fGoodBins[0]) % packingRRF == 0) && (i != fGoodBins[0])) { // fill data + dval /= packingRRF; + fData.AppendValue(dval); + // reset dval + dval = 0.0; + } + dval += fForward[i]; + } + } + + // 7) estimate RRF errors (see log-book p.204) + // the error estimate of the unpacked RRF asymmetry is: errA_RRF(t) \simeq exp(t/tau)/N0 sqrt(N(t)) + for (Int_t i=fGoodBins[0]; iTake the pre-processed data (i.e. grouping and addrun are preformed) and form the histogram for viewing + * without any life time correction. + *

The following steps are preformed: + * -# check if view packing is whished. + * -# check that 'first good data bin', 'last good data bin', and 't0' makes any sense + * -# packing (i.e. rebinnig) + * -# calculate theory + * + * return: + * - true, if everything went smooth + * - false, otherwise. + * + * \param runData raw run data handler + * \param histoNo forward histogram number + */ +Bool_t PRunSingleHistoRRF::PrepareRawViewData(PRawRunData* runData, const UInt_t histoNo) +{ +/* + // check if view_packing is wished + Int_t packing = fPacking; + if (fMsrInfo->GetMsrPlotList()->at(0).fViewPacking > 0) { + packing = fMsrInfo->GetMsrPlotList()->at(0).fViewPacking; + } + + // calculate necessary norms + Double_t dataNorm = 1.0, theoryNorm = 1.0; + if (fScaleN0AndBkg) { + dataNorm = 1.0/ (packing * (fTimeResolution * 1.0e3)); // fTimeResolution us->ns + } else if (!fScaleN0AndBkg && (fMsrInfo->GetMsrPlotList()->at(0).fViewPacking > 0)) { + theoryNorm = (Double_t)fMsrInfo->GetMsrPlotList()->at(0).fViewPacking/(Double_t)fPacking; + } + + // raw data, since PMusrCanvas is doing ranging etc. + // start = the first bin which is a multiple of packing backward from first good data bin + Int_t start = fGoodBins[0] - (fGoodBins[0]/packing)*packing; + // end = last bin starting from start which is a multipl of packing and still within the data + Int_t end = start + ((fForward.size()-start)/packing)*packing; + // check if data range has been provided, and if not try to estimate them + if (start < 0) { + Int_t offset = (Int_t)(10.0e-3/fTimeResolution); + start = ((Int_t)fT0s[0]+offset) - (((Int_t)fT0s[0]+offset)/packing)*packing; + end = start + ((fForward.size()-start)/packing)*packing; + cerr << endl << ">> PRunSingleHistoRRF::PrepareRawViewData(): **WARNING** data range was not provided, will try data range start = " << start << "."; + cerr << endl << ">> NO WARRANTY THAT THIS DOES MAKE ANY SENSE."; + cerr << endl; + } + // check if start, end, and t0 make any sense + // 1st check if start and end are in proper order + if (end < start) { // need to swap them + Int_t keep = end; + end = start; + start = keep; + } + // 2nd check if start is within proper bounds + if ((start < 0) || (start > (Int_t)fForward.size())) { + cerr << endl << ">> PRunSingleHistoRRF::PrepareRawViewData(): **ERROR** start data bin doesn't make any sense!"; + cerr << endl; + return false; + } + // 3rd check if end is within proper bounds + if ((end < 0) || (end > (Int_t)fForward.size())) { + cerr << endl << ">> PRunSingleHistoRRF::PrepareRawViewData(): **ERROR** end data bin doesn't make any sense!"; + cerr << endl; + return false; + } + + // everything looks fine, hence fill data set + Int_t t0 = (Int_t)fT0s[0]; + Double_t value = 0.0; + // data start at data_start-t0 + // time shifted so that packing is included correctly, i.e. t0 == t0 after packing + fData.SetDataTimeStart(fTimeResolution*((Double_t)start-(Double_t)t0+(Double_t)(packing-1)/2.0)); + fData.SetDataTimeStep(fTimeResolution*packing); + + for (Int_t i=start; i par; + PMsrParamList *paramList = fMsrInfo->GetMsrParamList(); + for (UInt_t i=0; isize(); i++) + par.push_back((*paramList)[i].fValue); + + // calculate asymmetry + Double_t N0; + // check if norm is a parameter or a function + if (fRunInfo->GetNormParamNo() < MSR_PARAM_FUN_OFFSET) { // norm is a parameter + N0 = par[fRunInfo->GetNormParamNo()-1]; + } else { // norm is a function + // get function number + UInt_t funNo = fRunInfo->GetNormParamNo()-MSR_PARAM_FUN_OFFSET; + // evaluate function + N0 = fMsrInfo->EvalFunc(funNo, *fRunInfo->GetMap(), par); + } + N0 *= theoryNorm; + + // get tau + Double_t tau; + if (fRunInfo->GetLifetimeParamNo() != -1) + tau = par[fRunInfo->GetLifetimeParamNo()-1]; + else + tau = PMUON_LIFETIME; + + // get background + Double_t bkg; + if (fRunInfo->GetBkgFitParamNo() == -1) { // bkg not fitted + if (fRunInfo->GetBkgFix(0) == PMUSR_UNDEFINED) { // no fixed background given (background interval) + if (fRunInfo->GetBkgRange(0) >= 0) { // background range given + if (!EstimateBkg(histoNo)) + return false; + } else { // no background given to do the job, try estimate + fRunInfo->SetBkgRange(static_cast(fT0s[0]*0.1), 0); + fRunInfo->SetBkgRange(static_cast(fT0s[0]*0.6), 1); + cerr << endl << ">> PRunSingleHistoRRF::PrepareRawViewData(): **WARNING** Neither fix background nor background bins are given!"; + cerr << endl << ">> Will try the following: bkg start = " << fRunInfo->GetBkgRange(0) << ", bkg end = " << fRunInfo->GetBkgRange(1); + cerr << endl << ">> NO WARRANTY THAT THIS MAKES ANY SENSE! Better check ..."; + cerr << endl; + if (!EstimateBkg(histoNo)) + return false; + } + bkg = fBackground; + } else { // fixed bkg given + bkg = fRunInfo->GetBkgFix(0); + } + } else { // bkg fitted + bkg = par[fRunInfo->GetBkgFitParamNo()-1]; + } + bkg *= theoryNorm; + + // calculate functions + for (Int_t i=0; iGetNoOfFuncs(); i++) { + fFuncValues[i] = fMsrInfo->EvalFunc(fMsrInfo->GetFuncNo(i), *fRunInfo->GetMap(), par); + } + + // calculate theory + UInt_t size = fForward.size(); + Double_t factor = 1.0; + if (fData.GetValue()->size() * 10 > fForward.size()) { + size = fData.GetValue()->size() * 10; + factor = (Double_t)fForward.size() / (Double_t)size; + } + Double_t time; + Double_t theoryValue; + fData.SetTheoryTimeStart(fData.GetDataTimeStart()); + fData.SetTheoryTimeStep(fTimeResolution*factor); + for (UInt_t i=0; iFunc(time, par, fFuncValues); + if (fabs(theoryValue) > 1.0e10) { // dirty hack needs to be fixed!! + theoryValue = 0.0; + } + fData.AppendTheoryValue(N0*TMath::Exp(-time/tau)*(1.0+theoryValue)+bkg); + } + + // clean up + par.clear(); +*/ + return true; +} + +//-------------------------------------------------------------------------- +// PrepareViewData (protected) +//-------------------------------------------------------------------------- +/** + *

Take the pre-processed data (i.e. grouping and addrun are preformed) and form the histogram for viewing + * with life time correction, i.e. the exponential decay is removed. + *

The following steps are preformed: + * -# check if view packing is whished. + * -# check that 'first good data bin', 'last good data bin', and 't0' makes any sense + * -# transform data sets (see below). + * -# calculate theory + * + *

Muon life time corrected data: Starting from + * \f[ N(t) = N_0 e^{-t/\tau} [ 1 + A(t) ] + \mathrm{Bkg} \f] + * it follows that + * \f[ A(t) = (-1) + e^{+t/\tau}\, \frac{N(t)-\mathrm{Bkg}}{N_0}. \f] + * For the error estimate only the statistical error of \f$ N(t) \f$ is used, and hence + * \f[ \Delta A(t) = \frac{e^{t/\tau}}{N_0}\,\sqrt{\frac{N(t)}{p}} \f] + * where \f$ p \f$ is the packing, and \f$ N(t) \f$ are the packed data, i.e. + * \f[ N(t_i) = \frac{1}{p}\, \sum_{j=i}^{i+p} n_j \f] + * with \f$ n_j \f$ the raw histogram data bins. + * + * return: + * - true, if everything went smooth + * - false, otherwise + * + * \param runData raw run data handler + * \param histoNo forward histogram number + */ +Bool_t PRunSingleHistoRRF::PrepareViewData(PRawRunData* runData, const UInt_t histoNo) +{ +/* + // check if view_packing is wished. This is a global option for all PLOT blocks! + Int_t packing = fPacking; + if (fMsrInfo->GetMsrPlotList()->at(0).fViewPacking > 0) { + packing = fMsrInfo->GetMsrPlotList()->at(0).fViewPacking; + } + // check if rrf_packing is present. This is a global option for all PLOT blocks, since operated on a single set of data. + if (fMsrInfo->GetMsrPlotList()->at(0).fRRFPacking > 0) { + packing = fMsrInfo->GetMsrPlotList()->at(0).fRRFPacking; + } + + // calculate necessary norms + Double_t dataNorm = 1.0, theoryNorm = 1.0; + if (fScaleN0AndBkg) { + dataNorm = 1.0/ (packing * (fTimeResolution * 1.0e3)); // fTimeResolution us->ns + } else if (!fScaleN0AndBkg && (fMsrInfo->GetMsrPlotList()->at(0).fViewPacking > 0)) { + theoryNorm = (Double_t)fMsrInfo->GetMsrPlotList()->at(0).fViewPacking/(Double_t)fPacking; + } + + // transform raw histo data. This is done the following way (for details see the manual): + // for the single histo fit, just the rebinned raw data are copied + // first get start data, end data, and t0 + Int_t t0 = (Int_t)fT0s[0]; + + // start = the first bin which is a multiple of packing backward from first good data bin + Int_t start = fGoodBins[0] - (fGoodBins[0]/packing)*packing; + // end = last bin starting from start which is a multiple of packing and still within the data + Int_t end = start + ((fForward.size()-start)/packing)*packing; + + // check if data range has been provided, and if not try to estimate them + if (start < 0) { + Int_t offset = (Int_t)(10.0e-3/fTimeResolution); + start = ((Int_t)fT0s[0]+offset) - (((Int_t)fT0s[0]+offset)/packing)*packing; + end = start + ((fForward.size()-start)/packing)*packing; + cerr << endl << ">> PRunSingleHistoRRF::PrepareViewData(): **WARNING** data range was not provided, will try data range start = " << start << "."; + cerr << endl << ">> NO WARRANTY THAT THIS DOES MAKE ANY SENSE."; + cerr << endl; + } + + // check if start, end, and t0 make any sense + // 1st check if start and end are in proper order + if (end < start) { // need to swap them + Int_t keep = end; + end = start; + start = keep; + } + // 2nd check if start is within proper bounds + if ((start < 0) || (start > (Int_t)fForward.size())) { + cerr << endl << ">> PRunSingleHistoRRF::PrepareViewData(): **ERROR** start data bin doesn't make any sense!"; + cerr << endl; + return false; + } + // 3rd check if end is within proper bounds + if ((end < 0) || (end > (Int_t)fForward.size())) { + cerr << endl << ">> PRunSingleHistoRRF::PrepareViewData(): **ERROR** end data bin doesn't make any sense!"; + cerr << endl; + return false; + } + + // everything looks fine, hence fill data set + + // feed the parameter vector + std::vector par; + PMsrParamList *paramList = fMsrInfo->GetMsrParamList(); + for (UInt_t i=0; isize(); i++) + par.push_back((*paramList)[i].fValue); + + // calculate asymmetry + Double_t N0; + // check if norm is a parameter or a function + if (fRunInfo->GetNormParamNo() < MSR_PARAM_FUN_OFFSET) { // norm is a parameter + N0 = par[fRunInfo->GetNormParamNo()-1]; + } else { // norm is a function + // get function number + UInt_t funNo = fRunInfo->GetNormParamNo()-MSR_PARAM_FUN_OFFSET; + // evaluate function + N0 = fMsrInfo->EvalFunc(funNo, *fRunInfo->GetMap(), par); + } + N0 *= theoryNorm; + + // get tau + Double_t tau; + if (fRunInfo->GetLifetimeParamNo() != -1) + tau = par[fRunInfo->GetLifetimeParamNo()-1]; + else + tau = PMUON_LIFETIME; + + // get background + Double_t bkg; + if (fRunInfo->GetBkgFitParamNo() == -1) { // bkg not fitted + if (fRunInfo->GetBkgFix(0) == PMUSR_UNDEFINED) { // no fixed background given (background interval) + if (fRunInfo->GetBkgRange(0) >= 0) { // background range given + if (!EstimateBkg(histoNo)) + return false; + } else { // no background given to do the job, try estimate + fRunInfo->SetBkgRange(static_cast(fT0s[0]*0.1), 0); + fRunInfo->SetBkgRange(static_cast(fT0s[0]*0.6), 1); + cerr << endl << ">> PRunSingleHistoRRF::PrepareViewData(): **WARNING** Neither fix background nor background bins are given!"; + cerr << endl << ">> Will try the following: bkg start = " << fRunInfo->GetBkgRange(0) << ", bkg end = " << fRunInfo->GetBkgRange(1); + cerr << endl << ">> NO WARRANTY THAT THIS MAKES ANY SENSE! Better check ..."; + cerr << endl; + if (!EstimateBkg(histoNo)) + return false; + } + bkg = fBackground; + } else { // fixed bkg given + bkg = fRunInfo->GetBkgFix(0); + } + } else { // bkg fitted + bkg = par[fRunInfo->GetBkgFitParamNo()-1]; + } + bkg *= theoryNorm; + + Double_t value = 0.0; + Double_t expval = 0.0; + Double_t rrf_val = 0.0; + Double_t time = 0.0; + + // data start at data_start-t0 shifted by (pack-1)/2 + fData.SetDataTimeStart(fTimeResolution*((Double_t)start-(Double_t)t0+(Double_t)(packing-1)/2.0)); + fData.SetDataTimeStep(fTimeResolution*packing); + + // data is always normalized to (per nsec!!) + Double_t gammaRRF = 0.0, wRRF = 0.0, phaseRRF = 0.0; + if (fMsrInfo->GetMsrPlotList()->at(0).fRRFFreq == 0.0) { // normal Data representation + for (Int_t i=start; iGetMsrPlotList()->at(0).fRRFUnit) { + case RRF_UNIT_kHz: + gammaRRF = TMath::TwoPi()*1.0e-3; + break; + case RRF_UNIT_MHz: + gammaRRF = TMath::TwoPi(); + break; + case RRF_UNIT_Mcs: + gammaRRF = 1.0; + break; + case RRF_UNIT_G: + gammaRRF = GAMMA_BAR_MUON*TMath::TwoPi(); + break; + case RRF_UNIT_T: + gammaRRF = GAMMA_BAR_MUON*TMath::TwoPi()*1.0e4; + break; + default: + gammaRRF = TMath::TwoPi(); + break; + } + wRRF = gammaRRF * fMsrInfo->GetMsrPlotList()->at(0).fRRFFreq; + phaseRRF = fMsrInfo->GetMsrPlotList()->at(0).fRRFPhase / 180.0 * TMath::Pi(); + + Double_t error = 0.0; + for (Int_t i=start; iGetNoOfFuncs(); i++) { + fFuncValues[i] = fMsrInfo->EvalFunc(fMsrInfo->GetFuncNo(i), *fRunInfo->GetMap(), par); + } + + // calculate theory + Double_t theoryValue; + UInt_t size = fForward.size(); + Double_t factor = 1.0; + UInt_t rebinRRF = 0; + + if (wRRF == 0) { // no RRF + // check if a finer binning for the theory is needed + if (fData.GetValue()->size() * 10 > fForward.size()) { + size = fData.GetValue()->size() * 10; + factor = (Double_t)fForward.size() / (Double_t)size; + } + fData.SetTheoryTimeStart(fData.GetDataTimeStart()); + fData.SetTheoryTimeStep(fTimeResolution*factor); + } else { // RRF + rebinRRF = static_cast((TMath::Pi()/2.0/wRRF)/fTimeResolution); // RRF time resolution / data time resolution + fData.SetTheoryTimeStart(fData.GetDataTimeStart()); + fData.SetTheoryTimeStep(TMath::Pi()/2.0/wRRF/rebinRRF); // = theory time resolution as close as possible to the data time resolution compatible with wRRF + } + + for (UInt_t i=0; iFunc(time, par, fFuncValues); + if (wRRF != 0.0) { + theoryValue *= 2.0*TMath::Cos(wRRF * time + phaseRRF); + } + if (fabs(theoryValue) > 10.0) { // dirty hack needs to be fixed!! + theoryValue = 0.0; + } + fData.AppendTheoryValue(theoryValue); + } + + // if RRF filter the theory with a FIR Kaiser low pass filter + if (wRRF != 0.0) { + // rebin theory to the RRF frequency + if (rebinRRF != 0) { + Double_t dval = 0.0; + PDoubleVector theo; + for (UInt_t i=0; isize(); i++) { + if ((i % rebinRRF == 0) && (i != 0)) { + theo.push_back(dval/rebinRRF); + dval = 0.0; + } + dval += fData.GetTheory()->at(i); + } + fData.SetTheoryTimeStart(fData.GetTheoryTimeStart()+static_cast(rebinRRF-1)*fData.GetTheoryTimeStep()/2.0); + fData.SetTheoryTimeStep(rebinRRF*fData.GetTheoryTimeStep()); + fData.ReplaceTheory(theo); + theo.clear(); + } + + // filter theory + CalculateKaiserFilterCoeff(wRRF, 60.0, 0.2); // w_c = wRRF, A = -20 log_10(delta), Delta w / w_c = (w_s - w_p) / (2 w_c) + FilterTheo(); + } + + // clean up + par.clear(); +*/ + return true; +} + +//-------------------------------------------------------------------------- +// GetProperT0 (private) +//-------------------------------------------------------------------------- +/** + *

Get the proper t0 for the single histogram run. + * -# the t0 vector size = number of detectors (grouping) for forward. + * -# initialize t0's with -1 + * -# fill t0's from RUN block + * -# if t0's are missing (i.e. t0 == -1), try to fill from the GLOBAL block. + * -# if t0's are missing, try t0's from the data file + * -# if t0's are missing, try to estimate them + * + * \param runData pointer to the current RUN block entry from the msr-file + * \param globalBlock pointer to the GLOBLA block entry from the msr-file + * \param histoNo histogram number vector of forward; histoNo = msr-file forward + redGreen_offset - 1 + * + * return: + * - true if everthing went smooth + * - false, otherwise. + */ +Bool_t PRunSingleHistoRRF::GetProperT0(PRawRunData* runData, PMsrGlobalBlock *globalBlock, PUIntVector &histoNo) +{ + // feed all T0's + // first init T0's, T0's are stored as (forward T0, backward T0, etc.) + fT0s.clear(); + fT0s.resize(histoNo.size()); + for (UInt_t i=0; iGetT0BinSize(); i++) { + fT0s[i] = fRunInfo->GetT0Bin(i); + } + + // fill in the T0's from the GLOBAL block section (if present) + for (UInt_t i=0; iGetT0BinSize(); i++) { + if (fT0s[i] == -1) { // i.e. not given in the RUN block section + fT0s[i] = globalBlock->GetT0Bin(i); + } + } + + // fill in the T0's from the data file, if not already present in the msr-file + for (UInt_t i=0; iGetT0Bin(histoNo[i]) > 0.0) { + fT0s[i] = runData->GetT0Bin(histoNo[i]); + fRunInfo->SetT0Bin(fT0s[i], i); // keep value for the msr-file + } + } + } + + // fill in the T0's gaps, i.e. in case the T0's are NOT in the msr-file and NOT in the data file + for (UInt_t i=0; iGetT0BinEstimated(histoNo[i]); + fRunInfo->SetT0Bin(fT0s[i], i); // keep value for the msr-file + + cerr << endl << ">> PRunSingleHistoRRF::GetProperT0(): **WARRNING** NO t0's found, neither in the run data nor in the msr-file!"; + cerr << endl << ">> run: " << fRunInfo->GetRunName()->Data(); + cerr << endl << ">> will try the estimated one: forward t0 = " << runData->GetT0BinEstimated(histoNo[i]); + cerr << endl << ">> NO WARRANTY THAT THIS OK!! For instance for LEM this is almost for sure rubbish!"; + cerr << endl; + } + } + + // check if t0 is within proper bounds + for (UInt_t i=0; iGetForwardHistoNoSize(); i++) { + if ((fT0s[i] < 0) || (fT0s[i] > (Int_t)runData->GetDataBin(histoNo[i])->size())) { + cerr << endl << ">> PRunSingleHistoRRF::GetProperT0(): **ERROR** t0 data bin (" << fT0s[i] << ") doesn't make any sense!"; + cerr << endl; + return false; + } + } + + // check if there are runs to be added to the current one. If yes keep the needed t0's + if (fRunInfo->GetRunNameSize() > 1) { // runs to be added present + PRawRunData *addRunData; + fAddT0s.resize(fRunInfo->GetRunNameSize()-1); // resize to the number of addruns + for (UInt_t i=1; iGetRunNameSize(); i++) { + + // get run to be added to the main one + addRunData = fRawData->GetRunData(*fRunInfo->GetRunName(i)); + if (addRunData == 0) { // couldn't get run + cerr << endl << ">> PRunSingleHistoRRF::GetProperT0(): **ERROR** Couldn't get addrun " << fRunInfo->GetRunName(i)->Data() << "!"; + cerr << endl; + return false; + } + + // feed all T0's + // first init T0's, T0's are stored as (forward T0, backward T0, etc.) + fAddT0s[i-1].resize(histoNo.size()); + for (UInt_t j=0; jGetT0BinSize(); j++) { + fAddT0s[i-1][j] = fRunInfo->GetAddT0Bin(i-1,j); // addRunIdx starts at 0 + } + + // fill in the T0's from the data file, if not already present in the msr-file + for (UInt_t j=0; jGetT0Bin(histoNo[j]) > 0.0) { + fAddT0s[i-1][j] = addRunData->GetT0Bin(histoNo[j]); + fRunInfo->SetAddT0Bin(fAddT0s[i-1][j], i-1, j); // keep value for the msr-file + } + } + + // fill in the T0's gaps, i.e. in case the T0's are NOT in the msr-file and NOT in the data file + for (UInt_t j=0; jGetT0BinEstimated(histoNo[j]); + fRunInfo->SetAddT0Bin(fAddT0s[i-1][j], i-1, j); // keep value for the msr-file + + cerr << endl << ">> PRunSingleHistoRRF::GetProperT0(): **WARRNING** NO t0's found, neither in the run data nor in the msr-file!"; + cerr << endl << ">> run: " << fRunInfo->GetRunName(i)->Data(); + cerr << endl << ">> will try the estimated one: forward t0 = " << addRunData->GetT0BinEstimated(histoNo[j]); + cerr << endl << ">> NO WARRANTY THAT THIS OK!! For instance for LEM this is almost for sure rubbish!"; + cerr << endl; + } + } + + // check if t0 is within proper bounds + for (UInt_t j=0; jGetForwardHistoNoSize(); j++) { + if ((fAddT0s[i-1][j] < 0) || (fAddT0s[i-1][j] > (Int_t)addRunData->GetDataBin(histoNo[j])->size())) { + cerr << endl << ">> PRunSingleHistoRRF::GetProperT0(): **ERROR** addt0 data bin (" << fAddT0s[i-1][j] << ") doesn't make any sense!"; + cerr << endl; + return false; + } + } + } + } + + return true; +} + +//-------------------------------------------------------------------------- +// GetProperDataRange (private) +//-------------------------------------------------------------------------- +/** + *

Get the proper data range, i.e. first/last good bin (fgb/lgb). + * -# get fgb/lgb from the RUN block + * -# if fgb/lgb still undefined, try to get it from the GLOBAL block + * -# if fgb/lgb still undefined, try to estimate them. + * + * return: + * - true if everthing went smooth + * - false, otherwise. + */ +Bool_t PRunSingleHistoRRF::GetProperDataRange() +{ + // get start/end data + Int_t start; + Int_t end; + start = fRunInfo->GetDataRange(0); + end = fRunInfo->GetDataRange(1); + + // check if data range has been given in the RUN block, if not try to get it from the GLOBAL block + if (start < 0) { + start = fMsrInfo->GetMsrGlobal()->GetDataRange(0); + } + if (end < 0) { + end = fMsrInfo->GetMsrGlobal()->GetDataRange(1); + } + + // check if data range has been provided, and if not try to estimate them + if (start < 0) { + Int_t offset = (Int_t)(10.0e-3/fTimeResolution); + start = (Int_t)fT0s[0]+offset; + fRunInfo->SetDataRange(start, 0); + cerr << endl << ">> PRunSingleHistoRRF::GetProperDataRange(): **WARNING** data range was not provided, will try data range start = t0+" << offset << "(=10ns) = " << start << "."; + cerr << endl << ">> NO WARRANTY THAT THIS DOES MAKE ANY SENSE."; + cerr << endl; + } + if (end < 0) { + end = fForward.size(); + fRunInfo->SetDataRange(end, 1); + cerr << endl << ">> PRunSingleHistoRRF::GetProperDataRange(): **WARNING** data range was not provided, will try data range end = " << end << "."; + cerr << endl << ">> NO WARRANTY THAT THIS DOES MAKE ANY SENSE."; + cerr << endl; + } + + // check if start and end make any sense + // 1st check if start and end are in proper order + if (end < start) { // need to swap them + Int_t keep = end; + end = start; + start = keep; + } + // 2nd check if start is within proper bounds + if ((start < 0) || (start > (Int_t)fForward.size())) { + cerr << endl << ">> PRunSingleHistoRRF::GetProperDataRange(): **ERROR** start data bin (" << start << ") doesn't make any sense!"; + cerr << endl; + return false; + } + // 3rd check if end is within proper bounds + if ((end < 0) || (end > (Int_t)fForward.size())) { + cerr << endl << ">> PRunSingleHistoRRF::GetProperDataRange(): **ERROR** end data bin (" << end << ") doesn't make any sense!"; + cerr << endl; + return false; + } + + // keep good bins for potential later use + fGoodBins[0] = start; + fGoodBins[1] = end; + + return true; +} + +//-------------------------------------------------------------------------- +// GetProperFitRange (private) +//-------------------------------------------------------------------------- +/** + *

Get the proper fit range. There are two possible fit range commands: + * fit given in (usec), or + * fit fgb+offset_0 lgb-offset_1 given in (bins), therefore it works the following way: + * -# get fit range assuming given in time from RUN block + * -# if fit range in RUN block is given in bins, replace start/end + * -# if fit range is NOT given yet, try fit range assuming given in time from GLOBAL block + * -# if fit range in GLOBAL block is given in bins, replace start/end + * -# if still no fit range is given, use fgb/lgb. + * + * \param globalBlock pointer to the GLOBAL block information form the msr-file. + */ +void PRunSingleHistoRRF::GetProperFitRange(PMsrGlobalBlock *globalBlock) +{ + // set fit start/end time; first check RUN Block + fFitStartTime = fRunInfo->GetFitRange(0); + fFitEndTime = fRunInfo->GetFitRange(1); + // if fit range is given in bins (and not time), the fit start/end time can be calculated at this point now + if (fRunInfo->IsFitRangeInBin()) { + fFitStartTime = (fGoodBins[0] + fRunInfo->GetFitRangeOffset(0) - fT0s[0]) * fTimeResolution; // (fgb+n0-t0)*dt + fFitEndTime = (fGoodBins[1] - fRunInfo->GetFitRangeOffset(1) - fT0s[0]) * fTimeResolution; // (lgb-n1-t0)*dt + // write these times back into the data structure. This way it is available when writting the log-file + fRunInfo->SetFitRange(fFitStartTime, 0); + fRunInfo->SetFitRange(fFitEndTime, 1); + } + if (fFitStartTime == PMUSR_UNDEFINED) { // fit start/end NOT found in the RUN block, check GLOBAL block + fFitStartTime = globalBlock->GetFitRange(0); + fFitEndTime = globalBlock->GetFitRange(1); + // if fit range is given in bins (and not time), the fit start/end time can be calculated at this point now + if (globalBlock->IsFitRangeInBin()) { + fFitStartTime = (fGoodBins[0] + globalBlock->GetFitRangeOffset(0) - fT0s[0]) * fTimeResolution; // (fgb+n0-t0)*dt + fFitEndTime = (fGoodBins[1] - globalBlock->GetFitRangeOffset(1) - fT0s[0]) * fTimeResolution; // (lgb-n1-t0)*dt + // write these times back into the data structure. This way it is available when writting the log-file + globalBlock->SetFitRange(fFitStartTime, 0); + globalBlock->SetFitRange(fFitEndTime, 1); + } + } + if ((fFitStartTime == PMUSR_UNDEFINED) || (fFitEndTime == PMUSR_UNDEFINED)) { + fFitStartTime = (fGoodBins[0] - fT0s[0]) * fTimeResolution; // (fgb-t0)*dt + fFitEndTime = (fGoodBins[1] - fT0s[0]) * fTimeResolution; // (lgb-t0)*dt + cerr << ">> PRunSingleHistoRRF::GetProperFitRange(): **WARNING** Couldn't get fit start/end time!" << endl; + cerr << ">> Will set it to fgb/lgb which given in time is: " << fFitStartTime << "..." << fFitEndTime << " (usec)" << endl; + } +} + +//-------------------------------------------------------------------------- +// EstimateN0 (private) +//-------------------------------------------------------------------------- +/** + *

Estimate the N0 for the given run. + */ +Double_t PRunSingleHistoRRF::EstimateN0() +{ + Int_t endBin = N0EstimateEndTime / fTimeResolution; + Double_t n0 = 0.0; + cout << "debug> PRunSingleHistoRRF::EstimateN0(): startBin=" << fGoodBins[0] << ", endBin=" << endBin << endl; + for (Int_t i=fGoodBins[0]; i PRunSingleHistoRRF::EstimateN0(): N0=" << n0 << endl; + + return n0; +} + +//-------------------------------------------------------------------------- +// EstimatBkg (private) +//-------------------------------------------------------------------------- +/** + *

Estimate the background for a given interval. + * + * return: + * - true, if everything went smooth + * - false, otherwise + * + * \param histoNo forward histogram number of the run + */ +Bool_t PRunSingleHistoRRF::EstimateBkg(UInt_t histoNo) +{ + Double_t beamPeriod = 0.0; + + // check if data are from PSI, RAL, or TRIUMF + if (fRunInfo->GetInstitute()->Contains("psi")) + beamPeriod = ACCEL_PERIOD_PSI; + else if (fRunInfo->GetInstitute()->Contains("ral")) + beamPeriod = ACCEL_PERIOD_RAL; + else if (fRunInfo->GetInstitute()->Contains("triumf")) + beamPeriod = ACCEL_PERIOD_TRIUMF; + else + beamPeriod = 0.0; + + // check if start and end are in proper order + UInt_t start = fRunInfo->GetBkgRange(0); + UInt_t end = fRunInfo->GetBkgRange(1); + if (end < start) { + cout << endl << "PRunSingleHistoRRF::EstimatBkg(): end = " << end << " > start = " << start << "! Will swap them!"; + UInt_t keep = end; + end = start; + start = keep; + } + + // calculate proper background range + if (beamPeriod != 0.0) { + Double_t timeBkg = (Double_t)(end-start)*(fTimeResolution*fPacking); // length of the background intervall in time + UInt_t fullCycles = (UInt_t)(timeBkg/beamPeriod); // how many proton beam cylces can be placed within the proposed background intervall + // correct the end of the background intervall such that the background is as close as possible to a multiple of the proton cylce + end = start + (UInt_t) ((fullCycles*beamPeriod)/(fTimeResolution*fPacking)); + cout << endl << "PRunSingleHistoRRF::EstimatBkg(): Background " << start << ", " << end; + if (end == start) + end = fRunInfo->GetBkgRange(1); + } + + // check if start is within histogram bounds + if ((start < 0) || (start >= fForward.size())) { + cerr << endl << ">> PRunSingleHistoRRF::EstimatBkg(): **ERROR** background bin values out of bound!"; + cerr << endl << ">> histo lengths = " << fForward.size(); + cerr << endl << ">> background start = " << start; + cerr << endl; + return false; + } + + // check if end is within histogram bounds + if ((end < 0) || (end >= fForward.size())) { + cerr << endl << ">> PRunSingleHistoRRF::EstimatBkg(): **ERROR** background bin values out of bound!"; + cerr << endl << ">> histo lengths = " << fForward.size(); + cerr << endl << ">> background end = " << end; + cerr << endl; + return false; + } + + // calculate background + Double_t bkg = 0.0; + + // forward + for (UInt_t i=start; i(end - start + 1); + + fBackground = bkg * fPacking; // keep background (per bin) + + fRunInfo->SetBkgEstimated(fBackground, 0); + + return true; +} diff --git a/src/include/PRunListCollection.h b/src/include/PRunListCollection.h index 8a741416..acc4018a 100644 --- a/src/include/PRunListCollection.h +++ b/src/include/PRunListCollection.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * @@ -37,6 +37,7 @@ using namespace std; #include "PMsrHandler.h" #include "PRunDataHandler.h" #include "PRunSingleHisto.h" +#include "PRunSingleHistoRRF.h" #include "PRunAsymmetry.h" #include "PRunMuMinus.h" #include "PRunNonMusr.h" @@ -58,6 +59,7 @@ class PRunListCollection virtual void SetFitRange(const TString fitRange); virtual Double_t GetSingleHistoChisq(const std::vector& par) const; + virtual Double_t GetSingleHistoRRFChisq(const std::vector& par) const; virtual Double_t GetAsymmetryChisq(const std::vector& par) const; virtual Double_t GetMuMinusChisq(const std::vector& par) const; virtual Double_t GetNonMusrChisq(const std::vector& par) const; @@ -66,6 +68,7 @@ class PRunListCollection virtual Double_t GetSingleRunChisq(const std::vector& par, const UInt_t idx) const; virtual Double_t GetSingleHistoMaximumLikelihood(const std::vector& par) const; + virtual Double_t GetSingleHistoRRFMaximumLikelihood(const std::vector& par) const; virtual Double_t GetAsymmetryMaximumLikelihood(const std::vector& par) const; virtual Double_t GetMuMinusMaximumLikelihood(const std::vector& par) const; virtual Double_t GetNonMusrMaximumLikelihood(const std::vector& par) const; @@ -74,11 +77,13 @@ class PRunListCollection virtual UInt_t GetTotalNoOfBinsFitted() const; virtual UInt_t GetNoOfSingleHisto() const { return fRunSingleHistoList.size(); } ///< returns the number of single histogram data sets present in the msr-file + virtual UInt_t GetNoOfSingleHistoRRF() const { return fRunSingleHistoRRFList.size(); } ///< returns the number of single histogram RRF data sets present in the msr-file virtual UInt_t GetNoOfAsymmetry() const { return fRunAsymmetryList.size(); } ///< returns the number of asymmetry data sets present in the msr-file virtual UInt_t GetNoOfMuMinus() const { return fRunMuMinusList.size(); } ///< returns the number of mu minus data sets present in the msr-file virtual UInt_t GetNoOfNonMusr() const { return fRunNonMusrList.size(); } ///< returns the number of non-muSR data sets present in the msr-file virtual PRunData* GetSingleHisto(UInt_t index, EDataSwitch tag=kIndex); + virtual PRunData* GetSingleHistoRRF(UInt_t index, EDataSwitch tag=kIndex); virtual PRunData* GetAsymmetry(UInt_t index, EDataSwitch tag=kIndex); virtual PRunData* GetMuMinus(UInt_t index, EDataSwitch tag=kIndex); virtual PRunData* GetNonMusr(UInt_t index, EDataSwitch tag=kIndex); @@ -94,10 +99,11 @@ class PRunListCollection PMsrHandler *fMsrInfo; ///< pointer to the msr-file handler PRunDataHandler *fData; ///< pointer to the run-data handler - vector fRunSingleHistoList; ///< stores all processed single histogram data - vector fRunAsymmetryList; ///< stores all processed asymmetry data - vector fRunMuMinusList; ///< stores all processed mu-minus data - vector fRunNonMusrList; ///< stores all processed non-muSR data + vector fRunSingleHistoList; ///< stores all processed single histogram data + vector fRunSingleHistoRRFList; ///< stores all processed single histogram RRF data + vector fRunAsymmetryList; ///< stores all processed asymmetry data + vector fRunMuMinusList; ///< stores all processed mu-minus data + vector fRunNonMusrList; ///< stores all processed non-muSR data }; #endif // _PRUNLISTCOLLECTION_H_ diff --git a/src/include/PRunSingleHistoRRF.h b/src/include/PRunSingleHistoRRF.h new file mode 100644 index 00000000..17980533 --- /dev/null +++ b/src/include/PRunSingleHistoRRF.h @@ -0,0 +1,79 @@ +/*************************************************************************** + + PRunSingleHistoRRF.h + + Author: Andreas Suter + e-mail: andreas.suter@psi.ch + +***************************************************************************/ + +/*************************************************************************** + * Copyright (C) 2007-2016 by Andreas Suter * + * andreas.suter@psi.ch * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#ifndef _PRUNSINGLEHISTORRF_H_ +#define _PRUNSINGLEHISTORRF_H_ + +#include "PRunBase.h" + +/** + *

Class handling single histogram fit type. + */ +class PRunSingleHistoRRF : public PRunBase +{ + public: + PRunSingleHistoRRF(); + PRunSingleHistoRRF(PMsrHandler *msrInfo, PRunDataHandler *rawData, UInt_t runNo, EPMusrHandleTag tag); + virtual ~PRunSingleHistoRRF(); + + virtual Double_t CalcChiSquare(const std::vector& par); + virtual Double_t CalcChiSquareExpected(const std::vector& par); + virtual Double_t CalcMaxLikelihood(const std::vector& par); + virtual void CalcTheory(); + + virtual UInt_t GetNoOfFitBins(); + + virtual void SetFitRangeBin(const TString fitRange); + + protected: + virtual void CalcNoOfFitBins(); + virtual Bool_t PrepareData(); + virtual Bool_t PrepareFitData(PRawRunData* runData, const UInt_t histoNo); + virtual Bool_t PrepareRawViewData(PRawRunData* runData, const UInt_t histoNo); + virtual Bool_t PrepareViewData(PRawRunData* runData, const UInt_t histoNo); + + private: + static const Double_t N0EstimateEndTime = 2.0; ///< end time in (us) over which N0 is estimated. Should evetually go into the musrfit_startup.xml + + UInt_t fNoOfFitBins; ///< number of bins to be fitted + Double_t fBackground; ///< needed if background range is given (units: 1/bin) + Int_t fPacking; ///< packing for this particular run. Either given in the RUN- or GLOBAL-block. + + Int_t fGoodBins[2]; ///< keep first/last good bins. 0=fgb, 1=lgb + + PDoubleVector fForward; ///< forward histo data + + virtual Bool_t GetProperT0(PRawRunData* runData, PMsrGlobalBlock *globalBlock, PUIntVector &histoNo); + virtual Bool_t GetProperDataRange(); + virtual void GetProperFitRange(PMsrGlobalBlock *globalBlock); + virtual Double_t EstimateN0(); + virtual Bool_t EstimateBkg(UInt_t histoNo); +}; + +#endif // _PRUNSINGLEHISTORRF_H_ diff --git a/src/musrfit.cpp b/src/musrfit.cpp index 060534f0..13e72c18 100644 --- a/src/musrfit.cpp +++ b/src/musrfit.cpp @@ -175,10 +175,10 @@ void musrfit_dump_ascii(char *fileName, PRunListCollection *runList) // go through the run list, get the data and dump it in a file int runCounter = 0; + PRunData *data; // single histos unsigned int size = runList->GetNoOfSingleHisto(); - PRunData *data; if (size > 0) { for (unsigned int i=0; iGetSingleHisto(i); @@ -190,6 +190,19 @@ void musrfit_dump_ascii(char *fileName, PRunListCollection *runList) } } + // single histos + size = runList->GetNoOfSingleHistoRRF(); + if (size > 0) { + for (unsigned int i=0; iGetSingleHistoRRF(i); + if (data) { + // dump data + musrfit_write_ascii(fln, data, runCounter); + runCounter++; + } + } + } + // asymmetry size = runList->GetNoOfAsymmetry(); if (size > 0) { @@ -308,10 +321,10 @@ void musrfit_dump_root(char *fileName, PRunListCollection *runList) // go through the run list, get the data and dump it in a file int runCounter = 0; + PRunData *data; // single histos unsigned int size = runList->GetNoOfSingleHisto(); - PRunData *data; if (size > 0) { for (unsigned int i=0; iGetSingleHisto(i); @@ -323,6 +336,19 @@ void musrfit_dump_root(char *fileName, PRunListCollection *runList) } } + // single histo RRF + size = runList->GetNoOfSingleHistoRRF(); + if (size > 0) { + for (unsigned int i=0; iGetSingleHistoRRF(i); + if (data) { + // dump data + musrfit_write_root(f, fln, data, runCounter); + runCounter++; + } + } + } + // asymmetry size = runList->GetNoOfAsymmetry(); if (size > 0) { From 7d315b2b86cb3d9169fcfb49b44d1360aa5d88d7 Mon Sep 17 00:00:00 2001 From: Suter Andreas Date: Wed, 6 Jan 2016 17:33:41 +0100 Subject: [PATCH 05/22] implemented proper error propagation and improved N0 estimate. --- src/classes/PRunSingleHistoRRF.cpp | 82 +++++++++++++++++++++--------- src/include/PRunSingleHistoRRF.h | 10 ++-- 2 files changed, 65 insertions(+), 27 deletions(-) diff --git a/src/classes/PRunSingleHistoRRF.cpp b/src/classes/PRunSingleHistoRRF.cpp index 856935af..60f69ca7 100644 --- a/src/classes/PRunSingleHistoRRF.cpp +++ b/src/classes/PRunSingleHistoRRF.cpp @@ -563,11 +563,13 @@ Bool_t PRunSingleHistoRRF::PrepareData() Bool_t PRunSingleHistoRRF::PrepareFitData(PRawRunData* runData, const UInt_t histoNo) { // keep the raw data for the RRF asymmetry error estimate for later - PDoubleVector sqrtNt; + PDoubleVector rawNt; for (UInt_t i=0; iGetBkgFitParamNo() == -1) { // bkg shall **NOT** be fitted // subtract background from histogramms ------------------------------------------ @@ -589,8 +591,10 @@ Bool_t PRunSingleHistoRRF::PrepareFitData(PRawRunData* runData, const UInt_t his for (UInt_t i=0; iGetBkgFix(0); } + fBackground = fRunInfo->GetBkgFix(0); } } + // here fForward = N(t) - Nbkg Int_t t0 = (Int_t)fT0s[0]; @@ -601,20 +605,40 @@ Bool_t PRunSingleHistoRRF::PrepareFitData(PRawRunData* runData, const UInt_t his cout << endl << "debug> PRunSingleHistoRRF::PrepareFitData(): endTime =" << startTime+fTimeResolution*((Double_t)fGoodBins[1]-(Double_t)t0) << endl; Double_t time_tau=0.0; + Double_t exp_t_tau=0.0; for (Int_t i=fGoodBins[0]; i 0.0) + fW.push_back(1.0/(fMerr[i]*fMerr[i])); + else + fW.push_back(0.0); + } + // now fForward = exp(+t/tau) [N(t)-Nbkg] = M(t) // 3) estimate N0 - Double_t n0 = EstimateN0(); + Double_t errN0 = 0.0; + Double_t n0 = EstimateN0(errN0); - // 4) A(t) = exp(+t/tau) [N(t)-Nbkg] / N0 - 1.0 + // 4a) A(t) = exp(+t/tau) [N(t)-Nbkg] / N0 - 1.0 for (Int_t i=fGoodBins[0]; i A(t) * cos(wRRF t + phiRRF) + // 4b) error estimate of A(t): errA(t) = exp(+t/tau)/N0 sqrt( N(t) + ([N(t)-N_bkg]/N0)^2 errN0^2 ) + for (Int_t i=fGoodBins[0]; i 2* A(t) * cos(wRRF t + phiRRF), the factor 2.0 is needed since the high frequency part is suppressed. PMsrGlobalBlock *globalBlock = fMsrInfo->GetMsrGlobal(); Double_t wRRF = globalBlock->GetRRFFreq("Mc"); Double_t phaseRRF = globalBlock->GetRRFPhase()*TMath::TwoPi()/180.0; @@ -623,7 +647,7 @@ Bool_t PRunSingleHistoRRF::PrepareFitData(PRawRunData* runData, const UInt_t his Double_t time = 0.0; for (Int_t i=fGoodBins[0]; iEstimate the N0 for the given run. + * + * \param sqrtNt + * \param errN0 */ -Double_t PRunSingleHistoRRF::EstimateN0() +Double_t PRunSingleHistoRRF::EstimateN0(Double_t &errN0) { - Int_t endBin = N0EstimateEndTime / fTimeResolution; + Int_t endBin = N0EstimateEndTime / fTimeResolution - fGoodBins[0]; Double_t n0 = 0.0; - cout << "debug> PRunSingleHistoRRF::EstimateN0(): startBin=" << fGoodBins[0] << ", endBin=" << endBin << endl; - for (Int_t i=fGoodBins[0]; i PRunSingleHistoRRF::EstimateN0(): endBin=" << endBin << endl; + for (Int_t i=0; i PRunSingleHistoRRF::EstimateN0(): N0=" << n0 << endl; + n0 /= wN; + + errN0 = 0.0; + for (Int_t i=0; i PRunSingleHistoRRF::EstimateN0(): N0=" << n0 << "(" << errN0 << ")" << endl; return n0; } @@ -1475,7 +1507,9 @@ Bool_t PRunSingleHistoRRF::EstimateBkg(UInt_t histoNo) bkg += fForward[i]; bkg /= static_cast(end - start + 1); - fBackground = bkg * fPacking; // keep background (per bin) + fBackground = bkg; // keep background (per bin) + + cout << endl << "debug> fBackground=" << fBackground << endl; fRunInfo->SetBkgEstimated(fBackground, 0); diff --git a/src/include/PRunSingleHistoRRF.h b/src/include/PRunSingleHistoRRF.h index 17980533..0f60d6c7 100644 --- a/src/include/PRunSingleHistoRRF.h +++ b/src/include/PRunSingleHistoRRF.h @@ -65,14 +65,18 @@ class PRunSingleHistoRRF : public PRunBase Double_t fBackground; ///< needed if background range is given (units: 1/bin) Int_t fPacking; ///< packing for this particular run. Either given in the RUN- or GLOBAL-block. - Int_t fGoodBins[2]; ///< keep first/last good bins. 0=fgb, 1=lgb + Int_t fGoodBins[2]; ///< keep first/last good bins. 0=fgb, 1=lgb - PDoubleVector fForward; ///< forward histo data + PDoubleVector fForward; ///< forward histo data + PDoubleVector fM; ///< vector holding M(t) = [N(t)-N_bkg] exp(+t/tau). Needed to estimate N0. + PDoubleVector fMerr; ///< vector holding the error of M(t): M_err = exp(+t/tau) sqrt(N(t)). + PDoubleVector fW; ///< vector holding the weight needed to estimate N0, and errN0. + PDoubleVector fAerr; ///< vector holding the errors of estimated A(t) virtual Bool_t GetProperT0(PRawRunData* runData, PMsrGlobalBlock *globalBlock, PUIntVector &histoNo); virtual Bool_t GetProperDataRange(); virtual void GetProperFitRange(PMsrGlobalBlock *globalBlock); - virtual Double_t EstimateN0(); + virtual Double_t EstimateN0(Double_t &errN0); virtual Bool_t EstimateBkg(UInt_t histoNo); }; From 097a6db6b0a9f0a0411b194e76cb9dc5a8d29530 Mon Sep 17 00:00:00 2001 From: Suter Andreas Date: Thu, 7 Jan 2016 13:19:00 +0100 Subject: [PATCH 06/22] more work towards fully functional RRF single histo fit --- src/classes/PMsrHandler.cpp | 23 +- src/classes/PMusr.cpp | 4 - src/classes/PMusrCanvas.cpp | 180 ++++++---- src/classes/PRunListCollection.cpp | 20 +- src/classes/PRunSingleHistoRRF.cpp | 540 +++++------------------------ src/include/PMusr.h | 9 +- src/include/PRunSingleHistoRRF.h | 3 +- 7 files changed, 227 insertions(+), 552 deletions(-) diff --git a/src/classes/PMsrHandler.cpp b/src/classes/PMsrHandler.cpp index 3a3148d0..e1a19754 100644 --- a/src/classes/PMsrHandler.cpp +++ b/src/classes/PMsrHandler.cpp @@ -636,12 +636,8 @@ Int_t PMsrHandler::WriteMsrLogFile(const Bool_t messages) fout.width(16); fout << left << "rrf_freq "; fout.width(8); - -cout << "debug> PMsrHandler::WriteMsrLogFile(): fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data())=" << fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data()) << endl; -neededPrec = LastSignificant(fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data()),10); -cout << "debug> PMsrHandler::WriteMsrLogFile(): neededPrec=" << neededPrec << endl; -fout.precision(neededPrec); - + neededPrec = LastSignificant(fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data()),10); + fout.precision(neededPrec); fout << left << fixed << fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data()); fout << " " << fGlobal.GetRRFUnit(); fout << endl; @@ -1140,6 +1136,9 @@ fout.precision(neededPrec); case MSR_PLOT_SINGLE_HISTO: fout << "PLOT " << fPlots[plotNo].fPlotType << " (single histo plot)" << endl; break; + case MSR_PLOT_SINGLE_HISTO_RRF: + fout << "PLOT " << fPlots[plotNo].fPlotType << " (single histo RRF plot)" << endl; + break; case MSR_PLOT_ASYM: fout << "PLOT " << fPlots[plotNo].fPlotType << " (asymmetry plot)" << endl; break; @@ -1656,7 +1655,6 @@ Int_t PMsrHandler::WriteMsrFile(const Char_t *filename, map *co fout.width(16); fout << left << "rrf_freq "; fout.width(8); -cout << "debug> PMsrHandler::WriteMsrFile(): fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data())=" << fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data()) << endl; fout << left << fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data()); fout << " " << fGlobal.GetRRFUnit(); fout << endl; @@ -2166,6 +2164,9 @@ cout << "debug> PMsrHandler::WriteMsrFile(): fGlobal.GetRRFFreq(fGlobal.GetRRFUn case MSR_PLOT_SINGLE_HISTO: fout << "PLOT " << fPlots[i].fPlotType << " (single histo plot)" << endl; break; + case MSR_PLOT_SINGLE_HISTO_RRF: + fout << "PLOT " << fPlots[i].fPlotType << " (single histo RRF plot)" << endl; + break; case MSR_PLOT_ASYM: fout << "PLOT " << fPlots[i].fPlotType << " (asymmetry plot)" << endl; break; @@ -4136,6 +4137,7 @@ Bool_t PMsrHandler::HandlePlotEntry(PMsrLines &lines) error = true; break; case MSR_PLOT_SINGLE_HISTO: // like: runs 1 5 13 + case MSR_PLOT_SINGLE_HISTO_RRF: case MSR_PLOT_ASYM: case MSR_PLOT_NON_MUSR: case MSR_PLOT_MU_MINUS: @@ -5789,6 +5791,11 @@ Bool_t PMsrHandler::CheckRRFSettings() } } + // if not a RRF fit, done at this point + if (fittype != MSR_FITTYPE_SINGLE_HISTO_RRF) { + return true; + } + // second set of tests: if RRF fit is chosen, do I find the necessary RRF parameters? fittype = fGlobal.GetFitType(); if (fittype == MSR_FITTYPE_SINGLE_HISTO_RRF) { // make sure RRF freq and RRF packing are set @@ -5802,7 +5809,7 @@ Bool_t PMsrHandler::CheckRRFSettings() cerr << endl << ">> no RRF packing found in the GLOBAL section! Fix it."; return false; } - } else { + } else { // check single runs for RRF UInt_t rrfFitCounter = 0; for (UInt_t i=0; i PMsrGlobalBlock::GetRRFFreq(" << unit << "): unitTag=" << unitTag << ", fRRFFreq=" << fRRFFreq; - // calc the conversion factor if (unitTag == fRRFUnitTag) freq = fRRFFreq; @@ -770,8 +768,6 @@ cout << endl << "debug> PMsrGlobalBlock::GetRRFFreq(" << unit << "): unitTag=" < else if ((unitTag == RRF_UNIT_T) && (fRRFUnitTag == RRF_UNIT_Mcs)) freq = fRRFFreq/(TMath::TwoPi()*GAMMA_BAR_MUON)*1e-4; // 1e-4 need for G -> T since GAMMA_BAR_MUON is given in MHz/G -cout << endl << "debug> PMsrGlobalBlock::GetRRFFreq(" << unit << "): freq=" << freq << endl; - return freq; } diff --git a/src/classes/PMusrCanvas.cpp b/src/classes/PMusrCanvas.cpp index e34486bf..1982aa4b 100644 --- a/src/classes/PMusrCanvas.cpp +++ b/src/classes/PMusrCanvas.cpp @@ -75,7 +75,7 @@ PMusrCanvasPlotRange::PMusrCanvasPlotRange() void PMusrCanvasPlotRange::SetXRange(Double_t xmin, Double_t xmax) { if (xmin > xmax) { - cerr << endl << "PMusrCanvasPlotRange::SetXRange: **WARNING** xmin > xmax, will swap them." << endl; + cerr << endl << ">> PMusrCanvasPlotRange::SetXRange(): **WARNING** xmin > xmax, will swap them." << endl; fXmin = xmax; fXmax = xmin; } else { @@ -97,7 +97,7 @@ void PMusrCanvasPlotRange::SetXRange(Double_t xmin, Double_t xmax) void PMusrCanvasPlotRange::SetYRange(Double_t ymin, Double_t ymax) { if (ymin > ymax) { - cerr << endl << "PMusrCanvasPlotRange::SetYRange: **WARNING** ymin > ymax, will swap them." << endl; + cerr << endl << ">> PMusrCanvasPlotRange::SetYRange(): **WARNING** ymin > ymax, will swap them." << endl; fYmin = ymax; fYmax = ymin; } else { @@ -405,37 +405,72 @@ void PMusrCanvas::SetMsrHandler(PMsrHandler *msrHandler) } // check if RRF data are present - if ((fMsrHandler->GetMsrPlotList()->at(0).fRRFPacking > 0) && - (fMsrHandler->GetMsrPlotList()->at(0).fRRFFreq != 0.0)) { + if (((fMsrHandler->GetMsrPlotList()->at(0).fRRFPacking > 0) && + (fMsrHandler->GetMsrPlotList()->at(0).fRRFFreq != 0.0)) || + (fMsrHandler->GetMsrGlobal()->GetRRFPacking() > 0 && + fMsrHandler->GetMsrGlobal()->GetRRFUnit().CompareTo("??"))) { fRRFLatexText = new TLatex(); fRRFLatexText->SetNDC(kTRUE); fRRFLatexText->SetTextFont(62); fRRFLatexText->SetTextSize(0.03); - fRRFText = new TString("RRF: "); - if (fMsrHandler->GetMsrPlotList()->at(0).fRRFUnit == RRF_UNIT_kHz) { - *fRRFText += TString("#nu_{RRF} = "); - *fRRFText += fMsrHandler->GetMsrPlotList()->at(0).fRRFFreq; - *fRRFText += TString(" (kHz)"); - } else if (fMsrHandler->GetMsrPlotList()->at(0).fRRFUnit == RRF_UNIT_MHz) { - *fRRFText += TString("#nu_{RRF} = "); - *fRRFText += fMsrHandler->GetMsrPlotList()->at(0).fRRFFreq; - *fRRFText += TString(" (MHz)"); - } else if (fMsrHandler->GetMsrPlotList()->at(0).fRRFUnit == RRF_UNIT_Mcs) { - *fRRFText += TString("#omega_{RRF} = "); - *fRRFText += fMsrHandler->GetMsrPlotList()->at(0).fRRFFreq; - *fRRFText += TString(" (Mc/s)"); - } else if (fMsrHandler->GetMsrPlotList()->at(0).fRRFUnit == RRF_UNIT_G) { - *fRRFText += TString("B_{RRF} = "); - *fRRFText += fMsrHandler->GetMsrPlotList()->at(0).fRRFFreq; - *fRRFText += TString(" (G)"); - } else if (fMsrHandler->GetMsrPlotList()->at(0).fRRFUnit == RRF_UNIT_T) { - *fRRFText += TString("B_{RRF} = "); - *fRRFText += fMsrHandler->GetMsrPlotList()->at(0).fRRFFreq; - *fRRFText += TString(" (T)"); + Int_t rrfUnitTag = -1; + Double_t rrfFreq = 0.0; + if (fMsrHandler->GetMsrPlotList()->at(0).fRRFPacking > 0) { // RRF single histo PLOT + fRRFText = new TString("RRF: "); + rrfUnitTag = fMsrHandler->GetMsrPlotList()->at(0).fRRFUnit; + rrfFreq = fMsrHandler->GetMsrPlotList()->at(0).fRRFFreq; + if (rrfUnitTag == RRF_UNIT_kHz) { + *fRRFText += TString("#nu_{RRF} = "); + *fRRFText += rrfFreq; + *fRRFText += TString(" (kHz)"); + } else if (rrfUnitTag == RRF_UNIT_MHz) { + *fRRFText += TString("#nu_{RRF} = "); + *fRRFText += rrfFreq; + *fRRFText += TString(" (MHz)"); + } else if (rrfUnitTag == RRF_UNIT_Mcs) { + *fRRFText += TString("#omega_{RRF} = "); + *fRRFText += rrfFreq; + *fRRFText += TString(" (Mc/s)"); + } else if (rrfUnitTag == RRF_UNIT_G) { + *fRRFText += TString("B_{RRF} = "); + *fRRFText += rrfFreq; + *fRRFText += TString(" (G)"); + } else if (rrfUnitTag == RRF_UNIT_T) { + *fRRFText += TString("B_{RRF} = "); + *fRRFText += rrfFreq; + *fRRFText += TString(" (T)"); + } + *fRRFText += TString(", RRF packing = "); + *fRRFText += fMsrHandler->GetMsrPlotList()->at(0).fRRFPacking; + } else { // RRF single histo FIT + fRRFText = new TString("RRF: "); + rrfUnitTag = fMsrHandler->GetMsrGlobal()->GetRRFUnitTag(); + rrfFreq = fMsrHandler->GetMsrGlobal()->GetRRFFreq(fMsrHandler->GetMsrGlobal()->GetRRFUnit().Data()); + if (rrfUnitTag == RRF_UNIT_kHz) { + *fRRFText += TString("#nu_{RRF} = "); + *fRRFText += rrfFreq; + *fRRFText += TString(" (kHz)"); + } else if (rrfUnitTag == RRF_UNIT_MHz) { + *fRRFText += TString("#nu_{RRF} = "); + *fRRFText += rrfFreq; + *fRRFText += TString(" (MHz)"); + } else if (rrfUnitTag == RRF_UNIT_Mcs) { + *fRRFText += TString("#omega_{RRF} = "); + *fRRFText += rrfFreq; + *fRRFText += TString(" (Mc/s)"); + } else if (rrfUnitTag == RRF_UNIT_G) { + *fRRFText += TString("B_{RRF} = "); + *fRRFText += rrfFreq; + *fRRFText += TString(" (G)"); + } else if (rrfUnitTag == RRF_UNIT_T) { + *fRRFText += TString("B_{RRF} = "); + *fRRFText += rrfFreq; + *fRRFText += TString(" (T)"); + } + *fRRFText += TString(", RRF packing = "); + *fRRFText += fMsrHandler->GetMsrGlobal()->GetRRFPacking(); } - *fRRFText += TString(", RRF packing = "); - *fRRFText += fMsrHandler->GetMsrPlotList()->at(0).fRRFPacking; } } @@ -609,7 +644,7 @@ void PMusrCanvas::UpdateDataTheoryPad() // first check that plot number is smaller than the maximal number of runs if ((Int_t)plotInfo.fRuns[i] > (Int_t)runs.size()) { fValid = false; - cerr << endl << "PMusrCanvas::UpdateDataTheoryPad: **ERROR** run plot number " << (Int_t)plotInfo.fRuns[i] << " is larger than the number of runs " << runs.size(); + cerr << endl << ">> PMusrCanvas::UpdateDataTheoryPad(): **ERROR** run plot number " << (Int_t)plotInfo.fRuns[i] << " is larger than the number of runs " << runs.size(); cerr << endl; return; } @@ -620,7 +655,7 @@ void PMusrCanvas::UpdateDataTheoryPad() } if (fitType == -1) { fValid = false; - cerr << endl << "PMusrCanvas::UpdateDataTheoryPad: **ERROR** plottype = " << fPlotType; + cerr << endl << ">> PMusrCanvas::UpdateDataTheoryPad(): **ERROR** plottype = " << fPlotType; cerr << ", fittype = " << runs[runNo].GetFitType() << "(RUN block)/"; cerr << "fittype = " << globalBlock->GetFitType() << "(GLOBAL block). However, they have to correspond!"; cerr << endl; @@ -643,7 +678,19 @@ void PMusrCanvas::UpdateDataTheoryPad() if (!data) { // something wrong fValid = false; // error message - cerr << endl << "PMusrCanvas::UpdateDataTheoryPad: **ERROR** couldn't obtain run no " << runNo << " for a single histogram plot"; + cerr << endl << ">> PMusrCanvas::UpdateDataTheoryPad(): **ERROR** couldn't obtain run no " << runNo << " for a single histogram plot"; + cerr << endl; + return; + } + // handle data + HandleDataSet(i, runNo, data); + break; + case MSR_FITTYPE_SINGLE_HISTO_RRF: + data = fRunList->GetSingleHistoRRF(runNo, PRunListCollection::kRunNo); + if (!data) { // something wrong + fValid = false; + // error message + cerr << endl << ">> PMusrCanvas::UpdateDataTheoryPad(): **ERROR** couldn't obtain run no " << runNo << " for a single histogram RRF plot"; cerr << endl; return; } @@ -655,7 +702,7 @@ void PMusrCanvas::UpdateDataTheoryPad() if (!data) { // something wrong fValid = false; // error message - cerr << endl << "PMusrCanvas::UpdateDataTheoryPad: **ERROR** couldn't obtain run no " << runNo << " for a asymmetry plot"; + cerr << endl << ">> PMusrCanvas::UpdateDataTheoryPad(): **ERROR** couldn't obtain run no " << runNo << " for a asymmetry plot"; cerr << endl; return; } @@ -667,7 +714,7 @@ void PMusrCanvas::UpdateDataTheoryPad() if (!data) { // something wrong fValid = false; // error message - cerr << endl << "PMusrCanvas::UpdateDataTheoryPad: **ERROR** couldn't obtain run no " << runNo << " for a mu minus single histogram plot"; + cerr << endl << ">> PMusrCanvas::UpdateDataTheoryPad(): **ERROR** couldn't obtain run no " << runNo << " for a mu minus single histogram plot"; cerr << endl; return; } @@ -679,7 +726,7 @@ void PMusrCanvas::UpdateDataTheoryPad() if (!data) { // something wrong fValid = false; // error message - cerr << endl << "PMusrCanvas::UpdateDataTheoryPad: **ERROR** couldn't obtain run no " << runNo << " for a none musr data plot"; + cerr << endl << ">> PMusrCanvas::UpdateDataTheoryPad(): **ERROR** couldn't obtain run no " << runNo << " for a none musr data plot"; cerr << endl; return; } @@ -699,7 +746,7 @@ void PMusrCanvas::UpdateDataTheoryPad() default: fValid = false; // error message - cerr << endl << "PMusrCanvas::UpdateDataTheoryPad: **ERROR** wrong plottype tag?!"; + cerr << endl << ">> PMusrCanvas::UpdateDataTheoryPad(): **ERROR** wrong plottype tag?!"; cerr << endl; return; break; @@ -1409,7 +1456,7 @@ void PMusrCanvas::SaveGraphicsAndQuit(Char_t *fileName, Char_t *graphicsFormat) } if (idx == -1) { - cerr << endl << "PMusrCanvas::SaveGraphicsAndQuit **ERROR**: fileName (" << fileName << ") is invalid." << endl; + cerr << endl << ">> PMusrCanvas::SaveGraphicsAndQuit(): **ERROR** fileName (" << fileName << ") is invalid." << endl; return; } @@ -1439,7 +1486,7 @@ void PMusrCanvas::SaveGraphicsAndQuit(Char_t *fileName, Char_t *graphicsFormat) void PMusrCanvas::ExportData(const Char_t *fileName) { if (fileName == 0) { // path file name NOT provided, generate a default path file name - cerr << endl << ">> PMusrCanvas::ExportData **ERROR** NO path file name provided. Will do nothing." << endl; + cerr << endl << ">> PMusrCanvas::ExportData(): **ERROR** NO path file name provided. Will do nothing." << endl; return; } @@ -2094,7 +2141,7 @@ void PMusrCanvas::ExportData(const Char_t *fileName) // open output data-file fout.open(fileName, iostream::out); if (!fout.is_open()) { - cerr << endl << ">> PMusrCanvas::ExportData: **ERROR** couldn't open file " << fileName << " for writing." << endl; + cerr << endl << ">> PMusrCanvas::ExportData(): **ERROR** couldn't open file " << fileName << " for writing." << endl; return; } @@ -2433,7 +2480,7 @@ void PMusrCanvas::InitMusrCanvas(const Char_t* title, Int_t wtopx, Int_t wtopy, canvasName += fPlotNumber; fMainCanvas = new TCanvas(canvasName.Data(), title, wtopx, wtopy, ww, wh); if (fMainCanvas == 0) { - cerr << endl << "PMusrCanvas::PMusrCanvas: **PANIC ERROR**: Couldn't invoke " << canvasName.Data(); + cerr << endl << ">> PMusrCanvas::PMusrCanvas(): **PANIC ERROR** Couldn't invoke " << canvasName.Data(); cerr << endl; return; } @@ -2479,7 +2526,7 @@ void PMusrCanvas::InitMusrCanvas(const Char_t* title, Int_t wtopx, Int_t wtopy, // title pad fTitlePad = new TPaveText(0.0, YTITLE, 1.0, 1.0, "NDC"); if (fTitlePad == 0) { - cerr << endl << "PMusrCanvas::PMusrCanvas: **PANIC ERROR**: Couldn't invoke fTitlePad"; + cerr << endl << ">> PMusrCanvas::PMusrCanvas(): **PANIC ERROR** Couldn't invoke fTitlePad"; cerr << endl; return; } @@ -2491,7 +2538,7 @@ void PMusrCanvas::InitMusrCanvas(const Char_t* title, Int_t wtopx, Int_t wtopy, // data/theory pad fDataTheoryPad = new TPad("dataTheoryPad", "dataTheoryPad", 0.0, YINFO, XTHEO, YTITLE); if (fDataTheoryPad == 0) { - cerr << endl << "PMusrCanvas::PMusrCanvas: **PANIC ERROR**: Couldn't invoke fDataTheoryPad"; + cerr << endl << ">> PMusrCanvas::PMusrCanvas(): **PANIC ERROR** Couldn't invoke fDataTheoryPad"; cerr << endl; return; } @@ -2501,7 +2548,7 @@ void PMusrCanvas::InitMusrCanvas(const Char_t* title, Int_t wtopx, Int_t wtopy, // parameter pad fParameterPad = new TPaveText(XTHEO, 0.5, 1.0, YTITLE, "NDC"); if (fParameterPad == 0) { - cerr << endl << "PMusrCanvas::PMusrCanvas: **PANIC ERROR**: Couldn't invoke fParameterPad"; + cerr << endl << ">> PMusrCanvas::PMusrCanvas(): **PANIC ERROR** Couldn't invoke fParameterPad"; cerr << endl; return; } @@ -2512,7 +2559,7 @@ void PMusrCanvas::InitMusrCanvas(const Char_t* title, Int_t wtopx, Int_t wtopy, // theory pad fTheoryPad = new TPaveText(XTHEO, 0.1, 1.0, 0.5, "NDC"); if (fTheoryPad == 0) { - cerr << endl << "PMusrCanvas::PMusrCanvas: **PANIC ERROR**: Couldn't invoke fTheoryPad"; + cerr << endl << ">> PMusrCanvas::PMusrCanvas(): **PANIC ERROR** Couldn't invoke fTheoryPad"; cerr << endl; return; } @@ -2524,7 +2571,7 @@ void PMusrCanvas::InitMusrCanvas(const Char_t* title, Int_t wtopx, Int_t wtopy, // info pad fInfoPad = new TLegend(0.0, 0.0, 1.0, YINFO, "NDC"); if (fInfoPad == 0) { - cerr << endl << "PMusrCanvas::PMusrCanvas: **PANIC ERROR**: Couldn't invoke fInfoPad"; + cerr << endl << ">> PMusrCanvas::PMusrCanvas(): **PANIC ERROR** Couldn't invoke fInfoPad"; cerr << endl; return; } @@ -2929,9 +2976,9 @@ void PMusrCanvas::HandleDataSet(UInt_t plotNo, UInt_t runNo, PRunData *data) Double_t dval = (startFitRange - data->GetDataTimeStart())/data->GetDataTimeStep(); if (dval < 0.0) { // make sure that startBin >= 0 startBin = 0; - cerr << endl << "PMusrCanvas::HandleDataSet() **WARNING** found startBin data < 0 for 'use_fit_range', will set it to 0" << endl << endl; + cerr << endl << ">> PMusrCanvas::HandleDataSet(): **WARNING** found startBin data < 0 for 'use_fit_range', will set it to 0" << endl << endl; } else if (dval >= (Double_t)data->GetValue()->size()) { // make sure that startBin <= length of data vector - cerr << endl << ">> PMusrCanvas::HandleDataSet() **WARNING** found startBin data=" << (UInt_t)dval << " >= data vector size=" << data->GetValue()->size() << " for 'use_fit_range',"; + cerr << endl << ">> PMusrCanvas::HandleDataSet(): **WARNING** found startBin data=" << (UInt_t)dval << " >= data vector size=" << data->GetValue()->size() << " for 'use_fit_range',"; cerr << endl << ">> will set it to data vector size" << endl << endl; startBin = data->GetValue()->size(); } else { @@ -2945,9 +2992,9 @@ void PMusrCanvas::HandleDataSet(UInt_t plotNo, UInt_t runNo, PRunData *data) dval = (endFitRange - data->GetDataTimeStart())/data->GetDataTimeStep(); if (dval < 0.0) { // make sure that endBin >= 0 endBin = 0; - cerr << endl << "PMusrCanvas::HandleDataSet() **WARNING** found endBin data < 0 for 'use_fit_range', will set it to 0" << endl << endl; + cerr << endl << ">> PMusrCanvas::HandleDataSet(): **WARNING** found endBin data < 0 for 'use_fit_range', will set it to 0" << endl << endl; } else if (dval >= (Double_t)data->GetValue()->size()) { // make sure that endBin <= length of data vector - cerr << endl << ">> PMusrCanvas::HandleDataSet() **WARNING** found endBin data=" << (UInt_t)dval << " >= data vector size=" << data->GetValue()->size() << " for 'use_fit_range',"; + cerr << endl << ">> PMusrCanvas::HandleDataSet(): **WARNING** found endBin data=" << (UInt_t)dval << " >= data vector size=" << data->GetValue()->size() << " for 'use_fit_range',"; cerr << endl << ">> will set it to data vector size" << endl << endl; endBin = data->GetValue()->size(); } else { @@ -2960,9 +3007,9 @@ void PMusrCanvas::HandleDataSet(UInt_t plotNo, UInt_t runNo, PRunData *data) Double_t dval = (fMsrHandler->GetMsrPlotList()->at(fPlotNumber).fTmin[runNo] - data->GetDataTimeStart())/data->GetDataTimeStep(); if (dval < 0.0) { // make sure that startBin >= 0 startBin = 0; - cerr << endl << "PMusrCanvas::HandleDataSet() **WARNING** found startBin data < 0 for 'sub_ranges', will set it to 0" << endl << endl; + cerr << endl << ">> PMusrCanvas::HandleDataSet(): **WARNING** found startBin data < 0 for 'sub_ranges', will set it to 0" << endl << endl; } else if (dval >= (Double_t)data->GetValue()->size()) { // make sure that startBin <= length of data vector - cerr << endl << ">> PMusrCanvas::HandleDataSet() **WARNING** found startBin data=" << (UInt_t)dval << " >= data vector size=" << data->GetValue()->size() << " for 'sub_ranges',"; + cerr << endl << ">> PMusrCanvas::HandleDataSet(): **WARNING** found startBin data=" << (UInt_t)dval << " >= data vector size=" << data->GetValue()->size() << " for 'sub_ranges',"; cerr << endl << ">> will set it to data vector size" << endl << endl; startBin = data->GetValue()->size(); } else { @@ -2972,9 +3019,9 @@ void PMusrCanvas::HandleDataSet(UInt_t plotNo, UInt_t runNo, PRunData *data) dval = (fMsrHandler->GetMsrPlotList()->at(fPlotNumber).fTmax[runNo] - data->GetDataTimeStart())/data->GetDataTimeStep(); if (dval < 0.0) { // make sure that endBin >= 0 endBin = 0; - cerr << endl << "PMusrCanvas::HandleDataSet() **WARNING** found endBin data < 0 for 'sub_ranges', will set it to 0" << endl << endl; + cerr << endl << ">> PMusrCanvas::HandleDataSet(): **WARNING** found endBin data < 0 for 'sub_ranges', will set it to 0" << endl << endl; } else if (dval >= (Double_t)data->GetValue()->size()) { // make sure that endtBin <= length of data vector - cerr << endl << ">> PMusrCanvas::HandleDataSet() **WARNING** found endBin data=" << (UInt_t)dval << " >= data vector size=" << data->GetValue()->size() << " for 'sub_ranges',"; + cerr << endl << ">> PMusrCanvas::HandleDataSet(): **WARNING** found endBin data=" << (UInt_t)dval << " >= data vector size=" << data->GetValue()->size() << " for 'sub_ranges',"; cerr << endl << ">> will set it to data vector size" << endl << endl; endBin = data->GetValue()->size(); } else { @@ -3061,9 +3108,9 @@ void PMusrCanvas::HandleDataSet(UInt_t plotNo, UInt_t runNo, PRunData *data) Double_t dval = (startFitRange - data->GetDataTimeStart())/data->GetTheoryTimeStep(); if (dval < 0.0) { // make sure that startBin >= 0 startBin = 0; - cerr << endl << "PMusrCanvas::HandleDataSet() **WARNING** found startBin theory < 0 for 'use_fit_range', will set it to 0" << endl << endl; + cerr << endl << ">> PMusrCanvas::HandleDataSet(): **WARNING** found startBin theory < 0 for 'use_fit_range', will set it to 0" << endl << endl; } else if (dval >= (Double_t)data->GetTheory()->size()) { // make sure that startBin <= length of theory vector - cerr << endl << ">> PMusrCanvas::HandleDataSet() **WARNING** found startBin theory=" << (UInt_t)dval << " >= theory vector size=" << data->GetTheory()->size() << " for 'use_fit_range',"; + cerr << endl << ">> PMusrCanvas::HandleDataSet(): **WARNING** found startBin theory=" << (UInt_t)dval << " >= theory vector size=" << data->GetTheory()->size() << " for 'use_fit_range',"; cerr << endl << ">> will set it to theory vector size" << endl << endl; startBin = data->GetTheory()->size(); } else { @@ -3077,9 +3124,9 @@ void PMusrCanvas::HandleDataSet(UInt_t plotNo, UInt_t runNo, PRunData *data) dval = (endFitRange - data->GetDataTimeStart())/data->GetTheoryTimeStep(); if (dval < 0.0) { // make sure that endBin >= 0 endBin = 0; - cerr << endl << "PMusrCanvas::HandleDataSet() **WARNING** found endBin theory < 0 for 'use_fit_range', will set it to 0" << endl << endl; + cerr << endl << ">> PMusrCanvas::HandleDataSet(): **WARNING** found endBin theory < 0 for 'use_fit_range', will set it to 0" << endl << endl; } else if (dval >= (Double_t)data->GetTheory()->size()) { // make sure that endBin <= length of theory vector - cerr << endl << ">> PMusrCanvas::HandleDataSet() **WARNING** found endBin theory=" << (UInt_t)dval << " >= theory vector size=" << data->GetTheory()->size() << " for 'use_fit_range',"; + cerr << endl << ">> PMusrCanvas::HandleDataSet(): **WARNING** found endBin theory=" << (UInt_t)dval << " >= theory vector size=" << data->GetTheory()->size() << " for 'use_fit_range',"; cerr << endl << ">> will set it to theory vector size" << endl << endl; endBin = data->GetTheory()->size(); } else { @@ -3095,9 +3142,9 @@ void PMusrCanvas::HandleDataSet(UInt_t plotNo, UInt_t runNo, PRunData *data) Double_t dval = (fMsrHandler->GetMsrPlotList()->at(fPlotNumber).fTmin[runNo] -data->GetDataTimeStart())/data->GetTheoryTimeStep(); if (dval < 0.0) { // make sure that startBin >= 0 startBin = 0; - cerr << endl << "PMusrCanvas::HandleDataSet() **WARNING** found startBin theory < 0 for 'sub_ranges', will set it to 0" << endl << endl; + cerr << endl << ">> PMusrCanvas::HandleDataSet(): **WARNING** found startBin theory < 0 for 'sub_ranges', will set it to 0" << endl << endl; } else if (dval >= (Double_t)data->GetTheory()->size()) { // make sure that startBin <= length of theory vector - cerr << endl << ">> PMusrCanvas::HandleDataSet() **WARNING** found startBin theory=" << (UInt_t)dval << " >= theory vector size=" << data->GetTheory()->size() << " for 'sub_ranges',"; + cerr << endl << ">> PMusrCanvas::HandleDataSet(): **WARNING** found startBin theory=" << (UInt_t)dval << " >= theory vector size=" << data->GetTheory()->size() << " for 'sub_ranges',"; cerr << endl << ">> will set it to theory vector size" << endl << endl; startBin = data->GetTheory()->size(); } else { @@ -3107,9 +3154,9 @@ void PMusrCanvas::HandleDataSet(UInt_t plotNo, UInt_t runNo, PRunData *data) dval = (fMsrHandler->GetMsrPlotList()->at(fPlotNumber).fTmax[runNo] -data->GetDataTimeStart())/data->GetTheoryTimeStep(); if (dval < 0.0) { // make sure that endBin >= 0 endBin = 0; - cerr << endl << "PMusrCanvas::HandleDataSet() **WARNING** found endBin theory < 0 for 'sub_ranges', will set it to 0" << endl << endl; + cerr << endl << ">> PMusrCanvas::HandleDataSet(): **WARNING** found endBin theory < 0 for 'sub_ranges', will set it to 0" << endl << endl; } else if (dval >= (Double_t)data->GetTheory()->size()) { // make sure that endtBin <= length of theory vector - cerr << endl << ">> PMusrCanvas::HandleDataSet() **WARNING** found endBin theory=" << (UInt_t)dval << " >= theory vector size=" << data->GetTheory()->size() << " for 'sub_ranges',"; + cerr << endl << ">> PMusrCanvas::HandleDataSet(): **WARNING** found endBin theory=" << (UInt_t)dval << " >= theory vector size=" << data->GetTheory()->size() << " for 'sub_ranges',"; cerr << endl << ">> will set it to theory vector size" << endl << endl; endBin = data->GetTheory()->size(); } else { @@ -3418,7 +3465,7 @@ void PMusrCanvas::HandleFourier() // calculate fourier transform of the data PFourier fourierData(fData[i].data, fFourier.fUnits, startTime, endTime, fFourier.fDCCorrected, fFourier.fFourierPower); if (!fourierData.IsValid()) { - cerr << endl << "**SEVERE ERROR** PMusrCanvas::HandleFourier: couldn't invoke PFourier to calculate the Fourier data ..." << endl; + cerr << endl << ">> PMusrCanvas::HandleFourier(): **SEVERE ERROR** couldn't invoke PFourier to calculate the Fourier data ..." << endl; return; } fourierData.Transform(fFourier.fApodization); @@ -3458,7 +3505,7 @@ void PMusrCanvas::HandleFourier() Int_t powerPad = (Int_t)round(log((endTime-startTime)/fData[i].theory->GetBinWidth(1))/log(2))+3; PFourier fourierTheory(fData[i].theory, fFourier.fUnits, startTime, endTime, fFourier.fDCCorrected, powerPad); if (!fourierTheory.IsValid()) { - cerr << endl << "**SEVERE ERROR** PMusrCanvas::HandleFourier: couldn't invoke PFourier to calculate the Fourier theory ..." << endl; + cerr << endl << ">> PMusrCanvas::HandleFourier(): **SEVERE ERROR** couldn't invoke PFourier to calculate the Fourier theory ..." << endl; return; } fourierTheory.Transform(fFourier.fApodization); @@ -3578,7 +3625,7 @@ void PMusrCanvas::HandleDifferenceFourier() // calculate fourier transform of the data PFourier fourierData(fData[i].diff, fFourier.fUnits, startTime, endTime, fFourier.fDCCorrected, fFourier.fFourierPower); if (!fourierData.IsValid()) { - cerr << endl << "**SEVERE ERROR** PMusrCanvas::HandleFourier: couldn't invoke PFourier to calculate the Fourier diff ..." << endl; + cerr << endl << ">> PMusrCanvas::HandleFourier(): **SEVERE ERROR** couldn't invoke PFourier to calculate the Fourier diff ..." << endl; return; } fourierData.Transform(fFourier.fApodization); @@ -4648,14 +4695,14 @@ void PMusrCanvas::PlotData(Bool_t unzoom) fDataTheoryPad->SetLogy(1); // set x-axis label - fHistoFrame->GetXaxis()->SetTitle("time (#mus)"); + fHistoFrame->GetXaxis()->SetTitle("Time (#mus)"); // set y-axis label TString yAxisTitle; PMsrRunList *runList = fMsrHandler->GetMsrRunList(); switch (fPlotType) { case MSR_PLOT_SINGLE_HISTO: if (runList->at(0).IsLifetimeCorrected()) { // lifetime correction - yAxisTitle = "asymmetry"; + yAxisTitle = "Asymmetry"; } else { // no liftime correction if (fScaleN0AndBkg) yAxisTitle = "N(t) per nsec"; @@ -4663,8 +4710,11 @@ void PMusrCanvas::PlotData(Bool_t unzoom) yAxisTitle = "N(t) per bin"; } break; + case MSR_PLOT_SINGLE_HISTO_RRF: + yAxisTitle = "RRF Asymmetry"; + break; case MSR_PLOT_ASYM: - yAxisTitle = "asymmetry"; + yAxisTitle = "Asymmetry"; break; case MSR_PLOT_MU_MINUS: yAxisTitle = "N(t) per bin"; diff --git a/src/classes/PRunListCollection.cpp b/src/classes/PRunListCollection.cpp index bc58df51..d5b1d94e 100644 --- a/src/classes/PRunListCollection.cpp +++ b/src/classes/PRunListCollection.cpp @@ -106,8 +106,6 @@ Bool_t PRunListCollection::Add(Int_t runNo, EPMusrHandleTag tag) fitType = (*fMsrInfo->GetMsrGlobal()).GetFitType(); } -cout << "debug> PRunListCollection::Add(): (runNo: " << runNo << "), fitType = " << fitType << endl; - switch (fitType) { case PRUN_SINGLE_HISTO: fRunSingleHistoList.push_back(new PRunSingleHisto(fMsrInfo, fData, runNo, tag)); @@ -115,7 +113,6 @@ cout << "debug> PRunListCollection::Add(): (runNo: " << runNo << "), fitType = " success = false; break; case PRUN_SINGLE_HISTO_RRF: -cout << "debug> PRunListCollection::Add(): add RRF single histo run to PRunListCollection (runNo: " << runNo << ")" << endl; fRunSingleHistoRRFList.push_back(new PRunSingleHistoRRF(fMsrInfo, fData, runNo, tag)); if (!fRunSingleHistoRRFList[fRunSingleHistoRRFList.size()-1]->IsValid()) success = false; @@ -378,16 +375,17 @@ Double_t PRunListCollection::GetSingleRunChisq(const std::vector& par, return chisq; } + Int_t subIdx = 0; Int_t type = fMsrInfo->GetMsrRunList()->at(idx).GetFitType(); - if (type == -1) { // i.e. not forun in the RUN block, try the GLOBAL block + if (type == -1) { // i.e. not found in the RUN block, try the GLOBAL block type = fMsrInfo->GetMsrGlobal()->GetFitType(); - } - - // count how many entries of this fit-type are present up to idx - UInt_t subIdx = 0; - for (UInt_t i=0; iGetMsrRunList()->at(i).GetFitType() == type) - subIdx++; + subIdx = idx; + } else { // found in the RUN block + // count how many entries of this fit-type are present up to idx + for (UInt_t i=0; iGetMsrRunList()->at(i).GetFitType() == type) + subIdx++; + } } // return the chisq of the single run diff --git a/src/classes/PRunSingleHistoRRF.cpp b/src/classes/PRunSingleHistoRRF.cpp index 60f69ca7..8f1dfb50 100644 --- a/src/classes/PRunSingleHistoRRF.cpp +++ b/src/classes/PRunSingleHistoRRF.cpp @@ -57,7 +57,7 @@ PRunSingleHistoRRF::PRunSingleHistoRRF() : PRunBase() { fNoOfFitBins = 0; fBackground = 0; - fPacking = -1; + fRRFPacking = -1; // the 2 following variables are need in case fit range is given in bins, and since // the fit range can be changed in the command block, these variables need to be accessible @@ -80,13 +80,26 @@ PRunSingleHistoRRF::PRunSingleHistoRRF(PMsrHandler *msrInfo, PRunDataHandler *ra { fNoOfFitBins = 0; - fPacking = fRunInfo->GetPacking(); - if (fPacking == -1) { // i.e. packing is NOT given in the RUN-block, it must be given in the GLOBAL-block - fPacking = fMsrInfo->GetMsrGlobal()->GetPacking(); + PMsrGlobalBlock *global = msrInfo->GetMsrGlobal(); + + if (!global->IsPresent()) { + cerr << endl << ">> PRunSingleHistoRRF::PRunSingleHistoRRF(): **SEVERE ERROR**: no GLOBAL-block present!"; + cerr << endl << ">> For Single Histo RRF the GLOBAL-block is mandatory! Please fix this first."; + cerr << endl; + fValid = false; + return; } - if (fPacking == -1) { // this should NOT happen, somethin is severely wrong - cerr << endl << ">> PRunSingleHistoRRF::PRunSingleHistoRRF(): **SEVERE ERROR**: Couldn't find any packing information!"; - cerr << endl << ">> This is very bad :-(, will quit ..."; + + if (!global->GetRRFUnit().CompareTo("??")) { + cerr << endl << ">> PRunSingleHistoRRF::PRunSingleHistoRRF(): **SEVERE ERROR**: no RRF-Frequency found!"; + cerr << endl; + fValid = false; + return; + } + + fRRFPacking = global->GetRRFPacking(); + if (fRRFPacking == -1) { + cerr << endl << ">> PRunSingleHistoRRF::PRunSingleHistoRRF(): **SEVERE ERROR**: no RRF-Packing found!"; cerr << endl; fValid = false; return; @@ -521,17 +534,10 @@ Bool_t PRunSingleHistoRRF::PrepareData() // get the fit range for the current RUN block GetProperFitRange(globalBlock); - // get the lifetimecorrection flag - Bool_t lifetimecorrection = false; - PMsrPlotList *plot = fMsrInfo->GetMsrPlotList(); - lifetimecorrection = plot->at(0).fLifeTimeCorrection; - // do the more fit/view specific stuff if (fHandleTag == kFit) success = PrepareFitData(runData, histoNo[0]); - else if ((fHandleTag == kView) && !lifetimecorrection) - success = PrepareRawViewData(runData, histoNo[0]); - else if ((fHandleTag == kView) && lifetimecorrection) + else if (fHandleTag == kView) success = PrepareViewData(runData, histoNo[0]); else success = false; @@ -546,11 +552,13 @@ Bool_t PRunSingleHistoRRF::PrepareData() // PrepareFitData (protected) //-------------------------------------------------------------------------- /** - *

Take the pre-processed data (i.e. grouping and addrun are preformed) and form the histogram for fitting. + *

Take the pre-processed data (i.e. grouping and addrun are preformed) and form the RRF histogram for fitting. * The following steps are preformed: * -# get fit start/stop time * -# check that 'first good data bin', 'last good data bin', and 't0' make any sense * -# check how the background shall be handled, i.e. fitted, subtracted from background estimate data range, or subtacted from a given fixed background. + * -# estimate N0 + * -# RRF transformation * -# packing (i.e rebinning) * * return: @@ -571,28 +579,26 @@ Bool_t PRunSingleHistoRRF::PrepareFitData(PRawRunData* runData, const UInt_t his // initially fForward is the "raw data set" (i.e. grouped histo and raw runs already added) to be fitted. This means fForward = N(t) at this point. // 1) check how the background shall be handled - if (fRunInfo->GetBkgFitParamNo() == -1) { // bkg shall **NOT** be fitted - // subtract background from histogramms ------------------------------------------ - if (fRunInfo->GetBkgFix(0) == PMUSR_UNDEFINED) { // no fixed background given - if (fRunInfo->GetBkgRange(0) >= 0) { - if (!EstimateBkg(histoNo)) - return false; - } else { // no background given to do the job, try estimate - fRunInfo->SetBkgRange(static_cast(fT0s[0]*0.1), 0); - fRunInfo->SetBkgRange(static_cast(fT0s[0]*0.6), 1); - cerr << endl << ">> PRunSingleHistoRRF::PrepareFitData(): **WARNING** Neither fix background nor background bins are given!"; - cerr << endl << ">> Will try the following: bkg start = " << fRunInfo->GetBkgRange(0) << ", bkg end = " << fRunInfo->GetBkgRange(1); - cerr << endl << ">> NO WARRANTY THAT THIS MAKES ANY SENSE! Better check ..."; - cerr << endl; - if (!EstimateBkg(histoNo)) - return false; - } - } else { // fixed background given - for (UInt_t i=0; iGetBkgFix(0); - } - fBackground = fRunInfo->GetBkgFix(0); + // subtract background from histogramms ------------------------------------------ + if (fRunInfo->GetBkgFix(0) == PMUSR_UNDEFINED) { // no fixed background given + if (fRunInfo->GetBkgRange(0) >= 0) { + if (!EstimateBkg(histoNo)) + return false; + } else { // no background given to do the job, try estimate + fRunInfo->SetBkgRange(static_cast(fT0s[0]*0.1), 0); + fRunInfo->SetBkgRange(static_cast(fT0s[0]*0.6), 1); + cerr << endl << ">> PRunSingleHistoRRF::PrepareFitData(): **WARNING** Neither fix background nor background bins are given!"; + cerr << endl << ">> Will try the following: bkg start = " << fRunInfo->GetBkgRange(0) << ", bkg end = " << fRunInfo->GetBkgRange(1); + cerr << endl << ">> NO WARRANTY THAT THIS MAKES ANY SENSE! Better check ..."; + cerr << endl; + if (!EstimateBkg(histoNo)) + return false; } + } else { // fixed background given + for (UInt_t i=0; iGetBkgFix(0); + } + fBackground = fRunInfo->GetBkgFix(0); } // here fForward = N(t) - Nbkg @@ -600,9 +606,6 @@ Bool_t PRunSingleHistoRRF::PrepareFitData(PRawRunData* runData, const UInt_t his // 2) N(t) - Nbkg -> exp(+t/tau) [N(t)-Nbkg] Double_t startTime = fTimeResolution * ((Double_t)fGoodBins[0] - (Double_t)t0); - cout << endl << "debug> PRunSingleHistoRRF::PrepareFitData(): t0=" << t0 << ", fGoodBins[0]=" << fGoodBins[0] << ", fGoodBins[1]=" << fGoodBins[1] << endl; - cout << endl << "debug> PRunSingleHistoRRF::PrepareFitData(): startTime=" << startTime << endl; - cout << endl << "debug> PRunSingleHistoRRF::PrepareFitData(): endTime =" << startTime+fTimeResolution*((Double_t)fGoodBins[1]-(Double_t)t0) << endl; Double_t time_tau=0.0; Double_t exp_t_tau=0.0; @@ -642,8 +645,6 @@ Bool_t PRunSingleHistoRRF::PrepareFitData(PRawRunData* runData, const UInt_t his PMsrGlobalBlock *globalBlock = fMsrInfo->GetMsrGlobal(); Double_t wRRF = globalBlock->GetRRFFreq("Mc"); Double_t phaseRRF = globalBlock->GetRRFPhase()*TMath::TwoPi()/180.0; - cout << "debug> PRunSingleHistoRRF::PrepareFitData(): wRRF =" << wRRF << endl; - cout << "debug> PRunSingleHistoRRF::PrepareFitData(): phaseRRF =" << phaseRRF << endl; Double_t time = 0.0; for (Int_t i=fGoodBins[0]; iGetRRFPacking(); Double_t dval=0.0; for (Int_t i=fGoodBins[0]; i 1 - if (((i-fGoodBins[0]) % packingRRF == 0) && (i != fGoodBins[0])) { // fill data - dval /= packingRRF; + if (((i-fGoodBins[0]) % fRRFPacking == 0) && (i != fGoodBins[0])) { // fill data + dval /= fRRFPacking; fData.AppendValue(dval); // reset dval dval = 0.0; @@ -672,200 +672,22 @@ Bool_t PRunSingleHistoRRF::PrepareFitData(PRawRunData* runData, const UInt_t his dval = 0.0; // the packed RRF asymmetry error for (Int_t i=fGoodBins[0]; iTake the pre-processed data (i.e. grouping and addrun are preformed) and form the histogram for viewing - * without any life time correction. - *

The following steps are preformed: - * -# check if view packing is whished. - * -# check that 'first good data bin', 'last good data bin', and 't0' makes any sense - * -# packing (i.e. rebinnig) - * -# calculate theory - * - * return: - * - true, if everything went smooth - * - false, otherwise. - * - * \param runData raw run data handler - * \param histoNo forward histogram number - */ -Bool_t PRunSingleHistoRRF::PrepareRawViewData(PRawRunData* runData, const UInt_t histoNo) -{ -/* - // check if view_packing is wished - Int_t packing = fPacking; - if (fMsrInfo->GetMsrPlotList()->at(0).fViewPacking > 0) { - packing = fMsrInfo->GetMsrPlotList()->at(0).fViewPacking; - } - - // calculate necessary norms - Double_t dataNorm = 1.0, theoryNorm = 1.0; - if (fScaleN0AndBkg) { - dataNorm = 1.0/ (packing * (fTimeResolution * 1.0e3)); // fTimeResolution us->ns - } else if (!fScaleN0AndBkg && (fMsrInfo->GetMsrPlotList()->at(0).fViewPacking > 0)) { - theoryNorm = (Double_t)fMsrInfo->GetMsrPlotList()->at(0).fViewPacking/(Double_t)fPacking; - } - - // raw data, since PMusrCanvas is doing ranging etc. - // start = the first bin which is a multiple of packing backward from first good data bin - Int_t start = fGoodBins[0] - (fGoodBins[0]/packing)*packing; - // end = last bin starting from start which is a multipl of packing and still within the data - Int_t end = start + ((fForward.size()-start)/packing)*packing; - // check if data range has been provided, and if not try to estimate them - if (start < 0) { - Int_t offset = (Int_t)(10.0e-3/fTimeResolution); - start = ((Int_t)fT0s[0]+offset) - (((Int_t)fT0s[0]+offset)/packing)*packing; - end = start + ((fForward.size()-start)/packing)*packing; - cerr << endl << ">> PRunSingleHistoRRF::PrepareRawViewData(): **WARNING** data range was not provided, will try data range start = " << start << "."; - cerr << endl << ">> NO WARRANTY THAT THIS DOES MAKE ANY SENSE."; - cerr << endl; - } - // check if start, end, and t0 make any sense - // 1st check if start and end are in proper order - if (end < start) { // need to swap them - Int_t keep = end; - end = start; - start = keep; - } - // 2nd check if start is within proper bounds - if ((start < 0) || (start > (Int_t)fForward.size())) { - cerr << endl << ">> PRunSingleHistoRRF::PrepareRawViewData(): **ERROR** start data bin doesn't make any sense!"; - cerr << endl; - return false; - } - // 3rd check if end is within proper bounds - if ((end < 0) || (end > (Int_t)fForward.size())) { - cerr << endl << ">> PRunSingleHistoRRF::PrepareRawViewData(): **ERROR** end data bin doesn't make any sense!"; - cerr << endl; - return false; - } - - // everything looks fine, hence fill data set - Int_t t0 = (Int_t)fT0s[0]; - Double_t value = 0.0; - // data start at data_start-t0 - // time shifted so that packing is included correctly, i.e. t0 == t0 after packing - fData.SetDataTimeStart(fTimeResolution*((Double_t)start-(Double_t)t0+(Double_t)(packing-1)/2.0)); - fData.SetDataTimeStep(fTimeResolution*packing); - - for (Int_t i=start; i par; - PMsrParamList *paramList = fMsrInfo->GetMsrParamList(); - for (UInt_t i=0; isize(); i++) - par.push_back((*paramList)[i].fValue); - - // calculate asymmetry - Double_t N0; - // check if norm is a parameter or a function - if (fRunInfo->GetNormParamNo() < MSR_PARAM_FUN_OFFSET) { // norm is a parameter - N0 = par[fRunInfo->GetNormParamNo()-1]; - } else { // norm is a function - // get function number - UInt_t funNo = fRunInfo->GetNormParamNo()-MSR_PARAM_FUN_OFFSET; - // evaluate function - N0 = fMsrInfo->EvalFunc(funNo, *fRunInfo->GetMap(), par); - } - N0 *= theoryNorm; - - // get tau - Double_t tau; - if (fRunInfo->GetLifetimeParamNo() != -1) - tau = par[fRunInfo->GetLifetimeParamNo()-1]; - else - tau = PMUON_LIFETIME; - - // get background - Double_t bkg; - if (fRunInfo->GetBkgFitParamNo() == -1) { // bkg not fitted - if (fRunInfo->GetBkgFix(0) == PMUSR_UNDEFINED) { // no fixed background given (background interval) - if (fRunInfo->GetBkgRange(0) >= 0) { // background range given - if (!EstimateBkg(histoNo)) - return false; - } else { // no background given to do the job, try estimate - fRunInfo->SetBkgRange(static_cast(fT0s[0]*0.1), 0); - fRunInfo->SetBkgRange(static_cast(fT0s[0]*0.6), 1); - cerr << endl << ">> PRunSingleHistoRRF::PrepareRawViewData(): **WARNING** Neither fix background nor background bins are given!"; - cerr << endl << ">> Will try the following: bkg start = " << fRunInfo->GetBkgRange(0) << ", bkg end = " << fRunInfo->GetBkgRange(1); - cerr << endl << ">> NO WARRANTY THAT THIS MAKES ANY SENSE! Better check ..."; - cerr << endl; - if (!EstimateBkg(histoNo)) - return false; - } - bkg = fBackground; - } else { // fixed bkg given - bkg = fRunInfo->GetBkgFix(0); - } - } else { // bkg fitted - bkg = par[fRunInfo->GetBkgFitParamNo()-1]; - } - bkg *= theoryNorm; - - // calculate functions - for (Int_t i=0; iGetNoOfFuncs(); i++) { - fFuncValues[i] = fMsrInfo->EvalFunc(fMsrInfo->GetFuncNo(i), *fRunInfo->GetMap(), par); - } - - // calculate theory - UInt_t size = fForward.size(); - Double_t factor = 1.0; - if (fData.GetValue()->size() * 10 > fForward.size()) { - size = fData.GetValue()->size() * 10; - factor = (Double_t)fForward.size() / (Double_t)size; - } - Double_t time; - Double_t theoryValue; - fData.SetTheoryTimeStart(fData.GetDataTimeStart()); - fData.SetTheoryTimeStep(fTimeResolution*factor); - for (UInt_t i=0; iFunc(time, par, fFuncValues); - if (fabs(theoryValue) > 1.0e10) { // dirty hack needs to be fixed!! - theoryValue = 0.0; - } - fData.AppendTheoryValue(N0*TMath::Exp(-time/tau)*(1.0+theoryValue)+bkg); - } - - // clean up - par.clear(); -*/ - return true; -} - //-------------------------------------------------------------------------- // PrepareViewData (protected) //-------------------------------------------------------------------------- @@ -878,16 +700,6 @@ Bool_t PRunSingleHistoRRF::PrepareRawViewData(PRawRunData* runData, const UInt_t * -# transform data sets (see below). * -# calculate theory * - *

Muon life time corrected data: Starting from - * \f[ N(t) = N_0 e^{-t/\tau} [ 1 + A(t) ] + \mathrm{Bkg} \f] - * it follows that - * \f[ A(t) = (-1) + e^{+t/\tau}\, \frac{N(t)-\mathrm{Bkg}}{N_0}. \f] - * For the error estimate only the statistical error of \f$ N(t) \f$ is used, and hence - * \f[ \Delta A(t) = \frac{e^{t/\tau}}{N_0}\,\sqrt{\frac{N(t)}{p}} \f] - * where \f$ p \f$ is the packing, and \f$ N(t) \f$ are the packed data, i.e. - * \f[ N(t_i) = \frac{1}{p}\, \sum_{j=i}^{i+p} n_j \f] - * with \f$ n_j \f$ the raw histogram data bins. - * * return: * - true, if everything went smooth * - false, otherwise @@ -897,66 +709,27 @@ Bool_t PRunSingleHistoRRF::PrepareRawViewData(PRawRunData* runData, const UInt_t */ Bool_t PRunSingleHistoRRF::PrepareViewData(PRawRunData* runData, const UInt_t histoNo) { -/* - // check if view_packing is wished. This is a global option for all PLOT blocks! - Int_t packing = fPacking; - if (fMsrInfo->GetMsrPlotList()->at(0).fViewPacking > 0) { - packing = fMsrInfo->GetMsrPlotList()->at(0).fViewPacking; - } - // check if rrf_packing is present. This is a global option for all PLOT blocks, since operated on a single set of data. - if (fMsrInfo->GetMsrPlotList()->at(0).fRRFPacking > 0) { - packing = fMsrInfo->GetMsrPlotList()->at(0).fRRFPacking; + // -------------- + // prepare data + // -------------- + + // prepare RRF single histo + PrepareFitData(runData, histoNo); + + // check for view packing + Int_t viewPacking = fMsrInfo->GetMsrPlotList()->at(0).fViewPacking; + if (viewPacking > 0) { + if (viewPacking < fRRFPacking) { + cerr << ">> PRunSingleHistoRRF::PrepareViewData(): **WARNING** Found View Packing (" << viewPacking << ") < RRF Packing (" << fRRFPacking << ")."; + cerr << ">> Will ignore View Packing." << endl; + } else { + // STILL MISSING + } } - // calculate necessary norms - Double_t dataNorm = 1.0, theoryNorm = 1.0; - if (fScaleN0AndBkg) { - dataNorm = 1.0/ (packing * (fTimeResolution * 1.0e3)); // fTimeResolution us->ns - } else if (!fScaleN0AndBkg && (fMsrInfo->GetMsrPlotList()->at(0).fViewPacking > 0)) { - theoryNorm = (Double_t)fMsrInfo->GetMsrPlotList()->at(0).fViewPacking/(Double_t)fPacking; - } - - // transform raw histo data. This is done the following way (for details see the manual): - // for the single histo fit, just the rebinned raw data are copied - // first get start data, end data, and t0 - Int_t t0 = (Int_t)fT0s[0]; - - // start = the first bin which is a multiple of packing backward from first good data bin - Int_t start = fGoodBins[0] - (fGoodBins[0]/packing)*packing; - // end = last bin starting from start which is a multiple of packing and still within the data - Int_t end = start + ((fForward.size()-start)/packing)*packing; - - // check if data range has been provided, and if not try to estimate them - if (start < 0) { - Int_t offset = (Int_t)(10.0e-3/fTimeResolution); - start = ((Int_t)fT0s[0]+offset) - (((Int_t)fT0s[0]+offset)/packing)*packing; - end = start + ((fForward.size()-start)/packing)*packing; - cerr << endl << ">> PRunSingleHistoRRF::PrepareViewData(): **WARNING** data range was not provided, will try data range start = " << start << "."; - cerr << endl << ">> NO WARRANTY THAT THIS DOES MAKE ANY SENSE."; - cerr << endl; - } - - // check if start, end, and t0 make any sense - // 1st check if start and end are in proper order - if (end < start) { // need to swap them - Int_t keep = end; - end = start; - start = keep; - } - // 2nd check if start is within proper bounds - if ((start < 0) || (start > (Int_t)fForward.size())) { - cerr << endl << ">> PRunSingleHistoRRF::PrepareViewData(): **ERROR** start data bin doesn't make any sense!"; - cerr << endl; - return false; - } - // 3rd check if end is within proper bounds - if ((end < 0) || (end > (Int_t)fForward.size())) { - cerr << endl << ">> PRunSingleHistoRRF::PrepareViewData(): **ERROR** end data bin doesn't make any sense!"; - cerr << endl; - return false; - } - - // everything looks fine, hence fill data set + // -------------- + // prepare theory + // -------------- // feed the parameter vector std::vector par; @@ -964,182 +737,34 @@ Bool_t PRunSingleHistoRRF::PrepareViewData(PRawRunData* runData, const UInt_t hi for (UInt_t i=0; isize(); i++) par.push_back((*paramList)[i].fValue); - // calculate asymmetry - Double_t N0; - // check if norm is a parameter or a function - if (fRunInfo->GetNormParamNo() < MSR_PARAM_FUN_OFFSET) { // norm is a parameter - N0 = par[fRunInfo->GetNormParamNo()-1]; - } else { // norm is a function - // get function number - UInt_t funNo = fRunInfo->GetNormParamNo()-MSR_PARAM_FUN_OFFSET; - // evaluate function - N0 = fMsrInfo->EvalFunc(funNo, *fRunInfo->GetMap(), par); - } - N0 *= theoryNorm; - - // get tau - Double_t tau; - if (fRunInfo->GetLifetimeParamNo() != -1) - tau = par[fRunInfo->GetLifetimeParamNo()-1]; - else - tau = PMUON_LIFETIME; - - // get background - Double_t bkg; - if (fRunInfo->GetBkgFitParamNo() == -1) { // bkg not fitted - if (fRunInfo->GetBkgFix(0) == PMUSR_UNDEFINED) { // no fixed background given (background interval) - if (fRunInfo->GetBkgRange(0) >= 0) { // background range given - if (!EstimateBkg(histoNo)) - return false; - } else { // no background given to do the job, try estimate - fRunInfo->SetBkgRange(static_cast(fT0s[0]*0.1), 0); - fRunInfo->SetBkgRange(static_cast(fT0s[0]*0.6), 1); - cerr << endl << ">> PRunSingleHistoRRF::PrepareViewData(): **WARNING** Neither fix background nor background bins are given!"; - cerr << endl << ">> Will try the following: bkg start = " << fRunInfo->GetBkgRange(0) << ", bkg end = " << fRunInfo->GetBkgRange(1); - cerr << endl << ">> NO WARRANTY THAT THIS MAKES ANY SENSE! Better check ..."; - cerr << endl; - if (!EstimateBkg(histoNo)) - return false; - } - bkg = fBackground; - } else { // fixed bkg given - bkg = fRunInfo->GetBkgFix(0); - } - } else { // bkg fitted - bkg = par[fRunInfo->GetBkgFitParamNo()-1]; - } - bkg *= theoryNorm; - - Double_t value = 0.0; - Double_t expval = 0.0; - Double_t rrf_val = 0.0; - Double_t time = 0.0; - - // data start at data_start-t0 shifted by (pack-1)/2 - fData.SetDataTimeStart(fTimeResolution*((Double_t)start-(Double_t)t0+(Double_t)(packing-1)/2.0)); - fData.SetDataTimeStep(fTimeResolution*packing); - - // data is always normalized to (per nsec!!) - Double_t gammaRRF = 0.0, wRRF = 0.0, phaseRRF = 0.0; - if (fMsrInfo->GetMsrPlotList()->at(0).fRRFFreq == 0.0) { // normal Data representation - for (Int_t i=start; iGetMsrPlotList()->at(0).fRRFUnit) { - case RRF_UNIT_kHz: - gammaRRF = TMath::TwoPi()*1.0e-3; - break; - case RRF_UNIT_MHz: - gammaRRF = TMath::TwoPi(); - break; - case RRF_UNIT_Mcs: - gammaRRF = 1.0; - break; - case RRF_UNIT_G: - gammaRRF = GAMMA_BAR_MUON*TMath::TwoPi(); - break; - case RRF_UNIT_T: - gammaRRF = GAMMA_BAR_MUON*TMath::TwoPi()*1.0e4; - break; - default: - gammaRRF = TMath::TwoPi(); - break; - } - wRRF = gammaRRF * fMsrInfo->GetMsrPlotList()->at(0).fRRFFreq; - phaseRRF = fMsrInfo->GetMsrPlotList()->at(0).fRRFPhase / 180.0 * TMath::Pi(); - - Double_t error = 0.0; - for (Int_t i=start; iGetNoOfFuncs(); i++) { fFuncValues[i] = fMsrInfo->EvalFunc(fMsrInfo->GetFuncNo(i), *fRunInfo->GetMap(), par); } - // calculate theory - Double_t theoryValue; + // check if a finer binning for the theory is needed UInt_t size = fForward.size(); Double_t factor = 1.0; - UInt_t rebinRRF = 0; + Double_t time = 0.0; + Double_t theoryValue = 0.0; - if (wRRF == 0) { // no RRF - // check if a finer binning for the theory is needed - if (fData.GetValue()->size() * 10 > fForward.size()) { - size = fData.GetValue()->size() * 10; - factor = (Double_t)fForward.size() / (Double_t)size; - } - fData.SetTheoryTimeStart(fData.GetDataTimeStart()); - fData.SetTheoryTimeStep(fTimeResolution*factor); - } else { // RRF - rebinRRF = static_cast((TMath::Pi()/2.0/wRRF)/fTimeResolution); // RRF time resolution / data time resolution - fData.SetTheoryTimeStart(fData.GetDataTimeStart()); - fData.SetTheoryTimeStep(TMath::Pi()/2.0/wRRF/rebinRRF); // = theory time resolution as close as possible to the data time resolution compatible with wRRF + if (fData.GetValue()->size() * 10 > fForward.size()) { + size = fData.GetValue()->size() * 10; + factor = (Double_t)fForward.size() / (Double_t)size; } + fData.SetTheoryTimeStart(fData.GetDataTimeStart()); + fData.SetTheoryTimeStep(fTimeResolution*factor); + // calculate theory for (UInt_t i=0; iFunc(time, par, fFuncValues); - if (wRRF != 0.0) { - theoryValue *= 2.0*TMath::Cos(wRRF * time + phaseRRF); - } if (fabs(theoryValue) > 10.0) { // dirty hack needs to be fixed!! theoryValue = 0.0; } fData.AppendTheoryValue(theoryValue); } - // if RRF filter the theory with a FIR Kaiser low pass filter - if (wRRF != 0.0) { - // rebin theory to the RRF frequency - if (rebinRRF != 0) { - Double_t dval = 0.0; - PDoubleVector theo; - for (UInt_t i=0; isize(); i++) { - if ((i % rebinRRF == 0) && (i != 0)) { - theo.push_back(dval/rebinRRF); - dval = 0.0; - } - dval += fData.GetTheory()->at(i); - } - fData.SetTheoryTimeStart(fData.GetTheoryTimeStart()+static_cast(rebinRRF-1)*fData.GetTheoryTimeStep()/2.0); - fData.SetTheoryTimeStep(rebinRRF*fData.GetTheoryTimeStep()); - fData.ReplaceTheory(theo); - theo.clear(); - } - - // filter theory - CalculateKaiserFilterCoeff(wRRF, 60.0, 0.2); // w_c = wRRF, A = -20 log_10(delta), Delta w / w_c = (w_s - w_p) / (2 w_c) - FilterTheo(); - } - - // clean up - par.clear(); -*/ return true; } @@ -1416,7 +1041,6 @@ Double_t PRunSingleHistoRRF::EstimateN0(Double_t &errN0) Int_t endBin = N0EstimateEndTime / fTimeResolution - fGoodBins[0]; Double_t n0 = 0.0; Double_t wN = 0.0; - cout << "debug> PRunSingleHistoRRF::EstimateN0(): endBin=" << endBin << endl; for (Int_t i=0; i PRunSingleHistoRRF::EstimateN0(): N0=" << n0 << "(" << errN0 << ")" << endl; + cout << "info> PRunSingleHistoRRF::EstimateN0(): N0=" << n0 << "(" << errN0 << ")" << endl; return n0; } @@ -1472,10 +1096,10 @@ Bool_t PRunSingleHistoRRF::EstimateBkg(UInt_t histoNo) // calculate proper background range if (beamPeriod != 0.0) { - Double_t timeBkg = (Double_t)(end-start)*(fTimeResolution*fPacking); // length of the background intervall in time + Double_t timeBkg = (Double_t)(end-start)*fTimeResolution; // length of the background intervall in time UInt_t fullCycles = (UInt_t)(timeBkg/beamPeriod); // how many proton beam cylces can be placed within the proposed background intervall // correct the end of the background intervall such that the background is as close as possible to a multiple of the proton cylce - end = start + (UInt_t) ((fullCycles*beamPeriod)/(fTimeResolution*fPacking)); + end = start + (UInt_t) ((fullCycles*beamPeriod)/fTimeResolution); cout << endl << "PRunSingleHistoRRF::EstimatBkg(): Background " << start << ", " << end; if (end == start) end = fRunInfo->GetBkgRange(1); @@ -1509,7 +1133,7 @@ Bool_t PRunSingleHistoRRF::EstimateBkg(UInt_t histoNo) fBackground = bkg; // keep background (per bin) - cout << endl << "debug> fBackground=" << fBackground << endl; + cout << endl << "info> fBackground=" << fBackground << endl; fRunInfo->SetBkgEstimated(fBackground, 0); diff --git a/src/include/PMusr.h b/src/include/PMusr.h index 3374558f..efa0cf69 100644 --- a/src/include/PMusr.h +++ b/src/include/PMusr.h @@ -101,10 +101,11 @@ typedef struct { char a[7]; } __float128; // needed since cint doesn't know it //------------------------------------------------------------- // msr plot type tags -#define MSR_PLOT_SINGLE_HISTO 0 -#define MSR_PLOT_ASYM 2 -#define MSR_PLOT_MU_MINUS 4 -#define MSR_PLOT_NON_MUSR 8 +#define MSR_PLOT_SINGLE_HISTO 0 +#define MSR_PLOT_SINGLE_HISTO_RRF 1 +#define MSR_PLOT_ASYM 2 +#define MSR_PLOT_MU_MINUS 4 +#define MSR_PLOT_NON_MUSR 8 //------------------------------------------------------------- // map and fun offsets for parameter parsing diff --git a/src/include/PRunSingleHistoRRF.h b/src/include/PRunSingleHistoRRF.h index 0f60d6c7..1c09c314 100644 --- a/src/include/PRunSingleHistoRRF.h +++ b/src/include/PRunSingleHistoRRF.h @@ -55,7 +55,6 @@ class PRunSingleHistoRRF : public PRunBase virtual void CalcNoOfFitBins(); virtual Bool_t PrepareData(); virtual Bool_t PrepareFitData(PRawRunData* runData, const UInt_t histoNo); - virtual Bool_t PrepareRawViewData(PRawRunData* runData, const UInt_t histoNo); virtual Bool_t PrepareViewData(PRawRunData* runData, const UInt_t histoNo); private: @@ -63,7 +62,7 @@ class PRunSingleHistoRRF : public PRunBase UInt_t fNoOfFitBins; ///< number of bins to be fitted Double_t fBackground; ///< needed if background range is given (units: 1/bin) - Int_t fPacking; ///< packing for this particular run. Either given in the RUN- or GLOBAL-block. + Int_t fRRFPacking; ///< RRF packing for this particular run. Given in the GLOBAL-block. Int_t fGoodBins[2]; ///< keep first/last good bins. 0=fgb, 1=lgb From 52e2c20527c0e720852e50ba7f7b8ea95ba45aca Mon Sep 17 00:00:00 2001 From: Suter Andreas Date: Thu, 7 Jan 2016 16:10:47 +0100 Subject: [PATCH 07/22] some tweaking in order to supress ghost lines. --- src/classes/PRunSingleHistoRRF.cpp | 22 +++++++++++++++++----- src/include/PRunSingleHistoRRF.h | 2 +- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/classes/PRunSingleHistoRRF.cpp b/src/classes/PRunSingleHistoRRF.cpp index 8f1dfb50..2cc7c2a6 100644 --- a/src/classes/PRunSingleHistoRRF.cpp +++ b/src/classes/PRunSingleHistoRRF.cpp @@ -630,12 +630,24 @@ Bool_t PRunSingleHistoRRF::PrepareFitData(PRawRunData* runData, const UInt_t his Double_t n0 = EstimateN0(errN0); // 4a) A(t) = exp(+t/tau) [N(t)-Nbkg] / N0 - 1.0 - for (Int_t i=fGoodBins[0]; i this is introduced to reduce ghost lines. + // This is a dirty trick and should be put on a better quantitative base! + Double_t dc_offset=0.0; + for (Int_t i=fGoodBins[0]; i<=fGoodBins[1]; i++) { + dc_offset += fForward[i]; + } + dc_offset /= (Double_t)(fGoodBins[1]-fGoodBins[0]+1); + cout << "info> dc_offset = " << dc_offset << endl; + for (Int_t i=fGoodBins[0]; i<=fGoodBins[1]; i++) { + fForward[i] -= dc_offset; + } + // 4b) error estimate of A(t): errA(t) = exp(+t/tau)/N0 sqrt( N(t) + ([N(t)-N_bkg]/N0)^2 errN0^2 ) - for (Int_t i=fGoodBins[0]; iGetRRFFreq("Mc"); Double_t phaseRRF = globalBlock->GetRRFPhase()*TMath::TwoPi()/180.0; Double_t time = 0.0; - for (Int_t i=fGoodBins[0]; i 1 @@ -671,7 +683,7 @@ Bool_t PRunSingleHistoRRF::PrepareFitData(PRawRunData* runData, const UInt_t his // the error estimate of the unpacked RRF asymmetry is: errA_RRF(t) \simeq exp(t/tau)/N0 sqrt( [N(t) + ((N(t)-N_bkg)/N0)^2 errN0^2] ) dval = 0.0; // the packed RRF asymmetry error - for (Int_t i=fGoodBins[0]; i Date: Thu, 14 Jan 2016 11:24:49 +0100 Subject: [PATCH 08/22] slightly improvement the N0 estimate --- src/classes/PRunSingleHistoRRF.cpp | 72 +++++++++++++++++++++++++++--- src/include/PRunSingleHistoRRF.h | 3 +- 2 files changed, 68 insertions(+), 7 deletions(-) diff --git a/src/classes/PRunSingleHistoRRF.cpp b/src/classes/PRunSingleHistoRRF.cpp index 2cc7c2a6..e1c4baba 100644 --- a/src/classes/PRunSingleHistoRRF.cpp +++ b/src/classes/PRunSingleHistoRRF.cpp @@ -43,8 +43,10 @@ using namespace std; #include #include #include +#include #include "PMusr.h" +#include "PFourier.h" #include "PRunSingleHistoRRF.h" //-------------------------------------------------------------------------- @@ -575,6 +577,8 @@ Bool_t PRunSingleHistoRRF::PrepareFitData(PRawRunData* runData, const UInt_t his for (UInt_t i=0; i freqMax=" << freqMax << " (MHz)" << endl; // initially fForward is the "raw data set" (i.e. grouped histo and raw runs already added) to be fitted. This means fForward = N(t) at this point. @@ -613,9 +617,10 @@ Bool_t PRunSingleHistoRRF::PrepareFitData(PRawRunData* runData, const UInt_t his time_tau = (startTime + fTimeResolution * (i - fGoodBins[0])) / PMUON_LIFETIME; exp_t_tau = exp(time_tau); fForward[i] *= exp_t_tau; - fM.push_back(fForward[i]); // needed to estimate N0 later on - fMerr.push_back(exp_t_tau*sqrt(rawNt[i])); + fM.push_back(fForward[i]); // i.e. M(t) = [N(t)-Nbkg] exp(+t/tau); needed to estimate N0 later on + fMerr.push_back(exp_t_tau*sqrt(rawNt[i]-fBackground)); } + // calculate weights for (UInt_t i=0; i 0.0) @@ -627,13 +632,14 @@ Bool_t PRunSingleHistoRRF::PrepareFitData(PRawRunData* runData, const UInt_t his // 3) estimate N0 Double_t errN0 = 0.0; - Double_t n0 = EstimateN0(errN0); + Double_t n0 = EstimateN0(errN0, freqMax); // 4a) A(t) = exp(+t/tau) [N(t)-Nbkg] / N0 - 1.0 for (Int_t i=fGoodBins[0]; i<=fGoodBins[1]; i++) { fForward[i] = fForward[i] / n0 - 1.0; } +/* // make a DC correction of A(t) --> this is introduced to reduce ghost lines. // This is a dirty trick and should be put on a better quantitative base! Double_t dc_offset=0.0; @@ -645,6 +651,7 @@ Bool_t PRunSingleHistoRRF::PrepareFitData(PRawRunData* runData, const UInt_t his for (Int_t i=fGoodBins[0]; i<=fGoodBins[1]; i++) { fForward[i] -= dc_offset; } +*/ // 4b) error estimate of A(t): errA(t) = exp(+t/tau)/N0 sqrt( N(t) + ([N(t)-N_bkg]/N0)^2 errN0^2 ) for (Int_t i=fGoodBins[0]; i<=fGoodBins[1]; i++) { @@ -1039,18 +1046,71 @@ void PRunSingleHistoRRF::GetProperFitRange(PMsrGlobalBlock *globalBlock) } } +//-------------------------------------------------------------------------- +// GetMainFrequency (private) +//-------------------------------------------------------------------------- +/** + *

gets the maximum frequency of the given data. + * + * \param raw data set. + */ +Double_t PRunSingleHistoRRF::GetMainFrequency(PDoubleVector &data) +{ + Double_t freqMax = 0.0; + + // create histo + Double_t startTime = (fGoodBins[0]-fT0s[0]) * fTimeResolution; + Int_t noOfBins = fGoodBins[1]-fGoodBins[0]+1; + TH1F *histo = new TH1F("data", "data", noOfBins, startTime-fTimeResolution/2.0, startTime+fTimeResolution/2.0+noOfBins*fTimeResolution); + for (Int_t i=fGoodBins[0]; i<=fGoodBins[1]; i++) { + histo->SetBinContent(i-fGoodBins[0]+1, data[i]); + } + + // Fourier transform + PFourier *ft = new PFourier(histo, FOURIER_UNIT_FREQ); + ft->Transform(F_APODIZATION_STRONG); + + // find frequency maximum + TH1F *power = ft->GetPowerFourier(); + Double_t maxFreqVal = 0.0; + for (Int_t i=1; iGetNbinsX(); i++) { + // ignore dc part at 0 frequency + if (iGetNbinsX()-1) { + if (power->GetBinContent(i)>power->GetBinContent(i+1)) + continue; + } + // check for maximum + if (power->GetBinContent(i) > maxFreqVal) { + maxFreqVal = power->GetBinContent(i); + freqMax = power->GetBinCenter(i); + } + } + + // clean up + if (power) + delete power; + if (ft) + delete ft; + if (histo) + delete histo; + + return freqMax; +} + //-------------------------------------------------------------------------- // EstimateN0 (private) //-------------------------------------------------------------------------- /** *

Estimate the N0 for the given run. * - * \param sqrtNt * \param errN0 */ -Double_t PRunSingleHistoRRF::EstimateN0(Double_t &errN0) +Double_t PRunSingleHistoRRF::EstimateN0(Double_t &errN0, Double_t freqMax) { - Int_t endBin = N0EstimateEndTime / fTimeResolution - fGoodBins[0]; + // endBin is estimated such that the number of full cycles (according to the maximum frequency of the data) + // is approximately the time N0EstimateEndTime. + Int_t endBin = (Int_t)round(N0EstimateEndTime / fTimeResolution * ceil(freqMax)/freqMax); + Double_t n0 = 0.0; Double_t wN = 0.0; for (Int_t i=0; i Date: Thu, 14 Jan 2016 11:55:43 +0100 Subject: [PATCH 09/22] Calculate for Mu Px(t) by a superposition of the 4 Mu frequencies --- .../MuTransition/PSimulateMuTransition.cpp | 161 ++++++++++-------- .../MuTransition/PSimulateMuTransition.h | 12 +- 2 files changed, 97 insertions(+), 76 deletions(-) diff --git a/src/tests/MuTransition/PSimulateMuTransition.cpp b/src/tests/MuTransition/PSimulateMuTransition.cpp index 113e0982..15e558c1 100644 --- a/src/tests/MuTransition/PSimulateMuTransition.cpp +++ b/src/tests/MuTransition/PSimulateMuTransition.cpp @@ -14,9 +14,15 @@ Description: Root class to simulate muon spin phase under successive Mu+/Mu0 charge-exchange - processes by a Monte-Carlo method. Up to 3 Mu0 states are considered at the moment - (analogous to MuBC in Si, B||(100)), a non-precessing signal, and two precessing - states ("nu_12" and "nu_34"). + processes by a Monte-Carlo method. Consider transverse field geometry, and assume + initial muon spin direction in x, and field applied along z. For PxMu(t) in + muonium use the equation 8.22 of the muSR book of Yaounc and Dalmas de Réotier, in + slightly modified form (see Senba, J. Phys. B 23, 1545 (1990)); note that PxMu(t) + is given by a superposition of the four frequencies "nu_12", "nu_34", "nu_23", "nu_14". + These frequencies and the corresponding probabilities ("SetMuFractionState12" for + transitions 12 and 34, "SetMuFractionState23" for states 23 and 14) can be calculated + for a given field with the root macro AnisotropicMu.C + Parameters: 1) Precession frequencies of "nu_12", "nu_34", "nu_23", "nu_14" 2) fractions of nu_12, nu_34; and nu_23 and nu_14 @@ -33,15 +39,14 @@ The muon event simulation with a sequence of charge-changing processes is done in Event(): - simulate muon spin phase under charge-exchange with "3 Mu states" - (as MuBC in Si, B || (100), for example): a non-precessing, - and two precessing signals (nu_12, nu_34). + simulate muon spin phase under charge-exchange with "4 Mu transitions" 1) according to Mu+/Mu0 fraction begin either with a Mu+ state or Mu state 2) Mu+: determine next electron-capture time t_c. If t_c is larger than decay time t_d calculate muon spin precession for t_d; else calculate spin precession for t_c. - 3) Determine next ionization time t_i, also determine which Mu0 state has been formed - at the capture event. Calculate muon spin precession. - 4) get the next electron capture time, continue until t_d is reached. + 3) Determine next ionization time t_i; calculate Px(t_i) in Muonium; calculate the + muon spin phase by acos(Px(t_i)). + 4) get the next electron capture time, continue until t_d is reached; accumulate muon spin + phase. ***************************************************************************/ @@ -95,6 +100,7 @@ PSimulateMuTransition::PSimulateMuTransition(UInt_t seed) fMuPrecFreq12 = 0.; // Mu precession frequency of a 12 transition fMuPrecFreq23 = 0.; // Mu precession frequency of a 23 transition fMuPrecFreq14 = 0.; // Mu precession frequency of a 14 transition + fMuonPrecFreq = 0.; // muon precession frequency fBfield = 0.01; // magnetic field (T) fCaptureRate = 0.01; // Mu+ capture rate (MHz) fIonizationRate = 10.; // Mu0 ionization rate (MHz) @@ -103,8 +109,8 @@ PSimulateMuTransition::PSimulateMuTransition(UInt_t seed) fMuonDecayTime = 0.; fAsymmetry = 0.27; fMuFraction = 0.; - fMuFractionState1 = 0.; - fMuFractionState2 = 0.; + fMuFractionState12 = 0.; + fMuFractionState23 = 0.; fDebugFlag = kFALSE; } @@ -139,8 +145,8 @@ void PSimulateMuTransition::PrintSettings() const cout << endl << "Mu ionizatioan rate (MHz) = " << fIonizationRate; cout << endl << "Decay asymmetry = " << fAsymmetry; cout << endl << "Muonium fraction = " << fMuFraction; - cout << endl << "Muonium fraction state1 = " << fMuFractionState1; - cout << endl << "Muonium fraction state2 = " << fMuFractionState2; + cout << endl << "Muonium fraction state12 = " << fMuFractionState12; + cout << endl << "Muonium fraction state23 = " << fMuFractionState23; cout << endl << "Number of particles to simulate = " << fNmuons; cout << endl << "Initial muon spin phase (degree) = " << fInitialPhase; cout << endl << "Debug flag = " << fDebugFlag; @@ -224,38 +230,53 @@ Double_t PSimulateMuTransition::NextEventTime(const Double_t &EventRate) * \param time duration of precession (us); * \param frequency muon spin precession frequency (MHz); */ -Double_t PSimulateMuTransition::PrecessionPhase(const Double_t &time, const Double_t &frequency) +Double_t PSimulateMuTransition::PrecessionPhase(const Double_t &time, const TString chargeState) { - return TMath::TwoPi()*frequency*time; + Double_t muonPhaseX; + Double_t muoniumPolX = 0; + + if (chargeState == "Mu+") + muonPhaseX = TMath::TwoPi()*fMuonPrecFreq*time; + else if (chargeState == "Mu0"){ + muoniumPolX = 0.5 * + (fMuFractionState12 * (TMath::Cos(TMath::TwoPi()*fMuPrecFreq12*time) + TMath::Cos(TMath::TwoPi()*fMuPrecFreq34*time)) + + fMuFractionState23 * (TMath::Cos(TMath::TwoPi()*fMuPrecFreq23*time) + TMath::Cos(TMath::TwoPi()*fMuPrecFreq14*time))); + muonPhaseX = TMath::ACos(muoniumPolX); + } + else + muonPhaseX = 0.; + + return muonPhaseX; } //-------------------------------------------------------------------------- // Event (private) //-------------------------------------------------------------------------- /** - *

Generates "muon event": simulate muon spin phase under charge-exchange - * with "3 Mu states" (as MuBC in Si, B || (100), for example): a non-precessing, - * and two precessing signals (nu_12, nu_34). + *

Generates "muon event": simulate muon spin phase under charge-exchange with + * a neutral muonium state in transverse field, where the polarization evolution + * PxMu(t) of the muon spin in muonium is determined by a superposition of the + * four "Mu transitions" nu_12, nu_34, nu_23, and nu_14. * 1) according to Mu+/Mu0 fraction begin either with a Mu+ state or Mu state * 2) Mu+: determine next electron-capture time t_c. If t_c is larger than decay time t_d * calculate muon spin precession for t_d; else calculate spin precession for t_c. - * 3) Determine next ionization time t_i, also determine which Mu0 state has been formed - * at the capture event. Calculate muon spin precession. + * 3) Determine next ionization time t_i; calculate Px(t_i) in Muonium; calculate the + * muon spin phase by acos(Px(t_i)). * 4) get the next electron capture time, continue until t_d is reached. * *

For isotropic muonium, TF: - * nu_12 and nu_34 with equal probabilities, probability for both states fMuFractionState1 - * ni_23 and nu_14 with equal probabilities, probability for both states fMuFractionState2 + * nu_12 and nu_34 with equal probabilities, probability for both states fMuFractionState12 + * ni_23 and nu_14 with equal probabilities, probability for both states fMuFractionState23 * * \param muonString if eq. "Mu+" begin with Mu+ precession */ void PSimulateMuTransition::Event(const TString muonString) { Double_t eventTime, eventDiffTime, captureTime, ionizationTime; - Double_t muonPrecessionFreq, muoniumPrecessionFreq; // MHz - Double_t rndm, frac1, frac2; +// Double_t muonPrecessionFreq, muoniumPrecessionFreq; // MHz +// Double_t rndm, frac1, frac2; - muonPrecessionFreq = fMuonGyroRatio * fBfield; + fMuonPrecFreq = fMuonGyroRatio * fBfield; // charge-exchange loop until muon decay eventTime = 0.; @@ -270,10 +291,10 @@ void PSimulateMuTransition::Event(const TString muonString) eventTime += captureTime; if (fDebugFlag) cout << "Capture time = " << captureTime << " Phase = " << fMuonPhase << endl; if (eventTime < fMuonDecayTime) - fMuonPhase += PrecessionPhase(captureTime, muonPrecessionFreq); + fMuonPhase += PrecessionPhase(captureTime, "Mu+"); else{ //muon decays; handle precession prior to muon decay eventDiffTime = fMuonDecayTime - (eventTime - captureTime); - fMuonPhase += PrecessionPhase(eventDiffTime, muonPrecessionFreq); + fMuonPhase += PrecessionPhase(eventDiffTime, "Mu+"); break; } @@ -281,31 +302,30 @@ void PSimulateMuTransition::Event(const TString muonString) ionizationTime = NextEventTime(fIonizationRate); eventTime += ionizationTime; // determine Mu state - rndm = fRandom->Rndm(); - frac1 = 1. - fMuFractionState1 - fMuFractionState2; // non-precessing Mu states - frac2 = 1. - fMuFractionState2; - if ( rndm < frac1 ) - muoniumPrecessionFreq = 0.; - else if (rndm >= frac1 && rndm <= frac2){ - if (fRandom->Rndm() <= 0.5) - muoniumPrecessionFreq = fMuPrecFreq12; - else - muoniumPrecessionFreq = fMuPrecFreq34; - } - else{ - if (fRandom->Rndm() <= 0.5) - muoniumPrecessionFreq = fMuPrecFreq23; - else - muoniumPrecessionFreq = fMuPrecFreq14; - } +// rndm = fRandom->Rndm(); +// frac1 = 1. - fMuFractionState1 - fMuFractionState2; // non-precessing Mu states +// frac2 = 1. - fMuFractionState2; +// if ( rndm < frac1 ) +// muoniumPrecessionFreq = 0.; +// else if (rndm >= frac1 && rndm <= frac2){ +// if (fRandom->Rndm() <= 0.5) +// muoniumPrecessionFreq = fMuPrecFreq12; +// else +// muoniumPrecessionFreq = fMuPrecFreq34; +// } +// else{ +// if (fRandom->Rndm() <= 0.5) +// muoniumPrecessionFreq = fMuPrecFreq23; +// else +// muoniumPrecessionFreq = fMuPrecFreq14; +// } - if (fDebugFlag) cout << "Ioniza. time = " << ionizationTime << " Freq = " << muoniumPrecessionFreq - << " Phase = " << fMuonPhase << endl; + if (fDebugFlag) cout << "Ioniza. time = " << ionizationTime << " Phase = " << fMuonPhase << endl; if (eventTime < fMuonDecayTime) - fMuonPhase += PrecessionPhase(ionizationTime, muoniumPrecessionFreq); + fMuonPhase += PrecessionPhase(ionizationTime, "Mu0"); else{ //muon decays; handle precession prior to muon decay eventDiffTime = fMuonDecayTime - (eventTime - ionizationTime); - fMuonPhase += PrecessionPhase(eventDiffTime, muoniumPrecessionFreq); + fMuonPhase += PrecessionPhase(eventDiffTime, "Mu0"); break; } } @@ -314,32 +334,31 @@ void PSimulateMuTransition::Event(const TString muonString) ionizationTime = NextEventTime(fIonizationRate); eventTime += ionizationTime; // determine Mu state - rndm = fRandom->Rndm(); - frac1 = 1. - fMuFractionState1 - fMuFractionState2; // non-precessing Mu states - frac2 = 1. - fMuFractionState2; - if ( rndm < frac1 ) - muoniumPrecessionFreq = 0.; - else if (rndm >= frac1 && rndm <= frac2){ - if (fRandom->Rndm() <= 0.5) - muoniumPrecessionFreq = fMuPrecFreq12; - else - muoniumPrecessionFreq = fMuPrecFreq34; - } - else{ - if (fRandom->Rndm() <= 0.5) - muoniumPrecessionFreq = fMuPrecFreq23; - else - muoniumPrecessionFreq = fMuPrecFreq14; - } +// rndm = fRandom->Rndm(); +// frac1 = 1. - fMuFractionState1 - fMuFractionState2; // non-precessing Mu states +// frac2 = 1. - fMuFractionState2; +// if ( rndm < frac1 ) +// muoniumPrecessionFreq = 0.; +// else if (rndm >= frac1 && rndm <= frac2){ +// if (fRandom->Rndm() <= 0.5) +// muoniumPrecessionFreq = fMuPrecFreq12; +// else +// muoniumPrecessionFreq = fMuPrecFreq34; +// } +// else{ +// if (fRandom->Rndm() <= 0.5) +// muoniumPrecessionFreq = fMuPrecFreq23; +// else +// muoniumPrecessionFreq = fMuPrecFreq14; +// } if (fDebugFlag) - cout << "Mu Ioniza. time = " << ionizationTime << " Freq = " << muoniumPrecessionFreq - << " Phase = " << fMuonPhase << endl; + cout << "Mu Ioniza. time = " << ionizationTime << " Phase = " << fMuonPhase << endl; if (eventTime < fMuonDecayTime) - fMuonPhase += PrecessionPhase(ionizationTime, muoniumPrecessionFreq); + fMuonPhase += PrecessionPhase(ionizationTime, "Mu0"); else{ //muon decays; handle precession prior to muon decay eventDiffTime = fMuonDecayTime - (eventTime - ionizationTime); - fMuonPhase += PrecessionPhase(eventDiffTime, muoniumPrecessionFreq); + fMuonPhase += PrecessionPhase(eventDiffTime, "Mu0"); break; } @@ -348,10 +367,10 @@ void PSimulateMuTransition::Event(const TString muonString) eventTime += captureTime; if (fDebugFlag) cout << "Capture time = " << captureTime << " Phase = " << fMuonPhase << endl; if (eventTime < fMuonDecayTime) - fMuonPhase += PrecessionPhase(captureTime, muonPrecessionFreq); + fMuonPhase += PrecessionPhase(captureTime, "Mu+"); else{ //muon decays; handle precession prior to muon decay eventDiffTime = fMuonDecayTime - (eventTime - captureTime); - fMuonPhase += PrecessionPhase(eventDiffTime, muonPrecessionFreq); + fMuonPhase += PrecessionPhase(eventDiffTime, "Mu+"); break; } } diff --git a/src/tests/MuTransition/PSimulateMuTransition.h b/src/tests/MuTransition/PSimulateMuTransition.h index cbe5cc66..6640fd3b 100644 --- a/src/tests/MuTransition/PSimulateMuTransition.h +++ b/src/tests/MuTransition/PSimulateMuTransition.h @@ -57,8 +57,8 @@ class PSimulateMuTransition : public TObject virtual void SetIonizationRate(Double_t value){ fIonizationRate = value; } //!< sets Mu0 ionization rate (MHz) virtual void SetDecayAsymmetry(Double_t value){ fAsymmetry = value; } //!< muon decay asymmetry virtual void SetMuFraction(Double_t value){ fMuFraction = value; } //!< Muonium fraction - virtual void SetMuFractionState1(Double_t value){ fMuFractionState1 = value; } - virtual void SetMuFractionState2(Double_t value){ fMuFractionState2 = value; } + virtual void SetMuFractionState12(Double_t value){ fMuFractionState12 = value; } + virtual void SetMuFractionState23(Double_t value){ fMuFractionState23 = value; } virtual Bool_t IsValid() { return fValid; } virtual void SetSeed(UInt_t seed); @@ -77,6 +77,7 @@ class PSimulateMuTransition : public TObject Double_t fMuPrecFreq34; //!< Mu transition frequency 34 (MHz) Double_t fMuPrecFreq23; //!< Mu transition frequency 23 (MHz) Double_t fMuPrecFreq14; //!< Mu transition frequency 14 (MHz) + Double_t fMuonPrecFreq; //!< muon precession frequency (MHz) Double_t fCaptureRate; //!< Mu+ electron capture rate (MHz) Double_t fIonizationRate; //!< Mu0 ionization rate (MHz) Double_t fInitialPhase; //!< initial muon spin phase @@ -84,13 +85,14 @@ class PSimulateMuTransition : public TObject Double_t fMuonPhase; //!< phase of muon spin Double_t fAsymmetry; //!< muon decay asymmetry Double_t fMuFraction; //!< total Mu fraction [0,1] - Double_t fMuFractionState1; //!< fraction of Mu in state 1 - Double_t fMuFractionState2; //!< fraction of Mu in state 2 + Double_t fMuFractionState12; //!< fraction of Mu in state 12, 34 + Double_t fMuFractionState23; //!< fraction of Mu in state 23, 14 Int_t fNmuons; //!< number of muons to simulate Bool_t fDebugFlag; //!< debug flag virtual Double_t NextEventTime(const Double_t &EventRate); - virtual Double_t PrecessionPhase(const Double_t &time, const Double_t &frequency); +// virtual Double_t PrecessionPhase(const Double_t &time, const Double_t &frequency); + virtual Double_t PrecessionPhase(const Double_t &time, const TString chargeState); virtual void Event(const TString muonString); ClassDef(PSimulateMuTransition, 0) From 782eb4e1a48b3a36582e758462c4554bcefe3863 Mon Sep 17 00:00:00 2001 From: Suter Andreas Date: Thu, 14 Jan 2016 13:18:06 +0100 Subject: [PATCH 10/22] better RRF labelling, and proper class variable naming. --- src/classes/PMusrCanvas.cpp | 27 ++++++++++++++++++--------- src/classes/PRunSingleHistoRRF.cpp | 10 ++++++++-- src/include/PRunSingleHistoRRF.h | 2 +- 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/src/classes/PMusrCanvas.cpp b/src/classes/PMusrCanvas.cpp index 1982aa4b..2ce52c81 100644 --- a/src/classes/PMusrCanvas.cpp +++ b/src/classes/PMusrCanvas.cpp @@ -420,25 +420,27 @@ void PMusrCanvas::SetMsrHandler(PMsrHandler *msrHandler) fRRFText = new TString("RRF: "); rrfUnitTag = fMsrHandler->GetMsrPlotList()->at(0).fRRFUnit; rrfFreq = fMsrHandler->GetMsrPlotList()->at(0).fRRFFreq; + TString rrfFreqStr(""); + rrfFreqStr.Form("%.5g", rrfFreq); if (rrfUnitTag == RRF_UNIT_kHz) { *fRRFText += TString("#nu_{RRF} = "); *fRRFText += rrfFreq; *fRRFText += TString(" (kHz)"); } else if (rrfUnitTag == RRF_UNIT_MHz) { *fRRFText += TString("#nu_{RRF} = "); - *fRRFText += rrfFreq; + *fRRFText += rrfFreqStr; *fRRFText += TString(" (MHz)"); } else if (rrfUnitTag == RRF_UNIT_Mcs) { *fRRFText += TString("#omega_{RRF} = "); - *fRRFText += rrfFreq; + *fRRFText += rrfFreqStr; *fRRFText += TString(" (Mc/s)"); } else if (rrfUnitTag == RRF_UNIT_G) { *fRRFText += TString("B_{RRF} = "); - *fRRFText += rrfFreq; + *fRRFText += rrfFreqStr; *fRRFText += TString(" (G)"); } else if (rrfUnitTag == RRF_UNIT_T) { *fRRFText += TString("B_{RRF} = "); - *fRRFText += rrfFreq; + *fRRFText += rrfFreqStr; *fRRFText += TString(" (T)"); } *fRRFText += TString(", RRF packing = "); @@ -447,25 +449,27 @@ void PMusrCanvas::SetMsrHandler(PMsrHandler *msrHandler) fRRFText = new TString("RRF: "); rrfUnitTag = fMsrHandler->GetMsrGlobal()->GetRRFUnitTag(); rrfFreq = fMsrHandler->GetMsrGlobal()->GetRRFFreq(fMsrHandler->GetMsrGlobal()->GetRRFUnit().Data()); + TString rrfFreqStr(""); + rrfFreqStr.Form("%.5g", rrfFreq); if (rrfUnitTag == RRF_UNIT_kHz) { *fRRFText += TString("#nu_{RRF} = "); - *fRRFText += rrfFreq; + *fRRFText += rrfFreqStr; *fRRFText += TString(" (kHz)"); } else if (rrfUnitTag == RRF_UNIT_MHz) { *fRRFText += TString("#nu_{RRF} = "); - *fRRFText += rrfFreq; + *fRRFText += rrfFreqStr; *fRRFText += TString(" (MHz)"); } else if (rrfUnitTag == RRF_UNIT_Mcs) { *fRRFText += TString("#omega_{RRF} = "); - *fRRFText += rrfFreq; + *fRRFText += rrfFreqStr; *fRRFText += TString(" (Mc/s)"); } else if (rrfUnitTag == RRF_UNIT_G) { *fRRFText += TString("B_{RRF} = "); - *fRRFText += rrfFreq; + *fRRFText += rrfFreqStr; *fRRFText += TString(" (G)"); } else if (rrfUnitTag == RRF_UNIT_T) { *fRRFText += TString("B_{RRF} = "); - *fRRFText += rrfFreq; + *fRRFText += rrfFreqStr; *fRRFText += TString(" (T)"); } *fRRFText += TString(", RRF packing = "); @@ -6156,6 +6160,11 @@ void PMusrCanvas::PlotAverage(Bool_t unzoom) break; } + // check if RRF and if yes show a label + if ((fRRFText != 0) && (fRRFLatexText != 0)) { + fRRFLatexText->DrawLatex(0.1, 0.92, fRRFText->Data()); + } + fDataTheoryPad->Update(); fMainCanvas->cd(); diff --git a/src/classes/PRunSingleHistoRRF.cpp b/src/classes/PRunSingleHistoRRF.cpp index e1c4baba..76fef6b4 100644 --- a/src/classes/PRunSingleHistoRRF.cpp +++ b/src/classes/PRunSingleHistoRRF.cpp @@ -580,6 +580,12 @@ Bool_t PRunSingleHistoRRF::PrepareFitData(PRawRunData* runData, const UInt_t his Double_t freqMax = GetMainFrequency(rawNt); cout << "info> freqMax=" << freqMax << " (MHz)" << endl; + // "optimal packing" + Double_t optNoPoints = 8; + if (freqMax < 271.0) // < 271 MHz, i.e ~ 2T + optNoPoints = 5; + cout << "info> optimal packing: " << (Int_t)(1.0 / (fTimeResolution*(freqMax - fMsrInfo->GetMsrGlobal()->GetRRFFreq("MHz"))) / optNoPoints); + // initially fForward is the "raw data set" (i.e. grouped histo and raw runs already added) to be fitted. This means fForward = N(t) at this point. // 1) check how the background shall be handled @@ -1108,8 +1114,8 @@ Double_t PRunSingleHistoRRF::GetMainFrequency(PDoubleVector &data) Double_t PRunSingleHistoRRF::EstimateN0(Double_t &errN0, Double_t freqMax) { // endBin is estimated such that the number of full cycles (according to the maximum frequency of the data) - // is approximately the time N0EstimateEndTime. - Int_t endBin = (Int_t)round(N0EstimateEndTime / fTimeResolution * ceil(freqMax)/freqMax); + // is approximately the time fN0EstimateEndTime. + Int_t endBin = (Int_t)round(fN0EstimateEndTime / fTimeResolution * ceil(freqMax)/freqMax); Double_t n0 = 0.0; Double_t wN = 0.0; diff --git a/src/include/PRunSingleHistoRRF.h b/src/include/PRunSingleHistoRRF.h index fd484bc8..63b063eb 100644 --- a/src/include/PRunSingleHistoRRF.h +++ b/src/include/PRunSingleHistoRRF.h @@ -58,7 +58,7 @@ class PRunSingleHistoRRF : public PRunBase virtual Bool_t PrepareViewData(PRawRunData* runData, const UInt_t histoNo); private: - static const Double_t N0EstimateEndTime = 1.0; ///< end time in (us) over which N0 is estimated. Should eventually be estimated automatically ... + static const Double_t fN0EstimateEndTime = 1.0; ///< end time in (us) over which N0 is estimated. Should eventually be estimated automatically ... UInt_t fNoOfFitBins; ///< number of bins to be fitted Double_t fBackground; ///< needed if background range is given (units: 1/bin) From 6f79943ca29b3bc78851803ad65b86e5114b8af2 Mon Sep 17 00:00:00 2001 From: Thomas Prokscha Date: Thu, 14 Jan 2016 13:56:27 +0100 Subject: [PATCH 11/22] Changed runMuSimulation.C according to chnages in PSimulateMuTransition.cpp --- src/tests/MuTransition/runMuSimulation.C | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tests/MuTransition/runMuSimulation.C b/src/tests/MuTransition/runMuSimulation.C index a769d071..4e2a55d2 100644 --- a/src/tests/MuTransition/runMuSimulation.C +++ b/src/tests/MuTransition/runMuSimulation.C @@ -110,8 +110,8 @@ void runMuSimulation() simulateMuTransition->SetMuPrecFreq23(Freq23); // MHz simulateMuTransition->SetMuPrecFreq14(Freq14); // MHz simulateMuTransition->SetMuFraction(MuFrac); // initial Mu fraction - simulateMuTransition->SetMuFractionState1(MuFrac12); // Mu in states 12, 34 - simulateMuTransition->SetMuFractionState2(MuFrac23); // Mu in states 23, 14 + simulateMuTransition->SetMuFractionState12(MuFrac12); // Mu in states 12, 34 + simulateMuTransition->SetMuFractionState23(MuFrac23); // Mu in states 23, 14 simulateMuTransition->SetBfield(B/10000.); // Tesla simulateMuTransition->SetCaptureRate(capRate); // MHz simulateMuTransition->SetIonizationRate(ionRate); // MHz From 8e399fa04e2c41f21e761dfdf7360f684eefc9fa Mon Sep 17 00:00:00 2001 From: Suter Andreas Date: Fri, 15 Jan 2016 17:16:07 +0100 Subject: [PATCH 12/22] first steps towards asymmetry RRF fit. --- src/classes/Makefile.am | 2 + src/classes/PFitter.cpp | 2 +- src/classes/PFitterFcn.cpp | 2 +- src/classes/PFourier.cpp | 2 +- src/classes/PFourierCanvas.cpp | 2 +- src/classes/PFunction.cpp | 2 +- src/classes/PFunctionHandler.cpp | 2 +- src/classes/PMsr2Data.cpp | 2 +- src/classes/PMsrHandler.cpp | 48 ++++++- src/classes/PMusr.cpp | 2 +- src/classes/PMusrCanvas.cpp | 20 ++- src/classes/PMusrT0.cpp | 2 +- src/classes/PPrepFourier.cpp | 2 +- src/classes/PRunAsymmetry.cpp | 8 +- src/classes/PRunBase.cpp | 2 +- src/classes/PRunDataHandler.cpp | 2 +- src/classes/PRunListCollection.cpp | 125 +++++++++++++++++- src/classes/PRunMuMinus.cpp | 2 +- src/classes/PRunNonMusr.cpp | 2 +- src/classes/PRunSingleHisto.cpp | 2 +- src/classes/PRunSingleHistoRRF.cpp | 14 -- src/classes/PStartupHandler.cpp | 2 +- src/classes/PTheory.cpp | 2 +- src/classes/PUserFcn.cpp | 2 +- src/classes/PUserFcnBase.cpp | 2 +- src/include/PFitter.h | 2 +- src/include/PFitterFcn.h | 2 +- src/include/PFourier.h | 2 +- src/include/PFourierCanvas.h | 11 +- src/include/PFourierCanvasLinkDef.h | 2 +- src/include/PFunction.h | 2 +- src/include/PFunctionGrammar.h | 2 +- src/include/PFunctionHandler.h | 2 +- src/include/PMsr2Data.h | 2 +- src/include/PMsrHandler.h | 2 +- src/include/PMusr.h | 5 +- src/include/PMusrCanvas.h | 2 +- src/include/PMusrCanvasLinkDef.h | 2 +- src/include/PMusrT0.h | 2 +- src/include/PMusrT0LinkDef.h | 2 +- src/include/PPrepFourier.h | 2 +- src/include/PRunAsymmetry.h | 2 +- src/include/PRunBase.h | 2 +- src/include/PRunDataHandler.h | 2 +- src/include/PRunListCollection.h | 14 +- src/include/PRunMuMinus.h | 2 +- src/include/PRunNonMusr.h | 2 +- src/include/PRunSingleHisto.h | 2 +- src/include/PStartupHandler.h | 2 +- src/include/PStartupHandlerLinkDef.h | 2 +- src/include/PTheory.h | 2 +- src/include/PUserFcn.h | 2 +- src/include/PUserFcnBase.h | 2 +- src/include/PUserFcnBaseLinkDef.h | 2 +- src/tests/analyticFakeData/analyticFakeData.C | 2 +- 55 files changed, 253 insertions(+), 86 deletions(-) diff --git a/src/classes/Makefile.am b/src/classes/Makefile.am index 7e70efb4..282772ff 100644 --- a/src/classes/Makefile.am +++ b/src/classes/Makefile.am @@ -15,6 +15,7 @@ h_sources = \ ../include/PMusrT0.h \ ../include/PPrepFourier.h \ ../include/PRunAsymmetry.h \ + ../include/PRunAsymmetryRRF.h \ ../include/PRunBase.h \ ../include/PRunDataHandler.h \ ../include/PRunListCollection.h \ @@ -60,6 +61,7 @@ cpp_sources = \ PMusrT0.cpp \ PPrepFourier.cpp \ PRunAsymmetry.cpp \ + PRunAsymmetryRRF.cpp \ PRunBase.cpp \ PRunDataHandler.cpp \ PRunListCollection.cpp \ diff --git a/src/classes/PFitter.cpp b/src/classes/PFitter.cpp index fa9b88cb..e366bda1 100644 --- a/src/classes/PFitter.cpp +++ b/src/classes/PFitter.cpp @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/classes/PFitterFcn.cpp b/src/classes/PFitterFcn.cpp index ccae307c..5e5b23c6 100644 --- a/src/classes/PFitterFcn.cpp +++ b/src/classes/PFitterFcn.cpp @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/classes/PFourier.cpp b/src/classes/PFourier.cpp index bbfbf542..ec516096 100644 --- a/src/classes/PFourier.cpp +++ b/src/classes/PFourier.cpp @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2015 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/classes/PFourierCanvas.cpp b/src/classes/PFourierCanvas.cpp index f83da656..07813ff4 100644 --- a/src/classes/PFourierCanvas.cpp +++ b/src/classes/PFourierCanvas.cpp @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2015 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/classes/PFunction.cpp b/src/classes/PFunction.cpp index 35bd9f42..951153d8 100644 --- a/src/classes/PFunction.cpp +++ b/src/classes/PFunction.cpp @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/classes/PFunctionHandler.cpp b/src/classes/PFunctionHandler.cpp index a7ac7e6b..de8abaa5 100644 --- a/src/classes/PFunctionHandler.cpp +++ b/src/classes/PFunctionHandler.cpp @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/classes/PMsr2Data.cpp b/src/classes/PMsr2Data.cpp index d00cd073..f5e19160 100644 --- a/src/classes/PMsr2Data.cpp +++ b/src/classes/PMsr2Data.cpp @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2009-2015 by Bastian M. Wojek / Andreas Suter * + * Copyright (C) 2009-2016 by Bastian M. Wojek / Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/classes/PMsrHandler.cpp b/src/classes/PMsrHandler.cpp index e1a19754..97cfa207 100644 --- a/src/classes/PMsrHandler.cpp +++ b/src/classes/PMsrHandler.cpp @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2015 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * @@ -623,6 +623,9 @@ Int_t PMsrHandler::WriteMsrLogFile(const Bool_t messages) case MSR_FITTYPE_ASYM: fout << left << "fittype" << MSR_FITTYPE_ASYM << " (asymmetry fit)" << endl ; break; + case MSR_FITTYPE_ASYM_RRF: + fout << left << "fittype" << MSR_FITTYPE_ASYM_RRF << " (asymmetry RRF fit)" << endl ; + break; case MSR_FITTYPE_MU_MINUS: fout << left << "fittype" << MSR_FITTYPE_MU_MINUS << " (mu minus fit)" << endl ; break; @@ -778,9 +781,15 @@ Int_t PMsrHandler::WriteMsrLogFile(const Bool_t messages) case MSR_FITTYPE_SINGLE_HISTO: fout << left << "fittype" << MSR_FITTYPE_SINGLE_HISTO << " (single histogram fit)" << endl; break; + case MSR_FITTYPE_SINGLE_HISTO_RRF: + fout << left << "fittype" << MSR_FITTYPE_SINGLE_HISTO_RRF << " (single histogram RRF fit)" << endl; + break; case MSR_FITTYPE_ASYM: fout << left << "fittype" << MSR_FITTYPE_ASYM << " (asymmetry fit)" << endl ; break; + case MSR_FITTYPE_ASYM_RRF: + fout << left << "fittype" << MSR_FITTYPE_ASYM_RRF << " (asymmetry RRF fit)" << endl ; + break; case MSR_FITTYPE_MU_MINUS: fout << left << "fittype" << MSR_FITTYPE_MU_MINUS << " (mu minus fit)" << endl ; break; @@ -1636,9 +1645,15 @@ Int_t PMsrHandler::WriteMsrFile(const Char_t *filename, map *co case MSR_FITTYPE_SINGLE_HISTO: fout << left << "fittype" << MSR_FITTYPE_SINGLE_HISTO << " (single histogram fit)" << endl; break; + case MSR_FITTYPE_SINGLE_HISTO_RRF: + fout << left << "fittype" << MSR_FITTYPE_SINGLE_HISTO_RRF << " (single histogram RRF fit)" << endl; + break; case MSR_FITTYPE_ASYM: fout << left << "fittype" << MSR_FITTYPE_ASYM << " (asymmetry fit)" << endl ; break; + case MSR_FITTYPE_ASYM_RRF: + fout << left << "fittype" << MSR_FITTYPE_ASYM_RRF << " (asymmetry RRF fit)" << endl ; + break; case MSR_FITTYPE_MU_MINUS: fout << left << "fittype" << MSR_FITTYPE_MU_MINUS << " (mu minus fit)" << endl ; break; @@ -1821,9 +1836,15 @@ Int_t PMsrHandler::WriteMsrFile(const Char_t *filename, map *co case MSR_FITTYPE_SINGLE_HISTO: fout << left << "fittype" << MSR_FITTYPE_SINGLE_HISTO << " (single histogram fit)" << endl; break; + case MSR_FITTYPE_SINGLE_HISTO_RRF: + fout << left << "fittype" << MSR_FITTYPE_SINGLE_HISTO_RRF << " (single histogram RRF fit)" << endl; + break; case MSR_FITTYPE_ASYM: fout << left << "fittype" << MSR_FITTYPE_ASYM << " (asymmetry fit)" << endl ; break; + case MSR_FITTYPE_ASYM_RRF: + fout << left << "fittype" << MSR_FITTYPE_ASYM_RRF << " (asymmetry RRF fit)" << endl ; + break; case MSR_FITTYPE_MU_MINUS: fout << left << "fittype" << MSR_FITTYPE_MU_MINUS << " (mu minus fit)" << endl ; break; @@ -2889,6 +2910,7 @@ Bool_t PMsrHandler::HandleGlobalEntry(PMsrLines &lines) if ((fittype == MSR_FITTYPE_SINGLE_HISTO) || (fittype == MSR_FITTYPE_SINGLE_HISTO_RRF) || (fittype == MSR_FITTYPE_ASYM) || + (fittype == MSR_FITTYPE_ASYM_RRF) || (fittype == MSR_FITTYPE_MU_MINUS) || (fittype == MSR_FITTYPE_NON_MUSR)) { global.SetFitType(fittype); @@ -3224,6 +3246,7 @@ Bool_t PMsrHandler::HandleRunEntry(PMsrLines &lines) if ((fittype == MSR_FITTYPE_SINGLE_HISTO) || (fittype == MSR_FITTYPE_SINGLE_HISTO_RRF) || (fittype == MSR_FITTYPE_ASYM) || + (fittype == MSR_FITTYPE_ASYM_RRF) || (fittype == MSR_FITTYPE_MU_MINUS) || (fittype == MSR_FITTYPE_NON_MUSR)) { param.SetFitType(fittype); @@ -4139,6 +4162,7 @@ Bool_t PMsrHandler::HandlePlotEntry(PMsrLines &lines) case MSR_PLOT_SINGLE_HISTO: // like: runs 1 5 13 case MSR_PLOT_SINGLE_HISTO_RRF: case MSR_PLOT_ASYM: + case MSR_PLOT_ASYM_RRF: case MSR_PLOT_NON_MUSR: case MSR_PLOT_MU_MINUS: rl = new PStringNumberList(iter1->fLine.Data()); @@ -4550,8 +4574,10 @@ Bool_t PMsrHandler::HandlePlotEntry(PMsrLines &lines) cerr << endl << ">> [use_fit_ranges [ymin ymax]]"; cerr << endl << ">> [view_packing n]"; cerr << endl; - cerr << endl << ">> where is: 0=single histo asym,"; + cerr << endl << ">> where is: 0=single histo,"; + cerr << endl << ">> 1=RRF single histo,"; cerr << endl << ">> 2=forward-backward asym,"; + cerr << endl << ">> 3=forward-backward RRF asym,"; cerr << endl << ">> 4=mu minus single histo,"; cerr << endl << ">> 8=non muSR."; cerr << endl << ">> is the list of runs, e.g. runs 1 3"; @@ -5359,6 +5385,9 @@ Bool_t PMsrHandler::CheckRunBlockIntegrity() fRuns[i].SetPacking(1); } break; + case PRUN_ASYMMETRY_RRF: + // STILL MISSING + break; case PRUN_MU_MINUS: // needs eventually to be implemented break; @@ -5760,7 +5789,8 @@ Bool_t PMsrHandler::CheckRRFSettings() // first set of tests: if RRF parameters are set, check if RRF fit is chosen. if (fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data()) != 0.0) { if (fittype != -1) { // check if GLOBAL fittype is set - if (fittype != MSR_FITTYPE_SINGLE_HISTO_RRF) { + if ((fittype != MSR_FITTYPE_SINGLE_HISTO_RRF) && + (fittype != MSR_FITTYPE_ASYM_RRF)) { cerr << endl << ">> PMsrHandler::CheckRRFSettings: **ERROR** found GLOBAL fittype " << fittype << " and"; cerr << endl << ">> RRF settings in the GLOBAL section. This is NOT compatible. Fix it first."; result = false; @@ -5768,7 +5798,8 @@ Bool_t PMsrHandler::CheckRRFSettings() } else { // GLOBAL fittype is NOT set for (UInt_t i=0; i> PMsrHandler::CheckRRFSettings: **ERROR** found RUN with fittype " << fittype << " and"; cerr << endl << ">> RRF settings in the GLOBAL section. This is NOT compatible. Fix it first."; result = false; @@ -5792,13 +5823,15 @@ Bool_t PMsrHandler::CheckRRFSettings() } // if not a RRF fit, done at this point - if (fittype != MSR_FITTYPE_SINGLE_HISTO_RRF) { + if ((fittype != MSR_FITTYPE_SINGLE_HISTO_RRF) && + (fittype != MSR_FITTYPE_ASYM_RRF)) { return true; } // second set of tests: if RRF fit is chosen, do I find the necessary RRF parameters? fittype = fGlobal.GetFitType(); - if (fittype == MSR_FITTYPE_SINGLE_HISTO_RRF) { // make sure RRF freq and RRF packing are set + if ((fittype == MSR_FITTYPE_SINGLE_HISTO_RRF) || + (fittype == MSR_FITTYPE_ASYM_RRF)) { // make sure RRF freq and RRF packing are set if (fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data()) == 0.0) { cerr << endl << ">> PMsrHandler::CheckRRFSettings: **ERROR** RRF fit chosen, but"; cerr << endl << ">> no RRF frequency found in the GLOBAL section! Fix it."; @@ -5813,7 +5846,8 @@ Bool_t PMsrHandler::CheckRRFSettings() UInt_t rrfFitCounter = 0; for (UInt_t i=0; iGetAsymmetryRRF(runNo, PRunListCollection::kRunNo); + if (!data) { // something wrong + fValid = false; + // error message + cerr << endl << ">> PMusrCanvas::UpdateDataTheoryPad(): **ERROR** couldn't obtain run no " << runNo << " for a asymmetry RRF plot"; + cerr << endl; + return; + } + // handle data + HandleDataSet(i, runNo, data); + break; case MSR_FITTYPE_MU_MINUS: data = fRunList->GetMuMinus(runNo, PRunListCollection::kRunNo); if (!data) { // something wrong @@ -873,13 +885,15 @@ void PMusrCanvas::UpdateInfoPad() else tstr = *runs[runNo].GetRunName() + TString(","); // run_name // histo info (depending on the fittype - if (runs[runNo].GetFitType() == MSR_FITTYPE_SINGLE_HISTO) { + if ((runs[runNo].GetFitType() == MSR_FITTYPE_SINGLE_HISTO) || + (runs[runNo].GetFitType() == MSR_FITTYPE_SINGLE_HISTO_RRF)) { tstr += TString("h:"); TString grouping; fMsrHandler->GetGroupingString(runNo, "forward", grouping); tstr += grouping; tstr += TString(","); - } else if (runs[runNo].GetFitType() == MSR_FITTYPE_ASYM) { + } else if ((runs[runNo].GetFitType() == MSR_FITTYPE_ASYM) || + (runs[runNo].GetFitType() == MSR_FITTYPE_ASYM_RRF)) { tstr += TString("h:"); TString grouping; fMsrHandler->GetGroupingString(runNo, "forward", grouping); diff --git a/src/classes/PMusrT0.cpp b/src/classes/PMusrT0.cpp index dfedb61d..c13414fc 100644 --- a/src/classes/PMusrT0.cpp +++ b/src/classes/PMusrT0.cpp @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/classes/PPrepFourier.cpp b/src/classes/PPrepFourier.cpp index 1b542c5b..fd713462 100644 --- a/src/classes/PPrepFourier.cpp +++ b/src/classes/PPrepFourier.cpp @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2015 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/classes/PRunAsymmetry.cpp b/src/classes/PRunAsymmetry.cpp index c04d2a73..a2572b32 100644 --- a/src/classes/PRunAsymmetry.cpp +++ b/src/classes/PRunAsymmetry.cpp @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * @@ -87,7 +87,7 @@ PRunAsymmetry::PRunAsymmetry(PMsrHandler *msrInfo, PRunDataHandler *rawData, UIn fPacking = fMsrInfo->GetMsrGlobal()->GetPacking(); } if (fPacking == -1) { // this should NOT happen, somethin is severely wrong - cerr << endl << ">> PRunAsymmetry::PRunAsymmetry: **SEVERE ERROR**: Couldn't find any packing information!"; + cerr << endl << ">> PRunAsymmetry::PRunAsymmetry(): **SEVERE ERROR**: Couldn't find any packing information!"; cerr << endl << ">> This is very bad :-(, will quit ..."; cerr << endl; fValid = false; @@ -342,7 +342,7 @@ void PRunAsymmetry::SetFitRangeBin(const TString fitRange) Int_t pos = 2*(fRunNo+1)-1; if (pos + 1 >= tok->GetEntries()) { - cerr << endl << ">> PRunSingleHisto::SetFitRangeBin(): **ERROR** invalid FIT_RANGE command found: '" << fitRange << "'"; + cerr << endl << ">> PRunAsymmetry::SetFitRangeBin(): **ERROR** invalid FIT_RANGE command found: '" << fitRange << "'"; cerr << endl << ">> will ignore it. Sorry ..." << endl; } else { // handle fgb+n0 entry @@ -370,7 +370,7 @@ void PRunAsymmetry::SetFitRangeBin(const TString fitRange) fFitEndTime = (fGoodBins[1] - offset - fT0s[0]) * fTimeResolution; } } else { // error - cerr << endl << ">> PRunSingleHisto::SetFitRangeBin(): **ERROR** invalid FIT_RANGE command found: '" << fitRange << "'"; + cerr << endl << ">> PRunAsymmetry::SetFitRangeBin(): **ERROR** invalid FIT_RANGE command found: '" << fitRange << "'"; cerr << endl << ">> will ignore it. Sorry ..." << endl; } diff --git a/src/classes/PRunBase.cpp b/src/classes/PRunBase.cpp index 7be37fe1..ffa15c86 100644 --- a/src/classes/PRunBase.cpp +++ b/src/classes/PRunBase.cpp @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/classes/PRunDataHandler.cpp b/src/classes/PRunDataHandler.cpp index bebc1cf0..b95c46fb 100644 --- a/src/classes/PRunDataHandler.cpp +++ b/src/classes/PRunDataHandler.cpp @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/classes/PRunListCollection.cpp b/src/classes/PRunListCollection.cpp index d5b1d94e..c5f57396 100644 --- a/src/classes/PRunListCollection.cpp +++ b/src/classes/PRunListCollection.cpp @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * @@ -70,6 +70,12 @@ PRunListCollection::~PRunListCollection() } fRunAsymmetryList.clear(); + for (UInt_t i=0; iCleanUp(); + fRunAsymmetryRRFList[i]->~PRunAsymmetryRRF(); + } + fRunAsymmetryRRFList.clear(); + for (UInt_t i=0; iCleanUp(); fRunMuMinusList[i]->~PRunMuMinus(); @@ -122,6 +128,11 @@ Bool_t PRunListCollection::Add(Int_t runNo, EPMusrHandleTag tag) if (!fRunAsymmetryList[fRunAsymmetryList.size()-1]->IsValid()) success = false; break; + case PRUN_ASYMMETRY_RRF: + fRunAsymmetryRRFList.push_back(new PRunAsymmetryRRF(fMsrInfo, fData, runNo, tag)); + if (!fRunAsymmetryRRFList[fRunAsymmetryRRFList.size()-1]->IsValid()) + success = false; + break; case PRUN_MU_MINUS: fRunMuMinusList.push_back(new PRunMuMinus(fMsrInfo, fData, runNo, tag)); if (!fRunMuMinusList[fRunMuMinusList.size()-1]->IsValid()) @@ -162,6 +173,8 @@ void PRunListCollection::SetFitRange(const TString fitRange) fRunSingleHistoRRFList[i]->SetFitRangeBin(fitRange); for (UInt_t i=0; iSetFitRangeBin(fitRange); + for (UInt_t i=0; iSetFitRangeBin(fitRange); for (UInt_t i=0; iSetFitRangeBin(fitRange); for (UInt_t i=0; iSetFitRange(fitRange); for (UInt_t i=0; iSetFitRange(fitRange); + for (UInt_t i=0; iSetFitRange(fitRange); for (UInt_t i=0; iSetFitRange(fitRange); for (UInt_t i=0; i& par) return chisq; } +//-------------------------------------------------------------------------- +// GetAsymmetryRRFChisq (public) +//-------------------------------------------------------------------------- +/** + *

Calculates chi-square of all asymmetry RRF runs of a msr-file. + * + * return: + * - chi-square of all asymmetry RRF runs of the msr-file + * + * \param par fit parameter vector + */ +Double_t PRunListCollection::GetAsymmetryRRFChisq(const std::vector& par) const +{ + Double_t chisq = 0.0; + + for (UInt_t i=0; iCalcChiSquare(par); + + return chisq; +} + //-------------------------------------------------------------------------- // GetMuMinusChisq (public) //-------------------------------------------------------------------------- @@ -341,6 +377,9 @@ Double_t PRunListCollection::GetSingleHistoChisqExpected(const std::vectorCalcChiSquareExpected(par); break; + case PRUN_ASYMMETRY_RRF: + expectedChisq = fRunAsymmetryRRFList[subIdx]->CalcChiSquareExpected(par); + break; case PRUN_MU_MINUS: expectedChisq = fRunMuMinusList[subIdx]->CalcChiSquareExpected(par); break; @@ -399,6 +438,9 @@ Double_t PRunListCollection::GetSingleRunChisq(const std::vector& par, case PRUN_ASYMMETRY: chisq = fRunAsymmetryList[subIdx]->CalcChiSquare(par); break; + case PRUN_ASYMMETRY_RRF: + chisq = fRunAsymmetryRRFList[subIdx]->CalcChiSquare(par); + break; case PRUN_MU_MINUS: chisq = fRunMuMinusList[subIdx]->CalcChiSquare(par); break; @@ -476,6 +518,28 @@ Double_t PRunListCollection::GetAsymmetryMaximumLikelihood(const std::vector Since it is not clear yet how to handle asymmetry fits with max likelihood + * the chi square will be used! + * + * return: + * - chi-square of all asymmetry RRF runs of the msr-file + * + * \param par fit parameter vector + */ +Double_t PRunListCollection::GetAsymmetryRRFMaximumLikelihood(const std::vector& par) const +{ + Double_t mlh = 0.0; + + for (UInt_t i=0; iCalcChiSquare(par); + + return mlh; +} + //-------------------------------------------------------------------------- // GetMuMinusMaximumLikelihood (public) //-------------------------------------------------------------------------- @@ -563,6 +627,9 @@ UInt_t PRunListCollection::GetNoOfBinsFitted(const UInt_t idx) const case PRUN_ASYMMETRY: result = fRunAsymmetryList[subIdx]->GetNoOfFitBins(); break; + case PRUN_ASYMMETRY_RRF: + result = fRunAsymmetryRRFList[subIdx]->GetNoOfFitBins(); + break; case PRUN_MU_MINUS: result = fRunMuMinusList[subIdx]->GetNoOfFitBins(); break; @@ -599,6 +666,9 @@ UInt_t PRunListCollection::GetTotalNoOfBinsFitted() const for (UInt_t i=0; iGetNoOfFitBins(); + for (UInt_t i=0; iGetNoOfFitBins(); + for (UInt_t i=0; iGetNoOfFitBins(); @@ -628,7 +698,7 @@ PRunData* PRunListCollection::GetSingleHisto(UInt_t index, EDataSwitch tag) switch (tag) { case kIndex: if ((index < 0) || (index >= fRunSingleHistoList.size())) { - cerr << endl << "PRunListCollection::GetSingleHisto: **ERROR** index = " << index << " out of bounds"; + cerr << endl << ">> PRunListCollection::GetSingleHisto(): **ERROR** index = " << index << " out of bounds"; cerr << endl; return 0; } @@ -671,7 +741,7 @@ PRunData* PRunListCollection::GetSingleHistoRRF(UInt_t index, EDataSwitch tag) switch (tag) { case kIndex: if ((index < 0) || (index >= fRunSingleHistoRRFList.size())) { - cerr << endl << "PRunListCollection::GetSingleHistoRRF: **ERROR** index = " << index << " out of bounds"; + cerr << endl << ">> PRunListCollection::GetSingleHistoRRF(): **ERROR** index = " << index << " out of bounds"; cerr << endl; return 0; } @@ -714,7 +784,7 @@ PRunData* PRunListCollection::GetAsymmetry(UInt_t index, EDataSwitch tag) switch (tag) { case kIndex: // called from musrfit when dumping the data if ((index < 0) || (index > fRunAsymmetryList.size())) { - cerr << endl << "PRunListCollection::GetAsymmetry: **ERROR** index = " << index << " out of bounds"; + cerr << endl << ">> PRunListCollection::GetAsymmetry(): **ERROR** index = " << index << " out of bounds"; cerr << endl; return 0; } @@ -737,6 +807,49 @@ PRunData* PRunListCollection::GetAsymmetry(UInt_t index, EDataSwitch tag) return data; } +//-------------------------------------------------------------------------- +// GetAsymmetryRRF (public) +//-------------------------------------------------------------------------- +/** + *

Get a processed asymmetry RRF data set. + * + * return: + * - pointer to the run data set (processed data) if data set is found + * - null pointer otherwise + * + * \param index msr-file run index + * \param tag kIndex -> data at index, kRunNo -> data of given run no + */ +PRunData* PRunListCollection::GetAsymmetryRRF(UInt_t index, EDataSwitch tag) +{ + PRunData *data = 0; + + switch (tag) { + case kIndex: // called from musrfit when dumping the data + if ((index < 0) || (index > fRunAsymmetryRRFList.size())) { + cerr << endl << ">> PRunListCollection::GetAsymmetryRRF(): **ERROR** index = " << index << " out of bounds"; + cerr << endl; + return 0; + } + + fRunAsymmetryList[index]->CalcTheory(); + data = fRunAsymmetryList[index]->GetData(); + break; + case kRunNo: // called from PMusrCanvas + for (UInt_t i=0; iGetRunNo() == index) { + data = fRunAsymmetryRRFList[i]->GetData(); + break; + } + } + break; + default: // error + break; + } + + return data; +} + //-------------------------------------------------------------------------- // GetMuMinus (public) //-------------------------------------------------------------------------- @@ -757,7 +870,7 @@ PRunData* PRunListCollection::GetMuMinus(UInt_t index, EDataSwitch tag) switch (tag) { case kIndex: if ((index < 0) || (index > fRunMuMinusList.size())) { - cerr << endl << "PRunListCollection::GetMuMinus: **ERROR** index = " << index << " out of bounds"; + cerr << endl << ">> PRunListCollection::GetMuMinus(): **ERROR** index = " << index << " out of bounds"; cerr << endl; return 0; } @@ -799,7 +912,7 @@ PRunData* PRunListCollection::GetNonMusr(UInt_t index, EDataSwitch tag) switch (tag) { case kIndex: if ((index < 0) || (index > fRunNonMusrList.size())) { - cerr << endl << "PRunListCollection::GetNonMusr: **ERROR** index = " << index << " out of bounds"; + cerr << endl << ">> PRunListCollection::GetNonMusr(): **ERROR** index = " << index << " out of bounds"; cerr << endl; return 0; } diff --git a/src/classes/PRunMuMinus.cpp b/src/classes/PRunMuMinus.cpp index a792f59b..bdcf7049 100644 --- a/src/classes/PRunMuMinus.cpp +++ b/src/classes/PRunMuMinus.cpp @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/classes/PRunNonMusr.cpp b/src/classes/PRunNonMusr.cpp index e8c5f3a8..2b188141 100644 --- a/src/classes/PRunNonMusr.cpp +++ b/src/classes/PRunNonMusr.cpp @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/classes/PRunSingleHisto.cpp b/src/classes/PRunSingleHisto.cpp index 7d8d14ee..2881a32d 100644 --- a/src/classes/PRunSingleHisto.cpp +++ b/src/classes/PRunSingleHisto.cpp @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/classes/PRunSingleHistoRRF.cpp b/src/classes/PRunSingleHistoRRF.cpp index 76fef6b4..55f7ce02 100644 --- a/src/classes/PRunSingleHistoRRF.cpp +++ b/src/classes/PRunSingleHistoRRF.cpp @@ -645,20 +645,6 @@ Bool_t PRunSingleHistoRRF::PrepareFitData(PRawRunData* runData, const UInt_t his fForward[i] = fForward[i] / n0 - 1.0; } -/* - // make a DC correction of A(t) --> this is introduced to reduce ghost lines. - // This is a dirty trick and should be put on a better quantitative base! - Double_t dc_offset=0.0; - for (Int_t i=fGoodBins[0]; i<=fGoodBins[1]; i++) { - dc_offset += fForward[i]; - } - dc_offset /= (Double_t)(fGoodBins[1]-fGoodBins[0]+1); - cout << "info> dc_offset = " << dc_offset << endl; - for (Int_t i=fGoodBins[0]; i<=fGoodBins[1]; i++) { - fForward[i] -= dc_offset; - } -*/ - // 4b) error estimate of A(t): errA(t) = exp(+t/tau)/N0 sqrt( N(t) + ([N(t)-N_bkg]/N0)^2 errN0^2 ) for (Int_t i=fGoodBins[0]; i<=fGoodBins[1]; i++) { time_tau = (startTime + fTimeResolution * (i - fGoodBins[0])) / PMUON_LIFETIME; diff --git a/src/classes/PStartupHandler.cpp b/src/classes/PStartupHandler.cpp index 3f9b425e..47414ed3 100644 --- a/src/classes/PStartupHandler.cpp +++ b/src/classes/PStartupHandler.cpp @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/classes/PTheory.cpp b/src/classes/PTheory.cpp index 08d7f176..efa1c7d8 100644 --- a/src/classes/PTheory.cpp +++ b/src/classes/PTheory.cpp @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/classes/PUserFcn.cpp b/src/classes/PUserFcn.cpp index d0ed32a2..287d63aa 100644 --- a/src/classes/PUserFcn.cpp +++ b/src/classes/PUserFcn.cpp @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/classes/PUserFcnBase.cpp b/src/classes/PUserFcnBase.cpp index 2257613e..d5ec6525 100644 --- a/src/classes/PUserFcnBase.cpp +++ b/src/classes/PUserFcnBase.cpp @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PFitter.h b/src/include/PFitter.h index 8445468c..c9a09014 100644 --- a/src/include/PFitter.h +++ b/src/include/PFitter.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PFitterFcn.h b/src/include/PFitterFcn.h index 1c2d846f..94686e00 100644 --- a/src/include/PFitterFcn.h +++ b/src/include/PFitterFcn.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PFourier.h b/src/include/PFourier.h index 3e120b7c..bff94450 100644 --- a/src/include/PFourier.h +++ b/src/include/PFourier.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2015 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PFourierCanvas.h b/src/include/PFourierCanvas.h index 096097c1..1229b34c 100644 --- a/src/include/PFourierCanvas.h +++ b/src/include/PFourierCanvas.h @@ -1,5 +1,14 @@ /*************************************************************************** - * Copyright (C) 2007-2015 by Andreas Suter * + + PFourierCanvas.h + + Author: Andreas Suter + e-mail: andreas.suter@psi.ch + +***************************************************************************/ + +/*************************************************************************** + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PFourierCanvasLinkDef.h b/src/include/PFourierCanvasLinkDef.h index 8ceb2d47..af10deb8 100644 --- a/src/include/PFourierCanvasLinkDef.h +++ b/src/include/PFourierCanvasLinkDef.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2015 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PFunction.h b/src/include/PFunction.h index b4b60934..9efd48ff 100644 --- a/src/include/PFunction.h +++ b/src/include/PFunction.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PFunctionGrammar.h b/src/include/PFunctionGrammar.h index 10c0c9f0..a03bcc4c 100644 --- a/src/include/PFunctionGrammar.h +++ b/src/include/PFunctionGrammar.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PFunctionHandler.h b/src/include/PFunctionHandler.h index cd68390e..d8cc78b8 100644 --- a/src/include/PFunctionHandler.h +++ b/src/include/PFunctionHandler.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PMsr2Data.h b/src/include/PMsr2Data.h index 292dc8c9..7974d99a 100644 --- a/src/include/PMsr2Data.h +++ b/src/include/PMsr2Data.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2009-2014 by Bastian M. Wojek / Andreas Suter * + * Copyright (C) 2009-2016 by Bastian M. Wojek / Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PMsrHandler.h b/src/include/PMsrHandler.h index 3df7034d..1dab817b 100644 --- a/src/include/PMsrHandler.h +++ b/src/include/PMsrHandler.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PMusr.h b/src/include/PMusr.h index efa0cf69..46078aa6 100644 --- a/src/include/PMusr.h +++ b/src/include/PMusr.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2015 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * @@ -55,6 +55,7 @@ typedef struct { char a[7]; } __float128; // needed since cint doesn't know it #define PRUN_SINGLE_HISTO 0 #define PRUN_SINGLE_HISTO_RRF 1 #define PRUN_ASYMMETRY 2 +#define PRUN_ASYMMETRY_RRF 3 #define PRUN_MU_MINUS 4 #define PRUN_NON_MUSR 8 @@ -96,6 +97,7 @@ typedef struct { char a[7]; } __float128; // needed since cint doesn't know it #define MSR_FITTYPE_SINGLE_HISTO 0 #define MSR_FITTYPE_SINGLE_HISTO_RRF 1 #define MSR_FITTYPE_ASYM 2 +#define MSR_FITTYPE_ASYM_RRF 3 #define MSR_FITTYPE_MU_MINUS 4 #define MSR_FITTYPE_NON_MUSR 8 @@ -104,6 +106,7 @@ typedef struct { char a[7]; } __float128; // needed since cint doesn't know it #define MSR_PLOT_SINGLE_HISTO 0 #define MSR_PLOT_SINGLE_HISTO_RRF 1 #define MSR_PLOT_ASYM 2 +#define MSR_PLOT_ASYM_RRF 3 #define MSR_PLOT_MU_MINUS 4 #define MSR_PLOT_NON_MUSR 8 diff --git a/src/include/PMusrCanvas.h b/src/include/PMusrCanvas.h index 19241149..735af4f4 100644 --- a/src/include/PMusrCanvas.h +++ b/src/include/PMusrCanvas.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PMusrCanvasLinkDef.h b/src/include/PMusrCanvasLinkDef.h index cf6b7dd3..c9c73b15 100644 --- a/src/include/PMusrCanvasLinkDef.h +++ b/src/include/PMusrCanvasLinkDef.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PMusrT0.h b/src/include/PMusrT0.h index 91acf97f..b5a47c2f 100644 --- a/src/include/PMusrT0.h +++ b/src/include/PMusrT0.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PMusrT0LinkDef.h b/src/include/PMusrT0LinkDef.h index a14248fd..d7e26cc4 100644 --- a/src/include/PMusrT0LinkDef.h +++ b/src/include/PMusrT0LinkDef.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PPrepFourier.h b/src/include/PPrepFourier.h index 12f2b5f4..dd40429f 100644 --- a/src/include/PPrepFourier.h +++ b/src/include/PPrepFourier.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2015 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PRunAsymmetry.h b/src/include/PRunAsymmetry.h index 6d18983b..1bb04701 100644 --- a/src/include/PRunAsymmetry.h +++ b/src/include/PRunAsymmetry.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PRunBase.h b/src/include/PRunBase.h index 3e81b2be..37fad18b 100644 --- a/src/include/PRunBase.h +++ b/src/include/PRunBase.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PRunDataHandler.h b/src/include/PRunDataHandler.h index 2618b1ef..f75c1428 100644 --- a/src/include/PRunDataHandler.h +++ b/src/include/PRunDataHandler.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2015 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PRunListCollection.h b/src/include/PRunListCollection.h index acc4018a..00b1112e 100644 --- a/src/include/PRunListCollection.h +++ b/src/include/PRunListCollection.h @@ -39,6 +39,7 @@ using namespace std; #include "PRunSingleHisto.h" #include "PRunSingleHistoRRF.h" #include "PRunAsymmetry.h" +#include "PRunAsymmetryRRF.h" #include "PRunMuMinus.h" #include "PRunNonMusr.h" @@ -61,6 +62,7 @@ class PRunListCollection virtual Double_t GetSingleHistoChisq(const std::vector& par) const; virtual Double_t GetSingleHistoRRFChisq(const std::vector& par) const; virtual Double_t GetAsymmetryChisq(const std::vector& par) const; + virtual Double_t GetAsymmetryRRFChisq(const std::vector& par) const; virtual Double_t GetMuMinusChisq(const std::vector& par) const; virtual Double_t GetNonMusrChisq(const std::vector& par) const; @@ -70,6 +72,7 @@ class PRunListCollection virtual Double_t GetSingleHistoMaximumLikelihood(const std::vector& par) const; virtual Double_t GetSingleHistoRRFMaximumLikelihood(const std::vector& par) const; virtual Double_t GetAsymmetryMaximumLikelihood(const std::vector& par) const; + virtual Double_t GetAsymmetryRRFMaximumLikelihood(const std::vector& par) const; virtual Double_t GetMuMinusMaximumLikelihood(const std::vector& par) const; virtual Double_t GetNonMusrMaximumLikelihood(const std::vector& par) const; @@ -79,12 +82,14 @@ class PRunListCollection virtual UInt_t GetNoOfSingleHisto() const { return fRunSingleHistoList.size(); } ///< returns the number of single histogram data sets present in the msr-file virtual UInt_t GetNoOfSingleHistoRRF() const { return fRunSingleHistoRRFList.size(); } ///< returns the number of single histogram RRF data sets present in the msr-file virtual UInt_t GetNoOfAsymmetry() const { return fRunAsymmetryList.size(); } ///< returns the number of asymmetry data sets present in the msr-file + virtual UInt_t GetNoOfAsymmetryRRF() const { return fRunAsymmetryRRFList.size(); } ///< returns the number of asymmetry RRF data sets present in the msr-file virtual UInt_t GetNoOfMuMinus() const { return fRunMuMinusList.size(); } ///< returns the number of mu minus data sets present in the msr-file virtual UInt_t GetNoOfNonMusr() const { return fRunNonMusrList.size(); } ///< returns the number of non-muSR data sets present in the msr-file virtual PRunData* GetSingleHisto(UInt_t index, EDataSwitch tag=kIndex); virtual PRunData* GetSingleHistoRRF(UInt_t index, EDataSwitch tag=kIndex); virtual PRunData* GetAsymmetry(UInt_t index, EDataSwitch tag=kIndex); + virtual PRunData* GetAsymmetryRRF(UInt_t index, EDataSwitch tag=kIndex); virtual PRunData* GetMuMinus(UInt_t index, EDataSwitch tag=kIndex); virtual PRunData* GetNonMusr(UInt_t index, EDataSwitch tag=kIndex); @@ -99,11 +104,12 @@ class PRunListCollection PMsrHandler *fMsrInfo; ///< pointer to the msr-file handler PRunDataHandler *fData; ///< pointer to the run-data handler - vector fRunSingleHistoList; ///< stores all processed single histogram data + vector fRunSingleHistoList; ///< stores all processed single histogram data vector fRunSingleHistoRRFList; ///< stores all processed single histogram RRF data - vector fRunAsymmetryList; ///< stores all processed asymmetry data - vector fRunMuMinusList; ///< stores all processed mu-minus data - vector fRunNonMusrList; ///< stores all processed non-muSR data + vector fRunAsymmetryList; ///< stores all processed asymmetry data + vector fRunAsymmetryRRFList; ///< stores all processed asymmetry RRF data + vector fRunMuMinusList; ///< stores all processed mu-minus data + vector fRunNonMusrList; ///< stores all processed non-muSR data }; #endif // _PRUNLISTCOLLECTION_H_ diff --git a/src/include/PRunMuMinus.h b/src/include/PRunMuMinus.h index 5c13ce68..6c731dd6 100644 --- a/src/include/PRunMuMinus.h +++ b/src/include/PRunMuMinus.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PRunNonMusr.h b/src/include/PRunNonMusr.h index 7b4685e5..3bb7ce97 100644 --- a/src/include/PRunNonMusr.h +++ b/src/include/PRunNonMusr.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PRunSingleHisto.h b/src/include/PRunSingleHisto.h index 4e9347f3..3980cff1 100644 --- a/src/include/PRunSingleHisto.h +++ b/src/include/PRunSingleHisto.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PStartupHandler.h b/src/include/PStartupHandler.h index f91dc679..9125a67b 100644 --- a/src/include/PStartupHandler.h +++ b/src/include/PStartupHandler.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PStartupHandlerLinkDef.h b/src/include/PStartupHandlerLinkDef.h index dd099371..036977e7 100644 --- a/src/include/PStartupHandlerLinkDef.h +++ b/src/include/PStartupHandlerLinkDef.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PTheory.h b/src/include/PTheory.h index 7baa44bc..85f79ddf 100644 --- a/src/include/PTheory.h +++ b/src/include/PTheory.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PUserFcn.h b/src/include/PUserFcn.h index 0c5c1fa6..dacb4041 100644 --- a/src/include/PUserFcn.h +++ b/src/include/PUserFcn.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PUserFcnBase.h b/src/include/PUserFcnBase.h index 558c8c41..a920727c 100644 --- a/src/include/PUserFcnBase.h +++ b/src/include/PUserFcnBase.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/include/PUserFcnBaseLinkDef.h b/src/include/PUserFcnBaseLinkDef.h index 5f78c800..843c143a 100644 --- a/src/include/PUserFcnBaseLinkDef.h +++ b/src/include/PUserFcnBaseLinkDef.h @@ -8,7 +8,7 @@ ***************************************************************************/ /*************************************************************************** - * Copyright (C) 2007-2014 by Andreas Suter * + * Copyright (C) 2007-2016 by Andreas Suter * * andreas.suter@psi.ch * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/tests/analyticFakeData/analyticFakeData.C b/src/tests/analyticFakeData/analyticFakeData.C index 2d80c0ac..621aa044 100644 --- a/src/tests/analyticFakeData/analyticFakeData.C +++ b/src/tests/analyticFakeData/analyticFakeData.C @@ -179,7 +179,7 @@ void analyticFakeData(const TString type, UInt_t runNo) phase.push_back((5.0 + 2.0*rand.Rndm())*TMath::Pi()/180.0 + TMath::TwoPi()/noOfHistos * (Double_t)i); const Double_t gamma = 0.0000135538817; // gamma/(2pi) - Double_t bb0 = 90000.0; // field in Gauss + Double_t bb0 = 5000.0; // field in Gauss Double_t rate0 = 1.0/1000.0; // in 1/ns // fake function parameters header info: only for test purposes From 5303f550b4c592bdd9ac3c3fd878cd6b98260d28 Mon Sep 17 00:00:00 2001 From: Suter Andreas Date: Fri, 15 Jan 2016 17:30:05 +0100 Subject: [PATCH 13/22] add the missed files. --- src/classes/PRunAsymmetryRRF.cpp | 1545 ++++++++++++++++++++++++++++++ src/include/PRunAsymmetryRRF.h | 81 ++ 2 files changed, 1626 insertions(+) create mode 100644 src/classes/PRunAsymmetryRRF.cpp create mode 100644 src/include/PRunAsymmetryRRF.h diff --git a/src/classes/PRunAsymmetryRRF.cpp b/src/classes/PRunAsymmetryRRF.cpp new file mode 100644 index 00000000..bd21a5b8 --- /dev/null +++ b/src/classes/PRunAsymmetryRRF.cpp @@ -0,0 +1,1545 @@ +/*************************************************************************** + + PRunAsymmetryRRF.cpp + + Author: Andreas Suter + e-mail: andreas.suter@psi.ch + +***************************************************************************/ + +/*************************************************************************** + * Copyright (C) 2007-2016 by Andreas Suter * + * andreas.suter@psi.ch * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifdef HAVE_GOMP +#include +#endif + +#include + +#include +#include +using namespace std; + +#include +#include +#include + +#include "PMusr.h" +#include "PRunAsymmetryRRF.h" + +//-------------------------------------------------------------------------- +// Constructor +//-------------------------------------------------------------------------- +/** + *

Constructor + */ +PRunAsymmetryRRF::PRunAsymmetryRRF() : PRunBase() +{ + fNoOfFitBins = 0; + fRRFPacking = -1; + + // the 2 following variables are need in case fit range is given in bins, and since + // the fit range can be changed in the command block, these variables need to be accessible + fGoodBins[0] = -1; + fGoodBins[1] = -1; +} + +//-------------------------------------------------------------------------- +// Constructor +//-------------------------------------------------------------------------- +/** + *

Constructor + * + * \param msrInfo pointer to the msr-file handler + * \param rawData raw run data + * \param runNo number of the run within the msr-file + * \param tag tag showing what shall be done: kFit == fitting, kView == viewing + */ +PRunAsymmetryRRF::PRunAsymmetryRRF(PMsrHandler *msrInfo, PRunDataHandler *rawData, UInt_t runNo, EPMusrHandleTag tag) : PRunBase(msrInfo, rawData, runNo, tag) +{ + // the 2 following variables are need in case fit range is given in bins, and since + // the fit range can be changed in the command block, these variables need to be accessible + fGoodBins[0] = -1; + fGoodBins[1] = -1; + + fRRFPacking = fMsrInfo->GetMsrGlobal()->GetRRFPacking(); + if (fRRFPacking == -1) { // this should NOT happen, somethin is severely wrong + cerr << endl << ">> PRunAsymmetryRRF::PRunAsymmetryRRF(): **SEVERE ERROR**: Couldn't find any RRF packing information!"; + cerr << endl << ">> This is very bad :-(, will quit ..."; + cerr << endl; + fValid = false; + return; + } + + // check if alpha and/or beta is fixed -------------------- + + PMsrParamList *param = msrInfo->GetMsrParamList(); + + // check if alpha is given + if (fRunInfo->GetAlphaParamNo() == -1) { // no alpha given + cerr << endl << ">> PRunAsymmetryRRF::PRunAsymmetryRRF(): **ERROR** no alpha parameter given! This is needed for an asymmetry fit!"; + cerr << endl; + fValid = false; + return; + } + // check if alpha parameter is within proper bounds + if ((fRunInfo->GetAlphaParamNo() < 0) || (fRunInfo->GetAlphaParamNo() > (Int_t)param->size())) { + cerr << endl << ">> PRunAsymmetryRRF::PRunAsymmetryRRF(): **ERROR** alpha parameter no = " << fRunInfo->GetAlphaParamNo(); + cerr << endl << ">> This is out of bound, since there are only " << param->size() << " parameters."; + cerr << endl; + fValid = false; + return; + } + // check if alpha is fixed + Bool_t alphaFixedToOne = false; + if (((*param)[fRunInfo->GetAlphaParamNo()-1].fStep == 0.0) && + ((*param)[fRunInfo->GetAlphaParamNo()-1].fValue == 1.0)) + alphaFixedToOne = true; + + // check if beta is given + Bool_t betaFixedToOne = false; + if (fRunInfo->GetBetaParamNo() == -1) { // no beta given hence assuming beta == 1 + betaFixedToOne = true; + } else if ((fRunInfo->GetBetaParamNo() < 0) || (fRunInfo->GetBetaParamNo() > (Int_t)param->size())) { // check if beta parameter is within proper bounds + cerr << endl << ">> PRunAsymmetryRRF::PRunAsymmetryRRF(): **ERROR** beta parameter no = " << fRunInfo->GetBetaParamNo(); + cerr << endl << ">> This is out of bound, since there are only " << param->size() << " parameters."; + cerr << endl; + fValid = false; + return; + } else { // check if beta is fixed + if (((*param)[fRunInfo->GetBetaParamNo()-1].fStep == 0.0) && + ((*param)[fRunInfo->GetBetaParamNo()-1].fValue == 1.0)) + betaFixedToOne = true; + } + + // set fAlphaBetaTag + if (alphaFixedToOne && betaFixedToOne) // alpha == 1, beta == 1 + fAlphaBetaTag = 1; + else if (!alphaFixedToOne && betaFixedToOne) // alpha != 1, beta == 1 + fAlphaBetaTag = 2; + else if (alphaFixedToOne && !betaFixedToOne) // alpha == 1, beta != 1 + fAlphaBetaTag = 3; + else + fAlphaBetaTag = 4; + + // calculate fData + if (!PrepareData()) + fValid = false; +} + +//-------------------------------------------------------------------------- +// Destructor +//-------------------------------------------------------------------------- +/** + *

Destructor. + */ +PRunAsymmetryRRF::~PRunAsymmetryRRF() +{ + fForward.clear(); + fForwardErr.clear(); + fBackward.clear(); + fBackwardErr.clear(); +} + +//-------------------------------------------------------------------------- +// CalcChiSquare (public) +//-------------------------------------------------------------------------- +/** + *

Calculate chi-square. + * + * return: + * - chisq value + * + * \param par parameter vector iterated by minuit2 + */ +Double_t PRunAsymmetryRRF::CalcChiSquare(const std::vector& par) +{ + Double_t chisq = 0.0; + Double_t diff = 0.0; + Double_t asymFcnValue = 0.0; + Double_t a, b, f; + + // calculate functions + for (Int_t i=0; iGetNoOfFuncs(); i++) { + fFuncValues[i] = fMsrInfo->EvalFunc(fMsrInfo->GetFuncNo(i), *fRunInfo->GetMap(), par); + } + + // calculate chi square + Double_t time(1.0); + Int_t i, N(static_cast(fData.GetValue()->size())); + + // In order not to have an IF in the next loop, determine the start and end bins for the fit range now + Int_t startTimeBin = static_cast(ceil((fFitStartTime - fData.GetDataTimeStart())/fData.GetDataTimeStep())); + if (startTimeBin < 0) + startTimeBin = 0; + Int_t endTimeBin = static_cast(floor((fFitEndTime - fData.GetDataTimeStart())/fData.GetDataTimeStep())) + 1; + if (endTimeBin > N) + endTimeBin = N; + + // Calculate the theory function once to ensure one function evaluation for the current set of parameters. + // This is needed for the LF and user functions where some non-thread-save calculations only need to be calculated once + // for a given set of parameters---which should be done outside of the parallelized loop. + // For all other functions it means a tiny and acceptable overhead. + asymFcnValue = fTheory->Func(time, par, fFuncValues); + + #ifdef HAVE_GOMP + Int_t chunk = (endTimeBin - startTimeBin)/omp_get_num_procs(); + if (chunk < 10) + chunk = 10; + #pragma omp parallel for default(shared) private(i,time,diff,asymFcnValue,a,b,f) schedule(dynamic,chunk) reduction(+:chisq) + #endif + for (i=startTimeBin; i < endTimeBin; ++i) { + time = fData.GetDataTimeStart() + (Double_t)i*fData.GetDataTimeStep(); + switch (fAlphaBetaTag) { + case 1: // alpha == 1, beta == 1 + asymFcnValue = fTheory->Func(time, par, fFuncValues); + break; + case 2: // alpha != 1, beta == 1 + a = par[fRunInfo->GetAlphaParamNo()-1]; + f = fTheory->Func(time, par, fFuncValues); + asymFcnValue = (f*(a+1.0)-(a-1.0))/((a+1.0)-f*(a-1.0)); + break; + case 3: // alpha == 1, beta != 1 + b = par[fRunInfo->GetBetaParamNo()-1]; + f = fTheory->Func(time, par, fFuncValues); + asymFcnValue = f*(b+1.0)/(2.0-f*(b-1.0)); + break; + case 4: // alpha != 1, beta != 1 + a = par[fRunInfo->GetAlphaParamNo()-1]; + b = par[fRunInfo->GetBetaParamNo()-1]; + f = fTheory->Func(time, par, fFuncValues); + asymFcnValue = (f*(a*b+1.0)-(a-1.0))/((a+1.0)-f*(a*b-1.0)); + break; + default: + asymFcnValue = 0.0; + break; + } + diff = fData.GetValue()->at(i) - asymFcnValue; + chisq += diff*diff / (fData.GetError()->at(i)*fData.GetError()->at(i)); + } + + return chisq; +} + +//-------------------------------------------------------------------------- +// CalcChiSquareExpected (public) +//-------------------------------------------------------------------------- +/** + *

Calculate expected chi-square. Currently not implemented since not clear what to be done. + * + * return: + * - chisq value == 0.0 + * + * \param par parameter vector iterated by minuit2 + */ +Double_t PRunAsymmetryRRF::CalcChiSquareExpected(const std::vector& par) +{ + return 0.0; +} + +//-------------------------------------------------------------------------- +// CalcMaxLikelihood (public) +//-------------------------------------------------------------------------- +/** + *

NOT IMPLEMENTED!! + * + * \param par parameter vector iterated by minuit2 + */ +Double_t PRunAsymmetryRRF::CalcMaxLikelihood(const std::vector& par) +{ + cout << endl << "PRunAsymmetryRRF::CalcMaxLikelihood(): not implemented yet ..." << endl; + + return 1.0; +} + +//-------------------------------------------------------------------------- +// GetNoOfFitBins (public) +//-------------------------------------------------------------------------- +/** + *

Calculate the number of fitted bins for the current fit range. + * + * return: number of fitted bins. + */ +UInt_t PRunAsymmetryRRF::GetNoOfFitBins() +{ + CalcNoOfFitBins(); + + return fNoOfFitBins; +} + +//-------------------------------------------------------------------------- +// SetFitRangeBin (public) +//-------------------------------------------------------------------------- +/** + *

Allows to change the fit range on the fly. Used in the COMMAND block. + * The syntax of the string is: FIT_RANGE fgb[+n00] lgb[-n01] [fgb[+n10] lgb[-n11] ... fgb[+nN0] lgb[-nN1]]. + * If only one pair of fgb/lgb is given, it is used for all runs in the RUN block section. + * If multiple fgb/lgb's are given, the number N has to be the number of RUN blocks in + * the msr-file. + * + *

nXY are offsets which can be used to shift, limit the fit range. + * + * \param fitRange string containing the necessary information. + */ +void PRunAsymmetryRRF::SetFitRangeBin(const TString fitRange) +{ + TObjArray *tok = 0; + TObjString *ostr = 0; + TString str; + Ssiz_t idx = -1; + Int_t offset = 0; + + tok = fitRange.Tokenize(" \t"); + + if (tok->GetEntries() == 3) { // structure FIT_RANGE fgb+n0 lgb-n1 + // handle fgb+n0 entry + ostr = (TObjString*) tok->At(1); + str = ostr->GetString(); + // check if there is an offset present + idx = str.First("+"); + if (idx != -1) { // offset present + str.Remove(0, idx+1); + if (str.IsFloat()) // if str is a valid number, convert is to an integer + offset = str.Atoi(); + } + fFitStartTime = (fGoodBins[0] + offset - fT0s[0]) * fTimeResolution; + + // handle lgb-n1 entry + ostr = (TObjString*) tok->At(2); + str = ostr->GetString(); + // check if there is an offset present + idx = str.First("-"); + if (idx != -1) { // offset present + str.Remove(0, idx+1); + if (str.IsFloat()) // if str is a valid number, convert is to an integer + offset = str.Atoi(); + } + fFitEndTime = (fGoodBins[1] - offset - fT0s[0]) * fTimeResolution; + } else if ((tok->GetEntries() > 3) && (tok->GetEntries() % 2 == 1)) { // structure FIT_RANGE fgb[+n00] lgb[-n01] [fgb[+n10] lgb[-n11] ... fgb[+nN0] lgb[-nN1]] + Int_t pos = 2*(fRunNo+1)-1; + + if (pos + 1 >= tok->GetEntries()) { + cerr << endl << ">> PRunSingleHisto::SetFitRangeBin(): **ERROR** invalid FIT_RANGE command found: '" << fitRange << "'"; + cerr << endl << ">> will ignore it. Sorry ..." << endl; + } else { + // handle fgb+n0 entry + ostr = (TObjString*) tok->At(pos); + str = ostr->GetString(); + // check if there is an offset present + idx = str.First("+"); + if (idx != -1) { // offset present + str.Remove(0, idx+1); + if (str.IsFloat()) // if str is a valid number, convert is to an integer + offset = str.Atoi(); + } + fFitStartTime = (fGoodBins[0] + offset - fT0s[0]) * fTimeResolution; + + // handle lgb-n1 entry + ostr = (TObjString*) tok->At(pos+1); + str = ostr->GetString(); + // check if there is an offset present + idx = str.First("-"); + if (idx != -1) { // offset present + str.Remove(0, idx+1); + if (str.IsFloat()) // if str is a valid number, convert is to an integer + offset = str.Atoi(); + } + fFitEndTime = (fGoodBins[1] - offset - fT0s[0]) * fTimeResolution; + } + } else { // error + cerr << endl << ">> PRunSingleHisto::SetFitRangeBin(): **ERROR** invalid FIT_RANGE command found: '" << fitRange << "'"; + cerr << endl << ">> will ignore it. Sorry ..." << endl; + } + + // clean up + if (tok) { + delete tok; + } +} + +//-------------------------------------------------------------------------- +// CalcNoOfFitBins (protected) +//-------------------------------------------------------------------------- +/** + *

Calculate the number of fitted bins for the current fit range. + */ +void PRunAsymmetryRRF::CalcNoOfFitBins() +{ + // In order not having to loop over all bins and to stay consistent with the chisq method, calculate the start and end bins explicitly + Int_t startTimeBin = static_cast(ceil((fFitStartTime - fData.GetDataTimeStart())/fData.GetDataTimeStep())); + if (startTimeBin < 0) + startTimeBin = 0; + Int_t endTimeBin = static_cast(floor((fFitEndTime - fData.GetDataTimeStart())/fData.GetDataTimeStep())) + 1; + if (endTimeBin > static_cast(fData.GetValue()->size())) + endTimeBin = fData.GetValue()->size(); + + if (endTimeBin > startTimeBin) + fNoOfFitBins = endTimeBin - startTimeBin; + else + fNoOfFitBins = 0; +} + +//-------------------------------------------------------------------------- +// CalcTheory (protected) +//-------------------------------------------------------------------------- +/** + *

Calculate theory for a given set of fit-parameters. + */ +void PRunAsymmetryRRF::CalcTheory() +{ + // feed the parameter vector + std::vector par; + PMsrParamList *paramList = fMsrInfo->GetMsrParamList(); + for (UInt_t i=0; isize(); i++) + par.push_back((*paramList)[i].fValue); + + // calculate functions + for (Int_t i=0; iGetNoOfFuncs(); i++) { + fFuncValues[i] = fMsrInfo->EvalFunc(fMsrInfo->GetFuncNo(i), *fRunInfo->GetMap(), par); + } + + // calculate asymmetry + Double_t asymFcnValue = 0.0; + Double_t a, b, f; + Double_t time; + for (UInt_t i=0; isize(); i++) { + time = fData.GetDataTimeStart() + (Double_t)i*fData.GetDataTimeStep(); + switch (fAlphaBetaTag) { + case 1: // alpha == 1, beta == 1 + asymFcnValue = fTheory->Func(time, par, fFuncValues); + break; + case 2: // alpha != 1, beta == 1 + a = par[fRunInfo->GetAlphaParamNo()-1]; + f = fTheory->Func(time, par, fFuncValues); + asymFcnValue = (f*(a+1.0)-(a-1.0))/((a+1.0)-f*(a-1.0)); + break; + case 3: // alpha == 1, beta != 1 + b = par[fRunInfo->GetBetaParamNo()-1]; + f = fTheory->Func(time, par, fFuncValues); + asymFcnValue = f*(b+1.0)/(2.0-f*(b-1.0)); + break; + case 4: // alpha != 1, beta != 1 + a = par[fRunInfo->GetAlphaParamNo()-1]; + b = par[fRunInfo->GetBetaParamNo()-1]; + f = fTheory->Func(time, par, fFuncValues); + asymFcnValue = (f*(a*b+1.0)-(a-1.0))/((a+1.0)-f*(a*b-1.0)); + break; + default: + asymFcnValue = 0.0; + break; + } + fData.AppendTheoryValue(asymFcnValue); + } + + // clean up + par.clear(); +} + +//-------------------------------------------------------------------------- +// PrepareData (protected) +//-------------------------------------------------------------------------- +/** + *

Prepare data for fitting or viewing. What is already processed at this stage: + * - get all needed forward/backward histograms + * - get time resolution + * - get start/stop fit time + * - get t0's and perform necessary cross checks (e.g. if t0 of msr-file (if present) are consistent with t0 of the data files, etc.) + * - add runs (if addruns are present) + * - group histograms (if grouping is present) + * - subtract background + * + * Error propagation for \f$ A_i = (f_i^{\rm c}-b_i^{\rm c})/(f_i^{\rm c}+b_i^{\rm c})\f$: + * \f[ \Delta A_i = \pm\frac{2}{(f_i^{\rm c}+b_i^{\rm c})^2}\left[ + * (b_i^{\rm c})^2 (\Delta f_i^{\rm c})^2 + + * (\Delta b_i^{\rm c})^2 (f_i^{\rm c})^2\right]^{1/2}\f] + * + * return: + * - true if everthing went smooth + * - false, otherwise. + */ +Bool_t PRunAsymmetryRRF::PrepareData() +{ + // keep the Global block info + PMsrGlobalBlock *globalBlock = fMsrInfo->GetMsrGlobal(); + + // get forward/backward histo from PRunDataHandler object ------------------------ + // get the correct run + PRawRunData *runData = fRawData->GetRunData(*(fRunInfo->GetRunName())); + if (!runData) { // run not found + cerr << endl << ">> PRunAsymmetryRRF::PrepareData(): **ERROR** Couldn't get run " << fRunInfo->GetRunName()->Data() << "!"; + cerr << endl; + return false; + } + + // collect histogram numbers + PUIntVector forwardHistoNo; + PUIntVector backwardHistoNo; + for (UInt_t i=0; iGetForwardHistoNoSize(); i++) { + forwardHistoNo.push_back(fRunInfo->GetForwardHistoNo(i)); + + if (!runData->IsPresent(forwardHistoNo[i])) { + cerr << endl << ">> PRunAsymmetryRRF::PrepareData(): **PANIC ERROR**:"; + cerr << endl << ">> forwardHistoNo found = " << forwardHistoNo[i] << ", which is NOT present in the data file!?!?"; + cerr << endl << ">> Will quit :-("; + cerr << endl; + // clean up + forwardHistoNo.clear(); + backwardHistoNo.clear(); + return false; + } + } + for (UInt_t i=0; iGetBackwardHistoNoSize(); i++) { + backwardHistoNo.push_back(fRunInfo->GetBackwardHistoNo(i)); + + if (!runData->IsPresent(backwardHistoNo[i])) { + cerr << endl << ">> PRunAsymmetryRRF::PrepareData(): **PANIC ERROR**:"; + cerr << endl << ">> backwardHistoNo found = " << backwardHistoNo[i] << ", which is NOT present in the data file!?!?"; + cerr << endl << ">> Will quit :-("; + cerr << endl; + // clean up + forwardHistoNo.clear(); + backwardHistoNo.clear(); + return false; + } + } + if (forwardHistoNo.size() != backwardHistoNo.size()) { + cerr << endl << ">> PRunAsymmetryRRF::PrepareData(): **PANIC ERROR**:"; + cerr << endl << ">> # of forward histograms different from # of backward histograms."; + cerr << endl << ">> Will quit :-("; + cerr << endl; + // clean up + forwardHistoNo.clear(); + backwardHistoNo.clear(); + return false; + } + + // keep the time resolution in (us) + fTimeResolution = runData->GetTimeResolution()/1.0e3; + cout.precision(10); + cout << endl << ">> PRunAsymmetryRRF::PrepareData(): time resolution=" << fixed << runData->GetTimeResolution() << "(ns)" << endl; + + // get all the proper t0's and addt0's for the current RUN block + if (!GetProperT0(runData, globalBlock, forwardHistoNo, backwardHistoNo)) { + return false; + } + + // keep the histo of each group at this point (addruns handled below) + vector forward, backward; + forward.resize(forwardHistoNo.size()); // resize to number of groups + backward.resize(backwardHistoNo.size()); // resize to numer of groups + for (UInt_t i=0; iGetDataBin(forwardHistoNo[i])->size()); + backward[i].resize(runData->GetDataBin(backwardHistoNo[i])->size()); + forward[i] = *runData->GetDataBin(forwardHistoNo[i]); + backward[i] = *runData->GetDataBin(backwardHistoNo[i]); + } + + // check if addrun's are present, and if yes add data + // check if there are runs to be added to the current one + if (fRunInfo->GetRunNameSize() > 1) { // runs to be added present + PRawRunData *addRunData; + for (UInt_t i=1; iGetRunNameSize(); i++) { + // get run to be added to the main one + addRunData = fRawData->GetRunData(*(fRunInfo->GetRunName(i))); + if (addRunData == 0) { // couldn't get run + cerr << endl << ">> PRunAsymmetryRRF::PrepareData(): **ERROR** Couldn't get addrun " << fRunInfo->GetRunName(i)->Data() << "!"; + cerr << endl; + return false; + } + + // add forward run + UInt_t addRunSize; + for (UInt_t k=0; kGetDataBin(forwardHistoNo[k])->size(); + for (UInt_t j=0; jGetDataBin(forwardHistoNo[k])->size(); j++) { // loop over the bin indices + // make sure that the index stays in the proper range + if ((j+(Int_t)fAddT0s[i-1][2*k]-(Int_t)fT0s[2*k] >= 0) && (j+(Int_t)fAddT0s[i-1][2*k]-(Int_t)fT0s[2*k] < addRunSize)) { + forward[k][j] += addRunData->GetDataBin(forwardHistoNo[k])->at(j+(Int_t)fAddT0s[i-1][2*k]-(Int_t)fT0s[2*k]); + } + } + } + + // add backward run + for (UInt_t k=0; kGetDataBin(backwardHistoNo[k])->size(); + for (UInt_t j=0; jGetDataBin(backwardHistoNo[k])->size(); j++) { // loop over the bin indices + // make sure that the index stays in the proper range + if ((j+(Int_t)fAddT0s[i-1][2*k+1]-(Int_t)fT0s[2*k+1] >= 0) && (j+(Int_t)fAddT0s[i-1][2*k+1]-(Int_t)fT0s[2*k+1] < addRunSize)) { + backward[k][j] += addRunData->GetDataBin(backwardHistoNo[k])->at(j+(Int_t)fAddT0s[i-1][2*k+1]-(Int_t)fT0s[2*k+1]); + } + } + } + } + } + + // set forward/backward histo data of the first group + fForward.resize(forward[0].size()); + fBackward.resize(backward[0].size()); + for (UInt_t i=0; iGetDataBin(forwardHistoNo[i])->size(); j++) { // loop over the bin indices + // make sure that the index stays within proper range + if ((j+fT0s[2*i]-fT0s[0] >= 0) && (j+fT0s[2*i]-fT0s[0] < runData->GetDataBin(forwardHistoNo[i])->size())) { + fForward[j] += forward[i][j+(Int_t)fT0s[2*i]-(Int_t)fT0s[0]]; + } + } + } + + // group histograms, add all the remaining backward histograms of the group + for (UInt_t i=1; iGetDataBin(backwardHistoNo[i])->size(); j++) { // loop over the bin indices + // make sure that the index stays within proper range + if ((j+fT0s[2*i+1]-fT0s[1] >= 0) && (j+fT0s[2*i+1]-fT0s[1] < runData->GetDataBin(backwardHistoNo[i])->size())) { + fBackward[j] += backward[i][j+(Int_t)fT0s[2*i+1]-(Int_t)fT0s[1]]; + } + } + } + + // subtract background from histogramms ------------------------------------------ + if (fRunInfo->GetBkgFix(0) == PMUSR_UNDEFINED) { // no fixed background given + if (fRunInfo->GetBkgRange(0) >= 0) { // background range given + if (!SubtractEstimatedBkg()) + return false; + } else { // no background given to do the job, try to estimate it + fRunInfo->SetBkgRange(static_cast(fT0s[0]*0.1), 0); + fRunInfo->SetBkgRange(static_cast(fT0s[0]*0.6), 1); + fRunInfo->SetBkgRange(static_cast(fT0s[1]*0.1), 2); + fRunInfo->SetBkgRange(static_cast(fT0s[1]*0.6), 3); + cerr << endl << ">> PRunAsymmetryRRF::PrepareData(): **WARNING** Neither fix background nor background bins are given!"; + cerr << endl << ">> Will try the following:"; + cerr << endl << ">> forward: bkg start = " << fRunInfo->GetBkgRange(0) << ", bkg end = " << fRunInfo->GetBkgRange(1); + cerr << endl << ">> backward: bkg start = " << fRunInfo->GetBkgRange(2) << ", bkg end = " << fRunInfo->GetBkgRange(3); + cerr << endl << ">> NO WARRANTY THAT THIS MAKES ANY SENSE! Better check ..."; + cerr << endl; + if (!SubtractEstimatedBkg()) + return false; + } + } else { // fixed background given + if (!SubtractFixBkg()) + return false; + } + + UInt_t histoNo[2] = {forwardHistoNo[0], backwardHistoNo[0]}; + + // get the data range (fgb/lgb) for the current RUN block + if (!GetProperDataRange(runData, histoNo)) { + return false; + } + + // get the fit range for the current RUN block + GetProperFitRange(globalBlock); + + // everything looks fine, hence fill data set + Bool_t status; + switch(fHandleTag) { + case kFit: + status = PrepareFitData(); + break; + case kView: + status = PrepareViewData(runData, histoNo); + break; + default: + status = false; + break; + } + + // clean up + forwardHistoNo.clear(); + backwardHistoNo.clear(); + + return status; +} + +//-------------------------------------------------------------------------- +// SubtractFixBkg (private) +//-------------------------------------------------------------------------- +/** + *

Subtracts a fixed background from the raw data. The background is given + * in units of (1/bin); for the Asymmetry representation (1/ns) doesn't make too much sense. + * The error propagation is done the following way: it is assumed that the error of the background + * is Poisson like, i.e. \f$\Delta\mathrm{bkg} = \sqrt{\mathrm{bkg}}\f$. + * + * Error propagation: + * \f[ \Delta f_i^{\rm c} = \pm\left[ (\Delta f_i)^2 + (\Delta \mathrm{bkg})^2 \right]^{1/2} = + * \pm\left[ f_i + \mathrm{bkg} \right]^{1/2}, \f] + * where \f$ f_i^{\rm c} \f$ is the background corrected histogram, \f$ f_i \f$ the raw histogram + * and \f$ \mathrm{bkg} \f$ the fix given background. + * + * return: + * - true + * + */ +Bool_t PRunAsymmetryRRF::SubtractFixBkg() +{ + Double_t dval; + for (UInt_t i=0; iGetBkgFix(0); + + // keep the error, and make sure that the bin is NOT empty + if (fBackward[i] != 0.0) + dval = TMath::Sqrt(fBackward[i]); + else + dval = 1.0; + fBackwardErr.push_back(dval); + fBackward[i] -= fRunInfo->GetBkgFix(1); + } + + return true; +} + +//-------------------------------------------------------------------------- +// SubtractEstimatedBkg (private) +//-------------------------------------------------------------------------- +/** + *

Subtracts the background which is estimated from a given interval (typically before t0). + * + * The background corrected histogramms are: + * \f$ f_i^{\rm c} = f_i - \mathrm{bkg} \f$, where \f$ f_i \f$ is the raw data histogram, + * \f$ \mathrm{bkg} \f$ the background estimate, and \f$ f_i^{\rm c} \f$ background corrected + * histogram. The error on \f$ f_i^{\rm c} \f$ is + * \f[ \Delta f_i^{\rm c} = \pm \sqrt{ (\Delta f_i)^2 + (\Delta \mathrm{bkg})^2 } = + * \pm \sqrt{f_i + (\Delta \mathrm{bkg})^2} \f] + * The background error \f$ \Delta \mathrm{bkg} \f$ is + * \f[ \Delta \mathrm{bkg} = \pm\frac{1}{N}\left[\sum_{i=0}^N (\Delta f_i)^2\right]^{1/2} = + * \pm\frac{1}{N}\left[\sum_{i=0}^N f_i \right]^{1/2},\f] + * where \f$N\f$ is the number of bins over which the background is formed. + * + * return: + * - true + */ +Bool_t PRunAsymmetryRRF::SubtractEstimatedBkg() +{ + Double_t beamPeriod = 0.0; + + // check if data are from PSI, RAL, or TRIUMF + if (fRunInfo->GetInstitute()->Contains("psi")) + beamPeriod = ACCEL_PERIOD_PSI; + else if (fRunInfo->GetInstitute()->Contains("ral")) + beamPeriod = ACCEL_PERIOD_RAL; + else if (fRunInfo->GetInstitute()->Contains("triumf")) + beamPeriod = ACCEL_PERIOD_TRIUMF; + else + beamPeriod = 0.0; + + // check if start and end are in proper order + UInt_t start[2] = {fRunInfo->GetBkgRange(0), fRunInfo->GetBkgRange(2)}; + UInt_t end[2] = {fRunInfo->GetBkgRange(1), fRunInfo->GetBkgRange(3)}; + for (UInt_t i=0; i<2; i++) { + if (end[i] < start[i]) { + cout << endl << "PRunAsymmetryRRF::SubtractEstimatedBkg(): end = " << end[i] << " > start = " << start[i] << "! Will swap them!"; + UInt_t keep = end[i]; + end[i] = start[i]; + start[i] = keep; + } + } + + // calculate proper background range + for (UInt_t i=0; i<2; i++) { + if (beamPeriod != 0.0) { + Double_t timeBkg = (Double_t)(end[i]-start[i])*(fTimeResolution*fRRFPacking); // length of the background intervall in time + UInt_t fullCycles = (UInt_t)(timeBkg/beamPeriod); // how many proton beam cylces can be placed within the proposed background intervall + // correct the end of the background intervall such that the background is as close as possible to a multiple of the proton cylce + end[i] = start[i] + (UInt_t) ((fullCycles*beamPeriod)/(fTimeResolution*fRRFPacking)); + cout << "PRunAsymmetryRRF::SubtractEstimatedBkg(): Background " << start[i] << ", " << end[i] << endl; + if (end[i] == start[i]) + end[i] = fRunInfo->GetBkgRange(2*i+1); + } + } + + // check if start is within histogram bounds + if ((start[0] < 0) || (start[0] >= fForward.size()) || + (start[1] < 0) || (start[1] >= fBackward.size())) { + cerr << endl << ">> PRunAsymmetryRRF::SubtractEstimatedBkg(): **ERROR** background bin values out of bound!"; + cerr << endl << ">> histo lengths (f/b) = (" << fForward.size() << "/" << fBackward.size() << ")."; + cerr << endl << ">> background start (f/b) = (" << start[0] << "/" << start[1] << ")."; + return false; + } + + // check if end is within histogram bounds + if ((end[0] < 0) || (end[0] >= fForward.size()) || + (end[1] < 0) || (end[1] >= fBackward.size())) { + cerr << endl << ">> PRunAsymmetryRRF::SubtractEstimatedBkg(): **ERROR** background bin values out of bound!"; + cerr << endl << ">> histo lengths (f/b) = (" << fForward.size() << "/" << fBackward.size() << ")."; + cerr << endl << ">> background end (f/b) = (" << end[0] << "/" << end[1] << ")."; + return false; + } + + // calculate background + Double_t bkg[2] = {0.0, 0.0}; + Double_t errBkg[2] = {0.0, 0.0}; + + // forward + for (UInt_t i=start[0]; i<=end[0]; i++) + bkg[0] += fForward[i]; + errBkg[0] = TMath::Sqrt(bkg[0])/(end[0] - start[0] + 1); + bkg[0] /= static_cast(end[0] - start[0] + 1); + cout << endl << ">> estimated forward histo background: " << bkg[0]; + + // backward + for (UInt_t i=start[1]; i<=end[1]; i++) + bkg[1] += fBackward[i]; + errBkg[1] = TMath::Sqrt(bkg[1])/(end[1] - start[1] + 1); + bkg[1] /= static_cast(end[1] - start[1] + 1); + cout << endl << ">> estimated backward histo background: " << bkg[1] << endl; + + // correct error for forward, backward + Double_t errVal = 0.0; + for (UInt_t i=0; i 0.0) + errVal = TMath::Sqrt(fForward[i]+errBkg[0]*errBkg[0]); + else + errVal = 1.0; + fForwardErr.push_back(errVal); + if (fBackward[i] > 0.0) + errVal = TMath::Sqrt(fBackward[i]+errBkg[1]*errBkg[1]); + else + errVal = 1.0; + fBackwardErr.push_back(errVal); + } + + // subtract background from data + for (UInt_t i=0; iSetBkgEstimated(bkg[0], 0); + fRunInfo->SetBkgEstimated(bkg[1], 1); + + return true; +} + +//-------------------------------------------------------------------------- +// PrepareFitData (protected) +//-------------------------------------------------------------------------- +/** + *

Take the pre-processed data (i.e. grouping and addrun are preformed, background correction already carried out) + * and form the asymmetry for fitting. + */ +Bool_t PRunAsymmetryRRF::PrepareFitData() +{ + // transform raw histo data. At this point, the raw data are already background corrected. + + // 1st: form the asymmetry of the original data + + // forward and backward detectors might have different fgb-t0 offset. Take the maximum of both. + Int_t fgbOffset = fGoodBins[0]-(Int_t)fT0s[0]; + if (fgbOffset < fGoodBins[2]-(Int_t)fT0s[1]) + fgbOffset = fGoodBins[2]-(Int_t)fT0s[1]; + // last good bin (lgb) is the minimum of forward/backward lgb + Int_t lgb_offset = fGoodBins[1]-(Int_t)fT0s[0]+fgbOffset; + if (lgb_offset < fGoodBins[3]-(Int_t)fT0s[1]+fgbOffset) + lgb_offset = fGoodBins[3]-(Int_t)fT0s[1]+fgbOffset; + + Int_t fgb = (Int_t)fT0s[0]+fgbOffset; + Int_t lgb = fgb + lgb_offset; + Int_t dt0 = (Int_t)fT0s[0]-(Int_t)fT0s[1]; + + cout << "debug> fGoodBins[0]=" << fGoodBins[0] << ", fGoodBins[2]=" << fGoodBins[2] << ", fT0s[0]=" << fT0s[0] << ", fT0s[1]=" << fT0s[1] << endl; + cout << "debug> fgbOffset=" << fgbOffset << endl; + cout << "debug> fgb=" << fgb << ", lgb=" << lgb << ", dt0=" << dt0 << endl; + + PDoubleVector asym; + PDoubleVector asymErr; + Double_t asymVal, asymValErr; + Double_t ff, bb, eff, ebb; + for (Int_t i=fgb; iGetMsrGlobal(); + Double_t wRRF = globalBlock->GetRRFFreq("Mc"); + Double_t phaseRRF = globalBlock->GetRRFPhase()*TMath::TwoPi()/180.0; + + Double_t startTime = fTimeResolution * (fT0s[0]+(Double_t)fgbOffset); + Double_t time=0.0; + for (UInt_t i=0; iTake the pre-processed data (i.e. grouping and addrun are preformed) and form the asymmetry for view representation. + * Before forming the asymmetry, the following checks will be performed: + * -# check if view packing is whished. + * -# check if data range is given, if not try to estimate one. + * -# check that data range is present, that it makes any sense. + * -# check that 'first good bin'-'t0' is the same for forward and backward histogram. If not adjust it. + * -# pack data (rebin). + * -# if packed forward size != backward size, truncate the longer one such that an asymmetry can be formed. + * -# calculate the asymmetry: \f$ A_i = (\alpha f_i^c-b_i^c)/(\alpha \beta f_i^c+b_i^c) \f$ + * -# calculate the asymmetry errors: \f$ \delta A_i = 2 \sqrt{(b_i^c)^2 (\delta f_i^c)^2 + (\delta b_i^c)^2 (f_i^c)^2}/(f_i^c+b_i^c)^2\f$ + * -# calculate the theory vector. + * + * \param runData raw run data needed to perform some crosschecks + * \param histoNo histogram number (within a run). histoNo[0]: forward histogram number, histNo[1]: backward histogram number + */ +Bool_t PRunAsymmetryRRF::PrepareViewData(PRawRunData* runData, UInt_t histoNo[2]) +{ + // check if view_packing is wished + Int_t packing = fRRFPacking; + if (fMsrInfo->GetMsrPlotList()->at(0).fViewPacking > 0) { + packing = fMsrInfo->GetMsrPlotList()->at(0).fViewPacking; + } + + // feed the parameter vector + std::vector par; + PMsrParamList *paramList = fMsrInfo->GetMsrParamList(); + for (UInt_t i=0; isize(); i++) + par.push_back((*paramList)[i].fValue); + + // transform raw histo data. This is done the following way (for details see the manual): + // first rebin the data, than calculate the asymmetry + + // first get start data, end data, and t0 + Int_t start[2] = {fGoodBins[0], fGoodBins[2]}; + Int_t end[2] = {fGoodBins[1], fGoodBins[3]}; + Int_t t0[2] = {(Int_t)fT0s[0], (Int_t)fT0s[1]}; + + // check if the data ranges and t0's between forward/backward are compatible + Int_t fgb[2]; + if (start[0]-t0[0] != start[1]-t0[1]) { // wrong fgb aligning + if (abs(start[0]-t0[0]) > abs(start[1]-t0[1])) { + fgb[0] = start[0]; + fgb[1] = t0[1] + start[0]-t0[0]; + cerr << endl << ">> PRunAsymmetryRRF::PrepareViewData(): **WARNING** needed to shift backward fgb from "; + cerr << start[1] << " to " << fgb[1] << endl; + } else { + fgb[0] = t0[0] + start[1]-t0[1]; + fgb[1] = start[1]; + cerr << endl << ">> PRunAsymmetryRRF::PrepareViewData(): **WARNING** needed to shift forward fgb from "; + cerr << start[0] << " to " << fgb[0] << endl; + } + } else { // fgb aligning is correct + fgb[0] = start[0]; + fgb[1] = start[1]; + } + + Int_t val = fgb[0]-packing*(fgb[0]/packing); + do { + if (fgb[1] - fgb[0] < 0) + val += packing; + } while (val + fgb[1] - fgb[0] < 0); + + start[0] = val; + start[1] = val + fgb[1] - fgb[0]; + + // make sure that there are equal number of rebinned bins in forward and backward + UInt_t noOfBins0 = (runData->GetDataBin(histoNo[0])->size()-start[0])/packing; + UInt_t noOfBins1 = (runData->GetDataBin(histoNo[1])->size()-start[1])/packing; + if (noOfBins0 > noOfBins1) + noOfBins0 = noOfBins1; + end[0] = start[0] + noOfBins0 * packing; + end[1] = start[1] + noOfBins0 * packing; + + // check if start, end, and t0 make any sense + // 1st check if start and end are in proper order + for (UInt_t i=0; i<2; i++) { + if (end[i] < start[i]) { // need to swap them + Int_t keep = end[i]; + end[i] = start[i]; + start[i] = keep; + } + // 2nd check if start is within proper bounds + if ((start[i] < 0) || (start[i] > (Int_t)runData->GetDataBin(histoNo[i])->size())) { + cerr << endl << ">> PRunAsymmetryRRF::PrepareViewData(): **ERROR** start data bin doesn't make any sense!"; + cerr << endl; + return false; + } + // 3rd check if end is within proper bounds + if ((end[i] < 0) || (end[i] > (Int_t)runData->GetDataBin(histoNo[i])->size())) { + cerr << endl << ">> PRunAsymmetryRRF::PrepareViewData(): **ERROR** end data bin doesn't make any sense!"; + cerr << endl; + return false; + } + // 4th check if t0 is within proper bounds + if ((t0[i] < 0) || (t0[i] > (Int_t)runData->GetDataBin(histoNo[i])->size())) { + cerr << endl << ">> PRunAsymmetryRRF::PrepareViewData(): **ERROR** t0 data bin doesn't make any sense!"; + cerr << endl; + return false; + } + } + + // everything looks fine, hence fill packed forward and backward histo + PRunData forwardPacked; + PRunData backwardPacked; + Double_t value = 0.0; + Double_t error = 0.0; + + // forward + for (Int_t i=start[0]; i 1 + if (((i-start[0]) % packing == 0) && (i != start[0])) { // fill data + // in order that after rebinning the fit does not need to be redone (important for plots) + // the value is normalize to per bin + value /= packing; + forwardPacked.AppendValue(value); + if (value == 0.0) + forwardPacked.AppendErrorValue(1.0); + else + forwardPacked.AppendErrorValue(TMath::Sqrt(error)/packing); + value = 0.0; + error = 0.0; + } + value += fForward[i]; + error += fForwardErr[i]*fForwardErr[i]; + } + } + + // backward + for (Int_t i=start[1]; i 1 + if (((i-start[1]) % packing == 0) && (i != start[1])) { // fill data + // in order that after rebinning the fit does not need to be redone (important for plots) + // the value is normalize to per bin + value /= packing; + backwardPacked.AppendValue(value); + if (value == 0.0) + backwardPacked.AppendErrorValue(1.0); + else + backwardPacked.AppendErrorValue(TMath::Sqrt(error)/packing); + value = 0.0; + error = 0.0; + } + value += fBackward[i]; + error += fBackwardErr[i]*fBackwardErr[i]; + } + } + + // check if packed forward and backward hist have the same size, otherwise take the minimum size + UInt_t noOfBins = forwardPacked.GetValue()->size(); + if (forwardPacked.GetValue()->size() != backwardPacked.GetValue()->size()) { + if (forwardPacked.GetValue()->size() > backwardPacked.GetValue()->size()) + noOfBins = backwardPacked.GetValue()->size(); + } + + // form asymmetry including error propagation + Double_t asym; + Double_t f, b, ef, eb, alpha = 1.0, beta = 1.0; + // set data time start, and step + // data start at data_start-t0 + fData.SetDataTimeStart(fTimeResolution*((Double_t)start[0]-t0[0]+(Double_t)(packing-1)/2.0)); + fData.SetDataTimeStep(fTimeResolution*(Double_t)packing); + + // get the proper alpha and beta + switch (fAlphaBetaTag) { + case 1: // alpha == 1, beta == 1 + alpha = 1.0; + beta = 1.0; + break; + case 2: // alpha != 1, beta == 1 + alpha = par[fRunInfo->GetAlphaParamNo()-1]; + beta = 1.0; + break; + case 3: // alpha == 1, beta != 1 + alpha = 1.0; + beta = par[fRunInfo->GetBetaParamNo()-1]; + break; + case 4: // alpha != 1, beta != 1 + alpha = par[fRunInfo->GetAlphaParamNo()-1]; + beta = par[fRunInfo->GetBetaParamNo()-1]; + break; + default: + break; + } + + for (UInt_t i=0; isize(); i++) { + // to make the formulae more readable + f = forwardPacked.GetValue()->at(i); + b = backwardPacked.GetValue()->at(i); + ef = forwardPacked.GetError()->at(i); + eb = backwardPacked.GetError()->at(i); + // check that there are indeed bins + if (f+b != 0.0) + asym = (alpha*f-b) / (alpha*beta*f+b); + else + asym = 0.0; + fData.AppendValue(asym); + // calculate the error + if (f+b != 0.0) + error = 2.0/((f+b)*(f+b))*TMath::Sqrt(b*b*ef*ef+eb*eb*f*f); + else + error = 1.0; + fData.AppendErrorValue(error); + } + + CalcNoOfFitBins(); + + // clean up + fForward.clear(); + fForwardErr.clear(); + fBackward.clear(); + fBackwardErr.clear(); + + // fill theory vector for kView + // calculate functions + for (Int_t i=0; iGetNoOfFuncs(); i++) { + fFuncValues[i] = fMsrInfo->EvalFunc(fMsrInfo->GetFuncNo(i), *fRunInfo->GetMap(), par); + } + + // calculate theory + Double_t time; + UInt_t size = runData->GetDataBin(histoNo[0])->size(); + Double_t factor = 1.0; + if (fData.GetValue()->size() * 10 > runData->GetDataBin(histoNo[0])->size()) { + size = fData.GetValue()->size() * 10; + factor = (Double_t)runData->GetDataBin(histoNo[0])->size() / (Double_t)size; + } + fData.SetTheoryTimeStart(fData.GetDataTimeStart()); + fData.SetTheoryTimeStep(fTimeResolution*factor); + for (UInt_t i=0; iFunc(time, par, fFuncValues); + if (fabs(value) > 10.0) { // dirty hack needs to be fixed!! + value = 0.0; + } + fData.AppendTheoryValue(value); + } + + // clean up + par.clear(); + + return true; +} + +//-------------------------------------------------------------------------- +// GetProperT0 (private) +//-------------------------------------------------------------------------- +/** + *

Get the proper t0 for the single histogram run. + * -# the t0 vector size = number of detectors (grouping) for forward. + * -# initialize t0's with -1 + * -# fill t0's from RUN block + * -# if t0's are missing (i.e. t0 == -1), try to fill from the GLOBAL block. + * -# if t0's are missing, try t0's from the data file + * -# if t0's are missing, try to estimate them + * + * \param runData pointer to the current RUN block entry from the msr-file + * \param globalBlock pointer to the GLOBLA block entry from the msr-file + * \param forwardHistoNo histogram number vector of forward; forwardHistoNo = msr-file forward + redGreen_offset - 1 + * \param backwardHistoNo histogram number vector of backwardward; backwardHistoNo = msr-file backward + redGreen_offset - 1 + * + * return: + * - true if everthing went smooth + * - false, otherwise. + */ +Bool_t PRunAsymmetryRRF::GetProperT0(PRawRunData* runData, PMsrGlobalBlock *globalBlock, PUIntVector &forwardHistoNo, PUIntVector &backwardHistoNo) +{ + // feed all T0's + // first init T0's, T0's are stored as (forward T0, backward T0, etc.) + fT0s.clear(); + fT0s.resize(2*forwardHistoNo.size()); + for (UInt_t i=0; iGetT0BinSize(); i++) { + fT0s[i] = fRunInfo->GetT0Bin(i); + } + + // fill in the missing T0's from the GLOBAL block section (if present) + for (UInt_t i=0; iGetT0BinSize(); i++) { + if (fT0s[i] == -1) { // i.e. not given in the RUN block section + fT0s[i] = globalBlock->GetT0Bin(i); + } + } + + // fill in the missing T0's from the data file, if not already present in the msr-file + for (UInt_t i=0; iGetT0Bin(forwardHistoNo[i]) > 0.0) { + fT0s[2*i] = runData->GetT0Bin(forwardHistoNo[i]); + fRunInfo->SetT0Bin(fT0s[2*i], 2*i); + } + } + for (UInt_t i=0; iGetT0Bin(backwardHistoNo[i]) > 0.0) { + fT0s[2*i+1] = runData->GetT0Bin(backwardHistoNo[i]); + fRunInfo->SetT0Bin(fT0s[2*i+1], 2*i+1); + } + } + + // fill in the T0's gaps, i.e. in case the T0's are NEITHER in the msr-file and NOR in the data file + for (UInt_t i=0; iGetT0BinEstimated(forwardHistoNo[i]); + fRunInfo->SetT0Bin(fT0s[2*i], 2*i); + + cerr << endl << ">> PRunAsymmetryRRF::GetProperT0(): **WARRNING** NO t0's found, neither in the run data nor in the msr-file!"; + cerr << endl << ">> run: " << fRunInfo->GetRunName()->Data(); + cerr << endl << ">> will try the estimated one: forward t0 = " << runData->GetT0BinEstimated(forwardHistoNo[i]); + cerr << endl << ">> NO WARRANTY THAT THIS OK!! For instance for LEM this is almost for sure rubbish!"; + cerr << endl; + } + } + for (UInt_t i=0; iGetT0BinEstimated(backwardHistoNo[i]); + fRunInfo->SetT0Bin(fT0s[2*i+1], 2*i+1); + + cerr << endl << ">> PRunAsymmetryRRF::GetProperT0(): **WARRNING** NO t0's found, neither in the run data nor in the msr-file!"; + cerr << endl << ">> run: " << fRunInfo->GetRunName()->Data(); + cerr << endl << ">> will try the estimated one: backward t0 = " << runData->GetT0BinEstimated(backwardHistoNo[i]); + cerr << endl << ">> NO WARRANTY THAT THIS OK!! For instance for LEM this is almost for sure rubbish!"; + cerr << endl; + } + } + + // check if t0 is within proper bounds + for (UInt_t i=0; i (Int_t)runData->GetDataBin(forwardHistoNo[i])->size())) { + cerr << endl << ">> PRunAsymmetryRRF::GetProperT0(): **ERROR** t0 data bin (" << fT0s[2*i] << ") doesn't make any sense!"; + cerr << endl << ">> forwardHistoNo " << forwardHistoNo[i]; + cerr << endl; + return false; + } + if ((fT0s[2*i+1] < 0) || (fT0s[2*i+1] > (Int_t)runData->GetDataBin(backwardHistoNo[i])->size())) { + cerr << endl << ">> PRunAsymmetryRRF::PrepareData(): **ERROR** t0 data bin (" << fT0s[2*i+1] << ") doesn't make any sense!"; + cerr << endl << ">> backwardHistoNo " << backwardHistoNo[i]; + cerr << endl; + return false; + } + } + + // check if addrun's are present, and if yes add the necessary t0's + if (fRunInfo->GetRunNameSize() > 1) { // runs to be added present + PRawRunData *addRunData; + fAddT0s.resize(fRunInfo->GetRunNameSize()-1); // resize to the number of addruns + for (UInt_t i=1; iGetRunNameSize(); i++) { + // get run to be added to the main one + addRunData = fRawData->GetRunData(*(fRunInfo->GetRunName(i))); + if (addRunData == 0) { // couldn't get run + cerr << endl << ">> PRunAsymmetryRRF::GetProperT0(): **ERROR** Couldn't get addrun " << fRunInfo->GetRunName(i)->Data() << "!"; + cerr << endl; + return false; + } + + // feed all T0's + // first init T0's, T0's are stored as (forward T0, backward T0, etc.) + fAddT0s[i-1].clear(); + fAddT0s[i-1].resize(2*forwardHistoNo.size()); + for (UInt_t j=0; jGetAddT0BinSize(i); j++) { + fAddT0s[i-1][j] = fRunInfo->GetAddT0Bin(i, j); + } + + // fill in the T0's from the data file, if not already present in the msr-file + for (UInt_t j=0; jGetT0Bin(forwardHistoNo[j]) > 0.0) { + fAddT0s[i-1][2*j] = addRunData->GetT0Bin(forwardHistoNo[j]); + fRunInfo->SetAddT0Bin(fAddT0s[i-1][2*j], i-1, 2*j); + } + } + for (UInt_t j=0; jGetT0Bin(backwardHistoNo[j]) > 0.0) { + fAddT0s[i-1][2*j+1] = addRunData->GetT0Bin(backwardHistoNo[j]); + fRunInfo->SetAddT0Bin(fAddT0s[i-1][2*j+1], i-1, 2*j+1); + } + } + + // fill in the T0's gaps, i.e. in case the T0's are NOT in the msr-file and NOT in the data file + for (UInt_t j=0; jGetT0BinEstimated(forwardHistoNo[j]); + fRunInfo->SetAddT0Bin(fAddT0s[i-1][2*j], i-1, 2*j); + + cerr << endl << ">> PRunAsymmetryRRF::GetProperT0(): **WARRNING** NO t0's found, neither in the run data nor in the msr-file!"; + cerr << endl << ">> run: " << fRunInfo->GetRunName(i)->Data(); + cerr << endl << ">> will try the estimated one: forward t0 = " << addRunData->GetT0BinEstimated(forwardHistoNo[j]); + cerr << endl << ">> NO WARRANTY THAT THIS OK!! For instance for LEM this is almost for sure rubbish!"; + cerr << endl; + } + } + for (UInt_t j=0; jGetT0BinEstimated(backwardHistoNo[j]); + fRunInfo->SetAddT0Bin(fAddT0s[i-1][2*j+1], i-1, 2*j+1); + + cerr << endl << ">> PRunAsymmetryRRF::GetProperT0(): **WARRNING** NO t0's found, neither in the run data nor in the msr-file!"; + cerr << endl << ">> run: " << fRunInfo->GetRunName(i)->Data(); + cerr << endl << ">> will try the estimated one: backward t0 = " << runData->GetT0BinEstimated(backwardHistoNo[j]); + cerr << endl << ">> NO WARRANTY THAT THIS OK!! For instance for LEM this is almost for sure rubbish!"; + cerr << endl; + } + } + } + } + + return true; +} + +//-------------------------------------------------------------------------- +// GetProperDataRange (private) +//-------------------------------------------------------------------------- +/** + *

Get the proper data range, i.e. first/last good bin (fgb/lgb). + * -# get fgb/lgb from the RUN block + * -# if fgb/lgb still undefined, try to get it from the GLOBAL block + * -# if fgb/lgb still undefined, try to estimate them. + * + * \param runData raw run data needed to perform some crosschecks + * \param histoNo histogram number (within a run). histoNo[0]: forward histogram number, histNo[1]: backward histogram number + * + * return: + * - true if everthing went smooth + * - false, otherwise. + */ +Bool_t PRunAsymmetryRRF::GetProperDataRange(PRawRunData* runData, UInt_t histoNo[2]) +{ + // first get start/end data + Int_t start[2] = {fRunInfo->GetDataRange(0), fRunInfo->GetDataRange(2)}; + Int_t end[2] = {fRunInfo->GetDataRange(1), fRunInfo->GetDataRange(3)}; + // check if data range has been provided in the RUN block. If not, try the GLOBAL block + if (start[0] == -1) { + start[0] = fMsrInfo->GetMsrGlobal()->GetDataRange(0); + } + if (start[1] == -1) { + start[1] = fMsrInfo->GetMsrGlobal()->GetDataRange(2); + } + if (end[0] == -1) { + end[0] = fMsrInfo->GetMsrGlobal()->GetDataRange(1); + } + if (end[1] == -1) { + end[1] = fMsrInfo->GetMsrGlobal()->GetDataRange(3); + } + + Double_t t0[2] = {fT0s[0], fT0s[1]}; + Int_t offset = (Int_t)(10.0e-3/fTimeResolution); // needed in case first good bin is not given, default = 10ns + + // check if data range has been provided, and if not try to estimate them + if (start[0] < 0) { + start[0] = (Int_t)t0[0]+offset; + fRunInfo->SetDataRange(start[0], 0); + cerr << endl << ">> PRunAsymmetryRRF::GetProperDataRange(): **WARNING** data range (forward) was not provided, will try data range start = t0+" << offset << "(=10ns) = " << start[0] << "."; + cerr << endl << ">> NO WARRANTY THAT THIS DOES MAKE ANY SENSE."; + cerr << endl; + } + if (start[1] < 0) { + start[1] = (Int_t)t0[1]+offset; + fRunInfo->SetDataRange(start[1], 2); + cerr << endl << ">> PRunAsymmetryRRF::GetProperDataRange(): **WARNING** data range (backward) was not provided, will try data range start = t0+" << offset << "(=10ns) = " << start[1] << "."; + cerr << endl << ">> NO WARRANTY THAT THIS DOES MAKE ANY SENSE."; + cerr << endl; + } + if (end[0] < 0) { + end[0] = runData->GetDataBin(histoNo[0])->size(); + fRunInfo->SetDataRange(end[0], 1); + cerr << endl << ">> PRunAsymmetryRRF::GetProperDataRange(): **WARNING** data range (forward) was not provided, will try data range end = " << end[0] << "."; + cerr << endl << ">> NO WARRANTY THAT THIS DOES MAKE ANY SENSE."; + cerr << endl; + } + if (end[1] < 0) { + end[1] = runData->GetDataBin(histoNo[1])->size(); + fRunInfo->SetDataRange(end[1], 3); + cerr << endl << ">> PRunAsymmetryRRF::GetProperDataRange(): **WARNING** data range (backward) was not provided, will try data range end = " << end[1] << "."; + cerr << endl << ">> NO WARRANTY THAT THIS DOES MAKE ANY SENSE."; + cerr << endl; + } + + // check if start, end, and t0 make any sense + // 1st check if start and end are in proper order + for (UInt_t i=0; i<2; i++) { + if (end[i] < start[i]) { // need to swap them + Int_t keep = end[i]; + end[i] = start[i]; + start[i] = keep; + } + // 2nd check if start is within proper bounds + if ((start[i] < 0) || (start[i] > (Int_t)runData->GetDataBin(histoNo[i])->size())) { + cerr << endl << ">> PRunAsymmetryRRF::GetProperDataRange(): **ERROR** start data bin doesn't make any sense!"; + cerr << endl; + return false; + } + // 3rd check if end is within proper bounds + if ((end[i] < 0) || (end[i] > (Int_t)runData->GetDataBin(histoNo[i])->size())) { + cerr << endl << ">> PRunAsymmetryRRF::GetProperDataRange(): **ERROR** end data bin doesn't make any sense!"; + cerr << endl; + return false; + } + // 4th check if t0 is within proper bounds + if ((t0[i] < 0) || (t0[i] > (Int_t)runData->GetDataBin(histoNo[i])->size())) { + cerr << endl << ">> PRunAsymmetryRRF::GetProperDataRange(): **ERROR** t0 data bin doesn't make any sense!"; + cerr << endl; + return false; + } + } + + // check that start-t0 is the same for forward as for backward, otherwise take max(start[i]-t0[i]) + if (fabs(static_cast(start[0])-t0[0]) > fabs(static_cast(start[1])-t0[1])){ + start[1] = static_cast(t0[1] + static_cast(start[0]) - t0[0]); + end[1] = static_cast(t0[1] + static_cast(end[0]) - t0[0]); + cerr << endl << ">> PRunAsymmetryRRF::GetProperDataRange **WARNING** needed to shift backward data range."; + cerr << endl << ">> given: " << fRunInfo->GetDataRange(2) << ", " << fRunInfo->GetDataRange(3); + cerr << endl << ">> used : " << start[1] << ", " << end[1]; + cerr << endl; + } + if (fabs(static_cast(start[0])-t0[0]) < fabs(static_cast(start[1])-t0[1])){ + start[0] = static_cast(t0[0] + static_cast(start[1]) - t0[1]); + end[0] = static_cast(t0[0] + static_cast(end[1]) - t0[1]); + cerr << endl << ">> PRunAsymmetryRRF::GetProperDataRange **WARNING** needed to shift forward data range."; + cerr << endl << ">> given: " << fRunInfo->GetDataRange(0) << ", " << fRunInfo->GetDataRange(1); + cerr << endl << ">> used : " << start[0] << ", " << end[0]; + cerr << endl; + } + + // keep good bins for potential latter use + fGoodBins[0] = start[0]; + fGoodBins[1] = end[0]; + fGoodBins[2] = start[1]; + fGoodBins[3] = end[1]; + + return true; +} + +//-------------------------------------------------------------------------- +// GetProperFitRange (private) +//-------------------------------------------------------------------------- +/** + *

Get the proper fit range. There are two possible fit range commands: + * fit given in (usec), or + * fit fgb+offset_0 lgb-offset_1 given in (bins), therefore it works the following way: + * -# get fit range assuming given in time from RUN block + * -# if fit range in RUN block is given in bins, replace start/end + * -# if fit range is NOT given yet, try fit range assuming given in time from GLOBAL block + * -# if fit range in GLOBAL block is given in bins, replace start/end + * -# if still no fit range is given, use fgb/lgb. + * + * \param globalBlock pointer to the GLOBAL block information form the msr-file. + */ +void PRunAsymmetryRRF::GetProperFitRange(PMsrGlobalBlock *globalBlock) +{ + // set fit start/end time; first check RUN Block + fFitStartTime = fRunInfo->GetFitRange(0); + fFitEndTime = fRunInfo->GetFitRange(1); + // if fit range is given in bins (and not time), the fit start/end time can be calculated at this point now + if (fRunInfo->IsFitRangeInBin()) { + fFitStartTime = (fGoodBins[0] + fRunInfo->GetFitRangeOffset(0) - fT0s[0]) * fTimeResolution; // (fgb+n0-t0)*dt + fFitEndTime = (fGoodBins[1] - fRunInfo->GetFitRangeOffset(1) - fT0s[0]) * fTimeResolution; // (lgb-n1-t0)*dt + // write these times back into the data structure. This way it is available when writting the log-file + fRunInfo->SetFitRange(fFitStartTime, 0); + fRunInfo->SetFitRange(fFitEndTime, 1); + } + if (fFitStartTime == PMUSR_UNDEFINED) { // fit start/end NOT found in the RUN block, check GLOBAL block + fFitStartTime = globalBlock->GetFitRange(0); + fFitEndTime = globalBlock->GetFitRange(1); + // if fit range is given in bins (and not time), the fit start/end time can be calculated at this point now + if (globalBlock->IsFitRangeInBin()) { + fFitStartTime = (fGoodBins[0] + globalBlock->GetFitRangeOffset(0) - fT0s[0]) * fTimeResolution; // (fgb+n0-t0)*dt + fFitEndTime = (fGoodBins[1] - globalBlock->GetFitRangeOffset(1) - fT0s[0]) * fTimeResolution; // (lgb-n1-t0)*dt + // write these times back into the data structure. This way it is available when writting the log-file + globalBlock->SetFitRange(fFitStartTime, 0); + globalBlock->SetFitRange(fFitEndTime, 1); + } + } + if ((fFitStartTime == PMUSR_UNDEFINED) || (fFitEndTime == PMUSR_UNDEFINED)) { + fFitStartTime = (fGoodBins[0] - fT0s[0]) * fTimeResolution; // (fgb-t0)*dt + fFitEndTime = (fGoodBins[1] - fT0s[0]) * fTimeResolution; // (lgb-t0)*dt + cerr << ">> PRunSingleHisto::GetProperFitRange(): **WARNING** Couldn't get fit start/end time!" << endl; + cerr << ">> Will set it to fgb/lgb which given in time is: " << fFitStartTime << "..." << fFitEndTime << " (usec)" << endl; + } +} diff --git a/src/include/PRunAsymmetryRRF.h b/src/include/PRunAsymmetryRRF.h new file mode 100644 index 00000000..d0aefd7d --- /dev/null +++ b/src/include/PRunAsymmetryRRF.h @@ -0,0 +1,81 @@ +/*************************************************************************** + + PRunAsymmetryRRF.h + + Author: Andreas Suter + e-mail: andreas.suter@psi.ch + +***************************************************************************/ + +/*************************************************************************** + * Copyright (C) 2007-2016 by Andreas Suter * + * andreas.suter@psi.ch * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#ifndef _PRUNASYMMETRYRRF_H_ +#define _PRUNASYMMETRYRRF_H_ + +#include "PRunBase.h" + +//--------------------------------------------------------------------------- +/** + *

Class handling the asymmetry fit. + */ +class PRunAsymmetryRRF : public PRunBase +{ + public: + PRunAsymmetryRRF(); + PRunAsymmetryRRF(PMsrHandler *msrInfo, PRunDataHandler *rawData, UInt_t runNo, EPMusrHandleTag tag); + virtual ~PRunAsymmetryRRF(); + + virtual Double_t CalcChiSquare(const std::vector& par); + virtual Double_t CalcChiSquareExpected(const std::vector& par); + virtual Double_t CalcMaxLikelihood(const std::vector& par); + virtual void CalcTheory(); + + virtual UInt_t GetNoOfFitBins(); + + virtual void SetFitRangeBin(const TString fitRange); + + protected: + virtual void CalcNoOfFitBins(); + virtual Bool_t PrepareData(); + virtual Bool_t PrepareFitData(); + virtual Bool_t PrepareViewData(PRawRunData* runData, UInt_t histoNo[2]); + + private: + UInt_t fAlphaBetaTag; ///< \f$ 1 \to \alpha = \beta = 1\f$; \f$ 2 \to \alpha \neq 1, \beta = 1\f$; \f$ 3 \to \alpha = 1, \beta \neq 1\f$; \f$ 4 \to \alpha \neq 1, \beta \neq 1\f$. + UInt_t fNoOfFitBins; ///< number of bins to be be fitted + Int_t fRRFPacking; ///< RRF packing for this particular run. Given in the GLOBAL-block. + + PDoubleVector fForward; ///< forward histo data + PDoubleVector fForwardErr; ///< forward histo errors + PDoubleVector fBackward; ///< backward histo data + PDoubleVector fBackwardErr; ///< backward histo errors + + Int_t fGoodBins[4]; ///< keep first/last good bins. 0=fgb, 1=lgb (forward); 2=fgb, 3=lgb (backward) + + Bool_t SubtractFixBkg(); + Bool_t SubtractEstimatedBkg(); + + virtual Bool_t GetProperT0(PRawRunData* runData, PMsrGlobalBlock *globalBlock, PUIntVector &forwardHisto, PUIntVector &backwardHistoNo); + virtual Bool_t GetProperDataRange(PRawRunData* runData, UInt_t histoNo[2]); + virtual void GetProperFitRange(PMsrGlobalBlock *globalBlock); +}; + +#endif // _PRUNASYMMETRYRRF_H_ From b8b7b7665f868a0bd1b86558ffc33af1a286bb10 Mon Sep 17 00:00:00 2001 From: Suter Andreas Date: Fri, 15 Jan 2016 18:26:47 +0100 Subject: [PATCH 14/22] some more work towards asymmetry RRF --- src/classes/PRunAsymmetryRRF.cpp | 27 ++++++++++++++++++++------- src/classes/PRunListCollection.cpp | 6 +++--- src/musrfit.cpp | 26 ++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 10 deletions(-) diff --git a/src/classes/PRunAsymmetryRRF.cpp b/src/classes/PRunAsymmetryRRF.cpp index bd21a5b8..eef4df0c 100644 --- a/src/classes/PRunAsymmetryRRF.cpp +++ b/src/classes/PRunAsymmetryRRF.cpp @@ -386,6 +386,11 @@ void PRunAsymmetryRRF::SetFitRangeBin(const TString fitRange) */ void PRunAsymmetryRRF::CalcNoOfFitBins() { + cout << "debug> fData.GetValue()->size()=" << fData.GetValue()->size() << endl; + cout << "debug> fFitStartTime=" << fFitStartTime << endl; + cout << "debug> fData.GetDataTimeStart()=" << fData.GetDataTimeStart() << ", fData.GetDataTimeStep()=" << fData.GetDataTimeStep() << endl; + cout << "debug> -----" << endl; + // In order not having to loop over all bins and to stay consistent with the chisq method, calculate the start and end bins explicitly Int_t startTimeBin = static_cast(ceil((fFitStartTime - fData.GetDataTimeStart())/fData.GetDataTimeStep())); if (startTimeBin < 0) @@ -867,9 +872,7 @@ Bool_t PRunAsymmetryRRF::PrepareFitData() Int_t lgb = fgb + lgb_offset; Int_t dt0 = (Int_t)fT0s[0]-(Int_t)fT0s[1]; - cout << "debug> fGoodBins[0]=" << fGoodBins[0] << ", fGoodBins[2]=" << fGoodBins[2] << ", fT0s[0]=" << fT0s[0] << ", fT0s[1]=" << fT0s[1] << endl; - cout << "debug> fgbOffset=" << fgbOffset << endl; - cout << "debug> fgb=" << fgb << ", lgb=" << lgb << ", dt0=" << dt0 << endl; + cout << "debug> fgb=" << fgb << ", lgb=" << lgb << endl; PDoubleVector asym; PDoubleVector asymErr; @@ -885,7 +888,7 @@ Bool_t PRunAsymmetryRRF::PrepareFitData() asym.push_back(asymVal); eff = fForwardErr[i]; ebb = fBackwardErr[i-dt0]; - if (asymVal != 0.0) + if ((asymVal != 0.0) && (ff+bb) > 0.0) asymValErr = sqrt(2)/(ff+bb)*sqrt(bb*eff+ff*ebb); else asymValErr = 1.0; @@ -897,13 +900,15 @@ Bool_t PRunAsymmetryRRF::PrepareFitData() Double_t wRRF = globalBlock->GetRRFFreq("Mc"); Double_t phaseRRF = globalBlock->GetRRFPhase()*TMath::TwoPi()/180.0; - Double_t startTime = fTimeResolution * (fT0s[0]+(Double_t)fgbOffset); + Double_t startTime = fTimeResolution * (Double_t)fgbOffset; Double_t time=0.0; for (UInt_t i=0; i before packing: startTime=" << startTime << ", endTime=" << startTime+asym.size()*fTimeResolution << endl; + // 3rd: rrf packing PDoubleVector asymRRF; asymVal = 0.0; @@ -926,11 +931,19 @@ Bool_t PRunAsymmetryRRF::PrepareFitData() asymValErr += asymErr[i]*asymErr[i]; } + cout << "debug> after packing: startTime=" << startTime + fTimeResolution*((Double_t)(fRRFPacking-1)/2.0) << ", endTime=" << startTime + fTimeResolution*((Double_t)(fRRFPacking-1)/2.0)+asymRRF.size()*fTimeResolution*(Double_t)(fRRFPacking) << endl; - fData.SetDataTimeStart(startTime+(Double_t)(fRRFPacking-1)/2.0); + ofstream fout("_data.dat", ofstream::out); + for (UInt_t i=0; iCalcTheory(); - data = fRunAsymmetryList[index]->GetData(); + fRunAsymmetryRRFList[index]->CalcTheory(); + data = fRunAsymmetryRRFList[index]->GetData(); break; case kRunNo: // called from PMusrCanvas - for (UInt_t i=0; iGetRunNo() == index) { data = fRunAsymmetryRRFList[i]->GetData(); break; diff --git a/src/musrfit.cpp b/src/musrfit.cpp index 13e72c18..f5f5ac44 100644 --- a/src/musrfit.cpp +++ b/src/musrfit.cpp @@ -216,6 +216,19 @@ void musrfit_dump_ascii(char *fileName, PRunListCollection *runList) } } + // asymmetry RRF + size = runList->GetNoOfAsymmetryRRF(); + if (size > 0) { + for (unsigned int i=0; iGetAsymmetryRRF(i); + if (data) { + // dump data + musrfit_write_ascii(fln, data, runCounter); + runCounter++; + } + } + } + // muMinus size = runList->GetNoOfMuMinus(); if (size > 0) { @@ -362,6 +375,19 @@ void musrfit_dump_root(char *fileName, PRunListCollection *runList) } } + // asymmetry RRF + size = runList->GetNoOfAsymmetryRRF(); + if (size > 0) { + for (unsigned int i=0; iGetAsymmetryRRF(i); + if (data) { + // dump data + musrfit_write_root(f, fln, data, runCounter); + runCounter++; + } + } + } + // muMinus size = runList->GetNoOfMuMinus(); if (size > 0) { From 71cac92d235ced77b7448565b7402bef137bae52 Mon Sep 17 00:00:00 2001 From: Suter Andreas Date: Mon, 18 Jan 2016 10:41:27 +0100 Subject: [PATCH 15/22] more work toward an asymmetry RRF fit. --- src/classes/PFitterFcn.cpp | 2 + src/classes/PMsrHandler.cpp | 107 +++++++++++++++- src/classes/PMusr.cpp | 2 +- src/classes/PMusrCanvas.cpp | 1 + src/classes/PRunAsymmetryRRF.cpp | 211 ++++++++++++------------------- 5 files changed, 191 insertions(+), 132 deletions(-) diff --git a/src/classes/PFitterFcn.cpp b/src/classes/PFitterFcn.cpp index 5e5b23c6..c6a8566a 100644 --- a/src/classes/PFitterFcn.cpp +++ b/src/classes/PFitterFcn.cpp @@ -79,12 +79,14 @@ Double_t PFitterFcn::operator()(const std::vector& par) const value += fRunListCollection->GetSingleHistoChisq(par); value += fRunListCollection->GetSingleHistoRRFChisq(par); value += fRunListCollection->GetAsymmetryChisq(par); + value += fRunListCollection->GetAsymmetryRRFChisq(par); value += fRunListCollection->GetMuMinusChisq(par); value += fRunListCollection->GetNonMusrChisq(par); } else { // max likelihood value += fRunListCollection->GetSingleHistoMaximumLikelihood(par); value += fRunListCollection->GetSingleHistoRRFMaximumLikelihood(par); value += fRunListCollection->GetAsymmetryMaximumLikelihood(par); + value += fRunListCollection->GetAsymmetryRRFMaximumLikelihood(par); value += fRunListCollection->GetMuMinusMaximumLikelihood(par); value += fRunListCollection->GetNonMusrMaximumLikelihood(par); } diff --git a/src/classes/PMsrHandler.cpp b/src/classes/PMsrHandler.cpp index 97cfa207..81b8095b 100644 --- a/src/classes/PMsrHandler.cpp +++ b/src/classes/PMsrHandler.cpp @@ -1151,6 +1151,9 @@ Int_t PMsrHandler::WriteMsrLogFile(const Bool_t messages) case MSR_PLOT_ASYM: fout << "PLOT " << fPlots[plotNo].fPlotType << " (asymmetry plot)" << endl; break; + case MSR_PLOT_ASYM_RRF: + fout << "PLOT " << fPlots[plotNo].fPlotType << " (asymmetry RRF plot)" << endl; + break; case MSR_PLOT_MU_MINUS: fout << "PLOT " << fPlots[plotNo].fPlotType << " (mu minus plot)" << endl; break; @@ -2191,6 +2194,9 @@ Int_t PMsrHandler::WriteMsrFile(const Char_t *filename, map *co case MSR_PLOT_ASYM: fout << "PLOT " << fPlots[i].fPlotType << " (asymmetry plot)" << endl; break; + case MSR_PLOT_ASYM_RRF: + fout << "PLOT " << fPlots[i].fPlotType << " (asymmetry RRF plot)" << endl; + break; case MSR_PLOT_MU_MINUS: fout << "PLOT " << fPlots[i].fPlotType << " (mu minus plot)" << endl; break; @@ -5331,7 +5337,51 @@ Bool_t PMsrHandler::CheckRunBlockIntegrity() } break; case PRUN_SINGLE_HISTO_RRF: - // STILL MISSING + // check that there is a forward parameter number + if (fRuns[i].GetForwardHistoNo() == -1) { + cerr << endl << ">> PMsrHandler::CheckRunBlockIntegrity(): **ERROR** in RUN block number " << i+1; + cerr << endl << ">> forward parameter number not defined. Necessary for single histogram RRF fits." << endl; + return false; + } + if ((fRuns[i].GetNormParamNo() > static_cast(fParam.size())) && !fFourierOnly) { + // check if forward histogram number is a function + if (fRuns[i].GetNormParamNo() - MSR_PARAM_FUN_OFFSET > static_cast(fParam.size())) { + cerr << endl << ">> PMsrHandler::CheckRunBlockIntegrity(): **ERROR** in RUN block number " << i+1; + cerr << endl << ">> forward histogram number " << fRuns[i].GetNormParamNo() << " is larger than the number of fit parameters (" << fParam.size() << ")."; + cerr << endl << ">> Consider to check the manual ;-)" << endl; + return false; + } + } + // check fit range + if (!fRuns[i].IsFitRangeInBin() && !fFourierOnly) { // fit range given as times in usec (RUN block) + if ((fRuns[i].GetFitRange(0) == PMUSR_UNDEFINED) || (fRuns[i].GetFitRange(1) == PMUSR_UNDEFINED)) { // check fit range in RUN block + if (!fGlobal.IsFitRangeInBin()) { // fit range given as times in usec (GLOBAL block) + if ((fGlobal.GetFitRange(0) == PMUSR_UNDEFINED) || (fGlobal.GetFitRange(1) == PMUSR_UNDEFINED)) { // check fit range in GLOBAL block + cerr << endl << "PMsrHandler::CheckRunBlockIntegrity(): **ERROR** in RUN block number " << i+1; + cerr << endl << " Fit range is not defined. Necessary for single histogram fits." << endl; + return false; + } + } + } + } + // check number of T0's provided + if ((fRuns[i].GetT0BinSize() > fRuns[i].GetForwardHistoNoSize()) && + (fGlobal.GetT0BinSize() > fRuns[i].GetForwardHistoNoSize())) { + cerr << endl << ">> PMsrHandler::CheckRunBlockIntegrity(): **ERROR** in RUN block number " << i+1; + cerr << endl << ">> Found " << fRuns[i].GetT0BinSize() << " T0 entries. Expecting only " << fRuns[i].GetForwardHistoNoSize() << ". Needs to be fixed." << endl; + cerr << endl << ">> In GLOBAL block: " << fGlobal.GetT0BinSize() << " T0 entries. Expecting only " << fRuns[i].GetForwardHistoNoSize() << ". Needs to be fixed." << endl; + return false; + } + // check that RRF frequency is given + if (fGlobal.GetRRFUnitTag() == RRF_UNIT_UNDEF) { + cerr << endl << ">> PMsrHandler::CheckRunBlockIntegrity(): **ERROR** no RRF frequency found in the GLOBAL block." << endl; + return false; + } + // check that RRF packing is given + if (fGlobal.GetRRFPacking() == -1) { + cerr << endl << ">> PMsrHandler::CheckRunBlockIntegrity(): **ERROR** no RRF packing found in the GLOBAL block." << endl; + return false; + } break; case PRUN_ASYMMETRY: // check alpha @@ -5386,7 +5436,60 @@ Bool_t PMsrHandler::CheckRunBlockIntegrity() } break; case PRUN_ASYMMETRY_RRF: - // STILL MISSING + // check alpha + if ((fRuns[i].GetAlphaParamNo() == -1) && !fFourierOnly) { + cerr << endl << ">> PMsrHandler::CheckRunBlockIntegrity(): **ERROR** in RUN block number " << i+1; + cerr << endl << ">> alpha parameter number missing which is needed for an asymmetry RRF fit."; + cerr << endl << ">> Consider to check the manual ;-)" << endl; + return false; + } + // check that there is a forward parameter number + if (fRuns[i].GetForwardHistoNo() == -1) { + cerr << endl << ">> PMsrHandler::CheckRunBlockIntegrity(): **ERROR** in RUN block number " << i+1; + cerr << endl << ">> forward histogram number not defined. Necessary for asymmetry RRF fits." << endl; + return false; + } + // check that there is a backward parameter number + if (fRuns[i].GetBackwardHistoNo() == -1) { + cerr << endl << ">> PMsrHandler::CheckRunBlockIntegrity(): **ERROR** in RUN block number " << i+1; + cerr << endl << ">> backward histogram number not defined. Necessary for asymmetry RRF fits." << endl; + return false; + } + // check fit range + if (!fRuns[i].IsFitRangeInBin()) { // fit range given as times in usec + if ((fRuns[i].GetFitRange(0) == PMUSR_UNDEFINED) || (fRuns[i].GetFitRange(1) == PMUSR_UNDEFINED)) { + if ((fGlobal.GetFitRange(0) == PMUSR_UNDEFINED) || (fGlobal.GetFitRange(1) == PMUSR_UNDEFINED)) { + cerr << endl << ">> PMsrHandler::CheckRunBlockIntegrity(): **ERROR** in RUN block number " << i+1; + cerr << endl << ">> Fit range is not defined, also NOT present in the GLOBAL block. Necessary for asymmetry RRF fits." << endl; + return false; + } + } + } + // check number of T0's provided + if ((fRuns[i].GetT0BinSize() > 2*fRuns[i].GetForwardHistoNoSize()) && + (fGlobal.GetT0BinSize() > 2*fRuns[i].GetForwardHistoNoSize())) { + cerr << endl << ">> PMsrHandler::CheckRunBlockIntegrity(): **ERROR** in RUN block number " << i+1; + cerr << endl << ">> Found " << fRuns[i].GetT0BinSize() << " T0 entries. Expecting only " << 2*fRuns[i].GetForwardHistoNoSize() << " in forward. Needs to be fixed." << endl; + cerr << endl << ">> In GLOBAL block: " << fGlobal.GetT0BinSize() << " T0 entries. Expecting only " << 2*fRuns[i].GetForwardHistoNoSize() << ". Needs to be fixed." << endl; + return false; + } + if ((fRuns[i].GetT0BinSize() > 2*fRuns[i].GetBackwardHistoNoSize()) && + (fGlobal.GetT0BinSize() > 2*fRuns[i].GetBackwardHistoNoSize())) { + cerr << endl << ">> PMsrHandler::CheckRunBlockIntegrity(): **ERROR** in RUN block number " << i+1; + cerr << endl << ">> Found " << fRuns[i].GetT0BinSize() << " T0 entries. Expecting only " << 2*fRuns[i].GetBackwardHistoNoSize() << " in backward. Needs to be fixed." << endl; + cerr << endl << ">> In GLOBAL block: " << fGlobal.GetT0BinSize() << " T0 entries. Expecting only " << 2*fRuns[i].GetBackwardHistoNoSize() << ". Needs to be fixed." << endl; + return false; + } + // check that RRF frequency is given + if (fGlobal.GetRRFUnitTag() == RRF_UNIT_UNDEF) { + cerr << endl << ">> PMsrHandler::CheckRunBlockIntegrity(): **ERROR** no RRF frequency found in the GLOBAL block." << endl; + return false; + } + // check that RRF packing is given + if (fGlobal.GetRRFPacking() == -1) { + cerr << endl << ">> PMsrHandler::CheckRunBlockIntegrity(): **ERROR** no RRF packing found in the GLOBAL block." << endl; + return false; + } break; case PRUN_MU_MINUS: // needs eventually to be implemented diff --git a/src/classes/PMusr.cpp b/src/classes/PMusr.cpp index e0d45c53..8cde496b 100644 --- a/src/classes/PMusr.cpp +++ b/src/classes/PMusr.cpp @@ -711,7 +711,7 @@ PMsrGlobalBlock::PMsrGlobalBlock() { fGlobalPresent = false; fRRFFreq = 0.0; // rotating reference frequency in units given by fRRFUnitTag. Only needed for fittype 1 - fRRFUnitTag = RRF_UNIT_MHz; // RRF unit tag. Default: MHz + fRRFUnitTag = RRF_UNIT_UNDEF; // RRF unit tag. Default: undefined fRRFPhase = 0.0; fRRFPacking = -1; // undefined RRF packing/rebinning fFitType = -1; // undefined fit type diff --git a/src/classes/PMusrCanvas.cpp b/src/classes/PMusrCanvas.cpp index ccfa539d..ec99e93a 100644 --- a/src/classes/PMusrCanvas.cpp +++ b/src/classes/PMusrCanvas.cpp @@ -4729,6 +4729,7 @@ void PMusrCanvas::PlotData(Bool_t unzoom) } break; case MSR_PLOT_SINGLE_HISTO_RRF: + case MSR_PLOT_ASYM_RRF: yAxisTitle = "RRF Asymmetry"; break; case MSR_PLOT_ASYM: diff --git a/src/classes/PRunAsymmetryRRF.cpp b/src/classes/PRunAsymmetryRRF.cpp index eef4df0c..7e7f21df 100644 --- a/src/classes/PRunAsymmetryRRF.cpp +++ b/src/classes/PRunAsymmetryRRF.cpp @@ -209,7 +209,7 @@ Double_t PRunAsymmetryRRF::CalcChiSquare(const std::vector& par) chunk = 10; #pragma omp parallel for default(shared) private(i,time,diff,asymFcnValue,a,b,f) schedule(dynamic,chunk) reduction(+:chisq) #endif - for (i=startTimeBin; i < endTimeBin; ++i) { + for (i=startTimeBin; i fData.GetValue()->size()=" << fData.GetValue()->size() << endl; - cout << "debug> fFitStartTime=" << fFitStartTime << endl; - cout << "debug> fData.GetDataTimeStart()=" << fData.GetDataTimeStart() << ", fData.GetDataTimeStep()=" << fData.GetDataTimeStep() << endl; - cout << "debug> -----" << endl; - // In order not having to loop over all bins and to stay consistent with the chisq method, calculate the start and end bins explicitly Int_t startTimeBin = static_cast(ceil((fFitStartTime - fData.GetDataTimeStart())/fData.GetDataTimeStep())); if (startTimeBin < 0) @@ -773,10 +768,10 @@ Bool_t PRunAsymmetryRRF::SubtractEstimatedBkg() // calculate proper background range for (UInt_t i=0; i<2; i++) { if (beamPeriod != 0.0) { - Double_t timeBkg = (Double_t)(end[i]-start[i])*(fTimeResolution*fRRFPacking); // length of the background intervall in time + Double_t timeBkg = (Double_t)(end[i]-start[i])*fTimeResolution; // length of the background intervall in time UInt_t fullCycles = (UInt_t)(timeBkg/beamPeriod); // how many proton beam cylces can be placed within the proposed background intervall // correct the end of the background intervall such that the background is as close as possible to a multiple of the proton cylce - end[i] = start[i] + (UInt_t) ((fullCycles*beamPeriod)/(fTimeResolution*fRRFPacking)); + end[i] = start[i] + (UInt_t) ((fullCycles*beamPeriod)/fTimeResolution); cout << "PRunAsymmetryRRF::SubtractEstimatedBkg(): Background " << start[i] << ", " << end[i] << endl; if (end[i] == start[i]) end[i] = fRunInfo->GetBkgRange(2*i+1); @@ -872,8 +867,6 @@ Bool_t PRunAsymmetryRRF::PrepareFitData() Int_t lgb = fgb + lgb_offset; Int_t dt0 = (Int_t)fT0s[0]-(Int_t)fT0s[1]; - cout << "debug> fgb=" << fgb << ", lgb=" << lgb << endl; - PDoubleVector asym; PDoubleVector asymErr; Double_t asymVal, asymValErr; @@ -889,7 +882,7 @@ Bool_t PRunAsymmetryRRF::PrepareFitData() eff = fForwardErr[i]; ebb = fBackwardErr[i-dt0]; if ((asymVal != 0.0) && (ff+bb) > 0.0) - asymValErr = sqrt(2)/(ff+bb)*sqrt(bb*eff+ff*ebb); + asymValErr = 2.0/pow((ff+bb),2.0)*sqrt(bb*bb*eff*eff+ff*ff*ebb*ebb); else asymValErr = 1.0; asymErr.push_back(asymValErr); @@ -907,8 +900,6 @@ Bool_t PRunAsymmetryRRF::PrepareFitData() asym[i] *= 2.0*cos(wRRF*time+phaseRRF); } - cout << "debug> before packing: startTime=" << startTime << ", endTime=" << startTime+asym.size()*fTimeResolution << endl; - // 3rd: rrf packing PDoubleVector asymRRF; asymVal = 0.0; @@ -925,21 +916,12 @@ Bool_t PRunAsymmetryRRF::PrepareFitData() asymValErr = 0.0; for (UInt_t i=0; i after packing: startTime=" << startTime + fTimeResolution*((Double_t)(fRRFPacking-1)/2.0) << ", endTime=" << startTime + fTimeResolution*((Double_t)(fRRFPacking-1)/2.0)+asymRRF.size()*fTimeResolution*(Double_t)(fRRFPacking) << endl; - - ofstream fout("_data.dat", ofstream::out); - for (UInt_t i=0; iGetMsrPlotList()->at(0).fViewPacking > 0) { - packing = fMsrInfo->GetMsrPlotList()->at(0).fViewPacking; - } - // feed the parameter vector std::vector par; PMsrParamList *paramList = fMsrInfo->GetMsrParamList(); for (UInt_t i=0; isize(); i++) par.push_back((*paramList)[i].fValue); - // transform raw histo data. This is done the following way (for details see the manual): - // first rebin the data, than calculate the asymmetry - // first get start data, end data, and t0 Int_t start[2] = {fGoodBins[0], fGoodBins[2]}; Int_t end[2] = {fGoodBins[1], fGoodBins[3]}; @@ -1018,45 +995,32 @@ Bool_t PRunAsymmetryRRF::PrepareViewData(PRawRunData* runData, UInt_t histoNo[2] fgb[0] = start[0]; fgb[1] = start[1]; } + start[0] = fgb[0]; + start[1] = fgb[1]; - Int_t val = fgb[0]-packing*(fgb[0]/packing); - do { - if (fgb[1] - fgb[0] < 0) - val += packing; - } while (val + fgb[1] - fgb[0] < 0); - - start[0] = val; - start[1] = val + fgb[1] - fgb[0]; - - // make sure that there are equal number of rebinned bins in forward and backward - UInt_t noOfBins0 = (runData->GetDataBin(histoNo[0])->size()-start[0])/packing; - UInt_t noOfBins1 = (runData->GetDataBin(histoNo[1])->size()-start[1])/packing; + // make sure that there are equal number of bins in forward and backward + UInt_t noOfBins0 = runData->GetDataBin(histoNo[0])->size()-start[0]; + UInt_t noOfBins1 = runData->GetDataBin(histoNo[1])->size()-start[1]; if (noOfBins0 > noOfBins1) noOfBins0 = noOfBins1; - end[0] = start[0] + noOfBins0 * packing; - end[1] = start[1] + noOfBins0 * packing; + end[0] = start[0] + noOfBins0; + end[1] = start[1] + noOfBins0; // check if start, end, and t0 make any sense - // 1st check if start and end are in proper order for (UInt_t i=0; i<2; i++) { - if (end[i] < start[i]) { // need to swap them - Int_t keep = end[i]; - end[i] = start[i]; - start[i] = keep; - } - // 2nd check if start is within proper bounds + // 1st check if start is within proper bounds if ((start[i] < 0) || (start[i] > (Int_t)runData->GetDataBin(histoNo[i])->size())) { cerr << endl << ">> PRunAsymmetryRRF::PrepareViewData(): **ERROR** start data bin doesn't make any sense!"; cerr << endl; return false; } - // 3rd check if end is within proper bounds + // 2nd check if end is within proper bounds if ((end[i] < 0) || (end[i] > (Int_t)runData->GetDataBin(histoNo[i])->size())) { cerr << endl << ">> PRunAsymmetryRRF::PrepareViewData(): **ERROR** end data bin doesn't make any sense!"; cerr << endl; return false; } - // 4th check if t0 is within proper bounds + // 3rd check if t0 is within proper bounds if ((t0[i] < 0) || (t0[i] > (Int_t)runData->GetDataBin(histoNo[i])->size())) { cerr << endl << ">> PRunAsymmetryRRF::PrepareViewData(): **ERROR** t0 data bin doesn't make any sense!"; cerr << endl; @@ -1064,72 +1028,15 @@ Bool_t PRunAsymmetryRRF::PrepareViewData(PRawRunData* runData, UInt_t histoNo[2] } } - // everything looks fine, hence fill packed forward and backward histo - PRunData forwardPacked; - PRunData backwardPacked; - Double_t value = 0.0; - Double_t error = 0.0; - - // forward - for (Int_t i=start[0]; i 1 - if (((i-start[0]) % packing == 0) && (i != start[0])) { // fill data - // in order that after rebinning the fit does not need to be redone (important for plots) - // the value is normalize to per bin - value /= packing; - forwardPacked.AppendValue(value); - if (value == 0.0) - forwardPacked.AppendErrorValue(1.0); - else - forwardPacked.AppendErrorValue(TMath::Sqrt(error)/packing); - value = 0.0; - error = 0.0; - } - value += fForward[i]; - error += fForwardErr[i]*fForwardErr[i]; - } - } - - // backward - for (Int_t i=start[1]; i 1 - if (((i-start[1]) % packing == 0) && (i != start[1])) { // fill data - // in order that after rebinning the fit does not need to be redone (important for plots) - // the value is normalize to per bin - value /= packing; - backwardPacked.AppendValue(value); - if (value == 0.0) - backwardPacked.AppendErrorValue(1.0); - else - backwardPacked.AppendErrorValue(TMath::Sqrt(error)/packing); - value = 0.0; - error = 0.0; - } - value += fBackward[i]; - error += fBackwardErr[i]*fBackwardErr[i]; - } - } - - // check if packed forward and backward hist have the same size, otherwise take the minimum size - UInt_t noOfBins = forwardPacked.GetValue()->size(); - if (forwardPacked.GetValue()->size() != backwardPacked.GetValue()->size()) { - if (forwardPacked.GetValue()->size() > backwardPacked.GetValue()->size()) - noOfBins = backwardPacked.GetValue()->size(); + // check if forward and backward histo have the same size, otherwise take the minimum size + UInt_t noOfBins = fForward.size(); + if (noOfBins > fBackward.size()) { + noOfBins = fBackward.size(); } // form asymmetry including error propagation - Double_t asym; + Double_t asym, error; Double_t f, b, ef, eb, alpha = 1.0, beta = 1.0; - // set data time start, and step - // data start at data_start-t0 - fData.SetDataTimeStart(fTimeResolution*((Double_t)start[0]-t0[0]+(Double_t)(packing-1)/2.0)); - fData.SetDataTimeStep(fTimeResolution*(Double_t)packing); // get the proper alpha and beta switch (fAlphaBetaTag) { @@ -1153,24 +1060,67 @@ Bool_t PRunAsymmetryRRF::PrepareViewData(PRawRunData* runData, UInt_t histoNo[2] break; } - for (UInt_t i=0; isize(); i++) { + PDoubleVector asymVec, asymErr; + Int_t dtBin = start[1]-start[0]; + for (Int_t i=start[0]; iat(i); - b = backwardPacked.GetValue()->at(i); - ef = forwardPacked.GetError()->at(i); - eb = backwardPacked.GetError()->at(i); + f = fForward[i]; + b = fBackward[i+dtBin]; + ef = fForwardErr[i]; + eb = fBackwardErr[i+dtBin]; // check that there are indeed bins if (f+b != 0.0) asym = (alpha*f-b) / (alpha*beta*f+b); else asym = 0.0; - fData.AppendValue(asym); + asymVec.push_back(asym); // calculate the error if (f+b != 0.0) error = 2.0/((f+b)*(f+b))*TMath::Sqrt(b*b*ef*ef+eb*eb*f*f); else error = 1.0; - fData.AppendErrorValue(error); + asymErr.push_back(error); + } + + // RRF transform + // a_rrf = a * 2*cos(w_rrf*t + phi_rrf) + PMsrGlobalBlock *globalBlock = fMsrInfo->GetMsrGlobal(); + Double_t wRRF = globalBlock->GetRRFFreq("Mc"); + Double_t phaseRRF = globalBlock->GetRRFPhase()*TMath::TwoPi()/180.0; + Double_t startTime=fTimeResolution*((Double_t)start[0]-t0[0]); + Double_t time = 0.0; + for (UInt_t i=0; iGetDataBin(histoNo[0])->size(); Double_t factor = 1.0; if (fData.GetValue()->size() * 10 > runData->GetDataBin(histoNo[0])->size()) { @@ -1199,11 +1152,11 @@ Bool_t PRunAsymmetryRRF::PrepareViewData(PRawRunData* runData, UInt_t histoNo[2] fData.SetTheoryTimeStep(fTimeResolution*factor); for (UInt_t i=0; iFunc(time, par, fFuncValues); - if (fabs(value) > 10.0) { // dirty hack needs to be fixed!! - value = 0.0; + dval = fTheory->Func(time, par, fFuncValues); + if (fabs(dval) > 10.0) { // dirty hack needs to be fixed!! + dval = 0.0; } - fData.AppendTheoryValue(value); + fData.AppendTheoryValue(dval); } // clean up From 02c82321dee3b4f3a9232243462d4d02dd0f3d8c Mon Sep 17 00:00:00 2001 From: Suter Andreas Date: Mon, 18 Jan 2016 16:00:10 +0100 Subject: [PATCH 16/22] added RRF types to musrt0 --- src/musrt0.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/musrt0.cpp b/src/musrt0.cpp index d1a118c9..272ebe18 100644 --- a/src/musrt0.cpp +++ b/src/musrt0.cpp @@ -669,6 +669,7 @@ Int_t main(Int_t argc, Char_t *argv[]) } switch (fitType) { case MSR_FITTYPE_SINGLE_HISTO: + case MSR_FITTYPE_SINGLE_HISTO_RRF: case MSR_FITTYPE_MU_MINUS: if ((runList->at(i).GetRunNameSize() == 1) && (runList->at(i).GetForwardHistoNoSize() == 1)) { // no addruns / no grouping // feed necessary data @@ -796,6 +797,7 @@ Int_t main(Int_t argc, Char_t *argv[]) } break; case MSR_FITTYPE_ASYM: + case MSR_FITTYPE_ASYM_RRF: if ((runList->at(i).GetRunNameSize() == 1) && (runList->at(i).GetForwardHistoNoSize() == 1)) { // no addruns / no grouping // feed necessary data forward musrT0Data.InitData(); From c50a33243da8c89f05507a488009fe80f12e42e1 Mon Sep 17 00:00:00 2001 From: Suter Andreas Date: Mon, 18 Jan 2016 16:24:52 +0100 Subject: [PATCH 17/22] fixed a compiler warning --- src/classes/PPrepFourier.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/classes/PPrepFourier.cpp b/src/classes/PPrepFourier.cpp index fd713462..a28bc29f 100644 --- a/src/classes/PPrepFourier.cpp +++ b/src/classes/PPrepFourier.cpp @@ -181,7 +181,7 @@ void PPrepFourier::DoBkgCorrection() if ((fBkgRange[0] != -1) && (fBkgRange[1] != -1)) { // background range is given // make sure that the bkg range is ok for (UInt_t i=0; i= fRawData[i].rawData.size()) || (fBkgRange[1] >= fRawData[i].rawData.size())) { + if ((fBkgRange[0] >= (Int_t)fRawData[i].rawData.size()) || (fBkgRange[1] >= (Int_t)fRawData[i].rawData.size())) { cerr << endl << "PPrepFourier::DoBkgCorrection() **ERROR** bkg-range out of data-range!"; return; } From eb482b9671c9ecf1adce368280210791adc89978 Mon Sep 17 00:00:00 2001 From: Suter Andreas Date: Mon, 18 Jan 2016 16:25:34 +0100 Subject: [PATCH 18/22] improved handling of RRF freq in the msr-file --- src/classes/PMsrHandler.cpp | 10 +++++----- src/classes/PMusr.cpp | 10 ++++------ src/include/PMusr.h | 2 ++ 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/classes/PMsrHandler.cpp b/src/classes/PMsrHandler.cpp index 81b8095b..d6d4e049 100644 --- a/src/classes/PMsrHandler.cpp +++ b/src/classes/PMsrHandler.cpp @@ -353,7 +353,7 @@ Int_t PMsrHandler::WriteMsrLogFile(const Bool_t messages) { const UInt_t prec = 6; // default output precision for float/doubles UInt_t neededPrec = 0; - UInt_t neededWidth = 9; + UInt_t neededWidth = 9; Int_t tag, lineNo = 0, number; Int_t runNo = -1, addRunNo = 0; @@ -2942,7 +2942,7 @@ Bool_t PMsrHandler::HandleGlobalEntry(PMsrLines &lines) ostr = dynamic_cast(tokens->At(2)); str = ostr->GetString(); global.SetRRFFreq(dval, str.Data()); - if (global.GetRRFFreq(str.Data()) == 0.0) + if (global.GetRRFFreq(str.Data()) == RRF_FREQ_UNDEF) error = true; } } @@ -5890,7 +5890,7 @@ Bool_t PMsrHandler::CheckRRFSettings() Int_t fittype = fGlobal.GetFitType(); // first set of tests: if RRF parameters are set, check if RRF fit is chosen. - if (fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data()) != 0.0) { + if (fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data()) != RRF_FREQ_UNDEF) { if (fittype != -1) { // check if GLOBAL fittype is set if ((fittype != MSR_FITTYPE_SINGLE_HISTO_RRF) && (fittype != MSR_FITTYPE_ASYM_RRF)) { @@ -5935,7 +5935,7 @@ Bool_t PMsrHandler::CheckRRFSettings() fittype = fGlobal.GetFitType(); if ((fittype == MSR_FITTYPE_SINGLE_HISTO_RRF) || (fittype == MSR_FITTYPE_ASYM_RRF)) { // make sure RRF freq and RRF packing are set - if (fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data()) == 0.0) { + if (fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data()) == RRF_FREQ_UNDEF) { cerr << endl << ">> PMsrHandler::CheckRRFSettings: **ERROR** RRF fit chosen, but"; cerr << endl << ">> no RRF frequency found in the GLOBAL section! Fix it."; return false; @@ -5959,7 +5959,7 @@ Bool_t PMsrHandler::CheckRRFSettings() cerr << endl << ">> This is currently not supported."; return false; } - if (fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data()) == 0.0) { + if (fGlobal.GetRRFFreq(fGlobal.GetRRFUnit().Data()) == RRF_FREQ_UNDEF) { cerr << endl << ">> PMsrHandler::CheckRRFSettings: **ERROR** RRF fit chosen, but"; cerr << endl << ">> no RRF frequency found in the GLOBAL section! Fix it."; return false; diff --git a/src/classes/PMusr.cpp b/src/classes/PMusr.cpp index 8cde496b..a84f4765 100644 --- a/src/classes/PMusr.cpp +++ b/src/classes/PMusr.cpp @@ -710,7 +710,7 @@ void PRawRunData::SetTempError(const UInt_t idx, const Double_t errTemp) PMsrGlobalBlock::PMsrGlobalBlock() { fGlobalPresent = false; - fRRFFreq = 0.0; // rotating reference frequency in units given by fRRFUnitTag. Only needed for fittype 1 + fRRFFreq = RRF_FREQ_UNDEF; // rotating reference frequency in units given by fRRFUnitTag. Only needed for fittype 1 fRRFUnitTag = RRF_UNIT_UNDEF; // RRF unit tag. Default: undefined fRRFPhase = 0.0; fRRFPacking = -1; // undefined RRF packing/rebinning @@ -730,7 +730,7 @@ PMsrGlobalBlock::PMsrGlobalBlock() // GetRRFFreq (public) //-------------------------------------------------------------------------- /** - *

get RRF frequency value in specific units. If units is unknown, 0.0 will be returned. + *

get RRF frequency value in specific units. If units is unknown, RRF_UNDEF_FREQ will be returned. * * \param unit unit string in which the units shall be given */ @@ -747,10 +747,8 @@ Double_t PMsrGlobalBlock::GetRRFFreq(const char *unit) unitTag = RRF_UNIT_Mcs; else if (!unitStr.CompareTo("T", TString::kIgnoreCase)) unitTag = RRF_UNIT_T; - else { - cerr << endl << ">> PMsrGlobalBlock::GetRRFFreq: **ERROR** found undefined RRF unit '" << unit << "'!" << endl; - return freq; - } + else + return RRF_FREQ_UNDEF; // calc the conversion factor if (unitTag == fRRFUnitTag) diff --git a/src/include/PMusr.h b/src/include/PMusr.h index 46078aa6..96df487f 100644 --- a/src/include/PMusr.h +++ b/src/include/PMusr.h @@ -146,6 +146,8 @@ typedef struct { char a[7]; } __float128; // needed since cint doesn't know it #define RRF_UNIT_G 3 #define RRF_UNIT_T 4 +#define RRF_FREQ_UNDEF 1.0e10 + //------------------------------------------------------------- /** *

typedef to make to code more readable. Definition of a bool vector. From 7862c93c68677055958f1189b42947436c31cbdb Mon Sep 17 00:00:00 2001 From: Suter Andreas Date: Fri, 22 Jan 2016 15:14:10 +0100 Subject: [PATCH 19/22] added first RRF memo version --- doc/memos/rrf/08011-Fourier-Averaged.pdf | Bin 0 -> 48937 bytes .../08011-RRF-Asym-Fourier-Averaged-Ghost.pdf | Bin 0 -> 167302 bytes ...08011-RRF-Histo-Fourier-Averaged-Ghost.pdf | Bin 0 -> 189747 bytes doc/memos/rrf/08019-Fourier-Averaged.pdf | Bin 0 -> 48934 bytes doc/memos/rrf/HAL-9500-t0.pdf | Bin 0 -> 14611 bytes doc/memos/rrf/PSI_Logo_narrow_blau.jpg | Bin 0 -> 109723 bytes doc/memos/rrf/PSI_Logo_wide_blau.pdf | Bin 0 -> 69006 bytes doc/memos/rrf/rrf-notes.pdf | Bin 0 -> 628309 bytes doc/memos/rrf/rrf-notes.tex | 265 ++++++++++++++++++ doc/memos/rrf/rrf.bib | 29 ++ 10 files changed, 294 insertions(+) create mode 100644 doc/memos/rrf/08011-Fourier-Averaged.pdf create mode 100644 doc/memos/rrf/08011-RRF-Asym-Fourier-Averaged-Ghost.pdf create mode 100644 doc/memos/rrf/08011-RRF-Histo-Fourier-Averaged-Ghost.pdf create mode 100644 doc/memos/rrf/08019-Fourier-Averaged.pdf create mode 100644 doc/memos/rrf/HAL-9500-t0.pdf create mode 100644 doc/memos/rrf/PSI_Logo_narrow_blau.jpg create mode 100644 doc/memos/rrf/PSI_Logo_wide_blau.pdf create mode 100644 doc/memos/rrf/rrf-notes.pdf create mode 100644 doc/memos/rrf/rrf-notes.tex create mode 100644 doc/memos/rrf/rrf.bib diff --git a/doc/memos/rrf/08011-Fourier-Averaged.pdf b/doc/memos/rrf/08011-Fourier-Averaged.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c95586d546e706d09de4a87083e770fde9b0c609 GIT binary patch literal 48937 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 literal 0 HcmV?d00001 diff --git a/doc/memos/rrf/08011-RRF-Asym-Fourier-Averaged-Ghost.pdf b/doc/memos/rrf/08011-RRF-Asym-Fourier-Averaged-Ghost.pdf new file mode 100644 index 0000000000000000000000000000000000000000..85876e84256a8484191b95abefe893769e29d447 GIT binary patch literal 167302 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

UM6z)<5}=-Sjsv6 z)YR?!7^bQM+Hmv(>t=K3k7HLK4W%hiOS*J3#WFt6Iy7m}pThJ}-o4tF=|QKwXABx% zze!XrAur|mZs~fibo5P#PKBZR=^O8Bh4}DAqANidT`|?t|BXaHikKADTj|muEIb%x^CJMgSk+)Z^I2r8^T+-HV-Z;ffr}wTZwM1 zUF0JzaJZI-WtAWJlQrJ&Ot+@jOB<}R+KE~D!FJ)Z3y-9eGx)our^fB-Gq6_V#9A0COqHMWkBv#e$%v)$2ye z7jQz~5Wg+PZXn~CM{6eZ8>TO7AwJDtPJfpBr4cv+m{?I)LAPqF=girV1lCJHE2q*! zX$EWj279BsNpIABz#J>fAr!hDX)=|Cn|(=xOv~u5(bF(pZr5kJCuigxt2&k?B`pL( z7oy`MEFTVchdNILS%MNMpNGYZL6feJ<1>do4GF4HSD*p;SQ%K8v`#4P&WCa!kmhUDFtqG+E8j5e=>q>wMREjXMmpb5ZK>)Bt&-V0+lo# z)0?1*RB>e>(7WWq;iowkQbA%+b%qiI1bXW}%%RHECzU);oUGJS(K_K~PL+~2>*-eV2(711oy^YQpFLi+U)a@G=?%FE zU~LeWjMxe;=@-PX$4j8p0FNb=NrU}Ir!|6#FXD#)vGGYhIZNXub}!|0JaO?5lVJMA zf+8N>Rgin5OUCV5o(=BgsXT)|MTKsXatF@0MVP@JWtL5E>+Vt)3ls&|6l*mbu0rL@2vW%FO`P#@OwrN% z)n`GMMA%cEwfuTBETZzs?72%&P3mgpi-!FX|ok8eGJwqoN_gM zHMpbcQC6S)BHDWd$pF5=RwU1OJPoLi)8}kqx%xaBEFx;sZ`NswacV(clrbwm!>~@ zZT1o!Rd7rOQOfz%AqW)k)g^BqY?6z+ZuyhJTYUDY?irx^bkKl*>)ux)`ArdrS zs*fC=uK1`7Ar`Fc4Tw~JJT^liBU`Yvlx|}OcPBC3V;%7Ja^Q4 zcjMC6cHay>x~?zU_EryawM7VUy8)Ts$kR%?o~r z9LofmEV^)-XgrXbSc_j&@)@Ak1KpVL=b~dS2zqeY0Bs?xVlZrd(@1iWn5|laM-2%_EN=(^S2CqL$tKFq| zY71oW79-UBZ2*^viE*y+T)^{*kd2v&f=>bqxIrFGqU-k;d(}ys-=EcT4F@LH2vl%e zvRY`Hzm4m-ywY4MIK5y7RPdObrabKQY5mI-I@V`jl$FkkDZC9TDiMDbVtH({yPw1_ zk2A;AUi{7HPm!lCoxc2Tnfe3X>2G5eTvIh8_#F()r2b3&`+CB z#gE_(@n1+f;ZMeQuZ)<%hWN2X#a;W_D7FT2<`L>7U;P&6R;II81`HWKsZo_*NSjv= zvJ?ot>sjjZi_uCqslnG)&lA1HhwP5_M!4+q%<62Anvb(Tg-_OV-lBmE%@`y8Yd!2h z#KpZ->UK0`6;u^AQo+3`4ossEit;l4R52M>Y94iG5ip5`ZWx@n$YoG-yvWCgjH}w} zrj6YdmgUVpA5yL5Oi{dR*})oyx&qqGtgYan8Jbf-5N4fc^3<=Ma$PeiYpRvH{N!s| z$5>v?4y}&{7jQo6Z7oksRH~6S`*Rl)bJe9!wO1HRGy$`O9oLQ4_D?WOPQ zCmmfGOBUBsBV0TE0%>jw+t^J9S#nhqUi}=6^B`VY^pjd)NcJn2GA>{aC2pxFkN#|J zW%O0hOWM>^U@>|Cr)-rAlN6`!)5)V1K80cI$XGp=^d$ z5FfPD6{j9bAf*__rpyV9!Z2MwTOuFV$7kHmRtDEK{mG`IPI&Vua~iJHpP{>0CkEW2 zct=tdXCo6i^~_PGY5D4>q>A)w)K3V3xk6Lu(Ql9QG;)}gsvqY0x#+DwoV1}`b%7}iFA5^_O|LBLPoK#i= zn4x&A?q&I)$rU(o4|MWr?;W4ew-a;gt_T}k7uO(f~WLMIl z8P`O-MI;YL?McyOUipW3c)+YB`7;Le79B;0ve58>en9WYOpi0ESLGxCKbKF}RG4Sn z><#AbjNp9%Jxz6XLxsK1Dj%qdOf>qQyNVx|7anQ2F3>A{l2>O90dr=tK&)#Z2QCLh zZV@@FPM0_dq+NP(4!%6sSJ_{G8_<$hQ!zWwpaOog6jR~)u=uzhSS*Jj-tgupK{A8p zLs8DTxuJ5-#&A&Kl=59eO#QG^_!^^l=pcR|42>j|ycw|PVR5h=NGMM61 zOog$XyJDp@9og+zcbR5~dP-9Y4&KOB%i7GvK%Ebp&rJq$ySu{TzWqqD>_Wry8k=eg z%(@fuam0x1lYHUT0$VZK7evpq4cJV`J|&sN6c$XVzXv~OX&@`MO-;O|csu21r7$a* z^5>z%tS7{w&se%Ozf#15OmG&GdQRK}e9N@T>kFlAQhL-XiBXK0+NI%9t^TTRzP#a{ zz1J@~$T^0eIrSlIZ*7AZ{3^88p6FBXc#7WtS^pw&3 z@5p^8B5vd?*%)CDI@dww*OiT3ub-9VORNKuTo3NBy6VuV^s8B4jzc~&EzKT1#R`p# zv_(HK&en_uExyNrCW|R(g}l}TQ&)l4O1z-Q!2#`iERPQN`Fc{y9)Sx)z6R*JtY-;9 zOMMk+#y`p{4GD6o?P$WNk+ybM$zmb@r zg2)72_Z1h0tRiK_Wv}-Fz`JIGF>yo35HI5I*Lcu4q*JM|MwB^6wHNKW=L~45kHm`C zrlkgk5I<$};q58KtB-mS1Ulz~U8sZ}e)ndV=$qc_br>4ba#s~8YFUq3;*V#c8P;ON zWPI1ckY#0Lzx%z$*rO;IJzBFddzy&ur3c3~g4;o{+1E6)1iRQDD^inj9QisLhh?-R zgeH_gZNe*WR~g6<6>D{kr)OrIBl1?25%dnvkq{a~IfIHOA0ks*%p%a^M2HtQ0Y`@X zHJ7-uCOunhrO5YB9J*LFjN%u5n2v8U#62+b950DGr7Y7zeJ2DJ%t{By@+$5s@M`MS3w!wAbc*9V=nZ%16Ho4dLy}7R;L@r+be^CzM|gj zz`jssv;zL>Anx9+dUgqPB5PaBpU~`E$+jssHlH z%6UcKKYf!OzapI^gszfPRsGRVQ|?oNo&?gwDGcCMay*wJpq`_`;OJgaM>!pOBQ+kf z99c}IPNnB|YB_lUoao zsN;L@sj0^a1Px_!TsPgMf5M$e4Tws$N?uhRjPooHCpUVFKjqsN+UUt7HGJ`3qR_y2 ze6v^Rxc9KsQ$$-j&Utc6vfFt7ZIe(n5!DUONaNme&p)iR*n^l6&mP==+7YsfYm~=K+ z8UIpM814+dli;UVikj+6Pc+r#g!nv0USho`Bn*B#r>TjC zn+c!_HcS+wuTRYDhm{2`GUGPQ`f+lMPIeH1@vSj4Z&*5m6RAfwa zFO0s`m2iUpYND%5B1O;5YeY7-7$S@AMi{4UC@8Zkh0tX}%<`@{#J|K?WoZ2+WJjAw z;EQ9Yhw-BPgzw^Qk8(FvRgv4RSSBI&H&MT2P=P?WLdh#9`3C{%kPkGKP{fxd}Kn?!G z70mB$I8Yyvq&h~EC0Wz*8tWQGmv-3=cDZk2P(X(FkG-<10!F9uHeYotqou0)pgH9Y zX!%T=tRtf^$kpVIP73F8D@cW=XD||ELfest|syxvt4@T{=^|`QS&-C71GmfFGMHsoKo%QopUw zzTCvEeX`kO(XjaL!dK7nGUA!dI+F5=Oy=iz#1@98H?N#x{q=-bcVmlUjsNHI292U) zzm{#JzHWK8pP7E1*`4_z^;UV{yAQV?pS|)dOj+87ul;@ZsSXTzjEDGq4|P6RdKTk| z8J7fXsk-JULS&5aKXSTlepc{j691T!h9)L4tUqXw$MbXOMv?Tj8iLCZb)ye@-UCVF z<@KKoifX6c`dpLzp!~qOuK(-F57%Ai`soDyPBDvreq=M!7wgCT_4$yu)b#M@)`}e3|m*g~a!*(|tqcEn_ z@9tKKf-fQYC$IPUlUGDURm7%uef(fYKSuhlW5RI&Lw|(5hS^W$Kg zb3e@F#P>|S?2P2?HLvx%^D(~2_ce#8)+JWaW8MLDYD0wYpZPNQ z?FTv`|8dqF&Sh1F7gK>h{Ls(Sk-yoP`RGD2cc3-K8tFbKG|Uqe7b$a;mKAmG}*F9Z@o)+;0o z090AR%PE!e9_^A?^!9K)|*A8VV9d)+;Oo z0AuI>BcAYo*^!V)0hLfjVtgMe%MH3TGrtXBjI z05V0l;^# zgR7B_m4_YhOYq-@-_WwNb+S@$^97v-z6A7NR7?O027>`S3xmZ$=J3xb0+j>b@&v&< z4!?E6!_C`$PlFKE!0*D!f&T>cfyzCsTs_@kRoeI=Zz}@#mF#?+Z0z(-D8O!R_fXHy z)6Lt%#?BLj=+&P7z+}9?Kik5BHwF3VL^1d~RL@O>x5nGr3oZ&3H;;4hPb&Nmz5YM! zA}})WCj4ik1{M&3n>E<~5kdm~MO-_NffORb^VgFFV3|qApz{JMH))(@WVZ+44 zRAj@Z#3T&MF$fbDKr7S2i~Q5}!ZG$gN>)_l|8J7r?=BFs-R~SkML@u{t$@GDoY$a- zRF&_T8viqWRRNT* zTGL$;Nfe_1vlaVCLCebXEL`Y-vdFu*J6gftoB)Z!&COn2hbis;@9uyK@dL1*0*S)S z5&QcyEa7>6X2ID)LW5kggmya{OGitr)^<5ZYfFMwdz@(;8XS8cmQ!YBEM`GwXbU%K z5>N~@On@+<0tQJ!V#i#=nuZWHT(&#ox5vC56zOb3_Ydy?0lb44+?Bz85`o|Ck%gi9 zw}BPgbqCuK5_}vH=s=iBgl~Y47Q!c(=zH0@10jkC6yE4l``;Qkxj4Bx?D-WPD<@a4 zJ@2)wygZy>P6t*s5LUteMf~!vBY^p@{ccelB#LmL$B%FKYI`_Ag1$hBk{bc&PqD+h zw=H%E1Sxj0yhj6hSx4DCG{wOJeKrk8hH<>nz#>uHC!6tY|M4L1$jH`(Qu3#>w$flWcRVoF(G?DRIBVsOzOtZ{KY$(wp!SyD#BI zsCICZt>(H4^YVLPevYA%MImLRmxh6RCyIx+>VFyBP#C!3#`zC$@3o}JG2JzN|88&t zfP`Zb7W4f9ZlL47vkqd@Z>Q!Tb*s^QJ}duZNu3_A}97vC}J z$arOsQT;cWYB6yTa3KPyKhb=UsfKs&4^u4;Gi?a5?+Ri!7ddpMS{&hT|EFMN2hFZ| z4%YV81qY(pHqLP`qN!#nJpM$qIMUw%hC*Bj=>_3U`Fn^)VV1;qeeS>8J_9I(0}-Wt z21-!dXL$GiL^RTB!$O>GMMqUIE=@juDg}?4)jqEn zuOI>{g;$SUh!Th?h$$8nsvemsKEkL$qco&&MuBIfb%f!0C#r)t0F`gZrvmERlOAoZr z*843q#Y+l@KM@TV*tV(IW1)931_#yuMtb-kB53#o_wOUQGtc-h4>|xC!jXv5L<1$L zAuWLnFZM$kna}LeZHb+%_A96?}s!^JH-_gkVeinz>M@x z&;f7C-!szib(-HHeOR(W31J|cJ}8a`N)CWDGQQXkX{7Dm3u%O<13q^MA^l%wg|@cE z4o;3m2SVCD4lj6j4o@nN5(fpMk>(hNXeg{4hAatWF!GNk_EAnh|1pR6pNurpV(l47 z2>7t1h7#f+;5r~R1WHgt8qq(Pu=ima0!Ar|L!2E#!2e}>Xba48I60M~<)I9wUlAn` z?F*-+vnh%G#5DwrGCxE#<}cc6WGnU|`>>>lFfbwji82C#6&(a_WV8VT_l{YCfRT25 zpEwS2q6h*1mzkoAWsZZT{lQ^~eVohwKtxiX5)Bo+kroBk@xd>jszOao`82|{~+-8{Y7(*$~_~t_8khm1N#%VHz=aS z`$5?y1l~myct=|Ked>RR6HEwVYvw+@quMsIvr^+y>fqvJSpaMsad36E&iha6jvdwH zC|1!S@J*lFqTOA1L^R|t0vj1E?Hx(P9@IktY+xhp_D))qz&{zV8eIWBBZ}- z$PwFZ52+zX>>>W=z;*;SL)lvvSvuO50u$W@e*)VPqxI(Q+=&PqMFtA94HwzAcz34* zA@IihMR21sQ-}@IhXLFG7$Mu+zEOc2C^{fYfp-xFxKTMV#NP133hw_h$FwbQu(h(! zvvhPVcCdCuv0KE^I?jG~#|U``g#s#YBW)%u1mBtKhQN2<|3z@`M*MqB)uG8Sf%6HF z?K27}!F^zc2|vK_C%EC~7ZB3l6$j!V!(j#Yf0$5z3-v)-WqH;_$kAOAuL?gO()_}MTN;6@du zA$R&XOG?*I7`{C3do;*#ay;#|68yLWc6!ocn5vz)Cb#aF4->SIHeup5GQ`Vzp9Atv7hqS4 zrHeBVqZe=6`NFeVmcXeq;HViMhRW{L3Ue+62`X&w%|3T0#NlV5|01+e1*C|x)`tSx zK=!$PVjLy356nK{UHlW;@YCc7>F-8#h-2l4725wO`_z!p5TevqghAW75ZH3%oNei1 zpXK1V6QJ+Ic6cNXXSmuf!iz*G-=IJ^TyEPk78l<&AIRY5e{qTPKN)Z2%F|xsjbH~j z3qf&ST5yBxwID*|_Uld~)(*#5@MB$(PqUz=9?tkhc z$iEsy>!#p3ZY5crh`aWqDPL0_gLyOYmv)An;2-^c6iT{nDMhG~02|-X>zxA@gfzT94)jCzbDLknKK&R+PDy_wA){Pfohi;NoG zim6|6*nk*Qbb>Lx%{$sB(&53akjR1Lw?~D&XwxgIylV|oP8U+#PE{}SIFS zE}^8)dSu*no_)o<*z;Am*(1YK5Uz13|MK z(Z~vwUyw!OHx1HQMl4z}mQ-=P{PZKQzv6bkC7{^o_qXz zn-95y)mEzW9yG6|qMwuDD5#i^>Pd*5>3qnNRHO%{AWo3~>Pxs`i4PI|v07ukhNb!9 zO2(`UZkuXi|HoIw}MJ3kYI!>g&6D;FjauS8FT)oQtYNNyQ$(H z#+`rnSyBkVuLJu#D0~8n4pItazxTU}9nO}$o^zYxJjy6N;M z9fpJ=#nfL{O`Y_)gB9=8^~nVFOg|WPXEQSr7go(U=J+o3GHJp&MZ>i;wrX6Wd-^9j z2JIhFP4k51)h0hxc!%#MhtmYQZFS*1bZFRQtI4E%0ZY@u-!pZ-WbpD9;pMx_^oz_VHGlN%{)_GQtZA}f9;KJB!ygg*xN^{2#f|D;-wG|L9mS)6&@9n+7w{Ej z8j1y1Q(okiHQNgRz@XqG?I}Fo{GUBdeX72%q;a**x7_#+qH2*;= z*71Oi6%IkreLulLs^%%o6Jet%wW6hM8B&oqb*w*6feN)9?FS?kRMN+8N8Dp4z$qHF ze#EHKVjJ=1cs2D?77|%2@Qtp>ZHhIt?@EHJ*AqeI%l!^fq9iSLHq(r|d21;=p=A;`zC$vv7 zWMX$0xEpKPha3s>ahtA*Ws7~u@*3&{6vOhD7RS<;tC!gQ62P+$Jg!h$eDLC)On)Z6 zac=2(t}=V|XnNtt<*a~D;U`UM_`K9|-af9tNe>G2QK-elFaTMDKYNI^#l5cL#Q((v zIrBWyAngH{dRvgasY|ghUaIK@IT;$sKHMMo`BAwHiM@HZ@b1Jpyd!^8Gm!1rXCvX0 zo`+#N3Lq~7=(-P_q6LZ$(hOwS^qXcNJ;@$%0G#(b9`q2pj6d^kEkHAXDO#n^n^E88 z>eQ;=(E!hN1-5>;ja%h=X&-(43paH(3hQVKJLNQbsN_rPJ7MmZo3aBRYPzo5R623# zQb&=#QEu|MT9opZ40;pimQor=Zw^^oSx9;_Z}ZEuObVG&Ek_ht8?xdgbPWwx9;5|! zstf8AA7}n~j&Soy+@=0NpV1!?%!FxU#B)YquRr|;LgFwjfQ^pu?qn^TV(D*c2NEUw z;IPX9`7fW9l7KyL2Oj>R_8SLf;7~YQ6H@*=#tFJZr?gKThd2X=!il!@_W2F(Zn)pT z8NHanD%c~?Xv zA#fWoAS1wxG6{zjp>`WkIMWjf#XxB%4sj9=g_CscR}7h02?9(Ak@7{@#;6moN^vGw z<2cRb%vB*xUkr|M*2uPc&|qB`Tn)XCnceT%;>z*f!d)j>rmyEE5Ko0*X>e2eQM|_W zYFmqq(jfD03D_thy74#l0%iOFH^GNOFMtQAf#Ja)Du)3p zI!G^&{oWT&L3bFO_L_-3+)0NnoPr{#l=e9ck!P^YQDj&>0Z**2fNF-j87T0MVWrN6 zF0?9ynb~E3{WW@*4Cg4O5Ho1?l9<`i&><3skR$q9hQC_oc|@ScJdWvls9bD;DiDN5 zi;ljTd7b~I&yNXDJDJ2$T+%qzP2>5H(Q%_kcfES#?~vU6OlpCJ|9xX+3O6+17gJrByR2pD zQbcFMr?p3?+gKA>NvR$E8;BOXZ^U`^3i9Gv@9sQ7rzVvbl1-&)kx^x2&k zU_;*~d`Rz6EmZJFrm`^cLw4v8p?et1;5PXGdeiuxlXpA2o}k;LOF+~91+ z&N!_Rey(oFtp^0DRahU}ld3cQfO*(WZ|SV-x&qc8-|*gpcDDk1WY4tSI`#^MV(bu1 zzy@Y_78VL;llq%}0mXVYbepv4FenD_6xr>^*P=LP1S>i~F?Oh+_A3UeBeT#wlud_E zF%S$+`+_4B%yPi<2sLapDB%a`Y>ONmEpsd#0k&sHN95xOOV4JZ+1@$-mhRMGnC04Ig=upMT5rhjGYHXV^B zSv)Q`v$-gKF7z9^F%b8wDgSDj;o*QDTTaWp5xpK>bd?H^{%%XdtM_@!eSYb9q{$}> zr6i3KXp*1jM{V#+ynFQO&C%+{Zp$#{Bke4usB~a&@(bOK`}dq)`#XUTQWy7)`k_gF z0eU#-_T$4**>|AmASFOXIQx}ghh1u~IQH;59X|Vxpn2M_1i!`o`58eI;R?50!-mvx znY=u7J}?Vo!{UBBOob;0i^M$f2D30g4WQ{|=+nZ}3Mcjzhf23`Gz@?T3FX+y^LKxEvPH7|Sko5(}|2 z>ESDud~x{Bqz7hEquCQDua3w$dd|a~0PacZ1X2cJl8GlLbYD`%hxn&czM<9Z22RGA zFusRAWKB`PC5>ZYm?lvRZ<}oK&^vOk?9|{54&P&GPTx|#`lE9`S;w8dck9|<&03UU zLTqbIGxg)nh+{*jG-Gc@yt~MZ=*ZuUj*#uxry1~h#={UD0ZeL81OXjt%{VY4-XWv< zO*4@GVy`&%kVYLs$M9!H{0{?v7vMSMF8?|3ze^sB0^2*2jDT$S1paU~tG@|tRFUpB zX%x`1fBR$)Ks^UV(9fZU_JKL=&Lr17~pFTP=5Ny$D&Lsc!t z&z1)ws+NDqd9{pK`{RS$WH}#Oalf)08ML)QgC953-uGtxaHW-GG%5D$ZS2QUjoaMYpH0ifuBz-Nbt>Ng!gX%Y@|@{6F4+OGpZ z+#d?wp6_?mdgaf+%>*2N&Q2Ad2|6j3_E^>tG2KrZ>hmHZrHlmG9h`x6|-VVka7N{&545gF}cwc0b?5AVlcRE$0K?XH7uGf}}}fq(fj zFaTsIg4PbDVgN-4xP={(s^1g?RX)7SJ9P*{BLub7KE*JMtpkp)ktu)MjM@xxnXXj9 zX{HH|Ne8E!V6me&Dg3zN?x2VPb$|5!Vw4}I)q97g09Lcd?jCdrw@qDJZr(Goe&%>X z6L*z%)$))Y@=h4h-)iOwPY) z1JZl!brXk~N(_pMN(`7C0uFP^eZ8a{kTt+gdlq1b2^DZv5Irv*M}vjC_Nz%lLu2$y z$MZN+vaL(B^SoorA=jG7tfSNhD(ch;G^28{>==4SdS05(qZB$;|l!sZ)v`V-j|*y(3F42xE|W2SV^miBesFLn!?3|LLc_ii0$s}{o6ER zJ6>uZ01nI6YAC=H2Kzf`m&AcIVo=mHVo+2xV$j1(BL+o5BWAw;NX~*Np$+Uv4vW|q zFcTx56pTl#Zyih^duEyI$`*#g#n0Gt@$Q?Ay4l{xx9CLKJmY4PF?^atDkBSdUwcmR z!j7xGyGHctni#&?p!z%iN-{=~X&)7{=<}np!}r*~7C2aXBs|X6mz2kyyI?mL|B2S2 ziOQow^P9xT%ky@> zZq!T52QrI6;a&XGali?g5aQpBDn$=-b`59c`hBbQE(c`#zBeo%67JA z{in|J7=Rd~_X?;1;1+9`ctp0yEY7R+@!rd9Y8l+l*khK_u@oGyxuS`2kG122pGEWZ^02cy2lE-Qp+E>4IVgLS z;%`%n!Q*pSJNAZDhlW}V3V;~)cTh-mAhj42HMJNN&d2nJIADhAkRJbsqM#O&iS34^ z7@=?)?}wYGPSZTw-gv5*U(H4O<}0pP32#tm+@|F+hC=4$mH^K8BksaI?>_CYsMANmsqI5*K8I#%P;aYw=U!wo7XQk&*{vI!b;*F=7}`r zpD|YZVn2+#C8*2DBt>sFih0YJ&lE-cB!+Ye@WgwEnHA9q#IXF8Z5i+>mOo%{XcBJ# z#Rw#$j-P%fXOx+xLkUl( zCdM_=U|cefAn`dqyyJymaqH5VE<@6v6nraDKaP>}^do-;?)U<)^m>J6QqA%m_xC9U z@13I}6V){;pIlw>8OM*WbQ^0*zoYCy43$lEd3emH!WQ-xwv>lB`>HbyauS=(25h*|u$)UAAr8wrv|-w(WY==iD3|?*Ex-{V&@_{3EpUul>z`3_cm%rzQM8|80NsZ*$*&k55MTclcy#{;69cLBYKIXXNy2psM%P`wDW56e11fVz14<^;IStB(#{a@)vvKf3$ z&c_#GoFU^aoHft$MRe6Vx(2u9gH{6P*TBCN3FiLJ9{$x;r~e2365am~XtMv!9{y>5 z|8z?JW01*y>+hdB{P#W0zeOga`+HT|Ba8rUv8?5 zwWi&84GgA7d-ae4-a#N3-h_^w@;tk?GH`4q{X|#F$It%wq8z(_e;r%J!J&l2I7TMA z?(T8?P?CF%gy3)chrbl@kD=GU*u!5#vj2x(`u}DRe;4Ct`HykZKlS%d9sW1=@Nb>; zKUn;qBd@=MBcuCIh9jf<8#pq9NZv1eybwPg?4Ts20iR$nd%wSmZ#(VqwR>$-aK)k~ zR%YjWFyaZq&%R`hPT0GrnD#J|0;!>M7W-jWl}gwbiR%mR^Mi(>e33nZkTG?@1=G{I zN0@x9_Jg?{PtaJ3X4O09h16pt$%j(xx%kN&`62P(Xr^_VN<05I9m9XaAEWyRj?AAG z|MS=Me=|_}T=@E5zW+ahl>a&e`i}t?qx)3J-{-#@0{vTHF}lA87Nh$Y^s0aMfPdmM z{UPUnH~HhweN$+08E9yk{#!nIUeUunZa$vt!DEB{7kzT_7>I5MBrqfafg~3$$aqke zdmTlTayL384L`pL&{zNPBWVpEK=Z03nW%v{{LrWwVN!yhr?NT1w5I+`j;$J{Af&Cd zg3MX$0jU`xRc{tvFINZe_Z@Z@FBx_hoCmB29uppcAYWCCzkACjR%)tB_`eMX!OWLY zs=Y7e7T-$CejQEc=TlJRZgQ1)*DDPYr>UfxU^|U06NhepLfYtn^@kkrZ z+R|xFNN#=>@S?IYdA$^0ildQvMOD&tBvs#TNL>U#8S>d~$P3p}FD zTJL%ma;&>!B=fU&>0NZDNY?*Ov^jAa{V3t5#778>7Gx}p3EQ5%=4pF;8j2hB{r*79 zjCu!yl4`!BFQYJOTUn3bU}9z^qkc?QO17A7>1iPW8B|`3IJ|_gFxPTWsGV zU$&NSzFu)_h+f0M()If`0b`;RBj(gHCl}N#ub;q^ z$qVdL%O|#xWFwsFTSz(TO*0x#J2Qi*ZLd)WEgHK|JGa^|2vQ97j`rdo%Pq53#%@+? zm5iNp?xq*v<6x8F`$*kV!FFwihcO+Jm4xKsIjr8wKLS(P%+Jm(a>vh;K&{=3A`CNS z5~t%>UTlGn2(Rkp%^=Wz6hyJ=L#mir;JFQb4S{6+QK9N2=I+%NdPVb1N@kafmy8x@aoc-Bf?e5O2fD4Jr-Fk1WncU0$=5&7jSYp1EOU6jxtI@>w z0+@pW)5C8QbOTrRgf!!pvzQArar&_;^s1tAvN45fWy7Q`iN^xI=fw|9VdvIISRIaw z4PpABjD+37&+4Fl||Vj*XDY*B1l(PCN_4%!w_#&_3d1Oy9r5EhH@cP^Wp z$8^vqn_j+d4EMmu05-7|P%9qs5NgI$?%ZlU3229ZsU{3s&Fr^}#_|ye$1w{=_ z4Of<~?h;(h+RHc2BLuTdz(TvBFix#;!6f^3kO^>Qr060ihbe~DW6(y{lA1Yd32V9S z>{;V0zsmT)7Sae1Kvxb%aT%^X`smZfOkvWBAnu}ElMgJoyj++WE8nY&9E@tc?sw2f z%6C-X4qK3a0sGQ%8Q4f3c}N&YM>jG8R6C1_;K+2!m6G9ElBIp+(|qGWtCyN#ZYfc) z^(twI?@pDP>?Q|v^~EHln|${hu|z7R;zW%kQQ_*>y^T7__ov+C(Ic#+h2@h-uyX|3FF5o;moS&`)964oaH$(Yh2qe zm^YsBr$izhKPAj^E{^cO%84-3oaOLe9F4;!*@fSPV^qs53b>eS&doM!nRa5U1<nZ69+vw_qPGZv%Nwm2bMbUb9M(N?vE)y3R(f> zCd&)?&I|YVq3r!bjD^Q?{?x#}OU_LDZ7YCCSNT~hH1zH0fPgf6JAWPLj7ROQ124x8=)q7Kr&uA=i9LiX~PlSR|raHVVJ%VaBCr|7E zw5I)VDI3+_WCAmL2aV(zLJkiAo{DM`ONIy+cSkJ z<}d(RQMAQH$T_Wi2rQ=CZArN5BK9JAA7D#~5^7@g*<$Y3>dEgbd=W)4lD1xJo4ZLN z{X`5jGl%Bi9MBF9S=%xxQBPP*bI1^<$UIB(f7mD0d@T@cV8E=@scD;FcRInb9Sh$^ zJ7aUu0W*-z-xzE*gpx@*Oq#}ZF!rgDO}9v~a;&1P(v~?+4V|s2eHRsXK$lxJ_DuEo zVfr#P^(x@%qrOIju)0ZKf7Edc_t82GS6jP3p%u5{sJ9=Ms%WG*rmb;=?-?dqX81OS z)@vtIXfZR`xr}5{JgQV+X=5pp+0x&vYkCinTW{4i|2$Q1Bc@xRk&8G>Q$NZ2EBWT` zE%d=^cX=`8LT8#^YY`xFV4f^^=zSXHLI`w6astJA5L(LVgudbHzaJy07$t#Yy)?_>P^DoP#R3rn2XvLUt zvndhw+(Y|Hk!5n{{t9C}60M^WK9m?#P0jaG93PKRipO zPzH!~ZUrx`zP^_B%ojiI*sIGtE=7)V=3m>Qa<)|!A|`T;L?_}ul7Qooz4C4WbHDfd z{tCRBgzB{0$vnPXMR*MFd1-rnW3$(4Q*&J0+FozE)bwe~y3_>n%)hMYVTZCJxA(tV zc+!7L=y}qAor$!AvNE?FX8v~NiphpFLGsGCRoBB!_UhY1>c5C6NtPzfa?U5zF6Bs4 zhr^DyiWGrGnK&r9xg_{@IO%b1?4k`J1pGYd!IE=XOY?=itz@d;QqKPe?`xm;f-l!H zdS5rNrOQ+xuw`3MmR7KKXU{M4Q#t45@OCKfjh!g&d%Z|tZm1mp#5%vL7`_`gi`V`> zIE$q>-L^HXzR=dR>wf1`TirrXY7!2dhS3A09!G|&f&!Y1)vc&W1MNUy?x4-(GveJ^ zs8x*7y?cbE4jHT04k@ODT-q$JUx7x54HoGHjil!3ew3K|3G7psbqY+*mvu;~D%Gq( zt`qX@aH;B#?EZxr_QQpU8TMOlP#8#jP~O=W3-iMlWOMUd!MLWQZ8ZyloeE1?RU6)e z7S3Zn4p5PT(g@uv5DWa$<@?>Sw5M&fe$^}*S zWMufxT>-ZKR^)4iRnE}@R1wufH#zbw21mvex7yul%FR4F z9Y|ieG#9CotWsO4lI}lrs3yl0lIT}S5BhW+V>BilbrZ0h$k&ht#%K&l)`|^A*}o@w z0y&Kd@MQCE-LI})JHlC}B7e8C(^IY1kc5Wm&svHoh7y31BXZk~gCIg-+tY`Gf-b9> z3I-y-j*T`7{7@{tC0{cYu#8aHUy0W1&oi%0+vRUSQ}Gl}+l)oj#T9m=ve$(AScX~}RY5}pW`b#yf>F$y#~(F@M*tqJFNAMIBZG(MqgL=e!{6C| znm24)JX|(tN5banlFS)V7iq1nt9)}?Sz~sq?1wn~7tmHp$rU8?wiRUXQlEavTA$#= zWW+FRRG%pqStBs#ZdDSl@O0VH0Bava{#FP}S3&XDkEz2C^sbMkn0Ju4C6ScBbG`nW z?)n*npkrnE7vJljL5P3x5&oHv`8yxsUy+71q9sgwY2f`I*!n4E1*%S2Y=8!&XTnk5 zvMu3o#q@-v#rP6XIy?*{gtLJlxyIYJu83M2sLQ7TYv8O50s+A+;s%$gH1Tg)Ona|^ z;u5wbkK$vkDMGg`(}5++(I`sIhPd=>zIght*Vb@y(E=ofG9o5$)e+QZj4bqa4Jygl!LY|?kH?44 zYcFniQNgsTHV`SkyX_J7of3bqiZBb7%Wfo}=bdsccAsAtu{5;$ed})-${HA%e9i=L!6o7SoCjb)`kVfFP)phB8`zpy8sUgA~^?ZYjXpO-%S6((Pxc+Kk?t&;kUW`cFF%JQo>cE`4ltLCk8R|XZn}v zbFnqkCjuGcr_kv?qZ{;}xKfOtc^JCSY~P<{jJO&azg_6R0u=v>x%2M?@tgjqg#WDs z1T6Ke^nWu&{TEY|!hclo&qmbO`D~0&$=Q9@^-tl;{;34=RtlCTpN|@RlK)J-|FdrN ze*i20)k^=hcPjlK*t7q8hW@W`!6&@qpAGjX;ZqZsXqo?H3c@X6D!Rcm(r` z_=xpQtzZxv8|||7a*TGthSXNjTiHrcmxpH{S67pOxZ+N&_4P{*L>l$&gIgN2Xf)>7@xoG9SlSWNd8wVVu;|)C4e)@evBZ?>&*Q?+9@Hf%`bs0%&oH zW$x`r#Q_ivS05gp581UgFx%aOrmb%Z#qbvTV|@tB7#6;;5Ga|qxY4|~?Ekf;~?y8?xc8?oKyuVxxsnpyx7N_BP2CN$JBF5KEqTvsD{SN1IE zUU1^%r1avT_A{+%mfr5SJqpt!5QZn=jo7V^@`n2K_SWVpDc0rJ2hKnHY6D&5%wyu;GH z8bWMO>lajrN2p7jvYSf7$A9(by)M!Kaup1t;X*%}WxTI04K2(J+aECb~4?36v#X^ zUIU@#sfTgJe668xe9Eo0M{c|YNFh^gNm72DTzZF=uB8WMTUK5HL^?~S{Al3?uopKs z|DY~1)iKev0JnDptFn6w2mEXZdMGejb_6#$F?KrudJOiiq2b{ngorCW++^;dwqyXD zP>|b4HxvMvTgQ7U94Y{CB^0f$!G)f;c`ro(-&)^kAuH}WFY+X10GKa=l057fS;?a~ zl&c@cAM<-&bEg1cv5^|g&q6mkMpx6~S?f3$18_=NvH9&s++@fVk#ZJcX_W7%fT(Rh zCGWi`0ATJNy?k_az-XG9KD<@9Su`lpetJrD1js-B1AYO^dT^>pMAp_sP!P_Sqfkb@HDgTTxP6rmK%GiK4Q# z8~G_YMWUDQ`#}Ca_1MaaSp>ggw+E}bSt6JHM4)mMmD=I*;U;A9E+Bb$D%Cj07{V2X zrzPLF>NoQ=hCfi{>DgkUod1N}A1!mE_|Ua3W3lm8cq0`XxmQ}CiVuD^P`!G_tm81! z$wp|L9rFOL4QUy}7-E6q@(D}5HUGBUM52L&k$JGdpmU=|jwUVLysTl_l~?aVN$f6K zQhivsT3Pz+j_}L$Xm{j{W0Z$&ud)TGT&zxnYndX=+BNW$Bg$*TGDL|-Y(UGi_Tt!i zOqu_JD38p-1eq(+)|2n=X<#VAt@2% zlEYaw;(y{bp#*0UF731;xf2b7iYsSerY%)26Imk2uS{z}1D%EIi&so?IUPUndVDB^Ob)@dRnUCf6;s1haM zXbY5DZdAG_b;HaA$y-$4Snhdn#)Mes#T4bV5@m6;^Yby-T){I3Ecyp^F($$R8QPsk51>U6gdVf!9I-Wg`% z7Ka=JOSs3qsG}B)(_940)AQ+*a7mW2Yw0v-+QZ#WzU&8yqIwv3B}sxbW3a<@y@glhX3WNn^C+A#U*W^2zoGWKNos~u z4R;zA--%Y`;!HMA<2?^l(lP!NJR#7v$Njp!1CbY^{>ryzEGiD9?%*gOS1n9RQ|@66<5Zw0JyFa#Q0$1V5OpGh^I~ zwWCD-(_mKl)N9;MLJ8~=4_Sv7-O=~$+9SJMP={uZK~&VIcG+=$;Cyis8M>CaCRZnlaPfTGN1qG54Y=#~j0Qq#fR7qJIVHibNRKRi&8!1--L}J;&bH7}a2J zX{g7;cUB?U>E;bV>ogdW!9BeD2)9<3b)ojqtmN6~U7dV)?DVw|$#T$<_28F4Yf7we zBwEWDwsc`A=$MGHk-`aa?cv0JJ^r?)jiC}5S#FZ|`n>RI?T80c)rqkHxB8f>gU-yU z8-X|ATF#odFmwVm#p-k%zu?BO5#_1vj|%({#IYRnc*rb6H6q@+R{59jQ~bDEClh?h zQ5U_&->N;@Znr~dabU9CjSUrYal%SE-Q+xrX)?MjE}rbE9P;n?jZKX91j*fk=94tk zUcQxwrN*?H@3pq3a=&d_Cv`)kd>J>ZL_OleR24%bFg`!k4hibA5&5~eLUfji^Ort?ULxKSzegucy~uZR(VQQHGr(gL=j$Z$J^NTGriATzA#O8S~rwcs%-nI~$?> zXaXIW**+7ukDll4!E@L1xzmJs1YSv4SWM89DS33e=EU3fO-@R3-6z6dl$om8guZ0Cf% z3>W%mTJl+2Pgibw)l0tX&TBAD2EStSuE7cDhR|jois*CEywHT)iViS5eDNppj;kgv zAGN^8si+(4xt)M$!Aj7ozSZM4PQU~|?GF}W&Z|4!gtrxzXV$9&(Fir|ayFSriPr?p zRXJTZ=;T||!GxwVOZc7&%Oo|PtTubru(_ZL?Vp0K*q^N_>}chGv48<92}lJ9I3f5L z5_5bXgj|+mw(p;A>gJo8llGISTV>ph%x$Z7+ioNTj$KFy@O6ExU$?_k?Ohf(BnVfi zq4%mni7Ig_v+_w^`6#i9@Y^IHFoxIHU*-C5`1W)Sn-UM@gwT#$+u~_j%2Dp!;jH$CgRPkcY zb-5V6#O9U9y^p;@SvS$sG6#;H`JF5pRX>W}B_qn=bj9b(9ecYh85C8$w1LU^AcgZz=E}e+zF&$1 zwckis?RTSR%&)hu3mBMA5Y&G!#xXJ*Ii7elmNehk6@Iawj`Bt7u$++(o$9E7=a4R2#&p+OM1xQ3x!8cNaICGYvIWi(=s=H~*D z;Pe??mZ0y3$YBLLaPA`Pi%-hg06VG>*tp7#@ry!lD&;R}Ep_>F4ZAsu(fF#(SOR@I zfj+c}Ev8tkSJN z=8Q9Uc@9{T>kYMM2TNF2cjkMTN6i}Jf;3cB(Q2kQ;v9E}8%8~0cyNRJK`pjWhkNRL z$@DX$1|rZcB!<38QQdicZOEDY&X#a_ z8-f6p2n!kg1?A9E+M(2fMU$5{9+dtLE_1@eP2}iLlukp#E+jMO1y)3 z->1+vNe_|NgAy2vNA2BIJ<{K)dQ5acA0C#&iMT`%h)y;wL69)jJ-s*YbQDTXirn9A zZYFQHy~6X`o;7$F)>LY|6f-~Ik0jw4K6wQjGs)DeG+!vOBI(v8Q$>Ue0uHW`W`O${v@b-ZS z#b=D9Y3;5^h1BjHndhCPn`*1_3wYYSaEYtcV9(Zx6o=^*5RPiAVNpQfN?-A4= zeX2N=-_08X0*{0xR5RTNYbqvt_aEd0sZJFItZJ#irao+K4FrGH1JxsWV{nfE`HzeywBW zJ;O!bvI%aaI5DbgawC|!m09g^G`O7yVvtNiNMiev!hVaVtC5#ZVKmZb;CwT-o*7G>tSzX;h2Q(vnqoC#LBuAFAE;izT60}r z{acWM`>(WH6_k%|U=NlM)p?3HS9Oh8n*_jPc$>3b;<)+DWNYc4Z{`YkQ!hyjjm9-$WD#^4I}w z-dlGUKE@^og7>F|QaZK^wWkF?3E%^}tMA&Ncg9aRT#2w5)9k&);GHO~`JqdC5%>HU zz_zRMWzq6Q`9Owzv>JdAm{j*D&r$7QzM*6iDkMM7yJg}Vh;B#C{7lv=o=fmw#T^SU zRl3!YNn9fK;B&B?2XJ@G^lwA?CpX=KE!hu7s-NTo2A2Myblg`-2eTlUYpK?EgS^G} z>>9rExjCE_(&%%RXyKXF(%DI0SD-nSRY3BjPO(Y*maDrJ*`Fq=Bjwo3Dq=wegT~ze z-hOm%)Q-1D8qjh)-FI=tHEi#xcnK2et4-@X`!NTR#D8OC+wbq=X}U}?m3v``}wqeucta`3+A-q zbb30Uhlh=M0n|M*ZjREjFo%akJa-H41KJ6TH(8=6rGDqTTYh#Ua{+|aLR!)d*m|}O zWO*m@Ic?7qI~Pc^TAghC&e27gfV9!jSm0hFSGnL!kH$@R6-(_#6l$HF1(tswY(yYB z9!ZQX%;b#yOo>maKLKdChvqQ|gLZVLkmr|>P7VvyvJY)%}ejNwSmf?k&U>nSyXWG*~}ZL;ua z#W}G_w>BqBq(N1*SF!GB1|F2Z+oEXH78oKyxOcFlQM~nhUC^5hxB-x}SlI69(g6Cnx|##!;pyHKwqUy+ba|lA94@ zVF~m^FoS&EKGiMvdkK2?gUl`t6}gh#tlEhYS7wC|K7zl{A9j@OM5c%y{3=0R_U)%= z$~VewxVw$$RGz=k8O02 z1vFSLq1ripr#$c%QUK@&LCtv686r0{U_y2BIz6c+$wL@@q)%X#+QL9I&h#bU2E-S* zYe{&O;KRAJwex2w&@qfH|&!2`W3nK@Was$u#IzP5$DZ}5>-+GijikoeNcv)RIJvh5`II0`tl z3=9J@k^-a>0wGaXRT>CO%o5JaCOY_OC)4yij`LH97HvYEIzcBfF6Sz7o@sZe&%;E#36@ z2bcHzl9^(jSxyAv0rqC6Wa2F?ZTwI1cb)YvJJcFTU;d9>f+hr zp@FdhmYfv@VZ|exqFU0p5lYp+*ix2MQnm=_qK-DLvu-X0VBCb1`i}0$E<0`p z0#+TVb!u0mYjxKrF7ItuWehL@L z?8si;m+TYw{uUl|$R|KOdovO{nTUc{^YqQb$-{=>8%tYNZf;K6;oyz(GN6`)R_buF za50fu%&8tY3F^HuHWR4`JPJg644lpnuH{itCnASu?!@HLkRIFG}J2LsabS7@kyMNJPY0g-%Gr1E#WuG z^*>i&wa9LT$k5SM=8csT%J#F)W@^62eBaOvsP6$1+~m$fihh>$gouVt-^S#;fu{z< zy4yQ+RFOXF;)??lw;Qzy7;Z+~01qXwsQCfyRmNs>I$k?^Fv>S9##Zw!1{Ugvs$Bv^ z_8Azy*6>0ry^;G1(ofMN^o5kg1q%yPaywQ@x0Betk)_ZT8*yGYrVZ+K@7N+YrZiR} ziP+6zDH$Wh+SSQge|WlPZC8XUw1>SILN)rjx!PwC=_QIVXin+UYm zITH+Mo=lbQSW5PmWH8%R2dL@$kG81$Fm_+CwH+w&q|>p9kF|Z+gKtN5in*=<6i)3K zQNDu?=~ZWs$uO4%dT8bxKM)S;4aS4rl>?nutDBjipiV8RzYn~g=;dZS&Y|C769tN} zm8BV?nme(+(T4|A?i{is%DO2epjVebRyq$txFMg)KtPSI8PG%y^eMvQGg{bV*3~+W zMkX?iRpL3VZ~{~ah~$OhAiN?fwI(@e;ds$8$9-!b%^-7It?=;;vWyR6fj&0qgR%&R z5J8xU6zQ5{*H~K#i!OZP7C5udTGn%?lPcvtBJOe36YssynP6Da8;{HW+7A2LBE?r& z6{xyvjpLF~HdXIs#Qo|KU#i|oTs$@lI9r#WWzBhr-fqV-d6r9^i zy4tOs+@xXHPh4pQiL5Qg4tKn)jB(+zE`m3vnPex+XP3L$F}n=NSOj+U*i$|3>VV3zQ^6!g?c+>M42J|MPPGjau<+F;AFfu&Df z2~$;6K5a`#sLks%@7Ot_Soo?WeFv0pzE4y^7geCynZ6(* z1piS0@l?~mT0_(|*bvxFal77(T$Nz`q8381LnT;5C&ec7KJ!EH{EQcn^XDV_dPntr z7I%n%Ah^UkwDHiEJKK0&K#Ca?Zt7h=j4sq06y29h#OdMznCH+40b5H!ynw&V-y9k@wxY4p7_);cNWD7(&DARj(`oXMO^;zE zIJ6E%DqE9>sSiA8r)aSPi*P*UH>5FT{? zMir9V3==ONc9=_MhlW}#Z*Xh|Mtmh|aJt!*QA{{_T8mZ%!-y`1EuRIx&hsk5)-=rK zC2TC|;p7OprODB(9?AmEX1zfzGH(Q!i#ZWw1_e70nYOcxjM?P$Zen}<(gyKMv>kAV})M?H8qRPA~*lAwKMVIi%uFetu&T<(v!^hr=+^+uR-Z(Ds}t9kFM0I7FB zN4dToI3rvFB%b!X7ay>uq@b)a!<_{OEgn!hE=QY_9qUqyz z$gyK7%~@V}?m68}ENdKU+P*`+Im%}2=&HArD}Oz4>B!^;^kw(mYU_eE ze(?xVzXWT*)CiQkCrY`LM>-gvBwj|1Up8x^9NLJ(?>pGvPq59+L&xJ&oo+|qBWYlw zoFiTc4d~Jj{u*5fDc2!a;EmXyFGJ!cl4t{WgG?LFTR{$~T;q2ZIdDr(gV2y+Jy2uP zfJ(Fk#k7tsdN^;yN~qIDjGGK&b}ulyz&|2Pa`tg6Ny&dGOfyYAkUgLPgGX78Ga5Zs zJ|t8o?M({zP&^teh9SDt(;iTE$egi#95Oxm9`NSTglRw<`0ZwUL|g={UsvLxbY!9d za>+^`vPE^PFiR|KKeOq80QLdG1*^13^|1L#|~ZIcTI!I_WhmKk~`2n+W{HL!qvcP6O5%AnqK0W&KDjcPV;hbzGm=7%5hUdY6CSB{oe`PmDDloAK(+r4>=6CU7Qn?SgAk_ z?r*m)D(%k~py7`3<>Z(m)XKg52GX_q9*T+H*lN*8jZ0mJFq0zfuBcGVp0$sBmn|$J zBBFm1l0-1rA(Ct5X0jHmUB!0kjaCljb$|g=KIr?plJ&ls(N9LYlgX72Pgyq{iX@G9 z$D*v86@kxN$Qm|y4-}Vy9Y$nwMFPT*j}MM9=74Vi;-Sa_VVJg4OFYd|w0 zJpf;$NfbH~;1NymP8zpqbX$VUZA!}$YTzJzfz{kLrlk*F&2n*K>0W8x{|*8CB& zPw=_ap3t-#y#2%px6kE-k}@4 z8HeP?x3z$Ls;4jG#npZdS^F2bM*{Ti#hml|hOfZjh*VqJ@xH8%f&DqvX)RGno~ma< zR_6RSN&ZF=SgS5+n!=62N};F9Cz9R0oSprH@Jw7Koz+VBMoIpUoCRpE?YuIydDo4X5b}ch)87Oo;On zFD54#i4|1U0D|BGDgMH@3G{6$rQY(j>hRQefb}lG zwocaaIVnIYpc&9ZVYN~h`&DCl;nZhGShY?9GyX|aj_<(#Dp8Qg4qxhqMa4koJRVAlZauwlIrAJe3l)Ht z7s{p`L}F3Cs-#;6KBk8m&T-SjTrRr`QUHeEC0JV`6L!9i&%m*+V^B+#uz-9NUVP{7 z7)2Qr2J4$#$o_^w|5cH-V?M1FC?*QaGqb0g#Uk_uH(Ih>Bls&+hd=yFG`LNHi(-_yHQ~UsAwii?xUGD!%$!$EzFUOi2T6U`4>#%RGrG*yvCEThTT$Rtt-hV8RSI;*T+?KVr~G9#&ymklyfK$|#{UbX41Ubq zABA%VRBh-?XtMiTRnES#)z)~0)znTlJrU>tot_o;=tiGA>sCIAtswc19!IA?eSETfxX`HBu1_r+FwWg1jIx1S4B-a7d#WTv8UXL+&nEfw9WG{ z67{M_SrK3^OjtoAzDv`%VZpHikavKaDwcK)i?6gU$`)TbB0wziP${CL-{g7MB~OdZ z4U=khF|gZY{basOs3=%uew_fZ9bhC7rbAH1Do@X^S);`Qm1U<#Tv4?KE=ZX7G@`!R z@S2qoyEcd0t`ua!@sYZ7$erUao>OGSPHgh>K<$Q;JWv;{dUEo*yoBnx0+mRUu(`nr9)-D;sy!Bgl3S$ON zEQE+~KKw`Ga5pBj^6c#-Vma`$+{xOajz$0Wj0H_CJ0{X@^9P+l^r?v{lP?IC3KONm zxsPkhPUI>NtsIo_eaAAnZ`TnP+o$2B0$S{jEoEWlJgYJ~i~MmzKRkLE1t4_K(MX*f z<;Ea0QX2QtVW?kU4L>xvk<(9&Y;Mj???CKE@0|wQM<*`!Ru!fUzg^U>nuW9SH*xoN zs=Q?|EtDy+LD5%*o!~5VHeJ8hM`rctI0o?JlP68Lh>-jF6Dx3**`*TqP4MRu=ho?D z#RR{S&Mo`9Z@L|Pi_BXU(?_=d;rO)yF0r8DYsk>Mo9fmctW1P}y8yZ5B-d5!^TPjglmmuZE7 z6+t%1h0SGZZ>Tm`_3cfUACOAQ5f<9#-7=i4SFcWEOa+R>8FYC$iHQx8VK%rloKBED zk&TJpiygw#$2EHIsfksEQd1wGwmWJ2sfu`<7>$>1=-e)mcmg_Serq2~y!*vPvNYN% zR@ff(?E$NqAf$%nO9A>4uoA5^{qw9SmXYwq2dAYxo@YOZVOcmbAvMoZ*fYLcKC1TwQu zwRSSAcdv>q^Jk1{$^`>EO4w6@;=@+G)Uv)6?-W5t9`Xa3=IP220kz3v9t`9gJdVV3)WJQBg zgYvOEt=D@gcZQC(2&EHz0Rg=v21CIQ|B^F_pe!KN(zJ>#04R8PZ*lp$4ppr#FqYKo=?V=!Scc7Qs`OU=& zODgA*nfw-|;h=e4YOIAAde$#vyK|;%hBh~QJCyqm2sp?WoMBcBoi9fLgJi5z=JZrP z)V1LP-P$52eY5FLBs|Su8CdS4u|r+#Yj$THiCHpjV!!Otq_QEa!T% zF{XKzR9;G>gu7szAuy-5nrN;@dK+VcIIm+dWl0!Q1pHSIQpT@M8AfJPL2EA@a_RNN z$e`?P+8LWGGRi)OMx<0oi~SrJPw|&51UKz7LTrTE48 zDg4N!GF4?a^w|l<=JIak+9|H?r83g?I&2Dcb0Oh&{3p1L?lhKavJ%pRvYf2o_crP; zCwzLrOV%H}tW<&qRT6PaUtIDt1mJ9?7dj26MKhF9(9+Xp3Y`rxhO{ajdcudYJT_Ei zIIbDLdV!}mKS^t8aE=8aH61Dae8YC6lU`Ta5*u92UA4x%LbwHTl_MgWuEPu?QwUVh ziLDytE>utce!)~XT3CmA)3^oe(gxuA^HwTti~#Q?BDN0A#QX!hn_yNE>M5dwHfOAG z_Dy_)V@rs5V}b^SE~WWY=l>9P&(W1M{lc(g+nLz5HL-2mwr$(o$xLiJ6Wg{kvF&_w z-}m!8=X~#Z-*x`z)m^`?+O@lOuj<~byXq3f?W|z+=EqG-BZZIy5K6`p%|eNbWNSk) zXQ|v(n!)TAJBf_1?mY)M3QfazT{%k=a<_=PvbPCEFlGQn;;_WRR5VCkPU{WrwJ#qx zFu5`OEYqsdmnPv09D{2E;fP2me_5P^unp^!9v8hZ8!L3T8x1AuSMzG(JLedXv4sbgVshN%ZuZe$)f$k6_H0*G zN76UU^%bwGcX(A@_LSKUA(v0WaY}bKW}XXTxpExIza#2p>A8g2Z#|>B-~+sVjhS3w zpVZd&XNf(I59vsb zl8ciK)o-{A+cZtXt^){V>bJYhHqUURKzmBY$bG{6Id2ksKUomc^8+lj&KX^;o)(So>U_;>G8YBcIz$EX-lCGH?|gMkOuD zFt1)9p471*PL8e&4p6RrGFEKg2%i#7mQ`Aa;lCr-*6I(M6Z@PH1CWp?!S?BYH7%=| zoUKvF&G9~|PJ8=RF%M`e%|x+ueNqSA?Q1wq8}R}FUy#F{rdv_k+`To;G#Ds*l*V3S z2jII~x%ZP*d`SEUoQ?#Pgyz#VC;b)f!bC}ALrSg4(FQAy#73usbQJG!V^C*Vo5?7jL%7Etb?+?acxuB>($<1!Z(g#_OQMb47@UA# z)EWU(3ZbcP9iLZ|*Bs%C${YcJS!z{k1i|O?BMJkp*KZafN8|KZtQf#1W4Uj969;^+ zwWN-PKu%U?MFm9K5L3E--;vxnllYTf+t8AnN2>xsQrgG(0~3@8)%NA>3V zQqnPnZtCDZU*)SI!nnO)B$yI!byVIinCvHG)yl1*?|}#RPx+bgKgc znltc8f{cT9RghF^AYfy@n8>&H31KGNE}PX5Aw&%vkoRam$|G1R-aC+|>aye9-#@LN%xY;v4+V0jN=7#;d-c?MMCqeoa zTGk>mUW-n&(Iu)VUyU(8w4`)~5j>IJJv7O)n|lCYm~YJ1LUuVc(fHuC^>ivN<6g3h z+8r8LFLn4=;Rbc@S?Q6|Dpj#%lO)6G#pcKo#O}n^v9kLGx22`Fb!`SWHTs!=5G^GGN5yZvG zaL220HNlKt7{uLVbp=pQ{(yx+7ia;F`ykj0ij$^wc00b+6DG_VxkCdT80&f*-1FKq!Jj}} zIMitt1F6zES|dYvBe}u|Pct~Xb>-Mlj+S>eCu!jB;|I{gcq@HKE)H-4x;gUv-r72# zveZ#%x}4IVlsNsX0zVu1D;F4&ao(MlB#S%o>*Pe;larfHoXtQU;*UvV3b3v+2@+MU zh$WVMMh?R$8ulb|2hWGE6AkW#B^6>_+=xv$zA2^pPrsJn&GlBQ1>8Enm3oY|`JXE=1D&dwd` z@#_s0F6!=#2byP7B4AS%f=o*-Zf)DbH*AN6M6D;c3r&}}JYsG2!y`?IZpIZLRd)%F z+`pV)1^RWdx~S3tM|xlPe@g*7A(sdZy%O>rI^Q7h!F)w3KuZ1w@m+`yz3@#4yOUec zh6bi&b@fhX`sw4QJYYxkMd@T=4##)ck55!*LWXBxCKi*n&x(;>lPVUdmxpJ|pzC^B zaiXTEIe9yATX%|<;L?lHbtXw!h(-3!AY^<)n5}1{p+-JBR`M=zJoE=|E6nZsGgQ@p zBo8hev%XsZ@8$pmA%sTF#~MpI-`25@!4r zxV5;V%yN5~f$1D_cS!p&ldPB@S{o65ZH9%BfFt)eEaq??(RlC^Lxx-Fh)UMg#EmHI zy~AYuYqP;hWHb~$>u{95yU#?!oHbAp$7A(D28)faf54-U`Y`Ai|n zDZuP+L#*W%v^2AdbBDs$jT7rm1M8eKw`KgkwhbC&E?pu<1Wc6W3Ab#1P%^ZXILit+ zmI|!|<6FjiIC!rZH4^d)k&uHjMRKKm2i0aR@A+vMd*n2s)2D{5x2T`vEo%|YZ~IkS zz5*={KjfYxVKg+)MYuXLgz5+~0F&jM>Y?@K?jDIot-m$|>dpAS&Jg(r_EC2ZnW`U= zx!DWy(!M9plH1exILdK`$~$2fyCF>LuPgWKf9+(gSTzp1({!LY)s(L zit3WfhCBxX$U@$fslye&*#eY&yECd>@cH9es1A5fp^_VtsUbP%tmalg5F$meTp^~JgFQjsrcxBxz(b+pHmoyL*IyRTZU|t z=qHg9#y|MIPrxaw(1^pvK0xrJr(d_uTC33byZD!umkjn6e~P4Wsem%{BA2>03M#1w z`doC+fJ|#XP5Mhx(W{Wnw*K7vJb$3reUf9Wy+y9g+r_G_AO4xm04FGQc!hq+wShyd zSt=;CUCn}ZjU6pRh54$qmR#%&j)>wz0@qc2qmo;>^$u~2gY9x)C2FRU)b#ya4>$bP|+#HE088QxyNs!-OGW``g= zKV0*ThgJ2qbCF7SF<8>O5u4gJl}QP;xFgK(gEP#4J-Q`JB&`nU-+bIH&M7jfjxaV? zYO7O_M*POnZk(cNLxVnQbZ=5Aqnh(8`Nw@>8jbb&Om`|Jb<8}HX*lczM3!NucU(_W zS4&~ORHsof?qMJZ7hQUSyFV<2LCm?Ci!>_Zcy?BMyu1-kZ=cN-BV~&;zIzM*?ps-K zFPU9UxoOp=V|2(RqY96C zcOMKr2nIFb^`D8y>Z8+=?W*Cy=|mSaU@aGF5>6k;SIj!MSTs{O&FIVSlR#BlePo^{r#`w>GDpw>^(96H={;{+fp! zSSH|-TSb64g-A2dEa5PW!4FIr(9@517cAa+5zNe~4Z*N%w9LtbRogKk#LVv!kR(=$ zVoDm^7CBq&fcP=MI9ApZ?|t!Z` zZb9AM(|=EV#k-pis}EdXGgb176yM?2nrn#i^o|IT$?Myt6k$CXc++B@7F*5w0}v&o zH1^KP4gAU)y4``3YzNR?zevz24-Oj9S=lD`m_;1?MZXu%Lz}b!c|OA)1>aX8Q?wSd zNsK>WABU=t=L?k|Cx?3~Wk@2LS5ZoxoMPL}84t{YEx~De{J~1pOx#k}aFhnoe5_|( zD1(1psv&32+s?Ya5FH=41h=df27tu~{FnzYLt__V-azL_z@crY!ikjelK<6eix!CoOn7VgIU1>i5+(! zZ4AP5Lg@p$0)pD~Y*^trJNNtHN5}S&xjnGy$K>OAVxH>2@6k6*y`O4g##z87(4Qv_ zto(g!@?=LrR5Whm5(&RcexR?b^z3VJ)z3iWCrp?o{q6GyIoDVIle8x}rVlx~{7~jx~P2F6NBWZK~2V>2{ojv5e0?gs0uh)4lAAfJd2)8Nn`tF@%Ij^&UgV-@B zcwEC0v_7CZMF!RGkT);U!fb7gi}4b_UcaIwBBzHpPsfOwIv02^`5UEqG*oK3h7`yY zG{eD`r07|lg~opHfSejujiC$!ArZ9@lhjD;F${Ne!FWdHClMfwOv7G3TISu3U)A}g zSn?Dj#;~P??pAk!?*vra@S>9;DZB#?v(z9QO2k-w#%2ridGiB_DPy!Uuf0W2hu%q! zTc>a!=uRAteO{;gVfEYFtyv`NAX2z4&LO}1%zm!kG9;_aEo98Aw!#JhhH713hIzR2 zEiJ`+Q$d5uCuGiS9KiR^$51gx^Yfoc{w=6c z+H#lvczN8fT)x{h$DlF7bGdKtg)h&;p12A8^#u}0<+sHCj8LPYnA(oW-Lle}JvhQw zXwE!qT|8;mvAQ@EaKHmrSWuvWOKo6j{6CxdcpZvss}OLD1!u! zalgOf`wR?4!hA|@Xi1P`Tx(Y&8&)Un62f*vLnC)xu2;QqNPCWu>2a?I$C=Y|GPOUiQy`|Tk;9O!j-bq=qI`5A*aC&y^IvCt+b+8wT*R3-I`+ zw;dfIX(WW|zyv{1I#21|kx+xtQs&v{g9V|Z2=9)GL;F<%t@U1K?Gmb=doD+Kh8g5z zJ5sKXk$QQ+mDTweupw`)tqQ% zLBm1iUh((SK)|s}f=AZw#}u&ANZ|xEcn?KzYI3Y+40Y&e>xqU8einFHA0$b;$o6Ov zqVc<`IOuBLjc&Mybk;!jw6v~68Rgl5l~{du+Q@m!9F6yFExJ6zdU<6naqc3mx+V%= z;OUzae_~C~lB!dg8EJl&f9QGy*gD#sm7Mg}cp;>iLz;i&yRnuli8Y z^Qi;ZU@Z?M#R+8u@@5aX6VZO|(;Vjxh5HNaIe33v8!=quc8rVTpP3DdcoivOPfDt= z8ae6(dr@0aD)1`ymXyX-16A1+NH9#0i;>rO`}yudCck$RhZJ7Zr`(p#a>)UuB`Va` zN&K1LVgr}J?Ljt>5Vf*_#LADv;xSok!8Wli_D#7} z3VBs#9=BC7&!P)+x}o{NeGsT*t1698mKR7la%*VdIeQ9PmgcF)EV|Fc?mKnFnXmYT z7f;rMjN;^5@-hmK4*{|USvQx(2y2r0uY#TE8@a>|YMuAo>!|#QQ6V@vM+1d9FIA{@ zSvs-QeAZCD@%s}}mjo!1UnvdtzbJbhG2U@9$VLcqQqakrFqn6jOM)=#`Y9O{=i6_(eFNl`}pGNz67q+xIj!>bfSu=a}MrBv`r08-&NSEt^_0I zWUjcmmwtU_)pWofrnqshztCCe*cs@JpMG>^8S%mqV?uzDAL%T!2qij!ok-E<%`8Q5 zo8~On7Sj63N4yckS;6src<;C%2IiUhT*cpM#xZ9h8<)zdyn{-W08p$Xo!%3jvt28H zfMBR;M4EYP1I^rs4{2zf)MAo+sKs>wkwWYO&`fYTM%7&Dl?5@IbFSv1rwTq2b1WZD zpLf*1O}0LYOZYfNij_1O{?JpeoxxflTBYr{*h$+pIr<{B(mQE0WP0*(aLDM0jIJVb zNz6-!6MM^Y>NkN4f?GwlTX42IqEAQa1PGyXN4_;*My*2 zE;*{8Tt4{D{GK*bGcyKS5B1N1f2LlIX@rv`q|+C5vaZ{i&+WfdRt%2l^#zjCY#S$5 z-mSQL4vnhrH_L`pz?7&UzX-mNv?C0J^aAApzH9YpyI>oLICgtUaOkQ#8yGlN%_@kq zDEExIuki`+uGz^VrF#!tW$SDgGmOul9s6}2$>wY+_dynDS}1Cf_BDFt>{J30EVQ^r z(BX_PZp}g4bF79vvoj3)%7RT~D2oG)BuJ?sR>LLvwEq#En4xPiya9v3AbgzMj=&dM!N(a z^kk800Td2M)G(SwTg#QsMbSKxg#zmJ;t zPh~GzUe+%qf0%ArQ7auP&VCxk(N+u70>6R;bXk3GdZeM8K=qNTaf84gmdh)e$+aLeIFSOw)QPNIs=HAr_+ ze$3tc|!`r7I)E(*bUZ9exH$RZA15)I%Mjftzk;->QjAHx9g8jy%>kV_CizHp}3|NFm zxwo)h(*4y*o0Itqdbwj(!tPL9Iy}RMG26AU-``_b>cwZ&TO1!yotY@tsZzaQ?b{SAbCwSuau?g*U|H7wfv8jLL!!vjDVU2BUMnkAq&w zeTyz~@}{SuyTU>!H5hpE&C&EUMc#(X_DEoV*>or;kq41Sw;lDVsjx9FKfL^7YKRR) zEDj`ux^`UE)WQfmSDC3?w6*7(KpM1?F?^wD_9*VSCtJMg0re)P)%GVa5vyFH1M9xk zG3xyqham>%amraZAddM;Bv{7Q;#1uS8dpkNF`4iaxxT<^Tb4mU=AeAf!R-eINFl1C zq`*OBLW6}hGG&w^DkAZBE4V&8H|s#1>Zp262)3494Cnf**}XwbJ)j&1n3~d;38m8l zz&XLT-*ZUNv@bL7-g#G6gM{ro0Z@Ri(MY;OM-vT|*-Q86`Qa7UksB*G^)M;O7!yC^ z6ph}+l5d!&|H+XIsZ+^Q%J6~{t#)G5)~g}syDw}@o)X;U)4Bp9lIiY8#~e+oVj#Tg z;;&s(pSZ1r?cbR(0k5k+OrK?S#RdG4ZWw$?VM-~G(%-}2*jhz8voa7+X?aQ3?Z}uv1dfNpmpZ!-O8yT56R3G%GZ7 zyy9__k2doI!Xut0sVuAhG%xc$d`^59d)N#fz|_cdf@>QfuXBRs(LriT*vQ2bZkG+w z0B~Tp=zJ~>5qTgd?Y45b>Uq13rV#hUmjY`qAxm-s?Zh=rG!};sU6<~m;dXmrH;R%N zZUeHcrF`s0TIGb1sx)-Jq-dWJ7&5mD6_0@I-xb3+*0MUfoMLYxuhC1`JWN7>4K24W z-Y?kJbU)PmWc=ain67^FgH`9KCyKOaZ$u2f(f_8)Z0=1}%yugbg)Qh&wGPIOTu{m< zs1S)V2hR=~A~IY&1e9P98A&!92=^r!tSyMSACNM3Sir##_l)BbXPxo6O>OlJ{bRe%;XEp*p-(p{Qm zi(yLv^h06v$#u~rWxU>9RT?><@tC`a(KfZ`Rr|JJKC0d-2m!43vPx)1yYW!me9Icj zv(73vW2ZK}IU@mgOj@5kWra{BS{|Y2gpH$Z7!g_-X4m}-olXKcb=C<(Fn}U0ew2=1 zjK!fak>!m`t#sZFPch^P;|5qTw1}_+3%!TDrkC0#U;9OPitho zj{qF}UQpMXUAHXpR*-;!JYDZpvrsw3Y?8PnpvilvB%>|L(!61eA_$h*z!4eTahLxr zPa91kX@d+Mj5RY9!D zN2vRPS=W0>AT3B~&*$I6&K`}1Yc(>(iWj`Y;n3-Vpl-!<6XHy*k92WQ_9m^`g+~*= zuSbDL$dUIJ2`eT>Wu_vS*(Z2cfwoA<(1}#F=}2p&jd^QKs`-CsZd`5|p6{VZx^$Gl zn^K`vp)O!TgAwJ7k6ANj@=hsmKN@ZBLDsSL`$lNei`hCIS;)BDzwEg_vJb}ZF>b~* zpPLB1oZ@Wu5a6?hsdyF^TL0A5xAM8ty-oq-2^N((r;eActTuH#S~H?Ft;uf! zeL4_uP_JEy$xf~!q1^)=2F&_vLqp;IvrTP}dwrqW86m|#w^MT!gty~h$@t9dRNRZlO95E)l1_n3gv-duQNvNDr zf(%@n9(5@j=BKh)N4-Cdh#{ZVsFTSVp#EF6vbAdI`!VVfYSqx~w+NL0Oq;bao`IZl z9X$qxO)zfZA4g#bBJmXSM5vNlc3o2+ftIK(A_`KdMUeu(-NduUnuFXK*~|#?F{&=8 zUJPXTz5mSA&Y-mL=iz*54V$`{Ni_^7WXA>jsrdJ(Ue@NXmP%!QbJ`QQoNrp@)hMTl zdC9%IP=y@+0HtUj{$Ub9HUK8CQ4dPs<`^`R4t0@7Y?k|nH7l;WqVsNk?F01BQ~Gyo zuQSS=Mf)*`C``6Q5vLTeFIdq#!1bE~=)yeGKHE=wV$QzVS;;;2=~ds&VN%%U^<4gr zh~k*9(b(rnyB-Jq3unQu*1iWgx#%UJ8Q&;?`Ea<-`DfgEefv3vi3~vdp&(B}r2U;E zttxc-H~ViZ!Z}}iV|W<8+mJ9wV?Paq8i)XM3Xh*KT;*u)!ztCK`x01(Gd z{IEQ$V6u%edSRp`Ekh)nD!up}K!uH5_N6He=6$VJHXqG>RR_;+JmPqaaLlsJur!c) z2JT%Sdo`h ztTp`js{LXCS<>DTNi73|dY1PW=rQxLIPusmO@x4OfdAIIBR!SL@VWx!?n^8~u`i+C zZnx@+PsAlnAR}OuMTs0BFz-*m96{Xgk8*bit|&>#8G$3d?H3A~T^x|t|ePJ8TS-FAP9_?U*rO)v(bBRb#Vw#K`VbiteE9OQE^CdS0L! zk&0;4luXGUg=Y3YT-CXDRRTKE!%LGyuBUm3<#uc!FSyBoy|3KRp7o3}jMH+G+!z1nISH_o9(~P`}hXv``YdK`AznyyMlQ#hP?q}j6MEg`W~4qzt$-{N9>wX3F1?2MM}e?-H-iLSbiqX?CZ)XsD5iun!bd zQ&0G*=b=&HEz9RFgt;EnV~(gW_SNDcm5>c=11Zyl~Ozh$WNJ+aY*ReRt8w{=B-CUYcbfTITXQ(ZPO`5xnX*sPgcs z-C^<<&VZ^`+!e1XkLoq1d$F#vDG23YLF!=Ga5``YTc+mQWh&WJl^fdKsBMa#m!){L zGp`m*hZWU86q*OjLEvjkGH~vF zR=kTU#?59$@8+=OkdLYu-vj5bdK@*?Mtq}=Onk#q(`YnYohm8P7=xM@y|AkyVMY@| z|H{i1eN!cgF^j32!(PgteUV*=VusK@fEVRP%i`iH*tx!f(FE>xy0j{02#Qkl># zr;OF7sR9a%NW}PT#W0!Yl8*3-5}C$Z+Hdq1fzzEyt3P=MfDQQG(*U>8p}z4fT1nYz&i@P!i>C^g%Z>`@vl}i(9sk0cU)k^!e}%TC8oT$ z0zo6ROiL63)NZ0 zC?4wPeH8!^#Z1{6ZH!rU)KKe=slhk3eaS1pBiHE!{D}X&zz5qqEwXCUS5?-w?3l6M zsWK$`X5Qr8@4L>}w-!us;71e~k zmRM`JfKa{LD19~~NFGodU_%i>ofN{0Fx*UY6P$T&fyjrFJ5f&&N!8KS<|tVXjpBki z(RPfRSDH8^PObrSapc)Dg^?rAg{x}qKQ@sFB(thcT5W@&#Wl`=NQDF@N?!QSr=KFhHgbeDH4j{K7rIBnMu!xIS5J%?2XPE5c&o-utdWE6`q?_e0DaFht zZhlU#k%mO_L(K8snX!&Kz@`i12gGo6+xIX!%uUZkCbHhdPx~|_2jJp7VDXD(?Qjo8 z_f`eYJ2F}Ro@5>UVU(;U7OZb_{I6e}KeL*bQd8EY^ej6bgO*D&sskB@+A=`uR$&J= z3X(-H0!wPAIyv+uhA9db+^mwIsmAPF;%oF#kZbzndj(xogefkrcjEn_&mjvgZ}0Qkjx}Xps#nHMkJz^hsZag{q95RXqQLB=VRu7&&I1cn$BIeqU^PcjxPM zYfHb;UV}UcokzY9$Mp**{mfxY4CfQQ;C=ecZ9;ZP8ES{#CuVOx^2;x?2gPG$SE* zDTMS`FM&p}aOFRL5I-JXuDBSWW*o*^oxV2F9_!Xdv*W>vxt#E!lN&?PH-6C89zkM87Es$UzdyGnb(3PLSzILsV2H3;f*dr8kO`=@~aaI8jnJT3p71{&iE$ky)FtOA4kYKT*BxWgw+ieA#@pi-nmMpU zqARvYj&+cf#f%SVu1q@*nJc{(z(Q(pbjznME$7`9 zRz&o)_e@elgi!&bILB^$L@TBd@L;vr|IV1r>euxzQEMA=|N2!~^%-l#U-wX>=-PF} z+!?Tj{jGYhjZlw=kC~q-H+4DtoXcIL^aKayU==N~Hq0*34qHrBK0Xe+(SA2xl~Ue% zESL~Vs*T?OHc)_IUe+RXpfbFWP$mW(!pqlyGGi4OP85ZLLdn*3WLBIaNZNQI%kk9B zz1CJ;wD(Up7)tsX;Jw9W9ESgeWRbQH*nxl=vBoi46Ly8HuT;3(S{vRcS(T z!Mz|F*&_19nKY*WVgxKF@C0a=-Jcca#|st^O7zfR%~~Vum?j97h7)Xs_RTaA0r~hH z`Zapm6^L5P`88O6NwR#|e_0c^A4a5rLZ_1WEiXL`6XemeSdMG=#V%T`{8h`nLx(vQ zNqHG9TCRx-0@a8y1EW3Mz;Z6$7CDs+9puv1XH4&vdz8@B1~S$ew2C?tXsRkNg?mwN zuQz=CqwDcPGN8Wf!*a78#rZv#5X5~3(&H2@0tTO0tE|6LL=T#w|JK`$q3vOOd;}XG)qY$hJP~=w`z{p6s={=Z^*EB%9$0zPnREu%N0~V;Gt&;gT zMtE#zO<{}tYf{f7->&OvLSx(2m~z>_!2-qmkx!5m<%_g+*$tk?=K2XO_Q08NO(iT9 z$Ueb81fp49=kgO(d*a93+)^MNWpOdZ)$5_P88*0wukcH5uJ3i99i3_N8mjv{J0v(` zrP@RX91<6hYPu2RHx2qFRzJmUg)1B<-pZHXaY@U4p$t2pgpdJ0Z&gg+et!scHs@|1 z7Aw4e!IB9Y@hWm*f2+765`s=wyk(ikz`AJ1cor+C!<`n}scE~ZBKR{cecD10MbH5O z&6sxG2~lfPajpp1+ks*Mjo_$Ks)WKRu@1FH)#N)|R+YD9hZA?AGPi89CcjMyPG@e7 zD@wnG3!CKU=VCXjVmCMlN9?_9MYS}n-5SoS%<-!`RuUZe4$BL7DkZUw{cZ4!K{^Bw zoBO(}ia%`Fc%{3O3EkoE_n&u-^d58&v;OEZU6a8P3oPML>pPJKW93s1)BxWf`MKE# z#_zaUla3g~Z|22vp^ALXI+%G$?l6y)OEckg?;(qQonPFm-c>{+mxvDT_{DZt6cSN7 z5o`U?+Cns4VguKj0bETXJN2I*6n-;|)5>;wSr~}9PIqE&H#phvHwfB$tQbZvEgBV< z@{HXhX@_e$6yGPDXEF#OYEz5ul$n=U16bKADhgSkk7j1<1oy60r{-6kc!o6{8KY_28Oq2P zsrbGlGY&GGo*eMv7qrM=kecEXYeNv;6McrEfSetJXV*~Gx!&?l9 zR3gyVtdf34y~{!7jgY_&i*=pZS}HsI);+-`;ZfZvN!IOlZXf04yk3-7iar!B>*aQ{ z+9{^fdfaCEGT1+g(Bp^<58b;S%I085$Kef~(IVzpZWFN!ZhOb6x8lhey6oci0adzh zsaNqG;|F{NG?6Siw&Y5gPl7*8qt#0s2hBr=pA4H_d9xp+f6oUEUMajtDsb9NqFD&T zrppjj07+5ah1;L8eH^ol7n-xbSc@t^B3(pFoS}Qf#-Y_gm){q#Gkd)m@*e9)q$DD8 zOOFEla#IOg`b}#16U$B~E4Xe2$P)Zu)$b~RGty`tz3K!^+zk26d#)tm1r(Y)TVmooq# zD2lu)uDu0sjBG?Y*?-6RYUAuz005lW;)r$RcgE@*0l37F5{F<}r|U`@kt7DUAu**B z)PBP=+?WIR$Le$)Jxm!F0f#1zRqjNz^4z9SU*OvD zHBN+7sjg}(USLi3L*5~I(5r8D{~1)ROQsH@Kfo1+)ss_n@quO}soS1V6qm=xqt_2b z)^*uNFj#7}Wan9>_CdB9ui~rnfkJ$>O_P-KcCYeEx7a|HG>szOs48G?KX~MsK>Yw_ zL_Upqo|=aE>Mi)hz`(KT1BWXLE8pjWyenQ|Dd`FIwl|N*;imLpZr2uK=NP?NkOj5A zfNQ}8VVT_Q=7@ltA=ZVz>#Ogu_|MRzESRSH=pe}*JL&+a(OSva71J%Jx$fyhxsw~h zrew>V>nNUYZ&J3{X^=!YFhlkVUVp){ZvT{G|_D<7*RBm~LQjV=_gO{g}K_bw2)HAv?e%=GCjF8zUH)v$}PgUlyRF8daM zUi&p8-hKKe@E@G7>{Q5)`PhdfJqx2HabfXkP}XEnb@R@+$(4|*Tfo;*cMvtiw3FaqEq<5ckz>3> zYXwE;Zqk#=Iz>6Z0zxx=C;C%MY%{5cu1eZ-oeV0f66DIver~2YLWhaf0s`dONHue| zS8Z%xffbk@=u_Jzx=3lT*1F+3Es4P(E0@u|gFP;R8_xYfj0#AYIBT1y zhf_GidYy%e3VZKrZ)Z;Guo!}3WlHQ!*wRpEX*I1m6;>8ngu%vl)Fz#wo@h)O$m61T zBj<;=XxCyC`c{f*bb`I>VJ&hW4VPjLb5~2~ri*%_1A?}@|HD!g>(vx@%DS%KPbASQ zkbDp(HnZ8=&G$E82p5kHENUnYG408svc3lDntnUgW-T429TeoB9{yySU40vvK;HxPmX*dx)Byc@7*ZoO=vvLmaFuv34g;q`5iqj~Bt#LyyS2#Wt!Dzq7zxr4$iO}e0W zi$ra>w(6V?f?L*e&w|?id|J=M&6aG9^`r_Zmi%O*V8GC{2Fw<2tM&+%l$@42DOK); zwd|VVN!IO6F0s>x>F_wihef=zXFBlyM4EntPlO_XzO|@)B2!~Ro9iiH#7Z%u+ZDtT zo;Tj8+7u;0NRC_20(<0y$pkArqLlf^T)YE9-YA@i!t^~t8IY(>b_EY}&^K(T?BlP@ zY|?3F1)eUdWDqqmyXY#ftpb>*!I8E93B>&aZ2bp_W8q}_w-v_1_}{Ux|9D(~5Uqb< zWdAG8mn<8f&4?6s^$tVO5{|xt)IcLDvG|xI%)ijc4|Glxy?}L)ApGg;c_gY`7A}Ig zk9{{`LAfobFK4MG`$96kOIv|mg4VEc=#5|m(I!(?J2gO6`Ih_{ZrzRcTg}IBL#-`u zjuUhECzZclcncf<#QYH_;%yn@P|CJ*3U5)g=j(@?*|Cp)8oyI&V^;YwH>&AI_1hZ5 z_G?9kQZzu`kq59ee5dxvu)l1Kynnx{L^YvkCrv>5bV58>SI+H>J6xTB_Qhk(D;>tv z`Q$0xq-~|TsM=CT(j8!356&^xb%>jy3+Da18MtNa6Ufi76QcVTfAUI`W+(7Q-GR{B z)+CNQ;#TmA09*W5)d;Z6S1{;&_l?18i$nAM)A8WkcK_tuHsa2v{#8kLcu7&WeeZpZ zH{%D6FT)3)SL40?Y;=)-1=szPgY$h2visXR+plSYE2sOXjNqUCu>Rs-5O#5&@Q3@y zS7MAG*7wK9+xg-xZ`Plei1IDd`qqDXpn`71c8RwkgQD6uf{t&OT=v%G1QC}M?9NiR zH}G_KLDU}~;K2qPJpZ?|;;*0iUuOmDAE57FejE$qU$)-Ajkf;+P5Hc}xaS(EGaQ&}pAP3if1Lyvzfqx4B9r!Obkd5&l{7w0P zMFR={vFDWjo0P}F_12Fv^`Y$Q(e;l!;le3Gkg`v~G)I%A=e>%)v>>^2h%BYxz%{ll71L$N8W1U;F;D z0smV673W}P{yY7*7x;gC)?cxI=lv@mCnwiG=|AiLUmbtS{X6ep`Tkn|UFTohe|;Br z_CNOEUnb$7?Z5W@4gdWiCjTS<{nM}f_qJwX{I?GJ7o_-~p5`AQ@NW^((#FNq>5q(P zW9VWkV)_>#_;=g=la+~(iQ`{}Wn_szKnP1)IT}`(vVOdYLmtUS$m%o*B9TJl$sT80x zH*r8jt*^JuFwL?!fgaG=#_Hy(#+;j+qy!#T2goPjrNziB&J995cX!sBoC;8wOMCNN z`VU5O0>|on2Ua9WpLS4%RS!t0-~#G_GcfvXX1H&*55~yC?DS4EvlWSBaA;x=Crxg2 zwR7@ETHNh}e}1A1P?FUQjtUEVv=51lj)pZje_=orKs&avw1Xu4VhEC7fVVKdGJtJ# z-UW{E>0@V4BL{NEk%xpe4@fMdnz?5{a3#UXXA{_%8=C9w-GUdO5_;IC1w=B>`hM2- zCIOQMxCxX@CwjGn{YRIp@O$#3p7YMkitexqt!j$ZAEzJ+vfnrnR7sM zPGWR&5u`wP;%7rH&`|fUuV3?T3jt+axv@vvySHM^0zknLiABjD{H&ug!_O_s8Y^3% zJF>$Ay)gO4hbEwmOw25xtt%QpzrIAlp8b6du+d^^zbLxC@>A+r8Xz4$8lt8jKjg`P zAX@xSzX`mgSC;{OO-}y{|4W(Z4lNrW8G0@oorazNQm*~_{ncXg^+ol-K%dy1@tJn~ zHKwq!ICMzRRrp?#1_Us2f*1k$OiGSTod1gBsBdb#dH1h;)=&J_<3Dxyg_)cZJ!=jx zTc5Gs738~WP-u!;n2ApqfWc=ElTaJ-N zzT_rgek9NL)eqUo@^NL0J#a2_E=zYY0X$)I4n#shK_ag)B#+J9PzU@+{{!rU-aik6 z0bw0qoa=s12g23S^#KMnz`QNjHT-`7EkM%00~nkgj6RR_6a5Fk0bp=2ast}f0L@(f z4RZYt_|K#L7s|}|2?L!h?M?p;F?~W_KqvdZ0X6`Gz1`pRpM%5T;{G3gX29pO!`10; z($58EmTv#Cg5@*C&q4aP%?e-u{#PDMpGDaG)uexOe1@3+^_T_z&CB#zn9$$W=fVHm z-~=#8{M-24{_k==xBfek&rB`n z!s{Vjq_BfUZCRh((AqJ?ZB+dJ4Nb5DBG`-nYYfTlQy2TASZ!aZK6asqV*!Dcaw zW5w7t10eRJ#`rmT2Q8XNG{q7bYIa15TwakdUx))z&I@`<pdk1~ne61j!@ z^Q82~X4A9CnOSU5z?Pjv&Kkz(s)|a_$UO-!XI{14V9*8EWFTp!@{-S$*Ow+X8gyqn zAR;ahp*UR`b-1T}WB0H!i@2+d-LXd;LgehI3qr`^u~M;1(`C-g@amBizrlzS)}n@X z0TEMj>Q)!7yk57FA(Y6`skl{*T$e~rCPj*48ZWt}EsT?kcPo1r8f*`>tJG0p|H@># z!6$au1?M@z%>}!1KsLFsfFbQsy{^b9Yd?)ut@NSBY0y!XKF5VDnkI^RPB6bYYiNUB z^~@^uclQSL4+Hyd=gdE$ZathJAN(eRuYg2vCe6c{F*DKQhi~}Smq$M`^M%9?h}Ogp z5?8VgLQ@0cs;`CEpH|=lz{glmTWe{2kG5D;4LXYX!U=1N;7z`z4$sy_+0n%L8ioH> zTS%0tt()?D?54nx(h9G;*l}LRJx;5;4gIaA&uu)8#||dnUtNIrj!9K@%aj;b)p)!- zK*%TCggA4rG&5#X_PhQ?AKHGKB*ZTHS%U%Q=5Gc&F0D)a_#yO(Z~Jhl|RZt=@f=9pFeJa zHppZV>X+d^hGu*u^|n;3ANwV}9&_r?lh;UdHZm;t(qN09SJjq#QWW7_g36PtN$IYRb!yphe5i$wnB~PMwx7z_ZrXt-yiQ(%D?3=55o64( z^+i{C_4eUsn8CBiHq>iaj?=E7F@RM-wA?E&5E+m^2M#12)E1@6&~Y)*GhF;X?xoZO z;P$e^Mnzh%Tcz{|1_2Y?kr6uu|jiO ziKDuMSwm_Hr0zy^VXZw^JCEyR8xkpdcwYA=7q??uW_R5j%cG|t;uc%A&qm$B80SPP zAa25l7kM2c!$Jotm2am`H!WI3=KZKAdP(Y3_V`Zx%Df;(0)aEVNq}sX8J`?CCvsw1 zfcisA8;x6!qhf)DekMg7gVvE0;jzTUG;}7~3Js$}SO0gU zQexkmchUNUODbCC_WrKdKpNp%co`u;{UZ<>&uOw>?s~r)3(%o!u2RFigTJ*J`lGVM zfSg5Jl^xvfb%(c1Y7_iYAK!x7Qw@48XiB_ksx9_aRf;%LG-rZqY?kRq^d!+nJ6VCg=TwOUYu>lO#`kbj zeqld<+bqzhRINRxO?Z*UTlpFGE39^qZwS4xI@qaW=TL7)jc-|SXu*(q?cWxoi&d>? zgrtyEhy@K0ODJqJ(MovIe`Sy42?sm5#=}e$V-IXjl1gp+K8;qfYuoLVRf(aP4?~5g z84f^TDkKwt>sS%o>587LmrE+hmDl+|X6~h8^&HwiJGPaA6IcCc2603U%MgE3+>*C8 z5#_40gDm&J%`Ryhd%lA%W7}S-8PQla$OHeHxl4;RHDCP_=w@}T{foo{J3fa}dbfzH zwV@aiVWSJ7b2nj{4MRV@QX>Q6x0t72G3IK87?rs;Cz{inh@Z+62VD*4<@xD$ko(tz z{^|Vyqj6GtaX~b~?kQF{F@8ylNl7v&-`C-2-{6{^OS=ZJvJB4(Wkf~P@FM{ihGA=a zk)8G;5x8AAnCv$~nY&LBd7Dlp!|MF=I1E!)OKFzosA#lD8%?^%$jT@apzL>($F18F38CP6a8lk35RsVvL0qykjUFZq*4>FZ86m& zaq}Wz#Yq7BPsUc0Kk5Y-GP6|;b9m5l5EtF+93oie>>b}k5S+A8Q$U9Ro)oFd-H`H@ zu7l2F2c)E~YQ`f($r&|eyGe&%fNMPXxZh>|@;pK1R}Ve(lhDpg1!1BTg5tOXa(BJBe)}(nIVvQ++Ay=JOyF2ERe0J;ib9yOJelYw6y}o zsL;taPHld+S{E*zQK^&58)A!7ZY2@;K2Ql%;cA6u&c5Yc8q3jSLqbZ#!|D0z(vSf5 z!U{EbnqgLtfj?R-8+OvwrVU3vrm*yp=t5$W(V;|pIC$>hk@)$}^xquIdHwLuObiTK5c=g-H-4U%h- zaDbp>u)-j9GE!enIpch|3q2jmin~4XoH~9E;;&vl>2;#DZak0vDQ0$mFS^PN%AK5T z9Jd2x^%+@bEi%!DEk>{C=30+}X(@(QH?NGeblBvMYB*XZBQ-?_MsjHA?IsWtQKn}A zfqrF8tIJlFeh*k4$eCDyoxZDCM9eFWKYorF*jv6D>A15j!U)m~Jwu~TM;0(t8v7^w zye$-8x&mjX1vM&c^8FTKV>0fj_)OpXQ^iZxFsd&)WH!9x7FkL2a%2uxgQt=bJrH7h z71RF`W>$z5Bzn41_E<2XM{ePSM8(3`V+;op$~_dUu0(h?!>1yhnua&{u_Nt}8_U1T z#!?A@KK4-QI$x*_NmMWmkn?bV(2jz}T!HJ+>>0mBY2!-58|#>!U8X@g&(Q=WcduVH z)kUu{X&LC>t&fU;2CFEgMTl;3JeL<=Z(c-?kUsOkT*Q>fXhHBc-71Dl%Vx*af(yg{ zxeu2t^_!tm1E}388O&F1qO}0+vz=C8heMh$Jr)dD9J^XGYmRKB%9;KJa?)VCV~}DZ zIhWSo6A~N9FgwS)XeG3*fa6Nj5h-n{1fLW*(OSUB^w?95zA9LvRop~~^BPYofj=n^ z9IJ#ZRHvq*;tKaPAKOi08q+*tFK7452OZl1i9e-;uweID1df+pq?~)8SoL+4#ph?ard^re4h#gm>XGtfCDyUq5{Bs~yYma6_f#b8O&crt21D8p+j$ zRwUq;`F>zCVv5Yd61*!$7~BFzY#V>%V~wLKodtHv_7BnsO9dFj4jpw!42V$jNAR}P zpM}DKI@+5994nKc^HL>DIUgD@HYz@u$36lv%N}#&q>R!Q7o-%cJylEE;VM@0LSUXA2{Q-zKC~^f6tmZ9l+0DK@xT{7yoj*E4?&CtCFX zqI$-X0Kz~0v2i1>>C?nI7VoX3f%VGvE@TW_#mU@sP3}u8=UiW`*3z{UR--;JN4XVk zYGo;>-8_acZgw*ZVauNDtKCJB3zs25S_@qWD6fYVVOfZ2KKYgMXaU7VsnMjWyek}D z#E>YV+DG9rxY*r4$Kw5?>^?y4_re_{2S`isK!9R)tqF^bg^$iGm#YJGmug=`KBDpb zF#kE405fK!MFm+-ki8kHxtbw%taFiXiy=2Q*ufclQhCeXnKw8y z7D}oo?K}mIDSV`gNm^vsUDS7E;`xJG&gosfpPdnPDJMCa_=iXR=w%qBz#=n&xzcK! z)Sk%q)Y&vW^S7Ov+qa*y(aztI@ESE060&4;BB3ghJGh06D{4Wf4E<;1IRs(Ot!;UT6qaj!g|RF+*k0;z?kqKOZhP^znh778&6sMSm9JN4S_yu^SLpS zpGGIZh(3I@gVc{_eH|I{-@QvDBN+8FN}<$J_p!fy{)W+{`k~kubt;!pjY`xqnm^|i zCj$FrE>|5jwN%)>x~&gCN;ZGCo5vgj>VY6GeAchGj+MEuqk_dvt6xK+?gWeI3%|VK z5xe*hPKP|jucr5T1~GdPjL3zbFh{Gl@L12Ton8Sh#+naKN|^ob4%IjgeyKvHPw!V0|?D&%0SQud?7R&$wqF4<7F9 ztJ8QcOYDbDQhbdAlhu7U+7aU&8Wp=3Yz~@PiJV+7g?2#_u=`L>dU7?#sf5hkMd8yQh}zK_%vKy0H^EGI}kI0nwK2LyP#>}(=a0ebR{~I^-tVeK&dwZe9rlR>-|{ze z9vHBp7=P3&<}|%!J0Dy!YzwH#>$rgUngrjI=@)g*l$_)-A+CI3_6VM_(VFMuyre-1 z)Q?=>3XnA>u<6Vf`Ctq&G^v~b(Zc4WG}ajiz4nn%)C$r4KGF0Ie=mf2XFpxWq&dF8 z*?Dn(AFa#GZk{gJMPRnyIbET_DZLb0{7IW#RC~ z7ar0>^+|cwlA$*r_FoH|F!s)7YcqQZWiCrwO4(B~6(r~OaDH2o^T1w-tllzBZc?|* zZPHdXlT#dvANT=C_&0>it`iFLbB!qoOQQa;l;D{Ndr&uhLmt?!3kwQBlAJ{;?bXAz z74Wgvxn9P<=1Iazs;d^8T&4GJ@5-&g-VfEI&w*1Q`DN#M!jG(tyA$vixL9k zaYE)28*2p#G;cTRS=Ng%v2uMU+gq*GLET_u5rj_`17xnXx)_euv_BUFK=z#TvAKw1 zD%M*!If5W*BQilMgV~MIBAExoj_Q^oh>+S8B+{$ZW?!^|3pF#-uV;>-Ve)ic#SF{X zmC(zApBEn>u<|ZiemX0F$9{X_^<{-yeaxzaH!{SwrQd0I1Kle+Ht^_6ia`LT*Wqg> zFm8=(7%744s$8c-JXypF(^po|mOqpYrqrd-7a7nVFgWU^?#s~6@bX{j3fcK#A}O1% zgf1+|Vi~McUJHaiD)G4n*OX{wQ{26)OX~Hkea1& z8=Sa+gB(&uLl8L`(8l7tG!BGuR1_8nS9M5??#1A(!y``F{Nq#qokvc?7)Dq-z&d@2 zKL8`j92LPXuS73dlb$q&Z>c)Sy1fT3>-+E91*j4oT)49HGTsjtePVihaWP2k?9Qv@ z1jDV}5V`c+FXIAS0#3DQ{Th1q1TiA0!BImr7wORh?0o{VR@7>irQad)%-m24>#nz3 zM`3NYRICxja){RXT$ajZ{@ASY0ZUY5_Mt5zM0*yZjd#*Bkfj&)!cLI{deSCUXSa28 zp$SfT_J{BsWpWdH)vz`fP1?F4QWrqq#pBD%Fb=_q2|>JkN+m?@Jy-5a$ZNHMWIvLf zzn*mYR5xuTz!RD53s%($Iot2sNX* zi^vlSpx}zj7QIxoG@@H-rbK~b(meCANl63b4LRFE%8qKfLQ{?<#?3ELbT)mEA3Y-O zfZ6ZAB{FM3i408TEK@Ta{Bz=c9l@eehT#anrRm2_sEm-zEr3K|W8^A@)~;%0hY8X? z;Gzz0X4dJ(sueFUJTa+8Z|C$3yI)lQ_?1Zwo#e`ycTtv|7nc^2LPsCfp0^Li-yS#F zR5{KI&x@B1rWQ(&@wJ=c04nsEBsOt0>*MDF-kapF*29XpjnucyF}h@H%VHFc5y%wX zb!_NUdIW`^6D=3HnccPLP7hj#fDo-d=8wH@o7sc0!`NcagA_3XAF^9k zRyC;Qs2!H>XMdloN1h%;&KX7C6G=9lo%+2occmV%X?#o%*ik3t}n0pd-CPO@*jC~_(Tkfpams@2G&T5Ly8wAE~cGt8c5 zli-DNF{xb-;``+|KT&HxDU-yL=UF2Z< z!^t>h=JDQf@)eu(X5+zNceJSHz-;Bh(x(_kI}F}i;{d3+*EAJ)H?Kl8g2Jq7VqXmU znagp*`o}ANMgwq%f}dMRdO2_s=8JwU0iAq@un@wmzO94S!&Auv3AqYpONTZb0=*%j z?@>c+Hy^!kA#R5hMZ8iCqtW0xTi4Jbk&ROPdeW@=n_^MCL&mWly5#0FS<48gj-i#) zAeP3QvF!4A3Bm+my~c#*S%w#4+WE4=k|odRmCGYE1~7wO8S}tEweMMpv*q-x;~_)y z^6IR=p4DQ9B9HUDrJV>HiNo&)s{Sa>&m@ZKW@LLAl<*DgMCKMfb>1H+|5Ua58TPJ$q1Cy3nQq0VEqZ*yJl%0>~4qgWTlM z&Xr0S1`Ao_OjA>J#I(vC&psD?iK$VmLL+3O6CFP{KzFB`B_8_+*R|k4irsqRAG_u7 zMhmpPofMV;`Io_6az-(dR)F*Jb?T2tN&(c>W+M$zFygZCstv*mxnZNH!{6KRnr;vB z8NI7@P49unJLIbR!IYY&Pv9y~y?ywYw#ToeA7g*=Q;4gge|Gb<@UnO2kwoIGaKc&_ zn2b?AePy;YI2Pl|^YXQ?Y1zDOTi55AtJ}WSb}ncIA&fvbjBIqMQEoz)QR^mC zwgD5%5v1oS#c93zadDo5WmS#R9BVRXJD)_O4Yb+ymsxx!oUCI%>rJ6Q3X@=6{-$-+(xTFcvad)F-kq7WyPg)=JF+{=B+KHE!Q{4Y6b_OFJT`ol+G zIY$~VU>!oV8pnmyK7Sl8kYptD3oIx!+cKhzha5cvwxeCpz~}34TCl=Y zrqb9YF!#F(Im&W&{c5w4o;a7M5rXD=b`rgA`lTq|=ARq6X2F-!O#JAGoODK$X{yof z&o?48M%`P%uHCvN*p4U{qsR|bP zCJjN-7Byq_E^7`ZO*SKCQld}wHWtV*d+>0kdUQ@J^dA$EUXj-RI!kj%tMww_mJ8BV zy9}nG{$;kyswt&ouhfIGco2?#zsw5Yb}2V93MDHHNaP|{mGMFAl_3ha(Xd&YyGDl_ zfukQ*z#UDylJLMbTSO6!CK%rQI*yBFdAfb3dko2u(lhqr1hHlWr5n}-vfQKWtM?e_ z5V!i`-vwIE;;trn{^D#4DyF~DWX&oFb{XG{P6Sm+mIKdJku;w$Ld=euz%#l)MOb6*uh9#2ji zt3)mY&V?elwFPbFQuj(>^&>3!MlMwg82+Uw!FkUm*mIL_-d$J3-HKRRfigF}N2q2z z*xp#@7MnE}ie!@_eFYDDL>Mmq$x$njRN@_L&W5jNrbeqCA@u>&qq^VgwO}Bofl44O z-H3W5xq#&WVw3I-R?rIadK$t|E->k8VtG=HZhvUxjk^KGvS2rC{yF74F!OEw3oe4I zwXW~U0@zgM?Ea560jg!y(HVy8=o^+Q^Hxs*(7`KS>Fs7`Iztm4t-fU{yCHA8ea3jJ zP3MbHa2Bj7t>%v@;WsY}Gyy2*;t{-9#G%%3r=zME*m8(kLlDpJ8h_TtT%_z+_1?=Y zs$J4=PQ63aBEMcVU-J5@04FbLAY_Q)F=a&tI86N@sY zHF_x5<22Ge&Bxx%>*gbI)+um=82{)7M@J-6m3H5^Y17QH|K5|2XG6{Q+)sP-^Oy3P zDh1ptm`<%pR%G$c=86<_t7U4|0!w+llJ&Nn zAj^MY`E`Vq+8Tmo96aQOlBHPZ4uYp{Lit95g($s`vLkHYXDXuU#}zbL?&JApQnXpF z|Gpcu^fi9LPw@I%pQps{%OE~FI&vaJWsw=MEQU)h7Hf^RdKMWtBb^(K!BXboc}xS^ zOnW9o$%5U*wN%ZpMqTug7SYc1jX0JsUlEQixfi6>e)CW!m?6NpD>9zwBHD#U*0+IB z_B+pthAVB8t>rWd*R*S)RwD7Bd?{VF|4x$57isgpu9>6t#-^WF(^n+<_MJ?Qiv@oP zp?g8)d%EFzOo87rKPN@`c^BCuM=V3tss|u$4>Lq>>T^kc+bLhDJa{lT(RP!%# z(_a;NIH13(V1rz@KI8|jc9?BD@OTUdB%`bz?YkM*dv|uq7WmwP`iKw2AxE@tnEfmj zcz7{Epart~gr0m9(MIw#qaF1d*FloygXBd@^LyXW<&e{j1G&H@m`?D!O_+kmLcFj- z3@E%iuwAh-YAA058OM6h)H3UfE1${S=5q@*oYcJRe@yF0Z$!;Tx$$g0E@7IXjdQF{ z_AY4W*?8w-Ayd9>MybJYGZe#2h67YB7^ZgUlt54~^ww^2VfU)HwXZ#ca$_W#bs~yj z9V;FBCQ@-PT0rEukbC31nbG{@(pcIYSH&@ZdSts0zH;>e1!sxFgB#nW;Er+IG%V=I z;GgsfgnBWJxyTOO!_<25fpWr|9|R3W**Y5io9WBK9BepaU^nJk5outtD8JCkv!uIG zbd9!G&Q4ljprW_T5*c}acS#aQVCU2IlGh?C1iD#GWd}j+DmoPGGvj(1MA*Qe^x*I0YX@G*qAyBU6;;B3lD&^JK_IVq{%l&^^2<3P zitvb&!WZ)js(g6J74~EvuI3asW!etag0$h&mf50>L4cH*P)Km7@b*Ta&lEGQH9K*3 zdQZo@6>5%tB=tpkz3e_QRe72rLKqHcYpbOhC8$=5#`_anY2h!%Cta0h-zIKl2KF&Z zFsxi`qo`)FcDVfY-6pvf>qqgm znNL9;y+5^H`kGd)MM3< z9g!Ycr(!O#?XQiVQhMT{j0{}Z(V%tgWITEKal>9UEC$8IMQkv#?9fwo^c-(@&jMNy zajUEQzhWwDkAzBVwTsTZMHl35Ts#nS=q&NXxwb1VqLnwCn!eIBE86L&Kh}`gV)JHS zD{k!CBGaWxU$nH+-_YUYahJtjSEd<2l#D4u-#OHZJn#ibiU`WLvh7{$>_~V)BnOmhONhH2&YP_4cu(kJZZS=(9>^=m3-h2N0*E+_hy--(G?c%e*0j}I)c8QL%Q66hpB*If$MB@P|%_4z{9z!(RWimo%k6#$|OYTn+PXS(14~j+w zL@p>x(*t$KY~xt#+v3ZBjbO0(>0VV2HPbDeE8gNp9c3M6eX6S@HFt-{*hhvKcL)<4 z%eiV}VJI{GKeI7@52b0Dd3s#RQ76{!rb{t}fhQ)H;{^|CYgH(q=wd5GD{Nazy{ml1 zZu{wCxKOUi3K~+oz~|~`nHQLoVl1D-$+3O^JZqOlWsk+{Xc8+eE3EfoarclLF&r#*vCz$&g0cU&yATOGaCMzC&kdHxIbREhR}Z|)anSGRA-MEQkr1HteE zj<#iBwwTZRAoC)H18Z_V^FOb02^tEdzi3?8@GL<%h4+fst zR79#*kCWFh!npkzmU)I)&JTABn$Ee8Q*NXBek#EC#ox8DYV4*sjbcHge z>f<-{X#D1ylc;Rg*esK)rrW*LZZmKpg9yflUB0zW9T5KqNzO5gM*B4h^^9xCFX8mS zXmCUjO&}T8Wp9!fa@m1ReI`1nl_DX z_XAE)l8I&B2fc-%y<+>MEA-}FJBTl{XR2}@g!eD64$|N{-p+nMn8iHZuSu4?OLkTd zDH@-T_QUSeG??b7BiyG-{F9Fmo}x?R57W@rI=)O%97l@ALS~ir7 zpoLIX-FCvdqg$$@)hav}KFVoY`{&1}NS;nZrSQ-HRmIj#7>0DSr3PM;k(-z$=bj`2 z=LAIEf(Z&#%9xxr*M2Rjb=C&kE~4_#ER~s_oohc>MRWr7U>~SV567u|No}kb7Gn{= zB`>kX2dDCY3fVSE^K;v#1v5jV4?Jg7G!G=nxE0vwgUSiafF&6)BxS6Z@yG$GTQk@- zBKw9AY6iaDClfcQI*A2iwfa*UeZ*IA?CO50!g+@&>YMdR@D#el4BA(G{o|pBBHgJa zRpZRFQn4HvK+16oZ1<%jL=eJWSRbi5+=?}{O#|=80l^|$fzj*TDI&W3#iUQ^rk~=N z4&a(+;(rHhs2wz;W6Met%GXLq43aPnUMmqe*w6|~4wCOn$ciDz?Bzpa#V@(P@E*D_$NdM1`PyyU%&;GCC#}UJ_xyo@M>}nvg6nX{#w8cr zQtjkD8Vo+QU{v{3N}FdQNql*7Z#OOZ=1rx@HBwk*GC@n*^RR8G)Rw&y5acJN12-(+Or+*!i@|%BGHG zUbahA3EUb^g{?z|o7Ub+B<1b&skb$TCtPr=Tm};JR}lUx4@L#lg}_e1fKv`xp!$o~ zh7VqxIp45Xbl3v%_e;L;x7Ni!#AB);om-8A;~g4ixX2eZ{OA2Q8^8Y^Qh ziAT5O91gvfNdg(i|Z7`EMQ%AHF%PRxzn>}pWFINQ;tfHiIZ*objkF|Iw&DD}hpl6C(? zVscpAybnpLrTjF;h6>fJzy4udslnJv5W<8W@zi*GA|4+sBT-f`4jqV%z@yW8-|1XC z`NRkU)@uO?KH5Z$Z-ZRN*^ip{YcJdI3!Nxrl2@2p_Y3})-(_xijTLo#XU(jWpo#5D zb-u5Giq2h)LS0%j#SNLJds=zFZy1TOqsx!ZMN~l8|ENP$QMNlv)!#Syzn5kNtsv!I z@IXjRGF9?)_w?|13FCgVj(SLX9Xm3C{JsM(-*b%J>CXo;Sv|6k(k+YTRw5V%5~U^N zEGH-~-gck9R>K=_PYjI_XO0ly>ou&H$yu(4Y5pB$oCL*S2^{oLK?Z>M$M8LMPei=S zeOoGh-!tz|k46GpZNHDjFHA>uU5wm7goVP$-jQ{AMSqZ{xNC^+Sk~S&bk#NCswd7 zAF0$wH4B4riZ_O@8d~hvA_eczv-%ABhOaV`&OEejr$}y~+KS@^jyVgfE`GmTN+6*R zE{+g**sRIy+nQf5;>Tm(*qcrjP%Q-0P|scsme@32@lDMxqyaS6 zI03DHYi=&M`zfU;*i^s_$JN=V?j+#4zLF`6aF7gN>f}&ud*N7xCH?6K`Zr7>IPo(z z{rkw|Eaw|sQH@)*aG=aJftn202}uYdH*#MMqO;{-i0N0`IFTfqL`ApA>!9pGwGJ@< z62S`e`bdWgZdYX~6tVr%O@zR$mOnR|{+FSSBo+hTlopJt7muvSehB1#b@%Dyo})1j z9j>b(x!Xr4%4;@k;lzfyVmGZRgz~Nys}5EgK>TtOmt_Qh1eeJz^9)W_P&eI^iF zucg?AYoZc%5;+1%7s2Dpt1v7bjAVZ}!VEo}RdsY9VA zrRt4|w-t@T?9si^4v5H@pfaf2qZC&{RgA%t9F5enLUXv>J6;95Ae0qxe6yFW2v?*x z{D#YZN3Lt>EYZHi@v3q$C7^E?e0d11Y9wA*va{=XiJw#mcJnd43(7Mx={F(JSS zNTW}zP@XpI<^+PBe=H_~J^cc~9~(Us>J!V_x(FnAI{dNy{jHGDM;<_RRYQPS;MA~4hU ztHUMWPX^7%I{TG~ba02RInCeVw4jJ2fsT3U*>y0| z-KPz$S&z^oGM-74*;b0XKxgrjScIP7+1Hct(Yd@9{xok~THJgZnL5%!dvoRtgAI{a2tBhw0bsm){M%IBQk5*)+PBJ28=(XTn3XzTxee zsnwLGuN{Ugo#L{^I3tG*^2jVT!Lr-lq4o?rQ804_#-aWaL08(^h;9sSe^w5mX!4;C zv<8U&e=0KMy$g=}0-)f%T}AP z`d+2bS~Cg;Z=R7^LfOK} zamQN{K@nc%K)Z0F{5X`AIBZ75ZA1={mR1z3+QfoAwb9XqulRlgbPhF7>0O(y3!>)_1 z0j%qdHTj6K5M9E@$P*#T=17T38FEX9qNMt1#ql)2-*I!uXd42&mlL+{Lz>E`oEj1j z5n~9!wg_*DO>xue6{Hh$sT-ELuhz0SJN78)Xmc>Ah+au$fcPpIt9`ZCr zzOTBt;_ewU{St?dDk&#f3j*?1%FmE`nIRs{7;fx6s!7ba|bt)GKUZMLjUdCFJtG*g>j2iIEP4j|aoY&9KFawh1}v61$FF7x+oOa6vC=BjM(d?~**A@&WTj z7Mi=PMeayS0N|~rtA4<+8g4#bg?wpft`D9xy*Jo!s{kz)^DH(Yv%bc=Q`0n5Tj30C zGsKlM9HyY0BYn>^CU+%qwu0uTMq9uj_K};%J@C~@CJZ4|{Vl7FJ^sAzU^8$(#m|r$ zRO{s4lA*dod}L$kl=ypA)0mMfHmaYRo1+uol3NtvUh*l`Kwj#p!affDFYwr7a6ahd zA%vYo1cKv19fdm3Gx!iJ&of8W3+><_jS=UeOX^ZuWb<{HdN$WWJ|>RT?-u->oQKW$ z_YAYQJCo^sW?SJkH;l_wjfyATsof@qh~KW5luy7_0tgsJ`LWM$uiiu=-&Mg3DK{6v zrzYV>QR`;jev(*X&$wc7@%5c7iax~hox&eTLJGyHVs?vA6g zsJM%o@-Jq3uiS2khJ0lQ&p_IkCA zR11=e3L3-r6%f}Ks07z=aDHoQ5(J?r^4^E4Jv0NB^OB>GRyB!NXrsq7B z^5aB&Lv<0b?n^Vy34IG6C(o%^M_Awr-c}hcaHtBjy%ThQNXNgrnlJS#vUcV4l>06u z*Ya>y_U-F5$)iYPbGeCW6a$l`C3B(~`Ig{B3HOr#*<8sE#B7}|7QSQX-A|I-93u6+ zqgkZim=zySmgiHKC@6p)cc{x0NVZ%PoNRuaLv)&98Nb)j61=ZyL1Aj$*rRPHCUIE( z*WkkU@PyckEVP)zGx+3!t8MJcL*u5FlEC2WEp|-A85UXHZXQFJ%}Z-XfN(cgUx=tHf#v)Q>N)1U|TQSoYoRAD}^P zmcw-v0iiL(=8fMy8l@a)#iz-gaTYU?@hk6ZFBHpB8(v!_$+&iN5^{M^9kgJkTZl;m)JWY){WkAl}0}l z$eBKa6wn*(ABdGU;V%uxYoo^;@#{Sx(!t_pIwxBCkJw8Poz@Ji%$)DM{lN7Qi6c&t z1ah!-jq}JfU(;nEdQDunsU*`O!KpFSGE2{wD_wZ_62*ifrNUeC5UNc+2>)n^?oMCt z9vZhd?pn8uul8^>GFA$$zAsLJ1%`=8o)tFm)7H~^NAjV8uNJ}q$uY*BqZ!g)BFV80 zhb?~RQ4Jvl#4`g|DbCUoXte|OB`dx}G85`HGWE1mev`IB+P3pb|ns#;SFIg(V6HpMmjKvWf(UP5c zL6~OHe>OA-S6I6;=}ay+Z&aP^Q8?C}u9+4J7|MoOFsz4&5qN}<>+1%arljYx*ELS> zM`FUH)Ww`7Cud}VS2$KOF#awHH&#*elL)tREQyvjI=h`t5{AL@3ZIxDJI~@56%mgJ z_`xdd(=p=Yv)J2IvBWpjnsa%t=GmmyCXaD!ybbJWPP=pcvB)CZY~z!ds)Sb-*C#G4 zELf4g7s*qdO9YHxuUGRL$jt$Gc`|}l)8959>~PLg$oKnWbZMaFn%QF02F<2 z2%gh`JP&QQC+^AEOYKn!iS(I>A4NeLLJEHB$!2>Rt>-e$p> zmR@L3XS-iPq^FNMMz6?^tn^u7BM!@PbLw;Q_#{IgEGD6N9T>>&#)og6Z;DzCs#6xr z>F8Oo@7dZHGb82C1yG@n_A`A=HaM7#XJcEdjEHVF@qPw#r{d}H`-ic8m=c!fUd&2t z#>1J1X+k3%h^a(>*Pf&Nmem}L04*)mFfO5jQ=Y|=?@`ovEw5hQr<4;7iWIn!sN0%S zBtGnIa(c`}8$|-DRQ%gGLAJoiSPI`$Psq$T@15~(>6fO3Tr6MGuBUH}a zX?#C3xOmF6BNzJ&$y2H`tr3j0N?#%l^qe*G4iS0@SV5V#{rabnNXA!Joo1I4-3*2OePUktViLcVTeALH8?HoyEqgf9K;HIQSfCO(q2Jsu&7G zW!g!!_LR=m25Pi=-WQMdZjrHbtIZ!Q$7aU3>X@PoZ6|V?YR4}a&R^6Of9qtiA0o!? z?-ikF=aa}^Mno(BOkPrS8d!1t-X~t8eynW0MauY5@P7ayK;FNA#04z(J#MtNEHZ-F zDJd6nW0M_;@_QZ~$lhMcy*@OG=^4p`kv?vuiy^!SCxCytBRmr-uNMy>vpc6DVDW^b z-;Vlay+x2Yb{D;mJZR9s}n9A2RruF4`KM~1SZhQUQ9?@o6%DijSq_OK3v z;X`F>0L>wdu~^hkUGc@2Z|4Z{UNU4ZVwOem+!{S1bS5{b3Gx|#`KApYSm#X%H~84g z@UY%tXbIUI{�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�ntFDUy=e*mvRF-d|%#EePMSwQ_H3GNdaGQfo!xU`(O z7aomiKR|=#C?1U&2jFfAXXX-c;RfA(0UBs-8FDce)MJ8sBydp!@sZ5j4m^%A&n1t> zj5R=m?is*=hUP8a_Yll84QSNA{pR6j3*JiP_Ve9C7LI=4Jv`ux4c<$1)^Ru<;1}TH nzrNR6<803X1aS8M{2IvJ!`98?=eHreXOb*oB_%ymec}HCxci5t literal 0 HcmV?d00001 diff --git a/doc/memos/rrf/08011-RRF-Histo-Fourier-Averaged-Ghost.pdf b/doc/memos/rrf/08011-RRF-Histo-Fourier-Averaged-Ghost.pdf new file mode 100644 index 0000000000000000000000000000000000000000..74eb41ccbea59401f6c5f4b7d40aa698a0f22603 GIT binary patch literal 189747 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�a) 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

)$i)6qSJ9s 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 literal 0 HcmV?d00001 diff --git a/doc/memos/rrf/PSI_Logo_narrow_blau.jpg b/doc/memos/rrf/PSI_Logo_narrow_blau.jpg new file mode 100644 index 0000000000000000000000000000000000000000..aa253979d60533db0d33114c5b243394dbe52860 GIT binary patch literal 109723 zcmeFYXE>Z)*EdciA%#SALW&kWdM5~i7_cW+H0@tGimSR> zI$9Kzl$2*I&R9@T{31|j{6+m=U4J$5f7QTWFaLT^K~F;!L{maVd7I)4JtY-A<*yGE zH~wOd;tbVaPf+}QUAjnf;p}_C?F-HVRV994QK}Te^r7WpI(!Y zmQgoKtsaxK_p9TVdhE@^dq*Ql$M~a(gU_@4({FM9=H--`e{pj9LvxP$`~}K0RA*1C zjp!*UD5)r^sLx(Gcb2zZV6yY?HG^xV+|AEXVo2@nhs9SBin!BDK4LW>kK^=J%uX8{QLiW^?&~T4+8&# z!2cld{|W&Wy*!`vs(=ePP-UIXIP}V*bz&+OPR;`>zS~!=MajCjVtw(4Z4gB-e8SZJ z5E`iRo|Mo>hR(TFr*&*c$p1{Yn{xSC@T~3qqbqIMCwi5ewI@bHycIvk?4)N?W}0+?IJHwWI~W@*RaCqcB$2$J^=1Vhv~fMg z--%SKqtrh1=HKW#O}TGn?gKJR2nH>I#&2X?|JT=mdOA-7B`ON`~icsIHzel-zJrAGyjINh;fHTPTXC?>XOJ5P_9&3N3w3*pkd^W*}eHUsxtBB#ny~5z>t_7_INIg zzJqz;IEQ|}=Sik9BxUjn$56-hLK|ri?`T$}yv~qtkjCr7dw;V}*`4FG!HrKW#65t- zHvFP+yy3RR{IM~j!E;S9bqm{Y$+pNRP?;zT7PTD?AfS(<2%f8(HqV9vwB5LTLqB}a z++I~p-aI7zqDXxr`~5P6M4p@5|LJBx0j8Qg-oLZ&i?y?y`xuTN+`__0LXTU#_XB-w zCkcv}&~32dm1<~lp^qYejpFTamke{KdlU+<2zqFf*=M6g>7{Lt65VC}e=Lr5*nBv; z1HHE2)&ynXvn7rN>W~6c6ve8-60jh=?XV0fcQ(MwBWu5{`UbV+qtDz(@7P52FxF+K*a(z2tq|UXngnt^y1>l_&3h?%-Qqum5pCM4ueTPii26b3YSW7IJTY^5`OzGGYg? z-<{JA<$((PqNv7s94I$!AsU3ePpZk=+~}6UUliX}x|Rc=6%omakeh$Y>^~*taPD~d zqRn~two=ob_;zy?gxZ+&2IgPIcPsdz4Y{OgUClXp8M?d?W7V)(b1g150PeWOv87dE zF`n-@q!T)qFLO`w<)O?-)@0dN>l-h2J70K!Cg34HOfj5f*!Iib?%)DJgDrUZ3f{}+2x2y1_&jr^>% zP#*o~{WSk_e7y5BV7(CSyjA)+A)^ulH`=Rh0OrM$djP}!Ss_mbdq z$r7T)sF;f%y_>zdv-U#=6l>6+R#w)*P2=IKkA!U0NuG3L^uP>lS zd97Keu2$9puhlPiX5~FT?W4$+%EBDpzgL3!M(cG@y;I0hBZF}ik{3h@p)^grlMs8aITF#F3FY*Fw zS5Z4Wwi*)%3?{$X2QDAnGDVlRyxX#yX5sh>bs&l<6I9lUNq~-(Biq%Q;1AMT6ja5^ z^-!CZ9&5@N-#qj;0t+c8Bk99&KU5e>ACQt;Q-STo9Ao#Tdyi{AABf|(CIa%KxdutC zGaA)cruTtzmnr|tcID?1I*F|(q^^TJQY9o1-8n5WTD_G!bEF8p8)!sKd)%T!;_BGv z=pq)9y}*jxHCWNgnVb|{fTFESwyBia-+Fer-2*kJesDwD;L&;k9!!3j-@RynI|KeT2ir|JmnDuR!OO!sc4XY0C3x_H>_0unJB#f!}KSwFRViK z2cO+BfRyCznOZ-?8SP&bOkEgc6L5UPAc8e~We|bblxB+XU65@JO>B#E{6(R4{WDa4 zbn+m#FZ%#gY&ipbh%4MU)-<*32M#d1vG2>pPI2w=IJWG>JAVxXxD7th4?)kk;p!&#dr)Oz4}+R7vY!2A*_d`fyV2- z`ZTTKbFTWrEu~NY?mD$O)=nlFntCXQ+!&j7m{~<GPj?FuY5rM%jqQ0O$JP6&KxIBw^TU|?(3>G z-TaH?E3ptgu_N1Ea-QU>FL4S=z2J^WKT08ETon=fQq?F7!k5@Wc50lO$7jONTpWXHsfcKCzbMA)B?_OrG8bW#fw8gqn$ zoxb!7TlZdAIjDv|fG%aonTMIH$wq;4gk;w-#u-5B7{1ggrZ(x=bdf%5=U)^bye&w& z#B{&DUO9D@lURtk?U0mHq`()Lq`@8c=Ic76T-dtTm3rqMrWD3~d%Thb&bH#WRwsro zq)mVugR=Y34p0m9N?q3EK~{V(u1pTJ@5XQrm2v2Ud-!T3r-x)1sJ5-gXnRDI!mSp;iRXF(B4zMmZDT^KgC`+rPihO3e$ev$c`P$P5aAzamaJ|iFR3>+g7e8P95+Qos8JMyrAj(HTdIJ5?x>} z*~QP)v+wh_uquz9?3WYof3xK8R(}a>*Qim@6H>j;ybmQ=r#mdQehN!!i46{$*`NPK zF{p^#y29-PwZd2KMfj!!xTyZ37?NIT^P?Mm_EhD+7*dRy#x&=E$$sN$--_Y&Fy*o- zo0iub!Nwycs9eYX`0Z4WqXc69tl3u)zRrw#h`w>|;EIcl2P4spFHGM7WbBONK|HL< zM?9gR@H4xegsl3pPTAy6)D=6t<|o*;y>5> zaC<8B7lks(AQq~Iw_TKPb%U1&^w)>BdPm#)*c=T028n9*hl!BGL(W9c=Gu%(tT~&5 zB6~90XS>x4Lbwz%gDG{@zwPaBj2wrlA+K+2yc>C^)R?UjvQW$HTCvkdbLYmr^Bn#o zttl@_>}2PU!_2w4E}+tWIainm4t=p(wa05pJ5A8bBhE$76Qn!= zUEJH$25>d{+$}EgSHPfaE8Wl)sEG&5y4Ej>9!uSRso*q#OZ-O0;$fYTp}Iw9HXzfy zPQqUy0|(@dv>!4R=^IGa^1SQCb@f@X2<&J|!D6c3yvNdQpuzKSjPI>aR7jS~w4swx z0_a0}5y2#v7F?$_Wg{4`)>N)g?)}**>4n?Neq(~ups)0$Inc7cIVI{;rW6#H2Ry3h zL=HI746$Es)NK=(NJ&u{PA8knRpB4PibVg8)-%o!-CU z#zO-1`LVm4r#SjC^ttH-tGays58vf~m-q9a zkB?KTHsl?e^4zafvw-C{CpT-4)bIxO*YgOX2ELrtM?5S=u|Qs-Us6X6f%H+n8-hTFS-BY3i(p~ID%2jlro?Bo+gQn97g5> zH;Yq0nd@!sJ5HM|s(fsnGkl;=3X2a;7}}bu!kWw;5@Yd$AIVv{xD|G4kKf?_D0cmr z`#~;H*eQ4HK!ao#FV_4TPd6Qaz~ppUPFSVa9ivI?d2Wg>_`wcxv>SvoYG~i!5q9NA z)ZLsveVmw4(H|`J1;7xuG5*H>S^jzsrN`F1L`?m+ri9PRsa{P?DMVS{@QI_qCc2S; z?fS4H@-ahwSp2k2J>nY?1|#01@JFCguF;KN@A}8gPd;!BhV>8|PA2!2_V4XWkP`#V z6%~DJvE^I*H~0A=Sg~3~md13O9NfODqvYvgHrnZ*(`-(iyYrmcf%Tq?-RO2527iQC z5(#oT*$S)9{f*AZW2>;CKuHq)-{{mrJ&0%iLZ^r9kc(TzpD+52jyS4L4+_O!DOdVM zQFz7oV8(7*g6!Z1y>;ZK7`26{^@ySEnIZNq`jWw9IDfK4M^*?5h`rVEHzM%Zj5*Df{T{b~)`nVB)({%x~IvWO+^w?}rCwe4m_tIkBJ?lhF=T0JV0?u9{_A*wFA zSGcc8x3t>EIWbc~=l*pJ@P1k{m@kgoEVK=~S=}RLRauTddHy9QpW0(Wr^WZG2_yru zSS*(**B84l{m{jv{x<3*(#KrqB3zpN@rKUX`LQ{f97iUafjo^aHaEUcWwBtV0ogDj z>kyws+RKSe_3yPpSMHcIokvcJf0lDFbbP1Vf4g*`z$G3S6Sr|0_N4tNP&m8ddCuuV z?CUgb04b%hyt(nUr(3kJ>(rfDL4r)zln(~XvB^014IOCelJHdnuBXKq@&S$1yBMW4 z)FP0IS70gyOCy2CQQ9RYYzhsvA?KhNX#D^h-&3rMR=uN@s5vp0x1jOX`A}Mf5j?)R zkpxupBR|A>7#ke=8##-%G zTSggm3f)k&!PRx9u=cHp%m775_`UdQca%x4q;6bXd0D>ni=eWa;kZ&>F9Di?>=*$h z;m5zlO0|+%z&~7-z}e51y9Nh|WNV(9aGtk;LY0=z9W&Z;VAIAoK;1Chvg)6XR^L}_sEi%S8o}>DGs-Vh^u=5P+k~)&w z2eesM<-V_R5`gQ#>k7KA#mxwP>e{)fu)tfkf&RySit*|zt)d~v^WLgii2~$+WhAy7 zNW}HQ!3~Wi%1`QoP4u}WzdOf;itjxY(Wu%~IdZDkbrlm3KB$-0@%u&L=3o^?+VD-_ zB(kcxOj~{q*%yyT3D?eAND(Yq_1V-)y6SKwsE2oe2)Tku$VD}w>NT-+XWn?ntb*aVkGunV$QTzKGlk^1IhrF6w^L z*RxVGP~rJc^8Me9{JUg}nzJWpn9bxPkjxjy$id9)AI4kQt3@iUy%dC$J2LWXkVadV ztA)S?O1(DHA#v80-&6kzdP|%Rl=8#hRM7(pYMZ+eO z)yoCsIBMdMth48gu`X-%H!U-R?8yqYlma1W*}jVX0^<@T8yBxUMH?5uY#DMB`3`BI z6d}a{BL1Qv#?#274(h?@t8ab|6b_F$>2%nJ~wb&y1N zvnVJz@{K_%dNp9wE$~IOQii&C&|(v+VW{gtB@-Xqb&t2wV^lfYG7|%tC>Jw9HVF*8 z(d>r9EDAz~rzsPv(1jAL(#e@=4{*^waaI#J^*ywIP1N&og8Sv59( zpi^4z{ZW7pA{Xog6OVr5qyd!$(;8@p&>_|f*vzpendpX<#hz`>8h=LQrZalEVw=(9XRFMMiaQkLtz+99! zF*roAr;a7I$`^SlH*#M>2ui$^FQHc%3o^CxZJ5JZdUlrbys+9|^+bD2v^}W#T6Lvx zVOBLonliOaN#JD}eo(CsB(qX%$*i1pPaU|ChCc=c8$u@Tlq%@MWpwFtCbWu=J1uQ) z!-+&=tjx#P6c37U^aEmpvo!ld zsS_=&ug~^&$>A=c%jr3gbn@bHPJtH(ICT-{oGdT)3xBx)^K9Q;T{HhhVOL@|qN>Pz zLGnjbpx5q&A`j@N_>gsJ#a|TXW?6j@Z#c)lbg*z79WdIIdy!1S9r*7ewDy8cT1b6a zOk%;PQsGf@nbkLb{V2Bbas&PG#2MGie~I|=;Wf7pk{rKYY6TYXOvEJJY1iN{u28|&OQpb9eNKad|M?~o8!WAX2sylzH z*_lUK8$^MID<$WJk8h(*9ciYv4l%l(R2!7Bst?M6Y-cDgihA~t3T9@?L^4uIU8UuG zi=>{Ev>|!V8RM^5tI2WHkXnAn3|U`7@@`qR*Yp5Xd`O(mA)PKH-1J+JoU3`u@$|@d zl_%Oib4E7r&?m?M8x==+k#t4qZGgo?yejmly5LLbr^FwM1(PNzA)uL*x8>L7&_82~ zMD8wy-hvXDnK6LK z?St=6k)>ijB1h2c^Z3`94{xcqyR=Frpm{1>c$ocV}z7mx)M_!21Xhnqt7gpdf zf2{k)5Xl`XNvTu|cfwvIwq_CNHYWzkqQG6WLeFB?1yDevqA}y}0tBc`59ebLApg~ACtg)uEX+n>yZ z2z?CXkjd=4BD_EZmeT0pYvD_Sci4mevIz>xYx-3!LIfR!FB=hKoOAvk0u<|6 zilAVATTX*R2kca{e}h=j3BD^TOd^3~YE#~ziE;e&PiIl4{cqukOb6KgrO>Pukj+&K?Z z@cqjc1PoKVtN9uRh_ETMV$s9^?X5AMdLhO8v9@m~*8$1Uhh;`?j1vS?0e@ZJaif5a zw_P1{Gfg_Ygfe((uaclWRseHm5w8|gp)3aRX^PUbU_FC(u~z?LW@@E4_}!mH_>Qq1 z(^>ks*ZL74bo6)=*FE5Qa@M3#Ie|suTBTvhtdGgEXMje{4KuXORWkP|Uq0S+rPxqp zpxwiYjZ0E4^L$0MikA26d40{#*(Em@%_g0C%#l?|Vxf7FhiVHH`~a2VrU6 zBccSe=Jujq>T$hfLMggzc!RW9-hng>)JIA{_L@!g?|-V1&H8K(fE+IH358G1g||ps0=S^D%#};qojR9*Da&5)XyT~p)w4U?468niEtpSn#k4T zo87TBse_Fk*89iCi;%ejtqP-!3!;5R`k|3yx7V`@O*I`?;!=89wV!hOJ|FyH^+>D7 zz1_VPy+up;NXVW#K21$3c(YN(OkdehHrFp=Ir_|P2~_`o1&(ul2wFKv9!}esBJ-Q zsR^Wx<8`^p8$2l=3)0%{-eac?W?mSFrTV*-h+K2t)G%yv?PZ#ENhw3wAB3CR zct(R-NIW8Fgf9<`vB|MXt9f89f*hqQMV~DM1Scnr1yo$E4)|DJbh_IPDUK!C=;6yi z1Qu+d-ZZHHI@+h;wfBl0CSxpn*7T*W=(~z+E9qi?L8mF_mM6#x^LnAW$vr0C@>-OP z2P3zAR^}lZx!CeHSXGxvFne^y64kk9iROD#@H(Hzr~670aY-WxcVS7wc%VWiEOoS0 z?E-_%Ec>V_NN1#&pC=#i{khBG#JPkHz%r2NUWuA_iYNp`QNL4x8Kj*|lJlKdk*1#V!`7`zQTAb!Mix`xpe( zk;!u1HmpR3A?wILTQuu@^cp8t@cFSd$)eS{_d|B%3(jUEH0!qdir&vKEuCF18MSDD z`I)Klj&2H5Mm+U@Rvm3-ON`I3R2UjUhM}>@>4Zdw&*{1%gGyHXi~iY596yeBSKv-o zm9`CJ*(pgsvp5%cj^*P;oe4ERGn3jccXQh4zbMvDt%@0{xIO+Fc#i&HQH44n{mUY?Dzn%X|NPQTPQoN!I|-DJ8igZQI) z@LZwWbS;yOzpiuilc*uXg2%D8+2l?IXRC&ijmn25t9mU+T|E)|kj1J%K3NxIgA@oz z2$OT3kr1llA%40U1^2&>RSX<*a!2bFDZh zCJ&vW`Xr{jDbXz0+mt{PV-G#R%h3Yw*$Gz}U&)Ii(i>~&fJIZwawFwDLK#7_F69vc z*sxcRUbJ9N$?4z8--=q7=G2#}uP7`et-K$P1e_gAc;S%W59hOmwd` z#*0_!#E}i`M_DhJlx&%(R|=h7^p2Gh4o7ucgJ0% zjPbNp4Ye3ys~lC}l8|vHF6U-JaPH!)mtIHunXASY{e$Sns-MEpXHDzfN`(`Eq6qKEo#wiOE9ggd9-x}y zc|W*1s$a>YKOsj8E3i8WE}L9v72JFnnO|pkD*H3eiX@xcmUbIfYP-u>7hSG1Ovnu6 zoO6Thy>+xPTaV^gIhvb7kJOYOC45t_DpyZ~U{FA}k`WGl0Lo2^Z( zxKVJ$GPss=#1EQO*#|@f6(3t#33a4o+~qx=W2a>aoxIfkO;;Ib`zY1f((!GS(EuL+ zT);DW-W7nCq4(=_|FS9K7%{P6n0s*Gp#AAb`;D)G+GU6lZ?3L*80!t*nc&!~u6cCR zAVtn8OY2GfWev9{z2+F9fnb~0CWwKR=H=!J!{womF(pF$t%+>6sa@}#;&^sgcIHI& z&~zhcXw1x9AY7j+EN|%-MG*iIcP#DnL_E%P-q+!s*7|02rc!5TWX;8_EqA{MMCB*n z_%ni@&^~&4+Q#B!V>r)Y#|FAY?EaMZ#f~EuCzO|+8M@z*I9`k<81G;S zUlb`#%1)=DTYj3wcsa85q!~l|q%sG`#;hPULy$#!LR)qUzJ;nBnYx->h1-*&aAiUrY>%j-7Os5@JI8OD2KN>D(znUiR966F9&v*(eRlLIR_neI$6d+*N#{X)LXjl1_*K=hdb*o;QQ$`nt z73pT!Mp3nPl`oTz6{n+`Ud52&)`2sXQ=K~DIV5%By~|_U5I{n|?)blwFBmZP{Y@U3%;-V*gJdP1NG-$tP`u3Cwig?={ zetng;)_@Y*ICu5FXplU@L8Tw3>BP|^?M!4@yquUOaZZ!HWff{oTXA7imR9FHt$=HD zgre@I**C!)a4iO^vdV5|L}q`n&#Gqnd5iG42Q2-YLD%`es0oB z+EXt&=1q<_x?{sIgIeFRvW29(BY|9|t~Es2%WU72hG>8`zS*m6@|5v+X$Q8_NuP#S z8t$I2sE7xFYq?w$j$(E)&RI!9A^~brTn{ySKZDk7wStnO!RothR;WB}#>>azUNB zpZ-Gfe{spBS603%Mk^F;C=Qc9tCO1eT3c_!$2ZbTwly$Gm#P$nr$2_1ApP#^kMBKcJ~^8<&>(h6ci(mJtF?ZDQ=rl?oB^=H z9L9bL$Ewd(9O-PH&f4MH?W(21+O2X`rRFb~{ZyOLc`cO$Hvgx`S#uv6Bqq*}znA$M zx+=|b(w`p1KHCgZchzDzO?Y`}Vh32vuE7oVO*$eXOAQo~1K-;xh7nW)vd*lf>ydK1 z1wRW{zNt;?=wgzWd^f~^cPF_$4jfg#3wPd=4Gvk($xd44RgAe5#Sgn!ukLzwZP3=O zKyQ!sIz$13IIOeN2i8{?=XxURwwHv>;I%Nnomh!wPt!&LUg7eqW%FYAT8$JXvenHL zO_+@zlUYP6c!;@SP$9CN)u=G0Wc#kOwSBB*aiUPJQTM%;wE(yTZ|}h@sSmiEree^# z+}r(=lqf8?|m=oIH5HfYoOz zd8k+Ze7^9P$j5Nu>l%?a5v(Rx<3!(+j>w(_%C|qCV&~e6%zZs1>85~25BP@AY+Gr- zj{b6^xRK|EP5|#PG^zwS-&kjyoig36lcie-3;Ej^sLGXVju{jmD8M#^Mxwg!57ax) zgul)yo!al4wWzO?9!J$<=ybe@{wG6U3O9~gDGN{f1Tn^NXome@3IF* zx7-zjt>EtE#>Wf@QpM!9&5H4(1MC zpWB0hI{F%(AY&_8}Kyx4>d?Kr}!byuh9LNCpi)R%zhuecj$ zHuW9^_bqrc!%o=7PpJCPtA=sIq!2#kzWO49nVC|CzLZmP-UDx`;mBH_qDZIDxSmMQ zx5Umsk72(FKWns441h!4vn*Ej2@%X|#54?&FV;5&0>Gv^rYmqw9ysVTT%w!)Rm7uz ziRsLJj^UiZvx*%3F4VjJ(NdL3UHz2_G=-P}@(6IJN>BEhUQG+pnSUEa^4ame@xqKmv&6Mh)ErdMb$*Par)^jCJW$ zG1dr!zRdH{5;X!mX_s2JJvXn*mdeI3U38N9*bMe5RaV#xNv>_s;WYL5jcHx$r|G`?%r}f;y(XuC%m8+HShxQ`-2Cz< z64ZJ2T7Bdj{XNp;yz}Nwv(=R)#>K^jR?b=JRbT$2?7_^ED69oKoKz~-gHsIguj;+|3?(uMNQWRyn@3i)LSAA28@TYsf zQo$p!x&;*C@vTEU6r%`hneZr|#@ZBC!fDR?Ra!y+PM0-vp=VN5epZPQboi4WMIBs0 z^Uf^#Bc94X72S?j(rJR1!k%gVEpmpl^JeS%@5AniyR0)I3vOz)1x_@XJh@?b8FZ)# zDfxJn$#M2*Ex2$GHh5#Vj`no*{0I53zKDCZPVF#`YFlZB(S7CypBFj6pWKE&*mSMT zpN%{_hWq3x|C680^iyNZC0jnV{YNuxk80%cyS7&$?%$#%o@qRHw%P~+q&shJ1LRv% zapz4|aMF5e4ey>?zurh!;ci6@Aj+^N(OZM7b=yKJ(KOwz-CCySjeVRVZ?Toa4N}65 z_=cMTz~wyaU5lx-mW9o4Ql8h;YZV{_@CFKb+Xw|z%X6P6$Ae&|tX~w9->J@O9bv9l zrYDc@$2$O1<97El*5N-8yle#*tdu;LWQK(V^~7j8Tw66K&VyFs?AdM^Bwvjj&Q;2$ z$*PzQDpIhL^q{WLIfuQN6ZeEk;KS$+DM+D=2ohhC6FQpR?KRBPq*LL#Um+L%ol*BU zMF0Px&ZgX#tvrXy8)(G*{mIu`P4G@e4=r%N@}o=7u;!-LQ_(&Ep%R|24*+wfV*M)B z?)&#=?YpGe4UCgUFZHsSxi<+ks0TCa>MZY;(}wEoLMPk|T3?qlq`ti;Vw$D~Gz7^f zgP8brOc9YzInpL@i96X}dpd%NzqAK z8W@;SgqPl?*Gr7fiZM)<@c!~O=!X26FL?V_E=RI7c$L?bFK+uQGwp||&h?eNYIMpq;%<*N zBJ7Xk-+e{#%pC%6A|=~(oDW8EG#x6e_m_W9MQkB+-`BjGnmRwVkrmeObW}j+Iq780 zEkaq25jMQ6=dl=(5TLKB;m^wT`G?EuuS2#hcabaM`9JK&S~L6pomL@d_0Q;$eBl!e z_=dJ;%OPwdeb{67tPEhZ{`M}`eQgsQ{d3LP9}(}$_%la(zj`{#QGGDn*^9E67V8&k* zel(Mu%_Q1ZTL)bAk+K`fB~u#79`)8@3@1DS6L(1|l`eBLOo>w=A@5?ZBc$4Vf}P`% zzUVWQIMn9EN+G0k%CT}Yb~6|9853 z2C4h+vE?`|2N)gms=3)*8!Ni1#wx&ApUW!5=}eoO#g$_92fp;Bc4F7nK`c+2`#nD- z%#r8Hj!Ou(br|c?@gplImy2V^;`7y+w)WIg%@aZpro5S0oYXb7cv%sd9;Q{4*wJ%+ z@FhUu$ByfVW;|3E2s<~Zu*%^+dsHj+V*F2xZiI7x3UsL)w0#>o+4XsgA|J36ade?B zdIzHyG5uq0F8Bp)_b-Zl2Jn?7PuS^!oNpt|U;dKO-OM)nuvWw(ZEi-dbSf+}&@o4C z-jmSbs>W;QfU;w@+FeGZB(kNdwHhHGWDmpcCYuX(h^MF1=qtW^N!Wo|ogRL0(YmkC zwo-(jnk;h1B;4Y83^&-upJ%BsG0HS(6yC&i?}5gWRoIq23++Dv9tYp_V(}3JFymZq zy7`(hA$?r}m0x=I{&m+l~gNLt+GY**C%#xI(x3DhgW^9%gO&UGfu8>u4c?dh z6(>90e3GKwk4QX8Q^=Lvok;7mOSw1i^8FXZx=HDhsy@j2vICRs?DSevQ^>-K!QC$l z!q1D3vN*5F8dxj!u5ewavbg!Xm9w6h_z<_fy>IC*AzVG@k{%Gf*mtKkH&;amca;+; z*6*UXy24*`X6G2(HP7&Sen+!1Kxp>?>GMYL^XAS%%9-ikt+Qsq7=vyTL#3V+VyBa@Xvn^BXfqaS{F^{U<43jFP`ua%AQRPaPP~wymq4qcnc{ zn~O8yS>JAK>SxR!(mMR2*pg~66wWLD*>gDNEPL|eH0S&%UX=3L?S!m1dCVfdp+6l| zwI^xv39JiD`&9g5eZ{>5d5Mi{CBRSxWe1JA9 z7%M?6OZS$lX%8XGv{&FfOz0y|_O#JiF(Ed$b0Z^uL~m!^x^nT&t(Tru!L>meS2m`u z%gr3*XEo|=UsGumkS@RPqF`yjW;t^ns#P3iJKN3r)#bH}zg=AhQ5bxnJQUQ9WJE3l z<}q-~gpK;26N2%2S3W_DWvVwCWp7(p;9m%jO-V4VyIJgld6NZk%4Vbr@wa0|Y4Sl2 z3&)hg<8JX(FDW_nM!)1Gm!__y#(1bCx8J$l4eKhBPriHfTFUXcM;7muvq~4!1QUUF(>lH|;XtaID@zD96unKqGmFcjWJ(cGKx6Lvf?T zHlZdCMU}^g*v8YNIq$a=(D9=E{!L?FzU-R^%Bq(aMmqG8WR2o@mo?JbIR}2~5WB~l zpC#K!FIRQIO+KQ#y|~2$X}7W_cY0t<(#_nR&wZQf-2w~0St`yn6t2ooSMQ59Z%PrQQyo~p7Om{Oz|y<&OYyFJYGz2L z*ELo2j z;#%uh?(XOYrFJa01L48%HucUEd?)=c6heJ!MV7rrSqE0IDSo7aG&jsS<mb;eEL<{D2UK)I~ zu(}Njc4L@hB2e)xVH45=W@K|}e(3rK%r=w^76t-J$B2lNn3A&Wo9}e{P%aN1qRd?@ zCY+KC#X>IsaAzRICk9k6$bqJgVwjT3L$%eMNL>j8K+1WRJx-c@fPv(amZ1Ix7<%&x zqnc2~ya&_l(q__zR8KaN({>zX=Ewdw!qk>fCkcrLgcH|rKdxrPbB~k9ncxXu0sXir zjhu&RnspW_>Uz!Dlxr!=N1Wvf3|0LSgl0~J8UNY^;LA?lhBazpc+2m3&Lyr&Avw2 zC|LqinbKjYc26UDW~1p`OM{SkKweRlCgiT(bHPzTGk$n zr!TGKv?xqFzPUF6Tjf7JFOIZz{Z_!7rgclKD92_)hnI6p$8VOp9c!C&RfLXZ3W-Of%IrX9ef80t!d8v(w~1(@}D~n}vQ4 zm^#3TUj5d6bhqix#IlP*e+xT<@6W_B>7&;2(X6M3PahAB3IVn5Jw@@Y&THWK%j%z; zZkoM?7&7f_&sQ+yX+SVS zUwc8sa$(az6+Cux)F+p#)uj>vo|lrDaQ5pP-$(bG*KU5T_p(NeBEj96KEr~$X;|Kv zt2qIJgK!C)qmkwUBJ2IE?{@>d(D&%#Avs@x z7vBQ168G4{6nV)^#&3UQF&;e~d!D`2bEiJ#O>y>| zeO>)koz!= zl3BN2EqqY@=|KqXPSSOspw1~v##rc}=}E8m5GZRzMY*wan1!?X1Ca=4x0bH%A1?$Z zb5q<$vSi$}>dKl}9C3=T424m~nVRU5mK24AafGo|*&c9CaKWD{w(Ir*_ZL*Zmrlsw z_$Ao4n=dVgU@Bq=z&r2cK##j&FIN_Tcu9R4O|!7PY%Yl;P!M7!&W@Yr+bfiC?en71 z4PaA_LaY{|1!X3<4L4plMY;j!O(FjLTMVw@T`*$lQkbQ$;|xzlbP#xUDxpCWdIhD@`TaF9F3rG zk1r(FR8euR$_`d4f~!eV57t@4vAd+5uhQsEk*U|623@HXW$E1Lviz!Uu9#yPP~8II zhY>!iDE^M$|GQ|+zUPC*HKwdmdAGh1U1YC#y-c(;t8uYnsG9t^j&&4txcK!uQ<@ZY zF!GJ@vOa`4Ub%3u3uPFM=%(NKq^p#2**^BnD$jBk#FERw-7O2PcY5~t(=%K7){KXa zk&21rRHv!oViB~`OGjfQV97`$9l+z)DeH{7j8v8Ktgos!h^jdAx>!7OoUtK0p-6Nn zS07r3^`TcGnd^=Kf& zxjvx$X5NZs30@qF^ztY&V)cK$59(B%2pl%`RwWM;+=d$SzWi`fFiZ@+Qq;DYK+$mG z8-U?V$}+4K^Am9j%cqLvhfig=Stgygh)Xien*iy6Pa$d4Yt0Nz`zWPEqlFeo2xg36 z96sjs`eify!;en~eow2@diZ>H+uHi2$iL`_>v_41HCzA6ZF|hQIa#p^?m2$A+k}mf zNoM3Luk9@Cm0EFk4KnVoE$t>=5RVf@J?N`#(`E#Falo#uy^PY&48X8C?>{tq<;t4jWh8QsCg zo;d3-&0+jZAAVh{3}lm;tem=d=8E;t$Kw!7vD$&GPtty!ThEu@(E9dY@R(lSsJef_ zV?J;bPT(;zcoU-MTb;aDBjOo4g*mQhfx_*dBwXPxCOz@Uuv`9NH)r*{!`>N-eXtxq6i{%`@?M!d)VqC@v;JX}UjjGfS|zs+GEVc5et@qr6+( zGgZ``A|Y~1G)3EEGt0o?Q7QF%x+#93=$i;w873?j-csQ`^iuh3RF&l&d{28NLeF4P z-D#!TJ{Bnh?&dIwPVnj*Z)ZDG<5fbV=@jUS|3w!(M$pUKo^96d)W$p2~2039T{?j$X5Yo;jS94(a@nn6bNJog6s=B?qY_aUWpO<`7#zZ%rutd z=PQ0w5Qi=xXd&|^`~4aWEKo*=Vj3&kjZ@a6hAK5(Fs~YR%2jL;Upb1eY**W(DiIe2EfmIa2|PNDY3NP(w{JUd<`u52s!c3N8ZSyQ(H7 zXV4!k`3*ls;D zN(hVCn-dYG*Gk~QkH4n`n4r9C7?Kid_W<-?og+=!ZmoRI$kwGEx@(ma&!JT|8T@iR z-HwY2SnQaj^mRurIEfIQXsZ|uXJFUac8?*{nD#jbVcE+Tt@aqJ+Y2(Shx9Z;!abe3_19}RJ2PV{{9u(;qmqb9Lzf{R-c*=OdK|ynf zcneB?sysk25rSMYpR=s}R*msUFK?dj`tzE7mQoK69)13hEW9Dob8~17jsg`V3&cSW zIQg|tTes=MqA}DcuM(2Px6pUzEKx?HzYg)DdB9I70!~H7{Jo0KP&E1_>i7TMj zU8@M$yTy*NGE+txEpTIE203)RPyETTzOT||y58|#c*LBWk`YyB)Yo+?&cvMyd12z* zl_1;ozv#F(dT3uV92+@iF`)wde)vnTY|-~@zM}`ge^0EWP6~{Pmwq{-$E;c6(daAE zn}3wdI$2chMiuesH7!RbSLnjza$l4!fBy6AD~z&)2&=?yf5rEfIL@SR_!@Wfd>_0&af- zx#WL$g1YwH{q#T0#8P%jfKMA6{Wi89j(#Bsa}~|oppGM+ERIdTF8g>xfVE+?WRSNU zQLx0g$MjBv{sgf3Tt($~D>U;i*C+Z14#QZLFp1hX`YHC5*Ppjc?^^g*<*et!R&KoZ zIKjnwq!FYUfZG^ZpUrF1KjilMa29%0q0A~{&_~H?5H#u)N#ok$PmzD2%`eM151;N%Bs~I)+{=oz7 zi!J{Q%>S&MvpGRXBCMdke~osh9shD0n5G{|eEf^fSXkMlE62YNl?Y_WGX~`H?E=L@ zx@F6C*?}~U!K*7Yc7fI>`m8BZyLa;Pbgkcx*Q0{Hz7%jv{aeLd$7NPj=(npo@d7rg z+-<7dOoAf;tC8NGhAxFFSXDRl#p^HA{WP*;JSx1*)`zGIo9^S4eJ?aKD~#Q`@)l#I z&H58!MqEv%agmoZ09@j-rTU&SL%}kK52F8jk^wqGe1vf%#Ai}Z;Mdya`#WaDSVg3yxPnjQn%{gO-pAJx!L5I@E6a`DMQaUqLXAagE6Jz#RmxQNQME?Jf-BUM9dwOxDkb1i zVHMrT-9poJxnRQ&CPm4HTid_GK+%L4qZV#TJXh%Xfaj=Gq`F)`)PA8N{egC_?8s-a z@44q03S-poM4L1<+#E2+6xO@w2TS+!l>^22;R-tC-cM-BPdsJLB({s@+P?)>`Sia6-g{hph)Bx+xGK?7%)x*xwSaj2#YyMpE;*+vrN!oyzc&9 zU1fdogcUpQRm&|0NhX(?wIGdp@3Vyd7S-a;&CGT%z>eKNB0AlHp{6tR?(UZA++TD~ z7vGM5PN;j@fg7c_*UJXP^QMd*w=IRAX>FN@ad)L8I4jrWEq1f}-Oh8)l+tHzQH4x? z{hZmJc01LUQErLSubkM+A*^5mXx7pbU$GdqW8gEsv#2*#w*fYZ^ix+I_X3B?mPSV7 zIqKTR4We24((VQ}zu_dttYOrLUPV;qUtC0_sCosDwk$;z;{2X9;@zWlER*v7q6>ZG zlmb`WImOj_?TCAC%d_-V)qdl_mO%I=p?UbaS1DM#&E?{5GTyLsvo*Doy*)8j?uo8z z^8z;mU*vFQxh?}1Y~B+13LC7pw^b%Ta+bY$e%d*uApKnOP8g8ISX$0>k(g#&4(3>} zWAEm(<<@Oe;Fn5rfrlDX(yR0#NWXMC+<&BDh=<+#deqx%miZ-`Y#hweV`)y`1%loM zij&Q9&%@uozcJ)>0_D^!3HHWh-B(iq&uA))Io&_|D0rw=q_o}kg3$`E$=N#in=Nzz z*e` zyu!))DO_FVjmvk|b<@-cW#4czqG|tHy>oKCI`o4A!!zR8S&#spiB zb*@UV$F!_3&l_d8)ic)~dBa-eMoXc;LL|QjZakB;<|2x z(&K36K&wX5S|2zyEOy6^pu;F}#3)2SNLpm)ip2TqIj2rQP1~Pr`D74Za+xT{1AEmIvlk zvfl}CDY@BtgYfm4dvTUPbt=D3`*&2EUO~X|{aM+}UNtuniM;5G(r4bDi@_V>9nM#D ziT3JRx5SB0a*SgT>@*c6a8bX{zT zb@AAx9?T(;9voKYfiuEc1Uo4y67m(`LpAnGrgG!T8>0JRK)^d|`s-=~&J|Ju1F^#P z;^wo#ChDXv)}O^V`SmK`8i8WBGi_=3C8wS4V!d`jsng>fB zxL}iQ>G%9|3{95@vrf>uO3QuS{&S$&?9kN{JEDWCpZ(S@9$9 z?Ly}nI9a-<%N@>z(>^kH2NrG?0`1-B-HO-%ktO6XzOO~h+v6GGPDcqyFJ>+HWG1Lw zdw^;C$a5%q!gHUQk1sM^vi@C(0F5n2&mHNPvy%mzW)f~zETBIg)il?%ji6_h;|;Ha z9|&-H$X=)&L|zq6lr%Mjll-{*$fXnjmYZG+HtC$|0_f(ezx#6ssV}`-V@SCCpTW%0 zdJ<^WnejfMr@bA)#y0!2BCQxwST7kvkg%zD#MBn{L+5@7EH-UITsJ^oF>8fnQR7ro zoG#EAU-?!!g0<9bN(;CEfe1hpfgLo@CRf`xPs`Qheon0^&B&j?aZhnRT^1NX z)cso>*?%$BR%blxBiSObJ)Jn4SxU2r#HqgplsG+6dsjBaT40fyo3cA3JgnO|m0K18 zN{vzQzTHe%tBcVrwt67pbjAg_wRA$!d&>3fO4ZF@H!6z_=kZNV4NwmDzTqznHMKbftN#skTu|%dFjBrgB zf!BaaCT@d}rOZ%%7%xXQ{dc=OYsy8>huRb1or+lB;cSDpu%_HvQUr-NDw|i}D5K>7 z?QjwN0Zsz&B+L2Tl}L7|un1jzX%YAXVtlngb|8^^CT_Esdh=mRs6^LD@u13sqVh1v z`HC9i4knt|gA2qvuOlJXjR=i4fZDi%ebjMP7c$#n^bWYy`K50&x;>yR%BCvSFt`5p z@4%s>dn+(%lT6La2nkeMjoVV5Q@Js5eyD+nC}F}LOHD0X-G5fFkfF2;1PA~hEujDl zndaT9h;H_7Swy!iH*Lcz%gccN=fA{`p0=?S44VignozC!IBk1O7X?eD8q0~6*b6f{ zV8ZobrA8puK24s~lLT9a6I$KU>R!Z(@=^rhAQ)Tcn-<7yn=t>N_6;QMpfYx&n3{Lg z$~r-Mb-8AQaI@(_LwiPvvbFJWGsT1+FGjODEqs0egAOa`CBQfNDvFf6xZ2P>{)fdg zp$sgk$|R4%v9zc|FjRe%^i;@HLHy$^*=wUUIg6Bl86mU*^JUy9MSiNTsJ>i4_8qU` zimSbqd|?NoVUzZQ=PuzYs#tJT%NJawVdJmL4h?6!#Ge*1z5))VMeToz&?XF|t`TDx zv-JJnuI=&Vk(4sK#Jo~K8JS)Fmb7iNDGGi9QHl*Vs65iHru$^pWiwacu z`6z?pVLbIM*Tc7~1}{jGGch4wO^vx_xWVsQvOQtt#NWivI**)ITo#du(NAM-~ zst*20>=tu|+tF(Zep3+`-Ey@IJ?|zD+u-U-q%^tOa=vR1iW*Um-~%~WRBl@22~~9I zc5>4Ugu-??*^fqqOdl}PIXAS z*2D5umcL=TC?5hVoewa^$j88x{JLtd&&g;ZRPS$fJ8Du72|;fh&+8xb9P;mBtZx#Z zw%~&oMGt3!-KHUo&rzL)6%DW=mDn5>odflHSb6!w+jr4zAFE7Khjm<1Zdhba58{XW znd~okKbJDS*J2(?#+Z+OVjT~#1U_~Ew(gfp?e=d!b(VSOyo*cQ$|QlH``dM^c$F2Ld!nUtCmYS7kBZ&qggS+ zFtvTX_5;Nbo+w1Y14G6@BqNT6l&#zUg!X@yCs~sZ9c$!=?!`@oABYc2ewbK!)o}yu zp|Kh?Hb@~|`Zmy0;mdO4O@qXQvhujyUv$bG$l~AaIF&qM&R!~_Se~OH7h7^dC+nw7 zoX#F`dEI+T88?6e)tH7y_OZS>Ne;hKyrJVSG0K^MXU`HQ=K&!2y=BED-lN9`@1|Ji zr&>qHMrAFpltL_D9p_jxGtVoH~JtbEAOp))M;Aqo|+L3xjJ! zZmxP29v7#XQ?J`W3JzJ4@$kTq$7_jREDI)y4dx$^nr#&7(Q~EzH}d zKdqJWV0aD3z}Uu1v?Gs;`1@-;-!w6Y;IX_54IVQRH}aCqLItEc@!W7p%taFNiZOlL z0)E~dnL|u>^3*3zR@<20M#b<-sq!O>d(Nf$%KMj29^Rn7+6Bia6|qTWhVp4HmU_84 z4L?c+AmD;a;SM_9XV59fvbm}WFgsbh%lUC%@8(Vkv{xNux~Ctik*6=$<*EtBOO55* zAlX#fkEf*?zQl{rkP%D7k-%Hw-O99<6fhQ-F;#z@=KH;&tU~&%!2v zmE(Zo;kO(aO-%7q)mgkG%Nm{OCUNlfU8mG;iB4aGBI9e2vnk?LhWLs8WDQ2RRd)aV z)5?cY8;4})UU97{WgoI<`Ca8QV1^qyKAdFahfY9>X=D^n$38Pp1|t&9_QR6$dk{+^ zyCRe+JHg6>h+NLryCkThyd?sf*%K>I1(GVv{#^bpXb(1jaA3>qRLd)0K2z;?WKGP^ z^|NFeS^6RU{wURhLM7fT;b*0ydD2`mVvLkUB` zj^sO;-Vs&}vf_wMzLC0o`sQAXipb4q)LR8x(fPKktr{s9QF?y)M+69|TX{on~fGF**+tg`Z9`-t4ty)y5Zr-(qvk!O{Wr&-merB{6`XEJA%CQio4v}CnH zfXOguaEMVK)q&^RZHH;Ib6HP4m@oo2*BDQarR1*{xF|l9w$iC0$qicPYX+3vdt6+c z^Q+CrdOTsn{g%WqI2v?Td^u9qDrcvjlaQ)%SYwEd68QN03IG4m&8h$H=;lVbgO;v* z@2^^m!2K*Q)*c?0vRrhU^Ivq<;>zC*s?IzA4g^~9hl=q`tinbrMGEJ zdH5Le@WwNzFI+)3{^=W%_UrQT!1^&?n1fh7JahA>Wg7D89?hqgCqx4R%Jhmd)B&ex za3BHoI2_7EqTVHvUMFumQB?fef{`{~5^uM$Fosq)-*wFNy82mMy!6x6a0U<9*p@@j zL@6Z{)6L6Q@6MrAaXH_)#(K#O9)o39cbsfK{y8U+hq|0;CS?ldW|);_q9g(35Jvna z383Ue$6)|~Ca_?p?Vgq00J6Mdy9QzoVl**Bw`|$pax$qGSw9`>B}<#w96Z9|`C)s6 z*+=cBcd_w8x#NJzl9-aM-!&BKP$^MwT)CgX#wTIWh#Z^|zaxI@Df=I5Zf6(LG%mvQ{ zX&8TjaxBlKzq64M7F%tB3M|~45-Y-N>{Td$mHGjxHhLthOc8a%2#6#Cvu*}7$>KdqH)r-t0@&4ng_rz}?d!Sohkna5o&u2p!TEBT zhY@C?(C({K3Mz57O0rdiLr?yq!=XUM-acW2den%yNS*@&)`&;~ij`|he?t9^t3Yg} zZH^1{obi-K*q!Q*RAldjIDNY#Wr*oA{Mqq&IksEpUN>K`^=*@)xhB%9OU3`>X5!O( zzKJ-2*{REgpHNcLowNs(n{?EQ5Y53~2;6SH87X(?bi+x^PD=WOl2Y+n;_u(~hqU;? zW}>Iu!OimHyKZ#t++__X>bF_IliMpVURzj=9Vf^48l_sDs6PMQ$iEb-W`(JsF%>Mx zLN4EA?V^?R)8_Sn3_@7vxXFjr+)8{$4wFUA1C1*_Q;y33M{I^19}18w_TV=YOos69kd36&{(dK!*s+J%tzC7*w;4zr4QcPOWSyl%8GJ3XzLtbUv99+mGl?`$V(Dx4mcVtg zg`cqjy{2%#Do!1eOT+y&o>OJ)Z;Zz#S4_A7odWA_D1?=LHqE;R4^bDHsS9FYENh*tV6yXMVP!!Qon<0R|H8wW6d6LxX7(U%hQ9yxs%=jjz=3ZI1zdbMq< zOQEzMxE28rD7Z87dZR((>#3-@{DUyhW^MFHe*fkC!S#S8xiH`Z;$&q%?XSL5)qbb` z7n21OsxWaCNV|S#8L8HIZsqxZL|LE2!IrvaUehgE>MG?EU!>`elj_7jO)b+iB!=}1 zLUa4z7GU<|z7qf$-3dcFe;0xOZ_q7~&YGivJ;1tny4tEMXOi^DiRyoJ<=;{Gswbbi z4*z;Iey?@Uc?)v4JXoDz?dEY66Tt>Xd*ZK7A6qxZ_>2g8hUp`Vdsa+suA%=+G`~ z?9$9@uU%G7oJumo6Dj!Jr2Ig}-0G(XXdN0E>L=>#A9OWm`|er~%FSo@%D8pKs3=Ol z_YGt!3o6C7U4g21f}VzrbeT?ss6#Q4tVR{N$TVFp2PIiFdy-ve`9CJ%PiNepG# zYXb=M_)#bFvo3(tVu(X0Z>W_q@YJ%wt&ucYb;bu4Q3t+v zGZ{1)^@_JY{xd)S7Kbw7^2S6*l&3Xt8un5a1rq|HX%7vmUfqcT8*$w;sU2#`(Y+ztQ(td_H@Xo#C%Nh(btq) z(*X)W|k>+K z*!UDi?WR{RWI{s zaKmgpSUqI-8tO_7CMEDsr?onLb2a1Y9dlu47cpCB$1YAO8!aZ`H`Yn=fo8ItuvJ26uAEH+-xKvIc>UkUeBp(pd;erO|CF>mA*}@WpXAihog^jX8%bLK3n@X#@WVfo ze3AsEB^!6bj_vuY&XXjlzM_-b%d@cxB%;aWz3hOklJgdbUc+*9-aP%HS*+p02PCj{ z1qdp`9cW!iiB48&x(>Qw2my%g>58k+G81omwH@G4n%nKYHza=$svTtR7EnNT1{wg2QA<#A%c-0)ERYcjeB8Ej%C&V4CH^7|682U2-ME5wW7n)((O}j9OUR5S*8UB3v{Q)$eQPB+mDJ$5s*MKk$<6AHa=f6Q@+R~MgRJq%LbRCCe0NOq0W-ho8spX zKEBf)oGfP{H)Ch5a4{v&`1-@heS9JXuaZ3?jDHAI6lue>lEB<8H;;wuFH2@>hljBN zehn9ud^^n5#T?dllY8$?4xhnxXuV6^+*K_ps1b)GBd-s|SuJtda)Zc;=Gr(QPA`Xu z&;YPm$tsmk7-mk24<7r@qDY%#)3qv}lwY)iWvzr+a3T;SP#SoDUI+KqH(o&xYuOJj zhcdTZRc9Dw;)j=|)^`c3e$un7=8U2OA3~8)>)ti;o3vYp)^y@Mhsb8|it9zuJFE|J zgJU0HI}6=x=3T4Z5;yYWS&*n?1O0$uppuJs>cIaRPD0zaPy{H}Db<#4l%!27hQzee z4~~rL2Ag^p-}7Sy*6Q98Kt)Oy++6#`2z3#zR#!9{Zr!%n6+^LIJbMSskU9xU^Q+L_ z*!bhD*uhJ`pwzv4z>gfLv0#@)F^y2uLih3M;5Ju6k>OO|7&ui4MnD_ok`p53bXe^2 zKz5cn4R&T&u{yRQipk=}tw!`cCz?hn7+65Eu6(ASU+Pz`&~r=1LhIs9LeO-;q+HN& z3$%Ewi&21ZUXZ82Ky0^LR(`4xpS#BLGJi_SU4IzO)9LvD5-cIu6Ey*8`-_0_52a5lN&dxO?#-+jo*&>_(UY*5$e zo*Z9#=YvPPzhwR8upwm119pGCy!vJPZf+CkuIAI0oT>dbQor=uz95ucmfv|PwIb*b z>rsa83PG$xdefWTVSW^%pW~|U`@;2{!6Kn)NG^vH66zDnm6d$&dg`)H=xnRGrpo)@ zkKjp>>3>VnsYE$*hV`wr3cf}7nlPqk1?Bf}vsd+N<0=wDgKpDFnwMYy^5vF2XE(vC z3=VQX*dDUQhF`8Sx?-J>AyOyz{VPp6B>}uYfs5Xtjo6$9_bizfER8!uU_0=l{8a{tw^(AG=Kb z)AA*ox?&W6tee$QQO}`HV3o_nFdp+IU-(m+-J`12Vz*(l@*OyLhg)-Q)Y3fr!^HF_ zcYa_?GgPQQ`+rfW@nO`)iN+1ihVEB3vtbuH3wrB~3$jG7rOU|fuXJ;OUXDk|ALUb= z!0gSYZ%AwrVon>by+T^?%8PE(LA_%!3X^5V3O60QLeGhq&Ee8_6N(%~D@%fgm0EK@ zWn`7()_0R;nXE#3Tdo@s!irifvM*@XnuUzxdS%No1r>f#ajpu<2yH8s>$c7(l; zmKCYo?F1N9uU)c~3K##m*1RMl)GWuZ9_%sS^|IQ}=hYdjs)u`9gu@OMha0uwV=O?K zWwE+9E*j8p27EaqYoMPak8DDK>;*ECzeJnzNW*DIN{%^&oj0#aEdcWELoDB=9#woZ zu^P92a+Gqu@?)FQ+9tso#PT%6*DIQ^l{87;Le!(sV?e0B`Okjx8>HUhL;U{P06p%Y!{gzeWNGA%Y% z>7jm~@7H5!fan;)Aa&w$r-*-lvd^?Z+ipjp-Dxc98^ImI13vc7+QU?z)$3QX%2+L)wibp+nxM_u78#ccjU8v%{j$x_BpVYD0^_&=q#hTmsjE^`mA^ax5-%VgsL+i-nz?WfY&N5(7l05>$qU?|9 zhg9oJ0fW{tg$eL-_1jNp--#axt}2XqzZliL6Mb+oWL_A7lu>7Xz#4Migi)-Jf4j|9 zJ13SDPp^J?Ih(zge%C3@7DInDb#TM0+s!ovaBYpIZm~>@J0^o?w1N5(u1TB`5>}q^ zw`vWNzvwJJGwpmMlZN2PmMh$YJHdASTAn!1C~&8WU~qEHMv;c8thLYD3zKXSOv1Ro z=y=6yh1I>T+nve7l&Ctv>=<%rnL;fD6Z=brqw3{&TXoNzG3zeoPM|TTM>{dtNMCgV z+tDsPnZk1wfAcbI!_bCo9IyxDVygiwmOobQJ_{5lvl*FIksI`%Y1+Bs%lS%<2jLRu@E&z(Ad3wCq^bHwQ|8cdB#P5? z@{KyPri}j%0zt3K-lnRkuI5w!jkze6oiVo{1IKy!vj>N;q1z9mue%2|X@Y_xGUo4* zcnL_y6_hHkh;d67!F^!a1vZ3Lb%Hx(s`8;mKm0vqPo2DCb*oo~!^0|jIb&HH^qy(r zNt5a_x4)-=T=8rhBgiW-`xs0NF7h3XtJ|qM0JFQrKuV=3MI-cZ52LUW7a$tN3OFvsOEJJ!uKC5`S->;szZ);6r{s4>8B&%hFp z>Sq5^2i&MgiG2&KcMd~@p!K0CI~n)l?G{iXR}%Hz&a37qv>$a>xR_*yg6nZ>{yxbJ z*!R*;A?JdhnZxBW2oAam_QMbng(WWHJCdofX7JUTr+w5Gk5P;LU@$n;$Vew@I1XJ_ z@|qD(FO+wrI$7P9SKcq{9V@yyM17s>(J_42n`7Bxjy%P)7GZJmJP(B>ve;tIM?p`H9m4jb2S-hRNo}dl7R<^pI^1|YB$TeJ%be$fCvXU&o5-n%< zQn`qyL?>iATMtJPxkw6XK?9!-YM|~t{+83J?7V}+RryVUC>j7#CM0+H`QPJD_eZ+* z`ZO#S@bn&Zf>iVhaJuO5BouYFuu4hU8kb?brYm@(>_W4hp44<*@ zEL}@|dJf*@Kkv&Hj9kphwkke7aPfri)q86Njq0OqYRMMLihDWs@C?g8ze0~W!V<0U z#{peyR-P#i{(|%Pq%YQeFv5Q;dkI0YRD3ox@OQ%cMD=%1=;&G-f7pID0o?Fp*;jcN zo5x-?v%yLH$mHD8w!-ya%!kpxxL3>ju6Ld7I4pPVEpCzzaZAx1 zl6tT>^2EU+*_KV8$ebuHef);N)+S-BWzq&2{jj@VwR$bA9Oi-yU6E791HR-inQE9P z)Vi(4V8v|Zt6OxBVQi zzpEJ?f#xy~JfodGq+$j?IKA44ErS(s_edjCkhY*HoBc|Fpct2&`~7a&$roB!leFFr z7j<_{_*JjOm0TfTEr-eq}nIQ_6ObY=?1V7Q&z(qKJ z1XtJ#3!80ph3OrAxgUP->IDIhm?0{Uc?c3$0G|R)tZP?02s7Kok+3uKvdTdMH9qne+A zgk4+V_`q7A)@7u*&f0owGS}01fVxy>;N>v2h879 zUv!sskY!$4rk_sgnCzo06PDo8)6o*RCbeLw<_{FLoqD~b*~zETCETP~uQO5vC|zt) zK|rXCwHgI1EkP6-#W7EY3{!=XsWsC#H`{11g^H;xHRK@vhGR~&cxpTJ(T~B_w-+-m;CGh>Mbksx3BNt zuUW5u<&rEVoUox9xICt!^RH65;ewMW(#MM6sULZkm22KqK-E_&u)#YO z$|h>>$*$O^mosdsxFG=Bx-8~n`ZyM=K;=Q?m5k%`@7G;mrN-gf?`>vG2Mq!hp8=J> zRTQXF9ayZGhNFzuso@{&a%BPoH&EYg z$Y9L^ag*EiWtQ_Bow8lcS_J0{4yqn?t3UQHfGd8DF-3&y7*P7*wWmi`%}2FP^?Hou$LHs4{Ym z_eUXT;T(ipO+vWu3VQI@2isL!ldlSfdPYxnF4(?X0snZF3``ZiIVrE+-In}L{E>jQ z^Gb_?XS`9hXTi5+dcj_>3v8WVl4Ef`^e;MRntvz?f`-!sJ~WjN%?=lmee(*^Rg1QF zpt1021UA@{D{5b^3IA8){yTR6MFjYJR&FKun6X>Ra!z%EQz61Z$2@4O0{v)T2$bCz zB5}OX$tz|jjq94KO#mu6&=;t3i}AJzehz5HQB~Geu2_B>(Sz8Ny1%w8AQCBGDyDmK z$X&3veC7D3D>vj~yI{0c4Hgz!snfa! z&Ux+a#`&RmSa<*hy}cxhx+hdKZkm&na6IIAd$;EP%eUxw9t{CchOfQKPXyZB*}`AD z7G>a%{UKrApR1Tva@k!oUj{-B@R5nDbzOH|RBQtoRnl=$Qu7+ubUt+T*ttQF>T3lG z!Wk194HgPW@lYn~g_VmlUdr0LN?NWtiGFpbbk6~YlxFF7Rit!ZOX;;I-@MMPAf5b> z=D14VcD=fV*$3{FJ@}T|2|s5C1#IDaw;BrTqrQBvL>^iE5f3<#4_G@>GtKYK4)g9!Wv`=5Qw{Nf6Hmu86uzIa-y-Vm8q^3CU5K0#XX7PF0 z2Q7>bo7*&uGXs`i-?~t)d75R9Ri$9=LQT?+oSTM8;oL_26Ng%24B#3i5$iZPtPA}a zP2)>Qi;CjxOO3T#t{_7+&0DU#rc;6tYKt@egiiN`4ebGV!<=i0Njp7jK(R!f;p<0_ zd)8zO6dLp|d!JD(Pou4 zV1sFclD_06HdF7ix6zi{#ngkjs)vol6JtW@sArAL-@aS zu`EAuu*K%puk^|$-gSMsY60SEPsD3=D7w|ZEsTEKb<0dfsiF3OwT_K2#Mn!3VANC1 zfC%xO?SiNrqt&4_M2!7V<;>FTmu+44Upp8XcCNLsxGIn1ORL>_7uSG4YI{+Ux_l)% z$Pl3=J^xo5Kipti;@9;D&Go4An*4$j~PXz}=tupNT9!EM633 z=vEyv-oJ~Sp-J{$3p^tCScGD9r4!;Ok)oihNSe2GP2TaQfcC|bO)ZC!3UTLkQBe$R z&!n(H%5wC8^j?r16Em5S?75y0$t-%rm(ju=mzM)=Zz(JSp>CeeIU{iYceFEn_wIRC zB=7KSMK1m?y6U0X`-K1M0C)Cuw6d4_6Z4ARy&d@REzsN6q!V!4AJzXf^}D_QL2+I8 zq`#Xrv#sqFpj)6WIXHWwBWm;p(&L0_J529THlW;NW*v>S1su+LeEg@~vl2%mGDp6( zJVTr5V|O>)kO5?ICB_dJm?7Ua6C}{$%6BS=#jV;xO=FIU66j)WCPF9c*o=uy{M|= zB9I;1)AGkVdwBS}(TBwEVIxer=`u&(E=kQlk<lea@L0BTvwauC4$DA%os$GWNjS7-j4eiE6L|OM#h@sQghy0(sDVd6USTaJlxV`I-Yz6GMA4oaklO~yZh3a0?Dg}PHkR#jg=)zJFTNUncnYg{hZ#nx zL|58Z2kLIB(P>=ime`Xt2seS>GGT+6z#TYvne-gkKhiWnk7c$>CB}Ls1a^)dPmGma zhvrkP za_yzN6ZL}ceK8h!UDF`~gyai>G?v5CTR~X|vC>qh)vNq1AuWJxRi~_J%{vl5?iUYv zMYFIjeQ3}`t5+Auj#F84rlnFF)DdRRvFhmu47v20j@B|h(W{zwU=BQq?J&CI$Fw*) zC1n{Z>tHr8P3{HRuda%kcv$ZKz_}EvHpyLE-P(EOSU{Fovvhkjh}16Z>Mv2Mk?QK| zmApANmdv2!u5K<-l%XG4`E3JSSy=!vR_i~T#Q5MN{Rjf_}@MPBfer^1e?DtZwZPI2JbropqG5?u$DP3~X#ci$s z)M)-8lTwa#RfOd&$HHg#VSD+pY2FJMkZxxhUOG!TTJx<|jac;FL6Wgh#W$q1jkwMSQgU-y=K^7eR7gdjJx`>?N70hq~ z4xQ%iaQ)F?Hg6zrcjA@$vF4|jBi{;2ayY=Jz-}d~>t@QfoN?rgW8;o*4!7@Ww7S)P z6X;1Tx9?=&7^JQT#TWn@M5ZcTW%m=XgRTLXqEu;*ED?tMMHdOy`Hw%EeEzVyLGfg# z1iU4LbDBviE0aBi9uXx z&ATSLEIGuzg=dfBs7Pmurbg+3Mp1gWO{;};rHJf$alC^~(sBUTjEO#bb;6YV3j^A9 z*=Von&)!%d8=Ks!iAPsB;Y}V|zxEd>;iyQW>%LgC;dpz!Ee zT=GV0$U^3Z#PtkYBJKtvL_S;IB6%F;iG_IfNJU*#8VVdspBwa56#ys-()W&)JUdS_ zu|Bscvb!D}k@?=7&MT`as`oFtmq#q2fpv}j`df$0TNf6@OF5&vtChD%;;At6c~y}{ zQ%@huP|m7Q6}*bhH=;PbQHmX?QpmN!TUtT7#Ga~fUib{BK)g(+DRd#Jvpl0SKK>W( zd#39Ca5NqI>pz|QUH&26dvLBF8m_nBWQ?f~)XygojT{=WWcF%EE=AJ9<>${?e4AHV zABvhGZ!Jslnmxk@VaZE)w2TaOLR}*Xb~ge)#F{%@puUnTgZmu!CJ>L}Wk>W{l?2uZ zoCSWMvf)qaoi&>K7Db_!0b^`MLmpKi%b~Q>CHkLjrtFXL6uA*{)No!){tbzh^{|)j z_YzlR>m;fY3wuGM`vF&+fM~a{DcrOfP$|-HmnV@!eWbduC&A2@!A|nd(qWA^gQYs) zDu7--<$b)GchTX+Fp4KucH*3F7>%o~C8Q6llCvDs+}D70>2la_W~s-nd&$2fhU~?L zJ8tH8ft?a1-q&j~XWx^0ejQ6WTT!7_qSs{97gpSza?`TIz)~0Zc&&sLE@WD9hCkV7 ze2n0!tl}0?;W81MVjX7&zm+KjjTogpl9*7FU$Ypm z^Evxwtj^9d*tWRL-)q5Y4+wZZR$s!s6f=qxhJIUw9>_7DBMwH8uW3$Ccre0J= z^I(pejB=X_-85mUau@6O9_T^sUE8zJI30v*x13SZf#%+lSekwUl$*nX?=W7!4M~L* z?mg%tEPQtx0`SoHHU7M$)fPf&`4n>4_4#WhId^n){`$lS3viW+gQ(B3gD_ zgC}$P3JPlI+*=Fqj}gL0EyLDpATEr!!e9T;N7nxIV(O`NCR5MOe3eKRmy7cxOaYSj zSAEGmF+m%CMdkYWwsC^#*%i?vp54fqd_}bBN+8O;hB=@Gt5YE7*Se>`&`};N zB$Sxg0_FX4gfZRo>r`DuWn78ruybN^rEew?GBkwT`~b%2#5{J>NaimrT3xXUg(d_f8h;4eygTPuY9tseAu^^Y}h~GU^(AiyM$Hu31@byZ?AQeha=`sty2q z^dS*2@AjJ!Tq5R~{?tuaI(JRzJ6fhWd%+M-`;; z)tJtwk*y|ztnp|G9mI0j$P07GV6OHoSsDWV#yxw=KjaAE?WKC^NGl^Z;@bmKeX;F1 z#2N1DiTM>cKG>+2KgemQK_It37rrQ>OV|a5A z-_kTW?Ow#rz*D?A6Zr7MVY`F9&t?s&IWpGv?UxIl-*EwTr!X~uN>KmeuNG?O1bd-#?ifKQ!zhh_XlrvwR^^ee;w~7uJEP8S5&U_ zcu&hv^WQ)}_IZXF(rMqmfN+_X=G07`-1~xeb*%!=@z{To>;ma$Iau!_XeDAtj`@c7s2?u4kGA@YYA|D5KSUW=MCC=7XnhnQn8;=u!ZZm50 zX5#LTbk22e}4O4!HX$t+7hs?_diLCs=x|9FaD&E@N5oy%N$Qja6yX z?`&-5XfVxW-4h&R;SfX(R1@j>T)q9K(OG21>nRYO^w3G;`^S!qatR;12>W2Gk&`-O zm9;47ys_(LozlBOXu}S`6}(@nff1wo&+FWt{VEk1N~dFk`I7B)TQ_6mgEP{~8}3&B zQXgSjLwHXx#e(QFS6xG(H+%fx>iMG7J2~dLnjTGt1=UaAb0nPZ{^;ObO}r3Wr5x6= zIb-o6P+6@;J~C@x&RBxrGtGXeJ%=---C4>330xT}NDEnaR#6?K8FQCQ;R`jZ4^4mA z=NW`|?25xUU?k4s`}2*R3c;$$qXfAp$-95tK{gZ1itkc4?7H?;T&SxAjc5yFMTF{E z&*uR0x!e#?XD+(is@`QCIr_fSo!N~)@=J7^UW==<(5+cM3so+yoo&m|l7EYJ;Rxxt zf?(9sOPl%j91+r|?bhydF?GJKm%T1K(<~re*jT9thEGvWUp7w9b`~jkDo%IsQ8&bC z;^|a%K)PFi(7^9;!);Jegoh5)4fSL9>j&-x6P@RDxwx(_Dx>bvI623*$2jlP-Nwk( zps@C$dID)!cH$N&gmvajUR#obzR)0FtA9_b{zxnxv~eg$tf*!05wW5J=p|Zv+O02x z$Yq8HSiEC9%R-EPz8GKKx25?uF&*9givOh^OJc8R6F%svFFN8!D7IJ#P}rak%NDZ( ze`35EP;A@U=hADqc1ZVLos<+bzetAjyDda{w`7zT#L5qJ@504<6(>_I8p{^E&|eL3 z5`KD^WJw?Q_*6_xy6zAC{9igpt~)z#keiEL9ExQQjmA|U|BS|mz*(BENae*{TnF(BOm6$;V!9&})V`3+u2ffClukCE)OzjPEyr20~By>%s4U%tJ_#GSo*9jFnId7;` z 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

U323VAHZn{aJ=jCxDpp<>&o!l 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 literal 0 HcmV?d00001 diff --git a/doc/memos/rrf/PSI_Logo_wide_blau.pdf b/doc/memos/rrf/PSI_Logo_wide_blau.pdf new file mode 100644 index 0000000000000000000000000000000000000000..13482e93318701d1c12d80b403eaf5eca5d97010 GIT binary patch literal 69006 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 `1l~Ro^iy|4%nD!#hQwu=;xM^{q#vUrGho3+AlQ zC!tRl#-?AFeB$6^sv9lp=O!TX7BBD7y;q|?1#CW7Q25gerFfU~Q{4l*A*@2MX!RT2 zMBCxlpSMhupgt9uYq=529IxF@aj_n&`K$Zl)<@Q6vm0~|xja5zgdLU1GfC?845!!e z8*~e^Vy6d}&AL?-pke!|8fUc^i87M%kfKdY)w6-H%Mwe{CuBOouxy z|H#%A&dQnRZ;7^;QDN!rKhUIY`e$PPtM;qaDMC`|GWy52C|An%FRPAj`myMz-&BSI z@+9LtQ5IOid=O3Bfcx)p6>ci`3hJ?7YyyKmnq(A8PRTK9;Ryp z8}pm4?Vf@M6@nKH?+?H{6xyg1b8naa<&h_fs(^ans}O&RR`Y#y0}z*exh2m>a3^ z;s}S>D*u3WuRhT(L9P1XTgvf4Oc+p%;CxRN<7z-XtO_C^g^+cu8(&D~^B>|}H*l9c z_HN7^J8V8cm-`<^)eJg#U%GMhR9YS|ri9VxZ-*HQR+kT+-&Y_g4#RNLxl#lOnXPCt zmbGGa0}C!wMcQc_;uMO&qXG)r;k)@JDS!a|k46PZ{jKdkVIXTnj8+LTAzsRNe|Yz( zSg?|y8)Q3QmhwIr+6tx&acsJOq$1FI+~8;Q5r2 z47C-B1Lr$;AK4B00a8n(??u}i&nuWrmvashz+Qv3+=B5Xal@jShSt42fqIuG{9T&t ztptP}BraT%;Vj{|8?Sk=S5sbFIAOuUebao)PK?f}YSmw@*7IU%ZpI!Y4>&Mn-n3F-#(|cCf`Z2z6@9#?v;=4W)+Yz0yb*sh%7@#ZD@E5#TRtO zYSzI<;oho>;~wB3sp9Y`JZlYUTrY~TCt1m_@eLa>dNoIN;8kdOF6{y$QPCq{v}rLi zALsq79`72ZWuB1zn=0tBLn2&u=PY{*!x7ismV5E5iv9Y7ExwRz_vYYh9>riyk`wJN z60cvp*^<=G(i$HFc&hE(IL}4H6FyW<(5AtH&6@mPVFOh5wo0T&F0wSvO**N1#AHJPn04NUrIW{+OPeIadq2Sm9%MM2QlSe$d8bg}{*{Iy9(L~QY}{Ej z&n;4CW~G-HOLq9d=l|YMWY9G03jFN{jscHTD5rW+fM-tn0~H1EjJnL2!-I>D0|u%E zi(9R)8Z2`gU95q>*~0jOZDQ+Lvij6>s1ox|p`43+AcBYbQ!haJP|omvmd4rm2Y-T$ zPp!Ug0F+aoHT(=)@PK7rTIRHU7FUzTab0{(J6WZ)LP zWw~S*5sUk|Ml&*M6U<$fSqcGe(^6h{-^jbHTwr+E>_<*zj7#$!q?8&!n{_`6?DRkA zK@HaV&3vp;Yu=D5tm#C^{S`&;XHidH?ExnR$L!dYYF!pRx_qw`AqLIJ5{&iIaZH+k znY2FLdXf>hA?G3{u_6hWn|cKM^&M}QUj`RyvtUZ?*EF<(3bpfWOp^uOP~mXA$$@`L zO|?k7C-}ObW>MdaN;a5H&UVMwsfe?Mqx9P|*TQtZ$|PQ`)*on+PM+_{gITGxZWR|n z(d;N%i3@KpMdS7Hc2~+egu1mYn_>k`>I_Y#3qk{Q*^Pt(&b#)QJ9|Qtnw_R|yvp-@ ze^WgX(5TxvF#)Cz+!9`7S~zj41+$8#1O%73;S6xl00%kQ(p(w%K$Y#H31D1)U1&cT z1blBveM_a!vFtuyUyOjQh}mp_kt(@^>1QEMdaVL9IU+37^C5qKqW88%-8&lI_$rtM z?exH~6%EgHez!Du)r~P5oVUrm_{aaO1Ji^6rU}YWDY>sZzqZK9noSS~I5!P|HsP!y2k^;*!Z z_1$H-!%-Z{gI)tZnPyDT?4#R0avzAAaNnor;R#O>t9@U@M`6oRbA@|n?xaUd(+M=n z=24%Fs+*}>hf*^ExI=2-2Yl>qQdg_{Q8xwR#Z2_!WN)sX!Qx>cmWx^=V$w0m3E0U~ ztMqdRr7N*prC)me-@(k?}Dr!}0pHrRR3;TM^ zx6rT&ab7p}h+fSf6f#UQ!D)jW@#SyjLz#+QrZhnF5C|Vc7Su+m+2m~fCXAp0_&K#I zHzR!t$34pyw#3)haQ(zF%=LTCpwB{*wbpq0r$MM+YYK5Tt(a0G5~unWSmf|j<$cK% zQyw%aD{*%~U`V@uDyt;aI4N4j^G;*wYE86yp~XW{hYL=qt;JJ{-m}gZmn%4bag?3x zX-6pT)OU#{p8{gfMt%A-6?`LgZjwLB46w-6NRIWH_Qy|4 zL!U+9zWyZVHGJiv*+#BSIWCL$2mERNsY7 ziMvYX5ge4S%fnfQBEA5TN0U@&@rxe(hL!Q#JJ@yg@Q_I(%uygYbBgIJ{3c zu<1qwf&w`6ha`*n8f^@Zjg>=@kFpQRyenHAutcM8BxC)h>29OXlyeYPzhMYKIolO7 z`WIiG^?sC}9I-!XBdD86T&*ehZbD-}>!$xj**1vPDrU5@{Bvz7Xv4xvooKGySS}P0 zNjCM)jOR(FutcWq3~&ulKL(JTkxM^hF)fHUf}1si`iD)nURt=yqPD}7tb{lyIHuw z`KT#Kv}2^OU*TZ^AsBL{tctjk6GiO8`QaVcP>@>&rS(?8>e#$}^hrerD#LD69Ngmg z(yI~E>Pw2Wsz}n$s=f0kaHy!>@{L*{H?mU${Zv+Bx8%Pna7OolBWNC6&Lc|ihw8bU4=0%JU_b@-)ID)zTO%r66 zB*5FR$$_G5RK_?8H?ogfm?p@tu2+qeayC4yYfUYZw=^7T95$lH3scIR=087(fDOs$ z#KAXt$_nH>*h!eXK8J-fK{Sj>@?^LCvE;}@Fidrn9Cpt{M%pvQU(GMyZkGg3+d z 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�C*B-E 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

pT&9G3(WHV{^3v=n<;fyDWo{2bYnVY)Xm}` zH4qYah!f1O=3mU4YuyGW?AMMJ6aJbCe|cJE~}Rfr|{_<6AGMlZ(;C#z|dz+=%suucdzC; z8dM}h5;Jxiq_ch&o|G*S`2B-vb#6c-kx_6EMCf74Z2QPj^Jd{1Mb1YI31R>F`<2+3wvIadJ-TAYJH@Jjgj`50s@K;RE*MJPa8Z^m?i5k}pt>`z0wT zNOLcC&;>99n};eg@5Vn^-^2(Y-1bBXdhiug)?oVDu{YnmjX*9Hlh89@I6d%DuhnJ8 ztVJ?>-cXa*AZOfD;Ii9ei7aouEBitQ&4^L!57f9!VmBzZR15K?kv`(n8FTkw_PdpO(hgkGI%R!$I+EAi)O&ej4`$l){#`MIz3;%GbEv3Na# z?#A%S;Fh6^(_NP8hgY=I48i(2G~sLuXtz=FuxDyldc(@Fz%S1>Vh5GZv~mQ}Ai*-S zEUm>TC&5+U&?^rUM9b0V^Tv-T(kd1ON;6WiHeU#0KQGoeQ?mV_+I{yH9d7A$^D)^J zanr+n&|(5|bJ=5zOXluOgb{m61q5tM16%?@90x}nJ7Nv98gI#*cT@589dUWo+~V_b z8tK}~*b3HBWx4c~n4CX8_CEv(pIR%7#~Lv{;k3AVn2&!ZH$IQ4o7WMUln_^nMj6CW z8cNPmfTKH_V8Em1$z*V^0UDe7;;WxI>r}Yk&N)28&D?HNj>}p=if0}jDnw+Q~Y(__T{6v-#*Soo;PDb$mjU9);A!Jwqqo>;WVr}Zc;QI4j~6-tUyvD_!Ik5f*K ztZ7WxlUV-6u)j<{N4dyVJ;b0ShV^xEx2uza1s5x3{U<}x7oY0?x{zr=1oRmik6vy92)Q~EXAq7cSd3p8y>{V(_G?# zeoXdmm+L@A--iOfOK>(X#+C_)gBu*%Q*faD#WyIa_En3IJau$E-InEwkBo~PJ87~P z*g2pWo~)Q$g?JmIwOID5oT_sM*5;&{zR~McZ;4VHD^jtOr6@OL^~S_s(fATRMOL+# zZQ&=$HDH#;G&4VzD>gEqRT$Q!Fg zknIVMh2tmlvGGR2>TwB7(V1XC_rBL);x-V8FPObVx=Gj*R<8eS{e1yjc1|f{;dU%V zxk++9nX4{dm`Dq4fXAWzJ|l1qsbY?oUt<^d+213A^p6Ye1 z!;vh>iQ5E`pt9vyTccT>5nTfFS}?Viz1~%SbH%EVKzUBUSd2@P3TagzsIs4+g>Ew) zIwV6{E*nMPlH3Q8&f_rlR8ID)yYN?I$<*e&Y#{#b5jA!-s+1(AC4RJUe@kROccN0S zZYRVbt-PX_7~0l{1D!5)#IB_p`lgXz*rP}0e9t^!=v59TaARR?{ptNP<~m-f+c!7W zA3j@oC)oE;h-b)~uo@y8QP05|0qFa@h%Bx|*Hf%^nqqd^8=4KGL-$^o-Zep$BpJ=D zzXi6Hm`wn$1YC|9@L_nxRw9oq7M_Fy#ZdO}7OIbocqVFpeDA#q7e$BX6Pli*x3f87 zOHDC7F0h-UIni^T1a!_7jO&HJhdyKOt##oSuDw$f>~4m+ z!JEpHfp3nLf4pvYJu3SygFU-;v4)gKgma~ewmWaz^K~pMf-$0U)Pz*7Xu5MW zO?BZ*QO%Byw=dZrtjIE7)tc1F69vTE_0UeynXb&XdeS}iBn0xx`~B;e{wr$=2K^|` zhF>oU2rS=>DSvcKV7{e+%fda4MUFkx_4{aY}Nb0EW@+JF^o3gld)}JAvSn?5|DME%yvlS;qQNo%Ww>I1Y2iI)%P; z#7FTTz-X59NX?js>`ZfJYx~|@tH6+DIikhLJmJ(1Cjx{_sFRb~uy$I_HspsSiaF!K zPr~I=ntcW#Jl$6^n3bSL*k*R5ZJY;4}g>nGW=`Eyb<$Pm};-M<&CR85} zVKwM8^V@<{j8tY~NpQ;xkuFJ2W0}1aNrQ?GhIB~}3x+|iMzr%dleAK1V`R6`Fj77j zA;Fx~MyH{S#(f%rS!COOoqRg7z2p|fO%DbC)_10-FIUAUQ<{WTROD_KMNHnE?bv4O zjam_Cj-XFvOAS7oNp{dKhwOA^_67%H8=Hzudz`h*E}Gr%yR*RN!;gdSxaFSr4*9Ud z{d$SfLw^Z|v~5A9>!s?iUBo=B>Xu%YsH4T)N=~DS1ff5F)L|02jqzzUtF!2+g>dJk*ZH}4b zmP^+PWW@q41UzrB-6Z2{tWe$cW_xu#m)iXxp^jhJ8CqSuka*?Ekq^5O6~6ZkwuM?Y z&f$ljA|BQ!CwEL}vPOKo=g}=|?`IX&zD(;&+!~>=ZYjO}Nly5EdAAR=+nUW!C$xP` zC0%XL>)FOk9mTRYU)71Ro|Si+8ew}q7C-HSx%JqSPA|=%%@fK+PhCQb22Ti=}&1t%w~$P%)gHk zPp44norQ+G@F1<0a5;XXaOs4Z(VZGMT35o2q4&AiE0X|XAzxHUAy+2j`=VIUM?v)% zGx-?WlIc#DeK(s;Fu4WMotC`i+#*4!cSiUZ`av<*9)xAz`Vm`J)0)j#(GxPcwOU zU@|C-(w8elfc|RaWe(4MrQ^FC$vncuO8Iw=$vq5+LR@cAb zIo|1zZvrFl0ZIQMIYLtE>q^3NJLSbB$h$hea(-Tv90#Es!}S>eXs zct{x;CFN*^>#`i`_7hoQs8!Zw4tE`D0N(*GW_{a{N?u>0LpL+<_Z5wVE|*$Dl#gVJ zeIEcHqxA}*?(0q|OdJWc;mxNf+l(6b4kl6yjioSeb#OyA(M9+uatNF(#;!_6elS(} zd}7I?Q0Z^G1kkoe5Sp6y{By4;(5plw=$A=ptjps;P}9qRNBbi~UZ`{?!r_*UH?lGx zMa#8}>^gnkP`RNbcdnVGI}|R>MGM6_F$8k^q?med`RAh&UPFS?ffyxSzOxX;px*>b zD$7IH%bzeKU!BFj^V>3`lC59HgX!Lt%QjzW^=@~jaPIE178-ypUVbkK9`Q`8C7$~7 zT&M^%ic`LpWV)qc&s36}jRi7rSqUq zMQg4zbW$*krR1n|V`^bb*V{U|h4r-xLmo2;9sRRQS#bc>b+s)R72AY&ckqHGEfJ6f68>7G8-ST zsGvhCk>1S>mDMq|s4zo1wJ|FrP>%aR0{aN28Rs!X#`e3K_V7xWvJ&Xn)(5Pe&Hij2 zt(q>BJYOa8-jftae4cq|;1%i*{!Ck^UGgKMl6ifz3 zD~aGueW__ociU6u8{fU}`xD0mq0Cv;ZTE_`HQ$*wE7!YfSQYRDL!OZ;8^x5Mn8nj9 zS8gmFSvzfq+EgIhyYVrJ1x^x%Mb%ve@b;=~8*b9!T`q!ro9H}L=(E7@jPX9V`qbP9 zEKp187S?6QI|OfU)kr31aQ8_r&095Opzh1aSl$|(qU1{06rUm`325IiJ(PUB)@OVurjOup{ijQFB{?_(Pa_SM zvM{pmT_;r6d#TqMrp@lyt*x;tYg^H^CoXQr6S@@>9|3ti-4|-V5Cj1|BIyZ>7vWEQ zIFCgi+8Gj5rYc7c@`UP`*iDVw~D4LJ}qF3Da&5)9DYE6UZj2Daa{XSdwEm zr3fV>_a(&6R;hVxoB`_Lz_zZe5g;`5B9+9vJQ`G%Dyj%LdiNYyeAMPb%J6k6Zjpch zNAJj!K2(uRL&5EuM)?hS?t4;f2?rZwiO6@&_f_W5r{81%agRF+TCfN3Z8fjU$OvON z+<|vh+i>XxtcJxsFJ;GS*>z=Dq{L{(Rv<7RkH3mJ$_&I^;3E`v=6$r+AcOl|k?kq$ zPmps=i)>6V(aiI6j1&Ni(BY}v@Kn5!aIZe1V4+^Pc{J zR48aN8n+QesCU}EqqhftA9SzVWmY|)(q+SjeFjnSh|}Pr5ndE)%ts{G!E=cvl3?H2 zi?5>!ODJmLb5KOh5|AIsN0OZ`{knyyR^f**cOJfWBf^p;)HdoQw zzw&`4Q>arT@935dg+N!puScql)aFCP$akyJKIv?%z5`RubdWsWzg9MspfW9zpUU5r z(Hm?}NgX9ZCh5zdSEP|9oEYTKk8{1p_QuD@_r7#^XK+#W?rK^?t8z7kurc}onLo}` zPkfkx+iCYBt~cWzapv~IQU1qkn&JCOBfHyrr1y_o9Ng&wwc8)Fwfgj$yieu1?q|`U z%13#2XlW3liEMc7%R<|ae)ey8xK{@i%ILBm9Qw2G@c9l1j z3356K#!15jNpK3)?fXAIUC)$?u;$wXQQj9MVYjop-%*2+fb&dZrnrIt+>_pi`hIb% zi;}{)@Sqz{{}VC;n)v~ni&9)jxvMgP+?7m_!L|dd!SyPMg~Rx51MXH{apPG|DJ`A8B!4_PeV2~U5cNDRat^ZZGrd3tn8(AT@+Iz5&aBV zqW8^K`?kxs1IBcz*HlPLz0x*SgCIPiFWrhAe$YU*6C1rPZ@3}1dJ;a@JPyCQw|cN1 zq~dAsOYE7|!}(&&s|97o_i&II@VMA_ik;|E4nP%QGiB^2qCgr2N0^i5yOP1YLd&c( z1CPN2{$rhMciD7mrC)e@60%i8pIBH0FzlTSdlIPcWeQ_PX9r)`)#lM`VQd2jt&$r8 zPMCR~L8ngx$&p%O)>0c;sm2Ei+XtL#UFs`3Ug#?~PWKiT%2fzjeAx@}*y_`lI?D9L znt?1~SG2SawH@GDSPqj|-a9+euyv#<+CEH;aD3+zNd8pN!fH7P!d8uQ|8op_RlKC| zno2=P_IrmCHXw%*w=TJ;Us*DjvfJYGd0o4O6e#sAI`y@4NFLOzU1krmj5Y043%1TMCfZgzX9&OT?r>iFGMgZiYf> zV{%AJcujU(*>AJvo3M;TRwJ0YaISu!bX@#>#8;%o4Yd6s@-+~t^={L#&dL66Qy$GS zOXL}M^LS$*$=sND@M_(g1C5>KYeI%(PY!~`j)TfJBtE0+?sy=z7UTgQFBV~)^p|j- zXRH`s&$NT`MC44#P%R!=2UEn3nyU?0b!y7p(ja?etw#2a%5zC1c%M9?u>Qg4He&t4 z;BpB=n_hMCv*8%!r;+VE3&aVBZ5gOZqaaETQ4*aSrdwJ=actTLxQWnHPyw@8Ycg;@ zun}7MlhVBVrcL$OA}S=60agr;{FovE07i zu(+?^5+S`vnC^2+&4F3ZLsn+=2-jo_?&n*IQ1s*WWa}^)5UwQ}#1`Z)s7`@<7#ax+ zEmISce>{aU)?263xq zF*IZM!Q>8;$+p8kCEOz{Igzcso@xU6w!iWD-nEJbYTk*X8%Y+>6}LU*Bcu1q)Uoc& z3+Ns9LUfa5F2>8&3-)eiYmVy>HW`@T29X z42x`JTADR-3KWTup!H^8oTUjlQv9F|dDi8ieWE&pOWJarP|^HB8ylpv2OL`LE)4`E zgFIfi-a5$IjJI(>JHus2`rnbX;yIC64(_-<5PpVbn_6#X^d7r75z_b(m5)8}vL3Rw zoIDYov>8grNE04*8Lk1c_IoyztMVjee(qB|z;7+sbE3MoA?|o*(HuxDlBuMqGm5OU zn%h==8#?40GyKzBUR3KWpTUq0y-9vymEk8)j7=Ds{} z9U~nCYd#A}w+E#Wz|{gWECuC_kw*~6HAozlpV=wh6Lip+pnm{Kv$^R1q!q( zko@eF%G=bzYARSy>IAMJ-{l^V5o8^d&9ynpQBw<4488+WePz$9!oNz^q)?6|GTf)i zn)0rC_Pd>cXbf^&}jp+7&5N8<)!cZ*-6QkDUW45D=w)CzOZkyX2#{e zoGf!?{~Nx1;UJBSd(122C(Kx7>G&a(<*dr8HQ$Zc4Flb%siUaa?A4)5@ginI7-AL&}e*}0J5sGNeXm@>2BW9(+os$ruJS0ccRLxsqVa0Q*!AQXwXJ0XFdi zC!$g{+2TR)&i6ZdMCJZ6^pD#8!Q@YR*~Ru#bRlt1OF zen10JRvkAbdCXtB+J4oRMiAs^@LVf}b*~MiL_Rnk2{NGQ%0qRSVnyexK=#1pA5Lsi z)zB}9SJ=t%nelh1BTtCfm-d7Ueqm3ct(qVQmnGCANiv3>7nDs2qmwNA-(A58jG3X2R`&)dL}(2 zmZv`_e<`z=q43ZqNc*CgK6GitPxkfxtk381lG@9YLa#0Amw9Z*zCTNe?@KqatO_ff zsoFM4?SAhY5amFU3m(BV5wGR<*kh|m+ho9DRaex&@$YCTP;2YXFO<>ysw?vKjvCHe z3;hMJP5ZM4rm>&Oi*_YEh5S29IzEq&9AB=dhA#?cw?5c18ZS4+k*K~6?eyf{94`sG zJXz%|TYp5*SG&bnRQ^8kRu4+)rhs7!hWaN*ymZWV?%@I&*ZZc);ba|WQNa$$X{Ndz zP8ND$ms8K2p$WVLe9tr<4*L?7MMRZ7Nbg(lJE)Bek&F)G;(_PUVHMu=Y~7CEbq8I<1U&I zY`XfRC+!T>nzwHy>mdN}|!@)fET)@hfXYm_rZOo!sI~S^(|4`o53hM6U3Szf_+POM`_;^HlL_sF(w(joE;=I5hLEuFjSE#eC zorN2ZldFx%71%ICS0_sk3t)=j|L`VYl-lq6!-l{8x<7onBJb~6hQI_yb*S5IU{>2- z40(T!HI!Ak39^PdxLLslxc#~se1_q#tNkA8_Sby5zXl${ZvxCk{5e|@xH~Ym z4wwq~bE=}jO?NA25TBS3(BNwLkDqny9PAuze!W!-YUk+w>lbyXyQ>{Ar4a-hRtNt1 z?;rCS|8p=MFu)ENnh2YB2z>UR|NXTsAYO0avnV)WgU;D2_*BM!qvQK)M&5-%2MkCQ z2BuUZKnJWMLI-=#AL#y?^LKI3!S?Rgyum;A4w&tT2ptT_AL#y?mUv;%0dppW`F>7q zJV!HuRYd4u68Qt22wVw%4I2IRy!`+7+yN6Yg@GZW2s9H|MT8EvO@E-fXsiOv?i2FUm?bL=%mzk?4Y ze;18e_yA``7?^O32p_PFVE^EQod1mv7>|6x_75=V!oZwng!mA$3w$>9ANVdByYK-< zPZ*dsjSwF~eu0nM{sZ5I;}^g%2m>>-5#a-t5$Wf7ehV;g`-15wz@5UtFxJ4M4UycYLu#9N`&huS>;pZ0(AHXlb6n2F85cA7<-U~3o{i5Lm_yw3H zj}RYXemT#70S3`uFnqw?2@4|T7hoBYexB#Q2wpgT0k8=RBIXxh838^K*hBko`yhDX z_ytG{3ByxE=O$eEfF(ruU{vyNeDE~PMT(91gaCdKLd-9~G9rAiH~oR{!tslc7=RBk zzW~dK@WG(`f$zfc3*cr63nAtgU>Om<^ZXZ~3&$_QA^<+b`~oZ^!grqk0&MpMvkxMC zAYphYcRs%W%ZTuu=fA*%rVGU{B0>N@#QXv*Bf@u{{{jyxE*3t3UxX3!iwI(VInRF) zzHs~^3h;|CVtxUZ5$)f3{tNK9Ua;p+6yO)2Y=X%D1eOut6Ftv=5x#KzA_nja+|@dt zUw~yq_|EfR06My0`zHqQiwI(V0hSTrJI{XsN=z3GAHXjni1|efA-@1m=AZrxK(`kQ zA3qr27ZHT~0$WD3f9LrxA{UKc_`v|b0Hr+y`~q7>gzr561u!QUZ2y27vM`(q&*c|> zU>Om<^ZXali^ebfd;q@y#Y;r{2P`APcb@+Oe<&}K|H97)@QWxyet|6`!grqkB6{KY zg&*J-pgfCc|A1vg_|EfR0C(VmJ%2z&OIQ>!zW~b!@BvlbKkb9)h2s~X;v)?IsOR$w zu#5=bdHxIF?p(0_69D){3^Bg|%ZTuu=f8+uH2;Mks2B(X1$acyAFzxF-+BHE;LcsJ z{R1-U!eWT|1z1Le?>zrS?85O2kZ~3US_}~FAFzxF-+BHE;I3Y<{R1+xB4C8|BYt2R z5x#T$7ZLD<;};VM^TMZg!1Ux194 z2+$*f==npO--SPFf8e`t`~qZzME>g0J*RDuA7Or182-@yf$zfc3y?7pLENy*k1)S0 z45yNRKc0wU+UL`vR zci;pAuaX1Q-AcjA!pYJKID6n>?(XAk1-$Cydgouq1w?rG!C)}($oxDtaLv`p!x;oS zLGkk*@ZW(efOvIWp^k3OP**EQ3m@Qo1@MZ3m8YGB)s1U%u;y{z8&+;k9i zKKTIu4GM<;@8@v`_|b=-PH4?PvJQFCr=+`1i~I z%xe7H5!g8r_=dC*M< zWu(D2mL)ch5XSA(`L_#jbaDwFby!(IY$2#^9Wu7&5bQQ<^ksB% zbZburLz5B)lOPkMttaG<&QTD!ar?In&xvwH`2S+jizUO~PTFr7az{yE2Z9OFzDl*5 zH7zc^4K~1}lNrYuX9gJ*e8ITdCD;na2)fnZ;feM-nw4cmjqv2Olp(^!P}CS3|O z#K)6uDg#bD=N-%l=Y_#$&_bGz)n^e+!bCkw8BakdnX+Lx$X$hy#wx=Dys z&y&}$0QH~pIxnc>|I4YoQ1be_r~1E>mt&rdxwUydLU~!n+5S^zr0c}4=gI6BYyMMa z|D?=cH214f`(nxLH*NoSGQ-SMkL4!oRXgZaSlbpO)H3t`)H31$ zVw-bh2DjG#G6Zmw`-jXfq9ORZoBY3&8T5sXHM9hw%FQsN)Y-9U>xMtRI z|1tw&?Zn^Cks92GfJun&A5uFn9{APuf3c)?PCW2V7KjIMQJe0X#S?t69=7)-BnT!T z+(YIiM&Q|juoPYHm2RWO(={za^HVpre;(1}gud@XgON#%aVQ?t6aj=8r z1CgnXqrG|F{}mQ=RTG^TMgbMqzasg6$m_hY;MZA&3nj0=k1G6k&#EmD##=*PKx{3G z0mm)>PkGs*v_1LTk_s^qXPl>F=U4^!p|gMU+pqHv7fWXUV_0CBZ(|9y&V$%G7TTCQ zo)dc7n#WoH9exsZ5zCz?vvX_$+@}8_vx^uQ{C%Y2f73HdAaCT5^IOdx>tm`cRPZSa z3i2rnyn2Q6Zr&Ad4wge?Iyg7}gnJeLG6`^_{)f;mVr205IgS5LXqGuPw)W;PAeN5V zHs*HckQtz8mj6&RPhzQa6bZ? zGPAY&TWW%v#Odcr?Hn@zKgainrd`C~;O`S9zco!rT^qXvO!_t8xi^JD(yP*G>{f#2 zOPGyK?w+9IxrVFb*sP(ba$Uw*>76AD*wa^Cc^;W+ke_gV7aMMWw+x{srmY;?dsL23 zoAu#_m27yBflF)SGduzvln(q)l7o~fqAt>j&k6hQ-DOYZ+MMM1RK2X%2rN3<~eJ(Nnc@jIvUcjyW9}>HW_Tuj&GXIyvu1j4PAh{_IlbCq{ z5a8QqLmaHLY;1pX-+zcKJQAHXT;*@Uy$~W9Jx6eGpW|Qr2S4%nhu|)v&G`H5&2Pc! z#x?^_GH&>1pQr|z`d4ec*w5|vt&O^nk6EF_HH9u36MWH`Q_@S90V|!>+o{Bjp z5`#T|iRDT4@zE9QjX0LOPeM-v9bGmtFRh~_$z^xQmDfoVgpDikAB2a~C9L+x`&S<`^mJ75A(2q2efhOcPku&ED+pYkGrv;-UHdAF{W;WuIho2Y3EhWsp*#+&A(` z4jU7>9P>z@%Hku%TgmX?HonNQUwXuGdlm-^ij}@e3n_ zP7U&BHN7wKWF(`neqKEb`hX(zP4`S|dL(x!McVk;m6-oW-B&Lmn?b# z5|WZq0wUegjkJ^~NQ#7jG)RLqNVlYPOLup37q|i4a?btFf82L?9fQGg1#^AR`+Rf0 z@64NkzQI6UY%qQS`cE`a*Ck0m0G*2f!HD#7@4k>)Y&qG=AeI|KGLetioX@> z8d0%K>bx`NB@y3j%y%dog+zPyRV#Q{vZHD`iE^pj6<=_U+}cHF+CpbubOM5KT!p&i zCa7;PRu?s?e~0?AJnD}!R@c>0S5QBeEJvu}LmJz{uy<2?dnAtPe+LSioj4K*mlS=s zXAib*5aITI(_Yy97oD>ulg~+2)Xk;Q8ZkVqwZA1W6ly+Pw#4e;deedi!!N8lF3Z8L z-dsfdE>#wA8#(yF-gCr#4R}VjlkF1K9Vm%**AI)vuw`n6w_99AZTA}z`$5{{Iiwjc z-PTP=-(ci!YIMYYS*Z1AA^oeP%*L}mK6V-IhZhs)Q1$*rV?_= zWvmHtHh?FS*+hoI`KC-GNLD3%=m7hLM@w3;Q-r)O$NswNoC?6&JIkK5SvLTE)m`Za z-`Y(biP$eI#{MjzfAy_BmMlA0(<3{Whu~Ze13;LmxXz@f)lV0s@q$wYBG0^)pUF|V z3#62FbGvoU7L1#dswe<86dL0||NTPTFG=d#HFN=|FP04XJ1IOh84n31g$Kh}bYB;(xL9EUa7fAMwXivnLsKAl5#0yC&$z; z;vLDysgD>#B~uOSJMQ=v3}giDlj8ZqoXy=238As8P`I znw$4*HRs0kbmysXVs3vyY_K4fKf98DdIIA zQOcH4|AFgusI=DF4AI9&273LR{KC-_?_cGSA;6@LYZc!SuGM+f$5V*eNQ}a(2?%L@ zedN^546skFwE0w~OM51+DZ*-mr+AWR?#95_%CLR|yD#=}e@FYK$kS!L@g)0Be@)^?^N~DB#cV8P!`} z%SRPZiq*U6DI2Ffhl^CUcWT5S8dE4tm|zt7*Lbx0ERX0K+L{g{eEt}&+PeZI<*|VrGLIi` z6-2#g7Gsc3;~_jXK|H7obn1O!JAU$t5HV^3c}W3aeG|iPFqIc&_`m4yKhacP7ldBv z6PvaRhQo|Iejs7!yw|K(Rx|KmeNu8>^1i%?-DWJvR({J(fZ~x2uCxyVES6g;diJB@ zGYe%iZEvs-997@uEDZdN4>3n+)4L<3#GzO!6`v<*hzzb=g@3;a!mw87sRdp)P_)hn zN>^dp>_CEMY-r{4_&3jqO-c+q7UQ{Fyt<{G*yN@RK{ug&gSEWaSN$FB%lgzmis0Af zsaI%o`*R>bG9n2%o;yWEx-wv9~L&o)5)tZuz zsF_QLb9Z-kfYgZxlsFZ-{p}uD>-ru4Kp8|85{uv_Iq26(WtzFR`PR&V#COEJIz?=? zl}KjlzU>s|C#QdS(JX%QAP@gzGL+nbnMI!e`56)tiZ<^iux~g+-qfsx{jym0&jS0` zGbHPmbH@l8RHsX&mMc-oXdB*bIBKZKCC`;QelHc>xV^LSOf(n*NM=H!Z6|gW0?%O- zeUH0xl8?`7muXm;s4b~wEQK9wnfMVr->{AM&G#g2blc;@JqkxL0CFk@6NDQ*BXJS; zw>7OhF{M>O%36oK6HM%K1F{!;xxeY@i>=fzH2xDksn=DyS2SjA&PDLxLu%OIeiVdV z%-mexS7qTbKB-WgY2EoC1toJ0RSgRMcz=S0iKnRdevdPVv)vlD8zN z7zO$n>hpzx5SmNKV-fu%5pn_pOA8+bDt6SCkVWCO*mRV?q_hJbKd**o{7N8s6Q(yD z4llM#zhL?&9uBW7gRe3D+4d<9(}xg1F^qYR)Yba@W&1#;4_A+A8rqX>4L{7!{H#ib z_&}Qfb@%?7jE}xgQ-pJn=b>j(+4UHE(j*ts$V`7WS3Rn_ANb4Z(gQqTSQ%~&9Rej>E~ zV(08xoJ{rI`zWhCeDepZKoid+a7BM$oQu-Sq3-q}%)rI7*bgnifQ$cyoHn06j=g@T|6ExQ} zh_x{acNk$5w)q#_7-ZoT&5ql2c6qUQMi+N$b10_2?kAwZ|N@_4GnqN^5-vsv! zw(FwT$1iaIfwl{HU3Gp1_y16v8iPvSjQ_nh&AjD)6JR%(pNnnDFM$1t=I6SM{R*(Z zZB3&kkzn`{svD#Rr0C?E9%C(@)s7-)jxz$bh&4OxW@d;#pU&&ZYo(>mo&g;D@Q5Sg zsIf2#+386WiI55(6j69*AwQZcNC@Y%)dAXP#dCx049K5^MvZ)pJu$`RyrcRI66*`` zO~=`bzA1md@oz{=2VNG?|53{Hx_`@iG z2H!WPsGhcs{=NLgF`bzE`>_wEww`nOI3&MnEuhq;PMJy4SUSIghmk zJ&e;c`>=zT1q&p%+pKV782~lVj5IfHOt1P!TSb*ljk1C+H~qKziNi>jbnZ$@b|VYzo7jmTCVE`0#|51_Adj4F3^OI4tx&W zjAwI&VQR44{h|TUN>F6r)%+)}=K2BApX@_eeWFe3&ek-wYu(Ma0M|pXmbFH4)N_d3Ax1flVKZy!uX!| zO!?U?fPq+0usdhf;^N}t8%-^NsAz{y*vqsNn;yQ^Xj(p^{W)b~2ogRCP`Y?u$2vPy zm*H?tUOHk?2a|K=yQOK5Ce;qC^i=7y^YGJu9>hBK%)h^kAn{=6&aP*xKrXff4EsLh zb_6BRy%c1AP$d&*!*htkMrsu}9}Zz#&6@lABW;h>4DETSV#pV%%a#VJ?${UMu-qAd=y<~k2%ixMQInD>LOLn?TK?~UW)fkpJ5=R_k9TsI=n&O9^ zZ)>0{UdVFG-Gu(Hr?v0Rb^eb2<&3sJ$_!q2Rk%W*+y6TG>J@2omLKu?VeLHm3aU$I zv2*uSy2TF^X#VO-R1Qj2DW57vTO|b23eM$q#9?y7Hv3a+yz#$H-b49jcpR2rcyyfY zHAY0;9e(IW1jDisbV_kb0lDdHIyDNLOd+-1?lTHb3#EMq}%w^v1E;UMLR{73 zd~Z1P3(|k0WxO6;_XDTf&egW(MfzsZ!IP(0U;c8C2_zL#qW0~&MoUTU2bCI64F`>-E zm(==<)M_@ykwp;rZ5c`8!IwLQ&!LL~!x&`l;B(=sj6;Sg(kb5r^$iyCVk7kn)PJId zyq=D`9d|su?R?cMxbM{iD zIn+mQQ7YKVXobkmM$>C|j8~tYt7vb$zl4Ga|9D-0&?#46ythWgOMmm5hRtfK_uM+N zuC937P3v`ovAx)e{jy$vqOrZ9g9YoG^BM&-!LvOKN4I2VQDZzbUMN(eX@~+*M0di) zlWNHap-;wgn2)dwVmh*>AVw=K>4QgFfm^`ih@g9ki4ylDo0QduZwh2RH=%rk zQN7rW{T<~$vF8QwdN$$JU2%ajACll1=&pzzmarW)d2oz&|3x5T&uSsje%u&gD;Al= za{;|giV2>W=tiOEXI;G?J>j3#SnM<3=BM+L>&)QzRBkW=gH)q2JWq#aBlH^W850-% zYFu8nck58}lGY=4PwU0COoIB^QGzEnHfdA_!7@SlJNs?(QoJKnWH)m8(x9HV!uqR= z2=KBe#ve1}m%e?@D#anD2d_{?`3UKveMjne*3}{#6q! z(0kgqoOt*ku})dNrm16|Nm^+%REx|ZjSvZyW_Wr3cQvoSX} z)-?e&&LRR_bPqchb>2M7@|pSh*mmGW*(<0sxgw~A769~f-d~X&G97-&(rpKVuPZrkRkIc z_$O2|U2kw0laR*2duk-xK*QQih>*|;sfBlM&FOq6O`{>DGI8nBjhcA0El^y%M)N*# z^Du%njg|9fx51UI8HuQmPL7~T89v&e%;P8!*5N@Px8Q8LT@dLZTM+JfW-8q^BYonl9?RxSY#gCnT%oi zg;NMi{MVK@=%Syxp!}^{*k4$)u>bi@=>YdYo%29#>CS&&-9|t1fLR^@Rdd~Z3=$d= zT8`O@n-mffQh*d19TL$iUfzr49$1zn-0PcQy4=Wca9s29{I0#^<^Ql--uX>(ahK`Q zGtvVV9!>|eupVOY-p@Q+va-x1{B2)iW6kHY>bf?QDa z;>xa%OFxz3|JF6TfgnHCu>VeBSGC_j)+;vtRQvr~g1i9#6a=vDafNSpm zRBZfPFYN{u@>A*UZxwa}Lw>4S{hh+DDm{O=(SEA*{H?;S7;>%le=2nRt-@|lAwL!S z{Z?U@1o?scKb5=vR$-R}VPv}S{+!_3%!{pZsDwXMD?d-}o1{8aYzTZLUQ1bC&e zeyaQVt->xD!pL&1Lw+iL`Ol>>Uu;9p7wB^M%H=lXVvgU1#$x_q)&9GE$iI|ke11Irt zk^FRR{}f9uW}|)Q)xN&#C%Hq+Mwe<{yy!?>r>`ayJPCIk5j~@W^~+-GDy@bbjl) zUD+GftKB5&5nul& zIC(K7;rtJSM)Y1^O-B>JnP^^HNIzoz5-KOc<({Hu@kkHHDufCni258wp$tPrH6 z!4Ht`){-7eOxjKHm%C2V@w~+e%Z^KOW+fIz>pqHYX}5NIZ&<@h4e=C@JJpjQCtcF| zqlC`GSwU!DY!ulAI2l75A{cG;UG$FqTu-F!woui9AP()t2k_dgR7nU5HES;(1e{6k z*&3-YM>6)FGx4ur*$RnA2K{RpSfdA#K8o- z9Kd5uM9;(wis=Ywnm^Qirf*<<@kvnF5frLaAOczAi$@PH9-V(1P~Mp?6A|#bANSSO zTxxwL_8-`Csj;ueB%S|}^Qh)ubC%ApoAJk>snjzQEgP%z$w3n5;V?@pYXJjI%kwWU zq50Qi&}riWnQNp#U+A2x=TXpSI@Si~(}Y+-VNh0(r|t3wG%bjT85BJ@|G9jQ6?70g zfBy3S=dYcIOwWIxKYuaqI&+# z&%Y_tU*G)d_h0C;|MmM4(O-Up5I?`#^8|tO*DjGbe|&)&=ylNJzael=t)CINw9Wr> zUI~CkZaverWCTb*v(`5FkEnG{;vYdcpMdxO>CfMQJtxvnz+T0GesJo3*QA$<>VIZn zt^=RnRmJ6}uPny-0)jBTF^%>6n;1cJ))?8&qs&)H2E7W-P9eSTc=nvfxV|w*M6^O_ zRlq~SlaWdB5J9!Qign7T3skDcg9iu-K7+XB<+mWM>JDz46D||j5JKV`*!7T_?8UNd z{6j`VuL0XK)pRK8GDczcSgx0mA4GFbOk9sP=1zAjtk#Y`Sgmo-am+clJ9|UjdSXE8 zCL5NmrYz}o()bFgH-rA^=|Dp2wzTZ6mS{o##|pf~4w9$Z>8~W{x~pLc2c;J(_Ie#$ zOv!_zX%*>^)xN3jGX`;#R+^L38n3)OdNS6rIq)u>P&H=DQ>A9}DV;vIY=INCi~~)J z`lqNehlN8!=W2j9$wf(zCW))9tl(7c0hjW1hHb=e9NbLLRx z8T7Mz9_{0*Qes<637_BA_4CKM2;=vTEcG+$q)%%NZ%!d~rB zS$*D-si)Z5Ev|aQ4g6fIKGjM!*|;%+ObzM$6CN|?jd>UpP+ z?tT_Bpm?v(9+_chj}z53Z2PCa3j_=WtUJ z@Q&m(URgCsXj=`3Hh0wb*Nc$}`x*i~vV>e9-zbnbg2NR^4&=~*e_~`p?AUb62cAP9 zOW97`$@R1E2H^H1l@FCUM6M&xU0LK7wBr*Lwp5m?lkqb%xemRa?(DcG^I+a{GM^bK zp>=iITJ9ZPlQIDfmHsbRyK9MERkeYdYGMCa`jW@Rxs+2E9? z8O_wCVT(c@tEqczZ&uA0@GETl3*YGYvXWOnL`0WBNoZ!)(|c)^^A^5)$`ae63^%y6 zZ|-v+cH8twmymGE6ng(hlBxCL=dGG}9VN&aQu$=c=q7JlpM=sGg=P+@7*iKw4QHf= z&@>q0h9WI_4%~g@Z^y49Y$+_JXQ($cu(1>BU{sztw(2h&`wYgn8sW~eIT4Ih-4qrX zk<25efR1LmW|d&vFC*b4+nxFe?kgvb!H8v}XtM)uux7=t_SGKykM zV{g(n^w}S+85t<;s))|Ds2|T(FbBw2kwJjoJPCWcq;4u+!Q}nZts$dP zM>ez2wnc0|c4fTT6^8}x%y^j*p2?%TTQ2XGDMTw?NE*ejEs)%j6J-ai#0#!1v>}IE z`EB{#$(89BvNu-i=`K+>tRzq&DI*<)4X;fZ?1agRp66g>90x>osVBXCk3kW=%EY*= z=GxOq^z;*F8~B!!l~>6Sowtca?(^m6ZaM)&s3dkfE9GfSXPs1E6z(S)oMO7@ttfUG>SCx%S?qhN>u`B*Sigl;S2 z4B%b*M=|+lkH^xWn9;LTo_D`IU>#g4wlADHXa-6MBoN@;H(uf_TwMM%v&NGFQ+%Hp zmiKmp?aEAwoeeM_c9qM9jrXk6la5hHsn~Q)zH-g!v?*?O{!ZV1reLIZ-8y%S^`seC zfP;Lu87|&r(94%m)>dAc&p+%7`WVI^+30z@ean2^s&fmvM{4eXQxevoXrNJ+JX@vq zJ=O}qB;F>2gS6cjhCb5fXkZ^&tt6s-3al(jz&?ZgFtf*iFXZd3LYX>B$)K-QfwK!D z+g=W3E<$VZ%?^HJNs9BVB&d$lMbkX1LeEvLnDym8sygwpTHjR+@_u`WH2Q!r77=!y z$?@ypsl8!hxqOS#{dgaK<;=oBR()OUmC1CUxiZ1L;;MOn-;|G$YA>?d;`P3^SwyES zZDV}NN4vF|FV^51YGSi-sw!XGJdcGXJ0#f0=&)O0{9J;+aG9Xukh<*MHRD&D&?^H~}22XC-z$MaI!0@QE^H|8iU1fv7gaWhAy@#Cz7UEjTstFj~fPxN=ZxLHNC%$`T(}Vr**EGKhs`rBhH1yKEZaV#n zy(WS+&_C95mh>bd?%m7#X+fr(S?bBGhl1@UoRWQomKK=_R?4@c2|g^%4BFPmbgfzzwCLnoF>pi}CZ*(A3T1~|)t`DQ{`_&wMK0e{J zR{#9ewtr%Bw0K?3{d4TP8iY&IdR7e=f*Gx~*GAug&OvC+fzEMPfE9w7v1K#+?G1;! zoS5xY$NUrdHM}&(9yQcn{TNa-QPRLwev$G=wp96qT*Ske{`mA^jZ)(S!YA_`&YK4I z8gL?zhaJwq`1L#h3hn2#&g6ADFM$Wgb#8qgJcD?3)sUw4o!*e9pKD^(Uu#s>e4|~K zdp_t_j=(!M70A1*9RSIT5bqV1@3|4ozlCaYTwjN3GH{~xc?7@Cw=8P2{`s<{Rthu& z)qTRkmO0ECTb7OFWWa~viNFqB4R1)^SL1^#l+$?#!*^O{cF_kaWXz5$9IlFqBf59q`x~G%GJ4^|CsIhdOl|4lU$Bh4(;;gsF5oBTwW<3teaCXK3GpU zBHY2`M{tW<>+5Y^qv`3Lcui#3^7&Jrcje=O*qkx9Mw92Q?luSk!qVu~LvVe9(wWjp z>-b(GUF$hDH2u~kX&9)~85y-6bn-MA(r`3%ib}~j)-*IE&#PWqdYRFVq~tsg61wNF z5d^*0P~YNsvL9N*y?pRtfodyW9;mxuK)0#lr&)pNngCdfl;U_a5h>*)pn0#O z^>H}!F!fxWmTj>D#m;hC-(P zk7tL1wCfX%^P;8&3vr*gNJNdlMfV5~TnI&XYO*HP{`^R9#BGD;&DN8dVx0X9ob1YGo=O zzi8Q(m*(ymf@N@~4#E=0XPxtBcvWWu!KY9m1ETM5@O4~`viSMHc74|Te)jzC>-gCP zaHF#W)Oe1b88iu)5dbP6=V0gf*RBpwy5(Q9hC!|l&_{lBb%1;X|K8I<1iT*0b9wr{ zIFJARJoE3yJ;u)s{z$FDRrr5%90199TRlvxG5NUBeRYuS}-LNsX6U+)EP%_PrZ#Q zF=iB;Tt*a1K6C-G8xyEqO}&d)d0V^ZfT)|PfQFE7Rw4J3eC-cUZ1v`y)I)hK-{rqg zo99H=9mzTxV)%BL9xm$}^T>iLrmt~JVV7a5U;Eb7_Mj|vtBk2QA=%ynNque_r`6rY ztU!!2E~ES6FBw1Y*^3uEHGJIrxG0yj@`ceSX!bAVvv)&Op&Vxl!Hd3}g1KmZhN;{n zXj^+iJMOljXij8gqT|o`YV*MwA+AV8W)rx?nFnNd<%Y&#k$K_v-h6%6x7xO@Z>Zy= z>T4;L-YH3yX4Tu-j)0Rp&I~8q4*A<=UwxBY(>b>H%&oSwZ`mCkvsQEvu32vHg?l8p zBD#v4!I=7=BF|3EuL%QAjJD_Jzr~6a9T}ajqCP6>P&cx3-HEG2Eq!>@pplewL|BHm z%3)@dM)+!#lFdqNa|4-v%bn)r1lmJmgzF{_Uj{pV7l&CuzBf=GN|5J{iHL)h`CoIG zmH7t_gFf<~a`W13dwti}q(_wNMFp_%;MH5Tp|Cz=--o<4iCjva_)+kHM|-gk zw$1TXNUStr%8h9qmShgd{OU(J832XtQlhH9+svlz;!5?agA&~L$@yPxbK}5yl=+PA zB~3}&?VZ93oBK8eC*OiGHr`7+j>LPADF4|^a)dC{hOp(7sX_sjB&9%yoEta1ybCR) zj9*s&38|q`BvjNvQCOHt*HdRX;^Z&k?{&Sk(K#r2J_I4o-ae?x2oj%#+ze9EZNjv0 z;pegFKsac%SWJC|_+>4^N~cYN8=3h4jCm)&mFZJ!_*W6rQ;cuN$V^9y`}EDH97JZP zSP>_*$0E(An1>H{8K`1Te1lP}xLEHiM4f4?9TM>0#Z}HSY&5H6DpVm#f5~Qy{dJp8B1ZA)R*;)T3%RsOFz%tM${!^Cy;-~y6H}#5T zf4LO@uPl38Z5nm1Derp)ED%GWYTSP2C7%?=O_o`@0{Md5IItAPez3N}nR_ci@C*2U z74wu?Mw}DJDX_twc_ur5AKgsvz4k*VRnz7?+=Kg#HNo(C-*(x{k6LoDbftJkv+t<; zTPXX~R)P1=atZLM?Dk-E~pVVvo}0Jd!y6P#8=tuI(V?RRyWD2_;*cSL{wWk$_= z$D}xin)P4{qPkveDbLIX1N$rWXM1QZ!t(vmRJ~!7)q%)~w`s3*0C;RO0 z5zmAjiq_Yx8TRc;v5$vEpYQd*UpLcbaCaqjzICjM_OkM=8r*60_QSHuD9Y-}pgfX& z_DQ~VyH5-&bG!&^bJ;r+F@zBlkGe>!V_0BL$;#1=RZ~3jAH8`K(t6sMarjisUSbFK z>p@6!6sha6z|tqNP_;AgSL4IqZldv}gO-T{c$FLU-I)GjI=_2&|Gg`a3Bbm5si{Ez zb2diy^MHV^slK%VNNfG%B#bK6m5&R>GRlbzr;+>^2`)Y`2J*E7$2`ItxcitMP9o z082m~7!|#W%H3jIoK_y9yhR*Ai)h9D_h6_+E2M@>I zPMl>H7DShqMen($w$ZIfoW;Y0mvRC=4nE;5g-8-S(?tRa2Mfm?1VVz35mJp14&0rG z(9qV=o7U2S2EzyELq$h?St+HsV-0qS%yg2(_KA6C=hVBlzYA%96jaSBvp9TcE|#R41$vWYL~IpCc*xswzU9dQENQQ5Ws@!MG131^sb#p!-+-|7>O`vKrQ$<4S# zi2Ft#PKO7Y`nnpn&H!f&;>hEbY+Gl^G6zMQ5IBh{Z+L=lePS*;NXWCsD%u8nPorEK zu5{cnaEd6M#|+Ims5AtQxe`r(R{8+UTEf`)jNzl9<})o5SZiCD9IF#QaL__9Bfv0n zp*zZnb6J5g-{GoiYHn^q_utSair{Vf905k?3$?xPhz*9cZM%Dq@E#bfBDQ)}V_(fl zud4!>N1n%55i{O=SK4qTFeDUVDL$?{u@NnV^uuQcXT3A7J4@I^#^*6ps z#Euf)X+TwseVbIiz)ORb6(DEwCW`(P2OQ_~3#naKIxwVNTUU22O&CCN@tNBbUZ5&n z)C*TSC0@GLW!30Yz-dyB^%1*2s?=OS@3F`!?M{HjG5Ufx>^g7v5nN0A=C?_WQ!e#8 zN4z|Q5n%YLe#WOzn-7jGh&j$iyIqfgU`REtQnR2%KDF3?CBEDdL>RtLxJ(Kb!Rtau zx9Lj9OE$yX)tH;++J5x0Bjy9ZH7ER-)VcWNsSJqZye|nyna?~UT77vT)k&qDg}}%P`!h!olT#t7`Q=ANJ*+-FZ-~|9>xMnM4q8bXa$H-L1lu0e3VEXU zWU!b@74uHaTpx?(mO3r2v~ zOCd7F^F?_E>7vXXyqE6>x{jIpDDsInsJrB?Ek18m5?rH5q%nDh#S>uZ#%I*>x=d$Z z6Y=(Y<5Zc)ka03#MEZpE-wM-G?@Xg$xyC#lbC%H6jzA#e0Z)zYd85ZXbqZ+!r`K`ac=&j}PhNs7ni}2%6efNU682fcB`M^{erV~XY zw1m=!yHNw#gA}Id@Bn0(@h+n~W4vT?6EQoF)1 z`GaWuu;iP4343qbMrS$uoJZ+H8z$<@Vem}BXS%+M^x!R}2u~9Nqg@yZyV|Kv0_$26 zR$qT;7q49Fr2nc&pBnW1a1o{_`S3n6-WfwGZgEpPvD2u3QFr;?9Sy7?4sh}InG$Q_ z3>|-Bch>R3;AFe~+#vAmB$lr_jg<4=6O3~zAr*j50;o_h6*(+=fRq803cW9*rhW8}B!}v+HHW(DB`j9ModxgS^XN$irq( zxlAM24Q~r(P(B5yDqu673Lzcq3)HN_dy6GQ(^g1pWE`;t@vTi`iiFk&s7#hiM819So(eccNAhNv*NotK z>+;eXW4d?pXNpjwsfv|s1WA)d0G}*@{E;Bv^RB#Cy2(#uIQvSA?d_-nHJYpKJh_hg*C zg@U}*QDaPag~O@2s`@328unXv6Sn@vhP16u&J<{k5t>~FwfIwtv@dkKm6l!GtRxj- z)`_t+AK=+~oNPMBWeRHoW?00;-17!)dmC2!JFpO|^6~VB89}$sx+~-U^s5%*PeD`x z9D9S2GGLxvSzx|ULRlgCvTwC}(x4aRVU?)sN!g&svy^WIXut%0SZ#9bjA7|}c$X!= z2rGB8tSoRYwbH^=BV1(naB?z!wyZYY1PzJQ64iazizLkT(bRmka?TrJ4M)QdUFBt; z3i0ps9I45%2Ll&0{60U^*?@PzBoC>|QAk3;tE}OQxAri=(VZD+s&V${ejH)9b%L(G z{2HFc$*+2WC{K%{FK^x`?NI+zg?74i`8WmBw9%Gh?we5A`?n7Ra7$YWq*HvMTSX1@ zA1_hn&9~1MkW8vs=qb|BB!s(-_C8$B`{K-&vt%H|tJ11$quI6WNahAU5y zZuo16pzv6;KK-(#Ko*G)Mr*wBJNQ_=rxXwJ%jAzpI|YfxD(oxPO74V_TWbMHEo=wv3tidz=8DUz-SH0n?PmgYAzKIMjGoC3c zi{w2SHxI8y#71c|%EnpXzpE^cOJ=aTtl{&j%0l!-{}B25yT&?5^evzG$1_xBRIEEL zR*`gj@1yd#;92rzrj@Pj*b;3ci`dYh3yWv$WBr%jtFxhQz9}ZwpU}WVAHBx}O`_WH z{^1LoM(m>Y=AMrhna@r->E-U>NE$`h0f#B3k&v;8_Ky!tI?{8wQ0tE$;LgekNH)r7 zj^9J%F->79lwLCKaLZ@c+TXuZgHCv|JgQsC zKcaaT@t#pAX(Te+qqc~r-7AITeaeVl@9`AsIFshlQu^h$BDd2t1mvNTp}Xi$D^(FS`{u&Pi2XGUJ;2D)^21e z-V5vW%>ZjR>@{F@ch<>q()QU&1M|_qm%e>8E3uJRG^Wqr8v$8B|Kzb|@P2CchbTjE z_GMX`ClLE0wLWJG+~xM$Gq|EMQARDwafW-{N|Wl;wwjciZ4X(L}4A{j7D1BVf%m zY<DinMA2=Q2ZU!gE$>L-?RX#@o~`^3YO(iZ<2z>7W# z;jb%9vBDl>qVri?kO}?BNAB-e8n|#oVA`H+85}*Xjimo3t*#=UscO|@((*26{4JRd zlTaOQ`vlut{A0s6ZqCh`(mjU#U>t%@PZAr(EL_%2c|HOBDfQH4HWUIsDLD<9BKxEd zke7T|agx7}Otm@o^w7o>*};i@7inMZlRZ_CqvS-Q7lYPG6f{ zh9s%z75%}nC;JV8sb^3*qu9fNN5{f@e$uaJ9#Kc0zX)9pw1c3f{2#&?i% zhOTe>pd&xQ*KP$RPoStou_^;e`tjN%rKTQZ8*nHcS-tV6a$%d?{g^JGjL*L0DM%M6 zQ9(KDo?;oUjq$*l9ulAL>8YVgfR|lvt5|~$8uEQR$~0jJCfTS^Ve&|)=-R~P76iFR zv|f%qU5V4>SuVF{%wgZ)cSgQ@#4ZRf5dN@>U;eR$kyOyE>u_u1lHd$R8zb#IXW?KQ zKN)#-Vp|`mV+@Ri<4r98Mf#}QZQlGW#n{GJ0kB`RdDl$AHD`9XBHA|69d6Hx3F0>O z5YIx8OLXZ=Gg@s>i#*-6W$(3a2?x%YtZ-T_WBk}?Ur9u*rA%3 zQx0E6^r~ULZxgP2u?7krSE`?+?iL51xug>>0(tOJu{I2}@G^v28$KsqDW&|dZ)CeF zhFX>vPE__{9~j+OaPp-0a)hI1jLl;_=m!#(DC|pYk^#D|gQl!IA`z*lV=kMT+wCm< zX6z2@@d+zLSQ8eni|Cg0^NStHI=5wpYixD5dm&h)!qLMyQQq?r$@x5*-IT6k73xC; z^@-oOgL$@Sr;aMK9GzHe?#M{xirhXoVEsi(C2PGy{0r2up&a8YBy0rM2i6oQC%C=R zmeHFnE+269V`N4gQ?O5Q^V0@aUcW39u>-C)t`Y2>CWcIla1Fb-RpCgz@@6PivazAR zrY&SjV>Ha8yzZaA}+yRPYol#N!T<~$zjtliaK7gMV;K#ltXK1XKAwN zBThXHEj8Fn=*LA_e7coybz(JbKW>cZX9Yz+c^&Md@WSuNdc>X05Yl+Fjg)sp7^7HK z0LS&UdQa6YuTm_?`VEb;$4U!Z$a4c2DtxKq!&>?r#X_*b4@%F0w|bHv zM6Ofm>9?t##>#p+8;5YyJU*i^+N66-mvvizVx=`BIQx94}?e{om8eR@G9T6+iZw(8USWaf{B+D zM?CSQTq$b=8VIa%Jb>yR*k@Sq`(_PrLLDm3neoaM>|69~A}O?siQ8=a4MF8NF`yI- zg;hzxjgUnlwrt0I8p(Bx8j}0K)t9{0GWC-PUJ=FHFay?&0V+#L;NIy1^tQ84qG3$P zdP;M39O1V~T&kKk+_&btMO5paOP2C=t7}e0k3I%0%Ra_*VR&y5bvr?8BA`A>O!JX# zEr+PdJtSP-LfGIN)n=jP(E39t`jMLPcT^7F8Cbyo$*Homd zU#)9hRH#euepUDy9nJ6TY+;;?u!}_$uQ>SdzO&>z-qHtqxJy7cnlLeXoyt?kq_`sX zWH__FsPHYA(Kt=`%u1|P#+m~z9;lM1`Lge(7S=L^r1hIxy=TIBGKITpRJW>gfO%tq zIQdp4_+E9${@!@RRKb==9bML4Y3}J>WYB)jVrw?odO3Ve%887yb`|1;BpqbXG?gkJ z7lVQEYBY2~J7oo-j6--P;qZ0!Q>JHzc;7}AmpkXc=kYR?s#|?$#+&phg8*h3%o;?~ zc1rX3-Oi(jk@8}L;YT0wGu3Cr+AZhl9&txW6EJ#EZKA#pi-^8IvT7m zpjU&CS#y495lhS{!A(FtG2W3T4gEx87=H)Qu%|?7iLIKKtcMBbRKbNycT#h!PrJjH zy8@WL$Xav)m=Ed#D0>)~6Q{r*3q0-Q-<57fVyh=#>vrUdFF5s3ETSsf%^H| zc`0$5=%zxp*;0MKyF2U$h+Bi)X5?ecj!%ut2e%c6ZF!JIcDqnR9>VaBk|jf95h~H8 z8_-$E?qH?I%5{kYf!;3YM)1dz%UYS9N3Tvj;p0+$MK@%}bEbkNlsM2{FQBdIG~3En zV$lUP-jZaQ@FRP=jlMIKURPG7lwi= zCZCC*Eq@yLhO$KqO)Mc*;5tG%w@0TlN#A=g=0<3v2hl76W2#8Lnu(Pz3{tc{tnSiF z$cmreK&h_iNS!oD^zr6VJy1mRm-IPluj61Bv*Lj=wG>)(U%sb)Z1u6XVpJ=~8lK!Nxk{Lx zRwKg$<)z9`g1GQSv^_bNlL>K?xkhb4hW_iY-fr3K_kl~fNcG9LKKq=G@zZ2mf54if z@?etZv_u`}oQkNi6|yO9Xa;Ac28$$zz+}kD)_o}1P2MXTX5*<50jSw;6QmQ>b0b)r z)Z}_uK4LLeJ{T)Il=H0lknw2|bKe_ZOs_>t0d=9V(g+}gW)--nfw{3ddANPH_x7e_h`CRxrY)P}DhY-6Iql3mrURSy1RR9)*!%Y5N(TM? zLo@~uT&<)Na`q=2`(+^aR2Nn190`aU7$f5zu7AvR4*E3Lu{dXu2Fh=CR|gzH!$Wg_ zwOby3GVrmQpPt-ergm<0k9yITE3+=bJ>>Mn@6|lN5JUIYm$w~Z*uZadpKTd>>) ze$Giqh>x0Y+)^3@S2t0QY>s%CO7S#!SsRuLXV-v$jan298?HPURa1axutm&{!sd`S zETYAy#tr2$YtJ!E_WNAp$$ky`@V%*LtBx7;-nx@G$E*~)<%QKrVLKF-r_gc$h9`cJ zu}qrp!nx`B`rOD!(_FVr(Z*?YKutPJWhZ=On3%E?TQkXJ>p8k()J}s*$JAaH)IbQ2 z^Cn^j9m=}E1tCUH-sRpxV*tnBnVGkJBE3+>9|9v`)nf6oxddYj)|brWlK`S?2B*bx zTVBgt3xBgX=cn7j$Or<;R-tflD=;ML&3$Fe`c6lfFT@t``rh~VnV1;TT5(7@F1?-k zGT=L8A@RVGZH!^m?d?ZLwkQq?$+zRFk7V=}@`gL|ywI3RG#t=#aQ8k8m$xUPA{~63 z$z8;d9rhm-M7SLRfavo+gUAsagV%FyYU^&PA0@^u8Pq! zY@E&kmD7gfCGCU{`#pF&1Qgz)oEcGiIL3AyC(M2?v!~{{Fk~GchvMa?!Dl~jgmc7N zmVrZP8PNpVS3tx?-8uvlKR8kJt^m=h9xm09p*Q~rCqUT0k*E1TMeTH;*<*Y% zPpd!aC&GGTOvCSC&NSL%&6J@Ly$$@jPeP}#hg#%tA9Q$m~&D>bEDh7)7b$vs0Q))!m-VIbsKo$wHB*>;f)R3ZT)5bZIv67=0ZE>8?Lh%OfcP5SzOnY8KZ-?02TlG9XvpDwI?c3(nrk*7oAsp( zVha5VG7g^<(W%A^`iqW5a$*M9R^aC>CL7{O$0y@tBoYPp38bw$OwRMUyY&S@0pD!> zb+_K(ksX{hp@?lMfxd@qT(2daFr*f0>J3diU+2oNyP3%^=Y27h+ZTS6Sxno3e*s55Xfuw>ggkH5_$egMnqryGuo{^OOv)U@A=zk*c>}i3$EjQaqx=nVrvbjk+uB2m zWm_Z{oW7}(U#ihu#;Z81xj%)tVwO(GSm3+1T9yroq!Sx9XEtjbm1^Ylx%gT^=U!MJ zqdE^hQX1slOP65SiXRob+w(WSV|4C!_3{f;Tx!7fe{JddUXlzLmKU|s??_2&4|(*v znn{9}7`)x8mI8nNY0MS>c#6_J%A9ym1{k@|8Z4yLHOT`RH_{rif>cRWy3G1kp9RID zIOdtVIn2bF>LG-<2)WR|Hc97KT;85Y$9NJhileyT3ok@k(Xv z;J}`#CC}`$8L$jB8cQBjpa%xVJLN(`Q z;}a-`eR_(Xkk06L#A{X>C#U9tXS&Qt*_W_imMEZ4&wGY#cEdnKU*paPKoSleI^49P76-?|lQiN?Udd zNr_#YDA>tYDRYInXmI}1jJ@kT=q*I;h1d)HF=q77i0pavNKGcMq_7RqL1g7JGw`-D zBAV;wZ5_#rvNLUx<{?hQio$gTKU2EEF|9^oQ}KkaLa50{U#yG@LWZM1|CF821t(mO zMVL_e4NKFqUELl$nE4Xn#0J}>{@VbX^?=Jh66bgm@Bo+W!lDaWX(sOD3K>`*G4__2 z1lq44i#lCu+16tzUE`QT`DWTIr$=RylP*m6KzG%}D?*mZouzDxo5qaEWY%aWKH zAY%AUA=?kKJxh_Qq0gx~FO}ggt_&sh*tMBXbU&WI{w!2{PI8kE5vH>pf^56HP$|qG zlvBch^&#bLTh-{-ut-C*Or*GSB^hKQzEe9LSJZCre&u)d&e>h)UUL2k{dQ8G<6>O8 ztym5f2uT7d9lfis^S+-y0fRe(;k>{NX#0JNT<`|A99@S__9mL}R2ApV&nMX!mDy{! zEy&)KBE;wB=9Y4!q#7YYTG71|LMXO2Ez~F0i-y2ti4l>f2~)mPrhyd2rBNt*NtbaC z^A<6UL9QzaSh9rekH+*XFcY?(aK^G}wiqVZ3O3yyO6b*RIVEAdCm@*&YxYIc)}NHEba#-YYl3?VJ8AIp)T?OB+hq!o7y9=r^9?>Wb0N z{)YX1xEy6MhZ6JR%1lWH#bQnOtIE!{3D|FB3A$S0r=UxW=AWk{miy~fqXc_oPn4Fh z+L}WZpA}x$SpbRxRUzZC0yZE`Qw2g*y|ejq40x_9OH$v6G@>Q7>UF?@^|;5Gbj81L zPU8#0;)b4?NU;N3&Mj@^4ACDbllv;#^C^fsUVluVc<+5lchyr5gKH3HSd`F5TgI}^ z#UmtqS6m#m_YjtB=safPd3csrIW7fd_VnTJuXOI#3lHidQ&TpMTdjYD#+_fp_o*iR zIp@sq$~%dg0!z6Jv= z_hf^5D#QJ2GtZBFDpRe=&~UcsNtn&SlNa4K z4PN4CF*AwVpm}#V!P>dzBLoS?K@~jJBnRT{C2GM3z3X=%uXpJ$ey613NFvx)H#Pos z6koRkkBS2RMNAE(h9sJ(CWMuUGd#gFSzg=dZ(+j*Q`NVkbsix^c7Fra$(w2s!g z5F2S|FKB$O7)pBz6F=!KuZWibe!g92+iHyRlIud`GqXXv;WF~s?bbV6KXsp^zGxU0 z7W&5--wTCiaVte_T(~Ty3Wx}dD@%V$q4kQcS{K2Rb(~Q>S6)*{i8|Cce8=+I_^crc zex{bsRI(fNv(f}lC2{VpNZ0BWgtgbt(q-;(vd?(_B&}pj&6p^3sJ30*GCfZKY?lj!f+C0kD zV)6m)s2(i>6408pZv3$5?1RQR^@eh^Qf~T~hEImM0ew~5uVNnjUD4L;g5yY9v`rk9 z`Cd~(=Y{L)S~)D|w|1A;+KOYB*nzSkM#RiJ*9ogT9!`ckv`_5gPDtO!KEt>Bi#N7u z!GE{7M%3bFr3pn91__R&&OXMKTPNxoJ+2}CH0`{)_(>$%TH&~D{}n4Jk<5lbqKe3b zyd}^bpiNIS>iSlM@#bR=LT5J=?-+R~{xAZzR5U!I)@!`4VKm0{y#(x{>~3rL0jZCm z8&Wn!GB_nu=N@aGIl)dvVphq+bX0g08JaYpy*6EP|0^zXT(5z*Q-IiVdZd`y^-u_s zx>YOR0sXHcYR;rLq(ZNjHjRGsE6aCrsS=OVQ>!SLK9U$mCEr{VA^na=a=lhZr(@EE zC#+Q*P{&A94{EAyq{QfA@8(ID8ky&8KjFkV2CJft=m^(tOv|v9F08l!Z)o_+XSWtBEUwo zs!@#Y-6AwR-C5ZxNe0Gp6h>Q(`nWsDb8#57BIlk4Ly8@Ds9e$s}!8mP; z^B|EE^8J>ZiItif`BhZ%x7e8-;9cy^oX(MfmB8X2T zWQ}RS#AooNJrf+wo*jY;ftKYRdTs+a!`VDE8nBY|(sQI#yxLVgTCw!bvsZ_B9Nbg%>^J1zX7NN6*0$u%hN@Z{f|ZZ_wkRGbRPbGGlKZ z%ihF%IpL)!az-oTV?4iw3Fl$ITTzRZsO%_icW$rE+t7fi#^uAUm^D74G2iLMBqzu- z@u;|A??BFSlk7j2KR~)4F}c+YO|@F-ppFK4HXVp4gV@m^jER#)3H1TsS#EQ-*ZeVg zSZxlzjs$I_7%Y*I{Zv8SPVA{{W|*^L8y>t;gi#L8SygSH5zYj1#x*2JG80%Gt(~Q^ z+%X*mQadvg+FEb}rk2%yXD{*If74M*@@x;{uSPf@f=~5zqtryH)K)njm$-j@7QT_g zAbaDl=uR0BWe>Sl#Ib&%v9H0T06(SHTE39|A@_Erw-|37(ngPiHWjv+`P8JoXrP^g z$BX^b;;VVbaN%z7&W^Xv_}O~r=U(lk28yH+`v9{8BU{%Hca-g;J<9E03q#)tT%zyE z7b_Ksb$DvIs23Q2h2*{A(V82fyN{2>!BoV=PnMMKiG!y(@<&GSqjm1}hY@u1#nnb~ z%F=ae(ICOQz)>Zn-Sj&wXf!QSTp@{Vod?2W5MUpscXtcFx8hRnTS<@3Y%$jX6ZPKf}LS{hl_~tW`P+Gq8;7AJ)IP^8U4tpu%BxhD0JOn9;gP zD};q7RXwb8n35q}xkm7IZ^)5w;JPrnV7^$o_j; z;pGicjzxS$D^AZo@ss+>`?Y2SyPlzA1MJ=6B!z&{1F|?c&MkJIE=)c$N8O~wPE{u< zPRjfFx2MQiUdYrz9GD9;jrna~E%NQ&rHA`F35tQp0ZDTPcl&}MZ8-}{4NK5YQ>Vi; zQ|Wl8I7}do!`ge0%`L!iJn*1j ziu#VfB~vb>zD2^vUWjT#`C!q=giIQbZyxu)o;2(Hqc* zNt9*4e|Jku$0{7QdA97%DETVPO!iCY5Hpmwf#q9Eu!}D*=NP?rV1!yped}k=;lQxQ>%Ykn8&bsa>LCP!BdSzhsmo*55)x9lS>l>k&w9)V;LZN66Uz%fp^UDEYr~RF}-W;R9`unyg zcK%icWF=l8yZK0N3ieK0vQI%J5!df=Q!}BG4Xnc6(2?>pOnprP6m{=+MfW0WE82j} zyQo7W<=}PPYX$$Q6y2LMb>p&twPyL43fmIM*SqDE=`KqQ`&M)lJcP=WDQD6NqF_L) z$4tJs`~1a543*p-Y@_MLq&Pw&_`_MiRpo_#2|2c0QnP?F)eZP4WuiD0 z`&wx(n=@qYqhqQdZSefv3b9tnN@>SE7bw)A>JxX>@|C*f%4AOb8nrm?RlN+hf`mQFqZM&cqJATp z^F|mgJRg*NqlK%L5{#;G`YLhiR$bYNaB799-&vt4a2TuyMV>cR?cBFdsK2kM&Ni-f zp*)R`117in#v!6LR9^go))*ILqSSYM>X1=?RxQvM>uf+kOlx4<0P*d6U+kDqbvEAV z?-;k@sEBZU0{isU;McBhE_kZarMg$ih}B{*9oCXFIS$O^)N0&jar5QlE#~(V9~SRD zjBhl*`{{GcJNJvyDZ;U`gx5)1CP!K)De#IQEeqi+OaiH zztgx2+WOFHV6bs+)WV?~(LmT)`>T*hzzlc@9MIvoF!9R6w~~lG@{=4=C^eczh1=(v z&GKqA%F~+#v+s4IGh<6C3UqP3HMy>ytR&i6DJ~V)#XKANmGC$u^S!i~ny{;Kis1d| z4?Fm+5O)!XI_^$-r^JNCt-EZ?0Md<71ZQS%}A3mmsVAd8M934{}h}zh==&o>&(dot)CA zcxD^OU$1q-jmV&V-da&S@--2E2c5b3P+wg=%!U=X=~saL9(FQN-B;mD$J?XZa2)Xy z^a6TQCMMCe9E>VehgD&du**NET$v;9Hnhv9v>5ZZ;SG7b0D6G*Pn^soA^VP#v>9n^ z{~p04(^d-kj=nLX%%{`+Ox`@yc^N~*){LBXPVwUu`c|_M zLgH=NRmhjzXJ1k8uHZaXbmCJr<_Fj5ha0Hi+|c-;jX9igCO!{dnqG8%dEMr&`+Y9T4`YImxh^ zUigeuP<=lZP9)#Q)_zGz`Wy&bZIvP3qyPT&HDNZ48JAi*yoYgJSgdpOH8MSe6=W^I z&;N3uZ6-%0#N&~>B$|ihm}w=+>wBjL!{n=hLl= zdjE5FV#~brLMt<PU zaLGw&B^U4c2KQGO2I=STVB`|;e3;m6`yls`WY<);A`Lzfu&`gnXCi#*BA*ZtCs#VsfN49W=W znkMp>=AxENt&&CRg1zfbHv0E-v0enT6}BZP_=Gyj_FeO7(mSw+>6Y4q(ee43?5B%k zb}w=P`Bt=_&QOJwcDw%X&G0ve)l)ZspV2B+Dh@&T?B^$7TKXDjgy+jH7&I0EWXhfU zJ!qO~TL#Wuem)R(I8Fk3sXPbs!mxIK9x%xxG_oRl*@LLnFJLH< zKgnLw!jzX6Lh-Q-{`ya@28KF&Ou>nfObq{qq~3UpQ@!~rJPQUX-5A4KFZAgBxrevJ z{-`9Bb)XF^JQK{dUav%j=kC_`8;ck7fDD-+hHisgD|DH5NRcpx(;Qh$FrAILO%meg zJi49AXGBh!dt5RNhID~==*Yw0b&bNaM#xO1XX5ti1xE5q?=e10TB0w>Q~MH6nXj)N zHwz?qL#xh8Sy{e4miOUsS{|wEnJ;1$+bD-hwyP4XD~ZO)_bACRF!B!O{lUY2t9iWU zd5VT|#vaGlq|l5x0KeJkFa6ZDAtz}^f@Z;ot_zGbD}jA>>hN@g95GQGjyr3#TW`vY z>tfOGI+)mK)bRGe4u!WNG;BiBao|tDbzh!&lRot;wz82$1H9nKU7D<(*cib%5@a6B z>fXB+2{?iGNF_Hc*+C>y#DLt>rXhX7_YTmTZkse=4un<(pPu$_$vZ))N5RCNRdm~V z!!~4w!3!(cN*!AcMHpq_P9Gn(0WoFJN(|TTYZ5HGiwZ>~DW^1~0kpx9Pf&%jI%_c{ zVeVfG3PCh#2&5Aco^uMKY?<(WP{}?wk5Pt*!j5y(*EZbgYP{AelVJrk`(nduVZ#G$F_Noi*E98jPW);Uhj;p zc^{YF6q?l$9k*PIV(t?~J+EUw2}w(sVhtf)^a&&Qc6WfE$34nzXie9Jkz?fgxa!W9 znDj}#Dt8G1UX{nbq}(dO>!{~a*(s)JwMj4P?cK=M2J-W2<*2%m9BBE47TP>tKMzS! z8qYAFcf)fZ^vTQ4|=!pnBV8iW||J){bOKvmh>w22bt%W4XlL?Lir7T4HMc}E?k zZ7sFmjIy^{O@QFPLL!VY41166rIlj}O8maZ=+lDIrDHYkQ=FE1$$TY=vg&E51`>}5 zmCo;s^J5HgOkR0m$0!W=8OG1xTVQfpO6nli6nU0Kzj6DrAdu2xcL@OGV_kUU^gM4d z4e18$aIsmY097qgfLQaFFDf&R2Vtkf@)8~k$CNv6CWu}(#IlasaSb7lhdkLVupv)m~g)n z(bDE#KVHV9)m`ArfoGd24jCw<0?$g--rsEvv)_h>Qt8yv8-2%qJw;s1OgqHTjTbD!YA`=pDUATZJ3HQB zz3|sj%&(=kli!iwUCt~Y?s_nF(2`R^Gfneggv;DRHNf1nuTP7ON%Mirg`zyT3i8|d z2(83PI~)u$Uv_{z-NXhU23W7$8j*u~6X61MjNB*If+ZPDpZ5KJJT+9vw2glY8x6Hc zpVM3PaZPlMp>HxFscbtqP!b#{1(cRTsC|;C_4^u_4-ACj8pfOSELz%zv^dB;ev})M z7mx1+Ye!K`*Se`-WzrG9gu3W4O-6ncxgj2~m}p`^aXK0pGKV`wj|J&rFY-%>tTfq? z+=?0E=93=qX2q-#6cRmahZ4f`{*hsv+5<#MsIte%Xg$tl)`4S4I@6aLG$+K9IM zHQ z)OV-R*^xN)Lb+dvh;Stbndb^72Z1ipiZYawq11{4pZu9L`XeUz4r+E?(R6`HJC5FP=89%tTmh8Fs%hw<&*+st7 z3&htSIZoLQ2I>ZuU|FX(VT>Muki=eJk9R?);Q2wBoUnuzX|!panG06nWFQxyy+BDK zQi?H>#ot8h)w>3w#4yUKz>k0F_|Ex0G*zyAfrF<5YG$W<%7f>^4Oh~E!F{YXM?j+An%8Sg7gr#a+nT*b*kOZ^U)tevOw)$K;Rp`8+`jqH zm@U*-cX@x}N7#G6Js83TUs;t&|0Eu8@@qN9DC+Ye4>5Wg?n)rCB?YzBo?11p+w}k_ z2TK{?>G2KN+7)i(a!tDc^TR}f>N^`0A?vB#8Omsm4ei5vJN3CsKqjCs;wL@-q%n(H zGGvT@pW_=Tq&xo;KO3An&XmSTi#$>&&%~{MP^57U17;94`<52 z+d`N>+e)*X(tB=evZNIr9H$(qunM0TFah?SpJo&`L^9kJH;@}Fx+xotNLm);7y^yU za3r*X9dZ)F1n&R{-FdUvJL~LzqJAwk{h8my-F`8AdFf}Ba6fp$$13BMWM(*_H9*6j zO94|p%FXHEP(?+K-0lz_y-&o#y{PN|#o2yfM579ZSuXPU{U$m8p!Z98CKr4r6;GoG zl1KTueHrX{c->u{c;`!JKlNi-=HTKH;-MGElK=YCIedS6VTg9lCbGZalTLc;#N>_2 z2n`%zrxd~fu~9Eozl8gGMWmZsSnbQFe!+gFk|A>S`+0GQud#FudQb6E(-adbEwhvd zloVmbw~~v|T-3C~1%RBdG+4%%U_wMzgk+V88Oj!SXF-oJQ};vw7MWqeek?NKyS}cV zs2EQt$YTqrAa`o>f&3pS-wj30gp@5IM!wtYQCI|zo>ty+1r}6i6n=luljT8J zsJHW%_U`DzQ>x*$(l1!ZJMQCedLB^2RJ7{MBi+>vtnj zx>4E78n-&^UQA>F!3=gC;goSrk~7e5HgPm>xAjTUe}M1rZz1-koQ04O@~Qsh6`YU; z9}fr}0R_T4;6tr*-H-m{c9y#Q4BlV2(0sNmz~U9omRe>iM|wK;gQX}$8}!`TVct7G z$p<%=L?XoBi&nu6JksEh&NXR-#30Q4im=XTslhE1Js&%_T3aKfj@~CjY{zYu@(M`+ z_21z*nuRsQq#*E{h&>VXINewb2B+NBR@3@h+FngH;Ij`u(?rbZ`&I?=Tv;o|a>4~+ z*eT?aanS0jC06Z^#t)X-CJH6l$P&{N68*gnZ2*K{;_h(hntR*(tOueEt*l@){>$ug zN}?Jtfv*0FO^r6PNC-vU^C3ZJ8R35n0A^nNk)$@Z1a-P-z{*0Yv9!iGVpj6%k^?_Wp$Af%4D76JHl0n6Qc zZY`gZ$b>26WDY?~o>KI2AXqSIO!#8`GY-3@9rH0aTlz>8xb$4w?g+y=(wsxkG6MbI ziB7^WD%ZqyG;`>m+)rfJ#e=Jz8xS6~DS;@4gsjN25jB%|h8UFOXZDRH%25@wg(0S> zxYZ{5_9OmNh*L=1nGtLfB<@q8z6*Pi5)W<@XCctk zSa4MIQRVlz$b&1lZ|iODC^{EMzX(_$n3Y$D|_;=6;ChQs;sagoz*N?SrR>g z>icp(k*~nkRdT6jB%qpqh0s;ld-GO|LhKR=4l)JY^%dP{cWmHQ?C)&(dY#xjSH`9I z>To&5usa7Q=_rU1-M|HMA>*C*(m3EJclitK1;eqqA`FS&jC66?>yM>8Q78-Pr>z*Y zH?l#&6Sxwq9joHjQp;6=RW(o}7Gx2o5!yV%J@bUkKEEP_r0_13@~F`{P5_pXP_VH` z;K%^npa;D+$u(d1Y0se0OTF)OyH(Eb@yeFDuW&IwH`_rPY0!enkfDv0ZSN9}q$ zn)OUk&HIzr5<7e!5m+U^IcUf^>Sb|Zp@rSC?Q#LvF3Hba&*fvHPq zn*!q00)++(`{z2hsJ)$-*58%C9-sWV*yC7a77c4Dl17CTku-!?kHqaU1;Q@Y!rK|k zk%-Bj`(cg1q=}*yk`Ob2G?#8%8k>3Qx$qsc3~E=?l!1TRfSl4tCEt zs#`)@qdg+rj5w<|KF8wdp^OUnGVD};a?o*{)SDbBa;m#2RUei=5xEPvj0^ zSz;ua@@xq*v>pdxYm&EQljd4E?FN)0be~y}a_AFT*uhN#X3}%6IW8%K=SFd=$CuM_ zU-FY{=Z=v5>JW`dWXJtpSFq3+)FIg{yY1kX;biCkAZlLexnVK)d~k4>yNQdfA#{#af(_b0mC7??CS1zZ`w5P&oM-hRCc`bdvXObeTQ{e1DLUxK9OWv(*l}*-h zR1)s>ebD94W>#in0NaIsoDKLY*^IOdNgyp>MRIGg;M1MM?o&~Nh{1gTPFcCjB2(e3 z@A!p^uES=V2T&JCt0wJ(?MZGRfd_g6I|1{!c)9I0#E9s2`H*nEvFpUd=vA7bj%ccR ziuA91fP1gtnj|g!f!Q^@x<+A-pwY^{?1?pVX-@qmfn}scXqNxU?{jje0)s-;+8?`f z9!G08EWqei8PMRz3;Ht|Az@7$2@pXjP)4sgN%!OZi;sCcR%ffulb?m6*Cn9SQ!C zO&cp0EIpXnQ@4y;J$}og6s{i!g-^MZH0Y8y(4#-Qd40@tF-roIDXsloB~Ty?Q|XSz zV?~UVyrUMLmj!1w3pO|2(R6eXHSR~$%P?^QEPX*GF%AQRh}A5SnSmv~D# z5U8^sBL>V{E?ZN#2I50U>w4gO_-x;M2nJ|OWIIW#o0<1`EO4MY>dR-WnobzNzg=5; z&ya=*8sOeo%0O<*PmSsw>iZ9w?<_0vT*rb{tB#lDfbutXAgu^=vxoptzAq)JG%vC8Hei!DX=SsQot&NSR9vbZ@5&DQa9)cXW0(r~159=+x_}0iypal>J>hfk{GpoCf60LY>uMHQjPBsvoL%p<0nCqM zM^;Rz7|+pG9CxGu5o0>OR&_C8gOQ>)1t3d5SgtnhP2+U3&`joe)c*_@C7c67**PNN(mwONW?jFq?Ix!+&_;O8I=rdq*Chu9=ZZdXgyz=a(`qjlu@c{Pt!mWQIjD45wf9b-%T$-OysKKaCV{=0;CgBNkHU@ zkh5rO5h#jL6AvOjY7D||c58uLu8Oi*1~s?A7IU)i(c;AyUI3hM3a_a7%u?#1pX?vs ze)xof&wVmH;_SVevq){z9{_-TV#t?pyR|DRX8FI#?B?$|=XNv&D#s)O$}vAM&MRK+ z)_sO~f9dB;Byy+sl*iO^EL)Ma-uhuU{Cx|zo>C0%_uEh~5M|;0yV5JTQGpFr)xP0n ze2(6b-{qN%fcn{@W%x~9M?ilN@h^QO3aBR#m;8ndHMm5)nwSm~Ecx7bg9Rklt*%L0 zDkasZ6VY16Q34fC5K*T){G$LCL6hDP-K7aV$bxUgO~8NK?|TTEsji){BI*%41T7)X zCq9ai_63utc(C4U8v3h6=!G(dnG1V(s0s~`;HRg&E9As{F%^oqsA8A*(L&JZ*m&`v z6wsmuc#kWRshYCto|*KA(nsML$7T(mF|<4B9BqJ4TlziM#r!29xxCr5c6N(8#6C6aOjyc}hbV@C~z+e^SJI(GRsVv0z|xd3Uf zDE7Y)**FSHtYLTVC%Vu;#%FGYM~DZ*;YJqdT59L+&Nj6suU?Sd=8_Hzg{o_&p^^?h)JB<)#uRB2jFmIKIH*Sxdx zNmklQg#|jyBy`nosnCzbQ3|IypZ(QK-7k)Bf`sGIqR6=M1KH9+gEP&yQuDkiQe<;k zZHhGFV6>O&qi@kRKz56So|A>VPax{GOA&yy=sKk^ZI!_KTk@gPin3~g4g|sOtwPXSwB|==-fIYXv1*-| z;IN0bn2;RGOJ6pW*dSDkPY%H8H8;7(4+&EW;dlQPEl2^C(Q+0+fG3uZ$t^!dGjODl zGy6GKsMBs8QH1vv@c}`Fr69W)6~HFD=pg7rV2$rO2=GyY4hB$g{Y{@1&4$7@^g>)N zZIjQ-M2(@>Czv8P71=zWJY+$%-!m+wUnMaITh0IYrp?EMjZp4grJw zp|QA|vDZlZp^z34&$4o_)U3`jWRccDSv=-aOj|`Ww%lV9K?IqzH;IG0^Pu=oEQ=>e zW*pvSAu}wusbicoY%v{#C9#cNgw{QAn(?zC31Pz|@&@T6>=La08izbLHwnOsHj750 zE5%Qpd!#oF8d8K>sz1s#xB6B?eh1f<^x@op$JsqCF;k-X@(hyVSL%hWf;5xo6XQXe z@ZypJw-A>2>^_F;_F~7dSeZtq)O&{v6)l1Y@xPB0_r1c{{@B0UCjfZ_ikZ?^9h*~D&gjXn$WqXFJ@V3phsRQdLBbqG zL`X%Ln?DceWLv7SwfRdmlX@ZQEjZLl_ycDyywK()>jIn}*Y=f(!AKcdKV%8&#DL_o zTdWs0CR9jUzzK!{G``$eNTa(*9YEvpWkA(u-b=0Iv6kMRVa5G^_ZRm{F;&z-{xEeW z4tZ%;-Y4Hpvb>5JyDs?TZscuFk{jsCX1@Z0R?Utg7dBWHIv4nR<0oW=PGXQu47pw^ zs5KYDf)T96YsIN6wMr5uEI0w7!HtI({iorCt|F^7DKW8lI44fKTXRZ?Jk)D&m;RvKR zf1gr|d_Tt{K{cNjJYv8Sf!)dp5L_yyc#WEO{cAKFcTscUps@7`qv|gF8G7p|oYim2 z28tIokwkKo1pf;~^PlkhPy^J{5aTtYZz4Ft(a}lbHqY68-Nz&gw%eUQyNITY|H+N` z&2GSOU+r^2y|}{l3{H#I0MLDkpJ&I1Tat(Nza1xG5?{y!fFhd&UM zzLCcC(vmP5^Wu*>Oa)7wl?%(gv&>E0A2v6>Ce$3yn%EjZ6-6W<4xdLJk^O1wt1)eg zV)-yEB&iP|&ZzC>fGHUfssC9^1bgsSsnd%(@39R(W5{vn4(K!AFV@7F=XNl+6FmxF z%~IySoAU{UHP>BBA0lYa@T|P{KQxE>KGJ%d0^ky{Nf6~9wh@e&H-c?D+_oP6DEKhG z({4#{9!s?r(+h|`;vJ6H^~UqsV_b?+HtY$D|4_i{Hj*PoU*GyGY9^Ugx z)?400m8k>>_)mX8z-D}C>3HF&kp>2E4H~%MOU{`u`q&6}eIiUJ<49M!ZrODnAvsGQ zOh96qC=q}_(|;c_h$6#(67%K-QAsE`h#N=WeuV>@ri&57I9tVPPiK}sg8rJI5tGE9 zN0`pPpf@vJGilRLvN@fuao;L8=r+QF;4@WfRpio4dqY$e+~TclRpM62=Il`Qb`6Ew z9Q>vKB+D>Ifiod(y#qf4aucq=+*`(o!iC_u zEYrWUn9HOy0&p*Sk$5>UaPGM-rQxqx(Sd8vMXM#p9dYrnH z+Y>Bxk)FI13jfXq0u2wC>l3p^1@!JD{}mP9_M$ZBinUzWim(y={SmTM+FE!B3}yl= zbhYFT*j$Y=tZGgb?ugHrlsFFnR&pRScm%PyAk`@|dsWqsz;csAoQdm5viFAHb5e)r#0vSY* zq`^Mw=LBhiF;kM>xdqJv!EL&FD^2xR?pfw&QbO?(reLn;|34lPxI`B}8b1^y`p{zP z(Ys3!iy}Y!bG*E%3DgdV9-pIum%$d9#s(7gbT4xwjw=1HH71aDLv< zasHR5ExdS&`wP9_0Qvq&F84eqo+`BTCAMY_!Kr0YJtes&PB@UM zmH(p&;Qr@;;5V{NO4rddtC>V51lMWC$uD8C4II=`xll=VNpnTVZPM;I2{vX?KQj6> z0o&L=CAJx%T;1l+ttvO1d)!7BLe>28U^DL2J_ z`gAP%NC?Y+%*JF5_QRN`Jq>lHkMGOJ{0aH}x0y*s40YC0B7P}4&Ri@TUmTP=0{9(| zqdR&W6fGi2lNGuKI}?536ea2&R+p%nU`45P<&ki2-7p2MTc$f{~N?rT8{5L zRXbJi7k8#zQ)L1u#i5nOhR2ryyEU0v`|gz`&aHM7^T}0^W~wRTlBxtHIsJ zX~uk2Mm_a7zOoxuRkR*ryO|zgsAY>399*qRB#dCM`Cf+ar9&`eAb+gx*k5H*NXlr= z@#euOqr!>34@O}Le4qJKv}vZMtqan^p~;Xsx?a9C1#w@!#7db7x9Tvi>XkrH)es^c zHKq!g>`8GAQAn9%-dp=F?Sap{lG&p?#g9`_Zp{LEHpHb#tp8uf$A&ky# zV%*AVyRRx;%2o}vx&Kd44H2ZNMAUsY3EX}i#C;Id+ULg08_so~V(=MB z10KC9Y*@30mCP~sgG6+Cf;XA<{)SEVqq#AwvQVYu5b@XlN>Q1$IzKo$$g`0q<`>Js z(8{~9pWSpY{RYR2xju$17u|W0F(tu~{%@92Z~>;C0Y~lETZed2ceqeE^Ce9`z>{2G z#}b;gGZ-39Kl=YTqnftXm6Y2`UTM4bg4d^*u7NMcxtId6*$c$np_4`Jfv2#}yf<6Ll@jVWzC)ej1Y%2PCoc!W1 zF3v!XZY&4s!vvC;w>KGc?i4%Cuu!4)oCK4&ENNn&^)v-TS_#1=eEkMKfOBbdtdyYU zXqy8{#ng#%{w}E)6H^(QrqiM$iRd_k5scF!+8yjJ<3`uv;Q#vG-e0tDSSErMJ5Qt= zb^jZe>u}yi8~zoc{Lkxt(Isv4&mb~{6|x{_@jRr64^t*_2)Ltzi3l%HR*<`LL3Sv4 zF=^@jVvB%niRW{cgvj;gj)hX&hkt4%^OfTF0yC6wlpIj$mSs$Z4New72cv{XdbvA5 zt_Oj&86CTGqpzR$*XmmOKzRV)MgAhg*@<={X3-YG^a=n97U$kzEnhz4@C z0K9VWn*#CY;YwB%0wzs)Gs?8}RL;6xI;G44C7@DI7bSq%h}zEa-dXQ^6U*OL^T!qp z6!p75{%6vVoUJ&VoV(Rsz#NIH*d{sIMO+axaaJQXV}2xK7R1va z%dU~pC&Lk-uD!87=R9hz^jQE6uEE|XpR&4^`&e8R(cjrWLj@K_35etzyZsZbn2OJh z(Pn>=zK}Vj>tCkUG3x%;TV3-TYsBC1Qm5$JbH>yiu!)IPd)Pss$IZ*c&zO_4mUYeP zE>eDh4RySMl2{*RmuQD6rYavFhuLg@5U)xhZ#@}I03p@EZvY)AfWIVb5jtEQUQ8ep z0}AHlYe12{0SF_CL{6?`>pH$5P97v}yqxKH>E>QsWte{dH_Inl<+$R>EzLsOZ6hpV3#5Jbn@=8;#l{rf=xH{!+W}M zj-;asfRrLPywvjk*3S3mkL4xn2ZA3+SW`V1x=Aq{6_`R%*IwU7uvu+7q{O4B1iN_4 zC~z)mdQ6+(ZIBY5a=`{;oYIKd_v+anUQsGN4{A))gKLBl;>;8Cs5XoKwr~Z6&?K(X zl}BM}-C)pOT(AWi1i$q_1dfbESJMULO}eW#A-~~T7L9BZdE-c0Q~)vploNQ%>y$lO z5a!1X77$AG&|t~jBX+JovDS7OVW!a_`b%ibYUfLy4Aap#(!VVn|2p3^%Y`jJHKh zAw>ncwe^|Q`{bG+Ftq`Xbq21X$^e+H$^FN*qIWnDzV*}ddLtRoSn*@I(}?8!okIZR zJ`e73i4p;YN2FCTR4t+hNk8=H?MC16vRRkPB7deegJKCv_k9G8TJ>`aXU1L(Qj%BV zR~^8>K(XUJl7`zdOmxUA?o(2acE=48sH3ft@j6LxZf8wyi`YA(XOeH%^ER!q=W0x` z=HFz2y6exVX3)NJ~*# zN`CiwYHfxI>ftN=k(1+lKWIm5n!JhZ{>=ss%22H~-35cd380#01dgRax60zDxTkQ3 z?Zi|4aT1rbHW*63|4RTKQ1qx``gQUn)ZLo1cUr3O{Rd4dXvCw)iHTKpM<@iDrufLb zgobg`iS{m5NsBWlwqMurP=o(pEPd*75P8rsKJ}z_!v$e`OKFY>$k(xA0kzCHGo1%5 z*n&T*OwUYk#4>Yu)Yg8a!DQv^3ss(PVSY~5vGF%f=8Pj6(U*CtT&N;%s}6c@k~`FE z_3C^$?RUt^VD}%_hIb9&_$|DHJ6@^X9l1o5PQ>O=w6+j+kJ#|NW&meP$bRGR54qnw z!<@36UM3oRj?mXh zP`Br82R&XUb2`rY1Rh3aOi~q5CNEP3{%oGF(Ms`Vw4stoB`))`Tovn*n z8*mhSGwytY#gs6;Q-YPtp`H&Wx79rz<$A$ z9MuhJ{o8&==$jg)Eb`%Up0)WN5hmc#6s*OtNHrW?-3G~T)VCaX?l>{@m{`x1t);TV ziS7jsF}Lb=S+Z`QbLRvP$Nh@DQuL{C#Q>L^)qW|h*6SYQpTW^tgdTfjc67_NzCT+T?0?K z1dxXw1*Nz!rYWdD8VyX~vqfILtl zi!+w-lk|;6d{Bu|C3eAzZrAlxLP<0(Lm~<%h@+-=m`Mk&pN+W&I)E+FkTA@E(PSvc zv<_sMabn0zmJ2`bV|Gn!tDNa*<;5ML!NAS)d+Z3Qa$VJS+`zi5m)ujbpikedp(}`b zmkb?v|2$VH7Ecb*l^5#qq&|BBQ5eu{lbmVp4e=3 zY7Qc5sG>1D<{5f3)%r`_1n(bGRN6kF16A-%b#Bn0aRv)BS}v&nMau)ggAX-E76Ffd z)=rJEl`>Qf!PUxyE5|g#LM9T7%T~Cy)Gucznc}aQow}Wn-FC1E#YwtoKU>xY2{8YJ3+kSp77fn9!pmX_4o1BCpbNoc6RM5ieEbb)OH3}VI`!$a${alwWIlayJGcz+Iiwl!?K3pa(ZDLXNeZg--y9|O#~jGk zh8*gk^LGyqigDyTN~tx{VN?HkTeO5jmQNZ96Vd@WVbHw!H*)^~slZptKrwS7Zi)D- zHHG{0XfZ8L@Gu~Z)Qgp>ORFC-is@q3JNvyp@?R=%d$rH~)fxesw#CR$tK^2*zYtjUP# z&XaMAD*!$nEBzl9m zbk**LPCNX!pTpT7wzvc?821-3N&sP^%suXY4&ij`EoMqe%)`6G{Y9zMQZVxMS+Of& zOGBO2jnvi@Xjw=RdK=#fn>6}H!bxcWkDJo%>_TtRo|P!n-G8Rh3HGk1^@xMioQl~@ zJ#C>oF6xO6aN7U*ajQ`*ce7mowsif95JYQ$@_`sx%@!VazP|v$Ts*chs36$Iv`<=Y zt;~Efp*x@@y>ZTdhdO6yG&HU6BViFkeMDA0%mOSbytq<42>&Xnbfv-IXiw=%tO_)JU+P+M1X zz9Q7AU6lY9XZbF78Ft8%#2cw?ybQHcy| zfSlV-(yJR>MC*oO{E$T$Rl+`&+6#qI48fkMoCnidXF5rbDh##~A9U8nZ5AdKtdO zT{c>c)4s$Nd{Mqb)a=Z&VUS_mOK9z1-QdOlVFEL(?^6>XNBfxm;Z+Cu1+;6sq6l5o zP?uNBufwCS?!|~e31^>?u2D{v$6IAGox0)?5sdrt7QHkP+$oZtS#5`1`ZJDg?TMT% zQT@S(mLP&jw@_gWi!AN|#P>t0K6ud>y8!`vPFK)!n1It1M5$y z=|}KJAd)w@8I@0HYD{2rKMM$7Ek^jb4qwLo#S>NkPe~A*{n4|)9x-7i!3vk~-_mOi z?lA#R6m~>$+981qP*gXYf`>Wq7bZm3`CmpB$sCgccMoMUkeZlXbdA?;0o2>b_~!qI zzx986l>d{qSeQ8exBb5*2kZYF!2cJ&^*?Y<=|6tc(#FNqiGW_r#?Zx7#MIc{#Pt6W zwipQ*+5bD{|9D$W1kB6~%>U_d|3Cazo3V@O%_1F+yG@n4%~q?e`AF+Z!%f^x@lf0X zBNrQ2>rArwo%@~n-Ba$}T-z#!^=xP5?Nx2%S0(2u5wVg=0WwnyJ6P1#R>wT!0<#nF zF|BQ^ZjNfqwaLZ5z|-0Q`2^h57@3vD5wQ2Z?s}6;0djL`Z|+kSV(ffYf$hc7#esocSOH3*mpz)iNTvnf-}-?hK#~AAfwH-z--i1- zv&b#(4B$V-|12tI=zzt+k&(cxz=7)})7P}<-Hn)CxbwmL2}v?Db1EbIFLk!r`g(s_ zv=$ejOdqtniF<$dtpeT?eCUAK#Eit~L`(n|5CC2o8jRmf-IXQ4cX;w8{rbe5in_NxP9NHtfIM^! zdvjuTg8q>S)bp#KytuzsgN$^5(o`}!0OS0Q65Q*(>pX_}>%7+N#OUM_aDni|-=-XZ z(Z1fl-lebQfQp`+*t5NZN3m7`fZ&M4lH?zLmI;}$_cmpX^tKT(i(e_sPklvtWS@}9r^e~rvd;0`}cQFE_9@}vM@ZT^>70v~C$6##!T zbN@%+`ZwJdS}`>~`d%?H2fg&CT>p3S*JktgNBKfem)Mv7n|l5?sj$5=dWzpu{9Tp` zkZ0rsHV*WglpLG5^cTn8*wXy)?O*+_pNQ4(KYRLzp8PL*!5mh|?Ue1$iX~uRQFD6{ z*rL+n!pP`>-{_}IcxD#m+{D-tT&3B)_4}#=FyGk7__Hsk5-pW%)lIk07pmH z2QaS*>T9i`2^b?AH-<0%8TkjiAJD*o!3k({17Jqy7uM+q{(Y|K2Yqt-9TGT)=0^4p zmeE&8Pk{WZ50DKYxMyeYIWKr<|L_;z&#eEfX=vrbesK=eEYA?Sp8WKQt2Z3fB! z;8z__CQo$zd!^Xl*(WUh?UJoskMG4J?KabLgZYwK;|9lym-sq=T}vyPe7(e?AXWr|8bzEG)vPD z3L4@+y{wR5=ImfhedF`g-M8>u7o>#6v8)NH9~JVVn)p+7Z8WEN}m zyfR8^Zk!jA-dwL`$6y|G&4j?R!xn}CQ8p@2gd)3v?K*Z8fTDZ0HX zW~V_MN9g#v99n4nutBLoddYNl`u;KzrEeetX|*uS4G>Y;=~4~7wp*_)k?`O6LPfi3 ztWKJQ9GPg8F&2GC32jVrv^%voI+hK5OVzTX;oqc5=K#6eI_Meazzk@YlK@*seE{K& zVo&Wjr8R%7YRz-OsO7w33g1{LO(t2CmmEVMr?o|}-pe%Ai~AecGd%E@-PtsMfgNu) z0sc2xa9x0iJ=x4q1|##rQMmp4YMMAd(^Kd$T*T@yJd%1NoRBi`VP#$DdY;-oaQ~Qw zytcKaPkgI}3M^OD#~`G2)V^$Q3EbSO=*GhE2Uh5xnzqEhikhrP@9Wb3#6_sOu60Mf zFDPw>U{v*QtLP>MI`IJObn7TOl0Ibu7$g%CB9&LROyG zzEh=fmB8xtfJsqLy+>_;6#BEz8xY%K|BX+P{M}hXii|pIye*;2nnpWaln>D9Px7J@ zU^c>60~|;5U8wwp`VZPiV05|A}x&loTu zTqm>IpG%Hvf`cjAb)gMzQ9*6>A)_We4$e`m3iVruJieVj<0=UWo4FM=Heqn;U*eW( z^BDtF1)8_184xfN_`%^w@Rrd^Cg&ahyE=8g`EN^>LH1u8do|yqlN1ScZ|c1!tyL#s z9}@IkRVOYtCMiGZ2a$k5x2wawgjaHfjN2oBM-Tjs=e1~AS4lUu%YJ*tZS8qx`X>#us(|#hXb-jwU0idk`4u>F0$(B{V8%? z1N(}=Al!{Q^6k<$fd|URewWcl-DyQPYCUqF_@MSD)mx9?)UU8VV*;KyJwS8-2(2h{ zA<+hgEU*Z@;r$85&=UK5ui}Rs4w3GohxZy zRaK)nlvvDztZh;+#GgqP#JDvBd(TuNfvtDj`bXa!l>H3({kLf5%T#K3OJzM0N3}mN zU#Y9z66_&*>bce{jL#J8#bfO?9V`YCJa6{UilS9(EJBJCR3boO5u_<>m=~lx7X3}* zk0HUiJ4T0OP>kVi{Af21J*8D^d19S6*D|xj=RJ9afAQ=`x7dW#UX2J^d_b3qq zAGW2J=`)^Mg<_<1u#smjWkuvoB7^I~o}GMLxFvk81^-_B02DbYc{vKQ4Bk?zaWMKx zMoUUEQS7Z9SnTa*=16ye)i=V-L79q(F5eRaqK6q;dne|+5+Szha-?5#p|VDhH&KqX zRX?(~wtw#rWRrnzp{VEyzy)vr+5|%)wC? zU+mfky0R<0wW~SiEnrcXlSSE3MY9)t*^zEFXT>0%RXw}}Ypf@u zF9s5ISOH%)-;Av{L({cliT(}a|FmL4l~}BVTxZL;LhSfNWH2HL@FhR0mdt+%iow*R z3hV4K?}UK9bA>~sae9rrCxVdOtf(vy4v>pdF}aiQm|7b=YYbjoTx&H-EHZ(~YT6|k zt{-5{^WMH^`uoTuc%lx^`SXZ0v8BwO;H znJ(73&C-x(M8-*>D~mi&=)iIAdHUE-1A9?n!&vo4(J!(aXbfGh7--9h%Qp^>D5tY^I!)BU}=frc#ZGQZgUY*jAc)=(Jj!j{`>r@T7tq^3DH=ex|p=#3Yz;#MRY{vx8TzqVd z&R9?hx=2BOMi2G;k2X`>iYb6&m{>MR$%B70*bjEg_yjgAzxM?O-fR@e=Okc!{ zd*&l(edLMb@s*WluKl8o{>2tSID*Lck%+Uou`$>r>qLiue3SY?0#_y_eOb;UpLS?o z+{vge-p6b%Ke)p>J-!Rq!WKK8_+LshH-GxhN!ZDpY+IZ*V3QY2O>Y1Z2fhbAUiUQ`xF1wNyWN4ZQITjli7V zDov4T>NtMCIE;1eUaX7uCYnKrMHpV;A~|t11{JI?^6ze16#Y&h^DT?jtl!$tNchIJMxiBqUx0BX88DKO{4?2vicUPNi23h5~WB zgAkFC!F6L8aHL6Il0bbWh0k@y6@r+%H`f8!Q{_iQ^JCvBy>UM=K z05?rJY6juLnGC#WFd8^rTFlmQHpP<}zo1Tw23^JpMns%xt9!^u*y9Y`V_g=c%{2i> zQcH-GwiO_GC>#q~{o~K;%5l9^8ilIcA`wqm@>GHRl<+uJAv7vwrG z41X43th%!-q59DE&_%l<5sk*llRF#DCnlQI8k}b#KF;14Ykjqi;UdZLl&b>(5~V>3 zLF&>U8E?4$)(kDTCvIN*%q4e8g!6!uNUn%X-G(EuW{T(=(L4D6ay@uSFV&hGjcfwH zxFAZMTuAv{0wrE2QeUEAEY1emzJqsxad&Q8;u)7vk~f9W>f$GC513vWyH zX3#_2516V8VOjP0eeSAor|unuOHQ0^_DxH#&`huIUs_R~K64493grU#L_sl_n1 zfy8XE{f~`fi>Puy-6mh*7a^oUF^1uAT_s>56duLzTbJ`f2Lrh_vw(4^lk=aHNM$(j zu^8B>_%g=$fEcInoR5oR7SYg)QL1=Vr8kc&B*wXuLhr2)yIOlr3Eo8J@7Qb-EVb@Z zg;mUk4;b6mclgH+e~Pa8 z1a962aY?`>r0)d+jNEDIRBGl%!)-pHRTe9g>En~ zDffOXSR`#C4G=mq3Eirl6YZl3+1b_yFuj#Lr*<>gIhfI;D#>qnKw~L=ilZd8OxAUm z-AxWZg0*HZbbIo05M3$BIWynG#edFCF^c<%m;*Z&t+JPM$KRGWSa_e>ax%Bt@|qTA z_Y&{1SW%H0OmBHgj&HNQ0uRG47{`K+Hh7?bkE$onJse42xoF(3DO zq)CV|UYMl{mX+Qb`h0)G7K%R$)-hbE(iCH*mYFj7&rr#MzD()Vaamhb)_Xc@;Q6K4 z{9CieaDXoZ3Fv%Q>)PT{I_ipoMr5n>g$r*%qR*lGx(^V$-Vx-&c}D6=-#oz>y%A%^ zL-QEKt6J|h=4x~F0O>|E;pL>#|N9Bw5+lZicgJH_e-_^7D+iNybIL|1IdEHV+fvYh zQy2o~7bN^6h)tH{9(@!`spdu!mDcDc9`0QVj+&TR+G7AaW_B!)c^u-i-fkKHSk{Rq z(v{qWX|s<_G&*bes%1CuW%-=z(qye`+^3yuH^+y^yS=Vj@}QHx4wqH(i3Ltx@nzpc zJi^67?ZU8u%hZg_)}ase17*{;3BTThZ0mX95CYx?lao|n2Z=-xVyud3o}lF}K_EW$ zoO<44BYu$Tt``NB0=?2+jl!FoIV zl+()=#!gWM{6@mF_<<{RAcf-HyGqg7SsXju*GS;KM|NjCjQRo$|7Ge^mL5}Xd>tkm z=<V=R00k)@g6_InZH%Gi#;x;u4E;+f9OxsEeNv-h6Xg^J0q1NT}twD`p(W++EqBN ziuq*#g=+I?%T5yV`d2ni&@k+X%WV0 zN9LIu$@z$tV9UqE%zKw5*i@}=?e8Ji0wrnA6nMa<2lu1sc#Fa>lAfzc1?>2*`p{Vn zud`;>%-)cubkf>V8_G5T>><;& z$WTwtv6K+fg}?Rx_A?;771(`+@z!ghp`iqlvPCIxR)$(o?;BP-^hWzmB?qM{YlpRZ zVJPb`zv$d~@1gZVr4rS-oFomDmopc{dJI@;?j3A8Ot%)sr;&3%+@^qJA*xSp>b>0kQmUdZQ=9Gl z!VldIz^*r+T(VW0s`=$!KPO61aGdJt#ZVHJHUv|H*JyPV4P98)tCly#FWd;;3Zd=RYdK&g>*m<2;Qs&UbCMXIwFjyR<+qVg9t2%nFOhVH)0ov zGQfx9E>npj5;jpt7OPgw^qYgAS(%sW%;O3SA6;}uV5Zhn=BI-4(D4cCAL+FGxTpih z{JaleOhdJOrz=C)nTA_S_AEVscc{78?$4#81OZCd4y?%->|$*&C4&< z)Yaxw`TxO|E|<)sW6t9-a9oz$PR-BVKk8pVZG0FKQD)VJ(9w(=VOG0U<~Ml|v5D|J zsVS9F0ZH%Ww(a$~tKB0+T9Dji{#F~bI2E2OyB|j-WR^H$XSW9g<0y#=8arZ!17u)wXGi8`}Q&a)LPG6tViDlR9bo zyI%bWD6L}hT0l!A;*C}q>%PdGP=fwCD3=K0wMeFF-sb9D04eAB8h(#s>V)jQQqP7i zyV*&ogf6f*ax^u?05=c`DcJ2JMJjU3t9~mzZru`S!k?7Wm+SJO!fs2_kDPH0t+oQm zxpj9dSjP%W`{DF!=pljyc=uoHy7F82^C;qcGNnrEvmBfbj7BQt@~iBRCHHJ+GBwjD z0t4*k1q~)9UohCnY{&oCYKI|DySTjOvs|5zneCu^dI%;Grd zc?{|=X;55Lb#cU&D+5o0@|LluUb373K_yu=*nez;TXi>D^f)q9{(jUHT8~OIOQE(^ zsYsylBF|HUq$Kb$Ea#TsWSmu}ka8U9=nTE03!85OJ}=R2z{Xu4DU-E8B#g`njWRRN zxAUPd?m(ep*a1X;$;Fs#c}&7IZGeb@@iA5CYOR%NIOHPVej%Kl+3Lk;B`Q5V4`YRx z{n;~2m%hs1dx|7%&hcc1yJBh%dKy}ikU0KIZX5jQ9v=IK3g;~JTyz>-DVkKmLrc~n z0M&B_$$!xqS4U?+yIIF|t3y%kvCD1KjGZRdQ${Fph~p?bM{k?P>kSeft~Te&ULc`) z$h7Dk89Oa!a`0N=0SGmGr|~^@SsTF(L+eI!!6=Nt_>J0XYOLia<+!Q0=KgtA;<&uw$^I_{ihhi1;7mD#0`bnPak$2A5pWO&5i~P z+?&f!`)y7J7t1ijxM6m+j{wR$)>u$I*z1H?f(EOtjPzkXGo~DeKF6s2#DE>bgYvW` zyf__@PNV&30dsu9>k$U4duxJMhmVVq{G>8fO-fE?i7V>*ztSp3GKpBM7xz> zix&2|wAbbd6JwRWy%wuKvy2qGg-09kI*(78HK!oT;tEoh2vSG08?GNcAO}GVdPYM| zHN()2Ha{8%lSt>zQ>KVnz!-w{FrWGbTJAI>n@*mqj|hdI9xto=a#xJPiQ=ESOL8Ev zBZuz5D}O0w=SZS1%}l&8|J_HNUmZSHkfGpuT$r(4!*TL~;mUr=5>MHYeuC|o#vgr2 zOll`BtQ8hrTD=TGj2P%7I~j-U2kX|(Frh9w(Ie{{l#XZ-e$zspI+CQoRZsGoEk7>8 zme$g~Ts`eKIxyLT^Li_2bk3Io0g_;ItRGWr0F5J81#chE&!$LWfI({>%P1?m4mVHY z&her9L{=zP2@#tVA>;D13%HkMk>Y)UueIz8MD2JT;&+|gi$OQ{E#y9qVRF0@B^mlt|zHf9tO%yq-b{Nz`PmfXL^EF4uR81h{(wrIS z$UIBJ=sh7b6N|D%?I(cNIMhxj5;U<%G!E!$ZDAV)^YSVyE2x8~XegVAt#kaIrY{8^ zLa4DoB<9-e4ft%VR_WtzozcjJFLJLtP=c0+jSo4gZ|pAV1Y?!y#|X$eFRT9X;y^o^ ze0prDv)t&m)m}TxsM_jXaig;UC5#bZkFjwnSF{sKQ@kQmZUsc1LM%R`9I@>Abac!O zHdT#X#Ia^F=gt!;f^FV-Nz?Qp%dR#S4|ngP_YPI2wD6E(Ue#2B;MRD^dX&NwoEVgY z)|%RK_gYZ-6V*j5QXz%ohS) z*pTyJmX5XRmtaEj1WiN1vc*&w6OO|R+*+hN-+y*xuT?*&Qo6WK%J9|�HZ_G8tQ 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ⅆ1Xdod%AzzecI-qBgDjZ0R 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

YY%{o#8Op3g* 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 Date: Fri, 22 Jan 2016 15:23:32 +0100 Subject: [PATCH 20/22] currently working with 3 lines --- src/tests/analyticFakeData/analyticFakeData.C | 33 +++++++++++++++---- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/src/tests/analyticFakeData/analyticFakeData.C b/src/tests/analyticFakeData/analyticFakeData.C index 621aa044..65a954da 100644 --- a/src/tests/analyticFakeData/analyticFakeData.C +++ b/src/tests/analyticFakeData/analyticFakeData.C @@ -180,13 +180,19 @@ void analyticFakeData(const TString type, UInt_t runNo) const Double_t gamma = 0.0000135538817; // gamma/(2pi) Double_t bb0 = 5000.0; // field in Gauss - Double_t rate0 = 1.0/1000.0; // in 1/ns + Double_t rate0 = 7.0/1000.0; // in 1/ns + Double_t frac0 = 0.5; + Double_t bb1 = bb0 + 200.0; // field in Gauss + Double_t rate1 = 0.75/1000.0; // in 1/ns + Double_t frac1 = 0.2; + Double_t bb2 = bb0 + 600.0; // field in Gauss + Double_t rate2 = 0.25/1000.0; // in 1/ns // fake function parameters header info: only for test purposes cout << ">> write fake header for TMusrRoot" << endl; if (type.CompareTo("TLemRunHeader")) { TDoubleVector dvec; - header->Set("FakeFct/Def", "N0 exp(-t/tau_mu) [1 + A exp(-1/2 (t sigma)^2) cos(gamma_mu B t + phi)] + bkg"); + header->Set("FakeFct/Def", "N0 exp(-t/tau_mu) [1 + sum_{k=0}^2 frac_k A_0 exp(-1/2 (t sigma_k)^2) cos(gamma_mu B_k t + phi)] + bkg"); for (UInt_t i=0; iSet("FakeFct/N0", dvec); @@ -202,10 +208,20 @@ void analyticFakeData(const TString type, UInt_t runNo) for (UInt_t i=0; iSet("FakeFct/phase", dvec); - prop.Set("B", bb0, "G"); - header->Set("FakeFct/B", prop); - prop.Set("lambda", rate0, "1/usec"); - header->Set("FakeFct/lambda", prop); + prop.Set("B0", bb0, "G"); + header->Set("FakeFct/B0", prop); + prop.Set("rate0", 1.0e3*rate0, "1/usec"); + header->Set("FakeFct/rate0", prop); + header->Set("FakeFct/frac0", frac0); + prop.Set("B1", bb1, "G"); + header->Set("FakeFct/B1", prop); + prop.Set("rate1", 1.0e3*rate1, "1/usec"); + header->Set("FakeFct/rate1", prop); + header->Set("FakeFct/frac1", frac1); + prop.Set("B2", bb2, "G"); + header->Set("FakeFct/B2", prop); + prop.Set("rate2", 1.0e3*rate2, "1/usec"); + header->Set("FakeFct/rate2", prop); } cout << ">> create histo objects" << endl; @@ -228,7 +244,10 @@ void analyticFakeData(const TString type, UInt_t runNo) histo[i]->SetBinContent(j+1, bkg[i]); } else { time = (Double_t)(j-t0[i])*timeResolution; - dval = (Double_t)n0[i]*TMath::Exp(-time/tau)*(1.0+a0[i]*TMath::Exp(-0.5*TMath::Power(time*rate0,2))*TMath::Cos(TMath::TwoPi()*gamma*bb0*time+phase[i]))+(Double_t)bkg[i]; + dval = (Double_t)n0[i]*TMath::Exp(-time/tau)*(1.0+ + frac0*a0[i]*TMath::Exp(-0.5*TMath::Power(time*rate0,2))*TMath::Cos(TMath::TwoPi()*gamma*bb0*time+phase[i]) + + frac1*a0[i]*TMath::Exp(-0.5*TMath::Power(time*rate1,2))*TMath::Cos(TMath::TwoPi()*gamma*bb1*time+phase[i]) + + (1.0-frac0-frac1)*a0[i]*TMath::Exp(-0.5*TMath::Power(time*rate2,2))*TMath::Cos(TMath::TwoPi()*gamma*bb2*time+phase[i]))+(Double_t)bkg[i]; histo[i]->SetBinContent(j+1, dval); } } From a35884b86c060cb73775ef14f32061b1f102806b Mon Sep 17 00:00:00 2001 From: Suter Andreas Date: Fri, 22 Jan 2016 15:39:32 +0100 Subject: [PATCH 21/22] merge the devel-rrf branch into the master branch --- ChangeLog | 2 + configure.ac | 4 +- doc/examples/test-asy-HAL9500-RRF.msr | 178 ++++++++++++++++++ doc/examples/test-histo-HAL9500-RRF.msr | 235 ++++++++++++++++++++++++ 4 files changed, 417 insertions(+), 2 deletions(-) create mode 100644 doc/examples/test-asy-HAL9500-RRF.msr create mode 100644 doc/examples/test-histo-HAL9500-RRF.msr diff --git a/ChangeLog b/ChangeLog index a3859bc3..e206ad00 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,8 @@ changes since 0.15.0 =================================== +NEW 2016-01-22 add RRF fit option. At the same time, the version has been + increased to 0.16.0. For details see the documentation. FIXED 2015-10-29 TMusrRunHeader didn't map a double vector properly into a string. The last element was a copy of the 2nd last instead if the proper last. This is now fixed. Fixed also some diff --git a/configure.ac b/configure.ac index e29a1bad..fa00d12e 100644 --- a/configure.ac +++ b/configure.ac @@ -1,7 +1,7 @@ AC_REVISION([m4_esyscmd_s([git describe --always])]) AC_PREREQ(2.63) -AC_INIT([musrfit],[0.15.0],[andreas.suter@psi.ch]) +AC_INIT([musrfit],[0.16.0],[andreas.suter@psi.ch]) AC_CONFIG_AUX_DIR(admin) AC_CANONICAL_HOST #AC_MSG_RESULT([${host} ${host_cpu} ${host_vendor} ${host_os}]) @@ -35,7 +35,7 @@ dnl ----------------------------------------------- #release versioning MUSR_MAJOR_VERSION=0 -MUSR_MINOR_VERSION=15 +MUSR_MINOR_VERSION=16 MUSR_MICRO_VERSION=0 #release versioning diff --git a/doc/examples/test-asy-HAL9500-RRF.msr b/doc/examples/test-asy-HAL9500-RRF.msr new file mode 100644 index 00000000..e7676ea5 --- /dev/null +++ b/doc/examples/test-asy-HAL9500-RRF.msr @@ -0,0 +1,178 @@ +MnSi, FLC68.2, 50 K +############################################################### +FITPARAMETER +# Nr. Name Value Step Pos_Error Boundaries + 1 rate_1 1.680 0.019 none + 2 field_1 1589.71 0.20 none + 3 rate_2 1.863 0.065 none + 4 field_2 788.86 0.49 none + + 5 alpha_f15 1.0029 0.0015 none + 6 frac_f15 0.7350 0.0090 none + 7 asym_f15 0.2713 0.0043 none 0 none + 8 phase_f15 79.37 0.80 none + + 9 alpha_f26 0.9996 0.0015 none + 10 frac_f26 0.7408 0.0085 none + 11 asym_f26 0.3029 0.0046 none 0 none + 12 phase_f26 30.22 0.73 none + + 13 alpha_f37 1.0003 0.0015 none + 14 frac_f37 0.88 0.23 none + 15 asym_f37 0.0126 0.0045 none 0 none + 16 phase_f37 58.0 15.0 none + + 17 alpha_f48 0.9999 0.0015 none + 18 frac_f48 0.7344 0.0084 none + 19 asym_f48 0.2929 0.0043 none 0 none + 20 phase_f48 -33.13 0.76 none + + 21 alpha_b15 0.9991 0.0013 none + 22 frac_b15 0.7439 0.0077 none + 23 asym_b15 0.2807 0.0038 none 0 none + 24 phase_b15 164.98 0.68 none + + 25 alpha_b26 1.0003 0.0013 none + 26 frac_b26 0.7331 0.0078 none + 27 asym_b26 0.2810 0.0038 none 0 none + 28 phase_b26 119.49 0.70 none + + 29 alpha_b37 0.9989 0.0012 none + 30 frac_b37 0.7504 0.0078 none + 31 asym_b37 0.2755 0.0037 none 0 none + 32 phase_b37 102.07 0.69 none + + 33 alpha_b48 0.9990 0.0012 none + 34 frac_b48 0.7391 0.0080 none + 35 asym_b48 0.2763 0.0039 none 0 none + 36 phase_b48 37.66 0.67 none + +############################################################### +THEORY +asymmetry fun1 +simplExpo 1 (rate) +TFieldCos map3 fun3 (phase frequency) ++ +asymmetry fun2 +simplExpo 3 (rate) +TFieldCos map3 fun4 (phase frequency) + +############################################################### +FUNCTIONS +fun1 = map1 * map2 +fun2 = (1 - map1) * map2 +fun3 = gamma_mu * par2 +fun4 = gamma_mu * par4 + +############################################################### +GLOBAL +fittype 3 (asymmetry RRF fit) +fit 0.0005 6 +rrf_freq 7.15 T +rrf_packing 300 +rrf_phase 0.00 + +############################################################### +# Fw1-Fw5 +++++++ +RUN data/tdc_hifi_2014_00153 PIE3 PSI PSI-MDU (name beamline institute data-file-format) +alpha 5 +map 6 7 8 0 0 0 0 0 0 0 0 +forward 2 +backward 6 +background 500 15000 500 15000 # estimated bkg: 0.0492 / 0.0501 +data 20158 409500 20130 409500 +t0 20108.0 20080.0 + +# Fw2-Fw6 +++++++ +RUN data/tdc_hifi_2014_00153 PIE3 PSI PSI-MDU (name beamline institute data-file-format) +alpha 9 +map 10 11 12 0 0 0 0 0 0 0 0 +forward 3 +backward 7 +background 500 15000 500 15000 # estimated bkg: 0.0501 / 0.0451 +data 20138 409500 20121 409500 +t0 20088.0 20071.0 + +# Fw3-Fw7 +++++++ +RUN data/tdc_hifi_2014_00153 PIE3 PSI PSI-MDU (name beamline institute data-file-format) +alpha 13 +map 14 15 16 0 0 0 0 0 0 0 0 +forward 3 +backward 8 +background 500 15000 500 15000 # estimated bkg: 0.0501 / 0.0449 +data 20111 409500 20116 409500 +t0 20061.0 20066.0 + +# Fw4-Fw8 +++++++ +RUN data/tdc_hifi_2014_00153 PIE3 PSI PSI-MDU (name beamline institute data-file-format) +alpha 17 +map 18 19 20 0 0 0 0 0 0 0 0 +forward 5 +backward 9 +background 500 15000 500 15000 # estimated bkg: 0.0560 / 0.0462 +data 20121 409500 20082 409500 +t0 20071.0 20032.0 + +# Bw1-Bw5 +++++++ +RUN data/tdc_hifi_2014_00153 PIE3 PSI PSI-MDU (name beamline institute data-file-format) +alpha 21 +map 22 23 24 0 0 0 0 0 0 0 0 +forward 10 +backward 14 +background 500 15000 500 15000 # estimated bkg: 0.0641 / 0.0806 +data 20072 409500 20067 409500 +t0 20022.0 20017.0 + +# Bw2-Bw6 +++++++ +RUN data/tdc_hifi_2014_00153 PIE3 PSI PSI-MDU (name beamline institute data-file-format) +alpha 25 +map 26 27 28 0 0 0 0 0 0 0 0 +forward 11 +backward 15 +background 500 15000 500 15000 # estimated bkg: 0.0689 / 0.0768 +data 20076 409500 20069 409500 +t0 20026.0 20019.0 + +# Bw3-Bw7 +++++++ +RUN data/tdc_hifi_2014_00153 PIE3 PSI PSI-MDU (name beamline institute data-file-format) +alpha 29 +map 30 31 32 0 0 0 0 0 0 0 0 +forward 12 +backward 16 +background 500 15000 500 15000 # estimated bkg: 0.0769 / 0.0795 +data 20060 409500 20069 409500 +t0 20010.0 20019.0 + +# Bw4-Bw8 +++++++ +RUN data/tdc_hifi_2014_00153 PIE3 PSI PSI-MDU (name beamline institute data-file-format) +alpha 33 +map 34 35 36 0 0 0 0 0 0 0 0 +forward 13 +backward 17 +background 500 15000 500 15000 # estimated bkg: 0.0761 / 0.0702 +data 20063 409500 20089 409500 +t0 20013.0 20039.0 + +############################################################### +COMMANDS +#MAX_LIKELIHOOD +PRINT_LEVEL 2 +MINIMIZE +#MINOS +SAVE + +############################################################### +PLOT 3 (asymmetry RRF plot) +runs 1 2 3 4 5 6 7 8 +range 0 9.07 -0.5 0.5 + +############################################################### +FOURIER +units Gauss # units either 'Gauss', 'Tesla', 'MHz', or 'Mc/s' +fourier_power 11 +apodization STRONG # NONE, WEAK, MEDIUM, STRONG +plot POWER # REAL, IMAG, REAL_AND_IMAG, POWER, PHASE + +############################################################### +STATISTIC --- 2016-01-18 16:23:00 + chisq = 7402.2, NDF = 6516, chisq/NDF = 1.135997 diff --git a/doc/examples/test-histo-HAL9500-RRF.msr b/doc/examples/test-histo-HAL9500-RRF.msr new file mode 100644 index 00000000..24891bf9 --- /dev/null +++ b/doc/examples/test-histo-HAL9500-RRF.msr @@ -0,0 +1,235 @@ +MnSi, FLC68.2, 50 K +############################################################### +FITPARAMETER +# Nr. Name Value Step Pos_Error Boundaries + 1 Rate_1 1.678 0.018 none + 2 Field_1_RRF 1589.66 0.19 none + 3 Rate_2 1.948 0.064 none + 4 Field_2_RRF 788.93 0.47 none + + 5 Asym_1 0.3102 0.0067 none + 6 Frc_1 0.728 0.012 none + 7 Phase_1 57.3 1.1 none + + 8 Asym_2 0.3073 0.0066 none + 9 Frc_2 0.748 0.012 none + 10 Phase_2 30.6 1.0 none + + 11 Asym_3 0.3245 0.0065 none + 12 Frc_3 0.728 0.011 none + 13 Phase_3 18.70 0.96 none + + 14 Asym_4 0.3290 0.0062 none + 15 Frc_4 0.733 0.011 none + 16 Phase_4 339.27 0.96 none + + 17 Asym_5 0.3213 0.0062 none + 18 Frc_5 0.730 0.011 none + 19 Phase_5 282.5 1.0 none + + 20 Asym_6 0.3424 0.0072 none + 21 Frc_6 0.726 0.012 none + 22 Phase_6 211.3 1.0 none + + 23 Asym_7 0.3321 0.0069 none + 24 Frc_7 0.731 0.012 none + 25 Phase_7 161.7 1.1 none + + 26 Asym_8 0.3219 0.0067 none + 27 Frc_8 0.730 0.012 none + 28 Phase_8 133.7 1.1 none + + 29 Asym_9 0.3030 0.0058 none + 30 Frc_9 0.730 0.011 none + 31 Phase_9 158.87 0.97 none + + 32 Asym_10 0.3046 0.0057 none + 33 Frc_10 0.731 0.011 none + 34 Phase_10 129.97 0.97 none + + 35 Asym_11 0.2898 0.0055 none + 36 Frc_11 0.754 0.011 none + 37 Phase_11 101.80 0.96 none + + 38 Asym_12 0.3013 0.0055 none + 39 Frc_12 0.740 0.010 none + 40 Phase_12 43.00 0.88 none + + 41 Asym_13 0.3009 0.0054 none + 42 Frc_13 0.747 0.010 none + 43 Phase_13 351.72 0.88 none + + 44 Asym_14 0.3054 0.0053 none + 45 Frc_14 0.729 0.010 none + 46 Phase_14 289.91 0.91 none + + 47 Asym_15 0.2931 0.0053 none + 48 Frc_15 0.740 0.010 none + 49 Phase_15 282.39 0.94 none + + 50 Asym_16 0.2814 0.0058 none + 51 Frc_16 0.729 0.011 none + 52 Phase_16 212.89 0.99 none + +############################################################### +THEORY +asymmetry fun1 +simplExpo 1 (rate) +TFieldCos map3 fun3 (phase frequency) ++ +asymmetry fun2 +simplExpo 3 (rate) +TFieldCos map3 fun4 (phase frequency) + +############################################################### +FUNCTIONS +fun1 = map1 * map2 +fun2 = map1 * (1 - map2) +fun3 = par2 * gamma_mu +fun4 = par4 * gamma_mu + +############################################################### +GLOBAL +fittype 1 (single histogram RRF fit) +rrf_freq 7.15 T +rrf_packing 300 +rrf_phase 0.00 +fit 0.0005 10 + +############################################################### +RUN data/tdc_hifi_2014_00153 PIE3 PSI PSI-MDU (name beamline institute data-file-format) +map 5 6 7 0 0 0 0 0 0 0 0 +forward 2 +background 100 18000 # estimated bkg: 0.0476 +data 20208 409500 +t0 20108.0 +#-------------------------------------------------------------- +RUN data/tdc_hifi_2014_00153 PIE3 PSI PSI-MDU (name beamline institute data-file-format) +map 8 9 10 0 0 0 0 0 0 0 0 +forward 3 +background 100 18000 # estimated bkg: 0.0490 +data 20188 409500 +t0 20088.0 +#-------------------------------------------------------------- +RUN data/tdc_hifi_2014_00153 PIE3 PSI PSI-MDU (name beamline institute data-file-format) +map 11 12 13 0 0 0 0 0 0 0 0 +forward 4 +background 100 18000 # estimated bkg: 0.0582 +data 20161 409500 +t0 20061.0 +#-------------------------------------------------------------- +RUN data/tdc_hifi_2014_00153 PIE3 PSI PSI-MDU (name beamline institute data-file-format) +map 14 15 16 0 0 0 0 0 0 0 0 +forward 5 +background 100 18000 # estimated bkg: 0.0553 +data 20171 409500 +t0 20071.0 +#-------------------------------------------------------------- +RUN data/tdc_hifi_2014_00153 PIE3 PSI PSI-MDU (name beamline institute data-file-format) +map 17 18 19 0 0 0 0 0 0 0 0 +forward 6 +background 100 18000 # estimated bkg: 0.0515 +data 20180 409500 +t0 20080.0 +#-------------------------------------------------------------- +RUN data/tdc_hifi_2014_00153 PIE3 PSI PSI-MDU (name beamline institute data-file-format) +map 20 21 22 0 0 0 0 0 0 0 0 +forward 7 +background 100 18000 # estimated bkg: 0.0458 +data 20171 409500 +t0 20071.0 +#-------------------------------------------------------------- +RUN data/tdc_hifi_2014_00153 PIE3 PSI PSI-MDU (name beamline institute data-file-format) +map 23 24 25 0 0 0 0 0 0 0 0 +forward 8 +background 100 18000 # estimated bkg: 0.0466 +data 20166 409500 +t0 20066.0 +#-------------------------------------------------------------- +RUN data/tdc_hifi_2014_00153 PIE3 PSI PSI-MDU (name beamline institute data-file-format) +map 26 27 28 0 0 0 0 0 0 0 0 +forward 9 +background 100 18000 # estimated bkg: 0.0457 +data 20132 409500 +t0 20032.0 +#-------------------------------------------------------------- +RUN data/tdc_hifi_2014_00153 PIE3 PSI PSI-MDU (name beamline institute data-file-format) +map 29 30 31 0 0 0 0 0 0 0 0 +forward 10 +background 100 18000 # estimated bkg: 0.0635 +data 20122 409500 +t0 20022.0 +#-------------------------------------------------------------- +RUN data/tdc_hifi_2014_00153 PIE3 PSI PSI-MDU (name beamline institute data-file-format) +map 32 33 34 0 0 0 0 0 0 0 0 +forward 11 +background 100 18000 # estimated bkg: 0.0685 +data 20126 409500 +t0 20026.0 +#-------------------------------------------------------------- +RUN data/tdc_hifi_2014_00153 PIE3 PSI PSI-MDU (name beamline institute data-file-format) +map 35 36 37 0 0 0 0 0 0 0 0 +forward 12 +background 100 18000 # estimated bkg: 0.0752 +data 20110 409500 +t0 20010.0 +#-------------------------------------------------------------- +RUN data/tdc_hifi_2014_00153 PIE3 PSI PSI-MDU (name beamline institute data-file-format) +map 38 39 40 0 0 0 0 0 0 0 0 +forward 13 +background 100 18000 # estimated bkg: 0.0760 +data 20113 409500 +t0 20013.0 +#-------------------------------------------------------------- +RUN data/tdc_hifi_2014_00153 PIE3 PSI PSI-MDU (name beamline institute data-file-format) +map 41 42 43 0 0 0 0 0 0 0 0 +forward 14 +background 100 18000 # estimated bkg: 0.0809 +data 20117 409500 +t0 20017.0 +#-------------------------------------------------------------- +RUN data/tdc_hifi_2014_00153 PIE3 PSI PSI-MDU (name beamline institute data-file-format) +map 44 45 46 0 0 0 0 0 0 0 0 +forward 15 +background 100 18000 # estimated bkg: 0.0755 +data 20119 409500 +t0 20019.0 +#-------------------------------------------------------------- +RUN data/tdc_hifi_2014_00153 PIE3 PSI PSI-MDU (name beamline institute data-file-format) +map 47 48 49 0 0 0 0 0 0 0 0 +forward 16 +background 100 18000 # estimated bkg: 0.0796 +data 20119 409500 +t0 20019.0 +#-------------------------------------------------------------- +RUN data/tdc_hifi_2014_00153 PIE3 PSI PSI-MDU (name beamline institute data-file-format) +map 50 51 52 0 0 0 0 0 0 0 0 +forward 17 +background 100 18000 # estimated bkg: 0.0702 +data 20139 409500 +t0 20039.0 + +############################################################### +COMMANDS +#MAX_LIKELIHOOD +PRINT_LEVEL 2 +MINIMIZE +#MINOS +SAVE + +############################################################### +PLOT 1 (single histo RRF plot) +runs 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 +range 0 9.07 -0.5 0.5 + +############################################################### +FOURIER +units Gauss # units either 'Gauss', 'Tesla', 'MHz', or 'Mc/s' +fourier_power 12 +apodization MEDIUM # NONE, WEAK, MEDIUM, STRONG +plot POWER # REAL, IMAG, REAL_AND_IMAG, POWER, PHASE +#range 7.1 7.5 + +############################################################### +STATISTIC --- 2016-01-14 13:24:36 + chisq = 22007.6, NDF = 20700, chisq/NDF = 1.063168 From d0da0dd0633228dd3f055139fd06226be05b7dfc Mon Sep 17 00:00:00 2001 From: Suter Andreas Date: Fri, 22 Jan 2016 16:16:29 +0100 Subject: [PATCH 22/22] update of the docu which now describes the RRF option. --- ChangeLog | 4 + doc/html/user/MUSR/BmwLibs.html | 201 ++- doc/html/user/MUSR/CiteMusrFit.html | 201 ++- doc/html/user/MUSR/LibFitPofB.html | 284 ++--- doc/html/user/MUSR/LibZFRelaxation.html | 224 ++-- doc/html/user/MUSR/Msr2Data.html | 352 +++--- doc/html/user/MUSR/MusrFit.html | 665 +++++----- .../user/MUSR/MusrFitAcknowledgements.html | 201 ++- doc/html/user/MUSR/MusrFitSetup.html | 919 ++++++-------- doc/html/user/MUSR/MusrGui.html | 369 +++--- doc/html/user/MUSR/MusrRoot.html | 533 ++++---- doc/html/user/MUSR/QuickStart.html | 211 ++-- doc/html/user/MUSR/TutorialSingleHisto.html | 346 +++--- doc/html/user/MUSR/WebHome.html | 203 ++- .../user/pub/System/PatternSkin/print.css | 2 +- .../System/PatternSkinTheme2009/colors.css | 795 +----------- .../PatternSkinTheme2009/column_left.css | 13 +- .../pub/System/PatternSkinTheme2009/style.css | 1097 +---------------- .../PatternSkinTheme2009/variant_twiki.css | 46 +- doc/html/user/pub/System/PsiSkin/psistyle.css | 19 +- .../user/pub/System/SkinTemplates/base.css | 2 +- 21 files changed, 2193 insertions(+), 4494 deletions(-) diff --git a/ChangeLog b/ChangeLog index e206ad00..1c2ed615 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,10 @@ # ChangeLog #--------------------------------------------------------------------- +changes since 0.16.0 +=================================== +NEW 2016-01-22 update of the docu which now describes the RRF option. + changes since 0.15.0 =================================== NEW 2016-01-22 add RRF fit option. At the same time, the version has been diff --git a/doc/html/user/MUSR/BmwLibs.html b/doc/html/user/MUSR/BmwLibs.html index b70eadf7..12c12d36 100644 --- a/doc/html/user/MUSR/BmwLibs.html +++ b/doc/html/user/MUSR/BmwLibs.html @@ -1,35 +1,38 @@ - + - - + + - MUSR :: BmwLibs - + MUSR :: BmwLibs + + + + + + + - + - - + + + + - - - - - - - -

+ + + + + + + + + + + + + + + + +
-
+
-
-
-
- -
-

    -

    -
-
-
-
Ideas, requests, problems regarding PSI Wiki? Send feedback
+
This topic: MUSR > WebHome > MusrFit > BmwLibs
+Topic revision: 03 Jul 2015, suter_a
-
- - - +
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding PSI Wiki? Send feedback
+
+
+
+

-

-

-

\ No newline at end of file + + + + + + + + + + + \ No newline at end of file diff --git a/doc/html/user/MUSR/CiteMusrFit.html b/doc/html/user/MUSR/CiteMusrFit.html index 64ab417f..b446cc8d 100644 --- a/doc/html/user/MUSR/CiteMusrFit.html +++ b/doc/html/user/MUSR/CiteMusrFit.html @@ -1,35 +1,38 @@ - + - - + + - MUSR :: CiteMusrFit - + MUSR :: CiteMusrFit + + + + + + + - + - - + + + + - - - - - - - -
+ + + + + + + + + + + + + + + + +
-
+
-
-
-

-

- - - -

-

-

-

-

-

-

How to Cite musrfit?

+
+
+

How to Cite musrfit?

Since quite some effort is going into the development and maintenance of the musrfit package, you should at least acknowledge it in your publication if you have used it to analyze your data. Even better of course is to cite it properly by the reference given beneath

-
- - - - - - - -
- - -
Topic revision: r2 - 19 Jun 2012, AndreasSuter
-
-
-
 
-
-
-
- -
-

    -

    -
-
-
-
Ideas, requests, problems regarding PSI Wiki? Send feedback
+
This topic: MUSR > WebHome > CiteMusrFit
+Topic revision: 19 Jun 2012, suter_a
-
- - - +
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding PSI Wiki? Send feedback
+
+
+
+

-

-

-

\ No newline at end of file + + + + + + + + + + + \ No newline at end of file diff --git a/doc/html/user/MUSR/LibFitPofB.html b/doc/html/user/MUSR/LibFitPofB.html index 48c20d8a..2adfdbfe 100644 --- a/doc/html/user/MUSR/LibFitPofB.html +++ b/doc/html/user/MUSR/LibFitPofB.html @@ -1,35 +1,38 @@ - + - - + + - MUSR :: LibFitPofB - + MUSR :: LibFitPofB + + + + + + + - + - - + + + + - - - - - - - -
+ + + + + + + + + + + + + + + + + + + +
-
+
-
-
-

-

- - - -

-

-

-

-

-

-
- -

libFitPofB

-
    +
    +
    +
    + +

    libFitPofB

    + - -

    1 Introduction

    + +

    1 Introduction

    libFitPofB is a collection of C++ classes using the musrfit user-function interface in order to facilitate the usage in conjunction with musrfit. The classes contained in this library generally implement calculations of one-dimensional static magnetic field distributions P(B) which lead to muon-spin depolarization functions

    \mathcal{P}(t) = \int P(B)\cos\left(\gamma_{\mu} B t + \varphi\right) \mathrm{d}B,

    where \gamma_{\mu} = 2\pi\times 135.54~\mathrm{MHz/T} is the gyromagnetic ratio of the muon and \varphi is the initial phase of the muon spins with respect to the positron detector.
    -At the moment the only available implementations deal with field distributions measured in local isotropic superconductors, either by means of low-energy μSR in the Meissner state or by conventional μSR in the mixed state. In the following the basic usage of the library in musrfit is explained—the calculations by themselves are only outlined. For further information please refer to the original literature and/or the source code of the implementation. +At the moment the only available implementations deal with field distributions measured in local isotropic superconductors, either by means of low-energy μSR in the Meissner state or by conventional μSR in the mixed state. In the following the basic usage of the library in musrfit is explained—the calculations by themselves are only outlined. For further information please refer to the original literature and/or the source code of the implementation.


    Remark 1: In order to supply certain information needed for the calculations but not suited to be stored in the musrfit msr files an XML configuration file in the working directory is used. For details, see below.

    -Remark 2: The implementations in this library heavily rely on FFTW3. In principle, it always checks what is the best way to do efficient Fourier transforms for a given machine before the transforms are actually done. If repeatedly Fourier transforms of the same (sizable) length should be done, it might be worth storing the once obtained information in an external file and just load it the next time this information is needed ("wisdom handling"). In case this feature shall be used, a valid wisdom file has to be specified in the XML file. +Remark 2: The implementations in this library heavily rely on FFTW3. In principle, it always checks what is the best way to do efficient Fourier transforms for a given machine before the transforms are actually done. If repeatedly Fourier transforms of the same (sizable) length should be done, it might be worth storing the once obtained information in an external file and just load it the next time this information is needed ("wisdom handling"). In case this feature shall be used, a valid wisdom file has to be specified in the XML file.

    Remark 3: The model functions described in the following do generally not behave nicely in conjunction with MINUIT function minimizations (or maximizations). The analysis process at the moment in most cases involves some tedious trial-and-error procedure, where the displayed MINUIT information as always deserves attention. This is especially true if small effects should be analyzed (e.g. small diamagnetic shifts in superconductors). The parameter uncertainty in many cases has to be estimated independently. Due to these limitations, also the use of the fit option of msr2data cannot be advised.

    Remark 4: If these classes still prove useful and results obtained through them are part of scientific publications, an acknowledgement of the use of the library is appreciated.

    -

    2 LE-μSR

    -

    2.1 One-dimensional London model for the Meissner state of isotropic superconductors

    +

    2 LE-μSR

    +

    2.1 One-dimensional London model for the Meissner state of isotropic superconductors

    The models for analyzing LE-μSR data assume the magnetic induction B(z) to vary only in the dimension parallel to the momentum of the incident muons. In such a case the magnetic field distribution is given by

    @@ -165,7 +170,7 @@ Assuming an array of N \frac{\partial^2}{\partial z^2}B_i(z) = \frac{1}{\lambda_i^2}B_i(z)

    -for each layer i taking into account the boundary conditions(1) +for each layer i taking into account the boundary conditions(1)

    B_1(0) = B_N(d) = \mu_0H

    @@ -184,19 +189,19 @@ userFcn libFitPofB TLondon1DHS 1 2 3 4 5 The parameters are:
    1. phase (deg) -
    2. muon implantation energy as specified in the XML startup file (keV) +
    3. muon implantation energy as specified in the XML startup file (keV)
    4. applied field (G)
    5. thickness of the dead layer (nm)
    6. magnetic field penetration depth (nm)

    Superconducting thin film (one layer)
    -userFcn  libFitPofB TLondon1D1L 1 2 3 4 5 6 [a b]
    +userFcn  libFitPofB TLondon1D1L 1 2 3 4 5 6 [a b]
     
    The mandatory parameters are:
    1. phase (deg) -
    2. muon implantation energy as specified in the XML startup file (keV) +
    3. muon implantation energy as specified in the XML startup file (keV)
    4. applied field (G)
    5. thickness of the dead layer (nm)
    6. thickness of the actually superconducting layer (nm) @@ -204,17 +209,17 @@ The mandatory parameters are:

      The optional parameters are:
        -
      1. fraction f1 of muons in the thin film contributing to the signal (0 ≤ f1 ≤ 1) -
      2. fraction fs of muons in the substrate contributing to the signal (0 ≤ fs ≤ 1) +
      3. fraction f1 of muons in the thin film contributing to the signal (0 ≤ f1 ≤ 1) +
      4. fraction fs of muons in the substrate contributing to the signal (0 ≤ fs ≤ 1)

      Superconducting thin-film bilayer heterostructure
      -userFcn  libFitPofB TLondon1D2L 1 2 3 4 5 6 7 8 [a b c]
      +userFcn  libFitPofB TLondon1D2L 1 2 3 4 5 6 7 8 [a b c]
       
      The mandatory parameters are:
      1. phase (deg) -
      2. muon implantation energy as specified in the XML startup file (keV) +
      3. muon implantation energy as specified in the XML startup file (keV)
      4. applied field (G)
      5. thickness of the dead layer (nm)
      6. thickness of the actually superconducting first layer (nm) @@ -224,18 +229,18 @@ The mandatory parameters are:

        The optional parameters are:
          -
        1. fraction f1 of muons in the dead and first layer contributing to the signal (0 ≤ f1 ≤ 1) -
        2. fraction f2 of muons in the second layer contributing to the signal (0 ≤ f2 ≤ 1) -
        3. fraction fs of muons in the substrate contributing to the signal (0 ≤ fs ≤ 1) +
        4. fraction f1 of muons in the dead and first layer contributing to the signal (0 ≤ f1 ≤ 1) +
        5. fraction f2 of muons in the second layer contributing to the signal (0 ≤ f2 ≤ 1) +
        6. fraction fs of muons in the substrate contributing to the signal (0 ≤ fs ≤ 1)

        Superconducting thin-film trilayer heterostructure
        -userFcn  libFitPofB TLondon1D3L 1 2 3 4 5 6 7 8 9 10 [a b c d]
        +userFcn  libFitPofB TLondon1D3L 1 2 3 4 5 6 7 8 9 10 [a b c d]
         
        The mandatory parameters are:
        1. phase (deg) -
        2. muon implantation energy as specified in the XML startup file (keV) +
        3. muon implantation energy as specified in the XML startup file (keV)
        4. applied field (G)
        5. thickness of the dead layer (nm)
        6. thickness of the actually superconducting first layer (nm) @@ -247,39 +252,39 @@ The mandatory parameters are:

          The optional parameters are:
            -
          1. fraction f1 of muons in the dead and first layer contributing to the signal (0 ≤ f1 ≤ 1) -
          2. fraction f2 of muons in the second layer contributing to the signal (0 ≤ f2 ≤ 1) -
          3. fraction f3 of muons in the third layer contributing to the signal (0 ≤ f3 ≤ 1) -
          4. fraction fs of muons in the substrate contributing to the signal (0 ≤ fs ≤ 1) +
          5. fraction f1 of muons in the dead and first layer contributing to the signal (0 ≤ f1 ≤ 1) +
          6. fraction f2 of muons in the second layer contributing to the signal (0 ≤ f2 ≤ 1) +
          7. fraction f3 of muons in the third layer contributing to the signal (0 ≤ f3 ≤ 1) +
          8. fraction fs of muons in the substrate contributing to the signal (0 ≤ fs ≤ 1)

          Notes

          - 1 : F. London, Superfluids: Macroscopic Theory of Superconductivity, Dover (1961), p. 34 + 1 : F. London, Superfluids: Macroscopic Theory of Superconductivity, Dover (1961), p. 34


          -

          3 Conventional (bulk) μSR

          -

          3.1 Field distributions in the mixed state of isotropic superconductors

          +

          3 Conventional (bulk) μSR

          +

          3.1 Field distributions in the mixed state of isotropic superconductors

          When investigating superconductors in the mixed state by means of conventional μSR a two-dimensional flux-line lattice is probed randomly by the muons. The spatial field distributions within such an ordered lattice are modeled using the Fourier series

          B(\mathbf{r}) = \langle B \rangle \sum\limits_{\mathbf{K}}B_{\mathbf{K}}\exp(-\imath\mathbf{K}\mathbf{r}),

          where \mathbf{r}=(x,y), \mathbf{K} are the reciprocal lattice vectors of a two-dimensional vortex lattice and the B_{\mathbf{K}} are the Fourier coefficients depending on the magnetic penetration depth \lambda and the superconducting coherence length \xi. The B_{\mathbf{K}} for some specific models are as follows:
          -
          London model with Gaussian cutoff(2)

          B_{\mathbf{K}} = \frac{\exp\left({-K^2\xi^2/2}\right)}{1 + K^2\lambda^2}

          -
          Modified London model(3)

          B_{\mathbf{K}} = \frac{\exp\left({-K^2\xi^2/2(1-b)}\right)}{1 + K^2\lambda^2/(1-b)},

          where b = \langle B \rangle/\mu_0H_{\mathrm{c}2}. -
          Analytical Ginzburg-Landau model(4)

          B_{\mathbf{K}} = \frac{f_{\infty}K_1\left(\frac{\xi_v}{\lambda}\sqrt{f_{\infty}^2+\lambda^2K^2}\right)}{K_1\left(\frac{\xi_v}{\lambda}f_{\infty}\right)\sqrt{f_{\infty}^2+\lambda^2K^2}},

          where f_{\infty} = 1 - b^4,~\xi_v = \xi\left(\sqrt{2}-{3\xi}/\left({4\lambda}\right)\right)\sqrt{(1+b^4)(1-2b(1-b)^2)} and K_1 is a modified Bessel function. +
          London model with Gaussian cutoff(2)

          B_{\mathbf{K}} = \frac{\exp\left({-K^2\xi^2/2}\right)}{1 + K^2\lambda^2}

          +
          Modified London model(3)

          B_{\mathbf{K}} = \frac{\exp\left({-K^2\xi^2/2(1-b)}\right)}{1 + K^2\lambda^2/(1-b)},

          where b = \langle B \rangle/\mu_0H_{\mathrm{c}2}. +
          Analytical Ginzburg-Landau model(4)

          B_{\mathbf{K}} = \frac{f_{\infty}K_1\left(\frac{\xi_v}{\lambda}\sqrt{f_{\infty}^2+\lambda^2K^2}\right)}{K_1\left(\frac{\xi_v}{\lambda}f_{\infty}\right)\sqrt{f_{\infty}^2+\lambda^2K^2}},

          where f_{\infty} = 1 - b^4,~\xi_v = \xi\left(\sqrt{2}-{3\xi}/\left({4\lambda}\right)\right)\sqrt{(1+b^4)(1-2b(1-b)^2)} and K_1 is a modified Bessel function.
          -Apart from the mentioned analytical models the numerical Ginzburg-Landau model (5) is available. In this case B(\mathbf{r}) is obtained by an iterative minimization of the free energy of the vortex lattice. +Apart from the mentioned analytical models the numerical Ginzburg-Landau model (5) is available. In this case B(\mathbf{r}) is obtained by an iterative minimization of the free energy of the vortex lattice.

          Concerning the applicability (e.g. field regions) of each of the mentioned models please refer to the original publications!

          -At the moment, the calculation of the field distribution has been implemented for triangular flux-line lattices. The number of grid lines in which the inter-vortex distance is divided for the calculations to be specified through the XML file.
          The muon-spin depolarization functions finally are calculated using the following lines in the THEORY block of a musrfit msr file:
          +At the moment, the calculation of the field distribution has been implemented for triangular flux-line lattices. The number of grid lines in which the inter-vortex distance is divided for the calculations to be specified through the XML file.
          The muon-spin depolarization functions finally are calculated using the following lines in the THEORY block of a musrfit msr file:
          2D triangular vortex lattice, London model with Gaussian cutoff
           userFcn  libFitPofB TBulkTriVortexLondon 1 2 3 4
           
          @@ -338,23 +343,23 @@ SAVE

          Notes

          - 2 : E.H. Brandt, J. Low Temp. Phys. 73, 355 (1988). + 2 : E.H. Brandt, J. Low Temp. Phys. 73, 355 (1988).

          - 3 : T.M. Riseman et al., Phys. Rev. B 52, 10569 (1995). + 3 : T.M. Riseman et al., Phys. Rev. B 52, 10569 (1995).

          - 4 : A. Yaouanc, P. Dalmas de Réotier and E.H. Brandt, Phys. Rev. B 55, 11107 (1997). + 4 : A. Yaouanc, P. Dalmas de Réotier and E.H. Brandt, Phys. Rev. B 55, 11107 (1997).

          - 5 : E.H. Brandt, Phys. Rev. B 68, 054506 (2003). + 5 : E.H. Brandt, Phys. Rev. B 68, 054506 (2003).


          - -

          4 The XML startup file

          + +

          4 The XML startup file

          BMW_startup.xml is a configuration file located in the working directory. In this file some settings like the time and field resolution of the calculations as well as the present muon implantation profiles for a LE-μSR analysis have to be defined. The following XML tags are allowed to define settings:
          <debug>ONE_OR_ZERO</debug>
          activate the debugging output of the settings read from the XML file by setting 1, deactivate it with 0 -
          <wisdom>PATH_TO_FILE</wisdom>
          specify the PATH_TO_FILE to an FFTW3 wisdom file that should be used; if the PATH_TO_FILE is invalid, no FFTW3 wisdom will be used +
          <wisdom>PATH_TO_FILE</wisdom>
          specify the PATH_TO_FILE to an FFTW3 wisdom file that should be used; if the PATH_TO_FILE is invalid, no FFTW3 wisdom will be used
          <delta_t>ResT</delta_t>
          set the time resolution ResT for the calculated depolarization function in microseconds
          <delta_B>ResB</delta_B>
          set the field resolution ResB for the calculated field distribution in Gauss
          <VortexLattice></VortexLattice>
          set the parameters used for the calculation of the spatial field distribution of a vortex lattice
          @@ -400,78 +405,29 @@ An example XML file looks as follows: </BMW>

          --- BMW & AS
    -
    - - - - - - - -
    - -
    - Edit | Attach | Print version | PDF | History: r17 < r16 < r15 < r14 | Backlinks | View wiki text | Refresh | More topic actions -
    -
    Topic revision: r17 - 03 Jul 2015, AndreasSuter
    -
    -
-
 
-
-
-
- -
-

    -

    -
-
-
-
Ideas, requests, problems regarding PSI Wiki? Send feedback
+
This topic: MUSR > WebHome > MusrFit > BmwLibs > LibFitPofB
+Topic revision: 03 Jul 2015, suter_a
-
- - - +
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding PSI Wiki? Send feedback
+
+
+
+

-

-

-

\ No newline at end of file + + + + + + + + + + + \ No newline at end of file diff --git a/doc/html/user/MUSR/LibZFRelaxation.html b/doc/html/user/MUSR/LibZFRelaxation.html index c163dfaf..b18fcaf5 100644 --- a/doc/html/user/MUSR/LibZFRelaxation.html +++ b/doc/html/user/MUSR/LibZFRelaxation.html @@ -1,35 +1,38 @@ - + - - + + - MUSR :: LibZFRelaxation - + MUSR :: LibZFRelaxation + + + + + + + - + - - + + + + - - - - - - - -
+ + + + + + + + + + + + + + + + + + + +
-
+
-
-
-

-

- - - -

-

-

-

-

-

-
- -

libZFRelaxation

-
-
 
-
-
-
- -
-

    -

    -
-
-
-
Ideas, requests, problems regarding PSI Wiki? Send feedback
+
This topic: MUSR > WebHome > MusrFit > BmwLibs > LibZFRelaxation
+Topic revision: 03 Jul 2015, suter_a
-
- - - +
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding PSI Wiki? Send feedback
+
+
+
+

-

-

-

\ No newline at end of file + + + + + + + + + + + \ No newline at end of file diff --git a/doc/html/user/MUSR/Msr2Data.html b/doc/html/user/MUSR/Msr2Data.html index c8fb8a14..aae6e8f8 100644 --- a/doc/html/user/MUSR/Msr2Data.html +++ b/doc/html/user/MUSR/Msr2Data.html @@ -1,35 +1,72 @@ - + - - + + - MUSR :: Msr2Data - + MUSR :: Msr2Data + + + + + + + - + - - + + + + + + + + - - - - - - - -
+ + + + + + + + + + + + + + + + + + + + +
-
+
-
-
+
+
+
+

msr2data

-

- - - -

-

-

-

-

-

-
-

msr2data

-

-
    +

    - -

    1 Introduction

    -msr2data (originally written by B. M. Wojek) is a program implemented in C++. Its purpose is to process multiple musrfit msr files with the same parameters and summarize the fitting results either in a TRIUMF DB (1) or a column ASCII file. It evolved from a script called mlog2db which has been written only for collecting fit results of LEM data stored in mlog files generated by musrfit and putting them together in a file with the DB format for further analysis. Therefore, any peculiarities, e.g. in supplying options to msr2data are owed its original purpose. -msr2data is free software and licensed under the GNU GPL version 2 or any later version (at your option). + +

    1 Introduction

    +msr2data (originally written by B. M. Wojek) is a program implemented in C++. Its purpose is to process multiple musrfit msr files with the same parameters and summarize the fitting results either in a TRIUMF DB (1) or a column ASCII file. It evolved from a script called mlog2db which has been written only for collecting fit results of LEM data stored in mlog files generated by musrfit and putting them together in a file with the DB format for further analysis. Therefore, any peculiarities, e.g. in supplying options to msr2data are owed its original purpose. +msr2data is free software and licensed under the GNU GPL version 2 or any later version (at your option).

    Before the usage of msr2data will be explained in greater detail first be aware of the following:

    @@ -149,14 +189,14 @@ Before the usage of msr2data will be explained in greater detail first be aware

    Notes

    - 1 : For an abridged description of this format see here. The DB files produced by msr2data can be viewed for instance with μView, however, they are not completely backward-compatible to the original "db language" since the parameter names can be longer than five or six characters! In order to establish this backward compatibility (if needed) the user has to ensure the correct length of the parameter names in the msr files! + 1 : For an abridged description of this format see here. The DB files produced by msr2data can be viewed for instance with μView, however, they are not completely backward-compatible to the original "db language" since the parameter names can be longer than five or six characters! In order to establish this backward compatibility (if needed) the user has to ensure the correct length of the parameter names in the msr files!


    - -

    2 Basic Types of Usage

    + +

    2 Basic Types of Usage

    Apart from numerous optional parameters that might be set or not, in principle there are four different ways of calling msr2data. These differ in how the list of runs which should be processed is supplied:
    msr2data <run> <extension> [optional parameters]
    A single run number.
    msr2data <firstRunNo> <lastRunNo> <extension> [optional parameters]
    An interval of run numbers is specified through the first and the last run number. The condition <firstRunNo> < <lastRunNo> is not necessary. @@ -165,20 +205,20 @@ Apart from numerous msr2data 8472 _tf_h13 generates the DB file out.db (can be changed by using the -o option) from 8472_tf_h13.msr. +
    msr2data 8472 _tf_h13
    generates the DB file out.db (can be changed by using the -o option) from 8472_tf_h13.msr.
    msr2data 8472 8474 _tf_h13
    generates the DB file out.db (can be changed by using the -o option) from 8472_tf_h13.msr, 8473_tf_h13.msr, and 8474_tf_h13.msr. -
    msr2data [8472 8470] _tf_h13
    generates the DB file out.db (can be changed by using the -o option) from 8472_tf_h13.msr and 8470_tf_h13.msr. -
    msr2data [8470:8474:2] _tf_h13
    generates the DB file out.db (can be changed by using the -o option) from 8470_tf_h13.msr, 8472_tf_h13.msr, and 8474_tf_h13.msr. +
    msr2data [8472 8470] _tf_h13
    generates the DB file out.db (can be changed by using the -o option) from 8472_tf_h13.msr and 8470_tf_h13.msr. +
    msr2data [8470:8474:2] _tf_h13
    generates the DB file out.db (can be changed by using the -o option) from 8470_tf_h13.msr, 8472_tf_h13.msr, and 8474_tf_h13.msr.
    msr2data run.list _tf_h13
    generates the DB file out.db (can be changed by using the -o option) from all runs listed in the ASCII file run.list in the working directory. In this file it is also possible to include external parameters which should be put in the resulting DB file. The structure of the run.list is the following: - +
     RUN VAR1 VAR2 VAR3 ...
     8460 200 27.1 46.2 ...
     8472 205 27.1 46.3 ...
     8453 210 27.2 45.9 ...
    -·     ·    ·    ·
    -·     ·    ·    ·
    -·     ·    ·    ·
    +·     ·    ·    ·
    +·     ·    ·    ·
    +·     ·    ·    ·
     
    The first not commented and not empty line determines the parameter names and labels and has to be present!
    It is allowed to add comments (with a preceding #) or empty lines to the run-list file. @@ -187,14 +227,14 @@ The following should be mentioned together with the above examples:
    • The output files in the examples above are only newly created if they did not exist before invoking msr2data. If the files were already present the msr-file data would be appended!
    • If the files have been newly created, also the DB file header is written. If the files were present before, only the data blocks are appended. The output of the header can either be forced or completely suppressed with the header and noheader options as shall be seen later.
    -
      +
      • If the musrfit output files do not have an <extension> as specified above like 8472.msr one has to call msr2data like in the following example:
         msr2data 8472 8460 ""
         

      - -

      3 Optional Parameters

      + +

      3 Optional Parameters

      As mentioned already above there are some optional parameters which change the behavior of msr2data and can be passed in any order. Here is a complete list:
      data
      The output file format is changed to a simple column ASCII file (default output file name: out.dat).
      new
      An existing output file is deleted before new information is written to it. @@ -215,7 +255,7 @@ msr2data 8400 8460 _tf_h13 -oABC.db fit-8472 Using 8472_tf_h13.msr as first template, msr2data generates subsequent msr input files 8400_tf_h13.msr through 8460_tf_h13.msr, calls musrfit to perform a fit of these files and collects the results of the fits together with the DB header in the new file ABC.db. Additionally, some information about external parameters like the temperature will be passed to ABC.db if it is present in the data files.
      -msr2data [8500 8502-8504 8507] _zf fit-8472 noheader nosummary -o DEF.db 
      +msr2data [8500 8502-8504 8507] _zf fit-8472 noheader nosummary -o DEF.db 
       
      Using 8472_zf.msr as first template, msr2data generates subsequent msr input files 8500_zf.msr, 8502_zf.msr, 8503_zf.msr, 8504_zf.msr and 8507_zf.msr, calls musrfit to perform a fit of these files and collects the results of the fits in the file DEF.db without writing the DB file header or attempting to read additional information from the data files.
      @@ -231,12 +271,12 @@ msr2data 8472 8475 _tf_h13 msr-8471!
       
      Using 8471_tf_h13.msr as template for all runs, msr2data generates the msr input files 8472_tf_h13.msr through 8475_tf_h13.msr. No fitting will be performed and no DB or ASCII output will be generated!

      - -

      4 The Global Mode

      + +

      4 The Global Mode

      Apart from all the options described above there is another program option: global. This option changes the general behavior of msr2data in that way that instead of processing one msr file for each run it combines all specified runs in one single msr file with the possibility to define common parameters for all runs as well as run-specific parameters. When writing the obtained parameters to a DB file or a column-structured ASCII file that single msr file is read and the parameters valid for each run are extracted. The global option can be used in conjunction with any of the described invocations of msr2data and together with all options stated above.

      - -

      4.1 File Generation

      + +

      4.1 File Generation

      The general idea of this mode is to generate a global msr file on the basis of a working single-run msr file. For this purpose a single-run template containing information about common and run-specific parameters should be created. These parameters are identified through their parameter names:
      run-specific parameters
      these parameters are tagged with the current run number in the format %0Xu, i.e. X digits with leading zeros, at the end of the parameter name, e.g. for a 4-digit-formatted run number alpha0123 if the run number was 123 or for a 8-digit-formatted run number alpha00123456 if the run number was 123456. X has to be at least 4.
      common parameters
      all parameters that are not run specific @@ -281,19 +321,19 @@ During this reorganization all the affected parameter occurrences are changed ac

      Please be aware of the fact that comments in the template msr file are not propagated to the newly generated global msr file!

      -

      4.2 Parameter Extraction

      +

      4.2 Parameter Extraction

      After fitting some model to the specified data the fit parameters can be extracted from the global msr file to a DB or column-structured ASCII file—as usual this includes also parameters stored in the run data files or externally specified parameters given in a run-list file. In order to reach this goal the global msr file has to obey certain rules:
      • The order of the parameters has to match the one described above, meaning the common parameters are listed first followed by the same number of parameters specific to each run tagged by the according run numbers at the end of the parameter names and having the same order as the specified list of runs.
      • The RUN blocks have to be ordered according to the list of runs to be processed.
      -Following these rules—which is achieved most easily by generating the global msr file using msr2data as shown above—the parameters can be extracted e.g. like
      +Following these rules—which is achieved most easily by generating the global msr file using msr2data as shown above—the parameters can be extracted e.g. like 
       msr2data 8471 8470 _example global data -o globalFit.dat
       
      This will read in the file 8471+global_example.msr, extract for each run all relevant parameters from the msr file as well as from the according data files (if available) and append all of them in columns to the ASCII file globalFit.dat.

      - -

      4.3 The Extended Global Mode

      + +

      4.3 The Extended Global Mode

      If a new global input file is generated, it is also possible to do an automatic pre-analysis for each single run using the specified template first; afterwards the run-specific parameters of these single-run msr files are collected in the global msr file. In special cases this might be useful to obtain a better set of starting values for the parameters, however, in most cases it will not replace the "manual review" of the generated global input file. The option is activated by choosing the keyword global+. For example
       msr2data 8471 8470 _example global+ msr-8472
       
      @@ -305,8 +345,8 @@ msr2data 8471 8470 -OneRunFit_example -o OneRunFits.db

      Please be aware that the program in this mode always generates new single-run msr files and always calls musrfit for them. In case there are already single-run fits present, these cannot be used in conjunction with this option. The program on purpose behaves in this way in order to ensure the file integrity and correct parameter order within these files.

      - -

      5 Known Limitations

        + +

        5 Known Limitations

        • The indexing run number of the msr file has to be at the begin of every filename.
        • Within the data file name the RUN# has the format %0Xu, i.e. X digits with leading zeros, and has to be the rightmost number given in this format in the file name. X has to be at least 4. The highest treatable run number is 232-1 = 4294967295.
        • In order to keep msr2data working properly the msr files should only contain one STATISTIC block at the end of the file and one FITPARAMETER block right after the TITLEmusrfit itself allows to have more creative msr files... @@ -314,11 +354,11 @@ msr2data 8471 8470 -OneRunFit_example -o OneRunFits.db
        • msr2data will write only up to two successive empty lines in newly generated msr files. In case more subsequent empty lines are encountered in a template file, these are not copied! Actually, this measure is not a limitation but has been introduced to keep the msr files in a reasonable shape.

        - -

        6 The Graphical User Interface Provided by musrgui / musredit

        + +

        6 The Graphical User Interface Provided by musrgui / musredit

        musrgui/musredit, editors designed especially for the manipulation of musrfit msr files and graphical front ends to musrfit, offer an almost self-explanatory graphical user interface to msr2data depicted below:
        -msr2data-input-tabs.png
        -
        1–3
        Choose one of the ways to specify your list of runs. +msr2data-input-tabs.png
        +
        1–3
        Choose one of the ways to specify your list of runs.
        4
        Give the file extension here, e.g. _zf for files like 8472_zf.msr. If the files do not have an extension this field stays empty. musrgui / musredit take care of passing the "" to msr2data as mentioned above.
        5
        Activates the fit-<template> option if <template> is entered. In case the option "Chain Fit" is not set the given template will be used for the input-file generation for all runs to be fitted—otherwise the output of the first fit serves as template for the second and so on. The template field stays empty if no fits should be performed!
        6
        Activates the -o<outputFileName> option if <outputFileName> is entered. If nothing is entered the default output file out.db or out.dat is used. @@ -331,99 +371,63 @@ msr2data 8471 8470 -OneRunFit_example -o OneRunFits.db
        13
        If set, the -t option is passed to msr2data.
        14
        If set, msr2data is called with the option msr-<template> (instead of fit-<template>) and hence is only producing the msr input files without any fitting.
        15
        If set, msr2data is called with the option fit, i.e. no template will be used to generate new msr input files; only existing files are fed to musrfit. -
        16
        If set, msr2data is operating in the global mode. +
        16
        If set, msr2data is operating in the global mode.
        17
        If set, msr2data is operating in the extended global mode.

        - -

        7 Bugtracking

        + +

        7 Bugtracking

        -For reporting bugs or requesting new features and improvements please use the Bitbucket Issues, PSI Tracker or send an e-mail to A. Suter. +For reporting bugs or requesting new features and improvements please use the Bitbucket Issues, PSI Tracker or send an e-mail to A. Suter.

        --- BMW & AS
-
- - - - - - - -
- -
- Edit | Attach | Print version | PDF | History: r39 < r38 < r37 < r36 | Backlinks | View wiki text | Refresh | More topic actions -
-
Topic revision: r39 - 16 Aug 2015, AndreasSuter
-
-
-
-
 
-
-
-
- -
-

    -

    -
-
-
-
Ideas, requests, problems regarding PSI Wiki? Send feedback
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
Topic attachments
I Attachment Action Size Date Who Comment
msr2data-input-tabs.pngpng msr2data-input-tabs.png manage 36 K 20 Jul 2011 - 12:13 UnknownUser graphical interface to msr2data
+
+
This topic: MUSR > WebHome > MusrFit > Msr2Data
+Topic revision: 16 Aug 2015, suter_a
-
- - - +
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding PSI Wiki? Send feedback
+
+
+
+

-

-

-

\ No newline at end of file + + + + + + + + + + + \ No newline at end of file diff --git a/doc/html/user/MUSR/MusrFit.html b/doc/html/user/MUSR/MusrFit.html index c44f32da..654045a2 100644 --- a/doc/html/user/MUSR/MusrFit.html +++ b/doc/html/user/MUSR/MusrFit.html @@ -1,35 +1,53 @@ - + - - + + - MUSR :: MusrFit - + MUSR :: MusrFit + + + + + + + - + - - + + + + + + - - - - - - - -
+ + + + + + + + + + + + + + + + + + + +
-
+
-
-
-

-

- - - -

-

-

-

-

-

-
- -

musrfit User Manual

-
    +
    +
    +
    + +

    musrfit User Manual

    + - -

    1 Introduction

    + +

    1 Introduction

    -musrfit is a software tool for analyzing time-differential μSR data. The program suite is free software and licensed under the GNU GPL version 2 or any later version (at your option). It is implemented in C++/ROOT and uses the MINUIT2 libraries developed at CERN for fitting data. Installation instructions for GNU/Linux, MS Windows, and Mac OS X can be found here. For people familiar with the μSR data analysis program WKM there is a short quick start page explaining the major differences between WKM and musrfit. Recent changes of the program are listed in the ChangeLog. +musrfit is a software tool for analyzing time-differential μSR data. The program suite is free software and licensed under the GNU GPL version 2 or any later version (at your option). It is implemented in C++/ROOT and uses the MINUIT2 libraries developed at CERN for fitting data. Installation instructions for GNU/Linux, MS Windows, and Mac OS X can be found here. For people familiar with the μSR data analysis program WKM there is a short quick start page explaining the major differences between WKM and musrfit. Recent changes of the program are listed in the ChangeLog.

    -

    2 Available Executables, Configuration Files and their Basic Usage

    +

    2 Available Executables, Configuration Files and their Basic Usage

    - -

    2.1 musrfit

    + +

    2.1 musrfit

    musrfit is the actual fitting program. It defines the FCN routine passed to MINUIT2 and performs χ2 or log-likelihood fitting. If called from within a shell it accepts several parameters:
    <msr_file>
    filename of the msr input file defining all the details needed for performing a fit to a specified set of data—the only mandatory parameter @@ -189,8 +211,8 @@ If called with a msr input file, e.g.
    musrfit 8472.msr
    the fit described in the input file will be executed and the results will be written to a mlog output file—in the example 8472.mlog. When the fitting has terminated the msr file and the mlog file are swapped, so that the resultant parameter values can be found in the msr file and the mlog file contains a copy of the input file. The format of the mlog file is the same as that of the msr file. For a detailed description of the msr file format refer to the corresponding section.

    - -

    2.2 musrview

    + +

    2.2 musrview

    musrview is an interactive graphical user interface for the presentation of the analyzed data and the corresponding fits. If called from within a shell it accepts the following parameters:
    <msr_file>
    name of the msr input or output file to be displayed—this parameter is mandatory
    --<graphic_format_extension>
    will produce a graphics output file without starting a ROOT session. The filename is based on the name of the <msr_file>, e.g. 8472.msr8472_0.png
    Supported values for <graphic_format_extension> are eps, pdf, gif, jpg, png, svg, xpm, root @@ -206,7 +228,7 @@ for each PLOT block in the the msr file a file 8472_X.jpg is produced whe If called only with a msr file, e.g.
    musrview 8472.msr
    a ROOT canvas is drawn; it contains all experimental data and fits specified in the PLOT block of the msr file. -For a description of the various plotting types refer to the corresponding section. +For a description of the various plotting types refer to the corresponding section.

    Within the drawn canvas all standard actions applicable to ROOT canvases might be performed. In the menu bar the Musrfit menu can be found. From there some musrfit-specific actions might be taken:
    @@ -224,8 +246,8 @@ Additionally, some functions can be accessed using key-shortcuts:
    u
    reset the plotting range to the area given in the msr file ("unzoom")

    - -

    2.3 musrFT NEW

    + +

    2.3 musrFT NEW

    musrFT is an interactive graphical user interface for the presentation of Fourier transforms of raw μSR histograms. It's purpose is to get a quick overview for high TF-field data, as found e.g. at the HAL-9500 instrument at PSI. It Fourier transforms the raw histogram data, i.e. N(t) rather than A(t), and hence shows the lifetime contribution of the muon. This is no problem for large enough fields, but will be a severe problem at very low fields. musrFT is still in its early stage and should be considered a beta-version.

    If called from within a shell it accepts the following parameters:
    @@ -275,11 +297,11 @@ Additionally, some functions can be accessed using key-shortcuts:
    u
    reset the plotting range to the area given in the msr-file or the form the command line ("unzoom")

    - -

    2.4 musrt0

    -musrt0 is a user interface for the determination of t0 and the time windows of data and background needed to be specified in the RUN blocks of the msr file. It can be operated either as an interactive program or in a non-interactive mode. In the non-interactive mode it accepts the following parameters:
    + +

    2.4 musrt0

    +musrt0 is a user interface for the determination of t0 and the time windows of data and background needed to be specified in the RUN blocks of the msr file. It can be operated either as an interactive program or in a non-interactive mode. In the non-interactive mode it accepts the following parameters:
    <msr_file>
    name of an msr file -
    -g, --getT0FromPromptPeak [<firstGoodBinOffset>]
    tries to estimate t0 from the prompt peak (maximum entry) in each histogram and writes the corresponding values to the t0 lines in the RUN blocks of the msr file. If an optional number <firstGoodBinOffset> is given, the lower limit of the data range will be set to t0 + <firstGoodBinOffset>. +
    -g, --getT0FromPromptPeak [<firstGoodBinOffset>]
    tries to estimate t0 from the prompt peak (maximum entry) in each histogram and writes the corresponding values to the t0 lines in the RUN blocks of the msr file. If an optional number <firstGoodBinOffset> is given, the lower limit of the data range will be set to t0 + <firstGoodBinOffset>.
    --timeout <timeout>
    <timeout> given in seconds after which musrview terminates. If <timeout> <= 0, no timeout will take place. Default for <timeout> is 0.
    --help
    displays a small help notice in the shell explaining the basic usage of the program
    --version
    prints the version number of musrt0 @@ -287,8 +309,8 @@ Additionally, some functions can be accessed using key-shortcuts:

    The interactive mode of musrt0 is started if the program is called with a sole msr-file argument, e.g.
    musrt0 8472.msr
    -Then a ROOT canvas depicting the histogram of the data set mentioned first in the RUN block is drawn in different colors:
    -musrt0
    +Then a ROOT canvas depicting the histogram of the data set mentioned first in the RUN block is drawn in different colors:
    +musrt0
    The colors of the data points represent the choice of the time windows of data (blue) and background (red), as well as t0 (green line). In order to change these ranges the mouse cross-hair is moved to a channel of choice and one of the following keys is pressed:
    q
    close the currently open histogram and opens the next (see also below)
    Q
    quit musrt0 without writing into the msr file @@ -306,11 +328,11 @@ When all channels have been set correctly for the first histogram, pressing of t Using the key Q, musrt0 can be interrupted. No changes to the msr file are applied in this case.
    Closing a window by clicking the X button is equivalent to pressing Q, i.e. musrt0 is simply terminated.

    - -

    2.5 musrfit_startup.xml

    + +

    2.5 musrfit_startup.xml

    musrfit_startup.xml is a configuration file located at the musrfit binary path. In this file the following XML tags are allowed to define settings:
    <data_path>PATH_TO_DATA</data_path>
    add the new path PATH_TO_DATA where musrfit and musrview will search for data files -
    <write_per_run_block_chisq>y/n</write_per_run_block_chisq>
    if enabled χ2 for each RUN block will be written to the STATISTIC block of the resulting msr file. Additionally, in case a χ2 single-histogram fit is done, also Pearson's χ2 will be added. +
    <write_per_run_block_chisq>y/n</write_per_run_block_chisq>
    if enabled χ2 for each RUN block will be written to the STATISTIC block of the resulting msr file. Additionally, in case a χ2 single-histogram fit is done, also Pearson's χ2 will be added.
    <fourier_settings></fourier_settings>
    set the default parameters for the Fourier transform in musrview. For further details refer to the description of the msr file.
    <units>UNITS</units>
    specify the units of the frequency or field-domain. Valid units are Gauss, MHz and Mc/s (inside a <fourier_settings> environment)
    <fourier_power>n</fourier_power>
    specify the number of points 2n (n < 21) to be used for the Fourier transform (inside a <fourier_settings> environment) @@ -362,8 +384,8 @@ An example would look like: </musrfit>

    - -

    2.6 msr2msr

    + +

    2.6 msr2msr

    msr2msr is a small utility for converting existing WKM msr files into musrfit msr files. It accepts the following parameters:
    <msr_file_in>
    input WKM msr file (mandatory first parameter)
    <msr_file_out>
    converted output musrfit msr file (mandatory second parameter) @@ -374,8 +396,8 @@ A typical example then looks like:
    msr2msr 8472-WKM.msr 8472-musrfit.msr
    If the input file has already the musrfit msr file structure, the output file will be just a copy of the input file.

    - -

    2.7 any2many

    + +

    2.7 any2many

    any2many is a muSR data file converter. Currently different facilities (PSI, TRIUMF, ISIS, J-PARC) are saving their muSR data files in different formats, or even worse some instruments are using other muSR data formats than others. The aim of any2many is that these files can be converted into each other. Of course only a subset of header information can be converted.

    Currently any2many can convert the following muSR data file formats:
      @@ -389,7 +411,7 @@ Since the goal was to create a very flexible converter tool, it has ample of opt
    -r <runList-input>
    where <runList-input> is a list of run numbers separated by spaces of the form: <run1> <run2> <run3> etc., or a sequence of runs <runStart>-<runEnd>, e.g. 111-123. This option cannot be combined with -f and vice versa.
    -t <in-template> <out-template>
    where <in-/out-template> are templates to generate real file names from run numbers. The following template tags can be used: [yy] for year, and [rrrr] for the run number. If the run number tag is used, the number of 'r' will give the number of digits used with leading zeros, e.g. [rrrrrr] and run 123 will result in 000123. Similarly [yyyy] will result in something like 1999, whereas [yy] into something like 99. For more details best check the examples below.
    -c <in-Format> <out-Format>
    this is used to tell any2many what is the input-file-format and into which output-file-format the data shall be converted. The possible input-/output-file-formats are listed above. -
    -h <histo-group-list>
    This option is for MusrRoot input files only! Select the the histo groups to be exported. <histo-group-list> is a space separated list of the histo group, e.g. -h 0, 20 will try to export the histo 0 (NPP) and 20 (PPC). A histo-group is defined via the RedGreen offset in the MusrRoot file format. It is used e.g. in red/green mode measurements. If this option is omitted in a conversion from MusrRoot to something, the first group will exported only! +
    -h
    This option is for MusrRoot input files only! Select the the histo groups to be exported. is a space separated list of the histo group, e.g. -h 0, 20 will try to export the histo 0 (NPP) and 20 (PPC). A histo-group is defined via the RedGreen offset in the MusrRoot file format. It is used e.g. in red/green mode measurements. If this option is omitted in a conversion from MusrRoot to something, the first group will exported only!
    -p <output-path>
    where <output-path> is the output path for the converted files. If no <output-path> is given, the current directory will be used, unless the option -s is used.
    -y <year>
    here a <year> in the form yy or yyyy can be given. If this is the case, any automatic file name generation which needs a year will use this given one.
    -s
    with this option the output data file will be sent to the stdout. It is intended to be used together with web applications. @@ -409,38 +431,38 @@ Will take the LEM ROOT file '2010/lem10_his_0123.root' rebin it by
    any2many -f 2010/lem10_his_0123.root -c ROOT NEXUS2-HDF5 -o 2010/lem10_his_0123_v2.nxs
    Will take the LEM ROOT file '2010/lem10_his_0123.root' and convert it to NeXus IDF V2. The output file name will be lem10_his_0123_v2.nxs, and will be saved in the current directory.

    -
    any2many -r 123 137 -c PSI-BIN MUD -t d[yyyy]/deltat_tdc_gps_[rrrr].bin [rrrrrr].msr -y 2001
    +
    any2many -r 123 137 -c PSI-BIN MUD -t d[yyyy]/deltat_tdc_gps_[rrrr].bin [rrrrrr].msr -y 2001
    Will take the run 123 and 137, will generate the input file names: d2001/deltat_tdc_gps_0123.bin and d2001/deltat_tdc_gps_0137.bin, read these files, and convert them to the output files with names 000123.msr and 000137.msr, respectively.

    -
    any2many -r 100-117 -c PSI-MDU ASCII -t d[yyyy]/deltat_tdc_alc_[rrrr].mdu [rrr].ascii -y 2011 -s
    +
    any2many -r 100-117 -c PSI-MDU ASCII -t d[yyyy]/deltat_tdc_alc_[rrrr].mdu [rrr].ascii -y 2011 -s
    Will take the runs 100 through 117 and convert the PSI-MDU input files to ASCII output and instead of saving them into a file, they will be spit to the standard output.

    -
    any2many -r 100-117 -c NEXUS ROOT -t d[yyyy]/psi_gps_[rrrr].NXS psi_[yyyy]_gps_[rrrr].root -z b psi_gps_run_100to117
    +
    any2many -r 100-117 -c NEXUS ROOT -t d[yyyy]/psi_gps_[rrrr].NXS psi_[yyyy]_gps_[rrrr].root -z b psi_gps_run_100to117
    Will take the runs 100 through 117 and convert the NeXus input files to ROOT output. Afterwards these new files will be collected in a compressed archive psi_gps_run_100to117.tar.bz2.

    any2many -f 2010/lem10_his_0123.root 2010/lem10_his_0012.root -c ROOT ROOT -rebin 25
    Will read the two files '2010/lem10_his_0123.root' and '2010/lem10_his_0012.root', rebin them with 25 and export them as LEM ROOT files with adding rebin25 to the name, e.g. 2010/lem10_his_0123_rebin25.root.

    - -

    2.8 dump_header

    + +

    2.8 dump_header

    dump_header is a little program which tries to read a μSR data file and sends the relevant information (required header info, start of the histos, etc.) to the standard output. Currently the following μSR data file formats are supported: MusrROOT, ROOT (old LEM format), PSI-BIN, PSI-MDU, NeXus (IDF1 and IDF2), MUD, and WKM.

    - -

    3 Auxiliary Programs

    + +

    3 Auxiliary Programs

    Additionally to the programs mentioned above editor front ends called musrgui/musredit and another tool named msr2data are available. The purpose of msr2data is to process multiple msr files with the same parameters and to summarize the fitting results either in a DB or a column ASCII file. Also, new msr files can be generated from a template. For details refer to its manual.

    Before going to use musrgui / musredit it is strongly recommended to read this manual first!

    - -

    4 Description of the msr File Format

    + +

    4 Description of the msr File Format

    The programs are using an input file to control their action. This input file has the extension .msr (msr file). The msr file is built up from different blocks. Each block starts with a keyword and is—with the exception of the title—terminated by an empty line. Comments start with the character #. The various input blocks are described below.

    - -

    4.1 The Title

    + +

    4.1 The Title

    The first line of the msr file is the title line. Unlike all the other input blocks, it does not start with a block keyword. It is just a simple text line, in which any information can be placed. The title text will be used in the graphical representation of the data as a headline.

    - -

    4.2 The FITPARAMETER Block

    + +

    4.2 The FITPARAMETER Block

    The FITPARAMETER block is used to define the fit parameters in a MINUIT typical style. There are various possible parameter definitions which are listed here:
    @@ -448,7 +470,7 @@ are various possible parameter definitions which are listed here:
        2. <no> <name> <value> <step> <lower_boundary> <upper_boundary>
        3. <no> <name> <value> <step> <pos_error> <lower_boundary> <upper_boundary>
     
    -where <no> is the parameter number, <name> is the parameter name (1), <value> is the initial guess of the parameter, <step> the inital step width, <lower/upper_boundary> is the lower/upper boundary for the parameter (2). +where <no> is the parameter number, <name> is the parameter name (1), <value> is the initial guess of the parameter, <step> the inital step width, <lower/upper_boundary> is the lower/upper boundary for the parameter (2).

    In the output file, <value> will be the MINUIT fit value, <step> will contain the error estimate (or the negative error estimate if MINOS was successfully used), <pos_error> will have the value none if MINOS has not been used, otherwise it will show the positive error estimate.

    @@ -485,27 +507,27 @@ There is also the possibility to constrain the parameters to semi-defined interv

    Notes

    - 1 : a standard string without whitespace + 1 : a standard string without whitespace

    - 2 : According to the MINUIT manual this should be avoided whenever possible! + 2 : According to the MINUIT manual this should be avoided whenever possible!


    - -

    4.3 The THEORY Block

    + +

    4.3 The THEORY Block

    The THEORY block is used to define the fit function. There is a set of predefined functions available. It is also possible to use externally defined functions. How to use them will be explained afterwards, here only the predefined functions are described.

    - - + +
    - - - - - + + + + + @@ -544,119 +566,119 @@ The THEORY block is used to define the fit function. There is a set of predefine - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -689,7 +711,7 @@ The THEORY block is used to define the fit function. There is a set of predefine
    name abbreviation parameters mathematical expression reference name abbreviation parameters mathematical expression reference
    stg \sigma\,(\mu\text{s}^{-1}) \frac{1}{3} + \frac{2}{3} \left[1-(\sigma t)^2\right] \exp\left[-\frac{1}{2}\left(\sigma t\right)^2\right] dead! dead!
    statGssKTLF sgktlf \nu\,(\mathrm{MHz}), \sigma\,(\mu\text{s}^{-1}) G_{\mathrm{G,LF}}(t) \equiv 1-\frac{2\sigma^2}{(2\pi\nu)^2}\left[1-\exp\left(-\frac{1}{2}\sigma^2t^2\right)\cos(2\pi\nu t)\right]+\frac{2\sigma^4}{(2\pi\nu)^3}\int^t_0 \exp\left(-\frac{1}{2}\sigma^2\tau^2\right)\sin(2\pi\nu\tau)\mathrm{d}\tau (4) (4)
    dynGssKTLF dgktlf \nu\,(\mathrm{MHz}), \sigma\,(\mu\text{s}^{-1}), \Gamma\,(\mathrm{MHz}) \frac{1}{2\pi \imath}\int_{\gamma-\imath\infty}^{\gamma+\imath\infty} \frac{f_{\mathrm{G}}(s+\Gamma)}{1-\Gamma f_{\mathrm{G}}(s+\Gamma)} \exp(s t) \mathrm{d}s,\mathrm{where}\,f_{\mathrm{G}}(s)\equiv \int_0^{\infty}G_{\mathrm{G,LF}}(t)\exp(-s t) \mathrm{d}t (5) (5)
    statExpKT sekt \lambda\,(\mu\text{s}^{-1}) \frac{1}{3} + \frac{2}{3} \left[1-\lambda t\right] \exp\left(-\lambda t\right) (6) (6)
    statExpKTLF sektlf \nu\,(\mathrm{MHz}), a\,(\mu\text{s}^{-1}) 1-\frac{a}{2\pi\nu}j_1(2\pi\nu t)\exp\left(-at\right)-\left(\frac{a}{2\pi\nu}\right)^2 \left[j_0(2\pi\nu t)\exp\left(-at\right)-1\right]-a\left[1+\left(\frac{a}{2\pi\nu}\right)^2\right]\int^t_0 \exp\left(-a\tau\right)j_0(2\pi\nu\tau)\mathrm{d}\tau \equiv G_{\mathrm{L,LF}}(t) (7) (7)
    dynExpKTLF dektlf \nu\,(\mathrm{MHz}), a\,(\mu\text{s}^{-1}), \Gamma\,(\mathrm{MHz}) \frac{1}{2\pi \imath}\int_{\gamma-\imath\infty}^{\gamma+\imath\infty} \frac{f_{\mathrm{L}}(s+\Gamma)}{1-\Gamma f_{\mathrm{L}}(s+\Gamma)} \exp(s t) \mathrm{d}s,\mathrm{where}\,f_{\mathrm{L}}(s)\equiv \int_0^{\infty}G_{\mathrm{L,LF}}(t)\exp(-s t) \mathrm{d}t (8) (8)
    combiLGKT lgkt \lambda\,(\mu\text{s}^{-1}), \sigma\,(\mu\text{s}^{-1}) \frac{1}{3}+\frac{2}{3}\left(1-\sigma^2 t^2-\lambda t\right)\exp\left(-\frac{\sigma^2t^2}{2}-\lambda t\right) dead! dead!
    strKT skt \sigma\,(\mu\text{s}^{-1}), \beta\,(1) \frac{1}{3}+\frac{2}{3}\left[1-(\sigma t)^\beta\right] \exp\left[-(\sigma t)^\beta / \beta \right] (9) (9)
    spinGlass spg \lambda\,(\mu\text{s}^{-1}), \gamma\,(\mu\text{s}^{-1}), q\,(1) \frac{1}{3}\exp\left(-\sqrt{\frac{4\lambda^2(1-q)t}{\gamma}}\right)+\frac{2}{3}\left(1-\frac{q\lambda^2t^2}{\sqrt{\frac{4\lambda^2(1-q)t}{\gamma}+q\lambda^2t^2}}\right)\exp\left(-\sqrt{\frac{4\lambda^2(1-q)t}{\gamma}+q\lambda^2t^2}\right) dead! dead!
    rdAnisoHf rahf \nu\,(\mathrm{MHz}), \lambda\,(\mu\text{s}^{-1}) \frac{1}{6}\left(1-\frac{\nu t}{2}\right)\exp\left(-\frac{\nu t}{2}\right)+\frac{1}{3}\left(1-\frac{\nu t}{4}\right)\exp\left(-\frac{\nu t + 2.44949\lambda t}{4}\right) (9) (9)
    TFieldCos tf \varphi\,(^{\circ}), \nu\,(\mathrm{MHz}) \cos\left(2\pi\nu t+\frac{\pi\varphi}{180}\right) dead! dead!
    internFld if \alpha\,(1), \varphi\,(^{\circ}), \nu\,(\mathrm{MHz}), \lambda_{\mathrm{T}}\,(\mu\text{s}^{-1}), \lambda_{\mathrm{L}}\,(\mu\text{s}^{-1}) \alpha\,\cos\left(2\pi\nu t+\frac{\pi\varphi}{180}\right)\exp\left(-\lambda_{\mathrm{T}}t\right)+(1-\alpha)\,\exp\left(-\lambda_{\mathrm{L}}t\right) dead! dead!
    Bessel b \varphi\,(^{\circ}), \nu\,(\mathrm{MHz}) j_0\left(2\pi\nu t+\frac{\pi\varphi}{180}\right) dead! dead!
    internBsl ib \alpha\,(1), \varphi\,(^{\circ}), \nu\,(\mathrm{MHz}), \lambda_{\mathrm{T}}\,(\mu\text{s}^{-1}), \lambda_{\mathrm{L}}\,(\mu\text{s}^{-1}) \alpha\,j_0\left(2\pi\nu t+\frac{\pi\varphi}{180}\right)\exp\left(-\lambda_{\mathrm{T}}t\right)+(1-\alpha)\,\exp\left(-\lambda_{\mathrm{L}}t\right) dead! dead!
    abragam ab \sigma\,(\mu\text{s}^{-1}), \gamma\,(\mathrm{MHz}) \exp\left[-\frac{\sigma^2}{\gamma^2}\left(e^{-\gamma t}-1+\gamma t\right)\right] dead! dead!
    skewedGss skg \varphi\,(^{\circ}), \nu\,(\mathrm{MHz}), \sigma_{-}\,(\mu\text{s}^{-1}), \sigma_{+}\,(\mu\text{s}^{-1}) \frac{\sigma_{-}}{\sigma_{+}+\sigma_{-}}\exp\left[-\frac{\sigma_{-}^2t^2}{2}\right]\left\lbrace\cos\left(2\pi\nu t+\frac{\pi\varphi}{180}\right)+\sin\left(2\pi\nu t+\frac{\pi\varphi}{180}\right)\mathrm{Erfi}\left(\frac{\sigma_{-}t}{\sqrt{2}}\right)\right\rbrace+ \frac{\sigma_{+}}{\sigma_{+}+\sigma_{-}}\exp\left[-\frac{\sigma_{+}^2t^2}{2}\right]\left\lbrace\cos\left(2\pi\nu t+\frac{\pi\varphi}{180}\right)-\sin\left(2\pi\nu t+\frac{\pi\varphi}{180}\right)\mathrm{Erfi}\left(\frac{\sigma_{+}t}{\sqrt{2}}\right)\right\rbrace memo pdf memo pdf
    staticNKZF snkzf \Delta_0\,(\mu\text{s}^{-1}), R_b = \Delta_{\mathrm{GbG}}/\Delta_0 \,(\text{1}) \frac{1}{3}+\frac{2}{3}\left(\frac{1}{1+R_b^2\Delta_0^2 t^2}\right)^{3/2} \left(1-\frac{\Delta_0^2 t^2}{1+R_b^2\Delta_0^2 t^2}\right)\,\exp\left[-\frac{\Delta_0^2 t^2}{2(1+R_b^2\Delta_0^2 t^2)}\right] (10) (10)
    staticNKTF

    -Every theory function has to be written on a single line. It starts with the theory function name or its abbreviation followed by the parameters. Consecutive lines of theory functions will be multiplied. If theory functions need to be added, a line with a + has to separate them. The parameters are given as the numbers assigned to them in the FITPARAMETER block. The order of the parameters is given in the table above. As an example +Every theory function has to be written on a single line. It starts with the theory function name or its abbreviation followed by the parameters. Consecutive lines of theory functions will be multiplied. If theory functions need to be added, a line with a + has to separate them. The parameters are given as the numbers assigned to them in the FITPARAMETER block. The order of the parameters is given in the table above. As an example
        simplExpo 4
     
    @@ -709,26 +731,26 @@ which means A(t) = p2 e-p3

    Notes

    - 4 : R. S. Hayano et al., Phys. Rev. B 20 (1979) 850 + 4 : R. S. Hayano et al., Phys. Rev. B 20 (1979) 850

    - 5 : R. S. Hayano et al., Phys. Rev. B 20 (1979) 850; P. Dalmas de Réotier and A. Yaouanc, J. Phys.: Condens. Matter 4 (1992) 4533; A. Keren, Phys. Rev. B 50 (1994) 10039 + 5 : R. S. Hayano et al., Phys. Rev. B 20 (1979) 850; P. Dalmas de Réotier and A. Yaouanc, J. Phys.: Condens. Matter 4 (1992) 4533; A. Keren, Phys. Rev. B 50 (1994) 10039

    - 6 , 7 : Y. J. Uemura et al., Phys. Rev. B 31 (1985) 546 + 6 , 7 : Y. J. Uemura et al., Phys. Rev. B 31 (1985) 546

    - 8 : R. S. Hayano et al., Phys. Rev. B 20 (1979) 850; P. Dalmas de Réotier and A. Yaouanc, J. Phys.: Condens. Matter 4 (1992) 4533 + 8 : R. S. Hayano et al., Phys. Rev. B 20 (1979) 850; P. Dalmas de Réotier and A. Yaouanc, J. Phys.: Condens. Matter 4 (1992) 4533

    - 9 : M.R. Crook and R. Cywinski, J. Phys.: Condens. Matter 9 (1997) 1149 + 9 : M.R. Crook and R. Cywinski, J. Phys.: Condens. Matter 9 (1997) 1149

    - 9 : R. E. Turner and D. R. Harshman, Phys. Rev. B 34 (1986) 4467 + 9 : R. E. Turner and D. R. Harshman, Phys. Rev. B 34 (1986) 4467

    - 10 : D.R. Noakes and G.M. Kalvius, Phys. Rev. B 56 (1997) 2352; A. Yaouanc and P. Dalmas de Réotier "Muon Spin Rotation, Relaxation, and Resonance" Oxford Scientific Publication; simplifying the original formulae by eliminating \Delta_{\rm eff} via the identity \Delta_{\rm eff}^2 = (1+R_b^2) \Delta_0 + 10 : D.R. Noakes and G.M. Kalvius, Phys. Rev. B 56 (1997) 2352; A. Yaouanc and P. Dalmas de Réotier "Muon Spin Rotation, Relaxation, and Resonance" Oxford Scientific Publication; simplifying the original formulae by eliminating \Delta_{\rm eff} via the identity \Delta_{\rm eff}^2 = (1+R_b^2) \Delta_0


    - -

    4.3.1 Maps

    + +

    4.3.1 Maps

    In case different runs are fitted simultaneously, it is very often necessary that for a given theory function, some parameters are run-dependent. An example could be a temperature scan, where the parameters (asymmetry, depolarization rates, etc.) will depend on the temperature. In order to handle such situations, a mapping of parameters in the THEORY block is possible. That means, instead of a parameter number, the mapping of the parameter is given. The definition of the mapping block is part of the RUN block and will be described there. For example
        THEORY
    @@ -741,13 +763,13 @@ In case different runs are fitted simultaneously, it is very often necessary tha
     
    means that the first part of this theory function is common to all runs, as for instance the background, and the second part is changing from run to run, i.e. map1/2 will point to different parameters depending on the run.

    - -

    4.3.2 Functions

    -Yet another useful feature is the possibility to define functions in the FUNCTIONS block. Within the THEORY block these functions can be addressed as funα, where α is the function number, e.g. fun2. + +

    4.3.2 Functions

    +Yet another useful feature is the possibility to define functions in the FUNCTIONS block. Within the THEORY block these functions can be addressed as funα, where α is the function number, e.g. fun2.

    - -

    4.3.3 User Functions

    -In the case complicated and not predefined functions are needed to fit data, musrfit offers the possibility to implement external functions and introduce them to musrfit through the ROOT dictionary mechanism. The detailed rules these user-defined functions have to obey will be discussed in the according section. Here only the syntax for the msr file is provided. + +

    4.3.3 User Functions

    +In the case complicated and not predefined functions are needed to fit data, musrfit offers the possibility to implement external functions and introduce them to musrfit through the ROOT dictionary mechanism. The detailed rules these user-defined functions have to obey will be discussed in the according section. Here only the syntax for the msr file is provided. To call a user function in the THEORY block the keyword userFcn is used. It is followed by the name of the shared library which holds the C++ class where the function is implemented and the name of the class. Finally, all parameters are given in the order needed by the class. Of course it is also possible to use mapped parameters or functions instead of specifying the parameters directly.

    A THEORY block including a user function may then look like @@ -759,9 +781,9 @@ A THEORY block including a user function may then look like ...

    - -

    4.4 The FUNCTIONS Block

    -musrfit utilizes a powerful parser. Therefore, it is possible to define even rather complicated functional relations between the fit parameters and use these in the THEORY block (and in one exceptional case also in the RUN-block). Supported is the use of basic arithmetics:
    + +

    4.4 The FUNCTIONS Block

    +musrfit utilizes a powerful parser. Therefore, it is possible to define even rather complicated functional relations between the fit parameters and use these in the THEORY block (and in one exceptional case also in the RUN-block). Supported is the use of basic arithmetics:
    +
    Addition
    -
    Subtraction
    *
    Multiplication @@ -809,8 +831,8 @@ It follows an example to illustrate the usage of functions in the THEORY block.

    In the case that functions have to be fitted which cannot be defined in the FUNCTIONS block, the functions can be implemented externally and made usable through the userFunc mechanism.

    - -

    4.5 The GLOBAL Block

    + +

    4.5 The GLOBAL Block

    The GLOBAL block is used to collect data which otherwise need to be specified in every single run entry of the RUN block. Therefore, this block is only present to potential shorten the msr-file and to ease the handling for the user. The logic will by like that:
    1. check it the property is found in the RUN block. @@ -826,15 +848,26 @@ The currently supported GLOBAL block entries are:
      • t0
      • addt0
      • fit -
      • packing +
      • rrf_freq (for fittype 1, 3) +
      • rrf_packing (for fittype 1, 3) +
      • rrf_phase (for fittype 1, 3) +
      • packing (for fittype 0, 2, 4)

      -For a detailed discussion of these entries see Sec RUN block. +For a detailed discussion of these entries see Sec RUN block.

      -There is one specific entry for the GLOBAL block which is
        -
      • time_base <tag> -
      -with the recognized tags: <tag> = usec, msec, sec. This will set the time base (not the time resolution) for fitting, plotting, and exporting data. +The single histo RRF fit and asymmetry RRF fit related entries (fittype 1 and 3 only) have the following syntax: +

      +
      rrf_freq
      Defines the RRF frequency. The exact syntax is rrf_freq <value> <unit> where <value> is the value, and <unit> can be MHz, Mc, and T. An example:
      +rrf_freq 7.2 T
      +
      +
      rrf_packing
      for fittype 1 and fittype 3 rather than giving packing, rrf_packing <pack> has to be provided, e.g.
      +rrf_packing 150
      +
      +
      rrf_phase
      an optional additional RRF phase can be provided (if not provided, the RRF phase will be 0.0). Syntax: rrf_phase <phase>, where the value <phase> is given in degree. Example:
      +rrf_phase 45
      +
      +

      An example snippet with, and without GLOBAL section: With GLOBAL block: @@ -897,18 +930,18 @@ fittype 0 (single histogram fit) ... and many more detectors here ...

      - -

      4.6 The RUN Block

      + +

      4.6 The RUN Block

      The RUN block is used to collect the data needed for a particular run to be fitted. This includes the run name, fit type, data format, etc. The RUN block is slightly differently organized than the other blocks. The information is collected via labels followed by the information. Each run to be fitted has its own RUN block. A RUN block starts with a run-file line which has the structure
          RUN <run_file_name> <beamline> <facility> <file_format>
       

      - +
      - - + + @@ -932,10 +965,10 @@ The RUN block is used to collect the data needed for a particular run to be fitt

      The tokens following the RUN statement are used to identify the run, the potential location where the run might be found, and the file format in which the run data has been saved. In order to understand the meaning of all the above tokens, a short digression is needed.

      - + Where is musrfit looking for data files? There is a specific order how this is done:
      1. Check if the file is found in the current directory -
      2. Check if the path (or multiple paths) was (were) given in the XML startup file. +
      3. Check if the path (or multiple paths) was (were) given in the XML startup file.
      4. Check if there is a system variable MUSRFULLDATAPATH. This system variable can contain multiple search paths separated by colons, e.g.
         export MUSRFULLDATAPATH=/mnt/data/nemu/wkm/:/mnt/data/nemu/his/:/afs/psi.ch/user/s/smith/
         
        @@ -959,8 +992,8 @@ RUN beautiful-data MUE4 PSI DB After this short digression back to the RUN-block description.

        In order to describe the operations needed for fitting and plotting, quite some information are needed. These information are following the RUN statement and are listed below. Depending on the fit type these information vary and hence it is indicated for which fit/plot type the information is applicable. -
        -
        ADDRUN <run_file_name> <beamline> <facility> <file_format> (optional)
        If an ADDRUN is just following after a RUN statement, these runs will be added. More than one ADDRUN statements are possible, i.e. adding up as many runs as wished. It is also possible to add runs with different file formats. If the t0's are given in the data files, the ADDRUN statement is all what is needed, otherwise just add the t0's with the addt0 statement.
        +
        +
        ADDRUN <run_file_name> <beamline> <facility> <file_format> (optional)
        If an ADDRUN is just following after a RUN statement, these runs will be added. More than one ADDRUN statements are possible, i.e. adding up as many runs as wished. It is also possible to add runs with different file formats. If the t0's are given in the data files, the ADDRUN statement is all what is needed, otherwise just add the t0's with the addt0 statement.
        For a 'Single Histogram Fit' or a 'MuMinus Fit' it will be
         addt0 t0AddRun1
        @@ -970,40 +1003,51 @@ etc.
         addt0 t0AddRun1Forward t0AddRun1Backward
         addt0 t0AddRun2Forward t0AddRun2Backward
         etc.
        -
        How will the background and data ranges be handled in this situation? First, the ADDRUN's will be shifted in time such that all the t0's have the same channel/bin number. Subsequently, the runs will be added. The background/data range is applied to this summed up new histogram. ADDRUN is not available for the fit type 'Non-μSR Fit' (sorry no ). + How will the background and data ranges be handled in this situation? First, the ADDRUN's will be shifted in time such that all the t0's have the same channel/bin number. Subsequently, the runs will be added. The background/data range is applied to this summed up new histogram. ADDRUN is not available for the fit type 'Non-μSR Fit' (sorry no ).

        -
        -
        fittype (required)
        This tag is used to indicate which type of fit is wished. The supported fit types are:
        +
        +
        fittype (required if not already defined in the GLOBAL block)
        This tag is used to indicate which type of fit is wished. The supported fit types are:
        0
        Single Histogram Fit +
        1
        Single Histogram RRF Fit (only for online analysis(l) )
        2
        Asymmetry Fit +
        3
        Asymmetry RRF Fit (only for online analysis. See comment added for Single Histogram RRF Fit)
        4
        MuMinus Fit. This is a single histogram fit especially for negative muon μSR
        8
        Non-μSR Fit

        - The description of these fit types can be found in the corresponding section. + The description of these fit types can be found in the corresponding section. + Example:
        +fittype 0
        +

        -
        alpha, beta (fit types 2)
        These parameters are used to correct the asymmetry for different detector efficiencies, solid angles and initial asymmetries. They are defined as α≡N0,b/N0,f and β≡|A0,b/A0,f|. If the parameters are not specified in the RUN block, for each one the value of 1 is assumed. +
        alpha, beta (fit types 2)
        These parameters are used to correct the asymmetry for different detector efficiencies, solid angles and initial asymmetries. They are defined as α≡N0,b/N0,f and β≡|A0,b/A0,f|. If the parameters are not specified in the RUN block, for each one the value of 1 is assumed. Example for alpha is fit parameter number 1:
        +alpha           1
        +

        -
        -
        norm (fit type 0)
        Number of the fit parameter that represents the normalization constant N0 of the histogram; the value of this parameter is given either per nanosecond or per bin (see below). It is possible to substitute the parameter number by a function here (and only here in a RUN block), for instance to relate N0s of different histograms through an α parameter. +
        +
        norm (fit type 0)
        Number of the fit parameter that represents the normalization constant N0 of the histogram; the value of this parameter is given either per nanosecond or per bin (see below). It is possible to substitute the parameter number by a function here (and only here in a RUN block), for instance to relate N0s of different histograms through an α parameter. Example for a norm defined by fit parameter number 12:
        +norm            12
        +
        Example for a norm defined in function number 3:
        +norm            fun3
        +

        -
        backgr.fit (fit type 0)
        Parameter number specifying the constant background in a histogram. Its value is given either per nanosecond or per bin (see below). If this keyword is present, any information on a background line are ignored. +
        backgr.fit (fit type 0)
        Parameter number specifying the constant background in a histogram. Its value is given either per nanosecond or per bin (see below). If this keyword is present, any information on a background line are ignored.

        lifetime (fit type 0)
        Fit parameter representing the lifetime of the muon. If it is not specified the value τμ=2.197019 μs is used in the calculations.

        -
        lifetimecorrection (fit type 0) eek! obsolete eek!
        Does not accept any arguments. If present, the output in musrview is corrected for the exponential decay of the muon. This item is obsolete in the RUN block and will be transferred to the PLOT block, which allows switching between histogram view and asymmetry view much quicker. +
        lifetimecorrection (fit type 0) eek! obsolete eek!
        Does not accept any arguments. If present, the output in musrview is corrected for the exponential decay of the muon. This item is obsolete in the RUN block and will be transferred to the PLOT block, which allows switching between histogram view and asymmetry view much quicker.

        -
        map
        On this line the mapping of run-dependent parameters is done. Parameter numbers given here may be accessed through map1, map2, etc. in the THEORY and FUNCTIONS blocks (see also here). The first ten maps are always present and have the value 0 if not used; however, the total number of maps is not restricted! +
        map
        On this line the mapping of run-dependent parameters is done. Parameter numbers given here may be accessed through map1, map2, etc. in the THEORY and FUNCTIONS blocks (see also here). The first ten maps are always present and have the value 0 if not used; however, the total number of maps is not restricted!

        -
        -
        forward (fit type 0, 4)
        Number of the histogram in the data file to be processed. If histograms shall be grouped, all the numbers which shall be grouped. Examples:
        + 
        +
        forward (fit type 0, 1, 4)
        Number of the histogram in the data file to be processed. If histograms shall be grouped, all the numbers which shall be grouped. Examples:
           forward 3       # no grouping, take histogram number 3
           forward 1 2     # group histogram number 1 and 2
           forward 1-10 12 # group histograms with numbers from 1 to 10 and additionally histogram 12 
        @@ -1023,24 +1067,32 @@ etc.
         

        -
        backgr.fix (fit types 0, 2)
        A fixed constant background in counts per nanosecond or per bin (see below) may be given at this point. The background is specified for all histograms in the order Bf Bb [Br Bl]. If this keyword is present, any information on a background line is ignored. +
        backgr.fix (fit types 0, 1, 2)
        A fixed constant background in counts per nanosecond or per bin (see below) may be given at this point. The background is specified for all histograms in the order Bf Bb [Br Bl]. If this keyword is present, any information on a background line is ignored.

        -
        background (fit type 0)
        The numbers of the first and the last channel of an interval from which the constant background should be calculated are specified here. In case histograms are being grouped, the specified channels are interpreted with respect to the first histogram. +
        background (fit type 0, 1)
        The numbers of the first and the last channel of an interval from which the constant background should be calculated are specified here. In case histograms are being grouped, the specified channels are interpreted with respect to the first histogram. Example:
        +background      100     18000
        +

        -
        background (fit types 2)
        The numbers of the first and the last channel of an interval from which the constant background should be calculated are specified here. For all the histograms this is done together in the following order: kf,first kf,last kb,first kb,last [kr,first kr,last kl,first kl,last]. In case histograms are being grouped, the specified channels are interpreted with respect to the first histograms. +
        background (fit types 2)
        The numbers of the first and the last channel of an interval from which the constant background should be calculated are specified here. For all the histograms this is done together in the following order: kf,first kf,last kb,first kb,last [kr,first kr,last kl,first kl,last]. In case histograms are being grouped, the specified channels are interpreted with respect to the first histograms. Example:
        +background      61      184     57      145     
        +

        -
        -
        data (fit type 0, 4)
        The numbers of the first and the last channel of an interval from which the data is taken are specified here. In case histograms are being grouped, the specified channels are interpreted with respect to the first histogram. Typically these channels are referred to as first good bin / last good bin (fgb/lgb). +
        +
        data (fit type 0, 1, 4)
        The numbers of the first and the last channel of an interval from which the data is taken are specified here. In case histograms are being grouped, the specified channels are interpreted with respect to the first histogram. Typically these channels are referred to as first good bin / last good bin (fgb/lgb). Example:
        +data            165     7965    
        +

        -
        data (fit types 2)
        The numbers of the first and the last channel of an interval from which the data is taken are specified here. Typically these channels are referred to as first good bin / last good bin (fgb/lgb). For all the histograms this is done together in the following order: kf,first kf,last kb,first kb,last [kr,first kr,last kl,first kl,last]. In case histograms are being grouped, the specified channels are interpreted with respect to the first histograms. +
        data (fit types 2)
        The numbers of the first and the last channel of an interval from which the data is taken are specified here. Typically these channels are referred to as first good bin / last good bin (fgb/lgb). For all the histograms this is done together in the following order: kf,first kf,last kb,first kb,last [kr,first kr,last kl,first kl,last]. In case histograms are being grouped, the specified channels are interpreted with respect to the first histograms. Example:
        +data            207     7994    167     8009    
        +

        -
        -
        t0 (fit type 0, 4)
        The number of the time-zero channel of the histogram. Example:
        + 
        +
        t0 (fit type 0, 1, 4)
        The number of the time-zero channel of the histogram. Example:
           t0 3419        # t0 channel = 3419
           t0 3419 3434   # t0 channels for groupings: forward f1 f2. 3419 t0 for f1, 3434 t0 for f2. 
         
        @@ -1052,28 +1104,28 @@ etc.

        -
        -
        addt0 (fit type 0, 4)
        The number of the time-zero channel of the histogram. If grouping of histograms is present (see forward) the same syntax as for t0 applies. If one addt0 is given, the total number of addt0's needs to be equal to the total number of ADDRUN's! +
        +
        addt0 (fit type 0, 1, 4)
        The number of the time-zero channel of the histogram. If grouping of histograms is present (see forward) the same syntax as for t0 applies. If one addt0 is given, the total number of addt0's needs to be equal to the total number of ADDRUN's!

        -
        addt0 (fit types 2)
        The numbers of time-zero channels of the histograms in the order t0,f t0,b [t0,r t0,l]. If grouping of histograms is present (see forward) the same syntax as for t0 applies. If one addt0 is given, the total number of addt0's needs to be equal to the total number of ADDRUN's! +
        addt0 (fit types 2)
        The numbers of time-zero channels of the histograms in the order t0,f t0,b [t0,r t0,l]. If grouping of histograms is present (see forward) the same syntax as for t0 applies. If one addt0 is given, the total number of addt0's needs to be equal to the total number of ADDRUN's!

        xy-data (fit type 8)
        Specification of the data from an ASCII or DB file which should be used as x and y data (in this order). For a simple ASCII file the column numbers are used, in the case of a DB file one can either specify the variable numbers or the name of the variables as given in the DB header.

        -
        fit
        The range of data that should be considered when the fitting is done. For the μSR fit types 0, 2, and 4 here the starting and end times are given in microseconds. For the non-μSR fit type 8 the starting and end points of the fitting range are given in the units of the x data.
        In case the fit range specified here is larger than the data range (in any direction), eventually the data range will be used as fit range. An example for a μSR fit:
        +
        fit
        The range of data that should be considered when the fitting is done. For the μSR fit types 0, 2, and 4 here the starting and end times are given in microseconds. For the non-μSR fit type 8 the starting and end points of the fitting range are given in the units of the x data.
        In case the fit range specified here is larger than the data range (in any direction), eventually the data range will be used as fit range. An example for a μSR fit:
         fit 0.2 8.5
         
        Which means that the fitting window will span from 0.2 to 8.5 microseconds.
        Another possibility for the μSR fits is to give the fit range in bins, rather than time. The syntax is then:
        fit fgb+<n0> lgb-<n1>,
        where fgb and lgb are label tags which refer to the 'first good bin' and the 'last good bin' defined either in the data tag of the run block, data file, are estimated based on T0. <n0> and <n1> are offsets (given in bins) allowing to change the fit window compared to the data window. An example:
        fit fgb+150 lgb-1332

        -
        packing
        Number of data channels to be binned together. For the non-μSR fit type 8 the binning is supposed to be 1. +
        packing
        Number of data channels to be binned together. For the non-μSR fit type 8 the binning is supposed to be 1. For the single histogram RRF fit (fittype 1) and asymmetry RRF fit (fittype 3) this parameter is meaningless.

        - -

        4.7 The COMMANDS Block

        + +

        4.7 The COMMANDS Block

        The COMMANDS block is used to specify the commands which are passed from musrfit to MINUIT2. The supported commands after the COMMANDS keyword are STRATEGY, MIGRAD, SIMPLEX, MINIMIZE, MINOS, HESSE, SAVE, some additional commands described below, and for compatibility reasons SET BATCH and END RETURN. The last two commands may appear in the COMMANDS block but are simply ignored. -A detailed description of all of these commands can be found in the MINUIT2 users guide pdf. +A detailed description of all of these commands can be found in the MINUIT2 users guide pdf.

        A standard COMMANDS block then looks like this:
            COMMANDS
        @@ -1112,7 +1164,7 @@ It is important to understand that before MINOS is called, all
         

        For even more complex fitting the additional command FIT_RANGE RESET | tstart tend | ts1 te1 ts2 te2 ... tsn ten is provided. It allows to change the fit range during different iterations. The command FIT_RANGE tstart tend changes the current fit range for all the runs present in the msr file. FIT_RANGE RESET will restore to the original fit ranges as provided in the RUN block. If for each run of the msr file an individual fit range should be used, the third option applies. Here n has to correspond to the number of runs in the RUN block.

        -As for the run block, there is a 2nd flavor how the FIT_RANGE can be changed, namely giving the fit range in bins, i.e. FIT_RANGE RESET | fgb+<n0> lgb-<n1> | fgb+<n00> lgb-<n01> fgb+<n10> lgb-<n11> ... fgb+<nN0> lgb-<nN1> where N is the number of available run blocks. The idea is inline with the above syntax and the syntax describe for the fit range (fit) of the RUN block. +As for the run block, there is a 2nd flavor how the FIT_RANGE can be changed, namely giving the fit range in bins, i.e. FIT_RANGE RESET | fgb+<n0> lgb-<n1> | fgb+<n00> lgb-<n01> fgb+<n10> lgb-<n11> ... fgb+<nN0> lgb-<nN1> where N is the number of available run blocks. The idea is inline with the above syntax and the syntax describe for the fit range (fit) of the RUN block.

        A typical example could look like:
            COMMANDS
        @@ -1133,10 +1185,10 @@ A typical example could look like:
            SAVE
         

        - + The last accepted command in the COMMAND block is SCALE_N0_BKG TRUE | FALSE. This command is only used in conjunction with single-histogram fits. The default is SCALE_N0_BKG TRUE which will result in a scaling of N(t) such that it is given in ns-1, whereas with SCALE_N0_BKG FALSE no scaling is performed and N(t) will be given in bin-1. If the command is not present at all, it will be interpreted as if SCALE_N0_BKG TRUE was present.

        - + For debug purposes it is possible to force MINUIT2 to print out additional informations. The COMMAND block command is PRINT_LEVEL <n>, where <n> can have the values 0,1,2, or 3. A typical example could look like:
           COMMANDS
           MIGRAD
        @@ -1147,13 +1199,13 @@ For debug purposes it is possible to force MINUIT2 to print out additional infor
         
        Here the MINOS command will print out lot of additional information to the standard output. Notice there are 2 SAVE commands here. This will write the result of MIGRAD to the MINUIT2.OUTPUT file and at the end append the MINOS results to this file.

        - -

        4.8 The FOURIER Block

        -The Fourier transform is done and the results are plotted within musrview —as input data the actual data shown in musrview is used. In the FOURIER block of the msr file all necessary parameters for calculating and presenting the Fourier transform of the data specified in the PLOT block is given. If the FOURIER block is not present in the msr file, either the parameters set in the XML startup file or the system defaults are taken when the Fourier transform is performed. The block starts with the FOURIER keyword and may contain the following entries on the successive lines:
        + +

        4.8 The FOURIER Block

        +The Fourier transform is done and the results are plotted within musrview —as input data the actual data shown in musrview is used. In the FOURIER block of the msr file all necessary parameters for calculating and presenting the Fourier transform of the data specified in the PLOT block is given. If the FOURIER block is not present in the msr file, either the parameters set in the XML startup file or the system defaults are taken when the Fourier transform is performed. The block starts with the FOURIER keyword and may contain the following entries on the successive lines:
        units
        Here is specified in which domain the Fourier-transformed data is presented. One may choose between the fields (Gauss) or (Tesla), the frequency (MHz), and the angular-frequency domain (Mc/s).
        fourier_power
        It is possible (but not necessary) to set the number of data points used for the Fourier transform here. As argument the exponent n<21 of a power of 2 is accepted. The number of data points is then 2n. Attention: If the number of points given here is bigger than the actual number of available data points, the input data vector is filled with zeros until the number of requested points is reached (zero padding)!
        dc-corrected
        a flag to remove a potential DC-offset of the signal. Allowed entries are dc-corrected true | 1 | false | 0. -
        apodization
        Here is decided if the data should be apodized before the Fourier transform is done and if yes, which apodization should be used (for further details about apodization of μSR data refer to the PhD thesis of T.M. Riseman). The argument to be put after the keyword is therefore one of the following: NONE, WEAK, MEDIUM or STRONG. If the data should be apodized, they are manipulated as follows: each data value is multiplied by the function \sum_{j=0}^4 c_j \left(\frac{i}{n}\right)^{2j}, where i is the data-point index and n is the total number of data points. The coefficients c_j for the different apodizations are given by:
        +
        apodization
        Here is decided if the data should be apodized before the Fourier transform is done and if yes, which apodization should be used (for further details about apodization of μSR data refer to the PhD thesis of T.M. Riseman). The argument to be put after the keyword is therefore one of the following: NONE, WEAK, MEDIUM or STRONG. If the data should be apodized, they are manipulated as follows: each data value is multiplied by the function \sum_{j=0}^4 c_j \left(\frac{i}{n}\right)^{2j}, where i is the data-point index and n is the total number of data points. The coefficients c_j for the different apodizations are given by:
        WEAK
        c_0 = 1,\, c_1 = -1.319391,\, c_2 = 0.703484,\, c_3=c_4=0
        MEDIUM
        c_0 = 1,\, c_1 = -1.831292,\, c_2 = 0.983734,\, c_3=c_4=0
        STRONG
        c_0 = 1,\, c_1 = -2.708894,\, c_2 = 2.953575,\, c_3=-1.599128,\, c_4=0.399782 @@ -1184,8 +1236,16 @@ Altogether, a possible FOURIER block might look like that:

        - -

        4.9 The PLOT Block

        +Notes +

        + l : for a more detailed discussion about the shortcomings of RRF fits see the RRF memo found under <musrfit>/doc/memo/rrf +

        +

        +

        +
        +

        + +

        4.9 The PLOT Block

        The PLOT block is intended to collect all the information needed for the graphical presentation of the data and fits using musrview. The PLOT keyword at the beginning of the block is followed by a number which indicates the plot type. The plot types match the fit types. Additionally, it is possible to provide information using the following keywords:
        lifetimecorrection
        Does not accept any arguments. If present, the output in musrview is corrected for the exponential decay of the muon. Only relevant for (type 0).
        runs
        The numbers of the runs to be plotted have to be put here. The runs are numbered according to their appearance in the RUN block. @@ -1197,12 +1257,12 @@ The PLOT block is intended to collect all the information needed for the graphic
        sub_ranges
        Here it is possible to define the plotting range for each run individually. For the different plot types the command has the structure
        0 without lifetimecorrection, 4
        tmin1 tmax1 tmin2 tmax2 ... tminn tmaxn [ Nmin Nmax ] (n = the number of runs to be plotted)
        0 with lifetimecorrection, 2
        tmin1 tmax1 tmin2 tmax2 ... tminn tmaxn [ Amin Amax ] (n = the number of runs to be plotted) -
        8
        not yet implemented. +
        8
        not yet implemented.
        use_fit_ranges [ ymin ymax]
        The fit ranges of the individual runs are used to present the data. Optionally, an ordinate range can be provided.
        view_packing
        The data are presented in the packing given here rather than the binning used for the fit. WARNING: This is a global option and applies to all PLOT-blocks. -
        logx
        Will present the time axis in a logarithmic scale. So far no checking of negative and zero-valued data is performed wink -
        logy
        Will present the axis of ordinates in a logarithmic scale. So far no checking of negative and zero-valued data is performed wink +
        logx
        Will present the time axis in a logarithmic scale. So far no checking of negative and zero-valued data is performed wink +
        logy
        Will present the axis of ordinates in a logarithmic scale. So far no checking of negative and zero-valued data is performed wink
        rrf_packing value
        In the rotating-reference-frame (RRF) representation, this will be the value for the packing. WARNING: For the time being, this is a global option and applies to all PLOT blocks.
        rrf_freq value unit
        This entry provides the RRF "frequency" given by the value and the unit which can be: kHz, MHz, Mc/s, G, or T.
        rrf_phase value
        A phase of the RRF can be provided, either as a value in degrees, or as a parX, e.g. par4, where X is supposed to be the phase parameter number in the FITPARAMETER block. @@ -1223,37 +1283,49 @@ The PLOT block is intended to collect all the information needed for the graphic rrf_packing 75

        - -

        4.10 The STATISTIC Block

        + +

        4.10 The STATISTIC Block

        The STATISTIC block is the last block of a msr file. It contains some information on the fit: the date and time as well as the absolute and normalized values of χ2 and the number of degrees of freedom in the fit.
        -If enabled in the XML file for χ2-single-histogram fits also Pearson's χ2 will be written to the STATISTIC block.
        +If enabled in the XML file for χ2-single-histogram fits also Pearson's χ2 will be written to the STATISTIC block.
        These information only have a meaning if the fitting procedure has been executed at least once and the fit has converged!

        - -

        5 The Fit Types

        + +

        5 The Fit Types

        - -

        5.1 Single Histogram Fit

        + +

        5.1 Single Histogram Fit

        The single-histogram fit (fit type 0) is used to fit a function directly to the raw data using
        -N(t)=N_0\,\mathrm{e}^{-t/\tau_{\mu}} \left[1 + A(t)\right] + B. +N(t)=N_0\,\mathrm{e}^{-t/\tau_{\mu}} \left[1+A(t)\right]+N_{\rm bkg}.
        The parameters are given by:
        N(t)
        rebinned decay histogram
        N_0
        normalization constant of the histogram (RUN block: norm)
        \tau_{\mu}
        lifetime of the muon (RUN block: lifetime) -
        B
        constant background (RUN block: backgr.fit or background) +
        N_{\rm bkg}
        constant background (RUN block: backgr.fit or background)
        A(t)
        decay asymmetry/depolarization function as given in the THEORY block

        In the plot type 0 without lifetimecorrection the rebinned histogram and the function N(t) written above are presented. -If the option lifetimecorrection is set in the RUN block the asymmetry is plotted: +If the option lifetimecorrection is set in the PLOT block the asymmetry is plotted:
        -A(t)=\frac{N(t)-B}{N_0\,\mathrm{e}^{-t/\tau_{\mu}}}-1 +A(t)=\frac{N(t)-N_{\rm bkg}}{N_0\,\mathrm{e}^{-t/\tau_{\mu}}}-1

        - -

        5.2 Asymmetry Fit

        + +

        5.2 Single Histogram RRF Fit

        +The single-histogram RRF fit (fit type 1) is used to fit the rotating reference frame asymmetry A_{\rm rrf}(t) extracted from the raw data. The currently implemented version will fail at low fields/frequencies (for about < 1 Tesla). The same is true, if multiple frequencies with large enough separation are present, e.g. when dealing with muonium. A_{\rm rrf}(t) is estimated the following way (for more details see the RRF memo):
          +
        1. define the background N_{\rm bkg}, and subtract it from the raw histogram. +
        2. calculate the property M(t) = [N(t)-N_{\rm bkg}] \exp(+t/\tau). +
        3. estimate N_0. This is the most tricky part. From this calculate A(t) = M(t)/N_0 -1. +
        4. now the RRF transformation takes place: A_{\rm rrf}(t) = 2 \cos(\omega_{\rm rrf} t + \phi_{\rm rrf}) A(t). In Fourier space this is leading to [A(\omega-\omega_{\rm rrf})+A(\omega+\omega_{\rm rrf})]. +
        5. in order to get rid if the A(\omega+\omega_{\rm rrf}) component, A_{\rm rrf}(t) is over-binned by the rrf_packing. This results in a signal \langle A_{\rm rrf}(t) \rangle_{p} which ideally is A(t) shifted down in frequency by \omega_{\rm rrf}. +
        +

        +The single histogram RRF fit was introduced for online analysis only. It is leading to many uncontrolled effects like ghost lines due to imperfection of the N_0 estimate, line shape distortion due to dispersive filtering originating from the packing, back folding problems if \omega_{\rm rrf} is not properly chosen, etc. In summary: if you not urgently need it: do not use it! There are better ways to deal with the analysis of high frequency data! +

        + +

        5.3 Asymmetry Fit

        For an asymmetry fit (fit type 2) two histograms are needed. These are given by the forward and backward keywords in the RUN block. Additionally, the parameters alpha and beta which relate the detector efficiencies, solid angles and initial asymmetries of the two detectors can be supplied. The constant background for the two histograms is either given by background-determined intervals or specified through backgr.fix in the RUN-block. @@ -1285,23 +1357,27 @@ For the graphical representation in plot type 2 the equation ab and plotted together with the function given in the THEORY block.

        - -

        5.3 Negative Muon μSR Fit

        + +

        5.4 Asymmetry RRF Fit

        +In a first step, the unbinned asymmetry is formed as described for the asymmetry fit. Afterwards the RRF transformation is carried out, i.e. point 4. and 5. as sketched in the single histogramm RRF fit. The same reservations as for the single histogram RRF fit apply: if you not urgently need it: do not use it! There are better ways to deal with the analysis of high frequency data! +

        + +

        5.5 Negative Muon μSR Fit

        The negative muon μSR fit (fit type 4) is used for single histogram fits of MuMinus, i.e.
        -N(t) = \sum_i N_i\,\mathrm{e}^{-t/\tau_i} \left[ 1 + A_i(t)\right] + B(t) +N(t) = \sum_i N_i\,\mathrm{e}^{-t/\tau_i} \left[ 1 + A_i(t)\right] + N_{\rm bkg}(t)
        where i runs over the different lifetime channels of \mu^{-}, and
        N_i
        counts of lifetime channel i
        \tau_i
        lifetime of lifetime channel i
        A_i(t)
        depolarization function of lifetime channel i -
        B(t)
        B(t)= B_0 + \sum_j B_j \cos(j \omega_{\rm cyclotron} t) the background +
        N_{\rm bkg}(t)
        N_{\rm bkg}(t)= N_{\rm bkg,0} + \sum_k N_{\rm bkg,k} \cos(k \omega_{\rm cyclotron} t) the background

        Since MuMinus is quite generic, the full functional depends has to be written in the THEORY Block.

        - -

        5.4 Non-μSR Fit

        + +

        5.6 Non-μSR Fit

        In the case of a non-μSR fit (fit type 8) the fitting function is
        y=f(x), @@ -1313,11 +1389,11 @@ where

        The same is valid for the plot with plot type 8.

        - -

        6 User Functions

        + +

        6 User Functions

        musrfit offers the possibility to plug-in user-defined functions implemented in C++ classes to the fitting and plotting routines. In order to do so, basically two things are needed:
        1. a shared library containing the compiled class with the defined function -
        2. a ROOT dictionary that contains information about the functions in the shared library +
        3. a ROOT dictionary that contains information about the functions in the shared library

        There are two possible ways to implement user functions and both will be explained below:
          @@ -1327,8 +1403,8 @@ There are two possible ways to implement user functions and both will be explain

          Since the first is simpler this will be explained using an explicit example, before it is discussed why the second option is needed and how it can be used.

          - -

          6.1 User Function without global user-function-object access

          + +

          6.1 User Function without global user-function-object access

          In the following it is explained in detail how the implementation of a user function is done using the simple example of fa(x) = sin(ax)/ax, where the parameter a should be determined by the fit. Although not necessary for this simple example, the source code is split into two parts, namely a header file TMyFunction.h containing the class declaration and a second file TMyFunction.cpp including the function implementation.

          @@ -1369,7 +1445,7 @@ public:

          In the header file above the constructor (destructor) of the class is empty. This is not necessary. Any code that should be executed when the RUN block is read and the class object is created (destroyed) may be implemented in the constructor (destructor). Another peculiarity is the ClassDef statement at the end of the class definition. It is needed for the ROOT dictionary generation and has as arguments the class name and a revision number.

          -Please also be aware of the const-ness of the operator(). For an introductory discussion on that topic look for example here and the links herein. +Please also be aware of the const-ness of the operator(). For an introductory discussion on that topic look for example here and the links herein.

          The actual implementation of the user function is done in the second source file. In this example it only contains the definition of the function operator() declared in the header file and might look like:

          @@ -1387,7 +1463,7 @@ ClassImp(TMyFunction) // for the ROOT dictionary Double_t TMyFunction::operator()(Double_t x, const vector<Double_t> &par) const { assert(par.size()==1); // make sure the number of parameters handed to the function is correct - Double_t arg(par[0]*x); + Double_t arg(par[0]*x); if(!arg) return 1.0; @@ -1417,22 +1493,22 @@ What is further needed for the ROOT dictionary is a so-called LinkD #endif //__CINT__

        -For compiling and linking it is wise to use a Makefile as for example the attached Makefile.TMyLibrary. It assumes standard ROOT and musrfit installations and defines rules for the generation of the shared library libTMyLibrary.so including the class and the ROOT dictionary. +For compiling and linking it is wise to use a Makefile as for example the attached Makefile.TMyLibrary. It assumes standard ROOT and musrfit installations and defines rules for the generation of the shared library libTMyLibrary.so including the class and the ROOT dictionary. In order to get the library built and installed on the standard ROOT path just call:
         make -f Makefile.TMyLibrary
         make -f Makefile.TMyLibrary install
         
        -In case of a custom installation some paths in the Makefile might have to be changed. For further information about the ROOT dictionary mechanism please refer to the documentation. +In case of a custom installation some paths in the Makefile might have to be changed. For further information about the ROOT dictionary mechanism please refer to the documentation.

        After installing the shared library the defined user function might be used in musrfit as described above.

        -Good luck! wink +Good luck! wink

        Finally, please be aware of the remark at the end of this section.

        - -

        6.2 User Function with global user-function-object access

        + +

        6.2 User Function with global user-function-object access

        Before explaining how to use global objects within user functions, it will be shortly explained where is problem and why this might be a sensible approach. In musrfit each RUN block (histogram, asymmetry, ...) is owning its own theory-function tree. An example is shown in the figure below. The bluish nodes are @@ -1440,8 +1516,8 @@ default musrfit functions, whereas the red nodes represent user fun are independent entities. This means if the msr file contains n run blocks, the user function uF1 will be called n times for each step in the calculation. If the user function is performing CPU-demanding calculations this is rather inefficient.

        - -theory tree with user function and <strong>global</strong> user function objects + +theory tree with user function and  global  user function objects

        Therefore, it is possible to associate to each user function (uFx) a global user-function object (g_uFx). The idea is the following: If uFx needs to perform very time-consuming calculations (e.g. calculate an Abrikosov vortex lattice or the nonlocal response of a superconductor in the Meissner state) this can be @@ -1449,7 +1525,7 @@ transferred to the global user-function object (g_uFxg_uFx), thus speeding up the fit.

        After explaining the purpose of the global user-function-object approach, some explanations how to interface it follow here. Since the interface is very close to -the user function without global objects, only the additionally necessary overhead is explained here. +the user function without global objects, only the additionally necessary overhead is explained here.

        The user's header file could look like the following:
        @@ -1532,18 +1608,18 @@ void TMyFunction::SetGlobalPart(vector<void *> &globalPart, UInt
               cerr << endl << ">> TMyFunction::SetGlobalPart(): **ERROR** Couldn't invoke global user function object, sorry ..." << endl;
             } else {  // global user function object could be invoked -> resize to global user function vector and keep the pointer to the corresponding object
               globalPart.resize(fIdxGlobal+1);
        -      globalPart[fIdxGlobal] = dynamic_cast<TMyGlobalFunction*>(fGlobalUserFcn);
        +      globalPart[fIdxGlobal] = dynamic_cast<TMyGlobalFunction*>(fGlobalUserFcn);
               fValid = true;
               fInvokedGlobal = true;
             }
           } else { // global user function already present hence just retrieve a pointer to it
             fValid = true;
        -    fGlobalUserFcn = (TMyGlobalFunction*)globalPart[fIdxGlobal];
        +    fGlobalUserFcn = (TMyGlobalFunction*)globalPart[fIdxGlobal];
           }
         }
         

        -What it does is the following: it first checks if the object is already present in the global user-function-object vector and if not creates it. If it is already present, the pointer to the global object vector is just kept (see figure above). +What it does is the following: it first checks if the object is already present in the global user-function-object vector and if not creates it. If it is already present, the pointer to the global object vector is just kept (see figure above).

        A sketch of the method operator()(Double_t, const vector&) const will then look like (pseudo-code snippet):

        @@ -1573,93 +1649,44 @@ Double_t TMyFunction::operator()(Double_t t, const vector<Double_ This way the efficiency of the user function can be increased by almost a factor of n (where n is the number of RUN blocks).


        - -Important remark: If musrfit has been built with parallelization support (default for GCC ≥ 4.2) it should be taken care of the thread safety of the user-function operator(). During the function optimization of musrfit the operator() is called once for any given set of parameters in order to allow the safe execution of any calculation. Within the single-histogram and asymmetry fits the calculation of χ2 or the log-likelihood is parallelized and the operator() is expected to evaluate to reasonable values for a fixed set of parameters (but changing t) beginning with the second function call. + +Important remark: If musrfit has been built with parallelization support (default for GCC ≥ 4.2) it should be taken care of the thread safety of the user-function operator(). During the function optimization of musrfit the operator() is called once for any given set of parameters in order to allow the safe execution of any calculation. Within the single-histogram and asymmetry fits the calculation of χ2 or the log-likelihood is parallelized and the operator() is expected to evaluate to reasonable values for a fixed set of parameters (but changing t) beginning with the second function call. In case this cannot be ensured, the parallelization can be disabled by --disable-omp on the configure level of the program installation.

        - -

        7 Technical Description of the musrfit framework

        + +

        7 Technical Description of the musrfit framework

        -A technical description of the musrfit framework can be found here. +A technical description of the musrfit framework can be found here.

        - -

        8 Bugtracking

        + +

        8 Bugtracking

        +

        +For reporting bugs or requesting new features and improvements please use the bitbucket-repo (preferred), PSI Tracker or send an e-mail to A. Suter. +

        +-- AS & BMW

        -For reporting bugs or requesting new features and improvements please use the bitbucket-repo (preferred), PSI Tracker or send an e-mail to A. Suter.

        --- AS & BMW -
        - - - - - - - -
        - -
        - Edit | Attach | Print version | PDF | History: r126 < r125 < r124 < r123 | Backlinks | View wiki text | Refresh | More topic actions -
        -
        Topic revision: r126 - 29 May 2015, AndreasSuter
        - - - -
         
        -
        -
        -
      RUN-block tag comment RUN-block tag comment
      - -
      -

        -

        -
      -
    -
    -
    Ideas, requests, problems regarding PSI Wiki? Send feedback
    +
    This topic: MUSR > WebHome > MusrFit
    +Topic revision: 22 Jan 2016, AndreasSuter
-
- - - +
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding PSI Wiki? Send feedback
+
+
+
+

-

-

-

\ No newline at end of file + + + + + + + + + + + \ No newline at end of file diff --git a/doc/html/user/MUSR/MusrFitAcknowledgements.html b/doc/html/user/MUSR/MusrFitAcknowledgements.html index 9109829f..0be5b6c5 100644 --- a/doc/html/user/MUSR/MusrFitAcknowledgements.html +++ b/doc/html/user/MUSR/MusrFitAcknowledgements.html @@ -1,35 +1,38 @@ - + - - + + - MUSR :: MusrFitAcknowledgements - + MUSR :: MusrFitAcknowledgements + + + + + + + - + - - + + + + - - - - - - - -
+ + + + + + + + + + + + + + + + +
-
+
-
-
-

-

- - - -

-

-

-

-

-

-

Acknowledgements - musrfit

+
+
+

Acknowledgements - musrfit

-
Bastian M. Wojek
I am very much indebted to BMW for his rigorous testing of musrfit, his many useful suggestions, contributions, and for the largest part of the user manual of musrfit which makes it accessible to a broader audience! Many thanks Bastian! -
-
- - - - - - - -
- -
- Edit | Attach | Print version | PDF | History: r5 < r4 < r3 < r2 | Backlinks | View wiki text | Refresh | More topic actions -
-
Topic revision: r5 - 03 Jul 2015, AndreasSuter
-
-
-
- +
Bastian M. Wojek
I am very much indebted to BMW for his rigorous testing of musrfit, his many useful suggestions, contributions, and for the largest part of the user manual of musrfit which makes it accessible to a broader audience! Many thanks Bastian! +

-PSI Webs -
-System Webs -
-

-
-
 
-
-
-
- -
-

    -

    -
-
-
-
Ideas, requests, problems regarding PSI Wiki? Send feedback
+
This topic: MUSR > WebHome > MusrFit > MusrFitAcknowledgements
+Topic revision: 03 Jul 2015, suter_a
-
- - - +
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding PSI Wiki? Send feedback
+
+
+
+

-

-

-

\ No newline at end of file + + + + + + + + + + + \ No newline at end of file diff --git a/doc/html/user/MUSR/MusrFitSetup.html b/doc/html/user/MUSR/MusrFitSetup.html index a7828a22..cdfcd17d 100644 --- a/doc/html/user/MUSR/MusrFitSetup.html +++ b/doc/html/user/MUSR/MusrFitSetup.html @@ -1,35 +1,38 @@ - + - - + + - MUSR :: MusrFitSetup - + MUSR :: MusrFitSetup + + + + + + + - + - - + + + + - - - - - - - -
+ + + + + + + + + + + + + + + + + + + +
-
+
-
-
+
+
+

Setting up musrfit on Different Platforms

-

- - - -

-

-

-

-

-

-

Setting up musrfit on Different Platforms

-

-
    +

    -

    1 Supported Operating Systems and Software Requirements

    +

    1 Supported Operating Systems and Software Requirements

    -This page is intended to demonstrate for the interested user which steps are necessary to set up the free software μSR data analysis framework musrfit. While the preferred way is to run the software on GNU/Linux or MacOS X, with some restrictions it can also be set up under MS Windows (cygwin, only for the very brave, probably it is easier for most MS Windows users to install a Virtual Machine running Linux). In case musrfit should be installed according to the description found on this page, the user is strongly encouraged to read completely each section dealing with the present installation step before starting the installation process! +This page is intended to demonstrate for the interested user which steps are necessary to set up the free software μSR data analysis framework musrfit. While the preferred way is to run the software on GNU/Linux or MacOS X, with some restrictions it can also be set up under MS Windows (cygwin, only for the very brave, probably it is easier for most MS Windows users to install a Virtual Machine running Linux). In case musrfit should be installed according to the description found on this page, the user is strongly encouraged to read completely each section dealing with the present installation step before starting the installation process!

    - -Apart from GCC, the GNU Compiler Collection (gcc, g++), the GNU build tools autoconf, automake and libtool as well as the helper tool pkg-config musrfit requires the installation of a few open-source libraries and programs including their header packages:
    -
    boost C++ libraries
    The powerful Spirit parser framework used by musrfit is included in that collection of libraries. Required version ≥ 1.33 -
    GNU Scientific Library
    A numerical C and C++ library which provides efficient implementations of various mathematical routines. Required version ≥ 1.9 -
    FFTW
    A C implementation for the fast computation of discrete Fourier transforms. Required version ≥ 3.1 -
    ROOT
    A C++ data analysis framework developed at CERN. Required version ≥ 5.22 -
    libxml2
    The XML C parser and toolkit of Gnome. Required version ≥ 2.0 -
    + +Apart from GCC, the GNU Compiler Collection (gcc, g++), the GNU build tools autoconf, automake and libtool as well as the helper tool pkg-config musrfit requires the installation of a few open-source libraries and programs including their header packages: + $ boost C++ libraries: The powerful Spirit parser framework used by musrfit is included in that collection of libraries. Required version ≥ 1.33 + $ GNU Scientific Library: A numerical C and C++ library which provides efficient implementations of various mathematical routines. Required version ≥ 1.9 + $ FFTW: A C implementation for the fast computation of discrete Fourier transforms. Required version ≥ 3.1 + $ ROOT: A C++ data analysis framework developed at CERN. Required version ≥ 5.22 + $ libxml2: The XML C parser and toolkit of Gnome. Required version ≥ 2.0

    - -Additionally, only if musrfit should support reading of data files in the NeXus format the following libraries are needed:
    -
    HDF4
    A library and multi-object file format for storing and managing data. -
    HDF5
    A data model, library, and file format for storing and managing data. -
    minixml
    A small XML library that can be used to read and write XML and XML -like data files. Required version ≥ 2.2 -
    NeXus
    A common data format for neutron, x-ray, and muon science. -
    + +Additionally, only if musrfit should support reading of data files in the NeXus format the following libraries are needed: + $ HDF4: A library and multi-object file format for storing and managing data. + $ HDF5: A data model, library, and file format for storing and managing data. + $ minixml: A small XML library that can be used to read and write XML and XML -like data files. Required version ≥ 2.2 + $ NeXus: A common data format for neutron, x-ray, and muon science.

    -If optionally the editor and graphical user interface musrgui / musredit is going to be installed there is one further requirement:
    -
    Qt
    A cross-platform application and user interface framework. Required version ≥ 3.3 & ≪ 4.0 (musrgui) OR ≥ 4.6 (musredit) -
    +If optionally the editor and graphical user interface musrgui / musredit is going to be installed there is one further requirement: + $ Qt: A cross-platform application and user interface framework. Required version ≥ 3.3 & ≪ 4.0 (musrgui) OR ≥ 4.6 (musredit)

    Each of the following sections focusing on the installation of musrfit on the different operating systems will also give a brief introduction on the installation of the requirements before the actual musrfit installation is described.

    -

    2 OS Restrictions

    +

    2 OS Restrictions

    Before the further installation will be described, please note the following restrictions:
    GNU/Linux
    No serious problems are known at the moment.
    MS Windows
    The setup of musrfit (including the requirements) using Visual C++ has not been tested. If anybody likes to do this: Just go ahead and have fun! However, not very much assistance can be expected, although it would be an interesting experiment.
    Mac OS X
    On 10.6 Snow Leopard Qt3 for Mac is not supported any more since this was based on a 32-bit only API. Snow Leopard -users are advised to use the Qt4 based musredit or to rely on the standard Qt3 version for X11 in order to run musrgui. On newer Mac OS X versions (>= 10.8) you should use the Qt4 base musredit only.

    -

    3 GNU/Linux

    -

    3.1 Requirements

    -

    3.1.1 Everything but ROOT and NeXus

    +

    3 GNU/Linux

    +

    3.1 Requirements

    +

    3.1.1 Everything but ROOT and NeXus

    Depending on the GNU/Linux distribution chosen, the above mentioned software—except the ROOT system and the NeXus library—should be available from the distributor and could be easily installed in the form of binary packages. If done in this way there should be taken care of installing both, the libraries and the header (dev, devel) files.
    -On a Scientific Linux (Red Hat, other RPM-package base Linux distributions) system the following command executed as superuser from the shell will do the trick (never type the '$' it is the shell prompt of your system): +On a Scientific Linux (Red Hat, other RPM-package base Linux distributions) system the following command executed as superuser from the shell will do the trick (never type the '$' it is the shell prompt of your system):
    -$ yum install git boost-devel gsl-devel fftw-devel libxml2-devel qt-devel qtwebkit-devel
    +$ yum install git boost-devel gsl-devel fftw-devel libxml2-devel qt-devel qtwebkit-devel
     
    -When dealing with a distribution that uses the dpkg/apt package manager like Debian or Ubuntu the installation would look like: +When dealing with a distribution that uses the dpkg/apt package manager like Debian or Ubuntu the installation would look like:
    -$ apt-get install git libboost-dev libgsl0-dev libfftw3-dev libxml2-dev libqt4-dev libqtwebkit-dev
    +$ apt-get install git libboost-dev libgsl0-dev libfftw3-dev libxml2-dev libqt4-dev libqtwebkit-dev
     
    -Everyone should know best himself which is the way to install distribution software on the chosen distribution wink +Everyone should know best himself which is the way to install distribution software on the chosen distribution wink

    In case the distribution does not include the required software it has to be compiled from the source files which normally means to download the source code from the corresponding website, to unpack the source tree and call the following from the shell:
    -$ ./configure
    -$ make
    -$ make install
    +$ ./configure
    +$ make
    +$ make install
     
    In order to obtain some information about the possible options for the installation, calling ./configure --help might give some useful hints.
    For any further information on the standard installation of software, please refer to the web search engine of choice and ask for "install software on linux"...

    -

    3.1.2 Installation of NeXus requirements (optional)

    +

    3.1.2 Installation of NeXus requirements (optional)

    Only if musrfit should support reading/writing data files in the NeXus format the further required software has to be set up. The required libraries and header files could either be available through the user's GNU/Linux distribution or if this is not the case, the packages can be installed from the source code. E.g. on Red Hat-like systems binary packages for MXML, HDF4, and HDF5 might be called mxml, mxml-devel, hdf, hdf-devel, hdf5, hdf5-devel, on Debian-like systems libmxml1, libmxml-dev, libhdf4-dev, libhdf5-dev.

    -Even though there might exist binary packages for the NeXus library, it is best to build and install it directly from the source code which can be found here. +Even though there might exist binary packages for the NeXus library, it is best to build and install it directly from the source code which can be found here.

    -

    3.1.3 ROOT

    +

    3.1.3 ROOT

    Currently only ROOT 5.34/xx is support! Do NOT try to use ROOT 6.xx/yy yet!

    The ROOT system may or may not be part of the GNU/Linux distribution. Some distributions are packing ROOT in a manner incompatible with the way it is needed for musrfit. Therefore we advise to install ROOT from source. Before installing ROOT from source you will need to install some additional header packages.

    For RPM based systems (RedHat, Fedora, etc) this will likely to be libX11-devel, libXft-devel, libXpm-devel, and libXext-devel:
    -$ yum install libX11-devel libXft-devel libXpm-devel libXext-devel
    +$ yum install libX11-devel libXft-devel libXpm-devel libXext-devel
     

    For a dpkg/apt based system (Debian, Ubuntu, etc) this will likely to be libX11-dev, libxft-dev, libxpm-dev, and libxext-dev:
    -$ apt-get install libX11-dev libxft-dev libxpm-dev libxext-dev
    +$ apt-get install libX11-dev libxft-dev libxpm-dev libxext-dev
     

    -Also make sure that you have installed all required packages listed under Requested Software (e.g. fftw, gsl, etc). +Also make sure that you have installed all required packages listed under Requested Software (e.g. fftw, gsl, etc).

    For the following it is assumed that ROOT shall be installed under $HOME/Apps. If you want to install it somewhere else, just systematically replace the related terms of the following description. For the following list of commands the '$' will be given, the command prompt. Do not enter it! Also some comments will be added starting with a '#' which can be omitted. They are only there to explain what is going on.
    -$ cd $HOME
    -$ # creat the Apps directory if not already present
    -$ mkdir Apps
    -$ cd Apps
    -$ git clone http://root.cern.ch/git/root.git
    -$ cd root
    -$ git tag -l
    -$ # git tag -l will list all available tags. In the next command choose the tag v5-34-xx
    -$ # where xx is the highest listed number, e.g. v5-34-32
    -$ git checkout -b v5-34-32 v5-34-32
    -$ # now ROOT is ready to be configured. Below you will find the minimal ROOT configuration needed.
    -$ ./configure --gminimal --enable-asimage --enable-mathmore --enable-minuit2 --enable-xml
    -$ # next will be the make. If running on a multicore CPU you can speed up tremendously by calling
    -$ # make with the option -j <number>, where <number> is the number of threads which you want to give,
    -$ # e.g. make -j8
    -$ make
    +$ cd $HOME
    +$ # creat the Apps directory if not already present
    +$ mkdir Apps
    +$ cd Apps
    +$ git clone http://root.cern.ch/git/root.git
    +$ cd root
    +$ git tag -l
    +$ # git tag -l will list all available tags. In the next command choose the tag v5-34-xx
    +$ # where xx is the highest listed number, e.g. v5-34-32
    +$ git checkout -b v5-34-32 v5-34-32
    +$ # now ROOT is ready to be configured. Below you will find the minimal ROOT configuration needed.
    +$ ./configure --gminimal --enable-asimage --enable-mathmore --enable-minuit2 --enable-xml
    +$ # next will be the make. If running on a multicore CPU you can speed up tremendously by calling
    +$ # make with the option -j <number>, where <number> is the number of threads which you want to give,
    +$ # e.g. make -j8
    +$ make
     

    What is still missing is that the system should be told where to find the ROOT installation, therefore the following is suggested:
      -
    • As superuser create a file /etc/ld.so.conf.d/cern-root.conf where the path to the lib directory of ROOT is added and call /sbin/ldconfig afterwards. In the example mentioned above one way of doing this is:
      -$ echo "$HOME/Apps/root/lib" >> /etc/ld.so.conf.d/cern-root.conf
      -$ /sbin/ldconfig
      +
    • As superuser create a file /etc/ld.so.conf.d/cern-root.conf where the path to the lib directory of ROOT is added and call /sbin/ldconfig afterwards. In the example mentioned above one way of doing this is (<home> has to be the path to your home, e.g. /home/luke_skywalker):
      +$ echo "<home>/Apps/root/lib" >> /etc/ld.so.conf.d/cern-root.conf
      +$ /sbin/ldconfig
       
    • Additionally, as normal user one should append the following lines to the ~/.bashrc and/or ~/.bash_profile (~./profile on Debian like systems, and then either restart the shell or call the same commands once more from the shell) in order to change some path-setting environment variables:
      -$ export ROOTSYS=$HOME/Apps/root
      -$ export PATH=$ROOTSYS/bin:$PATH
      +$ export ROOTSYS=$HOME/Apps/root
      +$ export PATH=$ROOTSYS/bin:$PATH
       

    If an update of ROOT is needed, simple do the following:
    -$ cd $HOME/Apps/root
    -$ git pull
    -$ make
    +$ cd $HOME/Apps/root
    +$ git pull
    +$ make
     

    - -

    3.2 musrfit

    + +

    3.2 musrfit

    When all required software has been set up it can be proceeded with the musrfit installation. First, the most recent source code should be downloaded. The preferred way of doing so is to clone the musrfit repository via git. Assuming the code should be located in $HOME/Apps this is achieved most easily calling from the terminal
    -$ cd $HOME/Apps
    -$ git clone https://bitbucket.org/muonspin/musrfit.git
    +$ cd $HOME/Apps
    +$ git clone https://bitbucket.org/muonspin/musrfit.git
     
    or
    -$ cd $HOME/Apps
    -$ git clone git://gitorious.psi.ch/nemu/musrfit.git
    +$ cd $HOME/Apps
    +$ git clone git://gitorious.psi.ch/nemu/musrfit.git
     

    Note: musrfit has moved from svn to git. In case you still have an old svn version of musrfit, it is advised to remove it first. For svn users: for a smooth transition from svn to git, please check the following link: -Git for Subversion Users - A Cheat Sheet. +Git for Subversion Users - A Cheat Sheet.

    If a local repository clone is already present, one can update it using:
    -$ cd $HOME/Apps/musrfit
    -$ git pull
    -$ # the new version now needs to be compiled and installed
    -$ make
    -$ make install
    +$ cd $HOME/Apps/musrfit
    +$ git pull
    +$ # the new version now needs to be compiled and installed
    +$ make
    +$ make install
     

    -As an alternative (if git is not available), the source code can also be downloaded from the following web-page: musrfit at bitbucket. +As an alternative (if git is not available), the source code can also be downloaded from the following web-page: musrfit at bitbucket.

    After the source-code extraction the autogen.sh script is called to prepare the build environment. If it has been executed successfully the configure script should be ready to collect all the information needed to create the Makefiles. If musrfit should support NeXus data files this has to be enabled by specifying the --enable-NeXus switch when calling configure. For an overview of all available options just call ./configure --help. Besides the standard options there are a few special options which should be mentioned here:

    @@ -322,18 +324,18 @@ After the source-code extraction the autogen.sh script is calle
    --with-qt4
    Set the prefix of the Qt4 installation, e.g. /usr/lib/qt47 (only useful in conjunction with building musredit)
    --enable-NeXus
    Enable the support of NeXus data files (requires the HDF4, HDF5 and NeXus libraries to be installed).
    --disable-editor
    Disable the integrated building of musredit/musrgui. -
    --disable-omp
    Switches off the OpenMP features of musrfit (parallelization of the χ2 calculation when compiled with GCC ≥ 4.2) +
    --disable-omp
    Switches off the OpenMP features of musrfit (parallelization of the χ2 calculation when compiled with GCC ≥ 4.2)

    Normally it should not be necessary to make use of any of the options except for specifying the installation path with --prefix. The other paths should be detected automatically. If this does not work for some reason the configure script will terminate and ask for the information. -When the configure script has been called successfully everything is ready for building the musrfit libraries and executables. A standard installation sequence (without NeXus support) might then look like(3): +When the configure script has been called successfully everything is ready for building the musrfit libraries and executables. A standard installation sequence (without NeXus support) might then look like(3):
    -$ cd $HOME/Apps/musrfit
    -$ sh autogen.sh
    -$ ./configure --prefix=$ROOTSYS
    -$ make
    -$ make install
    -$ /sbin/ldconfig                                  # (as superuser)
    +$ cd $HOME/Apps/musrfit
    +$ sh autogen.sh
    +$ ./configure --prefix=$ROOTSYS
    +$ make
    +$ make install
    +$ /sbin/ldconfig                                  # (as superuser)
     
    In order to finish the installation of musrfit two more things should be done:
    • Define the MUSRFITPATH environment variable containing the path to the musrfit executables and XML files. E.g. if the location of the example above is used append the following line to the ~/.bashrc and ~/.bash_profile (and then either restart the shell or call the same commands once more from the shell):
      @@ -342,54 +344,54 @@ export MUSRFITPATH=/opt/root-system/bin
       
    • Adjust the paths where musrfit will search for data files in the installed musrfit_startup.xml. For detailed information on this XML file refer to the manual.

    - -

    3.3 musredit

    + +

    3.3 musredit

    In the latest version of musrfit the configure script tries to determine automatically if Qt4.6 or higher is set up on the machine. In case this is found, the editor musredit is built already together with musrfit. If not, one can either try to call the configure script with the "--with-qt4" option or install this editor separately:
    -$ cd $HOME/Apps/musrfit/src/musredit
    -$ # for some distributions you will need qmake-qt4 for the next command
    -$ qmake musredit.pro
    +$ cd $HOME/Apps/musrfit/src/musredit
    +$ # for some distributions you will need qmake-qt4 for the next command
    +$ qmake musredit.pro
     
    If everything went fine musredit can be compiled and installed:
    -$ make
    -$ make install
    +$ make
    +$ make install
     
    In case one does not like the executable musredit to be copied to the default installation directory $ROOTSYS/bin the last "make install" can be skipped and the executable can be copied somewhere else instead. However, the musredit_startup.xml should go to the installation directory MUSRFITPATH of the musrfit executables. Eventually, in the installed musredit_startup.xml the path specifications should be adjusted to match the local musrfit installation. For detailed information on this XML file refer to the manual.

    -

    3.4 musrgui

    -If Qt4.6 or higher is not available but Qt3 is set up musrgui can be installed. For this please follow the instructions for the musredit installation where simply every musredit occurrence has to be replaced by musrgui.
    +

    3.4 musrgui

    +If Qt4.6 or higher is not available but Qt3 is set up musrgui can be installed. For this please follow the instructions for the musredit installation where simply every musredit occurrence has to be replaced by musrgui.
    If there are problems during the qmake step, e.g. "uic: File generated with too old version of Qt Designer", this most probably means the Qt4 version of qmake is being used. In order to use the Qt3 version it should be enough to specify the full path to its location when calling it. Within the most GNU/Linux distributions this location will be something like /usr/lib/qt-3.3/bin/qmake.

    -

    3.5 Check of the installation

    +

    3.5 Check of the installation

    In order to perform a quick test for finding out if the installation has been completed successfully, a few msr files together with the corresponding data files can be found in the musrfit source tree at doc/examples/.
    If musrgui has been installed, just open one of the test-*.msr files in the editor and test the musrfit functionalities. Otherwise, if only the terminal should be used, as an initial test for instance the following could be done:
    -$ cd $HOME/Apps/musrfit/doc/examples
    -$ musrview test-histo-ROOT-NPP.msr
    +$ cd $HOME/Apps/musrfit/doc/examples
    +$ musrview test-histo-ROOT-NPP.msr
     

    Notes

    - 3 : In case the normal user has no write permissions to the $ROOTSYS and the installation path the "make install" commands have to be executed as superuser. + 3 : In case the normal user has no write permissions to the $ROOTSYS and the installation path the "make install" commands have to be executed as superuser.


    -

    4 MS Windows

    -Under Windows a native installation is not supported but there is the possibility to run musrfit through Cygwin which has the great advantage that one gains additionally various nice UNIX tools also for other purposes wink
    +

    4 MS Windows

    +Under Windows a native installation is not supported but there is the possibility to run musrfit through Cygwin which has the great advantage that one gains additionally various nice UNIX tools also for other purposes wink
    Please also be aware of the fact that the X server which is going to be installed with Cygwin has to be started (e.g. by selecting it from the "Programs" folder) before any graphical application (musrview, musrgui, etc.) is run.

    One more advice: Please never try to install either ROOT or musrfit from or to a directory containing spaces in the absolute path or in case you do, do not wonder if some errors occur!
    msr files, however, might be saved in such directories like ...\My Documents\...

    -

    4.1 Requirements

    -

    4.1.1 Setting up Cygwin

    -For the start go to the Cygwin website, download the setup file and use it to install Cygwin 1.7. During the installation process you will be asked where you want to install Cygwin and normally the default choice should just be fine. +

    4.1 Requirements

    +

    4.1.1 Setting up Cygwin

    +For the start go to the Cygwin website, download the setup file and use it to install Cygwin 1.7. During the installation process you will be asked where you want to install Cygwin and normally the default choice should just be fine. At some point you will be asked which packages should be installed—make sure that you choose at least the following (or packages with revisions close to the following) in order to fulfill the musrfit requirements and be able to work with this base system:

    a2ps, alternatives, autoconf, automake, base-cygwin, base-files, base-passwd bash, bash-completion, bc, binutils, bison, boost, boost-devel, bzip2, cmake, colorgcc, coreutils, curl, cygutils, cygwin, editrights, fftw3, findutils, flex, font-adobe-dpi100, font-adobe-dpi75, font-alias, font-bitstream-dpi100, font-bitstream-dpi75, font-encodings, font-ibm-type1, font-sun-misc, font-util, font-xfree86-type1, fontconfig, freeglut, gawk, gcc-tools-autoconf, gcc-tools-automake, gcc4, gcc4-core, gcc4-fortran, gcc4-g++, gccmakedep, gd, gettext, ghostscript, ghostscript-fonts-std, giflib, gmp, grep, groff, gsl, gsl-apps, gsl-devel, gv, gzip, inputproto, jasper, jpeg, lapack, less, libboost, libbz2_1, libcharset1, libcurl4, libfftw3-devel, libfftw3_3, libgcc1, libgd-devel, libgif-devel, libGL-devel, libGL1, libGLU-devel, libGLU1, libglut-devel, libglut3, libgmp-devel libgmp3, libgomp1, libICE-devel, libICE6, libjpeg-devel, libjpeg62, liblapack-devel, libmpfr-devel, libmpfr1, libncurses-devel, libncurses9, libOSMesa-devel, libOSMesa7, libpng, libpng14, libpng14-devel, libreadline6, libSM-devel, libSM6, libssh2_1, libstdc++6, libstdc++6-devel, libtiff-devel, libtiff5, libtool, libX11-devel, libX11_6, libXau-devel, libXau6, libXaw7, libxcb-devel, libxcb-xlib-devel libXcursor-devel, libXcursor1, libXdmcp-devel, libXdmcp6, libXext-devel, libXext6, libXfixes-devel, libXfixes3, libXfont-devel, libXfont1, libXft-devel, libXft2, libXi-devel, libXi6, libxkbfile1, libxml2, libxml2-devel, libXmu-devel, libXmu6, libXpm-devel, libXpm4, libXrender-devel, libXrender1, libXt-devel, libXt6, login, m4, make, makedepend, man, mpfr, nano, opengl, openssh, openssl, pdftk, perl, ping, pkg-config, psutils, python, qt3, qt3-bin, qt3-devel, readline, rebase, rgb, rsync, run, screen, sed, subversion, tar, tcltk, terminfo, unzip, util-linux, vim, w32api, which, X-start-menu-icons, xauth, xextproto, xfontsel, xinit, xkbcomp, xkeyboard-config, xkill, xlogo, xlsfonts, xorg-cf-files, xorg-scripts, xorg-server, xproto, xrdb, xrefresh, xset, xterm, zip, zlib, zlib-devel, zlib0, libQt3Support4-devel, libQtAssistantClient4-devel, libQtCore4-devel, libQtDBus4-devel, libQtDesigner4-devel, libQtGui4-devel, libQtHelp4-devel, libQtNetwork4-devel, libQtOpenGL4-devel, libQtScript4-devel, libQtScriptTools4-devel, libQtSql4-devel, libQtSvg4-devel, libQtTest4-devel, libQtWebKit4-devel, libQtXml4-devel, libQtXmlPatterns4-devel @@ -398,55 +400,55 @@ After these installations already most of the required software is present and t

    Since later on the boost header files should be used and in the standard Cygwin installation these are found at a version specific location, the later handling will be easier if a symbolic link to these files is created now in the terminal (in case it had not been present before):
    -$ ln -sf /usr/include/boost-x_yy_z/boost /usr/include/boost
    +$ ln -sf /usr/include/boost-x_yy_z/boost /usr/include/boost
     
    where x_yy_z has to be substituted by the correct version number, e.g. 1_33_1.

    -

    4.1.2 Installation of NeXus requirements (optional)

    -Only if musrfit should support reading data files in the NeXus format the further required software has to be set up. Under Cygwin of all the required libraries only HDF5 is available. The packages hdf5 and libhdf5-devel can be installed through the Cygwin setup. One should also make sure that bison, flex and a package containing /usr/lib/librpc.a (e.g. sunrpc = 4.0-3, but not sunrpc = 4.0-4) are installed. +

    4.1.2 Installation of NeXus requirements (optional)

    +Only if musrfit should support reading data files in the NeXus format the further required software has to be set up. Under Cygwin of all the required libraries only HDF5 is available. The packages hdf5 and libhdf5-devel can be installed through the Cygwin setup. One should also make sure that bison, flex and a package containing /usr/lib/librpc.a (e.g. sunrpc = 4.0-3, but not sunrpc = 4.0-4) are installed.

    All other libraries have to be built from the sources. The following lines will track the installation of JPEG 6b, MXML 2.9, HDF 4.2.7-patch1, and NeXus 4.3.2. The version numbers and source-code locations might of course change with time but should be easily adjustable.
    -$ cd
    -$ mkdir nexus
    -$ cd nexus
    -$ curl http://www.hdfgroup.org/ftp/lib-external/jpeg/src/jpegsrc.v6b.tar.gz -G | tar xz
    -$ cd jpeg-6b
    -$ ./configure --prefix=/usr/local --enable-static
    -$ make
    -$ make install
    -$ cd ..
    -$ curl www.msweet.org/files/project3/mxml-2.9.tar.gz -G | tar xz
    -$ cd mxml-2.9
    -$ ./configure --prefix=/usr/local --enable-static
    -$ make
    -$ make install
    -$ cd ..
    -$ curl http://www.hdfgroup.org/ftp/HDF/HDF_Current/src/hdf-4.2.7-patch1.tar.gz -G | tar xz
    -$ cd hdf-4.2.7-patch1
    -$ ./configure --prefix=/usr/local --enable-static --disable-fortran --with-jpeg=/usr/local
    -$ make
    -$ make install
    -$ cd ..
    -$ curl http://download.nexusformat.org/kits/nexus-4.3.2-20140413svn1919.tar.gz -G | tar xz
    -$ cd nexus-4.3.2-20140413svn1919
    -$ ./configure --prefix=/usr/local --with-hdf4=/usr/local --with-hdf5=/usr --with-xml=/usr/local
    -$ make
    -$ make install
    +$ cd
    +$ mkdir nexus
    +$ cd nexus
    +$ curl http://www.hdfgroup.org/ftp/lib-external/jpeg/src/jpegsrc.v6b.tar.gz -G | tar xz
    +$ cd jpeg-6b
    +$ ./configure --prefix=/usr/local --enable-static
    +$ make
    +$ make install
    +$ cd ..
    +$ curl www.msweet.org/files/project3/mxml-2.9.tar.gz -G | tar xz
    +$ cd mxml-2.9
    +$ ./configure --prefix=/usr/local --enable-static
    +$ make
    +$ make install
    +$ cd ..
    +$ curl http://www.hdfgroup.org/ftp/HDF/HDF_Current/src/hdf-4.2.7-patch1.tar.gz -G | tar xz
    +$ cd hdf-4.2.7-patch1
    +$ ./configure --prefix=/usr/local --enable-static --disable-fortran --with-jpeg=/usr/local
    +$ make
    +$ make install
    +$ cd ..
    +$ curl http://download.nexusformat.org/kits/nexus-4.3.2-20140413svn1919.tar.gz -G | tar xz
    +$ cd nexus-4.3.2-20140413svn1919
    +$ ./configure --prefix=/usr/local --with-hdf4=/usr/local --with-hdf5=/usr --with-xml=/usr/local
    +$ make
    +$ make install
     

    -

    4.1.3 ROOT

    +

    4.1.3 ROOT

    In order to install the ROOT system, there are two possibilities:
      -
    • Download the precompiled Cygwin GCC 4.3 package of the most recent ROOT version from the web page and unpack it in a Cygwin shell (in order to get the line endings correctly) at the final location. Suppose the package has been downloaded to C:\ and the ROOT tree should be in C:\root, this is achieved by:
      -$ cd /cygdrive/c
      -$ tar xzf root_v5.xx.yy.win32gcc-gcc-4.3.tar.gz
      +
    • Download the precompiled Cygwin GCC 4.3 package of the most recent ROOT version from the web page and unpack it in a Cygwin shell (in order to get the line endings correctly) at the final location. Suppose the package has been downloaded to C:\ and the ROOT tree should be in C:\root, this is achieved by:
      +$ cd /cygdrive/c
      +$ tar xzf root_v5.xx.yy.win32gcc-gcc-4.3.tar.gz
       
      -
    • If due to some reason there was no precompiled Cygwin GCC 4.3 package available or ROOT should be built from source, one has to visit the web page, download the 'complete source tree for all systems' and save it for instance in C:\.
      Then go to the Cygwin shell and unpack this source tree, configure(2) it (here using the minimal set of options) and compile it as follows right below:
      -$ cd /cygdrive/c
      -$ tar xzf root_v5.xx.yy.source.tar.gz
      -$ cd root
      -$ ./configure win32gcc --gminimal --enable-asimage --enable-mathmore --enable-minuit2 --enable-xml
      -$ make
      +
    • If due to some reason there was no precompiled Cygwin GCC 4.3 package available or ROOT should be built from source, one has to visit the web page, download the 'complete source tree for all systems' and save it for instance in C:\.
      Then go to the Cygwin shell and unpack this source tree, configure(2) it (here using the minimal set of options) and compile it as follows right below:
      +$ cd /cygdrive/c
      +$ tar xzf root_v5.xx.yy.source.tar.gz
      +$ cd root
      +$ ./configure win32gcc --gminimal --enable-asimage --enable-mathmore --enable-minuit2 --enable-xml
      +$ make
       

    @@ -455,34 +457,34 @@ In order to finalize the ROOT installation and to prepare already t export DISPLAY=:0.0 export QTDIR=/usr/lib/qt4 export ROOTSYS=/cygdrive/c/root -export PATH=$ROOTSYS/bin:$QTDIR/bin:/usr/i686-pc-cygwin/bin:$PATH -export MUSRFITPATH=$ROOTSYS/bin +export PATH=$ROOTSYS/bin:$QTDIR/bin:/usr/i686-pc-cygwin/bin:$PATH +export MUSRFITPATH=$ROOTSYS/bin

    Afterwards close the Cygwin shell and reopen it again for the installation of musrfit.

    -

    4.2 musrfit

    +

    4.2 musrfit

    First, the most recent source code should be downloaded. First, the most recent source code should be downloaded. The preferred way of doing so is to clone the musrfit repository via git. Assuming the code should be located in ~/musrfit this is achieved most easily calling from the terminal
    -$ cd
    -$ git clone https://bitbucket.org/muonspin/musrfit.git 
    +$ cd
    +$ git clone https://bitbucket.org/muonspin/musrfit.git 
     
    or
    -$ cd
    -$ git clone git://gitorious.psi.ch/nemu/musrfit.git
    +$ cd
    +$ git clone git://gitorious.psi.ch/nemu/musrfit.git
     

    Note: musrfit has moved from svn to git. In case you still have an old svn version of musrfit, it is advised to remove it first. For svn users: for a smooth transition from svn to git, please check the following link: -Git for Subversion Users - A Cheat Sheet. +Git for Subversion Users - A Cheat Sheet.

    If the repository had been checked out already before, one can update the local copy using:
    -$ cd musrfit
    -$ git pull
    +$ cd musrfit
    +$ git pull
     

    -As an alternative (if git is not available), the source code can also be downloaded from the following web-page: musrfit at bitbucket. +As an alternative (if git is not available), the source code can also be downloaded from the following web-page: musrfit at bitbucket.

    After the source-code extraction the autogen.sh script is called to prepare the build environment. If it has been executed successfully the configure script should be ready to collect all the information needed to create the Makefiles. If musrfit should support NeXus data files this has to be enabled by specifying the --enable-static --enable-NeXus switches when calling configure. For an overview of all available options just call ./configure --help. Besides the standard options there are a few special options which should be mentioned here:

    @@ -498,31 +500,31 @@ After the source-code extraction the autogen.sh script is calle
    --with-qt4
    Set the prefix of the Qt4 installation, e.g. /usr/lib/qt47 (only useful in conjunction with building musredit)
    --enable-NeXus
    Enable the support of NeXus data files (requires the HDF4, HDF5 and NeXus libraries to be installed).
    --disable-editor
    Disable the integrated building of musredit/musrgui. -
    --disable-omp
    Switches off the OpenMP features of musrfit (parallelization of the χ2 calculation when compiled with GCC ≥ 4.2) +
    --disable-omp
    Switches off the OpenMP features of musrfit (parallelization of the χ2 calculation when compiled with GCC ≥ 4.2)

    Normally it should not be necessary to make use of any of the options except for specifying the installation path with --prefix. The other paths should be detected automatically. If this does not work for some reason the configure script will terminate and ask for the information. When the configure script has been called successfully everything is ready for building the musrfit libraries and executables. A standard installation sequence (without NeXus support) might then look like:
    -$ cd musrfit
    -$ sh autogen.sh
    -$ ./configure --prefix=$ROOTSYS
    -$ make
    -$ make install
    +$ cd musrfit
    +$ sh autogen.sh
    +$ ./configure --prefix=$ROOTSYS
    +$ make
    +$ make install
     
    In order to finish the installation of musrfit the paths where musrfit searches for data files should be adjusted in the installed musrfit_startup.xml (/cygdrive/c/root/bin/musrfit_startup.xml or C:\root\bin\musrfit_startup.xml). The paths have to obey the POSIX naming convention. For detailed information on this XML file refer to the manual.

    - -

    4.3 musredit

    + +

    4.3 musredit

    In the latest version of musrfit the configure script tries to determine automatically if Qt4.5 or higher is set up on the machine. In case this is found, the editor musredit is built already together with musrfit. If not, one can either try to call the configure script with the "--with-qt4" option or install this editor separately:
    -$ cd src/musredit
    -$ qmake-qt4 musredit.pro
    +$ cd src/musredit
    +$ qmake-qt4 musredit.pro
     
    If everything went fine musredit can be compiled and installed:
    -$ make
    -$ make install
    +$ make
    +$ make install
     
    Eventually, in the installed musredit_startup.xml (/cygdrive/c/root/bin/musredit_startup.xml or C:\root\bin\musredit_startup.xml) the path specifications should be adjusted to match the local musrfit installation. For detailed information on this XML file refer to the manual.

    @@ -533,123 +535,123 @@ In case one likes to get the editor started just with starting the X server from export DISPLAY=:0.0 export QTDIR=/usr/lib/qt4 export ROOTSYS=/cygdrive/c/root -export PATH=$ROOTSYS/bin:$QTDIR/bin:/usr/i686-pc-cygwin/bin:$PATH -export MUSRFITPATH=$ROOTSYS/bin +export PATH=$ROOTSYS/bin:$QTDIR/bin:/usr/i686-pc-cygwin/bin:$PATH +export MUSRFITPATH=$ROOTSYS/bin musredit &

    -

    4.4 musrgui

    -If Qt4.5 is not available but Qt3 is set up musrgui can be installed. For this please follow the instructions for the musredit installation where simply every musredit occurrence has to be replaced by musrgui, and qt4 is replaced by qt3. +

    4.4 musrgui

    +If Qt4.5 is not available but Qt3 is set up musrgui can be installed. For this please follow the instructions for the musredit installation where simply every musredit occurrence has to be replaced by musrgui, and qt4 is replaced by qt3.

    -

    4.5 Check of the installation

    +

    4.5 Check of the installation

    In order to perform a quick test for finding out if the installation has been completed successfully, a few msr files together with the corresponding data files can be found in the musrfit source tree at doc/examples/.
    If musrgui has been installed, just open one of the test-*.msr files in the editor and test the musrfit functionalities. Otherwise, if only the terminal should be used, as an initial test for instance the following could be done:
    -$ cd doc/examples
    -$ musrview test-histo-ROOT-NPP.msr
    +$ cd doc/examples
    +$ musrview test-histo-ROOT-NPP.msr
     

    -

    4.6 Possible problems

    +

    4.6 Possible problems

    It might be that especially when running on Windows 7 musredit and musrgui produce errors like a "STATUS_ACCESS_VIOLATION". In this case, try to do the following: Close all Cygwin programs (including the terminals and X server) and run from a Windows command prompt (cmd)
    -$ C:\cygwin\bin\ash.exe /bin/rebaseall
    +$ C:\cygwin\bin\ash.exe /bin/rebaseall
     
    If this does not resolve the problem, try to change the compatibility settings of C:\cygwin\bin\sh.exe and C:\cygwin\bin\bash.exe so that they are executed with administrator privileges.

    -

    5 Mac OS X

    +

    5 Mac OS X

    -With Mac OS X the situation is up to some extent similar like on MS Windows but still different since Mac OS X is a UNIX system. The similarity is that also on OS X a helping framework—either MacPorts or Fink—which provides open-source software is employed to fulfill the basic software requirements of musrfit. In the following, both possibilities (using MacPorts or Fink) are described but it is emphasized here that it should be followed only one of the possible routes. +With Mac OS X the situation is up to some extent similar like on MS Windows but still different since Mac OS X is a UNIX system. The similarity is that also on OS X a helping framework—either MacPorts or Fink—which provides open-source software is employed to fulfill the basic software requirements of musrfit. In the following, both possibilities (using MacPorts or Fink) are described but it is emphasized here that it should be followed only one of the possible routes.

    WARNING: The instruction for Fink haven't been updated/tested for quite a while and likely are slightly outdated.

    -

    5.1 Requirements (MacPorts)

    -

    5.1.1 Everything but ROOT and NeXus

    -Before proceeding with the usage of the MacPorts system first a few useful tools provided by Apple together with OS X (on the installation DVD/CDs) should be installed:
    -
    Xcode tools
    Useful developer tools including for instance the GNU compiler collection. Starting from XCode >= 4.3 the command line tools need to be installed manually. -
    X11
    The X-window system (automatically installed on 10.5 Leopard and 10.6 Snow Leopard). For 10.7 and higher you also will need to install XQuartz +

    5.1 Requirements (MacPorts)

    +

    5.1.1 Everything but ROOT and NeXus

    +Before proceeding with the usage of the MacPorts system first a few useful tools provided by Apple together with OS X (on the installation DVD/CDs) should be installed: + $ Xcode tools: Useful developer tools including for instance the GNU compiler collection. Starting from XCode >= 4.3 the command line tools need to be installed manually.
    +
    X11
    The X-window system (automatically installed on 10.5 Leopard and 10.6 Snow Leopard). For 10.7 and higher you also will need to install XQuartz

    -After installing the Xcode tools go to the MacPorts install page, download the installer for your system and follow the installation instructions on the page. By default the MacPorts system will be installed in /opt/local.
    +After installing the Xcode tools go to the MacPorts install page, download the installer for your system and follow the installation instructions on the page. By default the MacPorts system will be installed in /opt/local.
    To be sure that the newest version of the software is used a MacPorts upgrade should be performed by typing in a terminal:
    -$ sudo port -v selfupdate
    +$ sudo port -v selfupdate
     

    -Remark: MacPorts uses rsync in order to synchronize the list of available packages. It frequently happens that this service is blocked by firewalls. In this case it should be possible to download a local version of the package repository and do the synchronization. +Remark: MacPorts uses rsync in order to synchronize the list of available packages. It frequently happens that this service is blocked by firewalls. In this case it should be possible to download a local version of the package repository and do the synchronization. If this step becomes necessary (and only then) it can be done in the following way:
    1. Get a local version of the repository:
      -$ svn co http://svn.macports.org/repository/macports/trunk/dports ~/dports
      +$ svn co http://svn.macports.org/repository/macports/trunk/dports ~/dports
       
    2. Edit the file /opt/local/etc/macports/sources.conf: At the end of the file, comment the line beginning with "rsync://" and add a new line pointing to your local copy, e.g.
       file:///Users/username/dports
       
    3. Synchronize the packages:
      -$ sudo port -v -d sync
      +$ sudo port -v -d sync
       

    Then the MacPorts system should be set up and can be used to install additional software.
    The installation of the software mentioned above is then done in the terminal:
    -$ sudo port -v install pkgconfig autoconf automake libtool fftw-3 fftw-3-single gsl boost libxml2 qt4-mac
    +$ sudo port -v install pkgconfig autoconf automake libtool fftw-3 fftw-3-single gsl boost libxml2 qt4-mac
     
    With qt4-mac, musredit will be installed. If it happens that you used musrgui in the past, please change over to musredit since there will be no further development for musrgui anymore!

    -

    5.1.2 Installation of NeXus requirements (optional)

    +

    5.1.2 Installation of NeXus requirements (optional)

    Only if musrfit should support reading data files in the NeXus format the further required packages are set up:
    -$ sudo port -v install jpeg6b hdf4 hdf5
    +$ sudo port -v install jpeg6b hdf4 hdf5
     
    Unfortunately, the minixml and NeXus libraries have to be compiled and installed directly from the source code. Given the respective version numbers of 2.9 and 4.3.2 (which are subject to change with time) this can be achieved for example by:
    -$ cd
    -$ curl www.msweet.org/files/project3/mxml-2.9.tar.gz -G | tar xz
    -$ cd mxml-2.9
    -$ ./configure --prefix=/usr/local
    -$ make
    -$ sudo make install
    -$ cd ..
    -$ curl http://download.nexusformat.org/kits/nexus-4.3.2-20140413svn1919.tar.gz -G | tar xz
    -$ cd nexus-4.3.2-20140413svn1919
    -$ ./configure --prefix=/usr/local
    -$ make
    -$ sudo make install
    +$ cd
    +$ curl www.msweet.org/files/project3/mxml-2.9.tar.gz -G | tar xz
    +$ cd mxml-2.9
    +$ ./configure --prefix=/usr/local
    +$ make
    +$ sudo make install
    +$ cd ..
    +$ curl http://download.nexusformat.org/kits/nexus-4.3.2-20140413svn1919.tar.gz -G | tar xz
    +$ cd nexus-4.3.2-20140413svn1919
    +$ ./configure --prefix=/usr/local
    +$ make
    +$ sudo make install
     

    -

    5.1.3 ROOT

    +

    5.1.3 ROOT

    The best way to get ROOT exactly the way needed for musrfit is to install it from source. Before describing it, please make sure that you have installed all required packages listed under Requested Software (e.g. fftw, gsl, etc).

    For the following it is assumed that ROOT shall be installed under $HOME/Apps. If you want to install it somewhere else, just systematically replace the related terms of the following description. For the following list of commands the '$' will be given, the command prompt. Do not enter it! Also some comments will be added starting with a '#' which can be omitted. They are only there to explain what is going on.
    -$ cd $HOME
    -$ # creat the Apps directory if not already present
    -$ mkdir Apps
    -$ cd Apps
    -$ git clone http://root.cern.ch/git/root.git
    -$ cd root
    -$ git tag -l
    -$ # git tag -l will list all available tags. In the next command choose the tag v5-34-xx
    -$ # where xx is the highest listed number, e.g. v5-34-32
    -$ git checkout -b v5-34-32 v5-34-32
    -$ # now ROOT is ready to be configured. Below you will find the minimal ROOT configuration needed.
    -$ ./configure --gminimal --enable-asimage --enable-mathmore --enable-minuit2 --enable-xml
    -$ # next will be the make. If running on a multicore CPU you can speed up tremendously by calling
    -$ # make with the option -j <number>, where <number> is the number of threads which you want to give,
    -$ # e.g. make -j8
    -$ make
    +$ cd $HOME
    +$ # creat the Apps directory if not already present
    +$ mkdir Apps
    +$ cd Apps
    +$ git clone http://root.cern.ch/git/root.git
    +$ cd root
    +$ git tag -l
    +$ # git tag -l will list all available tags. In the next command choose the tag v5-34-xx
    +$ # where xx is the highest listed number, e.g. v5-34-32
    +$ git checkout -b v5-34-32 v5-34-32
    +$ # now ROOT is ready to be configured. Below you will find the minimal ROOT configuration needed.
    +$ ./configure --gminimal --enable-asimage --enable-mathmore --enable-minuit2 --enable-xml
    +$ # next will be the make. If running on a multicore CPU you can speed up tremendously by calling
    +$ # make with the option -j <number>, where <number> is the number of threads which you want to give,
    +$ # e.g. make -j8
    +$ make
     

    -For further details see Installing ROOT from Source. +For further details see Installing ROOT from Source.

    Since Apple in its wisdom decided that programs started from a shell are treated differently than apps if it is coming to system variables, we need to work harder compared to a Linux system.

    -For Mac OS X <= 10.8: +For Mac OS X < 10.8:

    In order to finalize the ROOT installation and to prepare already the installation of musrfit and musrgui / musredit this is a good time for setting necessary environment variables for the use in Mac OS X. Put the following lines (without the comments in parentheses and with the paths adjusted to your local installation) into the file ~/.MacOSX/environment.plist and re-login:
    @@ -658,82 +660,41 @@ In order to finalize the ROOT installation and to prepare already t
     <plist version="1.0">
     <dict>
             <key>MUSRFITPATH</key>
    -        <string>$HOME/Apps/root/bin</string>         (where to find the musrfit executables)
    +        <string>$HOME/Apps/root/bin</string>         (where to find the musrfit executables)
             <key>QTDIR</key>
             <string>/opt/local/lib/qt3mac</string>       (where to find Qt3 (for musrgui) or Qt4 (for musredit))
             <key>ROOTSYS</key>
    -        <string>$HOME/Apps/root</string>             (where to find the ROOT system)
    +        <string>$HOME/Apps/root</string>             (where to find the ROOT system)
     </dict>
     </plist>
     

    -For Mac OS X > 10.8: +For Mac OS X >= 10.8:

    -Here we will need two files placed under ~/Library/LaunchAgents, the first called setenv.ROOTSYS.plist with the content -
    -<?xml version="1.0" encoding="UTF-8"?>
    -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    -  <plist version="1.0">
    -  <dict>
    -  <key>Label</key>
    -  <string>setenv.ROOTSYS</string>
    -  <key>ProgramArguments</key>
    -  <array>
    -    <string>/bin/launchctl</string>
    -    <string>setenv</string>
    -    <string>ROOTSYS</string>
    -    <string>$HOME/Apps/root</string>
    -  </array>
    -  <key>RunAtLoad</key>
    -  <true/>
    -  <key>ServiceIPC</key>
    -  <false/>
    -</dict>
    -</plist>
    -
    -and the second called setenv.MUSRFITPATH.plist in the same directory with the content -
    -<?xml version="1.0" encoding="UTF-8"?>
    -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    -  <plist version="1.0">
    -  <dict>
    -  <key>Label</key>
    -  <string>setenv.MUSRFITPATH</string>
    -  <key>ProgramArguments</key>
    -  <array>
    -    <string>/bin/launchctl</string>
    -    <string>setenv</string>
    -    <string>MUSRFITPATH</string>
    -    <string>$HOME/Apps/root/bin</string>
    -  </array>
    -  <key>RunAtLoad</key>
    -  <true/>
    -  <key>ServiceIPC</key>
    -  <false/>
    -</dict>
    -</plist>
    -
    -

    -Additionally, one might want to put a line in ~/.profile (or ~/.bash_profile) to look for executables also in the ROOT and Qt binary directories: +One needs to add some system variables in ~/.profile:
    -export PATH=$ROOTSYS/bin:$QTDIR/bin:$PATH
    +export ROOTSYS=$HOME/Apps/root
    +launchctl setenv ROOTSYS $ROOTSYS
    +export MUSRFITPATH=$ROOTSYS/bin
    +launchctl setenv MUSRFITPATH $MUSRFITPATH
    +export PATH=$ROOTSYS/bin:$QTDIR/bin:$PATH
     

    -

    5.2 Requirements (Fink)

    -

    5.2.1 Everything but ROOT and NeXus

    -Before proceeding with the usage of the Fink system first a few useful tools provided by Apple together with OS X (on the installation DVD/CDs) should be installed:
    -
    Xcode tools
    Useful developer tools including for instance the GNU compiler collection -
    X11
    The X-window-system (automatically installed on 10.5 Leopard and 10.6 Snow Leopard) +

    5.2 Requirements (Fink)

    +

    5.2.1 Everything but ROOT and NeXus

    +Before proceeding with the usage of the Fink system first a few useful tools provided by Apple together with OS X (on the installation DVD/CDs) should be installed: + $ Xcode tools: Useful developer tools including for instance the GNU compiler collection
    +
    X11
    The X-window-system (automatically installed on 10.5 Leopard and 10.6 Snow Leopard)

    -After installing the Xcode tools go to the Fink download page, download the installer for your system and follow the installation instructions on the page. +After installing the Xcode tools go to the Fink download page, download the installer for your system and follow the installation instructions on the page. By default the Fink system is installed in /sw. After the basic setup make sure that in /sw/etc/fink.conf the line starting with Trees: reads like:
     Trees: local/main stable/main stable/crypto unstable/main
     
    After applying the changes above to the configuration file, the Fink core system should be upgraded to its newest version by typing in a terminal:
    -$ sudo fink selfupdate
    +$ sudo fink selfupdate
     
    Then the Fink system should be set up and can be used to install additional software.
    The Fink installer package also contains a graphical user interface called FinkCommander and it is suggested to use that for installing the following packages (or packages with revisions close to the following)—it is necessary to compile a few packages from source since no binary packages are available, however, this is done automatically by the FinkCommander after you have chosen the software packages for installation: @@ -742,71 +703,71 @@ The Fink installer package also contains a graphical user interface

    Under OS X 10.6 Snow Leopard it will not be possible to install qt3mac since the system is by default a 64-bit system and the old qt3-mac depends on software which is only available for 32-bit systems. It is suggested to install qt4mac instead and use musredit.

    -Also, due to some not fulfilled dependencies, it might not be possible to install FFTW3 through Fink. In this case (and ONLY in THIS case) simply download the FFTW3 source code from its download page and install it from a terminal using the following commands (for the FFTW version 3.x.y): +Also, due to some not fulfilled dependencies, it might not be possible to install FFTW3 through Fink. In this case (and ONLY in THIS case) simply download the FFTW3 source code from its download page and install it from a terminal using the following commands (for the FFTW version 3.x.y):
    -$ tar xz fftw-3.x.y
    -$ cd fftw-3.x.y
    -$ ./configure --enable-single --enable-shared --enable-threads --prefix=/usr/local
    -$ make
    -$ sudo make install
    +$ tar xz fftw-3.x.y
    +$ cd fftw-3.x.y
    +$ ./configure --enable-single --enable-shared --enable-threads --prefix=/usr/local
    +$ make
    +$ sudo make install
     

    Since later on the boost header files should be used and in the standard Fink installation these are found at a version specific location, the later handling will be easier if a symbolic link to this files is created now in the terminal (if it did not exist earlier), e.g.:
    -$ ln -sf /sw/include/boost-x_yy_z/boost /sw/include/boost
    +$ ln -sf /sw/include/boost-x_yy_z/boost /sw/include/boost
     
    where x_yy_z has to be substituted by the correct version number, e.g. 1_41_0.

    -

    5.2.2 Installation of NeXus requirements (optional)

    +

    5.2.2 Installation of NeXus requirements (optional)

    -Only if musrfit should support reading data files in the NeXus format the further required packages can be installed through Fink: +Only if musrfit should support reading data files in the NeXus format the further required packages can be installed through Fink:

    libjpeg hdf hdf5-18 hdf5-18-shlibs

    Unfortunately, the minixml and NeXus libraries have to be compiled and installed directly from the source code. Given the respective version numbers of 2.9 and 4.3.2 (which are subject to change with time) this can be achieved for example by:
    -$ cd
    -$ curl www.msweet.org/files/project3/mxml-2.9.tar.gz -G | tar xz
    -$ cd mxml-2.9
    -$ ./configure --prefix=/usr/local
    -$ make
    -$ sudo make install
    -$ cd ..
    -$ curl http://download.nexusformat.org/kits/nexus-4.3.2-20140413svn1919.tar.gz -G | tar xz
    -$ cd nexus-4.3.2-20140413svn1919
    -$ ./configure --prefix=/usr/local
    -$ make
    -$ sudo make install
    +$ cd
    +$ curl www.msweet.org/files/project3/mxml-2.9.tar.gz -G | tar xz
    +$ cd mxml-2.9
    +$ ./configure --prefix=/usr/local
    +$ make
    +$ sudo make install
    +$ cd ..
    +$ curl http://download.nexusformat.org/kits/nexus-4.3.2-20140413svn1919.tar.gz -G | tar xz
    +$ cd nexus-4.3.2-20140413svn1919
    +$ ./configure --prefix=/usr/local
    +$ make
    +$ sudo make install
     

    -

    5.2.3 ROOT

    -The best way to get ROOT exactly the way needed for musrfit is to install it from source. Before describing it, please make sure that you have installed all required packages listed under Requested Software (e.g. fftw, gsl, etc). +

    5.2.3 ROOT

    +The best way to get ROOT exactly the way needed for musrfit is to install it from source. Before describing it, please make sure that you have installed all required packages listed under Requested Software (e.g. fftw, gsl, etc).

    For the following it is assumed that ROOT shall be installed under $HOME/Apps. If you want to install it somewhere else, just systematically replace the related terms of the following description. For the following list of commands the '$' will be given, the command prompt. Do not enter it! Also some comments will be added starting with a '#' which can be omitted. They are only there to explain what is going on.
    -$ cd $HOME
    -$ # creat the Apps directory if not already present
    -$ mkdir Apps
    -$ cd Apps
    -$ git clone http://root.cern.ch/git/root.git
    -$ cd root
    -$ git tag -l
    -$ # git tag -l will list all available tags. In the next command choose the tag v5-34-xx
    -$ # where xx is the highest listed number, e.g. v5-34-32
    -$ git checkout -b v5-34-32 v5-34-32
    -$ # now ROOT is ready to be configured. Below you will find the minimal ROOT configuration needed.
    -$ ./configure --gminimal --enable-asimage --enable-mathmore --enable-minuit2 --enable-xml
    -$ # next will be the make. If running on a multicore CPU you can speed up tremendously by calling
    -$ # make with the option -j <number>, where <number> is the number of threads which you want to give,
    -$ # e.g. make -j8
    -$ make
    +$ cd $HOME
    +$ # creat the Apps directory if not already present
    +$ mkdir Apps
    +$ cd Apps
    +$ git clone http://root.cern.ch/git/root.git
    +$ cd root
    +$ git tag -l
    +$ # git tag -l will list all available tags. In the next command choose the tag v5-34-xx
    +$ # where xx is the highest listed number, e.g. v5-34-32
    +$ git checkout -b v5-34-32 v5-34-32
    +$ # now ROOT is ready to be configured. Below you will find the minimal ROOT configuration needed.
    +$ ./configure --gminimal --enable-asimage --enable-mathmore --enable-minuit2 --enable-xml
    +$ # next will be the make. If running on a multicore CPU you can speed up tremendously by calling
    +$ # make with the option -j <number>, where <number> is the number of threads which you want to give,
    +$ # e.g. make -j8
    +$ make
     

    -For further details see Installing ROOT from Source. +For further details see Installing ROOT from Source.

    Since Apple in its wisdom decided that programs started from a shell are treated differently than apps if it is coming to system variables, we need to work harder compared to a Linux system.

    -For Mac OS X <= 10.8: +For Mac OS X < 10.8:

    In order to finalize the ROOT installation and to prepare already the installation of musrfit and musrgui / musredit this is a good time for setting necessary environment variables for the use in Mac OS X. Put the following lines (without the comments in parentheses and with the paths adjusted to your local installation) into the file ~/.MacOSX/environment.plist and re-login:
    @@ -815,90 +776,49 @@ In order to finalize the ROOT installation and to prepare already t
     <plist version="1.0">
     <dict>
             <key>MUSRFITPATH</key>
    -        <string>$HOME/Apps/root/bin</string>         (where to find the musrfit executables)
    +        <string>$HOME/Apps/root/bin</string>         (where to find the musrfit executables)
             <key>QTDIR</key>
             <string>/opt/local/lib/qt3mac</string>       (where to find Qt3 (for musrgui) or Qt4 (for musredit))
             <key>ROOTSYS</key>
    -        <string>$HOME/Apps/root</string>             (where to find the ROOT system)
    +        <string>$HOME/Apps/root</string>             (where to find the ROOT system)
     </dict>
     </plist>
     

    -For Mac OS X > 10.8: +For Mac OS X >= 10.8:

    -Here we will need two files placed under ~/Library/LaunchAgents, the first called setenv.ROOTSYS.plist with the content -
    -<?xml version="1.0" encoding="UTF-8"?>
    -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    -  <plist version="1.0">
    -  <dict>
    -  <key>Label</key>
    -  <string>setenv.ROOTSYS</string>
    -  <key>ProgramArguments</key>
    -  <array>
    -    <string>/bin/launchctl</string>
    -    <string>setenv</string>
    -    <string>ROOTSYS</string>
    -    <string>$HOME/Apps/root</string>
    -  </array>
    -  <key>RunAtLoad</key>
    -  <true/>
    -  <key>ServiceIPC</key>
    -  <false/>
    -</dict>
    -</plist>
    -
    -and the second called setenv.MUSRFITPATH.plist in the same directory with the content -
    -<?xml version="1.0" encoding="UTF-8"?>
    -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    -  <plist version="1.0">
    -  <dict>
    -  <key>Label</key>
    -  <string>setenv.MUSRFITPATH</string>
    -  <key>ProgramArguments</key>
    -  <array>
    -    <string>/bin/launchctl</string>
    -    <string>setenv</string>
    -    <string>MUSRFITPATH</string>
    -    <string>$HOME/Apps/root/bin</string>
    -  </array>
    -  <key>RunAtLoad</key>
    -  <true/>
    -  <key>ServiceIPC</key>
    -  <false/>
    -</dict>
    -</plist>
    -
    -

    -Additionally, one might want to put a line in ~/.profile (or ~/.bash_profile) to look for executables also in the ROOT and Qt binary directories: +One needs to add some system variables in ~/.profile:
    -export PATH=$ROOTSYS/bin:$QTDIR/bin:$PATH
    +export ROOTSYS=$HOME/Apps/root
    +launchctl setenv ROOTSYS $ROOTSYS
    +export MUSRFITPATH=$ROOTSYS/bin
    +launchctl setenv MUSRFITPATH $MUSRFITPATH
    +export PATH=$ROOTSYS/bin:$QTDIR/bin:$PATH
     
    -

    5.3 musrfit

    +

    5.3 musrfit

    First, the most recent source code should be downloaded. First, the most recent source code should be downloaded. The preferred way of doing so is to clone the musrfit repository via git. Assuming the code should be located in ~/Apps/musrfit this is achieved most easily calling from the terminal

    -$ cd ~/Apps
    -$ git clone https://bitbucket.org/muonspin/musrfit.git 
    +$ cd ~/Apps
    +$ git clone https://bitbucket.org/muonspin/musrfit.git 
     
    or
    -$ cd ~/Apps
    -$ git clone git://gitorious.psi.ch/nemu/musrfit.git  
    +$ cd ~/Apps
    +$ git clone git://gitorious.psi.ch/nemu/musrfit.git  
     

    Note: musrfit has moved from svn to git. In case you still have an old svn version of musrfit, it is advised to remove it first. For svn users: for a smooth transition from svn to git, please check the following link: -Git for Subversion Users - A Cheat Sheet. +Git for Subversion Users - A Cheat Sheet.

    If a local repository clone is already present, one can update it using:
    -$ cd ~/Apps/musrfit
    -$ git pull
    +$ cd ~/Apps/musrfit
    +$ git pull
     

    -As an alternative (if git is not available), the source code can also be downloaded from the following web-page: musrfit at bitbucket. +As an alternative (if git is not available), the source code can also be downloaded from the following web-page: musrfit at bitbucket.

    After the source-code extraction the autogen.sh script is called to prepare the build environment. If it has been executed successfully the configure script should be ready to collect all the information needed to create the Makefiles. If musrfit should support NeXus data files this has to be enabled by specifying the --enable-NeXus switch when calling configure. For an overview of all available options just call ./configure --help. Besides the standard options there are a few special options which should be mentioned here:

    @@ -914,49 +834,49 @@ After the source-code extraction the autogen.sh script is calle
    --with-qt4
    Set the prefix of the Qt4 installation, e.g. /opt/local/lib/qt-4.7 (only useful in conjunction with building musredit)
    --enable-NeXus
    Enable the support of NeXus data files (requires the HDF4, HDF5 and NeXus libraries to be installed).
    --disable-editor
    Disable the integrated building of musredit/musrgui. -
    --disable-omp
    Switches off the OpenMP features of musrfit (parallelization of the χ2 calculation when compiled with GCC ≥ 4.2) +
    --disable-omp
    Switches off the OpenMP features of musrfit (parallelization of the χ2 calculation when compiled with GCC ≥ 4.2)

    Normally it should not be necessary to make use of any of the options except for specifying the installation path with --prefix. The other paths should be detected automatically. If this does not work for some reason the configure script will terminate and ask for the information. When the configure script has been called successfully everything is ready for building the musrfit libraries and executables. A standard installation sequence (without NeXus support) might then look like:
    -$ cd ~/Apps/musrfit
    -$ sh autogen.sh
    -$ ./configure --prefix=$ROOTSYS
    -$ make
    -$ make install
    +$ cd ~/Apps/musrfit
    +$ sh autogen.sh
    +$ ./configure --prefix=$ROOTSYS
    +$ make
    +$ make install
     
    In order to finish the installation of musrfit the paths where musrfit searches for data files should be adjusted in the installed musrfit_startup.xml ($ROOTSYS/bin/musrfit_startup.xml). For detailed information on this XML file refer to the manual.

    - -

    5.4 musredit

    -In the latest version of musrfit the configure script tries to determine automatically if Qt4.5 or higher is set up on the machine. In case this is found, the editor musredit is built already together with musrfit. If not, one can either try to call the configure script with the "--with-qt4" option or install this editor separately: + +

    5.4 musredit

    +In the latest version of musrfit the configure script tries to determine automatically if Qt4.5 or higher is set up on the machine. In case this is found, the editor musredit is built already together with musrfit. If not, one can either try to call the configure script with the "--with-qt4" option (MacPort: for Mac OS X < 10.11 this is likley /opt/local/libexec/qt4, for Mac OS X >= 10.11 this is likely /usr/local/libexec/qt4) or install this editor separately:
    -$ cd ~/Apps/musrfit/src/musredit
    -$ qmake musredit.pro
    +$ cd ~/Apps/musrfit/src/musredit
    +$ qmake musredit.pro
     
    If everything went fine musredit can be compiled and installed:
    -$ make
    -$ make install
    +$ make
    +$ make install
     
    The last command copies musredit.app to the standard program directory /Applications and the musredit_startup.xml to $ROOTSYS/bin/musredit_startup.xml. Eventually, in the installed musredit_startup.xml the path specifications have to be adjusted to match the local musrfit installation. For detailed information on this XML file refer to the manual.

    -

    5.5 musrgui (obsolete)

    +

    5.5 musrgui (obsolete)

    If Qt3 is set up the installation of the musrfit editor can be done as follows from within the shell:
    -$ cd ~/Apps/musrfit/src/musrgui
    -$ qmake musrgui.pro
    -$ make
    -$ make install
    +$ cd ~/Apps/musrfit/src/musrgui
    +$ qmake musrgui.pro
    +$ make
    +$ make install
     
    -The last command copies musrgui.app to the standard program directory /Applications (4) and the musrgui_startup.xml to $ROOTSYS/bin/musrgui_startup.xml. Eventually, in the installed musrgui_startup.xml the path-specifications have to be adjusted to match the local musrfit installation. For detailed information on this XML file refer to the manual. +The last command copies musrgui.app to the standard program directory /Applications (4) and the musrgui_startup.xml to $ROOTSYS/bin/musrgui_startup.xml. Eventually, in the installed musrgui_startup.xml the path-specifications have to be adjusted to match the local musrfit installation. For detailed information on this XML file refer to the manual.

    Under some circumstances it might happen, that if musrgui was called from Finder the necessary libraries for executing musrfit could not be found. In that case, the only workaround for the moment is to export the environment variable DYLD_LIBRARY_PATH in the shell and call musrgui from a terminal! In order to accomplish that, add the following lines to ~/.profile and call musrgui with the specified command (e.g. mgui):
    -export DYLD_LIBRARY_PATH=/opt/root-system/lib:/sw/lib:$DYLD_LIBRARY_PATH
    +export DYLD_LIBRARY_PATH=/opt/root-system/lib:/sw/lib:$DYLD_LIBRARY_PATH
     alias mgui='/Applications/musrgui.app/Contents/MacOS/musrgui'
     

    @@ -964,94 +884,45 @@ alias mgui='/Applications/musrgui.app/Contents/MacOS/musrgui'

    Notes

    - 2 : When using GCC ≥ 4.2 please make sure that the environment variables USE_PARALLEL_MINUIT2 and USE_OPENMP are not set! Otherwise MINUIT2 will be compiled with parallelization support and cannot be used together with musrfit afterwards since the musrfit code is not fully thread-safe! When compiled with GCC ≥ 4.2 musrfit itself will parallelize the χ2 calculation. + 2 : When using GCC ≥ 4.2 please make sure that the environment variables USE_PARALLEL_MINUIT2 and USE_OPENMP are not set! Otherwise MINUIT2 will be compiled with parallelization support and cannot be used together with musrfit afterwards since the musrfit code is not fully thread-safe! When compiled with GCC ≥ 4.2 musrfit itself will parallelize the χ2 calculation.

    - 4 : In the case qt3-mac has not been installed, there will be no musrgui.app but only the executable musrgui which will be placed in the directory $ROOTSYS/bin and has to be called from the terminal. + 4 : In the case qt3-mac has not been installed, there will be no musrgui.app but only the executable musrgui which will be placed in the directory $ROOTSYS/bin and has to be called from the terminal.


    -

    5.6 Check of the installation

    +

    5.6 Check of the installation

    In order to perform a quick test for finding out if the installation has been completed successfully, a few msr files together with the corresponding data files can be found in the musrfit source tree at doc/examples/.
    If musrgui has been installed, just open one of the test-*.msr files in the editor and test the musrfit functionalities. Otherwise, if only the terminal should be used, as an initial test for instance the following could be done:
    -$ cd ~/Apps/musrfit/doc/examples
    -$ musrview test-histo-ROOT-NPP.msr
    +$ cd ~/Apps/musrfit/doc/examples
    +$ musrview test-histo-ROOT-NPP.msr
     

    --- AS & BMW
-
- - - - - - - -
- -
- Edit | Attach | Print version | PDF | History: r61 < r60 < r59 < r58 | Backlinks | View wiki text | Refresh | More topic actions -
-
Topic revision: r61 - 03 Jul 2015, AndreasSuter
-
-
-
 
-
-
-
- -
-

    -

    -
-
-
-
Ideas, requests, problems regarding PSI Wiki? Send feedback
+
This topic: MUSR > WebHome > MusrFit > MusrFitSetup
+Topic revision: 23 Nov 2015, suter_a
-
- - - +
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding PSI Wiki? Send feedback
+
+
+
+

-

-

-

\ No newline at end of file + + + + + + + + + + + \ No newline at end of file diff --git a/doc/html/user/MUSR/MusrGui.html b/doc/html/user/MUSR/MusrGui.html index fec3b3c6..aa20246d 100644 --- a/doc/html/user/MUSR/MusrGui.html +++ b/doc/html/user/MUSR/MusrGui.html @@ -1,35 +1,72 @@ - + - - + + - MUSR :: MusrGui - + MUSR :: MusrGui + + + + + + + - + - - + + + + + + + + - - - - - - - -
+ + + + + + + + + + + + + + + + + + + + +
-
+
-
-
+
+
+
+

musredit / (musrgui)

-

- - - -

-

-

-

-

-

-
-

musredit / (musrgui)

-

-
    +

    -

    1 Introduction

    -musredit and musrgui are editors which also provide a graphical user interface to the programs contained in the musrfit suite and are intended to help the user handle musrfit msr files. They are implemented in C++ and use the Qt framework. Principally, musrgui and musredit are doing the same, but are based on different Qt versions. musrgui is based on Qt 3.x and will only be maintained on bug-fixing level since the Qt 3.x licensing is less straight forward than the Qt 4.x one. musredit is based on Qt 4.6 (or above) and this is the program which will be developed further.
    +

    1 Introduction

    +musredit and musrgui are editors which also provide a graphical user interface to the programs contained in the musrfit suite and are intended to help the user handle musrfit msr files. They are implemented in C++ and use the Qt framework. Principally, musrgui and musredit are doing the same, but are based on different Qt versions. musrgui is based on Qt 3.x and will only be maintained on bug-fixing level since the Qt 3.x licensing is less straight forward than the Qt 4.x one. musredit is based on Qt 4.6 (or above) and this is the program which will be developed further.
    On this documentation page only the features related to musrfit are described—the basic editor functions which should be self-explanatory are not. Before going on using musrgui / musredit it is strongly recommended to read the manual of musrfit first!

    -

    2 Available Executables, Configuration Files and their Basic Usage

    - -

    2.1 musredit / (musrgui)

    +

    2 Available Executables, Configuration Files and their Basic Usage

    + +

    2.1 musredit / (musrgui)

    musredit / musrgui are the editor executables. If called from within a shell they accept a few optional parameters:
    <msr_files>
    file names of the msr files that should be opened in separate editor tabs on startup of musrgui / musredit.
    --help
    displays a small help notice in the shell explaining the basic usage of the program @@ -149,8 +189,8 @@ On this documentation page only the features related to musrfit are

    If called without any parameters an empty editor window opens.

    - -

    2.2 musredit_startup.xml / musrgui_startup.xml

    + +

    2.2 musredit_startup.xml / musrgui_startup.xml

    musredit_startup.xml / musrgui_startup.xml are configuration files located at the musredit / musrgui binary path. It is also possible to have another version of this file in the working directory which then will be used!

    In this file the following XML tags are allowed to define settings and might proof useful for all users of musredit / musrgui:
    @@ -190,13 +230,13 @@ Additionally, there are some settings defined in this XML file which should be o
    <help_section></help_section>
    define various help messages in this environment
    <help_main>HELP TEXT</help_main>
    set the main help message HELP TEXT here (inside a <help_section> environment)
    -
    <func_pixmap_path>PIX_PATH</func_pixmap_path>
    set the path PIX_PATH to LaTeX_logo.png pixmaps visualizing the various supported theory functions +
    <func_pixmap_path>PIX_PATH</func_pixmap_path>
    set the path PIX_PATH to LaTeX_logo.png pixmaps visualizing the various supported theory functions
    <theory_functions></theory_functions>
    define the functions for a msr file's THEORY block according to the correct syntax in this environment
    <func></func>
    specify a function here (inside a <theory_functions> environment)
    <name>NAME</name>
    the NAME of the function in the msr file (inside a <func> environment)
    <comment>COMMENT</comment>
    description of the used parameters (inside a <func> environment)
    <label>LABEL</label>
    LABEL of the function in the musrgui / musredit menu (inside a <func> environment) -
    <pixmap>PIXMAP</pixmap>
    LaTeX_logo.png picture used to describe the function and stored in the PIX_PATH (inside a <func> environment) +
    <pixmap>PIXMAP</pixmap>
    LaTeX_logo.png picture used to describe the function and stored in the PIX_PATH (inside a <func> environment)
    <params>N</params>
    number of parameters N used by the function (inside a <func> environment)
    @@ -266,141 +306,94 @@ An example of the musrgui_startup.xml looks like: </musrgui_startup>

    - -

    3 musrfit Features

    + +

    3 musrfit Features

    The features of musrfit which can be accessed by the graphical front ends musrgui / musredit are described in the following. All functions can either be called by choosing them from the MusrFit menu, by clicking the respective button in the MusrFit bar, or by using a keyboard shortcut. -

    -
    musrasym.png Asymmetry Default (Alt+a)
    Generate a full msr file suitable for the fit type 2 of musrfit from defaults. Calling this function opens a window where the relative path and file name to a data file as well as the file format that should be used have to be specified. For instance if the data file /path-to-datadir/2007/lem07_his_8472.root should be used and /path-to-datadir is on the path where musrfit looks for data files then the file name would be 2007/lem07_his_8472 and the file format either ROOT-NPP or ROOT-PPC. -
    -

    -
    musrsinglehisto.png Single-Histogram Default (Alt+h)
    Generate a full msr file suitable for the fit type 0 of musrfit from defaults. Calling this function opens a window where the relative path and file name to a data file as well as the file format that should be used have to be specified. For instance if the data file /path-to-datadir/d2007/deltat_pta_gps_8472.bin should be used and /path-to-datadir is on the path where musrfit looks for data files then the file name would be d2007/deltat_pta_gps_8472 and the file format PSI-BIN. -
    -

    -
    musrcalcchisq.png Calculate Chisq (Alt+c)
    musrfit <msr_file> --chisq-only
    is called for the <msr_file> selected in the editor. For further information refer to the manual of musrfit. -
    -

    -
    musrfit.png Fit (Alt+f)
    musrfit <msr_file> [optional parameters]
    is called for the <msr_file> selected in the editor. The optional parameters may be chosen under Preferences. For further information refer to the manual of musrfit. -
    -

    -
    musrswap.png Swap Msr ↔ Mlog (Alt+s)
    Swap the msr and mlog files. E.g., for a file called 8472_zf.msr, this is copied to 8472_zf.mlog and vice versa. -
    -

    -
    musrmsr2data.png Msr2data (Alt+m)
    Opens a graphical interface to the msr2data program described in detail in its own manual. -
    -

    -
    musrview.png View (Alt+v)
    musrview <msr_file>
    is called for the <msr_file> selected in the editor. For further information refer to the manual of musrfit. -
    -

    -
    musrt0.png T0 (Alt+t)
    musrt0 <msr_file>
    is called for the <msr_file> selected in the editor. For further information refer to the manual of musrfit. -
    -

    -
    musrFT.png Raw Fourier
    musrFT <with-many-options> is called. For a proper documentation of it, check the manual of musrFT. -

    -
    -
    musrprefs.png Preferences (Alt+p)
    Opens a window in which the optional parameters that should be passed to musrfit can be chosen. These options are --keep-mn2-output, --dump ascii, --dump root, and --title-from-data-file. For further information refer to the manual of musrfit. Additionally, the access to musrt0 can be enabled temporarily. -
    -

    -
    musrdump.png Dump Header
    Opens a file dialog which allows to select a μSR data file. When this file can be read, the run header info is dumped into a dialog window. Essentially this calls dump_header internally. -
    + $ musrasym.png Asymmetry Default (Alt+a): Generate a full msr file suitable for the fit type 2 of musrfit from defaults. Calling this function opens a window where the relative path and file name to a data file as well as the file format that should be used have to be specified. For instance if the data file /path-to-datadir/2007/lem07_his_8472.root should be used and /path-to-datadir is on the path where musrfit looks for data files then the file name would be 2007/lem07_his_8472 and the file format either ROOT-NPP or ROOT-PPC.

    - -

    4 Editor Features

    + $ musrsinglehisto.png Single-Histogram Default (Alt+h): Generate a full msr file suitable for the fit type 0 of musrfit from defaults. Calling this function opens a window where the relative path and file name to a data file as well as the file format that should be used have to be specified. For instance if the data file /path-to-datadir/d2007/deltat_pta_gps_8472.bin should be used and /path-to-datadir is on the path where musrfit looks for data files then the file name would be d2007/deltat_pta_gps_8472 and the file format PSI-BIN. +

    + $ musrcalcchisq.png Calculate Chisq (Alt+c):
    musrfit <msr_file> --chisq-only
    is called for the <msr_file> selected in the editor. For further information refer to the manual of musrfit. +

    + $ musrfit.png Fit (Alt+f):
    musrfit <msr_file> [optional parameters]
    is called for the <msr_file> selected in the editor. The optional parameters may be chosen under Preferences. For further information refer to the manual of musrfit. +

    + $ musrswap.png Swap Msr ↔ Mlog (Alt+s): Swap the msr and mlog files. E.g., for a file called 8472_zf.msr, this is copied to 8472_zf.mlog and vice versa. +

    + $ musrmsr2data.png Msr2data (Alt+m): Opens a graphical interface to the msr2data program described in detail in its own manual. +

    + $ musrview.png View (Alt+v):
    musrview <msr_file>
    is called for the <msr_file> selected in the editor. For further information refer to the manual of musrfit. +

    + $ musrt0.png T0 (Alt+t):
    musrt0 <msr_file>
    is called for the <msr_file> selected in the editor. For further information refer to the manual of musrfit. +

    + $ musrFT.png Raw Fourier: musrFT <with-many-options> is called. For a proper documentation of it, check the manual of musrFT. +

    + + $ musrprefs.png Preferences (Alt+p): Opens a window in which the optional parameters that should be passed to musrfit can be chosen. These options are --keep-mn2-output, --dump ascii, --dump root, and --title-from-data-file. For further information refer to the manual of musrfit. Additionally, the access to musrt0 can be enabled temporarily. +

    + $ musrdump.png Dump Header: Opens a file dialog which allows to select a μSR data file. When this file can be read, the run header info is dumped into a dialog window. Essentially this calls dump_header internally. +

    + +

    4 Editor Features

    Besides the functions described above and which are mostly interfacing musrfit/msr2data the editors of musrgui / musredit offer various functions for manipulating especially musrfit msr files: -musrgui editor features
      +musrgui editor features
      • Upon right-clicking an open msr file a menu as shown to the right is displayed which offers the addition of any valid msr file block or theory function. In case a simple theory function is chosen, the function will be inserted into the THEORY block using the correct syntax. If one chooses to add a whole block to the file a dialog opens in which the necessary information for each block as described in the manual of musrfit can be supplied. This feature is available only in musrgui. In musredit the respective functions can be accessed through the Edit menu.
      • In order to comment or uncomment lines in a msr file select the according lines and apply Edit → (Un)Comment or use the keyboard shortcut Ctrl+(Shift)+m.

      - -

      5 Bugtracking

      + +

      5 Bugtracking

      -For reporting bugs or requesting new features and improvements please use the Bitbucket Tracker, PSI Tracker (PSI account needed) or send an e-mail to A. Suter. +For reporting bugs or requesting new features and improvements please use the Bitbucket Tracker, PSI Tracker (PSI account needed) or send an e-mail to A. Suter.

      --- AS & BMW
-
- - - - - - - -
- -
- Edit | Attach | Print version | PDF | History: r20 < r19 < r18 < r17 | Backlinks | View wiki text | Refresh | More topic actions -
-
Topic revision: r20 - 19 Feb 2015, AndreasSuter
-
-
-
-
 
-
-
-
- -
-

    -

    -
-
-
-
Ideas, requests, problems regarding PSI Wiki? Send feedback
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
Topic attachments
I Attachment Action Size Date Who Comment
musrgui-editor-v0.pngpng musrgui-editor-v0.png manage 37 K 10 Apr 2009 - 14:53 UnknownUser musrgui options available upon right clicking a open msr-file
+
+
This topic: MUSR > WebHome > MusrFit > MusrGui
+Topic revision: 19 Feb 2015, suter_a
-
- - - +
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding PSI Wiki? Send feedback
+
+
+
+

-

-

-

\ No newline at end of file + + + + + + + + + + + \ No newline at end of file diff --git a/doc/html/user/MUSR/MusrRoot.html b/doc/html/user/MUSR/MusrRoot.html index 8c58a595..5478a392 100644 --- a/doc/html/user/MUSR/MusrRoot.html +++ b/doc/html/user/MUSR/MusrRoot.html @@ -1,35 +1,72 @@ - + - - + + - MUSR :: MusrRoot - + MUSR :: MusrRoot + + + + + + + - + - - + + + + + + + + - - - - - - - -
+ + + + + + + + + + + + + + + + + + + + +
-
+
-
-
+
+
+
+

MusrRoot

-

- - - -

-

-

-

-

-

-
-

MusrRoot

-

-
    +

    -

    1 Introduction

    +

    1 Introduction

    Until 2011 different μSR file formats were used within PSI. The bulk-μSR instruments were writing their data in the PSI-BIN file format, which is a fixed binary format with rather stringent limitations. The LE-μSR (LEM) instrument was using a ROOT (CERN) based file format which was tightly tailored to the special needs of the LEM instrument. This situation was unsatisfactorily and hence it was decided to move forward to a open file format called MusrRoot to be described in the following.

    -

    2 Some Basics Concerning ROOT Files

    -The μSR data acquisition systems at PSI are utilizing MIDAS (see Midas Home Page ). The MIDAS analyzer, which is responsible to build histograms, especially the μSR decay histograms, makes it very easy to build ROOT (see ROOT/CERN home page ) histogram objects (these are TH1F objects for μSR decay histograms). ROOT is a C++ object-oriented data mining frame work. These histograms can be collected and saved in ROOT files (TFile). In order to ease the understanding of the upcoming definitions, a few ROOT related things shall be summaries here. For details concerning the ROOT frame work documentation please check ROOT/CERN Users Guide and ROOT/CERN Reference Guide . +

    2 Some Basics Concerning ROOT Files

    +The μSR data acquisition systems at PSI are utilizing MIDAS (see Midas Home Page ). The MIDAS analyzer, which is responsible to build histograms, especially the μSR decay histograms, makes it very easy to build ROOT (see ROOT/CERN home page ) histogram objects (these are TH1F objects for μSR decay histograms). ROOT is a C++ object-oriented data mining frame work. These histograms can be collected and saved in ROOT files (TFile). In order to ease the understanding of the upcoming definitions, a few ROOT related things shall be summaries here. For details concerning the ROOT frame work documentation please check ROOT/CERN Users Guide and ROOT/CERN Reference Guide .

    ROOT files (TFile) are binary files which can hold any kind of objects. A TFile is organized similarly to a directory structure of an operating system. Within the ROOT framework, there is a TFile browser available which allows to inspect these files. This browser (TBrowser) will show all object saved in the TFile directly, if they derive from TObject.

    @@ -164,7 +204,7 @@ The MusrRoot file format to be described below is only using a smal

    Since all these objects are deriving form TObject, they will be directly accessible via the TBrowser -object. For instance, the μ-decay-histograms can be directly plotted, are even fitted, out of the box.

    -

    3 MusrRoot an Extensible Open File Format for μSR

    +

    3 MusrRoot an Extensible Open File Format for μSR

    As mentioned before, ROOT files are open-file-format files meaning that they can contain more entries (and most probably will) than the ones specified in the following. The specified ones will be the mandatory ones for all instruments. Before defining all mandatory entries, the MusrRoot file structure shall be sketched.

    @@ -194,7 +234,7 @@ RunHeader ---| where hDecay001, etc. are ROOT histograms (to be more specific: TH1F), containing the μSR decay histograms. There can be as many as needed, especially there is no limitation about their length. The histogram object names will be hDecayXXX, where XXX (leading zero int, i.e. %03d in C/C++ notation, starting with `1') is the histogram number. The title and name of the histogram (see description of the TH1F ROOT class) contains the label of the histogram, like `top', `forward', etc. How many of these histograms are present is accessible through the RunInfo folder in which the necessary header information are found (details see next sections). The folder SCAnaModule contains histograms of some of the slow-control parameters, as for instance the sample temperature versus time, the applied field versus time, etc. Again the label of the histogram will give more specific information about its content.

    -

    3.1 Run Information Contained in RunHeader

    +

    3.1 Run Information Contained in RunHeader

    The RunHeader contains all needed meta-information to describe a μSR-run. The list of the minimal number of required "folders" of the RunHeader is given in the following structure:

    @@ -206,40 +246,40 @@ RunHeader (TFolder) ---|
                            |- BeamlineInfo (TObjArray)
     

    -In brackets the object type is given. RunInfo contains most information relevant for the user and will be itemized Sec. RunInfo Overview and RunInfo Required. DetectorInfo contains detector specific information, like detector name, time zero bin, etc. (details in Sec. DetectorInfo Required). SampleEnvironmentInfo (details in Sec. SampleEnvironmentInfo Required), and MagneticFieldEnvironmentInfo (details in Sec. MagneticFieldEnvironmentInfo Required) store additional, more detailed information concerning the sample environment. BeamlineInfo stores beamline relevant information (details in Sec. BeamlineInfo Required). +In brackets the object type is given. RunInfo contains most information relevant for the user and will be itemized Sec. RunInfo Overview and RunInfo Required. DetectorInfo contains detector specific information, like detector name, time zero bin, etc. (details in Sec. DetectorInfo Required). SampleEnvironmentInfo (details in Sec. SampleEnvironmentInfo Required), and MagneticFieldEnvironmentInfo (details in Sec. MagneticFieldEnvironmentInfo Required) store additional, more detailed information concerning the sample environment. BeamlineInfo stores beamline relevant information (details in Sec. BeamlineInfo Required).

    Before elaborating more on the required items within this structure, a few words on the ROOT types used here: RunHeader is a TFolder object. All the "sub-directory" entries are of type TObjArray and collect items of type TObjString or other TObjArray (i.e. sub-directories and sub-sub-directories, etc.).

    - -

    3.1.1 RunInfo Overview

    + +

    3.1.1 RunInfo Overview

    - +
    - - - + + + - + - - + + - - + + - + @@ -249,7 +289,7 @@ Before elaborating more on the required items within this structure, a few words - + @@ -259,52 +299,52 @@ Before elaborating more on the required items within this structure, a few words - + - + - + - + - + - + - + - + - + - + @@ -314,64 +354,64 @@ Before elaborating more on the required items within this structure, a few words - + - + - + - + - + - + - + - +
    Name Internal Type Comment Name Internal Type Comment
    Version TString TString SVN version of TMusrRunHeader
    Generic Validator URL TString URL of the generic MusrRoot validation xsd-file. TString URL of the generic MusrRoot validation xsd-file.
    Specific Validator URL TString URL of the instrument specific validation xsd-file. TString URL of the instrument specific validation xsd-file.
    Generator TString TString Program which wrote the MusrRoot file,
    File Name TString TString File name of the MusrRoot file,
    Run Title TString TString  
    Run Number Int_t Int_t  
    Run Start Time TString TString ISO 8601 date time
    Run Stop Time TString TString ISO 8601 date time
    Run Duration TMusrRunPhysicalQuantity TMusrRunPhysicalQuantity run duration in sec
    Laboratory TString TString e.g. PSI
    Instrument TString TString e.g. GPS
    Muon Beam Momentum TMusrRunPhysicalQuantity TMusrRunPhysicalQuantity e.g. 28.1 MeV/c
    Muon Species TString TString positive, or negative muon
    Muon Source TString TString e.g. Target E - Low Energy Muons or
    Setup TString TString  
    Comment TString TString  
    Sample Name TString TString  
    Sample Temperature TMusrRunPhysicalQuantity TMusrRunPhysicalQuantity e.g. 3.21 +- 0.05 K; SP: 3.2; CF1
    Sample Magnetic Field TMusrRunPhysicalQuantity TMusrRunPhysicalQuantity e.g. 350.002 +- 0.005 G; SP: 350; WXY
    No of Histos Int_t Int_t  
    Time Resolution TMusrRunPhysicalQuantity TMusrRunPhysicalQuantity e.g. 0.1953125 ns
    RedGreen Offsets TIntVector TIntVector e.g. 0; 20

    These entries should be clear except for the RedGreen Offsets and the column "Internal Type" which shortly will be discussed before specifying the content of the other required folders.

      -
    1. RedGreen Offsets: in case experiments are performed with external stimuli, there will be a collection of related histograms. For instance for electrical field experiments, there will be histograms for field on/off, doubling the number of needed histograms. In order to distinguish them easier in the data file, the RedGreen Offsets were introduced. One selection of histograms (assuming for the moment 8 detectors) will be numbered from 1 to 8 (lets say the field off ones). The other set of histograms (field on in this example) will then start with 21 through 28 (see table above). The same will be true for the detector information (see Sec. DetectorInfo Required). The entry No of Histos will only give 8 for the given example, meaning that red/green multiplication is defined rather via RedGreen Offsets than the number of histograms. -
    2. Internal Types: in order to ease the handling of the MusrRoot run header, a class TMusrRunHeader is available which deals with it. The "Internal Type" specified, corresponds to the internal representation in within this class. In the MusrRoot file these entries are all saved as browsable ROOT strings (TObjString). The only special type is TMusrRunPhysicalQuantity which is introduced to deal with physical quantities. They always can be represented in the following way: +
    3. RedGreen Offsets: in case experiments are performed with external stimuli, there will be a collection of related histograms. For instance for electrical field experiments, there will be histograms for field on/off, doubling the number of needed histograms. In order to distinguish them easier in the data file, the RedGreen Offsets were introduced. One selection of histograms (assuming for the moment 8 detectors) will be numbered from 1 to 8 (lets say the field off ones). The other set of histograms (field on in this example) will then start with 21 through 28 (see table above). The same will be true for the detector information (see Sec. DetectorInfo Required). The entry No of Histos will only give 8 for the given example, meaning that red/green multiplication is defined rather via RedGreen Offsets than the number of histograms. +
    4. Internal Types: in order to ease the handling of the MusrRoot run header, a class TMusrRunHeader is available which deals with it. The "Internal Type" specified, corresponds to the internal representation in within this class. In the MusrRoot file these entries are all saved as browsable ROOT strings (TObjString). The only special type is TMusrRunPhysicalQuantity which is introduced to deal with physical quantities. They always can be represented in the following way:
     <property name> <value> +- <estimated error> <unit>; SP: <demand>; <description>
     
    -Not all of these values are needed to be given and depending on which are given, the representation in the MusrRoot file will be different (handled by TMusrRunHeader). Examples are given in the comment column of the table above. For details see TMusrRunPhysicalQuantity - Possible Representations. +Not all of these values are needed to be given and depending on which are given, the representation in the MusrRoot file will be different (handled by TMusrRunHeader). Examples are given in the comment column of the table above. For details see TMusrRunPhysicalQuantity - Possible Representations.

    A mock-up TBrowser print-out would look like the one shown in the following figure. You might notice, that at the end of each entry you find a " -@X ", where X is a number. This is an encoding of the internal type of the entry and is the price to be payed not using derived types. The next section will explain this in much more detail.

    -=TMusrRunHeader= mock up. The red shaded entries are of type =TMusrRunPhysicalQuantity= +TMusrRunHeader  mock up. The red shaded entries are of type  TMusrRunPhysicalQuantity

    TMusrRunHeader mock up. The red shaded entries are of type TMusrRunPhysicalQuantity

    - -

    4 TMusrRunHeader Concept

    + +

    4 TMusrRunHeader Concept

    The different μSR instruments need different information to be written into the data file (next to the most important ones: the histograms). The above defined properties are the minimal number of required ones. There are different possible approaches to deal with it on the implementation level.

    • A base class dealing with minimal required standard is defined. Afterwards for each instrument a class is derived which is extending the base class to the needs of the instrument. @@ -391,10 +431,10 @@ Even though the first approach is very clean, it would mean a lot of maintenance

      These properties can be collected by themselves in form of vectors. This way any needed information can be written into the ROOT file. The class TMusrRunHeader is implementing this run header concept. In following section code snippets will be discussed, showing how this is used on level of the MIDAS analyzer, musrfit reader routine, and any2many conversion routines. The section Validation will discuss how to validate MusrRoot files.

      -

      4.1 User Interface for MusrRoot Run Header

      +

      4.1 User Interface for MusrRoot Run Header

      There are two things needed to deal with the MusrRoot run header, namely writing it and reading it. I will start with the writing as will be done in the MIDAS analyzer.

      -

      4.1.1 Writing a MusrRoot Run Header

      +

      4.1.1 Writing a MusrRoot Run Header

      An example program write_musrRoot_runHeader which is writing a full run header is part of the musrfit package. Here I will concentrate just on the most essential parts. First one needs an instance of TMusrRunHeader

      @@ -423,7 +463,7 @@ prop.Set("CF3", MRH_UNDEFINED, 3.27, 0.09, "K", "strange
       header->Set("SampleEnvironmentInfo/CF3", prop);
       

      -Here TMusrRunPhysicalQuantity objects are fed via the use of the overloaded set-method. For details see TMusrRunPhysicalQuantity - Possible Representations. +Here TMusrRunPhysicalQuantity objects are fed via the use of the overloaded set-method. For details see TMusrRunPhysicalQuantity - Possible Representations.

      To set some property within "sub-sub-directories" it would like this:

      @@ -451,7 +491,7 @@ if (header->FillFolder(runHeader)) { f->Close();

      -

      4.1.2 Reading a MusrRoot Run Header

      +

      4.1.2 Reading a MusrRoot Run Header

      The following code snippet shows how the extract the full run header from the MusrRoot file.

      @@ -508,11 +548,11 @@ if (ok) {
       }
       

      - -

      4.2 Validation of a MusrRoot File

      + +

      4.2 Validation of a MusrRoot File

      Since MusrRoot is an open and extensible file format a mechanism is needed to validate that a given file is indeed holding the minimum of required entries. To check this the following scheme is implemented in the program musrRootValidation:

      - +MusrRootValidationScheme.png

      MusrRoot validation scheme

      @@ -526,46 +566,46 @@ In the following this validation scheme will be discussed as it is implemented i

      This validation scheme is useful for people which define instrument specific extensions of the base MusrRoot, as for instance the LEM instrument at PSI. It is also useful for people writing file converters in order to cross check if the generated file is valid.

      - -

      5 RunInfo Required

      + +

      5 RunInfo Required

      - +
      - - - + + + - + - + - + - + - + - + @@ -575,7 +615,7 @@ This validation scheme is useful for people which define instrument specific ext - + @@ -585,52 +625,52 @@ This validation scheme is useful for people which define instrument specific ext - + - + - + - + - + - + - + - + - + - + @@ -640,48 +680,48 @@ This validation scheme is useful for people which define instrument specific ext - + - + - + - + - + - + - + - +
      Name Internal Type Comment Name Internal Type Comment
      Version TString TString SVN version of TMusrRunHeader
      Generic Validator URL TString TString URL of the generic MusrRoot validation xsd-file.
          e.g. http://lmu.web.psi.ch/facilities/software/MusrRoot/Validation/MusrRoot.xsd e.g. http://lmu.web.psi.ch/facilities/software/MusrRoot/Validation/MusrRoot.xsd
      Specific Validator URL TString TString URL of the instrument specific validation xsd-file.
          e.g. for LEM: http://lmu.web.psi.ch/facilities/software/MusrRoot/Validation/MusrRootLEM.xsd e.g. for LEM: http://lmu.web.psi.ch/facilities/software/MusrRoot/Validation/MusrRootLEM.xsd
      Generator TString TString Program which wrote the MusrRoot file,
      File Name TString TString File name of the MusrRoot file,
      Run Title TString TString  
      Run Number Int_t Int_t  
      Run Start Time TString TString ISO 8601 date time
      Run Stop Time TString TString ISO 8601 date time
      Run Duration TMusrRunPhysicalQuantity TMusrRunPhysicalQuantity run duration in sec
      Laboratory TString TString e.g. PSI
      Instrument TString TString e.g. GPS
      Muon Beam Momentum TMusrRunPhysicalQuantity TMusrRunPhysicalQuantity e.g. 28.1 MeV/c
      Muon Species TString TString positive, or negative muon
      Muon Source TString TString e.g. Target E - Low Energy Muons or
      Setup TString TString  
      Comment TString TString  
      Sample Name TString TString  
      Sample Temperature TMusrRunPhysicalQuantity TMusrRunPhysicalQuantity e.g. 3.21 +- 0.05 K; SP: 3.2; CF1
      Sample Magnetic Field TMusrRunPhysicalQuantity TMusrRunPhysicalQuantity e.g. 350.002 +- 0.005 G; SP: 350; WXY
      No of Histos Int_t Int_t  
      Time Resolution TMusrRunPhysicalQuantity TMusrRunPhysicalQuantity e.g. 0.1953125 ns
      RedGreen Offsets TIntVector TIntVector e.g. 0; 20

      - -

      6 DetectorInfo Required

      + +

      6 DetectorInfo Required

      The DetectorInfo is organized in a sub-tree like

      @@ -697,115 +737,115 @@ The numbering of the detectors has to correspond the its histogram, e.g.

      Detector<XXX> has the elements

      - +
      - - - + + + - + - + - + - + - + - +
      Name Internal Type Comment Name Internal Type Comment
      Name TString TString detector name, e.g. Left-NPP
      Histo Number Int_t Int_t histogram number. This number corresponds to the histogram number in the histos/DecayAnaModule sub-tree.
      Histo Length Int_t Int_t length of the histogram
      Time Zero Bin Double_t Double_t The type is Double_t since for the high-field spectrometer at PSI an Int_t representation would be not good enough.
      First Good Bin Int_t Int_t  
      Last Good Bin Int_t Int_t  

      - -

      7 SampleEnvironmentInfo Required

      + +

      7 SampleEnvironmentInfo Required

      Here only a single entry is required, namely

      - +
      - - - + + + - +
      Name Internal Type Comment Name Internal Type Comment
      Cryo TString TString name of the used cryostat, e.g. Konti-2

      - -

      8 MagneticFieldEnvironmentInfo Required

      + +

      8 MagneticFieldEnvironmentInfo Required

      Here only a single entry is required, namely

      - +
      - - - + + + - + - +
      Name Internal Type Comment Name Internal Type Comment
      Magnet Name TString TString name of the used magnet, e.g. WEW.
          In case of ZF measurements, there might be an entry like ZF. In case of ZF measurements, there might be an entry like ZF.

      - -

      9 BeamlineInfo Required

      + +

      9 BeamlineInfo Required

      Here only a single entry is required, namely

      - +
      - - - + + + - +
      Name Internal Type Comment Name Internal Type Comment
      Name TString TString name of the beamline, e.g. piM3.2.

      -

      10 Exhaustive MusrRoot Tree Including Everything Required

      +

      10 Exhaustive MusrRoot Tree Including Everything Required

      Here it is assumed that there are hypothetical red / green data with electric field on/off and light on/off, and hence 4 data sets per detector, and 8 detectors of the instrument: left/forward, top/forward, right/forward, bottom/forward, left/backward, top/backward, right/backward, bottom/backward. To show the whole tree structure, it will be splitted in the representation afterwards, but keep in mind: this will be all part of a single MusrRoot file. I will add comments in the tree structure by the symbol #. Lets start with the μSR data histograms:

      @@ -861,7 +901,7 @@ Next the whole RunHeader. Here the information will be grouped in d
       

       RunInfo:
      -  000 - Version: $Id: TMusrRunHeader.cpp 5092 2012-03-13 07:47:00Z nemu $ -@0
      +  000 - Version: $Id: TMusrRunHeader.cpp 5092 2012-03-13 07:47:00Z nemu $ -@0
         001 - Generic Validator URL: http://lmu.web.psi.ch/facilities/software/MusrRoot/Validation/MusrRoot.xsd -@0
         002 - Specific Validator URL: http://lmu.web.psi.ch/facilities/software/MusrRoot/Validation/MusrRootLEM.xsd -@0
         003 - Generator: nemu_analyzer -@0
      @@ -940,8 +980,8 @@ RunSummary:
       

      Comment: the last sub-tree RunSummary is not following TMusrRunHeader rule <number> - <label>: <value> -@<type>. It is added in the instrument analyzer directly by other means than the TMusrRunHeader::Set -method. This is no problem! Since RunSummary is not part of the required MusrRoot -file. One is quite free in adding any ROOT based information here.

      - -

      11 TMusrRunPhysicalQuantity - Possible Representations

      + +

      11 TMusrRunPhysicalQuantity - Possible Representations

      A physical property can be described as

      @@ -953,7 +993,7 @@ where <property name> is the name of the quantity, e.g.TMusrRunPhysicalQuantity prop; is somewhere defined.
       

      -<property name>: <value> <unit> [; <description>]
      +<property name>: <value> <unit> [; <description>]
       

      Code snippet: @@ -976,7 +1016,7 @@ The number on front of the token (e.g. 011 in front of

      -<property name>: <val> +- <err> <unit>[; <description>]
      +<property name>: <val> +- <err> <unit>[; <description>]
       

      Code snippet: @@ -993,7 +1033,7 @@ Result in the RunHeader/SampleEnvironmentInfo:

      -<property name>: <val> <unit>; SP: <demand>[; <description>]
      +<property name>: <val> <unit>; SP: <demand>[; <description>]
       

      Code snippet: @@ -1028,90 +1068,63 @@ Result in the RunHeader/SampleEnvironmentInfo: 017 - Sample Magnetic Field: 350.002 +- 0.005 G; SP: 350.0; WXY -@3

      --- AndreasSuter - 29 March 2012
-
- - - - - - - -
- -
- Edit | Attach | Print version | PDF | History: r7 < r6 < r5 < r4 | Backlinks | View wiki text | Refresh | More topic actions -
-
Topic revision: r7 - 29 Mar 2012, AndreasSuter
-
-
-
-
 
-
-
-
- -
-

    -

    -
-
-
-
Ideas, requests, problems regarding PSI Wiki? Send feedback
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Topic attachments
I Attachment Action Size Date Who Comment
MusrRootValidationScheme.pngpng MusrRootValidationScheme.png manage 96 K 29 Mar 2012 - 11:15 UnknownUser  
RunInfo.pngpng RunInfo.png manage 53 K 27 Mar 2012 - 16:09 UnknownUser  
+
+
This topic: MUSR > MusrRoot
+Topic revision: 29 Mar 2012, suter_a
-
- - - +
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding PSI Wiki? Send feedback
+
+
+
+

-

-

-

\ No newline at end of file + + + + + + + + + + + \ No newline at end of file diff --git a/doc/html/user/MUSR/QuickStart.html b/doc/html/user/MUSR/QuickStart.html index c533e784..5013e2d0 100644 --- a/doc/html/user/MUSR/QuickStart.html +++ b/doc/html/user/MUSR/QuickStart.html @@ -1,35 +1,38 @@ - + - - + + - MUSR :: QuickStart - + MUSR :: QuickStart + + + + + + + - + - - + + + + - - - - - - - -
+ + + + + + + + + + + + + + + + +
-
+
-
-
-

-

- - - -

-

-

-

-

-

-

Quickstart for WKM users

-
    +
    +
    +

    Quickstart for WKM users

    + -

    Introduction

    +

    Introduction

    -musrfit is a program suite for analyzing μSR data. It is implemented in C++/ROOT and uses the MINUIT2 libraries developed at CERN for fitting data. +musrfit is a program suite for analyzing μSR data. It is implemented in C++/ROOT and uses the MINUIT2 libraries developed at CERN for fitting data. Installation instructions for Linux, MS Windows, and Mac OS X can be found here. The full user manual is available here.
    In principle the programs can be used in the same fashion as WKM (wkmfit, wkmview). E.g., for fitting data as defined in the input file 8472.msr one types:
    musrfit 8472.msr
    for plotting data and the corresponding fit one calls:
    musrview 8472.msr
    Additionally, there are editors called musrgui/musredit available which can do everything the emacs plug-in for WKM is capable of and even more. However, before going to use only musrgui / musredit it is strongly recommended to read at least this "Quickstart" since there are a few differences between the programs as well as new features which are partially described in the following.

    -

    Differences between WKM and musrfit msr files

    +

    Differences between WKM and musrfit msr files

    The msr file format of WKM has some weaknesses and has therefore been extended for the use with musrfit. Existing WKM files can be converted using the small utility msr2msr. The changes are:
    • The musrfit msr and mlog files contain an additional column in the FITPARAMETER block for the representation of positive uncertainties if MINOS was called during fitting. In that case the Step column holds the negative uncertainties. If there has not been performed an error analysis using MINOS, the symmetric error can be found in the Step column, whereas the Pos_Error column contains only none entries. The beginning of the FITPARAMETER block then might look like this
      @@ -172,7 +174,7 @@ RUN 2008/lem08_his_8472 MUE4 PSI ROOT-NPP   (name beamline institute dat
       
    • The commands SET BATCH and END RETURN may be omitted in the COMMANDS block.

    -

    Selected new features in musrfit

      +

      Selected new features in musrfit

      • If single-histogram fits are done, the normalization and background constants are given either "per nanosecond" or "per rebinned bin". The nanosecond normalization allows to change the binning without the need of re-doing the fit to the data.
      • The use of functions in the RUN block is now possible for the normalization parameter, e.g. for the definition of an α parameter in simultaneous single-histogram fits of two histograms.
      • Apart from the default χ2 minimization, when doing single-histogram fits (fit type 0) in musrfit there is also the possibility to do a log-likelihood maximization instead. For switching, just put MAX_LIKELIHOOD in the COMMANDS block. @@ -202,7 +204,7 @@ RUN 2008/lem08_his_8472 MUE4 PSI ROOT-NPP (name beamline institute dat
      • gamma_mu = γμ/2π = 0.0135538817 MHz/G
      • pi = π = 3.14159265358979323846
      -
    • As theory function also the so called skewed Gaussian can be chosen. The properties of this function are summarized in a memo pdf. The function is called in the THEORY block as follows:
      +
    • As theory function also the so called skewed Gaussian can be chosen. The properties of this function are summarized in a memo pdf. The function is called in the THEORY block as follows:
          skewedGss   1  2  3  4 (phase frequency rate_m rate_p)
       
    • After fitting it is possible to keep the MINUIT2 output including the correlation matrix of the parameters. Calling musrfit with the --keep-mn2-ouput or -k option will provide you an ASCII and a ROOT file with the complete output, e.g.
      musrfit 8472.msr --keep-mn2-ouput
      generates 8472-mn2.output and 8472-mn2.root (and of course 8472.mlog). @@ -260,78 +262,29 @@ RUN 2008/lem08_his_8472 MUE4 PSI ROOT-NPP (name beamline institute dat In the above example musrfit reads the data from the file superconductor-data.db; the x and y data are specified by the DB parameter names range and field. An alternative specification of the x and y data by the parameter number in the DB file is also possible!

    --- BMW & AS
    -
    - - - - - - - -
    - -
    - Edit | Attach | Print version | PDF | History: r7 < r6 < r5 < r4 | Backlinks | View wiki text | Refresh | More topic actions -
    -
    Topic revision: r7 - 10 Jul 2011, wojek
    -
    -
-
 
-
-
-
- -
-

    -

    -
-
-
-
Ideas, requests, problems regarding PSI Wiki? Send feedback
+
This topic: MUSR > WebHome > MusrFit > QuickStart
+Topic revision: 10 Jul 2011, wojek
-
- - - +
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding PSI Wiki? Send feedback
+
+
+
+

-

-

-

\ No newline at end of file + + + + + + + + + + + \ No newline at end of file diff --git a/doc/html/user/MUSR/TutorialSingleHisto.html b/doc/html/user/MUSR/TutorialSingleHisto.html index 6d3235c8..6d728ee8 100644 --- a/doc/html/user/MUSR/TutorialSingleHisto.html +++ b/doc/html/user/MUSR/TutorialSingleHisto.html @@ -1,35 +1,72 @@ - + - - + + - MUSR :: TutorialSingleHisto - + MUSR :: TutorialSingleHisto + + + + + + + - + - - + + + + + + + + - - - - - - - -
+ + + + + + + + + + + + + + + + + +
-
+
-
-
-

-

- - - -

-

-

-

-

-

-

musrfit Single-Histogram-Fit Tutorial

+
+
+

musrfit Single-Histogram-Fit Tutorial

The μSR-data-analysis process using musrfit is based on so-called msr files. These files contain all information needed for the analysis such as names of the data files, a theory function, fit and plot parameters, and so on. It is the idea of this page to explain the basic use of an msr file and the different programs of the musrfit suite using the example of a single-histogram fit to time-differential transverse-field μSR data. For a complete description of all options please refer to the manual.

-The example deals with a diamagnetic sample that has been measured in an applied field of approximately 150 G in the GPS spectrometer at PSI using the "transverse geometry". In this geometry the muon spin is rotated about 50° up and the field is applied parallel to the muon momentum. Hence, the relevant positron counters (to detect the spin precession) are placed above (histogram 3), below (histogram 4) and right of (histogram 5) the sample. The run numbers start from 3110. +The example deals with a diamagnetic sample that has been measured in an applied field of approximately 150 G in the GPS spectrometer at PSI using the "transverse geometry". In this geometry the muon spin is rotated about 50° up and the field is applied parallel to the muon momentum. Hence, the relevant positron counters (to detect the spin precession) are placed above (histogram 3), below (histogram 4) and right of (histogram 5) the sample. The run numbers start from 3110.

To analyze these data (in a simple way) one starts out from the msr file 3110_tutorial.msr provided together with the source-code distribution in the sub-directory doc/examples/. This ASCII file can be edited using any text editor. For convenience the editors musredit/musrgui are provided which offer some msr-file-specific functionalities and additionally serve as front ends to the underlying programs. In the following it is assumed that the file is open within musredit.

-

1 The msr file

+

1 The msr file

The msr file itself is divided into different blocks—a full description of the format can be found here. In the file 3110_tutorial.msr these blocks are successively:
    @@ -232,129 +269,138 @@ STATISTIC --- 2011-07-09 10:58:44 This block is the last block of a msr file. It contains some information on the fit: the date and time as well as the absolute and normalized values of χ2 and the number of degrees of freedom in the fit.
    These information only have a meaning if the fitting procedure has been executed at least once and the fit has converged!

-

2 Determine t0 and the data range using musrt0

+

2 Determine t0 and the data range using musrt0

Before the given model can be fitted to the data, the data ranges and time zeros of the different RUN blocks have to be set correctly. This can be achieved using musrt0. Starting this program by selecting the musrt0.png button in musredit or calling from a terminal
musrt0 3110_tutorial.msr
opens an interactive window plotting the data of the first RUN block:
-musrt0-1
+musrt0-1
The green line (at bin 1) represents time zero, the blue lines the start (at bin 1) and end (at bin 8000) of the data range and the optional red lines give the limits of the background range (if the background shall not be determined by the fit). All lines can be either dragged to reasonable locations or set by pressing the corresponding keyboard shortcuts. In the example the time zero can be set by pressing T (which moves the green line to the bin containing the maximum number of counts), the start of the data range should be set to about five bins later by zooming into the graph around bin 250 and pressing d when the cursor is found at a suitable location:
-musrt0-2
+musrt0-2
After all lines have been adjusted for the first histogram, one can go on to the second by pressing q. This procedure is repeated until all ranges have been set correctly. When finished with the last histogram the new t0 and data-range values will be written to the msr file. A full description of musrt0 can be found here.

-

3 Fit the model to the data using musrfit

-Now that the basics of the msr file have been introduced and the necessary adjustments have been done one can proceed with fitting the specified model to the data. This is done by selecting the musrfit.png button in musredit or calling from a terminal
musrfit 3110_tutorial.msr
+

3 Fit the model to the data using musrfit

+Now that the basics of the msr file have been introduced and the necessary adjustments have been done one can proceed with fitting the specified model to the data. This is done by selecting the musrfit.png button in musredit or calling from a terminal
musrfit 3110_tutorial.msr

After the fitting procedure has finished the msr file is updated and contains the newly determined values of the fit parameters.

-

4 View the data and the fit using musrview

+

4 View the data and the fit using musrview

The data and the corresponding fit can be visualized by choosing musrview.png in musredit or calling from a terminal
musrview 3110_tutorial.msr
This creates the windows according to the given PLOT blocks in the msr file:
-musrview-1
-musrview-2
+musrview-1
+musrview-2
The basic features of musrview can be found in the Musrfit menu. They include:
  • export the shown data and the model to an ASCII file with comma-separated values
  • presenting the difference between the shown data and the model (keyboard shortcut: d) -
  • calculate and show the Fourier transform of the shown data (keyboard shortcut: f), e.g. for the asymmetry of the "Up" and "Down" detectors:
    musrview-3
    +
  • calculate and show the Fourier transform of the shown data (keyboard shortcut: f), e.g. for the asymmetry of the "Up" and "Down" detectors:
    musrview-3

-

5 Process multiple msr files using msr2data

+

5 Process multiple msr files using msr2data

This short introduction is concluded by calling attention to the program msr2data. As the name indicates the main purpose of this program is to extract the FITPARAMETER-block information from multiple msr files with the same structure and to summarize them in a single ASCII file (either in TRIUMF DB format or simple columns). However, as described in detail in the manual, it is not only possible to collect data from msr files but also to create new msr files from a template and to process these files using musrfit on the fly.
Assuming the successive runs 3111 through 3114 can be analyzed using the same model introduced above for run 3110 (e.g. in the case one has done measurements at different temperatures) one can use the file 3110_tutorial.msr as template, generate the files 3111_tutorial.msr through 3114_tutorial.msr with the corresponding updates in the RUN blocks, call for each one musrfit and finally summarize the FITPARAMETER-block information of all processed files in an ASCII output file tutorial-T-dependence.dat (simple columns). If further information on the temperature or the applied field is available in the data files these will be included as well in the resulting ASCII file.
From the terminal this would be done as follows:
 msr2data 3110 3114 _tutorial fit-3110 -o tutorial-T-dependence.dat data
 
To achieve the same in musredit one selects musrmsr2data.png and fills the form accordingly:
-msr2data +msr2data

-

6 Further reading

+

6 Further reading

This page only summarizes the very basic features and options of the programs contained in the musrfit suite. For a complete description please refer to the manuals of

--- BMW & AS
-
- - - - - - - -
- -
- Edit | Attach | Print version | PDF | History: r9 < r8 < r7 < r6 | Backlinks | View wiki text | Refresh | More topic actions -
-
Topic revision: r9 - 02 Sep 2011, wojek
-
-
-
-
 
-
-
-
- -
-

    -

    -
-
-
-
Ideas, requests, problems regarding PSI Wiki? Send feedback
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Topic attachments
I Attachment Action Size Date Who Comment
msr2data.pngpng msr2data.png manage 34 K 20 Jul 2011 - 13:34 UnknownUser  
musrt0-1.pngpng musrt0-1.png manage 19 K 20 Jul 2011 - 13:38 UnknownUser  
musrt0-2.pngpng musrt0-2.png manage 19 K 09 Jul 2011 - 15:17 UnknownUser  
musrview-1.pngpng musrview-1.png manage 45 K 09 Jul 2011 - 15:48 UnknownUser  
musrview-2.pngpng musrview-2.png manage 36 K 09 Jul 2011 - 15:48 UnknownUser  
musrview-3.pngpng musrview-3.png manage 42 K 09 Jul 2011 - 16:01 UnknownUser  
+
+
This topic: MUSR > TutorialSingleHisto
+Topic revision: 02 Sep 2011, wojek
-
- - - +
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding PSI Wiki? Send feedback
+
+
+
+

-

-

-

\ No newline at end of file + + + + + + + + + + + \ No newline at end of file diff --git a/doc/html/user/MUSR/WebHome.html b/doc/html/user/MUSR/WebHome.html index c2cf9dd6..d8b1e5d1 100644 --- a/doc/html/user/MUSR/WebHome.html +++ b/doc/html/user/MUSR/WebHome.html @@ -1,35 +1,38 @@ - + - - + + - MUSR :: MUSR - + MUSR :: MUSR + + + + + + + - + - - + + + + - - - - - - - -
+ + + + + + + + + + + + + + + + +
-
+
-
-
+
+
+

Welcome to the MUSR web

-

- - - -

-

-

-

-

-

-

Welcome to the MUSR web

-

-

Documentation of the μSR data analysis suite musrfit

-
- - - - - - - -
- -
- Edit | Attach | Print version | PDF | History: r52 < r51 < r50 < r49 | Backlinks | View wiki text | Refresh | More topic actions -
-
Topic revision: r52 - 16 Aug 2015, AndreasSuter
-
-
-
- +-- AS & (BMW) - last update January 19, 2016

-PSI Webs -
-System Webs -
-

-
-
 
-
-
-
- -
-

    -

    -
-
-
-
Ideas, requests, problems regarding PSI Wiki? Send feedback
+
This topic: MUSR > WebHome
+Topic revision: 19 Jan 2016, AndreasSuter
-
- - - +
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding PSI Wiki? Send feedback
+
+
+
+

-

-

-

\ No newline at end of file + + + + + + + + + + + \ No newline at end of file diff --git a/doc/html/user/pub/System/PatternSkin/print.css b/doc/html/user/pub/System/PatternSkin/print.css index 420b3aaa..8fb202ee 100644 --- a/doc/html/user/pub/System/PatternSkin/print.css +++ b/doc/html/user/pub/System/PatternSkin/print.css @@ -1 +1 @@ -body{margin:0;padding:0;}#patternScreen, #patternPageShadow, #patternPage, #patternOuter{margin:0;padding:0;top:0;border:none;float:none;}#patternMain{width:100%;float:none;display:inline;overflow:visible;}#patternSideBar{display:none;}#patternWrapper{height:1%;}#patternTopBar, #patternClearHeaderCenter, #patternClearHeaderLeft, #patternClearHeaderRight, #patternTopBarContentsOuter{display:none;}.patternTopicAction, .patternToolBar, .patternToolBarBottom, .patternHomePath img, .patternHomePathTitle, .foswikiActionFormStepSign{display:none;}#patternMainContents{margin:0;padding:1em 2em;}#patternBottomBar{border:none;}.patternTopicFooter{margin:1em 0 0 0;}#attachmentsshow, #attachmentshide{display:none;}pre, html>body pre{overflow:visible !important;}h1, h2, h3, h4, h5, h6{page-break-after:avoid;page-break-inside:avoid;}img{page-break-inside:avoid;page-break-after:avoid;}blockquote, table, pre{page-break-inside:avoid;}ul, ol, dl{page-break-before:avoid;}.commentPlugin{display:none;}.twistyTrigger{display:none;}.editTableEditImageButton{display:none;}html body{background-color:#fff;}h2, h3, h4, h5, h6{background-color:transparent;}#patternBottomBar{background-color:transparent;}pre, code, tt{color:#5b4221;}.foswikiTable th{border-style:solid;border-width:0 0 1px 1px;border-color:#ccc;color:#000;}.foswikiTable th a:link, .foswikiTable th a:visited, .foswikiTable th a font, .foswikiAttachments .foswikiTable th a:link, .foswikiAttachments .foswikiTable th a:visited, .foswikiAttachments .foswikiTable th a font{color:#000;text-decoration:none;}:visited, .foswikiTopic a:visited{color:#06c;background-color:transparent;}.foswikiAttachments, .patternContent .foswikiAttachments, .foswikiForm, .patternContent .foswikiForm{background-color:#fff;}.patternRevInfo, .foswikiGrayText{color:#666;}.patternRevInfo a:link, .patternRevInfo a:visited .foswikiGrayText a:link, .foswikiGrayText a:visited{color:#666;}@media print{body{margin:0;padding:0;}#patternScreen, #patternPageShadow, #patternPage, #patternOuter{margin:0;padding:0;top:0;border:none;float:none;}#patternMain{width:100%;float:none;display:inline;overflow:visible;}#patternSideBar{display:none;}#patternWrapper{height:1%;}#patternTopBar, #patternClearHeaderCenter, #patternClearHeaderLeft, #patternClearHeaderRight, #patternTopBarContentsOuter{display:none;}.patternTopicAction, .patternToolBar, .patternToolBarBottom, .patternHomePath img, .patternHomePathTitle, .foswikiActionFormStepSign{display:none;}#patternMainContents{margin:0;padding:1em 2em;}#patternBottomBar{border:none;}.patternTopicFooter{margin:1em 0 0 0;}#attachmentsshow, #attachmentshide{display:none;}pre, html>body pre{overflow:visible !important;}h1, h2, h3, h4, h5, h6{page-break-after:avoid;page-break-inside:avoid;}img{page-break-inside:avoid;page-break-after:avoid;}blockquote, table, pre{page-break-inside:avoid;}ul, ol, dl{page-break-before:avoid;}.commentPlugin{display:none;}.twistyTrigger{display:none;}.editTableEditImageButton{display:none;}html body{background-color:#fff;}h2, h3, h4, h5, h6{background-color:transparent;}#patternBottomBar{background-color:transparent;}pre, code, tt{color:#5b4221;}.foswikiTable th{border-style:solid;border-width:0 0 1px 1px;border-color:#ccc;color:#000;}.foswikiTable th a:link, .foswikiTable th a:visited, .foswikiTable th a font, .foswikiAttachments .foswikiTable th a:link, .foswikiAttachments .foswikiTable th a:visited, .foswikiAttachments .foswikiTable th a font{color:#000;text-decoration:none;}:visited, .foswikiTopic a:visited{color:#06c;background-color:transparent;}.foswikiAttachments, .patternContent .foswikiAttachments, .foswikiForm, .patternContent .foswikiForm{background-color:#fff;}.patternRevInfo, .foswikiGrayText{color:#666;}.patternRevInfo a:link, .patternRevInfo a:visited .foswikiGrayText a:link, .foswikiGrayText a:visited{color:#666;}} #peopleIcon {display: none;} #tooltip {display: none;} .ecpHeading img {display: none;} .foswikiTopicInfo { border-bottom: 0; } #patternBottomBar, .patternTopicActions, .foswikiFormSteps { display:none; } .foswikiTopicInfo {margin-top: 50px;} .foswikiTopicInfo h1 a {text-decoration:none;} h1 a:visited { color: #D1400E; }html{overflow:visible} +body{margin:0;padding:0}#patternScreen,#patternPageShadow,#patternPage,.patternViewPage #patternOuter{margin:0;padding:0;top:0;border:0;float:none}#patternMain{width:auto;float:none;display:inline;overflow:visible}#patternSideBar{display:none}#patternWrapper{height:1%}#patternTopBarButtons,#patternTopBar,#patternClearHeaderCenter,#patternClearHeaderLeft,#patternClearHeaderRight,#patternTopBarContentsOuter{display:none}.patternTop,.patternTopicAction,.patternTopicActions,.patternToolBar,.patternToolBarBottom,.patternHomePath img,.patternHomePathTitle,.foswikiContentFooter+.foswikiFormSteps,.foswikiActionFormStepSign{display:none}#patternMainContents{margin:0;padding:1em 2em}#patternBottomBar{display:none}.patternTopicFooter{margin:1em 0 0 0}#attachmentsshow,#attachmentshide{display:none}pre,html>body pre{overflow:visible!important}h1,h2,h3,h4,h5,h6{page-break-after:avoid;page-break-inside:avoid}img{page-break-inside:avoid;page-break-after:avoid}blockquote,table,pre{page-break-inside:avoid}ul,ol,dl{page-break-before:avoid}.commentPlugin{display:none}.twistyTrigger{display:none}.editTableEditImageButton{display:none}html body{background-color:#fff}h2,h3,h4,h5,h6{background-color:transparent}#patternBottomBar{background-color:transparent}pre,code,tt{color:#5b4221}.foswikiTable th{border-style:solid;border-width:0 0 1px 1px;border-color:#ccc;color:#000}.foswikiTable th a:link,.foswikiTable th a:visited,.foswikiTable th a font,.foswikiAttachments .foswikiTable th a:link,.foswikiAttachments .foswikiTable th a:visited,.foswikiAttachments .foswikiTable th a font{color:#000;text-decoration:none}:visited,.foswikiTopic a:visited{color:#06c;background-color:transparent}.foswikiAttachments,.patternContent .foswikiAttachments,.foswikiForm,.patternContent .foswikiForm{background-color:#fff}.patternRevInfo,.foswikiGrayText{color:#666}.patternRevInfo a:link,.patternRevInfo a:visited .foswikiGrayText a:link,.foswikiGrayText a:visited{color:#666}@media print{body{margin:0;padding:0}#patternScreen,#patternPageShadow,#patternPage,#patternOuter{margin:0;padding:0;top:0;border:0;float:none}#patternMain{width:100%;float:none;display:inline;overflow:visible}#patternSideBar{display:none}#patternWrapper{height:1%}#patternTopBar,#patternClearHeaderCenter,#patternClearHeaderLeft,#patternClearHeaderRight,#patternTopBarContentsOuter{display:none}.patternTopicAction,.patternToolBar,.patternToolBarBottom,.patternHomePath img,.patternHomePathTitle,.foswikiActionFormStepSign{display:none}#patternMainContents{margin:0;padding:1em 2em}#patternBottomBar{border:0}.patternTopicFooter{margin:1em 0 0 0}#attachmentsshow,#attachmentshide{display:none}pre,html>body pre{overflow:visible!important}h1,h2,h3,h4,h5,h6{page-break-after:avoid;page-break-inside:avoid}img{page-break-inside:avoid;page-break-after:avoid}blockquote,table,pre{page-break-inside:avoid}ul,ol,dl{page-break-before:avoid}.commentPlugin{display:none}.twistyTrigger{display:none}.editTableEditImageButton{display:none}html body{background-color:#fff}h2,h3,h4,h5,h6{background-color:transparent}#patternBottomBar{background-color:transparent}pre,code,tt{color:#5b4221}.foswikiTable th{border-style:solid;border-width:0 0 1px 1px;border-color:#ccc;color:#000}.foswikiTable th a:link,.foswikiTable th a:visited,.foswikiTable th a font,.foswikiAttachments .foswikiTable th a:link,.foswikiAttachments .foswikiTable th a:visited,.foswikiAttachments .foswikiTable th a font{color:#000;text-decoration:none}:visited,.foswikiTopic a:visited{color:#06c;background-color:transparent}.foswikiAttachments,.patternContent .foswikiAttachments,.foswikiForm,.patternContent .foswikiForm{background-color:#fff}.patternRevInfo,.foswikiGrayText{color:#666}.patternRevInfo a:link,.patternRevInfo a:visited .foswikiGrayText a:link,.foswikiGrayText a:visited{color:#666}html,body{height:auto}#patternFloatWrap{float:none}} \ No newline at end of file diff --git a/doc/html/user/pub/System/PatternSkinTheme2009/colors.css b/doc/html/user/pub/System/PatternSkinTheme2009/colors.css index 1ff74d91..c14ef204 100644 --- a/doc/html/user/pub/System/PatternSkinTheme2009/colors.css +++ b/doc/html/user/pub/System/PatternSkinTheme2009/colors.css @@ -1,794 +1 @@ -/* PatternSkin colors */ -/* Generated by AttachContentPlugin from System.PatternSkinColorSettings */ - -/* LAYOUT ELEMENTS */ - -#patternScreen { - background:#e2e2e2; -} -#patternPage { - border-color:#ccc; -} -#patternTopBar { - border-color:#e2e2e2; - /* color is defined as WEBHEADERBGCOLOR in System/DefaultPreferences */ -} -#patternMain { /* don't set a background here; use patternOuter */ } -#patternOuter { - background:none; - border-color:#dadada; -} -#patternSideBar, -#patternWrapper { - background:#fff; -} -#patternBottomBar { - border-color:#ccc; - background-color:#f5f5f5; -} -#patternBottomBarContents, -#patternBottomBarContents a:link, -#patternBottomBarContents a:visited { - color:#777; -} -#patternBottomBarContents a:hover { - color:#fff; -} - -/* GENERAL HTML ELEMENTS */ - -html body { - background-color:#f5f5f5; - color:#000; -} -html body.patternEditPage, -.mceContentBody { - background-color:#fff; -} - -/* be kind to netscape 4 that doesn't understand inheritance */ -body, p, li, ul, ol, dl, dt, dd, acronym, h1, h2, h3, h4, h5, h6 { - background-color:transparent; -} -hr { - color:#e2e2e2; - background-color:#e2e2e2; -} -pre, code, tt { - color:#333; -} -pre { - background:#f5f5f5; - border-color:#ddd; -} -blockquote { - background-color:#f5f5f5; - border-color:#ddd; -} -blockquote h2 { - background:none; -} -h1 { - color:#2989bb; -} -h2, h3, h4, h5, h6 { - color:#d1400e; -} -h2 { - border-color:#e2e2e2; -} -h3, h4, h5, h6 { - border-color:#e2e2e2; -} - -/* to override old Render.pm coded font color style */ -.foswikiNewLink font { - color:inherit; -} -.foswikiNewLink a:link sup, -.foswikiNewLink a:visited sup { - color:#777; - border-color:#ddd; -} -.foswikiNewLink a:hover sup { - background-color:#0055b5; - color:#fff; - border-color:#0055b5; -} -.foswikiNewLink { - border-color:#ddd; -} -:link:focus, -:visited:focus, -:link, -:visited, -:link:active, -:visited:active { - color:#4571d0; - background-color:transparent; -} -:link:hover, -:visited:hover { - color:#fff; - background-color:#0055b5; - background-image:none; -} -:link:hover img, -:visited:hover img { - background-color:transparent; -} -.foswikiTopic a:visited { - color:#666; -} -.foswikiTopic a:hover { - color:#fff; -} -.foswikiTopic .foswikiUnvisited a:visited { - color:#4571d0; -} -.foswikiTopic .foswikiUnvisited a:hover { - color:#fff; -} - -/* Form elements */ - -textarea, -input, -select { - border-color:#aaa; - color:#000; - background-color:#fff; -} -.foswikiSubmit, -.foswikiButton { - border-color:#fff #888 #888 #fff; -} -.foswikiSubmit { - color:#fff; - background-color:#06c; -} -.foswikiButton { - color:#000; - background-color:#e2e3e3; -} -.foswikiButtonCancel { - color:#000; - background-color:#f2d5d0; -} -.foswikiSubmitDisabled, -.foswikiSubmitDisabled:active { - border-color:#fff #ccc #ccc #fff; - color:#aaa; - background-color:#eef7fa; -} -.foswikiTextarea, -.foswikiInputField, -.foswikiInputFieldDisabled, -.foswikiInputFieldReadOnly, -.foswikiSelect { - border-color:#bbb #f2f2f2 #f2f2f2 #bbb; -} -.foswikiTextarea, -.foswikiInputField, -.foswikiSelect { - color:#000; - background-color:#fff; -} -.foswikiInputField:active, -.foswikiInputField:focus, -.foswikiInputFieldFocus { - background-color:#ffffe0; -} - -.foswikiTextareaRawView { - color:#000; -} -.foswikiInputFieldDisabled { - color:#aaa; - background-color:#fafaf8; -} -.foswikiInputFieldReadOnly { - color:#777; -} -.foswikiSelect { - border-color:#bbb #f2f2f2 #f2f2f2 #bbb; - color:#000; - background-color:#fff; -} -.foswikiInputFieldDisabled, -.foswikiSelectDisabled { - color:#aaa; - border-color:#bbb #f2f2f2 #f2f2f2 #bbb; - background-color:#fafaf8; -} -.foswikiInputFieldBeforeFocus { - color:#777; -} - -/* ----------------------------------------------------------- - Plugin elements - ----------------------------------------------------------- */ - -/* TablePlugin */ -.foswikiTable, -.foswikiTable td, -.foswikiTable th { - border-color:#eee; -} -.foswikiTable th { - background:#d6d3cf; -} -.foswikiTable th, -.foswikiTable th a:link, -.foswikiTable th a:visited { - color:#000; -} - -/* TwistyContrib */ -.twistyPlaceholder { - color:#777; -} -a:hover.twistyTrigger { - color:#fff; -} - -/* TipsContrib */ -.tipsOfTheDay { -} - -/* RevCommentPlugin */ -.revComment .patternTopicActions { - background-color:#eef7fa; -} - -/* ----------------------------------------------------------- - Foswiki styles - ----------------------------------------------------------- */ - -.foswikiGrayText { - color:#777; -} -.foswikiGrayText a:link, -.foswikiGrayText a:visited { - color:#777; -} -.foswikiGrayText a:hover { - color:#fff; -} - -table.foswikiFormTable th.foswikiFormTableHRow, -table.foswikiFormTable td.foswikiFormTableRow { - color:#777; -} -.foswikiEditForm { - color:#000; -} -.foswikiEditForm .foswikiFormTable, -.foswikiEditForm .foswikiFormTable th, -.foswikiEditForm .foswikiFormTable td { - border-color:#e2e2e2; -} -/* use a different table background color mix: no odd/even rows, no white background */ -.foswikiEditForm .foswikiFormTable td { - background-color:#f7fafc; -} -.foswikiEditForm .foswikiFormTable th { - background-color:#f0f6fb; -} -.patternTwistyButton h3 { - color:#d1400e; -} -.foswikiAttachments table, -table.foswikiFormTable { - border-color:#e2e2e2; - background-color:#fff; -} -.foswikiAttachments table { - background-color:#fff; -} -.foswikiForm td, -.foswikiForm th, -.foswikiAttachments td, -.foswikiAttachments th { - border-color:#e2e2e2; -} -.foswikiAttachments .foswikiTable th font, -table.foswikiFormTable th.foswikiFormTableHRow font { - color:#4571d0; -} - -.foswikiFormSteps { - background-color:#eef7fa; - border-color:#e2e2e2; -} -.foswikiFormStep { - border-color:#e2e2e2; -} -.foswikiFormStep h2 { - color:#2989bb; -} -.foswikiFormStep h3, -.foswikiFormStep h4 { - color:#d1400e; -} -.foswikiFormStep h3, -.foswikiFormStep h4 { - background-color:transparent; -} -.foswikiFormStep .foswikiHelp { - background:#fff; -} -.foswikiToc .foswikiTocTitle { - color:#777; -} -.foswikiBroadcastMessage, -.foswikiNotification { - background-color:#ffe67b; -} -.foswikiNotification { - border:2px solid #ffdf4c; -} -.foswikiMessage { - background-color:#ffe67b; -} -#foswikiLogin .patternLoginNotification { - background-color:#fff; - border-color:#f00; -} -.foswikiHelp { - background-color:#edf5fa; - border-color:#e2e2e2; -} -.foswikiBroadcastMessage b, -.foswikiBroadcastMessage strong { - color:#f00; -} -.foswikiAlert, -.foswikiAlert code { - color:#f00; -} -.foswikiEmulatedLink { - color:#4571d0; -} -.foswikiPageForm table { - border-color:#e2e2e2; - background:#fff; -} -.foswikiPageForm hr { - border-color:#cfcfcf; - background-color:#cfcfcf; - color:#cfcfcf; -} -.foswikiAccessKey { - color:inherit; - border-color:#777; -} -a:link .foswikiAccessKey, -a:visited .foswikiAccessKey { - color:inherit; -} -a:hover .foswikiAccessKey { - color:inherit; -} -.foswikiImage img { - border-color:#eee; - background-color:#fff; -} -#patternTopBar .foswikiImage img { - background-color:transparent; -} -.foswikiImage a:hover img { - border-color:#0055b5; -} - -/* ----------------------------------------------------------- - Pattern skin specific elements - ----------------------------------------------------------- */ -#patternPage { - background-color:#fff; -} -.patternHomePathTitle, -.patternRevInfo, -.patternHomePath a:link, -.patternHomePath a:visited { - border-color:#ddd; - color:#666; -} -.patternTop a:hover { - border:none; - color:#fff; -} -.patternHomePath .patternRevInfo, -.patternHomePath .patternRevInfo a:link, -.patternHomePath .patternRevInfo a:visited { - color:#777; -} -.patternHomePath .patternRevInfo a:hover { - color:#fff; -} - -/* Left bar */ -#patternSideBarContents { - color:#000; -} -#patternSideBarContents hr { - color:#e2e2e2; - background-color:#e2e2e2; -} -#patternSideBarContents a:link, -#patternSideBarContents a:visited { - color:#444; -} -#patternSideBarContents a:hover { - color:#fff; -} -#patternSideBarContents .patternLeftBarPersonal, -#patternSideBarContents .patternWebIndicator { - border-color:#dadada; -} -#patternSideBarContents b, -#patternSideBarContents strong { - color:#d1400e; -} - -.patternTopicActions { - background-color:#2989bb; - color:#bbb; -} -.patternTopicActions s, -.patternTopicActions strike { - color:#aaa; -} -.patternTopicActions .foswikiSeparator { - color:#e2e2e2; -} -.patternActionButtons a:link, -.patternActionButtons a:visited { - color:#fff; -} -.patternActionButtons a:hover { - color:#fff; -} -.patternTopicActions a:link .foswikiAccessKey, -.patternTopicActions a:visited .foswikiAccessKey { - color:#fff; - border-color:#fff; -} -.patternTopicActions a:hover .foswikiAccessKey { - color:#fff; -} -.patternTopicActions label { - color:#000; -} -.patternHelpCol { - color:#777; -} -.patternSigLine { - color:#777; -} -.patternEditTopic { - background:#eef7fa; -} -.patternToolBar a:link .foswikiAccessKey, -.patternToolBar a:visited .foswikiAccessKey { - color:inherit; - border-color:#666; -} -.patternToolBar a:hover .foswikiAccessKey { - background-color:transparent; - color:inherit; - border-color:#666; -} - -/* WebSearch, WebSearchAdvanced */ -table#foswikiSearchTable { - border-color:#e2e2e2; -} -table#foswikiSearchTable th, -table#foswikiSearchTable td { - background-color:#fff; - border-color:#e2e2e2; -} -table#foswikiSearchTable hr { - border-color:#e2e2e2; - background-color:#e2e2e2; -} -table#foswikiSearchTable th { - color:#000; -} - -/* ----------------------------------------------------------- - Search results - styles and overridden styles used in search.pattern.tmpl - ----------------------------------------------------------- */ - -.foswikiSearchResult .foswikiAlert { - color:#f00; -} -.foswikiSearchResult .foswikiSummary .foswikiAlert { - color:#900; -} -.foswikiSearchResult .foswikiBottomRow, -.foswikiSearchResult .foswikiBottomRow a:link, -.foswikiSearchResult .foswikiBottomRow a:visited { - color:#049804; -} -.foswikiSearchResult .foswikiBottomRow:hover a:link, -.foswikiSearchResult .foswikiBottomRow:hover a:visited { - color:#06c; -} -.foswikiSearchResult .foswikiBottomRow:hover a:hover { - color:#fff; -} -.patternViewPage .patternSearchResultsBegin { - border-color:#eee; -} - -/* Search results in book view format */ - -.patternBookView .foswikiTopRow { - background-color:transparent; /* set to WEBBGCOLOR in css.pattern.tmpl */ - color:#777; -} -.patternBookView .foswikiBottomRow { - border-color:#e2e2e2; -} -.patternBookView .patternSearchResultCount { - color:#777; -} - -/* preview.pattern.tmpl */ - -.foswikiPreviewArea { - border-color:#f00; - background-color:#fff; -} - -/* rdiff.pattern.tmpl */ - -.patternDiff { - border-color:#6b7f93; -} -#patternMainContents .patternDiff h4.patternSearchResultsHeader { - background-color:#6b7f93; - color:#fff; -} -#patternMainContents .patternDiff h4.patternSearchResultsHeader a:link, -#patternMainContents .patternDiff h4.patternSearchResultsHeader a:visited { - color:#fff; -} -tr.foswikiDiffDebug td { - border-color:#e2e2e2; -} -.patternDiffPage .foswikiDiffTable th { - background-color:#ccc; -} -/* Changed */ -.foswikiDiffChangedHeader, -tr.foswikiDiffDebug .foswikiDiffChangedText, -tr.foswikiDiffDebug .foswikiDiffChangedText { - background:#9f9; /* green - do not change */ -} -/* Deleted */ -tr.foswikiDiffDebug .foswikiDiffDeletedMarker, -tr.foswikiDiffDebug .foswikiDiffDeletedText { - background-color:#f99; /* red - do not change */ -} -/* Added */ -.foswikiDiffAddedHeader, -tr.foswikiDiffDebug .foswikiDiffAddedMarker, -tr.foswikiDiffDebug .foswikiDiffAddedText { - background-color:#ccf; /* violet - do not change */ -} -/* Unchanged */ -tr.foswikiDiffDebug .foswikiDiffUnchangedText { - color:#777; -} -.foswikiDiffUnchangedTextContents { } -.foswikiDiffLineNumberHeader { - background-color:#ccc; -} - - -/* IMAGES */ -/* image positions are set here as well as these are dependent on the image */ - -#patternTopBar { - /* image is defined as WEBHEADERART in System/DefaultPreferences */ -} -.foswikiToc li { - background-image:url(bullet-toc.gif); - background-repeat:no-repeat; - background-position:0 .4em; -} -.patternPrintPage #patternOuter { - background:#fff; /* white - do not change */ -} -.foswikiSubmit, -.foswikiSubmitDisabled { - background-image:url(bg_submit_gradient.gif); - background-repeat:repeat-x; -} -.foswikiSubmit, -a.foswikiSubmit:link, -a.foswikiSubmit:visited { - background-position:0px 0px; - background-color:#06c; - border-color:#94cce2 #0e66a2 #0e66a2 #94cce2; - color:#fff; -} -.foswikiSubmit:hover, -a.foswikiSubmit:hover { - background-position:0px -80px; - background-color:#0047b7; - border-color:#0e66a2 #94cce2 #94cce2 #0e66a2; - color:#fff; -} -.foswikiSubmit:active, -a.foswikiSubmit:active { - background-position:0px -160px; - background-color:#73ace6; - border-color:#0e66a2 #94cce2 #94cce2 #0e66a2; - color:#fff; -} -.foswikiSubmitDisabled, -.foswikiSubmitDisabled:hover, -.foswikiSubmitDisabled:active { - background-position:0px -240px; - background-color:#d9e8f7; - border-color:#ccc #ccc #ccc #ccc; - color:#ccc; -} -.foswikiButton, -a.foswikiButton:link, -a.foswikiButton:visited { - background-image:url(bg_button_gradient.gif); - background-repeat:repeat-x; - background-position:0px 0px; - border-color:#fff #94cce2 #94cce2 #fff; - background-color:#cce7f1; - color:#333; -} -.foswikiButton:hover, -.foswikiButton:active, -a.foswikiButton:hover, -a.foswikiButton:active { - background-position:0px -160px; - border-color:#94cce2 #94cce2 #94cce2 #94cce2; - background-color:#cce7f1; - color:#333; -} -.foswikiButtonDisabled, -.foswikiButtonDisabled:hover, -.foswikiButtonDisabled:active { - background-image:url(bg_button_gradient.gif); - background-repeat:repeat-x; - background-position:0px -240px; - border-color:#ccc #ccc #ccc #ccc; - background-color:#edece6; - color:#bbb; -} -.foswikiButtonCancel { - background-image:url(bg_buttoncancel_gradient.gif); - background-repeat:repeat-x; - background-position:0px 0px; - border-color:#f3ddd7 #ce5232 #ce5232 #f3ddd7; - background-color:#dd724d; - color:#fff; -} -.foswikiButtonCancel:hover { - background-position:0px -80px; - border-color:#ce5232 #f3ddd7 #f3ddd7 #ce5232; - background-color:#dd724d; - color:#fff; -} -.foswikiButtonCancel:active { - background-position:0px -160px; - border-color:#ce5232 #f3ddd7 #f3ddd7 #ce5232; - background-color:#dd724d; - color:#fff; -} -.patternToolBar span a:link, -.patternToolBar span a:visited, -.patternToolBar span s, -.patternToolBar span strike { - background-image:url(bg_button_gradient.gif); - background-repeat:repeat-x; -} -.patternToolBar span a:link, -.patternToolBar span a:visited { - background-position:0px 0px; - border-color:#fff #94cce2 #94cce2 #fff; - background-color:#cce7f1; - color:#333; -} -.patternToolBar span a:hover { - background-position:0px -80px; - border-color:#94cce2 #94cce2 #94cce2 #94cce2; - background-color:#cce7f1; - color:#222; -} -.patternToolBar span a:active { - background-position:0px -160px; - border-color:#94cce2 #94cce2 #94cce2 #94cce2; - background-color:#e8e5d7; - color:#222; -} -.patternToolBar span s, -.patternToolBar span strike { - background-position:0px -240px; - border-color:#eae9e7 #eae9e7 #eae9e7 #eae9e7; - background-color:#edece6; - color:#bbb; -} -.patternTextareaButton { - border-color:#fffefd #b8b6ad #b8b6ad #fffefd; - overflow:hidden; -} -.patternButtonFontSelector { - background-image:url(button_font_selector.gif); - width:33px; - height:16px; -} -.patternButtonFontSelectorProportional { - background-position:0 0; -} -.patternButtonFontSelectorMonospace { - background-position:0 -16px; -} -.patternButtonEnlarge, -.patternButtonShrink { - background-image:url(button_arrow.gif); - width:16px; - height:16px; -} -.patternButtonEnlarge { - background-position:0 0; -} -.patternButtonEnlarge:hover { - background-position:0 -42px; -} -.patternButtonEnlarge:active { - background-position:0 -84px; -} -.patternButtonShrink { - background-position:16px 0; -} -.patternButtonShrink:hover { - background-position:16px -42px; -} -.patternButtonShrink:active { - background-position:16px -84px; -} -.foswikiBroadcastMessage { - background-image:url(background_alert.gif); - background-repeat:repeat-x; -} - -/* common settings */ -.patternLeftBarPersonal li, -li.patternLogOut, -li.patternLogIn { - padding-left:13px; - background-position:0 .4em; - background-repeat:no-repeat; -} -.patternLeftBarPersonal li { - background-image:url(bullet-personal_sidebar.gif); -} -.patternLeftBarPersonal li.patternLogOut { - background-image:url(bullet-lock.gif); -} -.patternLeftBarPersonal li.patternLogIn { - background-image:url(bullet-lock.gif); -} - -.foswikiJs a.jqPopUpWindow:link, -.foswikiJs a.jqPopUpWindow:visited, -.foswikiJs a.jqPopUpWindow:hover { - background-image:url(popup.gif); - background-repeat:no-repeat; - background-position:right; - padding-right:14px; - margin-right:3px; -} +#patternScreen{background:#e2e2e2}#patternPage{border-color:#ccc}#patternTopBar{border-color:#e2e2e2}#patternOuter{background:0;border-color:#dadada}#patternSideBar,#patternWrapper{background:#fff}#patternBottomBar{border-color:#ccc;background-color:#f5f5f5}#patternBottomBarContents,#patternBottomBarContents a:link,#patternBottomBarContents a:visited{color:#777}#patternBottomBarContents a:hover{color:#fff}html body{background-color:#f5f5f5;color:#000}html body.patternEditPage,.mceContentBody{background-color:#fff}body,p,li,ul,ol,dl,dt,dd,acronym,h1,h2,h3,h4,h5,h6{background-color:transparent}hr{color:#e2e2e2;background-color:#e2e2e2}pre,code,tt{color:#333}pre{background:#f5f5f5;border-color:#ddd}blockquote{background-color:#f5f5f5;border-color:#ddd}blockquote h2{background:0}h1{color:#2989bb}h2,h3,h4,h5,h6{color:#d1400e}h2{border-color:#e2e2e2}h3,h4,h5,h6{border-color:#e2e2e2}.foswikiNewLink font{color:inherit}.foswikiNewLink a:link sup,.foswikiNewLink a:visited sup{color:#777;border-color:#ddd}.foswikiNewLink a:hover sup{background-color:#0055b5;color:#fff;border-color:#0055b5}.foswikiNewLink{border-color:#ddd}:link:focus,:visited:focus,:link,:visited,:link:active,:visited:active{color:#4571d0;background-color:transparent}:link:hover,:visited:hover{color:#fff;background-color:#0055b5;background-image:none}:link:hover img,:visited:hover img{background-color:transparent}.foswikiTopic a:visited{color:#666}.foswikiTopic a:hover{color:#fff}.foswikiTopic .foswikiUnvisited a:visited{color:#4571d0}.foswikiTopic .foswikiUnvisited a:hover{color:#fff}textarea,input,select{border-color:#aaa;color:#000;background-color:#fff}.foswikiSubmit,.foswikiButton{border-color:#fff #888 #888 #fff}.foswikiSubmit{color:#fff;background-color:#06c}.foswikiButton{color:#000;background-color:#e2e3e3}.foswikiButtonCancel{color:#000;background-color:#f2d5d0}.foswikiSubmitDisabled,.foswikiSubmitDisabled:active{border-color:#fff #ccc #ccc #fff;color:#aaa;background-color:#eef7fa}.foswikiTextarea,.foswikiInputField,.foswikiInputFieldDisabled,.foswikiInputFieldReadOnly,.foswikiSelect{border-color:#bbb #f2f2f2 #f2f2f2 #bbb}.foswikiTextarea,.foswikiInputField,.foswikiSelect{color:#000;background-color:#fff}.foswikiInputField:active,.foswikiInputField:focus,.foswikiInputFieldFocus{background-color:#ffffe0}.foswikiTextareaRawView{color:#000}.foswikiInputFieldDisabled{color:#aaa;background-color:#fafaf8}.foswikiInputFieldReadOnly{color:#777}.foswikiSelect{border-color:#bbb #f2f2f2 #f2f2f2 #bbb;color:#000;background-color:#fff}.foswikiInputFieldDisabled,.foswikiSelectDisabled{color:#aaa;border-color:#bbb #f2f2f2 #f2f2f2 #bbb;background-color:#fafaf8}.foswikiInputFieldBeforeFocus{color:#777}.foswikiTable,.foswikiTable td,.foswikiTable th{border-color:#eee}.foswikiTable th{background:#d6d3cf}.foswikiTable th,.foswikiTable th a:link,.foswikiTable th a:visited{color:#000}.twistyPlaceholder{color:#777}a:hover.twistyTrigger{color:#fff}.revComment .patternTopicActions{background-color:#eef7fa}.foswikiGrayText{color:#777}.foswikiGrayText a:link,.foswikiGrayText a:visited{color:#777}.foswikiGrayText a:hover{color:#fff}table.foswikiFormTable th.foswikiFormTableHRow,table.foswikiFormTable td.foswikiFormTableRow{color:#777}.foswikiEditForm{color:#000}.foswikiEditForm .foswikiFormTable,.foswikiEditForm .foswikiFormTable th,.foswikiEditForm .foswikiFormTable td{border-color:#e2e2e2}.foswikiEditForm .foswikiFormTable td{background-color:#f7fafc}.foswikiEditForm .foswikiFormTable th{background-color:#f0f6fb}.patternTwistyButton h3{color:#d1400e}.foswikiAttachments table,table.foswikiFormTable{border-color:#e2e2e2;background-color:#fff}.foswikiAttachments table{background-color:#fff}.foswikiForm td,.foswikiForm th,.foswikiAttachments td,.foswikiAttachments th{border-color:#e2e2e2}.foswikiAttachments .foswikiTable th font,table.foswikiFormTable th.foswikiFormTableHRow font{color:#4571d0}.foswikiFormSteps{background-color:#eef7fa;border-color:#e2e2e2}.foswikiFormStep{border-color:#e2e2e2}.foswikiFormStep h2{color:#2989bb}.foswikiFormStep h3,.foswikiFormStep h4{color:#d1400e}.foswikiFormStep h3,.foswikiFormStep h4{background-color:transparent}.foswikiFormStep .foswikiHelp{background:#fff}.foswikiToc .foswikiTocTitle{color:#777}.foswikiBroadcastMessage,.foswikiNotification{background-color:#ffe67b}.foswikiNotification{border:2px solid #ffdf4c}.foswikiMessage{background-color:#ffe67b}#foswikiLogin .patternLoginNotification{background-color:#fff;border-color:#f00}.foswikiHelp{background-color:#edf5fa;border-color:#e2e2e2}.foswikiBroadcastMessage b,.foswikiBroadcastMessage strong{color:#f00}.foswikiAlert,.foswikiAlert code{color:#f00}.foswikiEmulatedLink{color:#4571d0}.foswikiPageForm table{border-color:#e2e2e2;background:#fff}.foswikiPageForm hr{border-color:#cfcfcf;background-color:#cfcfcf;color:#cfcfcf}.foswikiAccessKey{color:inherit;border-color:#777}a:link .foswikiAccessKey,a:visited .foswikiAccessKey{color:inherit}a:hover .foswikiAccessKey{color:inherit}.foswikiImage img{border-color:#eee;background-color:#fff}#patternTopBar .foswikiImage img{background-color:transparent}.foswikiImage a:hover img{border-color:#0055b5}#patternPage{background-color:#fff}.patternHomePathTitle,.patternRevInfo,.patternHomePath a:link,.patternHomePath a:visited{border-color:#ddd;color:#666}.patternTop a:hover{border:0;color:#fff}.patternHomePath .patternRevInfo,.patternHomePath .patternRevInfo a:link,.patternHomePath .patternRevInfo a:visited{color:#777}.patternHomePath .patternRevInfo a:hover{color:#fff}#patternSideBarContents{color:#000}#patternSideBarContents hr{color:#e2e2e2;background-color:#e2e2e2}#patternSideBarContents a:link,#patternSideBarContents a:visited{color:#444}#patternSideBarContents a:hover{color:#fff}#patternSideBarContents .patternLeftBarPersonal,#patternSideBarContents .patternWebIndicator{border-color:#dadada}#patternSideBarContents b,#patternSideBarContents strong{color:#d1400e}.patternTopicActions{background-color:#2989bb;color:#bbb}.patternTopicActions s,.patternTopicActions strike{color:#aaa}.patternTopicActions .foswikiSeparator{color:#e2e2e2}.patternActionButtons a:link,.patternActionButtons a:visited{color:#fff}.patternActionButtons a:hover{color:#fff}.patternTopicActions a:link .foswikiAccessKey,.patternTopicActions a:visited .foswikiAccessKey{color:#fff;border-color:#fff}.patternTopicActions a:hover .foswikiAccessKey{color:#fff}.patternTopicActions label{color:#000}.patternHelpCol{color:#777}.patternSigLine{color:#777}.patternEditTopic{background:#eef7fa}.patternToolBar a:link .foswikiAccessKey,.patternToolBar a:visited .foswikiAccessKey{color:inherit;border-color:#666}.patternToolBar a:hover .foswikiAccessKey{background-color:transparent;color:inherit;border-color:#666}table#foswikiSearchTable{border-color:#e2e2e2}table#foswikiSearchTable th,table#foswikiSearchTable td{background-color:#fff;border-color:#e2e2e2}table#foswikiSearchTable hr{border-color:#e2e2e2;background-color:#e2e2e2}table#foswikiSearchTable th{color:#000}.foswikiSearchResult .foswikiAlert{color:#f00}.foswikiSearchResult .foswikiSummary .foswikiAlert{color:#900}.foswikiSearchResult .foswikiBottomRow,.foswikiSearchResult .foswikiBottomRow a:link,.foswikiSearchResult .foswikiBottomRow a:visited{color:#049804}.foswikiSearchResult .foswikiBottomRow:hover a:link,.foswikiSearchResult .foswikiBottomRow:hover a:visited{color:#06c}.foswikiSearchResult .foswikiBottomRow:hover a:hover{color:#fff}.patternViewPage .patternSearchResultsBegin{border-color:#eee}.patternBookView .foswikiTopRow{background-color:transparent;color:#777}.patternBookView .foswikiBottomRow{border-color:#e2e2e2}.patternBookView .patternSearchResultCount{color:#777}.foswikiPreviewArea{border-color:#f00;background-color:#fff}.patternDiff{border-color:#6b7f93}#patternMainContents .patternDiff h4.patternSearchResultsHeader{background-color:#6b7f93;color:#fff}#patternMainContents .patternDiff h4.patternSearchResultsHeader a:link,#patternMainContents .patternDiff h4.patternSearchResultsHeader a:visited{color:#fff}tr.foswikiDiffDebug td{border-color:#e2e2e2}.patternDiffPage .foswikiDiffTable th{background-color:#ccc}.foswikiDiffChangedHeader,tr.foswikiDiffDebug .foswikiDiffChangedText,tr.foswikiDiffDebug .foswikiDiffChangedText{background:#9f9}tr.foswikiDiffDebug .foswikiDiffDeletedMarker,tr.foswikiDiffDebug .foswikiDiffDeletedText{background-color:#f99}.foswikiDiffAddedHeader,tr.foswikiDiffDebug .foswikiDiffAddedMarker,tr.foswikiDiffDebug .foswikiDiffAddedText{background-color:#ccf}tr.foswikiDiffDebug .foswikiDiffUnchangedText{color:#777}.foswikiDiffLineNumberHeader{background-color:#ccc}.foswikiToc li{background-image:url(bullet-toc.gif);background-repeat:no-repeat;background-position:0 .4em}.patternPrintPage #patternOuter{background:#fff}.foswikiSubmit,.foswikiSubmitDisabled{background-image:url(bg_submit_gradient.gif);background-repeat:repeat-x}.foswikiSubmit,a.foswikiSubmit:link,a.foswikiSubmit:visited{background-position:0 0;background-color:#06c;border-color:#94cce2 #0e66a2 #0e66a2 #94cce2;color:#fff}.foswikiSubmit:hover,a.foswikiSubmit:hover{background-position:0 -80px;background-color:#0047b7;border-color:#0e66a2 #94cce2 #94cce2 #0e66a2;color:#fff}.foswikiSubmit:active,a.foswikiSubmit:active{background-position:0 -160px;background-color:#73ace6;border-color:#0e66a2 #94cce2 #94cce2 #0e66a2;color:#fff}.foswikiSubmitDisabled,.foswikiSubmitDisabled:hover,.foswikiSubmitDisabled:active{background-position:0 -240px;background-color:#d9e8f7;border-color:#ccc #ccc #ccc #ccc;color:#ccc}.foswikiButton,a.foswikiButton:link,a.foswikiButton:visited{background-image:url(bg_button_gradient.gif);background-repeat:repeat-x;background-position:0 0;border-color:#fff #94cce2 #94cce2 #fff;background-color:#cce7f1;color:#333}.foswikiButton:hover,.foswikiButton:active,a.foswikiButton:hover,a.foswikiButton:active{background-position:0 -160px;border-color:#94cce2 #94cce2 #94cce2 #94cce2;background-color:#cce7f1;color:#333}.foswikiButtonDisabled,.foswikiButtonDisabled:hover,.foswikiButtonDisabled:active{background-image:url(bg_button_gradient.gif);background-repeat:repeat-x;background-position:0 -240px;border-color:#ccc #ccc #ccc #ccc;background-color:#edece6;color:#bbb}.foswikiButtonCancel{background-image:url(bg_buttoncancel_gradient.gif);background-repeat:repeat-x;background-position:0 0;border-color:#f3ddd7 #ce5232 #ce5232 #f3ddd7;background-color:#dd724d;color:#fff}.foswikiButtonCancel:hover{background-position:0 -80px;border-color:#ce5232 #f3ddd7 #f3ddd7 #ce5232;background-color:#dd724d;color:#fff}.foswikiButtonCancel:active{background-position:0 -160px;border-color:#ce5232 #f3ddd7 #f3ddd7 #ce5232;background-color:#dd724d;color:#fff}.patternToolBar span a:link,.patternToolBar span a:visited,.patternToolBar span s,.patternToolBar span strike{background-image:url(bg_button_gradient.gif);background-repeat:repeat-x}.patternToolBar span a:link,.patternToolBar span a:visited{background-position:0 0;border-color:#fff #94cce2 #94cce2 #fff;background-color:#cce7f1;color:#333}.patternToolBar span a:hover{background-position:0 -80px;border-color:#94cce2 #94cce2 #94cce2 #94cce2;background-color:#cce7f1;color:#222}.patternToolBar span a:active{background-position:0 -160px;border-color:#94cce2 #94cce2 #94cce2 #94cce2;background-color:#e8e5d7;color:#222}.patternToolBar span s,.patternToolBar span strike{background-position:0 -240px;border-color:#eae9e7 #eae9e7 #eae9e7 #eae9e7;background-color:#edece6;color:#bbb}.patternTextareaButton{border-color:#fffefd #b8b6ad #b8b6ad #fffefd;overflow:hidden}.patternButtonFontSelector{background-image:url(button_font_selector.gif);width:33px;height:16px}.patternButtonFontSelectorProportional{background-position:0 0}.patternButtonFontSelectorMonospace{background-position:0 -16px}.patternButtonEnlarge,.patternButtonShrink{background-image:url(button_arrow.gif);width:16px;height:16px}.patternButtonEnlarge{background-position:0 0}.patternButtonEnlarge:hover{background-position:0 -42px}.patternButtonEnlarge:active{background-position:0 -84px}.patternButtonShrink{background-position:16px 0}.patternButtonShrink:hover{background-position:16px -42px}.patternButtonShrink:active{background-position:16px -84px}.foswikiBroadcastMessage{background-image:url(background_alert.gif);background-repeat:repeat-x}.patternLeftBarPersonal li,li.patternLogOut,li.patternLogIn{padding-left:13px;background-position:0 .4em;background-repeat:no-repeat}.patternLeftBarPersonal li{background-image:url(bullet-personal_sidebar.gif)}.patternLeftBarPersonal li.patternLogOut{background-image:url(bullet-lock.gif)}.patternLeftBarPersonal li.patternLogIn{background-image:url(bullet-lock.gif)}.foswikiJs a.jqPopUpWindow:link,.foswikiJs a.jqPopUpWindow:visited,.foswikiJs a.jqPopUpWindow:hover{background-image:url(popup.gif);background-repeat:no-repeat;background-position:right;padding-right:14px;margin-right:3px} \ No newline at end of file diff --git a/doc/html/user/pub/System/PatternSkinTheme2009/column_left.css b/doc/html/user/pub/System/PatternSkinTheme2009/column_left.css index c6d6ae50..b47ad089 100644 --- a/doc/html/user/pub/System/PatternSkinTheme2009/column_left.css +++ b/doc/html/user/pub/System/PatternSkinTheme2009/column_left.css @@ -1,12 +1 @@ -/* -places the side bar at the left -depends on global settings in layout.css -*/ - -#patternOuter { - margin-left:16em; -} -#patternSideBar { - width:16em; - margin-left:-16em; -} +#patternOuter{margin-left:16em}#patternSideBar{width:16em;margin-left:-16em} \ No newline at end of file diff --git a/doc/html/user/pub/System/PatternSkinTheme2009/style.css b/doc/html/user/pub/System/PatternSkinTheme2009/style.css index df75ca68..0792bcda 100644 --- a/doc/html/user/pub/System/PatternSkinTheme2009/style.css +++ b/doc/html/user/pub/System/PatternSkinTheme2009/style.css @@ -1,1096 +1 @@ -/* ----------------------------------------------------------- - STYLE - Appearance: margins, padding, fonts, borders - ----------------------------------------------------------- */ - - -/* ---------------------------------------------------------------------------- - CONSTANTS - - Sizes - ---------------------------------------- - S1 line-height 1.5em - S2 somewhat smaller font size font-size:94% - S3 small font size, foswikiSmall font-size:86%; line-height:110%; - S4 horizontal bar padding (h2, patternTop) 5px - S5 form and attachment padding 20px - S6 left margin left bar 1em - - ------------------------------------------------------------------------- */ - -/* GENERAL HTML ELEMENTS */ - -html body { - font-family:arial, verdana, sans-serif; - font-size:104%; - voice-family:"\"}\""; - voice-family:inherit; - font-size:small; -} -html>body { /* Mozilla */ - font-size:small; -} -body { - line-height:1.5em; /*S1*/ - /* change font size here */ - font-size:103%; -} -body font { - line-height:135%; -} -th { - line-height:1.15em; -} -label { - padding:.15em .3em .15em 0; /* same vertical padding as foswikiInputField */ -} -hr { - height:1px; - border:none; -} -/* put overflow pre in a scroll area */ -pre { - width:auto; - margin:1em 0; /* Win IE tries to make this bigger otherwise */ - border-style:solid; - border-width:1px; - padding:1em; -} -pre, code, tt { - font-family: "Bitstream Vera Sans Mono","Andale Mono",Courier,monospace; - font-size:86%; -} - -/* IE behavior for pre is defined in css.pattern.tmpl in conditional comment */ -html>body pre { /* hide from IE */ - /*\*/ overflow:auto !important; /* */ overflow:scroll; width:auto; /* for Mac Safari */ -} -ol, ul { - margin-top:0; -} -blockquote { - padding:.5em 1.25em; - border-style:solid; - border-width:1px 1px 1px 5px; -} - -/* Text */ -h1 { - margin:0 0 .5em 0; -} -h1, h2, h3, h4, h5, h6 { - font-weight:normal; - line-height:1em; -} -h1 { font-size:190%; } -h2 { font-size:153%; } -h3 { font-size:133%; } -h4 { font-size:122%; font-weight:bold; } -h5 { font-size:110%; font-weight:bold; } -h6 { font-size:95%; font-weight:bold; } -h2, h3, h4, h5, h6 { - display:block; - /* give header a background color for easy scanning:*/ - padding:.25em 10px; - margin:1em -10px .35em -10px; - height:auto; -} -h1.patternTemplateTitle { - font-size:170%; - text-align:center; -} -h2.patternTemplateTitle { - text-align:center; - margin-top:.5em; - background:none; - border:none; -} -/* Links */ -/* somehow the foswikiNewLink style have to be before the general link styles */ -.foswikiNewLink { - border-width:0 0 1px 0; - border-style:solid; -} -.foswikiNewLink a { - text-decoration:none; - margin-left:1px; -} -.foswikiNewLink a sup { - text-align:center; - padding:0 2px; - vertical-align:baseline; - font-size:100%; - text-decoration:none; -} -.foswikiNewLink a:link sup, -.foswikiNewLink a:visited sup { - border-width:1px; - border-style:solid; - text-decoration:none; -} -.foswikiNewLink a:hover sup { - text-decoration:none; -} - -:link:focus, -:visited:focus, -:link, -:visited, -:link:active, -:visited:active { - text-decoration:underline; -} -:link:hover, -:visited:hover { - text-decoration:none; -} -img { - vertical-align:text-bottom; - border:0; -} - -/* Form elements */ -form { - display:inline; - margin:0; - padding:0; -} -textarea, -input, -select { - vertical-align:middle; - font-family:arial, verdana, sans-serif; - font-size:100%; -} -label input { - vertical-align:text-bottom; -} -.foswikiTextarea { - padding:1px 4px; -} -.foswikiSubmit, -.foswikiSubmitDisabled, -.foswikiButton, -.foswikiButtonDisabled, -.foswikiButtonCancel, -a.foswikiButton, -a.foswikiSubmit, -a.foswikiButtonCancel, -.foswikiCheckbox { - border-width:1px; - border-style:solid; - padding:.1em .2em; - font-weight:bold; - vertical-align:middle; - text-align:center; -} -.foswikiSubmit, -.foswikiSubmitDisabled, -.foswikiButton, -.foswikiButtonDisabled, -.foswikiButtonCancel, -.foswikiSubmit:hover, -.foswikiSubmitDisabled:hover, -.foswikiButton:hover, -.foswikiSubmit:active, -.foswikiSubmitDisabled:active, -.foswikiButton:active { - cursor:default; - outline:none; -} -a.foswikiButton, -a.foswikiButton:hover, -a.foswikiButton:link:active, -a.foswikiButton:visited:active, -a.foswikiButtonCancel, -a.foswikiButtonCancel:hover, -a.foswikiButtonCancel:link:active, -a.foswikiButtonCancel:visited:active, -a.foswikiSubmit, -a.foswikiSubmit:hover, -a.foswikiSubmit:link:active, -a.foswikiSubmit:visited:active { - text-decoration:none; -} -.jqButton.foswikiButtonCancel, -.jqButton.foswikiButtonCancel:hover { - border:none; - padding:0; - font-weight:normal; - margin:0; -} -.foswikiCheckbox, -.foswikiRadioButton { - margin:1px .25em 1px .1em; - padding:0 0 0 .5em; - border:0; -} -.foswikiTextarea, -.foswikiInputField, -.foswikiInputFieldDisabled, -.foswikiInputFieldReadOnly, -.foswikiSelect { - border-width:2px; - border-style:solid; -} -.foswikiTextarea, -.foswikiInputField, -.foswikiInputFieldDisabled, -.foswikiInputFieldReadOnly { - font-size:100%; -} -.foswikiInputField, -.foswikiInputFieldDisabled, -.foswikiInputFieldReadOnly { - padding:.1em .2em; -} - -/* ----------------------------------------------------------- - Plugin elements - ----------------------------------------------------------- */ - -/* TagMePlugin */ -.tagMePlugin select { - margin:0 .25em 0 0; -} -.tagMePlugin input { - border:0px; -} - -/* RevCommentPlugin */ -.patternEditPage .revComment { - padding:1em 0 2em 0; -} - -/* EditTablePlugin */ -.editTable .foswikiTable { - margin:0 0 2px 0; -} -.editTableEditImageButton { - border:none; -} - -/* TablePlugin */ -.foswikiTable, -.foswikiTable td, -.foswikiTable th { - border-width:1px; -} -.foswikiTable { - border-style:solid; - margin:2px 0; - border-collapse:collapse; -} -.foswikiTable td { - padding:3px 6px; - border-top-style:solid; - border-bottom-style:solid; -} -.foswikiTable th { - border-left-style:solid; - border-right-style:solid; - padding:4px 6px; -} -.foswikiTable .tableSortIcon { - margin:0 0 0 5px; -} -.foswikiTable a:link, -.foswikiTable a:visited { - text-decoration:underline; -} -.foswikiTable a:hover { - text-decoration:underline; -} - -/* TwistyContrib */ -.twistyTrigger a:link, -.twistyTrigger a:visited { - text-decoration:none; -} -.twistyTrigger a:link .foswikiLinkLabel, -.twistyTrigger a:visited .foswikiLinkLabel { - text-decoration:none; -} -.twistyTrigger a img { - margin:0 .25em 0 0; -} - -/*tipsOfTheDay*/ -.tipsOfTheDay { - padding:10px; -} - -/* ----------------------------------------------------------- - Foswiki styles - ----------------------------------------------------------- */ - -#foswikiLogin { - width:44em; - margin:0 auto; - text-align:center; -} -#foswikiLogin .foswikiFormSteps { - border-width:5px; - text-align:left; -} -#foswikiLogin .patternLoginNotification { - padding-left:.5em; - padding-right:.5em; - border-style:solid; - border-width:2px; -} -.foswikiTable h2, .foswikiFormTable h2, -.foswikiTable h3, .foswikiFormTable h3, -.foswikiTable h4, .foswikiFormTable h4, -.foswikiTable h5, .foswikiFormTable h5, -.foswikiTable h6, .foswikiFormTable h6 { - border:0; - margin:0; - padding-left:0; - padding-right:0; -} -.foswikiFormTable th { - font-weight:normal; -} -.foswikiFormTable .foswikiTable th { - font-weight:bold; -} -.patternEditPage .foswikiFormTable td, -.patternEditPage .foswikiFormTable th { - padding:.3em .4em; - border-style:solid; - border-width:0 0 1px 0; - vertical-align:middle; -} -.foswikiAttachments .foswikiTable, -table.foswikiFormTable { - margin:10px 0 5px 0; - border-collapse:collapse; - padding:0px; - border-spacing:0px; - empty-cells:show; - border-style:solid; - border-width:1px; -} -.foswikiAttachments table { - line-height:1.5em; /*S1*/ - width:auto; - width:100%; -} -.foswikiAttachments .foswikiTable th { - border-style:none none solid solid; - border-width:1px; -} -.foswikiAttachments .foswikiTable th, -table.foswikiFormTable th.foswikiFormTableHRow { - padding:3px 6px; - height:2.5em; - vertical-align:middle; -} -table.foswikiFormTable th.foswikiFormTableHRow { - text-align:center; -} -.foswikiFormTableFooter {} -.foswikiAttachments .foswikiTable td, -table.foswikiFormTable td { - padding:3px 2em 3px 1em; - height:1.5em; /*S1*/ - text-align:left; - vertical-align:top; -} -.foswikiAttachments .foswikiTable th.foswikiFirstCol, -.foswikiAttachments .foswikiTable td.foswikiFirstCol { - /* make more width for the icon column */ - width:26px; - text-align:center; -} -.foswikiAttachments .foswikiTable caption { - display:none; -} -table.foswikiFormTable th.foswikiFormTableHRow a:link, -table.foswikiFormTable th.foswikiFormTableHRow a:visited { - text-decoration:none; -} -.foswikiAttachments h3, -.foswikiForm h3, -.patternTwistyButton h3 { - font-size:1.1em; - font-weight:bold; - display:inline; - margin:0; - padding:0; -} -.patternTwistyButton h3 { - /* always add class foswikiButton as well */ - padding:.1em .2em; -} -.foswikiForm h3 a:link, -.foswikiForm h3 a:visited { - text-decoration:none; -} -.patternTwistyButton { - font-weight:bold; - margin:.25em 0; - display:inline-block; -} -.foswikiForm h3 .foswikiSmall { - font-weight:normal; - font-size:86%; - margin:0 0 0 .15em; -} -.foswikiFormSteps { - padding:0 40px; - border-width:1px; - border-style:solid; -} -.foswikiFormStep { - padding:12px 40px; - margin:-1px -40px -1px -40px; - border-width:1px; - border-style:solid none; -} -.foswikiFormStep h2, -.foswikiFormStep h3, -.foswikiFormStep h4 { - border:none; - margin-top:0; - margin-left:0; - margin-right:0; - padding:0; - background:none; -} -.foswikiFormStep p { - margin:.5em 0; -} -.foswikiFormSteps h2 { - font-size:115%; - font-weight:bold; -} -.foswikiFormSteps h3 { - font-size:100%; - font-weight:bold; -} -.foswikiFormSteps h4 { - font-size:100%; - font-weight:bold; -} -.foswikiFormSteps blockquote { - margin-left:1em; - padding-top:.25em; - padding-bottom:.25em; -} -.foswikiToc { - margin:1em 0; - padding:.3em 0 .6em 0; -} -.foswikiToc ul { - list-style:none; - padding:0 0 0 .5em; - margin:0; -} -.foswikiToc li { - margin-left:1em; - padding-left:1em; - background-repeat:no-repeat; - background-position:0 .5em; -} -.foswikiToc .foswikiTocTitle { - margin:0; - padding:0; - font-weight:bold; -} -.foswikiSmall { - font-size:86%; /*S3*/ - line-height:1.5em; /*S1*/ -} -.foswikiSmallish { - font-size:94%; /*S2*/ - line-height:1.5em; /*S1*/ -} -.foswikiEmulatedLink { - text-decoration:underline; -} -.foswikiPageForm table { - border-width:1px; - border-style:solid; -} -.foswikiPageForm table { - width:100%; -} -.foswikiPageForm th, -.foswikiPageForm td { - border:0; - padding:.5em 1em; -} -.foswikiPageForm td {} -.foswikiPageForm td.first { - padding-top:1em; -} -.foswikiBroadcastMessage, -.foswikiNotification { - padding:1em 20px; /*S5*/ -} -.foswikiNotification { - margin:1em 0; - border-style:solid; - border-width:2px; -} -.foswikiBroadcastMessage { - margin:0 0 1.25em 0; -} -.foswikiMessage { - padding:.5em 10px; - border:none; -} -.foswikiHelp { - padding:1em; - margin:.25em 0 0 0; - border-style:solid; - border-width:2px; -} -.foswikiHelp ul { - margin:0; - padding-left:20px; -} -.foswikiAccessKey { - border:none; -} -a:hover .foswikiAccessKey { - text-decoration:none; - border-width:0 0 1px 0; - border-style:solid; -} -.foswikiWebIndent { - margin:0 0 0 1em; -} -.foswikiLinkLabel {} -.foswikiImage img { - padding:3px; - border-width:1px; - border-style:solid; -} -.foswikiImage a:link, -.foswikiImage a:visited { - background:none; -} -#foswikiLogo img { - margin:0; - padding:0; - border:0px; -} -.foswikiNoBreak { - white-space:nowrap; -} -.foswikiSearchResultCount { - font-weight:bold; -} - -/* ----------------------------------------------------------- - Pattern skin specific elements - ----------------------------------------------------------- */ - -/* LAYOUT ELEMENTS */ -/* for specific layout sub-elements see further down */ - -.patternNoViewPage #patternOuter { - margin-left:0; - margin-right:0; -} -#patternTopBar { - border-width:1px; - border-style:none none solid none; -} -#patternBottomBar { - border-width:1px 0 0 0; - border-style:solid; -} -#patternWebBottomBar { - font-size:94%; /*S2*/ - line-height:125%; - text-align:left; -} -#patternSideBarContents { - margin:0 0 1em 0; - padding-right:.5em; - padding-left:1em; -} -#patternMainContents, -#patternBottomBarContents, -#patternSideBarContents, -#patternTopBarContents { - padding-right:2em; - padding-left:2em; -} -#patternSideBarContents, -#patternMainContents { - padding-top:2em; -} -#patternSideBarContents { - padding-bottom:2em; -} -#patternTopBarContents { - padding-top:1em; -} -#patternBottomBarContents { - padding-top:1em; -} -.patternNoViewPage .foswikiTopic { - margin-top:2em; -} - -/* bottom paddings */ -#patternMainContents { - padding-bottom:4em; -} -#patternBottomBarContents { - padding-bottom:2em; -} -.foswikiTopic { - margin:0 0 2em 0; -} -.patternNoViewPage #patternMainContents, -.patternNoViewPage #patternBottomBarContents { - margin-left:4%; - margin-right:4%; -} -.patternEditPage #patternMainContents, -.patternEditPage #patternBottomBarContents { - margin-left:2%; - margin-right:2%; -} - -.patternTop { - margin:0 0 .5em 0; -} -.patternNoViewPage .patternTop { - font-size:94%; -} -#patternSideBarContents img { - margin:0 3px 0 0; - vertical-align:text-bottom; -} -#patternSideBarContents a:link, -#patternSideBarContents a:visited { - text-decoration:none; -} -#patternSideBarContents ul { - padding:0; - margin:0; - list-style:none; -} -#patternSideBarContents, -#patternSideBarContents ul, -#patternSideBarContents li { - line-height:1.35em; -} -#patternSideBarContents h2 { - border:none; - background-color:transparent; -} -#patternSideBarContents .patternLeftBarPersonal, -#patternSideBarContents .patternWebIndicator { - padding:0 1em .75em 1em; - margin:0 -1em .75em -1em; /*S6*/ - border-style:none none solid none; - border-width:1px; -} -.patternWebIndicator a { - font-size:1.1em; - font-weight:bold; -} -.patternLeftBarPersonalContent { - padding:1em 0 0 0; -} -#patternSideBarContents li { - overflow:hidden; -} -html>body #patternSideBarContents li { /* Mozilla */ - overflow:visible; -} - -/* form options in top bar */ -.patternMetaMenu {} -.patternMetaMenu input, -.patternMetaMenu select, -.patternMetaMenu select option { - margin:0; -} -.patternMetaMenu select option { - padding:1px 0 0 0; -} -.patternMetaMenu ul { - padding:0; - margin:0; - list-style:none; -} -.patternMetaMenu ul li { - padding:0; - display:inline; -} -.patternMetaMenu ul li .foswikiInputField, -.patternMetaMenu ul li .foswikiSelect { - margin:0 0 0 .5em; -} -.patternHomePath .foswikiSeparator { - padding:0 .5em; -} -.patternHomePath a:link, -.patternHomePath a:visited { - text-decoration:none; - border-style:none none solid none; - border-width:1px; -} - -.patternToolBar { -} -.patternToolBar span { - float:left; -} -.patternToolBar span s, -.patternToolBar span strike, -.patternToolBar span a:link, -.patternToolBar span a:visited { - display:block; - border-width:1px; - border-style:solid; - padding:.1em .35em; - margin:0 0 .2em .25em; - font-weight:bold; -} -.patternToolBar span a:link, -.patternToolBar span a:visited { - text-decoration:none; - outline:none; -} -.patternToolBar span a:hover, -.patternToolBar span a:hover { - border-width:1px; - border-style:solid; -} -.patternToolBar span a:active { - outline:none; -} -.patternToolBar span.foswikiAccessKey { - float:none; -} -.patternToolBar span s, -.patternToolBar span strike { - text-decoration:none; -} - -.patternActionButtons a:link, -.patternActionButtons a:visited { - padding:1px 1px 2px 1px; -} -.patternTopicActions .patternActionButtons a:link, -.patternTopicActions .patternActionButtons a:visited { - text-decoration:none; -} -.patternTopicActions .patternActionButtons span s, -.patternTopicActions .patternActionButtons span strike { - text-decoration:none; -} -.patternActionButtons a.foswikiButton, -.patternActionButtons a.foswikiSubmit, -.patternActionButtons a.foswikiButtonCancel { - padding:.1em .2em; -} -.patternInfo { - margin:1.5em 0 0 0; -} -.patternHomePath .patternRevInfo { - font-size:94%; - white-space:nowrap; -} -.patternTopicFooter { - margin:1em 0 0 0; -} -.patternSimpleLogo { - margin:1em 0 0 0; -} - -/* WebSearch, WebSearchAdvanced */ -.foswikiWebSearchForm form { - width:100%; -} -.foswikiWebSearchForm ul { - list-style:none; - margin-top:0; -} - -#foswikiSearchTable { - width:100%; - margin:.5em 0; - background:none; - border-bottom:0; -} -#foswikiSearchTable th, -#foswikiSearchTable td { - padding:1em; - border-width:0 0 1px 0; - border-style:solid; -} -#foswikiSearchTable th { - width:20%; - text-align:right; -} -#foswikiSearchTable td { - width:80%; -} - -/* ----------------------------------------------------------- - Search results - styles and overridden styles used in search.pattern.tmpl - ----------------------------------------------------------- */ - -.patternSearchResults { - /* no longer used in search.pattern.tmpl, but remains in rename templates */ - margin:0 0 1em 0; -} -#renamehelpshow a span, -#renamehelphide a span { - font-size: 1.1em; -} -.patternSearchResults blockquote { - margin:1em 0 1em 5em; -} -h3.patternSearchResultsHeader, -h4.patternSearchResultsHeader { - display:block; - border-width:0 0 1px 0; - border-style:solid; - font-weight:bold; -} -.patternSearchResults h3 { - font-size:115%; /* same as foswikiFormStep */ - margin:0; - padding:.5em 40px; /*S5*/ - font-weight:bold; -} -h4.patternSearchResultsHeader { - font-size:100%; - padding-top:.3em; - padding-bottom:.3em; - font-weight:normal; -} -.patternSearchResult .foswikiTopRow { - padding-top:.2em; - margin-top:.1em; -} -.patternSearchResult .foswikiBottomRow { - margin-bottom:.1em; - padding-bottom:.25em; - border-width:0 0 1px 0; - border-style:solid; -} -.patternSearchResult .foswikiAlert { - font-weight:bold; -} -.patternSearchResult .foswikiSummary .foswikiAlert { - font-weight:normal; -} -.patternSearchResult .foswikiNew { - border-width:1px; - border-style:solid; - font-size:86%; /*S3*/ - padding:0 1px; - font-weight:bold; -} -.foswikiSearchResultsHeader span { - padding:0 .5em 0 0; -} - -.foswikiSearchResultCount { - font-weight:bold; -} -.foswikiSearchResult { - margin:0 0 1em 0; -} -.foswikiSearchResult .foswikiTopRow {} -.foswikiSearchResult .foswikiBottomRow {} -.foswikiSearchResult .foswikiAlert { - font-weight:bold; -} -.foswikiSummary, -.foswikiSearchResult .foswikiBottomRow { - font-size:86%; /*S3*/ -} -.foswikiSearchResult .foswikiSummary .foswikiAlert { - font-weight:normal; -} -.foswikiSearchResultsPager { - margin:1em 0; - padding:.25em 0; -} -.patternSearchResults .foswikiHelp { - display:block; - width:auto; - padding:.1em 5px; - margin:1em -5px .35em -5px; -} -.patternSearchResultCount { - margin:1em 0 3em 0; -} -.patternSearched {} - -/* Search results in book view format */ - -.patternBookView { - border-width:0 0 2px 2px; - border-style:solid; - /* border color in cssdynamic.pattern.tmpl */ - margin:.5em 0 1.5em -5px; - padding:0 0 0 5px; -} -.patternBookView .foswikiTopRow { - padding:.25em 5px .15em 5px; /*S4*/ - margin:1em -5px .15em -5px; /*S4*/ -} -.patternBookView .foswikiBottomRow { - font-size:100%; - padding:1em 0 1em 0; - width:auto; - border:none; -} - -/* pages that are not view */ - -/* edit.pattern.tmpl */ - -#edithelphide a span, -#edithelpshow a span { - font-size:1.1em; -} - -.patternNoViewPage #patternMainContents { - padding-top:0; -} -.patternEditPage #patternMainContents { - padding-left:0; - padding-right:0; -} -.patternEditPage .patternEditTopic { - padding:5px; - margin:0 0 1em 0; -} -.patternEditPage .foswikiTextarea { -} -.patternEditPage .foswikiForm { - border:none; -} -.foswikiFormHolder { /* constrains the textarea */ - width:100%; -} -.patternEditPage .foswikiForm h1, -.patternEditPage .foswikiForm h2, -.patternEditPage .foswikiForm h3 { - /* same as foswikiFormStep */ - font-size:120%; - font-weight:bold; -} -.foswikiEditboxStyleMono { - font-family: "Bitstream Vera Sans Mono","Andale Mono",Courier,monospace; -} -.foswikiEditboxStyleProportional { - font-family:arial, verdana, sans-serif; -} -.patternSig { - text-align:right -} -.patternSigLine { - margin:.5em 0 0 0; - border-style:none; -} -.foswikiAddFormButton { - float:right; -} -.patternTextareaButton { - margin:0 0 0 1px; - display:block; - cursor:pointer; - border-style:solid; - border-width:1px; -} -.patternButtonFontSelector { - margin:0 8px 0 0; -} -.patternSaveHelp { - margin:1em 0 0 0; - line-height:1.5em; -} - -/* preview.pattern.tmpl */ - -.patternPreviewPage #patternMainContents { - padding-left:0; - padding-right:0; -} -.patternPreviewPage .foswikiTopic { - margin-bottom:0; -} -.foswikiPreviewArea { - border-width:1px; - border-style:solid; - margin:0 0 1.5em 0; - padding:2em; -} - -/* attach.pattern.tmpl */ - -.patternAttachPage .foswikiAttachments .foswikiTable { - width:auto; -} -.patternAttachPage .foswikiAttachments { - margin-top:0; -} -.patternMoveAttachment { - margin:.5em 0 0 0; - text-align:right; -} - -/* rdiff.pattern.tmpl */ - -.patternDiff { - /* same as patternBookView */ - border-width:0 0 2px 2px; - border-style:solid; - margin:.5em 0 1.5em 0; - padding:0 0 0 10px; -} -.patternDiff h4.patternSearchResultsHeader { - padding:.5em 10px; -} -.patternDiffPage .patternRevInfo ul { - padding:0; - margin:2em 0 0 0; - list-style:none; -} -.patternDiffPage .foswikiDiffTable { - margin:2em 0; -} -.foswikiDiffDebug { - /* same styling as pre and code */ - font-family: "Bitstream Vera Sans Mono","Andale Mono",Courier,monospace; - font-size:86%; - white-space:pre; -} -tr.foswikiDiffDebug td { - border-width:1px; - border-style:solid; -} -.patternDiffPage td.foswikiDiffDebugLeft { - border-bottom:none; -} -.patternDiffPage .foswikiDiffTable th { - padding:.25em .5em; -} -.patternDiffPage .foswikiDiffTable td { - padding:.25em; -} -.foswikiDiffLineNumberHeader { - padding:.3em 0; -} - -.mceContentBody { - padding: 1px 4px; -} +html body{font-family:arial,verdana,sans-serif;font-size:104%;voice-family:"\"}\"";voice-family:inherit;font-size:small}html>body{font-size:small}body{line-height:1.5em;font-size:103%}body font{line-height:135%}th{line-height:1.15em}label{padding:.15em .3em .15em 0}hr{height:1px;border:0}pre{width:auto;margin:1em 0;border-style:solid;border-width:1px;padding:1em}pre,code,tt{font-family:"Bitstream Vera Sans Mono","Andale Mono",Courier,monospace;font-size:86%}html>body pre{/*\*/overflow:auto!important;/**/overflow:scroll;width:auto}ol,ul{margin-top:0}blockquote{padding:.5em 1.25em;border-style:solid;border-width:1px 1px 1px 5px}h1{margin:0 0 .5em 0}h1,h2,h3,h4,h5,h6{font-weight:normal;line-height:1em}h1{font-size:190%}h2{font-size:153%}h3{font-size:133%}h4{font-size:122%;font-weight:bold}h5{font-size:110%;font-weight:bold}h6{font-size:95%;font-weight:bold}h2,h3,h4,h5,h6{display:block;padding:.25em 10px;margin:1em -10px .35em -10px;height:auto}h1.patternTemplateTitle{font-size:170%;text-align:center}h2.patternTemplateTitle{text-align:center;margin-top:.5em;background:0;border:0}.foswikiNewLink{border-width:0 0 1px 0;border-style:solid}.foswikiNewLink a{text-decoration:none;margin-left:1px}.foswikiNewLink a sup{text-align:center;padding:0 2px;vertical-align:baseline;font-size:100%;text-decoration:none}.foswikiNewLink a:link sup,.foswikiNewLink a:visited sup{border-width:1px;border-style:solid;text-decoration:none}.foswikiNewLink a:hover sup{text-decoration:none}:link:focus,:visited:focus,:link,:visited,:link:active,:visited:active{text-decoration:underline}:link:hover,:visited:hover{text-decoration:none}img{vertical-align:text-bottom;border:0}form{display:inline;margin:0;padding:0}textarea,input,select{vertical-align:middle;font-family:arial,verdana,sans-serif;font-size:100%}label input{vertical-align:text-bottom}.foswikiTextarea{padding:1px 4px}.foswikiSubmit,.foswikiSubmitDisabled,.foswikiButton,.foswikiButtonDisabled,.foswikiButtonCancel,a.foswikiButton,a.foswikiSubmit,a.foswikiButtonCancel,.foswikiCheckbox{border-width:1px;border-style:solid;padding:.1em .2em;font-weight:bold;vertical-align:middle;text-align:center}.foswikiSubmit,.foswikiSubmitDisabled,.foswikiButton,.foswikiButtonDisabled,.foswikiButtonCancel,.foswikiSubmit:hover,.foswikiSubmitDisabled:hover,.foswikiButton:hover,.foswikiSubmit:active,.foswikiSubmitDisabled:active,.foswikiButton:active{cursor:default;outline:0}a.foswikiButton,a.foswikiButton:hover,a.foswikiButton:link:active,a.foswikiButton:visited:active,a.foswikiButtonCancel,a.foswikiButtonCancel:hover,a.foswikiButtonCancel:link:active,a.foswikiButtonCancel:visited:active,a.foswikiSubmit,a.foswikiSubmit:hover,a.foswikiSubmit:link:active,a.foswikiSubmit:visited:active{text-decoration:none}.jqButton.foswikiButtonCancel,.jqButton.foswikiButtonCancel:hover{border:0;padding:0;font-weight:normal;margin:0}.foswikiCheckbox,.foswikiRadioButton{margin:1px .25em 1px .1em;padding:0 0 0 .5em;border:0}.foswikiTextarea,.foswikiInputField,.foswikiInputFieldDisabled,.foswikiInputFieldReadOnly,.foswikiSelect{border-width:2px;border-style:solid}.foswikiTextarea,.foswikiInputField,.foswikiInputFieldDisabled,.foswikiInputFieldReadOnly{font-size:100%}.foswikiInputField,.foswikiInputFieldDisabled,.foswikiInputFieldReadOnly{padding:.1em .2em}.tagMePlugin select{margin:0 .25em 0 0}.tagMePlugin input{border:0}.patternEditPage .revComment{padding:1em 0 2em 0}.editTable .foswikiTable{margin:0 0 2px 0}.editTableEditImageButton{border:0}.foswikiTable,.foswikiTable td,.foswikiTable th{border-width:1px}.foswikiTable{border-style:solid;margin:2px 0;border-collapse:collapse}.foswikiTable td{padding:3px 6px;border-top-style:solid;border-bottom-style:solid}.foswikiTable th{border-left-style:solid;border-right-style:solid;padding:4px 6px}.foswikiTable .tableSortIcon{margin:0 0 0 5px}.foswikiTable a:link,.foswikiTable a:visited{text-decoration:underline}.foswikiTable a:hover{text-decoration:underline}.twistyTrigger a:link,.twistyTrigger a:visited{text-decoration:none}.twistyTrigger a:link .foswikiLinkLabel,.twistyTrigger a:visited .foswikiLinkLabel{text-decoration:none}.twistyTrigger a img{margin:0 .25em 0 0}.tipsOfTheDay{padding:10px}#foswikiLogin{width:44em;margin:0 auto;text-align:center}#foswikiLogin .foswikiFormSteps{border-width:5px;text-align:left}#foswikiLogin .patternLoginNotification{padding-left:.5em;padding-right:.5em;border-style:solid;border-width:2px}.foswikiTable h2,.foswikiFormTable h2,.foswikiTable h3,.foswikiFormTable h3,.foswikiTable h4,.foswikiFormTable h4,.foswikiTable h5,.foswikiFormTable h5,.foswikiTable h6,.foswikiFormTable h6{border:0;margin:0;padding-left:0;padding-right:0}.foswikiFormTable th{font-weight:normal}.foswikiFormTable .foswikiTable th{font-weight:bold}.patternEditPage .foswikiFormTable td,.patternEditPage .foswikiFormTable th{padding:.3em .4em;border-style:solid;border-width:0 0 1px 0;vertical-align:middle}.foswikiAttachments .foswikiTable,table.foswikiFormTable{margin:10px 0 5px 0;border-collapse:collapse;padding:0;border-spacing:0;empty-cells:show;border-style:solid;border-width:1px}.foswikiAttachments table{line-height:1.5em;width:auto;width:100%}.foswikiAttachments .foswikiTable th{border-style:none none solid solid;border-width:1px}.foswikiAttachments .foswikiTable th,table.foswikiFormTable th.foswikiFormTableHRow{padding:3px 6px;height:2.5em;vertical-align:middle}table.foswikiFormTable th.foswikiFormTableHRow{text-align:center}.foswikiAttachments .foswikiTable td,table.foswikiFormTable td{padding:3px 2em 3px 1em;height:1.5em;text-align:left;vertical-align:top}.foswikiAttachments .foswikiTable th.foswikiFirstCol,.foswikiAttachments .foswikiTable td.foswikiFirstCol{width:26px;text-align:center}.foswikiAttachments .foswikiTable caption{display:none}table.foswikiFormTable th.foswikiFormTableHRow a:link,table.foswikiFormTable th.foswikiFormTableHRow a:visited{text-decoration:none}.foswikiAttachments h3,.foswikiForm h3,.patternTwistyButton h3{font-size:1.1em;font-weight:bold;display:inline;margin:0;padding:0}.patternTwistyButton h3{padding:.1em .2em}.foswikiForm h3 a:link,.foswikiForm h3 a:visited{text-decoration:none}.patternTwistyButton{font-weight:bold;margin:.25em 0;display:inline-block}.foswikiForm h3 .foswikiSmall{font-weight:normal;font-size:86%;margin:0 0 0 .15em}.foswikiFormSteps{padding:0 40px;border-width:1px;border-style:solid}.foswikiFormStep{padding:12px 40px;margin:-1px -40px -1px -40px;border-width:1px;border-style:solid none}.foswikiFormStep h2,.foswikiFormStep h3,.foswikiFormStep h4{border:0;margin-top:0;margin-left:0;margin-right:0;padding:0;background:0}.foswikiFormStep p{margin:.5em 0}.foswikiFormSteps h2{font-size:115%;font-weight:bold}.foswikiFormSteps h3{font-size:100%;font-weight:bold}.foswikiFormSteps h4{font-size:100%;font-weight:bold}.foswikiFormSteps blockquote{margin-left:1em;padding-top:.25em;padding-bottom:.25em}.foswikiToc{margin:1em 0;padding:.3em 0 .6em 0}.foswikiToc ul{list-style:none;padding:0 0 0 .5em;margin:0}.foswikiToc li{margin-left:1em;padding-left:1em;background-repeat:no-repeat;background-position:0 .5em}.foswikiToc .foswikiTocTitle{margin:0;padding:0;font-weight:bold}.foswikiSmall{font-size:86%;line-height:1.5em}.foswikiSmallish{font-size:94%;line-height:1.5em}.foswikiEmulatedLink{text-decoration:underline}.foswikiPageForm table{border-width:1px;border-style:solid}.foswikiPageForm table{width:100%}.foswikiPageForm th,.foswikiPageForm td{border:0;padding:.5em 1em}.foswikiPageForm td.first{padding-top:1em}.foswikiBroadcastMessage,.foswikiNotification{padding:1em 20px}.foswikiNotification{margin:1em 0;border-style:solid;border-width:2px}.foswikiBroadcastMessage{margin:0 0 1.25em 0}.foswikiMessage{padding:.5em 10px;border:0}.foswikiHelp{padding:1em;margin:.25em 0 0 0;border-style:solid;border-width:2px}.foswikiHelp ul{margin:0;padding-left:20px}.foswikiAccessKey{border:0}a:hover .foswikiAccessKey{text-decoration:none;border-width:0 0 1px 0;border-style:solid}.foswikiWebIndent{margin:0 0 0 1em}.foswikiImage img{padding:3px;border-width:1px;border-style:solid}.foswikiImage a:link,.foswikiImage a:visited{background:0}#foswikiLogo img{margin:0;padding:0;border:0}.foswikiNoBreak{white-space:nowrap}.foswikiSearchResultCount{font-weight:bold}.patternNoViewPage #patternOuter{margin-left:0;margin-right:0}#patternTopBar{border-width:1px;border-style:none none solid none}#patternBottomBar{border-width:1px 0 0 0;border-style:solid}#patternWebBottomBar{font-size:94%;line-height:125%;text-align:left}#patternSideBarContents{margin:0 0 1em 0;padding-right:.5em;padding-left:1em}#patternMainContents,#patternBottomBarContents,#patternSideBarContents,#patternTopBarContents{padding-right:2em;padding-left:2em}#patternSideBarContents,#patternMainContents{padding-top:2em}#patternSideBarContents{padding-bottom:2em}#patternTopBarContents{padding-top:1em}#patternBottomBarContents{padding-top:1em}.patternNoViewPage .foswikiTopic{margin-top:2em}#patternMainContents{padding-bottom:4em}#patternBottomBarContents{padding-bottom:2em}.foswikiTopic{margin:0 0 2em 0}.patternNoViewPage #patternMainContents,.patternNoViewPage #patternBottomBarContents{margin-left:4%;margin-right:4%}.patternEditPage #patternMainContents,.patternEditPage #patternBottomBarContents{margin-left:2%;margin-right:2%}.patternTop{margin:0 0 .5em 0}.patternNoViewPage .patternTop{font-size:94%}#patternSideBarContents img{margin:0 3px 0 0;vertical-align:text-bottom}#patternSideBarContents a:link,#patternSideBarContents a:visited{text-decoration:none}#patternSideBarContents ul{padding:0;margin:0;list-style:none}#patternSideBarContents,#patternSideBarContents ul,#patternSideBarContents li{line-height:1.35em}#patternSideBarContents h2{border:0;background-color:transparent}#patternSideBarContents .patternLeftBarPersonal,#patternSideBarContents .patternWebIndicator{padding:0 1em .75em 1em;margin:0 -1em .75em -1em;border-style:none none solid none;border-width:1px}.patternWebIndicator a{font-size:1.1em;font-weight:bold}.patternLeftBarPersonalContent{padding:1em 0 0 0}#patternSideBarContents li{overflow:hidden}html>body #patternSideBarContents li{overflow:visible}.patternMetaMenu input,.patternMetaMenu select,.patternMetaMenu select option{margin:0}.patternMetaMenu select option{padding:1px 0 0 0}.patternMetaMenu ul{padding:0;margin:0;list-style:none}.patternMetaMenu ul li{padding:0;display:inline}.patternMetaMenu ul li .foswikiInputField,.patternMetaMenu ul li .foswikiSelect{margin:0 0 0 .5em}.patternHomePath .foswikiSeparator{padding:0 .5em}.patternHomePath a:link,.patternHomePath a:visited{text-decoration:none;border-style:none none solid none;border-width:1px}.patternToolBar span{float:left}.patternToolBar span s,.patternToolBar span strike,.patternToolBar span a:link,.patternToolBar span a:visited{display:block;border-width:1px;border-style:solid;padding:.1em .35em;margin:0 0 .2em .25em;font-weight:bold}.patternToolBar span a:link,.patternToolBar span a:visited{text-decoration:none;outline:0}.patternToolBar span a:hover,.patternToolBar span a:hover{border-width:1px;border-style:solid}.patternToolBar span a:active{outline:0}.patternToolBar span.foswikiAccessKey{float:none}.patternToolBar span s,.patternToolBar span strike{text-decoration:none}.patternActionButtons a:link,.patternActionButtons a:visited{padding:1px 1px 2px 1px}.patternTopicActions .patternActionButtons a:link,.patternTopicActions .patternActionButtons a:visited{text-decoration:none}.patternTopicActions .patternActionButtons span s,.patternTopicActions .patternActionButtons span strike{text-decoration:none}.patternActionButtons a.foswikiButton,.patternActionButtons a.foswikiSubmit,.patternActionButtons a.foswikiButtonCancel{padding:.1em .2em}.patternInfo{margin:1.5em 0 0 0}.patternHomePath .patternRevInfo{font-size:94%;white-space:nowrap}.patternTopicFooter{margin:1em 0 0 0}.patternSimpleLogo{margin:1em 0 0 0}.foswikiWebSearchForm form{width:100%}.foswikiWebSearchForm ul{list-style:none;margin-top:0}#foswikiSearchTable{width:100%;margin:.5em 0;background:0;border-bottom:0}#foswikiSearchTable th,#foswikiSearchTable td{padding:1em;border-width:0 0 1px 0;border-style:solid}#foswikiSearchTable th{width:20%;text-align:right}#foswikiSearchTable td{width:80%}.patternSearchResults{margin:0 0 1em 0}#renamehelpshow a span,#renamehelphide a span{font-size:1.1em}.patternSearchResults blockquote{margin:1em 0 1em 5em}h3.patternSearchResultsHeader,h4.patternSearchResultsHeader{display:block;border-width:0 0 1px 0;border-style:solid;font-weight:bold}.patternSearchResults h3{font-size:115%;margin:0;padding:.5em 40px;font-weight:bold}h4.patternSearchResultsHeader{font-size:100%;padding-top:.3em;padding-bottom:.3em;font-weight:normal}.patternSearchResult .foswikiTopRow{padding-top:.2em;margin-top:.1em}.patternSearchResult .foswikiBottomRow{margin-bottom:.1em;padding-bottom:.25em;border-width:0 0 1px 0;border-style:solid}.patternSearchResult .foswikiAlert{font-weight:bold}.patternSearchResult .foswikiSummary .foswikiAlert{font-weight:normal}.patternSearchResult .foswikiNew{border-width:1px;border-style:solid;font-size:86%;padding:0 1px;font-weight:bold}.foswikiSearchResultsHeader span{padding:0 .5em 0 0}.foswikiSearchResultCount{font-weight:bold}.foswikiSearchResult{margin:0 0 1em 0}.foswikiSearchResult .foswikiAlert{font-weight:bold}.foswikiSummary,.foswikiSearchResult .foswikiBottomRow{font-size:86%}.foswikiSearchResult .foswikiSummary .foswikiAlert{font-weight:normal}.foswikiSearchResultsPager{margin:1em 0;padding:.25em 0}.patternSearchResults .foswikiHelp{display:block;width:auto;padding:.1em 5px;margin:1em -5px .35em -5px}.patternSearchResultCount{margin:1em 0 3em 0}.patternBookView{border-width:0 0 2px 2px;border-style:solid;margin:.5em 0 1.5em -5px;padding:0 0 0 5px}.patternBookView .foswikiTopRow{padding:.25em 5px .15em 5px;margin:1em -5px .15em -5px}.patternBookView .foswikiBottomRow{font-size:100%;padding:1em 0 1em 0;width:auto;border:0}#edithelphide a span,#edithelpshow a span{font-size:1.1em}.patternNoViewPage #patternMainContents{padding-top:0}.patternEditPage #patternMainContents{padding-left:0;padding-right:0}.patternEditPage .patternEditTopic{padding:5px;margin:0 0 1em 0}.patternEditPage .foswikiForm{border:0}.foswikiFormHolder{width:100%}.patternEditPage .foswikiForm h1,.patternEditPage .foswikiForm h2,.patternEditPage .foswikiForm h3{font-size:120%;font-weight:bold}.foswikiEditboxStyleMono{font-family:"Bitstream Vera Sans Mono","Andale Mono",Courier,monospace}.foswikiEditboxStyleProportional{font-family:arial,verdana,sans-serif}.patternSig{text-align:right}.patternSigLine{margin:.5em 0 0 0;border-style:none}.foswikiAddFormButton{float:right}.patternTextareaButton{margin:0 0 0 1px;display:block;cursor:pointer;border-style:solid;border-width:1px}.patternButtonFontSelector{margin:0 8px 0 0}.patternSaveHelp{margin:1em 0 0 0;line-height:1.5em}.patternPreviewPage #patternMainContents{padding-left:0;padding-right:0}.patternPreviewPage .foswikiTopic{margin-bottom:0}.foswikiPreviewArea{border-width:1px;border-style:solid;margin:0 0 1.5em 0;padding:2em}.patternAttachPage .foswikiAttachments .foswikiTable{width:auto}.patternAttachPage .foswikiAttachments{margin-top:0}.patternMoveAttachment{margin:.5em 0 0 0;text-align:right}.patternDiff{border-width:0 0 2px 2px;border-style:solid;margin:.5em 0 1.5em 0;padding:0 0 0 10px}.patternDiff h4.patternSearchResultsHeader{padding:.5em 10px}.patternDiffPage .patternRevInfo ul{padding:0;margin:2em 0 0 0;list-style:none}.patternDiffPage .foswikiDiffTable{margin:2em 0}.foswikiDiffDebug{font-family:"Bitstream Vera Sans Mono","Andale Mono",Courier,monospace;font-size:86%;white-space:pre}tr.foswikiDiffDebug td{border-width:1px;border-style:solid}.patternDiffPage td.foswikiDiffDebugLeft{border-bottom:0}.patternDiffPage .foswikiDiffTable th{padding:.25em .5em}.patternDiffPage .foswikiDiffTable td{padding:.25em}.foswikiDiffLineNumberHeader{padding:.3em 0}.mceContentBody{padding:1px 4px} \ No newline at end of file diff --git a/doc/html/user/pub/System/PatternSkinTheme2009/variant_twiki.css b/doc/html/user/pub/System/PatternSkinTheme2009/variant_twiki.css index f545a73e..03da46c8 100644 --- a/doc/html/user/pub/System/PatternSkinTheme2009/variant_twiki.css +++ b/doc/html/user/pub/System/PatternSkinTheme2009/variant_twiki.css @@ -1,45 +1 @@ -/* -Compatible skin for TWiki-like installations -Overrides global settings in layout.css, style.css and colors.css -*/ - -/* outer 'frame' */ -#patternScreen { - padding:0; -} -#patternPage { - border:none; -} - -/* paddings of main content elements */ -#patternBottomBarContents, -#patternTopBarContents { - padding-right:2em; - padding-left:1em; -} -#patternMainContents { - padding-right:2em; - padding-left:2em; -} -#patternSideBarContents, -#patternMainContents { - padding-top:1em; -} -#patternBottomBarContents { - padding-top:1em; -} - -/* top bar */ -#patternTopBarContents { - background-image:url(TWiki_header.gif); - background-repeat:no-repeat; - background-color:#fff; -} -#patternTopBar, -#patternClearHeaderCenter, -#patternClearHeaderLeft, -#patternClearHeaderRight, -#patternTopBarContents { - height:64px; - overflow:hidden; -} +#patternScreen{padding:0}#patternPage{border:0}#patternBottomBarContents,#patternTopBarContents{padding-right:2em;padding-left:1em}#patternMainContents{padding-right:2em;padding-left:2em}#patternSideBarContents,#patternMainContents{padding-top:1em}#patternBottomBarContents{padding-top:1em}#patternTopBarContents{background-image:url(TWiki_header.gif);background-repeat:no-repeat;background-color:#fff}#patternTopBar,#patternTopBarContents{height:64px;overflow:hidden} \ No newline at end of file diff --git a/doc/html/user/pub/System/PsiSkin/psistyle.css b/doc/html/user/pub/System/PsiSkin/psistyle.css index 8626dd6b..00c5ebb6 100644 --- a/doc/html/user/pub/System/PsiSkin/psistyle.css +++ b/doc/html/user/pub/System/PsiSkin/psistyle.css @@ -99,7 +99,8 @@ blockquote.psi { /* DMS Icon */ -.patternContent a[href^="http:"] { +.patternContent a[href^="http:"], +.patternContent a[href^="https:"] { background-image: url(../DocumentGraphics/external.gif); background-position: right center; background-repeat: no-repeat; @@ -107,11 +108,14 @@ blockquote.psi { } .patternContent a[href^="http:"]:hover, -.patternContent a[href^="http:"]:visited:hover { +.patternContent a[href^="http:"]:visited:hover, +.patternContent a[href^="https:"]:hover, +.patternContent a[href^="https:"]:visited:hover { background-image: url(../DocumentGraphics/external-hover.gif); } -.patternContent a[href^="http:"]:visited { +.patternContent a[href^="http:"]:visited, +.patternContent a[href^="https:"]:visited { background-image: url(../DocumentGraphics/external-visited.gif); } @@ -128,14 +132,17 @@ blockquote.psi { padding-right: 0px; } -.patternContent a[href^="http://i.psi.ch"] { +.patternContent a[href^="http://i.psi.ch"], +.patternContent a[href^="https://intranet.psi.ch"] { background: transparent; padding-right: 0px; background-repeat: no-repeat; background-image: none; } .patternContent a[href^="http://i.psi.ch"]:hover, -.patternContent a[href^="http://i.psi.ch"]:visited:hover { +.patternContent a[href^="http://i.psi.ch"]:visited:hover, +.patternContent a[href^="https://intranet.psi.ch"]:hover, +.patternContent a[href^="https://intranet.psi.ch"]:visited:hover { background-image: none; background-color: #0055B5; } @@ -175,7 +182,7 @@ caption { :lang(de) { quotes:"\201E" "\201C" "\201A" "\2018"; } :lang(en) { quotes:"\201C" "\201D" "\2018" "\2019"; } -:lang(fr) { quotes:"\00AB\A0" "\A0\00BB" "\2039\A0" "\A0\203A"; } +:lang(fr) { quotes:"\00AB" "\00BB" "\2039" "\203A"; } q:before { content:open-quote; color:#000000; } q:after { content:close-quote; color:#000000; } diff --git a/doc/html/user/pub/System/SkinTemplates/base.css b/doc/html/user/pub/System/SkinTemplates/base.css index f3445348..f50c8b3d 100644 --- a/doc/html/user/pub/System/SkinTemplates/base.css +++ b/doc/html/user/pub/System/SkinTemplates/base.css @@ -1 +1 @@ -.foswikiMakeVisible,.foswikiMakeVisibleInline,.foswikiMakeVisibleBlock{display:none;}.foswikiJs .foswikiMakeVisible{display:inline;}.foswikiJs p.foswikiMakeVisible,.foswikiJs h1.foswikiMakeVisible,.foswikiJs h2.foswikiMakeVisible,.foswikiJs h3.foswikiMakeVisible,.foswikiJs h4.foswikiMakeVisible,.foswikiJs h5.foswikiMakeVisible,.foswikiJs h6.foswikiMakeVisible,.foswikiJs dl.foswikiMakeVisible,.foswikiJs dt.foswikiMakeVisible,.foswikiJs dd.foswikiMakeVisible,.foswikiJs ol.foswikiMakeVisible,.foswikiJs ul.foswikiMakeVisible,.foswikiJs li.foswikiMakeVisible,.foswikiJs address.foswikiMakeVisible,.foswikiJs blockquote.foswikiMakeVisible,.foswikiJs center.foswikiMakeVisible,.foswikiJs del.foswikiMakeVisible,.foswikiJs div.foswikiMakeVisible,.foswikiJs form.foswikiMakeVisible,.foswikiJs hr.foswikiMakeVisible,.foswikiJs ins.foswikiMakeVisible,.foswikiJs noscript.foswikiMakeVisible,.foswikiJs pre.foswikiMakeVisible,.foswikiJs table.foswikiMakeVisible{display:block;}.foswikiJs .foswikiMakeVisibleInline{display:inline;}.foswikiJs .foswikiMakeVisibleBlock{display:block;}.foswikiJs .foswikiMakeHidden{display:none;}.foswikiLeft{float:left;position:relative;}.foswikiRight{position:relative;float:right;display:inline;margin:0;}.foswikiClear,.foswikiFormStep p.foswikiClear{margin:0;padding:0;height:0;line-height:0;clear:both;display:block;}.foswikiHidden{display:none;}.foswikiSmall{font-size:86%;line-height:110%;}.foswikiSmallish{font-size:94%;}.foswikiLarge{font-size:1.3em;line-height:1.5em;}.foswikiBroadcastMessage,.foswikiNotification{background-color:#fff7e7;padding:.25em .5em;margin:0 0 1em 0;}.foswikiBroadcastMessage b,.foswikiBroadcastMessage strong{color:#f00;}.foswikiMessage{padding:.5em 10px;background-color:#fff7e7;border:none;}.foswikiAlert,.foswikiAlert code{color:#f00;}.foswikiEmulatedLink{text-decoration:underline;}.foswikiAccessKey{text-decoration:none;border-width:0 0 1px 0;border-style:solid;}a:hover .foswikiAccessKey{text-decoration:none;border:none;}img{border:0;vertical-align:middle;}.foswikiImage img{padding:3px;border-width:1px;border-style:solid;}.foswikiPreviewArea{border-width:1px;border-style:solid;border-color:#f00;margin:1em 0;padding:1em;}.foswikiSummary em{font-weight:bold;font-style:normal;color:#000;}.foswikiTabs ul{margin:0;padding:0;list-style:none;position:relative;bottom:0;}.foswikiTabs ul li{display:inline;}.foswikiTabs ul li a,.foswikiTabs ul li a:link,.foswikiTabs ul li a:hover,.foswikiTabs ul li a:visited{text-decoration:none;color:#000;}.foswikiTabs ul li a,.foswikiTabs ul li span{display:block;float:left;margin:0 6px 0 0;padding:.35em .7em;border-style:solid;border-width:1px;border-color:#ccc;background:#eee;}.foswikiTabs ul li a,.foswikiTabs ul li span,.foswikiTabContent{border-style:solid;border-width:1px;border-color:#ccc;}.foswikiTabs ul li.foswikiActiveTab a,.foswikiTabs ul li a:hover,.foswikiTabs ul li span{border-bottom-color:#fff;background:#fff;}.foswikiTabContent{margin:-1px 0 1em 0;padding:.7em;background:#fff;}.foswikiHorizontalList ul{margin:0;padding:0;list-style:none;clear:both;}.foswikiHorizontalList ul li{float:left;display:block;padding:0 .5em;border-style:none solid none none;border-width:1px;}.foswikiHorizontalList ul li.foswikiLast{border:none;}.foswikiYellowFG{color:#ff0;}.foswikiOrangeFG{color:#f60;}.foswikiRedFG{color:#f00;}.foswikiPinkFG{color:#f0f;}.foswikiPurpleFG{color:#800080;}.foswikiTealFG{color:#008080;}.foswikiNavyFG{color:#000080;}.foswikiBlueFG{color:#00f;}.foswikiAquaFG{color:#0ff;}.foswikiLimeFG{color:#0f0;}.foswikiGreenFG{color:#008000;}.foswikiOliveFG{color:#808000;}.foswikiMaroonFG{color:#800000;}.foswikiBrownFG{color:#963;}.foswikiBlackFG{color:#000;}.foswikiGrayFG{color:#808080;}.foswikiSilverFG{color:#c0c0c0;}.foswikiWhiteFG{color:#fff;}.foswikiYellowBG{background-color:#ff0;}.foswikiOrangeBG{background-color:#f60;}.foswikiRedBG{background-color:#f00;}.foswikiPinkBG{background-color:#f0f;}.foswikiPurpleBG{background-color:#800080;}.foswikiNavyBG{background-color:#000080;}.foswikiBlueBG{background-color:#00f;}.foswikiTealBG{background-color:#008080;}.foswikiAquaBG{background-color:#0ff;}.foswikiLimeBG{background-color:#0f0;}.foswikiGreenBG{background-color:#008000;}.foswikiOliveBG{background-color:#808000;}.foswikiMaroonBG{background-color:#800000;}.foswikiBrownBG{background-color:#963;}.foswikiBlackBG{background-color:#000;}.foswikiGrayBG{background-color:#808080;}.foswikiSilverBG{background-color:#c0c0c0;}.foswikiWhiteBG{background-color:#fff;} \ No newline at end of file +.foswikiNoJs .foswikiMakeVisible,.foswikiNoJs .foswikiMakeVisibleInline,.foswikiNoJs .foswikiMakeVisibleBlock{display:none}.foswikiMakeVisible{display:inline}a.foswikiMakeVisible,p.foswikiMakeVisible,h1.foswikiMakeVisible,h2.foswikiMakeVisible,h3.foswikiMakeVisible,h4.foswikiMakeVisible,h5.foswikiMakeVisible,h6.foswikiMakeVisible,dl.foswikiMakeVisible,dt.foswikiMakeVisible,dd.foswikiMakeVisible,ol.foswikiMakeVisible,ul.foswikiMakeVisible,li.foswikiMakeVisible,address.foswikiMakeVisible,blockquote.foswikiMakeVisible,center.foswikiMakeVisible,del.foswikiMakeVisible,div.foswikiMakeVisible,form.foswikiMakeVisible,hr.foswikiMakeVisible,ins.foswikiMakeVisible,noscript.foswikiMakeVisible,pre.foswikiMakeVisible,table.foswikiMakeVisible{display:block}.foswikiMakeVisibleInline{display:inline}.foswikiMakeVisibleBlock{display:block}.foswikiMakeHidden{display:none}.foswikiLeft{float:left}.foswikiRight{float:right}.foswikiClear,.foswikiFormStep p.foswikiClear{margin:0;padding:0;height:0;line-height:0;clear:both;display:block}.foswikiHidden{display:none}.foswikiSmall{font-size:86%;line-height:110%}.foswikiSmallish{font-size:94%}.foswikiLarge{font-size:1.3em;line-height:1.5em}.foswikiBroadcastMessage,.foswikiNotification{background-color:#fff7e7;padding:.25em .5em;margin:0 0 1em 0}.foswikiBroadcastMessage b,.foswikiBroadcastMessage strong{color:#f00}.foswikiMessage{padding:.5em 10px;background-color:#fff7e7;border:0}.foswikiAlert,.foswikiAlert code{color:#f00}.foswikiNewLink,.foswikiNewLink:link,.foswikiNewLink:visited{color:#b00000;text-decoration:none;border-bottom:1px dotted #b00000}.foswikiNewLink:link:hover{color:#b00000;text-decoration:none;border-bottom:1px solid #b00000}.foswikiEmulatedLink{text-decoration:underline}.foswikiAccessKey{text-decoration:none;border-width:0 0 1px 0;border-style:solid}a:hover .foswikiAccessKey{text-decoration:none;border:0}img{border:0;vertical-align:middle}pre{white-space:pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;white-space:-moz-pre-wrap;width:auto;margin:1em 0;padding:1em}.foswikiImage img{padding:3px;border-width:1px;border-style:solid}.foswikiPreviewArea{border-width:1px;border-style:solid;border-color:#f00;margin:1em 0;padding:1em}.foswikiSummary em{font-weight:bold;font-style:normal;color:#000}.foswikiTabs{position:relative}.foswikiTabs:after{content:'';position:absolute;width:100%;height:1px;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:#ccc;bottom:0}.foswikiTabs>ul{margin:0;padding:0;list-style:none;bottom:0;margin-bottom:-1px;*zoom:1}.foswikiTabs>ul:before,.foswikiTabs>ul:after{display:table;content:"";line-height:0}.foswikiTabs>ul:after{clear:both}.foswikiTabs>ul>li{display:inline}.foswikiTabs>ul>li>a{position:relative;display:inline-block;float:left;margin-right:6px;border-style:solid;border-width:1px;border-color:#ccc;background-image:none;background:#eee}.foswikiTabs>ul>li>a:link,.foswikiTabs>ul>li>a:visited,.foswikiTabs>ul>li>a:hover,.foswikiTabs>ul>li>a:active{padding:.35em .7em;text-decoration:none;color:#000}.foswikiTabs>ul>li>a:visited{color:#000}.foswikiTabs>ul>li>a:hover{background:#eee}.foswikiTabs>ul>li.foswikiActiveTab a:hover,.foswikiTabs>ul>li.foswikiActive a:hover{cursor:default}.foswikiTabs>ul>li.foswikiActiveTab a,.foswikiTabs>ul>li.foswikiActive a{border-bottom-color:#fff;background:#fff;z-index:1}.foswikiTabContent{border-style:solid;border-width:1px;border-color:#ccc;background:#fff;margin-bottom:1.5em}.foswikiNoJs .foswikiTabs>ul{display:none}.foswikiWebSearchForm{margin:1em 0}.foswikiHorizontalList ul{margin:0;padding:0;list-style:none;clear:both}.foswikiHorizontalList ul li{float:left;display:block;padding:0 .5em;border-style:none solid none none;border-width:1px}.foswikiHorizontalList ul li.foswikiLast{border:0}.foswikiIndent{padding-left:3em}.foswikiToc.foswikiRight{margin:0 0 1em 2em;max-width:40%}.foswikiToc.foswikiLeft{margin:0 2em 1em 0;max-width:40%}.foswikiToc .foswikiTocTitle{font-weight:bold}.foswikiYellowFG{color:#ff0}.foswikiOrangeFG{color:#f60}.foswikiRedFG{color:#f00}.foswikiPinkFG{color:#f0f}.foswikiPurpleFG{color:#800080}.foswikiTealFG{color:#008080}.foswikiNavyFG{color:#000080}.foswikiBlueFG{color:#00f}.foswikiAquaFG{color:#0ff}.foswikiLimeFG{color:#0f0}.foswikiGreenFG{color:#008000}.foswikiOliveFG{color:#808000}.foswikiMaroonFG{color:#800000}.foswikiBrownFG{color:#963}.foswikiBlackFG{color:#000}.foswikiGrayFG{color:#808080}.foswikiSilverFG{color:#c0c0c0}.foswikiWhiteFG{color:#fff}.foswikiYellowBG{background-color:#ff0}.foswikiOrangeBG{background-color:#f60}.foswikiRedBG{background-color:#f00}.foswikiPinkBG{background-color:#f0f}.foswikiPurpleBG{background-color:#800080}.foswikiNavyBG{background-color:#000080}.foswikiBlueBG{background-color:#00f}.foswikiTealBG{background-color:#008080}.foswikiAquaBG{background-color:#0ff}.foswikiLimeBG{background-color:#0f0}.foswikiGreenBG{background-color:#008000}.foswikiOliveBG{background-color:#808000}.foswikiMaroonBG{background-color:#800000}.foswikiBrownBG{background-color:#963}.foswikiBlackBG{background-color:#000}.foswikiGrayBG{background-color:#808080}.foswikiSilverBG{background-color:#c0c0c0}.foswikiWhiteBG{background-color:#fff} \ No newline at end of file