added the option to split a user function into a global and run-block related part (see MUSR-134)
This commit is contained in:
parent
c4dfc3cbce
commit
f4d6e349fe
@ -4,6 +4,12 @@
|
||||
# $Id$
|
||||
#---------------------------------------------------------------------
|
||||
|
||||
musrfit 0.8.0 - changes since 0.7.0
|
||||
NEW added the option to split a user function into a global and run-block related part (see MUSR-134). If the
|
||||
global option is used, this can potentially increase the efficiency up to the number of run-blocks since
|
||||
the time consuming calculations are done only once per changed parameter set. Examples where this approach
|
||||
is profitable are: Abrikosov vortex lattice fits, Nonlocal Meissner screening.
|
||||
|
||||
musrfit 0.7.0 - changes since 0.6.0
|
||||
===================================
|
||||
NEW added y-range option to usr_fit_ranges in the PLOT block (MUSR-144).
|
||||
|
@ -1,5 +1,5 @@
|
||||
AC_PREREQ(2.59)
|
||||
AC_INIT(musrfit, 0.7.0, andreas.suter@psi.ch)
|
||||
AC_INIT(musrfit, 0.8.0, andreas.suter@psi.ch)
|
||||
AC_CONFIG_AUX_DIR(admin)
|
||||
AC_CANONICAL_HOST
|
||||
#AC_MSG_RESULT([${host} ${host_cpu} ${host_vendor} ${host_os}])
|
||||
@ -28,7 +28,7 @@ dnl -----------------------------------------------
|
||||
|
||||
#release versioning
|
||||
MUSR_MAJOR_VERSION=0
|
||||
MUSR_MINOR_VERSION=7
|
||||
MUSR_MINOR_VERSION=8
|
||||
MUSR_MICRO_VERSION=0
|
||||
|
||||
#release versioning
|
||||
@ -81,7 +81,7 @@ PLUGIN_LIBRARY_VERSION=1:0:0
|
||||
LEM_LIBRARY_VERSION=1:5:0
|
||||
PSIBIN_LIBRARY_VERSION=0:1:0
|
||||
MUD_LIBRARY_VERSION=0:0:0
|
||||
MUSR_LIBRARY_VERSION=0:7:0
|
||||
MUSR_LIBRARY_VERSION=0:8:0
|
||||
# | | |
|
||||
# +------+ | +---+
|
||||
# | | |
|
||||
|
@ -30,6 +30,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
using namespace std;
|
||||
|
||||
#include <TObject.h>
|
||||
@ -48,6 +49,8 @@ using namespace std;
|
||||
#define SQRT_TWO 1.41421356237
|
||||
#define SQRT_PI 1.77245385091
|
||||
|
||||
extern vector<void*> gGlobalUserFcn;
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Constructor
|
||||
//--------------------------------------------------------------------------
|
||||
@ -90,7 +93,7 @@ using namespace std;
|
||||
* false (default) means this is the root object
|
||||
* true means this is part of an already existing object tree
|
||||
*/
|
||||
PTheory::PTheory(PMsrHandler *msrInfo, UInt_t runNo, const Bool_t hasParent)
|
||||
PTheory::PTheory(PMsrHandler *msrInfo, UInt_t runNo, const Bool_t hasParent) : fMsrInfo(msrInfo)
|
||||
{
|
||||
// init stuff
|
||||
fValid = true;
|
||||
@ -112,6 +115,9 @@ PTheory::PTheory(PMsrHandler *msrInfo, UInt_t runNo, const Bool_t hasParent)
|
||||
for (UInt_t i=0; i<THEORY_MAX_PARAM; i++)
|
||||
fPrevParam[i] = 0.0;
|
||||
|
||||
// keep the number of user functions found up to this point
|
||||
fUserFcnIdx = GetUserFcnIdx(lineNo);
|
||||
|
||||
// get the input to be analyzed from the msr handler
|
||||
PMsrLines *fullTheoryBlock = msrInfo->GetMsrTheory();
|
||||
if (lineNo > fullTheoryBlock->size()-1) {
|
||||
@ -139,8 +145,8 @@ PTheory::PTheory(PMsrHandler *msrInfo, UInt_t runNo, const Bool_t hasParent)
|
||||
|
||||
tokens = str.Tokenize(" \t");
|
||||
if (!tokens) {
|
||||
cerr << endl << "**SEVERE ERROR**: PTheory(): Couldn't tokenize theory block line " << line->fLineNo << ".";
|
||||
cerr << endl << " line content: " << line->fLine.Data();
|
||||
cerr << endl << ">> PTheory::PTheory: **SEVERE ERROR** Couldn't tokenize theory block line " << line->fLineNo << ".";
|
||||
cerr << endl << ">> line content: " << line->fLine.Data();
|
||||
cerr << endl;
|
||||
exit(0);
|
||||
}
|
||||
@ -152,8 +158,8 @@ PTheory::PTheory(PMsrHandler *msrInfo, UInt_t runNo, const Bool_t hasParent)
|
||||
|
||||
// function found is not defined
|
||||
if (idx == (UInt_t) THEORY_UNDEFINED) {
|
||||
cerr << endl << "**ERROR**: PTheory(): Theory line '" << line->fLine.Data() << "'";
|
||||
cerr << endl << " in line no " << line->fLineNo << " is undefined!";
|
||||
cerr << endl << ">> PTheory::PTheory: **ERROR** Theory line '" << line->fLine.Data() << "'";
|
||||
cerr << endl << ">> in line no " << line->fLineNo << " is undefined!";
|
||||
cerr << endl;
|
||||
fValid = false;
|
||||
return;
|
||||
@ -162,9 +168,9 @@ PTheory::PTheory(PMsrHandler *msrInfo, UInt_t runNo, const Bool_t hasParent)
|
||||
// line is a valid function, hence analyze parameters
|
||||
if (((UInt_t)(tokens->GetEntries()-1) < fNoOfParam) &&
|
||||
((idx != THEORY_USER_FCN) && (idx != THEORY_POLYNOM))) {
|
||||
cerr << endl << "**ERROR**: PTheory(): Theory line '" << line->fLine.Data() << "'";
|
||||
cerr << endl << " in line no " << line->fLineNo;
|
||||
cerr << endl << " expecting " << fgTheoDataBase[idx].fNoOfParam << ", but found " << tokens->GetEntries()-1;
|
||||
cerr << endl << ">> PTheory::PTheory: **ERROR** Theory line '" << line->fLine.Data() << "'";
|
||||
cerr << endl << ">> in line no " << line->fLineNo;
|
||||
cerr << endl << ">> expecting " << fgTheoDataBase[idx].fNoOfParam << ", but found " << tokens->GetEntries()-1;
|
||||
cerr << endl;
|
||||
fValid = false;
|
||||
}
|
||||
@ -199,12 +205,12 @@ PTheory::PTheory(PMsrHandler *msrInfo, UInt_t runNo, const Bool_t hasParent)
|
||||
if ((value <= maps.size()) && (value > 0)) { // everything fine
|
||||
fParamNo.push_back(maps[value-1]-1);
|
||||
} else { // map index out of range
|
||||
cerr << endl << "**ERROR**: PTheory: map index " << value << " out of range! See line no " << line->fLineNo;
|
||||
cerr << endl << ">> PTheory::PTheory: **ERROR** map index " << value << " out of range! See line no " << line->fLineNo;
|
||||
cerr << endl;
|
||||
fValid = false;
|
||||
}
|
||||
} else { // something wrong
|
||||
cerr << endl << "**ERROR**: PTheory: map '" << str.Data() << "' not allowed. See line no " << line->fLineNo;
|
||||
cerr << endl << ">> PTheory::PTheory: **ERROR**: map '" << str.Data() << "' not allowed. See line no " << line->fLineNo;
|
||||
cerr << endl;
|
||||
fValid = false;
|
||||
}
|
||||
@ -226,7 +232,7 @@ PTheory::PTheory(PMsrHandler *msrInfo, UInt_t runNo, const Bool_t hasParent)
|
||||
}
|
||||
// check if one of the valid entries was found
|
||||
if (!ok) {
|
||||
cerr << endl << "**ERROR**: PTheory: '" << str.Data() << "' not allowed. See line no " << line->fLineNo;
|
||||
cerr << endl << ">> PTheory::PTheory: **ERROR** '" << str.Data() << "' not allowed. See line no " << line->fLineNo;
|
||||
cerr << endl;
|
||||
fValid = false;
|
||||
}
|
||||
@ -264,9 +270,9 @@ PTheory::PTheory(PMsrHandler *msrInfo, UInt_t runNo, const Bool_t hasParent)
|
||||
cout << endl << ">> user function class name: " << fUserFcnClassName.Data() << endl;
|
||||
if (!TClass::GetDict(fUserFcnClassName.Data())) {
|
||||
if (gSystem->Load(fUserFcnSharedLibName.Data()) < 0) {
|
||||
cerr << endl << "**ERROR**: PTheory: user function class '" << fUserFcnClassName.Data() << "' not found.";
|
||||
cerr << endl << " Tried to load " << fUserFcnSharedLibName.Data() << " but failed.";
|
||||
cerr << endl << " See line no " << line->fLineNo;
|
||||
cerr << endl << ">> PTheory::PTheory: **ERROR** user function class '" << fUserFcnClassName.Data() << "' not found.";
|
||||
cerr << endl << ">> Tried to load " << fUserFcnSharedLibName.Data() << " but failed.";
|
||||
cerr << endl << ">> See line no " << line->fLineNo;
|
||||
cerr << endl;
|
||||
fValid = false;
|
||||
// clean up
|
||||
@ -277,15 +283,28 @@ PTheory::PTheory(PMsrHandler *msrInfo, UInt_t runNo, const Bool_t hasParent)
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// invoke user function object
|
||||
fUserFcn = 0;
|
||||
fUserFcn = (PUserFcnBase*)TClass::GetClass(fUserFcnClassName.Data())->New();
|
||||
if (fUserFcn == 0) {
|
||||
cerr << endl << "**ERROR**: PTheory: user function object could not be invoked. See line no " << line->fLineNo;
|
||||
cerr << endl << ">> PTheory::PTheory: **ERROR** user function object could not be invoked. See line no " << line->fLineNo;
|
||||
cerr << endl;
|
||||
fValid = false;
|
||||
} else { // user function valid, hence expand the fUserParam vector to the proper size
|
||||
fUserParam.resize(fParamNo.size());
|
||||
fUserParam.resize(fParamNo.size());
|
||||
}
|
||||
|
||||
//cout << endl << "debug> fUserFcn=" << fUserFcn << ", fUserFcn->NeedGlobalPart()=" << fUserFcn->NeedGlobalPart() << ", gGlobalUserFcn=" << gGlobalUserFcn << endl;
|
||||
|
||||
// check if the global part of the user function is needed
|
||||
if (fUserFcn->NeedGlobalPart()) {
|
||||
fUserFcn->SetGlobalPart(gGlobalUserFcn, fUserFcnIdx); // invoke or retrieve global user function object
|
||||
if (!fUserFcn->GlobalPartIsValid()) {
|
||||
cerr << endl << ">> PTheory::PTheory: **ERROR** global user function object could not be invoked/retrived. See line no " << line->fLineNo;
|
||||
cerr << endl;
|
||||
fValid = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -317,6 +336,8 @@ PTheory::~PTheory()
|
||||
delete fUserFcn;
|
||||
fUserFcn = 0;
|
||||
}
|
||||
|
||||
gGlobalUserFcn.clear();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
@ -451,7 +472,7 @@ Double_t PTheory::Func(register Double_t t, const PDoubleVector& paramValues, co
|
||||
fAdd->Func(t, paramValues, funcValues);
|
||||
break;
|
||||
default:
|
||||
cerr << endl << "**PANIC ERROR**: PTheory::Func: You never should have reached this line?!?! (" << fType << ")";
|
||||
cerr << endl << ">> PTheory::Func: **PANIC ERROR** You never should have reached this line?!?! (" << fType << ")";
|
||||
cerr << endl;
|
||||
exit(0);
|
||||
}
|
||||
@ -521,7 +542,7 @@ Double_t PTheory::Func(register Double_t t, const PDoubleVector& paramValues, co
|
||||
return UserFcn(t, paramValues, funcValues) * fMul->Func(t, paramValues, funcValues);
|
||||
break;
|
||||
default:
|
||||
cerr << endl << "**PANIC ERROR**: PTheory::Func: You never should have reached this line?!?! (" << fType << ")";
|
||||
cerr << endl << ">> PTheory::Func: **PANIC ERROR** You never should have reached this line?!?! (" << fType << ")";
|
||||
cerr << endl;
|
||||
exit(0);
|
||||
}
|
||||
@ -593,7 +614,7 @@ Double_t PTheory::Func(register Double_t t, const PDoubleVector& paramValues, co
|
||||
return UserFcn(t, paramValues, funcValues) + fAdd->Func(t, paramValues, funcValues);
|
||||
break;
|
||||
default:
|
||||
cerr << endl << "**PANIC ERROR**: PTheory::Func: You never should have reached this line?!?! (" << fType << ")";
|
||||
cerr << endl << ">> PTheory::Func: **PANIC ERROR** You never should have reached this line?!?! (" << fType << ")";
|
||||
cerr << endl;
|
||||
exit(0);
|
||||
}
|
||||
@ -663,7 +684,7 @@ Double_t PTheory::Func(register Double_t t, const PDoubleVector& paramValues, co
|
||||
return UserFcn(t, paramValues, funcValues);
|
||||
break;
|
||||
default:
|
||||
cerr << endl << "**PANIC ERROR**: PTheory::Func: You never should have reached this line?!?! (" << fType << ")";
|
||||
cerr << endl << ">> PTheory::Func: **PANIC ERROR** You never should have reached this line?!?! (" << fType << ")";
|
||||
cerr << endl;
|
||||
exit(0);
|
||||
}
|
||||
@ -731,6 +752,36 @@ Int_t PTheory::SearchDataBase(TString name)
|
||||
return idx;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// GetUserFcnIdx (private)
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>Counts the number of user functions in the theory block up to lineNo.
|
||||
*
|
||||
* <b>return:</b> to number of user functions found up to lineNo
|
||||
*
|
||||
* \param lineNo current line number in the theory block
|
||||
*/
|
||||
Int_t PTheory::GetUserFcnIdx(UInt_t lineNo) const
|
||||
{
|
||||
Int_t userFcnIdx = -1;
|
||||
|
||||
// retrieve the theory block from the msr-file handler
|
||||
PMsrLines *fullTheoryBlock = fMsrInfo->GetMsrTheory();
|
||||
|
||||
// make sure that lineNo is within proper bounds
|
||||
if (lineNo > fullTheoryBlock->size())
|
||||
return userFcnIdx;
|
||||
|
||||
// count the number of user function present up to the lineNo
|
||||
for (UInt_t i=1; i<=lineNo; i++) {
|
||||
if (fullTheoryBlock->at(i).fLine.Contains("userFcn", TString::kIgnoreCase))
|
||||
userFcnIdx++;
|
||||
}
|
||||
|
||||
return userFcnIdx;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// MakeCleanAndTidyTheoryBlock private
|
||||
//--------------------------------------------------------------------------
|
||||
@ -2232,7 +2283,7 @@ void PTheory::CalculateDynKTLF(const Double_t *val, Int_t tag) const
|
||||
CalculateLorentzLFIntegral(val);
|
||||
break;
|
||||
default:
|
||||
cerr << endl << "**FATAL ERROR** in PTheory::CalculateDynKTLF: You should never have reached this point." << endl;
|
||||
cerr << endl << ">> PTheory::CalculateDynKTLF: **FATAL ERROR** You should never have reached this point." << endl;
|
||||
assert(false);
|
||||
break;
|
||||
}
|
||||
|
@ -29,6 +29,9 @@
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include <vector>
|
||||
using namespace std;
|
||||
|
||||
#include "PUserFcnBase.h"
|
||||
|
||||
ClassImp(PUserFcnBase)
|
||||
@ -52,3 +55,6 @@ PUserFcnBase::PUserFcnBase()
|
||||
PUserFcnBase::~PUserFcnBase()
|
||||
{
|
||||
}
|
||||
|
||||
// place a void pointer vector for global user function objects which might be needed
|
||||
vector<void *> gGlobalUserFcn;
|
||||
|
272
src/external/Nonlocal/PNL_PippardFitter.cpp
vendored
272
src/external/Nonlocal/PNL_PippardFitter.cpp
vendored
@ -43,7 +43,7 @@ using namespace std;
|
||||
#define GAMMA_MU 0.0851615503527
|
||||
#define DEGREE2RAD 0.0174532925199
|
||||
|
||||
ClassImp(PNL_PippardFitter)
|
||||
ClassImp(PNL_PippardFitterGlobal)
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Constructor
|
||||
@ -51,8 +51,12 @@ ClassImp(PNL_PippardFitter)
|
||||
/**
|
||||
*
|
||||
*/
|
||||
PNL_PippardFitter::PNL_PippardFitter()
|
||||
PNL_PippardFitterGlobal::PNL_PippardFitterGlobal()
|
||||
{
|
||||
fValid = true;
|
||||
fStartupHandler = 0;
|
||||
fRgeHandler = 0;
|
||||
|
||||
// read XML startup file
|
||||
char startup_path_name[128];
|
||||
TSAXParser *saxParser = new TSAXParser();
|
||||
@ -62,18 +66,9 @@ PNL_PippardFitter::PNL_PippardFitter()
|
||||
Int_t status = saxParser->ParseFile(startup_path_name);
|
||||
// check for parse errors
|
||||
if (status) { // error
|
||||
cout << endl << "**WARNING** reading/parsing nonlocal_startup.xml.";
|
||||
cout << endl << ">> PNL_PippardFitterGlobal::PNL_PippardFitterGlobal: **WARNING** reading/parsing nonlocal_startup.xml.";
|
||||
cout << endl;
|
||||
// clean up
|
||||
if (saxParser) {
|
||||
delete saxParser;
|
||||
saxParser = 0;
|
||||
}
|
||||
if (fStartupHandler) {
|
||||
delete fStartupHandler;
|
||||
fStartupHandler = 0;
|
||||
}
|
||||
assert(false);
|
||||
fValid = false;
|
||||
}
|
||||
|
||||
// clean up
|
||||
@ -84,21 +79,21 @@ PNL_PippardFitter::PNL_PippardFitter()
|
||||
|
||||
// check if everything went fine with the startup handler
|
||||
if (!fStartupHandler->IsValid()) {
|
||||
cout << endl << "PNL_PippardFitter::PNL_PippardFitter **PANIC ERROR**";
|
||||
cout << endl << " startup handler too unhappy. Will terminate unfriendly, sorry.";
|
||||
cout << endl << ">> PNL_PippardFitterGlobal::PNL_PippardFitterGlobal **PANIC ERROR**";
|
||||
cout << endl << ">> startup handler too unhappy. Will terminate unfriendly, sorry.";
|
||||
cout << endl;
|
||||
assert(false);
|
||||
fValid = false;
|
||||
}
|
||||
|
||||
fFourierPoints = fStartupHandler->GetFourierPoints();
|
||||
|
||||
// load all the TRIM.SP rge-files
|
||||
fRgeHandler = new PNL_RgeHandler(fStartupHandler->GetTrimSpDataPathList());
|
||||
fRgeHandler = new PNL_RgeHandler(fStartupHandler->GetTrimSpDataPathList(), fStartupHandler->GetTrimSpDataVectorList());
|
||||
if (!fRgeHandler->IsValid()) {
|
||||
cout << endl << "PNL_PippardFitter::PNL_PippardFitter **PANIC ERROR**";
|
||||
cout << endl << " rge data handler too unhappy. Will terminate unfriendly, sorry.";
|
||||
cout << endl << ">> PNL_PippardFitterGlobal::PNL_PippardFitterGlobal **PANIC ERROR**";
|
||||
cout << endl << ">> rge data handler too unhappy. Will terminate unfriendly, sorry.";
|
||||
cout << endl;
|
||||
assert(false);
|
||||
fValid = false;
|
||||
}
|
||||
|
||||
fPlanPresent = false;
|
||||
@ -115,7 +110,7 @@ PNL_PippardFitter::PNL_PippardFitter()
|
||||
/**
|
||||
*
|
||||
*/
|
||||
PNL_PippardFitter::~PNL_PippardFitter()
|
||||
PNL_PippardFitterGlobal::~PNL_PippardFitterGlobal()
|
||||
{
|
||||
fPreviousParam.clear();
|
||||
|
||||
@ -136,107 +131,45 @@ PNL_PippardFitter::~PNL_PippardFitter()
|
||||
delete fRgeHandler;
|
||||
fRgeHandler = 0;
|
||||
}
|
||||
/*
|
||||
if (fStartupHandler) {
|
||||
delete fStartupHandler;
|
||||
fStartupHandler = 0;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// operator()
|
||||
// CalculateField (public)
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
*
|
||||
*/
|
||||
Double_t PNL_PippardFitter::operator()(Double_t t, const std::vector<Double_t> ¶m) const
|
||||
void PNL_PippardFitterGlobal::CalculateField(const std::vector<Double_t> ¶m) const
|
||||
{
|
||||
// param: [0] energy, [1] temp, [2] thickness, [3] meanFreePath, [4] xi0, [5] lambdaL, [6] Bext, [7] phase, [8] dead-layer
|
||||
assert(param.size() == 9);
|
||||
|
||||
// for negative time return polarization == 1
|
||||
if (t <= 0.0)
|
||||
return 1.0;
|
||||
|
||||
// calculate field if parameter have changed
|
||||
if (NewParameters(param)) { // new parameters, hence B(z), P(t), ..., needs to be calculated
|
||||
// keep parameters
|
||||
for (UInt_t i=0; i<param.size(); i++)
|
||||
fPreviousParam[i] = param[i];
|
||||
fEnergyIndex = fRgeHandler->GetRgeEnergyIndex(param[0]);
|
||||
CalculateField(param);
|
||||
}
|
||||
|
||||
// calcualte polarization
|
||||
Bool_t done = false;
|
||||
Double_t pol = 0.0, dPol = 0.0;
|
||||
Double_t z=0.0;
|
||||
Int_t terminate = 0;
|
||||
Double_t dz = 1.0;
|
||||
do {
|
||||
|
||||
if (z < param[8]) { // z < dead-layer
|
||||
dPol = fRgeHandler->GetRgeValue(fEnergyIndex, z) * cos(GAMMA_MU * param[6] * t + param[7] * DEGREE2RAD);;
|
||||
} else {
|
||||
dPol = fRgeHandler->GetRgeValue(fEnergyIndex, z) * cos(GAMMA_MU * param[6] * GetMagneticField(z-param[8]) * t + param[7] * DEGREE2RAD);
|
||||
}
|
||||
z += dz;
|
||||
pol += dPol;
|
||||
|
||||
// change in polarization is very small hence start termination counting
|
||||
if (fabs(dPol) < 1.0e-7) {
|
||||
terminate++;
|
||||
} else {
|
||||
terminate = 0;
|
||||
}
|
||||
|
||||
if (terminate > 10) // polarization died out hence one can stop
|
||||
done = true;
|
||||
} while (!done);
|
||||
|
||||
// cout << endl << "t = " << t << ", pol = " << pol*dz;
|
||||
|
||||
return pol*dz;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// NewParameters
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
*
|
||||
*/
|
||||
Bool_t PNL_PippardFitter::NewParameters(const std::vector<Double_t> ¶m) const
|
||||
{
|
||||
// check that param are new and hence a calculation is needed
|
||||
Bool_t newParams = false;
|
||||
if (fPreviousParam.size() == 0) {
|
||||
for (UInt_t i=0; i<param.size(); i++)
|
||||
fPreviousParam.push_back(param[i]);
|
||||
return true;
|
||||
}
|
||||
newParams = true;
|
||||
} else {
|
||||
assert(param.size() == fPreviousParam.size());
|
||||
|
||||
assert(param.size() == fPreviousParam.size());
|
||||
|
||||
Bool_t result = false;
|
||||
|
||||
for (UInt_t i=0; i<param.size(); i++) {
|
||||
if (param[i] != fPreviousParam[i]) {
|
||||
result = true;
|
||||
break;
|
||||
for (UInt_t i=0; i<param.size(); i++) {
|
||||
if (param[i] != fPreviousParam[i]) {
|
||||
newParams = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
if (!newParams)
|
||||
return;
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// CalculateField
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
*
|
||||
*/
|
||||
void PNL_PippardFitter::CalculateField(const std::vector<Double_t> ¶m) const
|
||||
{
|
||||
// param: [0] energy, [1] temp, [2] thickness, [3] meanFreePath, [4] xi0, [5] lambdaL, [6] Bext, [7] phase, [8] dead-layer
|
||||
// keep parameters
|
||||
for (UInt_t i=0; i<param.size(); i++)
|
||||
fPreviousParam[i] = param[i];
|
||||
|
||||
//cout << endl << "in CalculateField ..." << endl;
|
||||
//cout << endl << "fFourierPoints = " << fFourierPoints;
|
||||
@ -324,7 +257,7 @@ void PNL_PippardFitter::CalculateField(const std::vector<Double_t> ¶m) const
|
||||
/**
|
||||
*
|
||||
*/
|
||||
Double_t PNL_PippardFitter::GetMagneticField(const Double_t z) const
|
||||
Double_t PNL_PippardFitterGlobal::GetMagneticField(const Double_t z) const
|
||||
{
|
||||
Double_t result = -1.0;
|
||||
|
||||
@ -350,7 +283,7 @@ Double_t PNL_PippardFitter::GetMagneticField(const Double_t z) const
|
||||
/**
|
||||
*
|
||||
*/
|
||||
Double_t PNL_PippardFitter::DeltaBCS(const Double_t t) const
|
||||
Double_t PNL_PippardFitterGlobal::DeltaBCS(const Double_t t) const
|
||||
{
|
||||
Double_t result = 0.0;
|
||||
|
||||
@ -392,7 +325,7 @@ Double_t PNL_PippardFitter::DeltaBCS(const Double_t t) const
|
||||
/**
|
||||
*
|
||||
*/
|
||||
Double_t PNL_PippardFitter::LambdaL_T(const Double_t lambdaL, const Double_t t) const
|
||||
Double_t PNL_PippardFitterGlobal::LambdaL_T(const Double_t lambdaL, const Double_t t) const
|
||||
{
|
||||
return lambdaL/sqrt(1.0-pow(t,4.0));
|
||||
}
|
||||
@ -404,7 +337,7 @@ Double_t PNL_PippardFitter::LambdaL_T(const Double_t lambdaL, const Double_t t)
|
||||
* <p> Approximated xi_P(T). The main approximation is that (lamdaL(T)/lambdaL(0))^2 = 1/(1-t^2). This way
|
||||
* xi_P(T) is close the the BCS xi_BCS(T).
|
||||
*/
|
||||
Double_t PNL_PippardFitter::XiP_T(const Double_t xi0, const Double_t meanFreePath, Double_t t) const
|
||||
Double_t PNL_PippardFitterGlobal::XiP_T(const Double_t xi0, const Double_t meanFreePath, Double_t t) const
|
||||
{
|
||||
if (t>0.96)
|
||||
t=0.96;
|
||||
@ -413,3 +346,134 @@ Double_t PNL_PippardFitter::XiP_T(const Double_t xi0, const Double_t meanFreePat
|
||||
|
||||
return xi0*meanFreePath/(meanFreePath*J0T+xi0);
|
||||
}
|
||||
|
||||
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
ClassImp(PNL_PippardFitter)
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Constructor
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
*
|
||||
*/
|
||||
PNL_PippardFitter::PNL_PippardFitter()
|
||||
{
|
||||
fValid = false;
|
||||
fInvokedGlobal = false;
|
||||
fPippardFitterGlobal = 0;
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Destructor
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
*
|
||||
*/
|
||||
PNL_PippardFitter::~PNL_PippardFitter()
|
||||
{
|
||||
if ((fPippardFitterGlobal != 0) && fInvokedGlobal) {
|
||||
delete fPippardFitterGlobal;
|
||||
fPippardFitterGlobal = 0;
|
||||
// cout << endl << "debug> in PNL_PippardFitter::~PNL_PippardFitter(), fPippardFitterGlobal deleted." << endl;
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// SetGlobalPart (public)
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* <b>return:</b>
|
||||
*
|
||||
* \param globalPart
|
||||
* \param idx
|
||||
*/
|
||||
void PNL_PippardFitter::SetGlobalPart(vector<void*> &globalPart, UInt_t idx)
|
||||
{
|
||||
fIdxGlobal = static_cast<Int_t>(idx);
|
||||
|
||||
if ((Int_t)globalPart.size() <= fIdxGlobal) {
|
||||
fPippardFitterGlobal = new PNL_PippardFitterGlobal();
|
||||
if (fPippardFitterGlobal == 0) {
|
||||
fValid = false;
|
||||
cerr << endl << ">> PNL_PippardFitter::SetGlobalPart(): **ERROR** Couldn't invoke global user function object, sorry ..." << endl;
|
||||
} else if (!fPippardFitterGlobal->IsValid()) {
|
||||
fValid = false;
|
||||
cerr << endl << ">> PNL_PippardFitter::SetGlobalPart(): **ERROR** initialization of global user function object failed, sorry ..." << endl;
|
||||
} else {
|
||||
fValid = true;
|
||||
fInvokedGlobal = true;
|
||||
globalPart.resize(fIdxGlobal+1);
|
||||
globalPart[fIdxGlobal] = dynamic_cast<PNL_PippardFitterGlobal*>(fPippardFitterGlobal);
|
||||
// cout << endl << ">> debug> PNL_PippardFitter::SetGlobalPart(): invoked global user function object, fPippardFitterGlobal = " << fPippardFitterGlobal << ", fInvokedGlobal=" << fInvokedGlobal;
|
||||
}
|
||||
} else {
|
||||
fValid = true;
|
||||
fPippardFitterGlobal = (PNL_PippardFitterGlobal*)globalPart[fIdxGlobal];
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// GlobalPartIsValid (public)
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* <b>return:</b>
|
||||
*/
|
||||
Bool_t PNL_PippardFitter::GlobalPartIsValid() const
|
||||
{
|
||||
// cout << endl << "debug> PNL_PippardFitter::GlobalPartIsValid(): fValid=" << fValid << ", fGlobalUserFcn->IsValid()=" << fPippardFitterGlobal->IsValid() << endl;
|
||||
return (fValid && fPippardFitterGlobal->IsValid());
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// operator()
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
*
|
||||
*/
|
||||
Double_t PNL_PippardFitter::operator()(Double_t t, const std::vector<Double_t> ¶m) const
|
||||
{
|
||||
// param: [0] energy, [1] temp, [2] thickness, [3] meanFreePath, [4] xi0, [5] lambdaL, [6] Bext, [7] phase, [8] dead-layer
|
||||
assert(param.size() == 9);
|
||||
|
||||
// for negative time return polarization == 1
|
||||
if (t <= 0.0)
|
||||
return 1.0;
|
||||
|
||||
// calculate field if parameter have changed
|
||||
fPippardFitterGlobal->CalculateField(param);
|
||||
Int_t energyIndex = fPippardFitterGlobal->GetEnergyIndex(param[0]);
|
||||
|
||||
// calcualte polarization
|
||||
Bool_t done = false;
|
||||
Double_t pol = 0.0, dPol = 0.0;
|
||||
Double_t z=0.0;
|
||||
Int_t terminate = 0;
|
||||
Double_t dz = 1.0;
|
||||
do {
|
||||
if (z < param[8]) { // z < dead-layer
|
||||
dPol = fPippardFitterGlobal->GetMuoneStoppingDensity(energyIndex, z) * cos(GAMMA_MU * param[6] * t + param[7] * DEGREE2RAD);
|
||||
} else {
|
||||
dPol = fPippardFitterGlobal->GetMuoneStoppingDensity(energyIndex, z) * cos(GAMMA_MU * param[6] * fPippardFitterGlobal->GetMagneticField(z-param[8]) * t + param[7] * DEGREE2RAD);
|
||||
}
|
||||
z += dz;
|
||||
pol += dPol;
|
||||
|
||||
// change in polarization is very small hence start termination counting
|
||||
if (fabs(dPol) < 1.0e-9) {
|
||||
terminate++;
|
||||
} else {
|
||||
terminate = 0;
|
||||
}
|
||||
|
||||
if (terminate > 10) // polarization died out hence one can stop
|
||||
done = true;
|
||||
} while (!done);
|
||||
|
||||
return pol*dz;
|
||||
}
|
||||
|
39
src/external/Nonlocal/PNL_PippardFitter.h
vendored
39
src/external/Nonlocal/PNL_PippardFitter.h
vendored
@ -38,15 +38,21 @@
|
||||
#include "PNL_StartupHandler.h"
|
||||
#include "PNL_RgeHandler.h"
|
||||
|
||||
class PNL_PippardFitter : public PUserFcnBase
|
||||
class PNL_PippardFitterGlobal
|
||||
{
|
||||
public:
|
||||
PNL_PippardFitter();
|
||||
virtual ~PNL_PippardFitter();
|
||||
PNL_PippardFitterGlobal();
|
||||
virtual ~PNL_PippardFitterGlobal();
|
||||
|
||||
virtual Double_t operator()(Double_t t, const std::vector<Double_t> ¶m) const;
|
||||
Bool_t IsValid() { return fValid; }
|
||||
virtual void CalculateField(const std::vector<Double_t> ¶m) const;
|
||||
virtual Int_t GetEnergyIndex(const Double_t energy) { return fRgeHandler->GetRgeEnergyIndex(energy); }
|
||||
virtual Double_t GetMuoneStoppingDensity(const Int_t energyIndex, const Double_t z) const { return fRgeHandler->GetRgeValue(energyIndex, z); }
|
||||
virtual Double_t GetMagneticField(const Double_t z) const;
|
||||
|
||||
private:
|
||||
Bool_t fValid;
|
||||
|
||||
PNL_StartupHandler *fStartupHandler;
|
||||
PNL_RgeHandler *fRgeHandler;
|
||||
|
||||
@ -64,14 +70,33 @@ class PNL_PippardFitter : public PUserFcnBase
|
||||
|
||||
mutable Int_t fEnergyIndex; // keeps the proper index to select n(z)
|
||||
|
||||
virtual Bool_t NewParameters(const std::vector<Double_t> ¶m) const;
|
||||
virtual void CalculateField(const std::vector<Double_t> ¶m) const;
|
||||
virtual Double_t GetMagneticField(const Double_t z) const;
|
||||
|
||||
virtual Double_t DeltaBCS(const Double_t t) const;
|
||||
virtual Double_t LambdaL_T(const Double_t lambdaL, const Double_t t) const;
|
||||
virtual Double_t XiP_T(const Double_t xi0, const Double_t meanFreePath, Double_t t) const;
|
||||
|
||||
ClassDef(PNL_PippardFitterGlobal, 1)
|
||||
};
|
||||
|
||||
class PNL_PippardFitter : public PUserFcnBase
|
||||
{
|
||||
public:
|
||||
PNL_PippardFitter();
|
||||
virtual ~PNL_PippardFitter();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return true; }
|
||||
virtual void SetGlobalPart(vector<void*> &globalPart, UInt_t idx);
|
||||
virtual Bool_t GlobalPartIsValid() const;
|
||||
|
||||
virtual Double_t operator()(Double_t t, const std::vector<Double_t> ¶m) const;
|
||||
|
||||
private:
|
||||
Bool_t fValid;
|
||||
Bool_t fInvokedGlobal;
|
||||
Int_t fIdxGlobal;
|
||||
|
||||
PNL_PippardFitterGlobal *fPippardFitterGlobal;
|
||||
|
||||
ClassDef(PNL_PippardFitter, 1)
|
||||
};
|
||||
|
||||
|
@ -35,6 +35,7 @@
|
||||
#pragma link off all classes;
|
||||
#pragma link off all functions;
|
||||
|
||||
#pragma link C++ class PNL_PippardFitterGlobal+;
|
||||
#pragma link C++ class PNL_PippardFitter+;
|
||||
|
||||
#endif
|
||||
|
19
src/external/Nonlocal/PNL_RgeHandler.cpp
vendored
19
src/external/Nonlocal/PNL_RgeHandler.cpp
vendored
@ -43,11 +43,11 @@ using namespace std;
|
||||
/**
|
||||
*
|
||||
*/
|
||||
PNL_RgeHandler::PNL_RgeHandler(const PStringVector &rgeDataPathList)
|
||||
PNL_RgeHandler::PNL_RgeHandler(const PStringVector &rgeDataPathList, const PDoubleVector &rgeDataEnergyList)
|
||||
{
|
||||
fIsValid = false;
|
||||
|
||||
fIsValid = LoadRgeData(rgeDataPathList);
|
||||
fIsValid = LoadRgeData(rgeDataPathList, rgeDataEnergyList);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
@ -146,7 +146,7 @@ Double_t PNL_RgeHandler::GetRgeValue(const Double_t energy, const Double_t dist)
|
||||
/**
|
||||
*
|
||||
*/
|
||||
Bool_t PNL_RgeHandler::LoadRgeData(const PStringVector &rgeDataPathList)
|
||||
Bool_t PNL_RgeHandler::LoadRgeData(const PStringVector &rgeDataPathList, const PDoubleVector &rgeDataEnergyList)
|
||||
{
|
||||
ifstream fin;
|
||||
PNL_RgeData data;
|
||||
@ -166,17 +166,8 @@ Bool_t PNL_RgeHandler::LoadRgeData(const PStringVector &rgeDataPathList)
|
||||
return false;
|
||||
}
|
||||
|
||||
// extract energy from rgeDataPathList name
|
||||
dataName = rgeDataPathList[i];
|
||||
// remove rge extension
|
||||
dataName.Remove(dataName.Length()-4, 4);
|
||||
// get energy part
|
||||
dataName.Replace(0, dataName.Length()-3, "");
|
||||
if (!dataName.IsDigit()) {
|
||||
fin.close();
|
||||
return false;
|
||||
}
|
||||
data.energy = dataName.Atof()/10.0;
|
||||
// keep energy (in keV)
|
||||
data.energy = rgeDataEnergyList[i]/1000.0;
|
||||
|
||||
// read msr-file
|
||||
idx = 0;
|
||||
|
4
src/external/Nonlocal/PNL_RgeHandler.h
vendored
4
src/external/Nonlocal/PNL_RgeHandler.h
vendored
@ -37,7 +37,7 @@
|
||||
class PNL_RgeHandler
|
||||
{
|
||||
public:
|
||||
PNL_RgeHandler(const PStringVector &rgeDataPathList);
|
||||
PNL_RgeHandler(const PStringVector &rgeDataPathList, const PDoubleVector &rgeDataEnergyList);
|
||||
virtual ~PNL_RgeHandler();
|
||||
|
||||
virtual Bool_t IsValid() { return fIsValid; }
|
||||
@ -49,7 +49,7 @@ class PNL_RgeHandler
|
||||
Bool_t fIsValid;
|
||||
PNL_RgeDataList fRgeDataList;
|
||||
|
||||
virtual Bool_t LoadRgeData(const PStringVector &rgeDataPathList);
|
||||
virtual Bool_t LoadRgeData(const PStringVector &rgeDataPathList, const PDoubleVector &rgeDataEnergyList);
|
||||
};
|
||||
|
||||
#endif // _PNL_RGEHANDLER_H_
|
||||
|
18
src/external/Nonlocal/PNL_StartupHandler.cpp
vendored
18
src/external/Nonlocal/PNL_StartupHandler.cpp
vendored
@ -64,6 +64,7 @@ PNL_StartupHandler::PNL_StartupHandler()
|
||||
fStartupFileFound = true;
|
||||
fStartupFilePath = TString(startup_path_name);
|
||||
} else { // startup file is not found in the current directory
|
||||
cout << endl << "PNL_StartupHandler(): **WARNING** Couldn't find nonlocal_startup.xml in the current directory, will try default one." << endl;
|
||||
strncpy(startup_path_name, "/home/nemu/analysis/musrfit/src/external/Nonlocal/nonlocal_startup.xml", sizeof(startup_path_name));
|
||||
if (StartupFileExists(startup_path_name)) {
|
||||
fStartupFileFound = true;
|
||||
@ -81,6 +82,7 @@ PNL_StartupHandler::PNL_StartupHandler()
|
||||
PNL_StartupHandler::~PNL_StartupHandler()
|
||||
{
|
||||
fTrimSpDataPathList.clear();
|
||||
fTrimSpDataEnergyList.clear();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
@ -154,8 +156,6 @@ void PNL_StartupHandler::OnEndElement(const char *str)
|
||||
void PNL_StartupHandler::OnCharacters(const char *str)
|
||||
{
|
||||
TString tstr;
|
||||
Double_t dval;
|
||||
char sstr[128];
|
||||
|
||||
switch (fKey) {
|
||||
case eFourierPoints:
|
||||
@ -174,18 +174,16 @@ void PNL_StartupHandler::OnCharacters(const char *str)
|
||||
case eEnergy:
|
||||
tstr = str;
|
||||
if (tstr.IsFloat()) {
|
||||
dval = tstr.Atof();
|
||||
fTrimSpDataEnergyList.push_back(tstr.Atof());
|
||||
tstr = fTrimSpDataPath;
|
||||
tstr += str;
|
||||
tstr += ".rge";
|
||||
fTrimSpDataPathList.push_back(tstr);
|
||||
} else {
|
||||
cout << endl << "PNL_StartupHandler::OnCharacters: **ERROR** when finding energy:";
|
||||
cout << endl << "\"" << str << "\" is not a double.";
|
||||
cout << endl << "\"" << str << "\" is not a floating point number, will ignore it and use the default value.";
|
||||
cout << endl;
|
||||
fIsValid = false;
|
||||
}
|
||||
tstr = fTrimSpDataPath;
|
||||
sprintf(sstr, "%03d", (int)(round(dval*10.0)));
|
||||
tstr += sstr;
|
||||
tstr += ".rge";
|
||||
fTrimSpDataPathList.push_back(tstr);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
2
src/external/Nonlocal/PNL_StartupHandler.h
vendored
2
src/external/Nonlocal/PNL_StartupHandler.h
vendored
@ -59,6 +59,7 @@ class PNL_StartupHandler : public TObject
|
||||
virtual TString GetStartupFilePath() { return fStartupFilePath; }
|
||||
virtual const Int_t GetFourierPoints() const { return fFourierPoints; }
|
||||
virtual const PStringVector GetTrimSpDataPathList() const { return fTrimSpDataPathList; }
|
||||
virtual const PDoubleVector GetTrimSpDataVectorList() const { return fTrimSpDataEnergyList; }
|
||||
|
||||
virtual bool StartupFileFound() { return fStartupFileFound; }
|
||||
|
||||
@ -74,6 +75,7 @@ class PNL_StartupHandler : public TObject
|
||||
Int_t fFourierPoints;
|
||||
TString fTrimSpDataPath;
|
||||
PStringVector fTrimSpDataPathList;
|
||||
PDoubleVector fTrimSpDataEnergyList;
|
||||
|
||||
bool StartupFileExists(char *fln);
|
||||
|
||||
|
24
src/external/TFitPofB-lib/include/TLondon1D.h
vendored
24
src/external/TFitPofB-lib/include/TLondon1D.h
vendored
@ -46,6 +46,10 @@ public:
|
||||
TLondon1DHS();
|
||||
~TLondon1DHS();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -75,6 +79,10 @@ public:
|
||||
TLondon1D1L();
|
||||
~TLondon1D1L();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -106,6 +114,10 @@ public:
|
||||
TLondon1D2L();
|
||||
~TLondon1D2L();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -136,6 +148,10 @@ public:
|
||||
TProximity1D1LHS();
|
||||
~TProximity1D1LHS();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -166,6 +182,10 @@ public:
|
||||
TLondon1D3L();
|
||||
~TLondon1D3L();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -196,6 +216,10 @@ public:
|
||||
TLondon1D3LS();
|
||||
~TLondon1D3LS();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
|
@ -46,6 +46,10 @@ public:
|
||||
TSkewedGss();
|
||||
~TSkewedGss();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
|
20
src/external/TFitPofB-lib/include/TVortex.h
vendored
20
src/external/TFitPofB-lib/include/TVortex.h
vendored
@ -46,6 +46,10 @@ public:
|
||||
TBulkTriVortexLondon();
|
||||
~TBulkTriVortexLondon();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -75,6 +79,10 @@ public:
|
||||
TBulkSqVortexLondon();
|
||||
~TBulkSqVortexLondon();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -104,6 +112,10 @@ public:
|
||||
TBulkTriVortexML();
|
||||
~TBulkTriVortexML();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -133,6 +145,10 @@ public:
|
||||
TBulkTriVortexAGL();
|
||||
~TBulkTriVortexAGL();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -162,6 +178,10 @@ public:
|
||||
TBulkTriVortexNGL();
|
||||
~TBulkTriVortexNGL();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
|
12
src/external/libBNMR/TBNMR.h
vendored
12
src/external/libBNMR/TBNMR.h
vendored
@ -44,6 +44,10 @@ public:
|
||||
TBNMR(){}
|
||||
~TBNMR(){}
|
||||
|
||||
Bool_t NeedGlobalPart() const { return false; }
|
||||
void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
// function operator
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
@ -58,6 +62,10 @@ public:
|
||||
ExpRlx(){}
|
||||
~ExpRlx(){}
|
||||
|
||||
Bool_t NeedGlobalPart() const { return false; }
|
||||
void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
// function operator
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
@ -72,6 +80,10 @@ public:
|
||||
SExpRlx(){}
|
||||
~SExpRlx(){}
|
||||
|
||||
Bool_t NeedGlobalPart() const { return false; }
|
||||
void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
// function operator
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
|
@ -41,6 +41,10 @@ public:
|
||||
TMeanFieldsForScHalfSpace();
|
||||
~TMeanFieldsForScHalfSpace() {delete fImpProfile; fImpProfile = 0;}
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
double CalcMeanB (double, const TLondon1D_HS&) const;
|
||||
|
||||
@ -57,6 +61,10 @@ public:
|
||||
TMeanFieldsForScSingleLayer();
|
||||
~TMeanFieldsForScSingleLayer() {delete fImpProfile; fImpProfile = 0;}
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
double CalcMeanB (double, const vector<double>&, const vector<double>&, const TLondon1D_1L&) const;
|
||||
|
||||
@ -73,6 +81,10 @@ public:
|
||||
TMeanFieldsForScBilayer();
|
||||
~TMeanFieldsForScBilayer() {delete fImpProfile; fImpProfile = 0;}
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
double CalcMeanB (double, const vector<double>&, const vector<double>&, const TLondon1D_2L&) const;
|
||||
|
||||
@ -89,6 +101,10 @@ public:
|
||||
TMeanFieldsForScTrilayer();
|
||||
~TMeanFieldsForScTrilayer() {delete fImpProfile; fImpProfile = 0;}
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
double CalcMeanB (double, const vector<double>&, const vector<double>&, const TLondon1D_3L&) const;
|
||||
|
||||
@ -105,6 +121,10 @@ public:
|
||||
TMeanFieldsForScTrilayerWithInsulator();
|
||||
~TMeanFieldsForScTrilayerWithInsulator() {delete fImpProfile; fImpProfile = 0;}
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
double CalcMeanB (double, const vector<double>&, const vector<double>&, const TLondon1D_3LwInsulator&) const;
|
||||
|
||||
|
88
src/external/libGapIntegrals/TGapIntegrals.h
vendored
88
src/external/libGapIntegrals/TGapIntegrals.h
vendored
@ -46,6 +46,10 @@ public:
|
||||
TGapSWave();
|
||||
~TGapSWave();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -66,6 +70,10 @@ public:
|
||||
TGapDWave();
|
||||
~TGapDWave();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -86,6 +94,10 @@ public:
|
||||
TGapCosSqDWave();
|
||||
~TGapCosSqDWave();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -106,6 +118,10 @@ public:
|
||||
TGapSinSqDWave();
|
||||
~TGapSinSqDWave();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -127,6 +143,10 @@ public:
|
||||
TGapAnSWave();
|
||||
~TGapAnSWave();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -147,6 +167,10 @@ public:
|
||||
TGapNonMonDWave1();
|
||||
~TGapNonMonDWave1();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -167,6 +191,10 @@ public:
|
||||
TGapNonMonDWave2();
|
||||
~TGapNonMonDWave2();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -188,6 +216,10 @@ public:
|
||||
TGapPowerLaw() {}
|
||||
~TGapPowerLaw() {}
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -201,6 +233,10 @@ public:
|
||||
TGapDirtySWave() {}
|
||||
~TGapDirtySWave() {}
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -215,6 +251,10 @@ public:
|
||||
TLambdaSWave();
|
||||
~TLambdaSWave();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -229,6 +269,10 @@ public:
|
||||
TLambdaDWave();
|
||||
~TLambdaDWave();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -243,6 +287,10 @@ public:
|
||||
TLambdaAnSWave();
|
||||
~TLambdaAnSWave();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -257,6 +305,10 @@ public:
|
||||
TLambdaNonMonDWave1();
|
||||
~TLambdaNonMonDWave1();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -271,6 +323,10 @@ public:
|
||||
TLambdaNonMonDWave2();
|
||||
~TLambdaNonMonDWave2();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -286,6 +342,10 @@ public:
|
||||
TLambdaPowerLaw() {}
|
||||
~TLambdaPowerLaw() {}
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -299,6 +359,10 @@ public:
|
||||
TLambdaInvSWave();
|
||||
~TLambdaInvSWave();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -313,6 +377,10 @@ public:
|
||||
TLambdaInvDWave();
|
||||
~TLambdaInvDWave();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -327,6 +395,10 @@ public:
|
||||
TLambdaInvAnSWave();
|
||||
~TLambdaInvAnSWave();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -341,6 +413,10 @@ public:
|
||||
TLambdaInvNonMonDWave1();
|
||||
~TLambdaInvNonMonDWave1();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -355,6 +431,10 @@ public:
|
||||
TLambdaInvNonMonDWave2();
|
||||
~TLambdaInvNonMonDWave2();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -370,6 +450,10 @@ public:
|
||||
TLambdaInvPowerLaw() {}
|
||||
~TLambdaInvPowerLaw() {}
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -383,6 +467,10 @@ public:
|
||||
TFilmMagnetizationDWave();
|
||||
~TFilmMagnetizationDWave();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return false; }
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
virtual Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
|
20
src/external/libLFRelaxation/TLFRelaxation.h
vendored
20
src/external/libLFRelaxation/TLFRelaxation.h
vendored
@ -56,6 +56,10 @@ public:
|
||||
TLFStatGssKT();
|
||||
~TLFStatGssKT();
|
||||
|
||||
Bool_t NeedGlobalPart() const { return false; }
|
||||
void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -70,6 +74,10 @@ public:
|
||||
TLFStatLorKT();
|
||||
~TLFStatLorKT();
|
||||
|
||||
Bool_t NeedGlobalPart() const { return false; }
|
||||
void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -84,6 +92,10 @@ public:
|
||||
TLFDynGssKT();
|
||||
~TLFDynGssKT();
|
||||
|
||||
Bool_t NeedGlobalPart() const { return false; }
|
||||
void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -110,6 +122,10 @@ public:
|
||||
TLFDynLorKT();
|
||||
~TLFDynLorKT();
|
||||
|
||||
Bool_t NeedGlobalPart() const { return false; }
|
||||
void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
@ -138,6 +154,10 @@ public:
|
||||
TLFSGInterpolation();
|
||||
~TLFSGInterpolation();
|
||||
|
||||
Bool_t NeedGlobalPart() const { return false; }
|
||||
void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
private:
|
||||
|
@ -201,6 +201,7 @@ class PTheory
|
||||
private:
|
||||
virtual void CleanUp(PTheory *theo);
|
||||
virtual Int_t SearchDataBase(TString name);
|
||||
virtual Int_t GetUserFcnIdx(UInt_t lineNo) const;
|
||||
virtual void MakeCleanAndTidyTheoryBlock(PMsrLines* fullTheoryBlock);
|
||||
virtual void MakeCleanAndTidyPolynom(UInt_t i, PMsrLines* fullTheoryBlock);
|
||||
virtual void MakeCleanAndTidyUserFcn(UInt_t i, PMsrLines* fullTheoryBlock);
|
||||
@ -240,6 +241,7 @@ class PTheory
|
||||
UInt_t fNoOfParam; ///< number of parameters for the given function
|
||||
PTheory *fAdd, *fMul; ///< pointers to the add-sub-function or the multiply-sub-function
|
||||
|
||||
Int_t fUserFcnIdx; ///< index of the user function within the theory tree
|
||||
TString fUserFcnClassName; ///< name of the user function class for within root
|
||||
TString fUserFcnSharedLibName; ///< name of the shared lib to which the user function belongs
|
||||
PUserFcnBase *fUserFcn; ///< pointer to the user function object
|
||||
|
@ -33,9 +33,11 @@
|
||||
#define _PUSERFCNBASE_H_
|
||||
|
||||
#include <vector>
|
||||
using namespace std;
|
||||
|
||||
#include "TObject.h"
|
||||
|
||||
//--------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>Interface class for the user function.
|
||||
*/
|
||||
@ -45,6 +47,10 @@ class PUserFcnBase : public TObject
|
||||
PUserFcnBase();
|
||||
virtual ~PUserFcnBase();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const = 0; ///< if a user function needs a global part this function should return true, otherwise false
|
||||
virtual void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) = 0; ///< if a user function is using a global part, this function is used to invoke and retrieve the proper global object
|
||||
virtual Bool_t GlobalPartIsValid() const = 0; ///< if a user function is using a global part, this function returns if the global object part is valid
|
||||
|
||||
virtual Double_t operator()(Double_t t, const std::vector<Double_t> ¶m) const = 0;
|
||||
|
||||
ClassDef(PUserFcnBase, 1)
|
||||
|
BIN
src/tests/CheckMusrfitInstall/ASlibs/data/lem10_his_0825.root
Normal file
BIN
src/tests/CheckMusrfitInstall/ASlibs/data/lem10_his_0825.root
Normal file
Binary file not shown.
26
src/tests/CheckMusrfitInstall/ASlibs/nonlocal_startup.xml
Normal file
26
src/tests/CheckMusrfitInstall/ASlibs/nonlocal_startup.xml
Normal file
@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<nonlocal xmlns="http://nemu.web.psi.ch/musrfit/nonlocal">
|
||||
<comment>
|
||||
$Id: nonlocal_startup.xml 4047 2009-07-02 13:36:18Z nemu $
|
||||
</comment>
|
||||
<nonlocal_par>
|
||||
<fourier_points>262144</fourier_points>
|
||||
</nonlocal_par>
|
||||
<trim_sp_part>
|
||||
<data_path>profiles/Sn_E</data_path>
|
||||
<energy_list>
|
||||
<energy>1000</energy>
|
||||
<energy>2000</energy>
|
||||
<energy>4000</energy>
|
||||
<energy>6000</energy>
|
||||
<energy>8000</energy>
|
||||
<energy>10000</energy>
|
||||
<energy>12000</energy>
|
||||
<energy>14100</energy>
|
||||
<energy>18000</energy>
|
||||
<energy>22000</energy>
|
||||
<energy>25000</energy>
|
||||
<energy>27300</energy>
|
||||
</energy_list>
|
||||
</trim_sp_part>
|
||||
</nonlocal>
|
63
src/tests/CheckMusrfitInstall/ASlibs/profiles/Sn_E1000.rge
Normal file
63
src/tests/CheckMusrfitInstall/ASlibs/profiles/Sn_E1000.rge
Normal file
@ -0,0 +1,63 @@
|
||||
DEPTH PARTICLES
|
||||
4. 1094
|
||||
12. 2457
|
||||
20. 3130
|
||||
28. 3821
|
||||
36. 4153
|
||||
44. 4406
|
||||
52. 4581
|
||||
60. 4679
|
||||
68. 4829
|
||||
76. 4832
|
||||
84. 4636
|
||||
92. 4435
|
||||
100. 4199
|
||||
108. 4001
|
||||
116. 3697
|
||||
124. 3299
|
||||
132. 3075
|
||||
140. 2601
|
||||
148. 2388
|
||||
156. 2053
|
||||
164. 1802
|
||||
172. 1471
|
||||
180. 1142
|
||||
188. 936
|
||||
196. 747
|
||||
204. 590
|
||||
212. 463
|
||||
220. 305
|
||||
228. 233
|
||||
236. 169
|
||||
244. 148
|
||||
252. 85
|
||||
260. 63
|
||||
268. 33
|
||||
276. 21
|
||||
284. 12
|
||||
292. 5
|
||||
300. 4
|
||||
308. 5
|
||||
316. 3
|
||||
324. 1
|
||||
332. 0
|
||||
340. 0
|
||||
348. 1
|
||||
356. 0
|
||||
364. 0
|
||||
372. 0
|
||||
380. 0
|
||||
388. 0
|
||||
396. 0
|
||||
404. 0
|
||||
412. 0
|
||||
420. 0
|
||||
428. 0
|
||||
436. 0
|
||||
444. 0
|
||||
452. 0
|
||||
460. 0
|
||||
468. 0
|
||||
476. 0
|
||||
484. 0
|
||||
492. 0
|
93
src/tests/CheckMusrfitInstall/ASlibs/profiles/Sn_E10000.rge
Normal file
93
src/tests/CheckMusrfitInstall/ASlibs/profiles/Sn_E10000.rge
Normal file
@ -0,0 +1,93 @@
|
||||
DEPTH PARTICLES
|
||||
6. 57
|
||||
18. 167
|
||||
30. 222
|
||||
42. 265
|
||||
54. 274
|
||||
66. 318
|
||||
78. 345
|
||||
90. 379
|
||||
102. 414
|
||||
114. 443
|
||||
126. 476
|
||||
138. 528
|
||||
150. 552
|
||||
162. 654
|
||||
174. 623
|
||||
186. 669
|
||||
198. 690
|
||||
210. 764
|
||||
222. 793
|
||||
234. 869
|
||||
246. 904
|
||||
258. 905
|
||||
270. 1004
|
||||
282. 1098
|
||||
294. 1160
|
||||
306. 1120
|
||||
318. 1282
|
||||
330. 1332
|
||||
342. 1428
|
||||
354. 1463
|
||||
366. 1616
|
||||
378. 1635
|
||||
390. 1719
|
||||
402. 1732
|
||||
414. 1834
|
||||
426. 2012
|
||||
438. 1995
|
||||
450. 2175
|
||||
462. 2214
|
||||
474. 2326
|
||||
486. 2315
|
||||
498. 2557
|
||||
510. 2548
|
||||
522. 2589
|
||||
534. 2651
|
||||
546. 2584
|
||||
558. 2765
|
||||
570. 2755
|
||||
582. 2730
|
||||
594. 2655
|
||||
606. 2727
|
||||
618. 2625
|
||||
630. 2560
|
||||
642. 2574
|
||||
654. 2431
|
||||
666. 2228
|
||||
678. 2083
|
||||
690. 2034
|
||||
702. 1793
|
||||
714. 1546
|
||||
726. 1385
|
||||
738. 1188
|
||||
750. 986
|
||||
762. 833
|
||||
774. 639
|
||||
786. 491
|
||||
798. 330
|
||||
810. 232
|
||||
822. 159
|
||||
834. 93
|
||||
846. 43
|
||||
858. 27
|
||||
870. 12
|
||||
882. 6
|
||||
894. 2
|
||||
906. 1
|
||||
918. 2
|
||||
930. 0
|
||||
942. 0
|
||||
954. 0
|
||||
966. 0
|
||||
978. 0
|
||||
990. 0
|
||||
1002. 0
|
||||
1014. 0
|
||||
1026. 0
|
||||
1038. 0
|
||||
1050. 0
|
||||
1062. 0
|
||||
1074. 0
|
||||
1086. 0
|
||||
1098. 0
|
101
src/tests/CheckMusrfitInstall/ASlibs/profiles/Sn_E12000.rge
Normal file
101
src/tests/CheckMusrfitInstall/ASlibs/profiles/Sn_E12000.rge
Normal file
@ -0,0 +1,101 @@
|
||||
DEPTH PARTICLES
|
||||
6. 52
|
||||
18. 97
|
||||
30. 133
|
||||
42. 181
|
||||
54. 215
|
||||
66. 233
|
||||
78. 226
|
||||
90. 286
|
||||
102. 301
|
||||
114. 305
|
||||
126. 331
|
||||
138. 364
|
||||
150. 414
|
||||
162. 383
|
||||
174. 475
|
||||
186. 475
|
||||
198. 493
|
||||
210. 477
|
||||
222. 534
|
||||
234. 498
|
||||
246. 660
|
||||
258. 588
|
||||
270. 631
|
||||
282. 699
|
||||
294. 800
|
||||
306. 767
|
||||
318. 812
|
||||
330. 839
|
||||
342. 889
|
||||
354. 977
|
||||
366. 1061
|
||||
378. 1140
|
||||
390. 1119
|
||||
402. 1161
|
||||
414. 1242
|
||||
426. 1248
|
||||
438. 1356
|
||||
450. 1513
|
||||
462. 1514
|
||||
474. 1589
|
||||
486. 1630
|
||||
498. 1683
|
||||
510. 1830
|
||||
522. 1872
|
||||
534. 1990
|
||||
546. 1964
|
||||
558. 2015
|
||||
570. 2069
|
||||
582. 2317
|
||||
594. 2243
|
||||
606. 2253
|
||||
618. 2361
|
||||
630. 2432
|
||||
642. 2459
|
||||
654. 2599
|
||||
666. 2451
|
||||
678. 2501
|
||||
690. 2520
|
||||
702. 2534
|
||||
714. 2492
|
||||
726. 2467
|
||||
738. 2348
|
||||
750. 2257
|
||||
762. 2211
|
||||
774. 2192
|
||||
786. 1971
|
||||
798. 1825
|
||||
810. 1694
|
||||
822. 1509
|
||||
834. 1333
|
||||
846. 1173
|
||||
858. 948
|
||||
870. 795
|
||||
882. 683
|
||||
894. 502
|
||||
906. 382
|
||||
918. 273
|
||||
930. 148
|
||||
942. 109
|
||||
954. 92
|
||||
966. 39
|
||||
978. 22
|
||||
990. 15
|
||||
1002. 1
|
||||
1014. 2
|
||||
1026. 1
|
||||
1038. 0
|
||||
1050. 0
|
||||
1062. 0
|
||||
1074. 0
|
||||
1086. 0
|
||||
1098. 0
|
||||
1110. 0
|
||||
1122. 0
|
||||
1134. 0
|
||||
1146. 0
|
||||
1158. 0
|
||||
1170. 0
|
||||
1182. 0
|
||||
1194. 0
|
101
src/tests/CheckMusrfitInstall/ASlibs/profiles/Sn_E14100.rge
Normal file
101
src/tests/CheckMusrfitInstall/ASlibs/profiles/Sn_E14100.rge
Normal file
@ -0,0 +1,101 @@
|
||||
DEPTH PARTICLES
|
||||
6. 40
|
||||
18. 80
|
||||
30. 105
|
||||
42. 113
|
||||
54. 136
|
||||
66. 138
|
||||
78. 166
|
||||
90. 202
|
||||
102. 181
|
||||
114. 215
|
||||
126. 255
|
||||
138. 257
|
||||
150. 271
|
||||
162. 254
|
||||
174. 296
|
||||
186. 324
|
||||
198. 343
|
||||
210. 337
|
||||
222. 348
|
||||
234. 397
|
||||
246. 426
|
||||
258. 407
|
||||
270. 456
|
||||
282. 457
|
||||
294. 499
|
||||
306. 509
|
||||
318. 587
|
||||
330. 632
|
||||
342. 637
|
||||
354. 688
|
||||
366. 689
|
||||
378. 679
|
||||
390. 795
|
||||
402. 755
|
||||
414. 833
|
||||
426. 891
|
||||
438. 888
|
||||
450. 897
|
||||
462. 968
|
||||
474. 1074
|
||||
486. 1127
|
||||
498. 1148
|
||||
510. 1162
|
||||
522. 1296
|
||||
534. 1343
|
||||
546. 1396
|
||||
558. 1441
|
||||
570. 1563
|
||||
582. 1524
|
||||
594. 1591
|
||||
606. 1697
|
||||
618. 1684
|
||||
630. 1795
|
||||
642. 1841
|
||||
654. 1893
|
||||
666. 1934
|
||||
678. 1945
|
||||
690. 2051
|
||||
702. 2154
|
||||
714. 2230
|
||||
726. 2123
|
||||
738. 2273
|
||||
750. 2294
|
||||
762. 2410
|
||||
774. 2435
|
||||
786. 2286
|
||||
798. 2380
|
||||
810. 2337
|
||||
822. 2286
|
||||
834. 2222
|
||||
846. 2254
|
||||
858. 2259
|
||||
870. 2137
|
||||
882. 2049
|
||||
894. 1976
|
||||
906. 1747
|
||||
918. 1577
|
||||
930. 1506
|
||||
942. 1350
|
||||
954. 1194
|
||||
966. 1042
|
||||
978. 904
|
||||
990. 689
|
||||
1002. 561
|
||||
1014. 447
|
||||
1026. 363
|
||||
1038. 254
|
||||
1050. 170
|
||||
1062. 128
|
||||
1074. 70
|
||||
1086. 51
|
||||
1098. 23
|
||||
1110. 11
|
||||
1122. 8
|
||||
1134. 6
|
||||
1146. 1
|
||||
1158. 4
|
||||
1170. 0
|
||||
1182. 0
|
||||
1194. 0
|
101
src/tests/CheckMusrfitInstall/ASlibs/profiles/Sn_E18000.rge
Normal file
101
src/tests/CheckMusrfitInstall/ASlibs/profiles/Sn_E18000.rge
Normal file
@ -0,0 +1,101 @@
|
||||
DEPTH PARTICLES
|
||||
8. 25
|
||||
24. 83
|
||||
40. 89
|
||||
56. 105
|
||||
72. 152
|
||||
88. 143
|
||||
104. 160
|
||||
120. 173
|
||||
136. 198
|
||||
152. 196
|
||||
168. 200
|
||||
184. 213
|
||||
200. 251
|
||||
216. 255
|
||||
232. 276
|
||||
248. 301
|
||||
264. 305
|
||||
280. 328
|
||||
296. 360
|
||||
312. 374
|
||||
328. 406
|
||||
344. 422
|
||||
360. 480
|
||||
376. 413
|
||||
392. 504
|
||||
408. 550
|
||||
424. 538
|
||||
440. 614
|
||||
456. 626
|
||||
472. 699
|
||||
488. 685
|
||||
504. 772
|
||||
520. 818
|
||||
536. 774
|
||||
552. 877
|
||||
568. 914
|
||||
584. 984
|
||||
600. 1034
|
||||
616. 1093
|
||||
632. 1236
|
||||
648. 1273
|
||||
664. 1336
|
||||
680. 1405
|
||||
696. 1489
|
||||
712. 1494
|
||||
728. 1602
|
||||
744. 1642
|
||||
760. 1779
|
||||
776. 1900
|
||||
792. 1977
|
||||
808. 2080
|
||||
824. 2014
|
||||
840. 2215
|
||||
856. 2311
|
||||
872. 2381
|
||||
888. 2431
|
||||
904. 2550
|
||||
920. 2636
|
||||
936. 2698
|
||||
952. 2786
|
||||
968. 2794
|
||||
984. 2817
|
||||
1000. 2853
|
||||
1016. 2858
|
||||
1032. 2850
|
||||
1048. 2742
|
||||
1064. 2656
|
||||
1080. 2496
|
||||
1096. 2384
|
||||
1112. 2286
|
||||
1128. 2091
|
||||
1144. 1935
|
||||
1160. 1762
|
||||
1176. 1471
|
||||
1192. 1256
|
||||
1208. 1045
|
||||
1224. 819
|
||||
1240. 649
|
||||
1256. 459
|
||||
1272. 308
|
||||
1288. 207
|
||||
1304. 122
|
||||
1320. 71
|
||||
1336. 40
|
||||
1352. 11
|
||||
1368. 3
|
||||
1384. 5
|
||||
1400. 1
|
||||
1416. 1
|
||||
1432. 0
|
||||
1448. 0
|
||||
1464. 0
|
||||
1480. 0
|
||||
1496. 0
|
||||
1512. 0
|
||||
1528. 0
|
||||
1544. 0
|
||||
1560. 0
|
||||
1576. 0
|
||||
1592. 0
|
73
src/tests/CheckMusrfitInstall/ASlibs/profiles/Sn_E2000.rge
Normal file
73
src/tests/CheckMusrfitInstall/ASlibs/profiles/Sn_E2000.rge
Normal file
@ -0,0 +1,73 @@
|
||||
DEPTH PARTICLES
|
||||
4. 324
|
||||
12. 859
|
||||
20. 1200
|
||||
28. 1491
|
||||
36. 1650
|
||||
44. 1963
|
||||
52. 2150
|
||||
60. 2361
|
||||
68. 2708
|
||||
76. 2611
|
||||
84. 2857
|
||||
92. 3074
|
||||
100. 3249
|
||||
108. 3281
|
||||
116. 3338
|
||||
124. 3453
|
||||
132. 3555
|
||||
140. 3550
|
||||
148. 3586
|
||||
156. 3608
|
||||
164. 3611
|
||||
172. 3440
|
||||
180. 3226
|
||||
188. 3115
|
||||
196. 2998
|
||||
204. 2780
|
||||
212. 2571
|
||||
220. 2276
|
||||
228. 1999
|
||||
236. 1770
|
||||
244. 1530
|
||||
252. 1309
|
||||
260. 1127
|
||||
268. 902
|
||||
276. 723
|
||||
284. 575
|
||||
292. 448
|
||||
300. 311
|
||||
308. 273
|
||||
316. 174
|
||||
324. 124
|
||||
332. 85
|
||||
340. 59
|
||||
348. 41
|
||||
356. 23
|
||||
364. 16
|
||||
372. 9
|
||||
380. 5
|
||||
388. 5
|
||||
396. 2
|
||||
404. 0
|
||||
412. 0
|
||||
420. 0
|
||||
428. 0
|
||||
436. 0
|
||||
444. 0
|
||||
452. 0
|
||||
460. 0
|
||||
468. 0
|
||||
476. 0
|
||||
484. 0
|
||||
492. 0
|
||||
500. 0
|
||||
508. 0
|
||||
516. 0
|
||||
524. 0
|
||||
532. 0
|
||||
540. 0
|
||||
548. 0
|
||||
556. 0
|
||||
564. 0
|
||||
572. 0
|
97
src/tests/CheckMusrfitInstall/ASlibs/profiles/Sn_E22000.rge
Normal file
97
src/tests/CheckMusrfitInstall/ASlibs/profiles/Sn_E22000.rge
Normal file
@ -0,0 +1,97 @@
|
||||
DEPTH PARTICLES
|
||||
10. 33
|
||||
30. 57
|
||||
50. 88
|
||||
70. 99
|
||||
90. 93
|
||||
110. 122
|
||||
130. 130
|
||||
150. 145
|
||||
170. 160
|
||||
190. 208
|
||||
210. 224
|
||||
230. 212
|
||||
250. 214
|
||||
270. 232
|
||||
290. 234
|
||||
310. 268
|
||||
330. 271
|
||||
350. 311
|
||||
370. 345
|
||||
390. 346
|
||||
410. 355
|
||||
430. 417
|
||||
450. 405
|
||||
470. 449
|
||||
490. 428
|
||||
510. 508
|
||||
530. 550
|
||||
550. 560
|
||||
570. 581
|
||||
590. 649
|
||||
610. 646
|
||||
630. 707
|
||||
650. 751
|
||||
670. 810
|
||||
690. 836
|
||||
710. 964
|
||||
730. 1051
|
||||
750. 1063
|
||||
770. 1135
|
||||
790. 1193
|
||||
810. 1294
|
||||
830. 1334
|
||||
850. 1464
|
||||
870. 1487
|
||||
890. 1624
|
||||
910. 1686
|
||||
930. 1733
|
||||
950. 1895
|
||||
970. 1891
|
||||
990. 2150
|
||||
1010. 2192
|
||||
1030. 2369
|
||||
1050. 2459
|
||||
1070. 2599
|
||||
1090. 2713
|
||||
1110. 2733
|
||||
1130. 2907
|
||||
1150. 2929
|
||||
1170. 2986
|
||||
1190. 3080
|
||||
1210. 3084
|
||||
1230. 3088
|
||||
1250. 3159
|
||||
1270. 3197
|
||||
1290. 3052
|
||||
1310. 2920
|
||||
1330. 2749
|
||||
1350. 2600
|
||||
1370. 2389
|
||||
1390. 2232
|
||||
1410. 1976
|
||||
1430. 1651
|
||||
1450. 1285
|
||||
1470. 1046
|
||||
1490. 827
|
||||
1510. 607
|
||||
1530. 341
|
||||
1550. 213
|
||||
1570. 120
|
||||
1590. 47
|
||||
1610. 22
|
||||
1630. 6
|
||||
1650. 1
|
||||
1670. 1
|
||||
1690. 0
|
||||
1710. 0
|
||||
1730. 0
|
||||
1750. 0
|
||||
1770. 0
|
||||
1790. 0
|
||||
1810. 0
|
||||
1830. 0
|
||||
1850. 0
|
||||
1870. 0
|
||||
1890. 0
|
||||
1910. 0
|
101
src/tests/CheckMusrfitInstall/ASlibs/profiles/Sn_E25000.rge
Normal file
101
src/tests/CheckMusrfitInstall/ASlibs/profiles/Sn_E25000.rge
Normal file
@ -0,0 +1,101 @@
|
||||
DEPTH PARTICLES
|
||||
10. 23
|
||||
30. 45
|
||||
50. 70
|
||||
70. 64
|
||||
90. 74
|
||||
110. 93
|
||||
130. 103
|
||||
150. 113
|
||||
170. 102
|
||||
190. 122
|
||||
210. 127
|
||||
230. 135
|
||||
250. 145
|
||||
270. 159
|
||||
290. 155
|
||||
310. 188
|
||||
330. 190
|
||||
350. 203
|
||||
370. 187
|
||||
390. 231
|
||||
410. 251
|
||||
430. 259
|
||||
450. 286
|
||||
470. 280
|
||||
490. 321
|
||||
510. 328
|
||||
530. 343
|
||||
550. 336
|
||||
570. 366
|
||||
590. 407
|
||||
610. 435
|
||||
630. 417
|
||||
650. 468
|
||||
670. 498
|
||||
690. 525
|
||||
710. 546
|
||||
730. 601
|
||||
750. 629
|
||||
770. 629
|
||||
790. 749
|
||||
810. 742
|
||||
830. 866
|
||||
850. 810
|
||||
870. 895
|
||||
890. 998
|
||||
910. 1028
|
||||
930. 1044
|
||||
950. 1090
|
||||
970. 1212
|
||||
990. 1270
|
||||
1010. 1374
|
||||
1030. 1369
|
||||
1050. 1544
|
||||
1070. 1555
|
||||
1090. 1671
|
||||
1110. 1709
|
||||
1130. 1730
|
||||
1150. 1880
|
||||
1170. 2004
|
||||
1190. 2111
|
||||
1210. 2147
|
||||
1230. 2294
|
||||
1250. 2437
|
||||
1270. 2431
|
||||
1290. 2612
|
||||
1310. 2564
|
||||
1330. 2749
|
||||
1350. 2725
|
||||
1370. 2847
|
||||
1390. 2970
|
||||
1410. 2896
|
||||
1430. 2977
|
||||
1450. 2943
|
||||
1470. 2890
|
||||
1490. 2795
|
||||
1510. 2720
|
||||
1530. 2552
|
||||
1550. 2427
|
||||
1570. 2148
|
||||
1590. 2062
|
||||
1610. 1775
|
||||
1630. 1536
|
||||
1650. 1302
|
||||
1670. 994
|
||||
1690. 792
|
||||
1710. 558
|
||||
1730. 401
|
||||
1750. 269
|
||||
1770. 182
|
||||
1790. 78
|
||||
1810. 30
|
||||
1830. 18
|
||||
1850. 3
|
||||
1870. 1
|
||||
1890. 1
|
||||
1910. 0
|
||||
1930. 0
|
||||
1950. 0
|
||||
1970. 0
|
||||
1990. 0
|
80
src/tests/CheckMusrfitInstall/ASlibs/profiles/Sn_E27300.rge
Normal file
80
src/tests/CheckMusrfitInstall/ASlibs/profiles/Sn_E27300.rge
Normal file
@ -0,0 +1,80 @@
|
||||
DEPTH PARTICLES
|
||||
15. 44
|
||||
45. 75
|
||||
75. 88
|
||||
105. 112
|
||||
135. 128
|
||||
165. 142
|
||||
195. 147
|
||||
225. 173
|
||||
255. 176
|
||||
285. 187
|
||||
315. 198
|
||||
345. 243
|
||||
375. 224
|
||||
405. 241
|
||||
435. 312
|
||||
465. 342
|
||||
495. 328
|
||||
525. 375
|
||||
555. 381
|
||||
585. 433
|
||||
615. 411
|
||||
645. 493
|
||||
675. 542
|
||||
705. 592
|
||||
735. 615
|
||||
765. 705
|
||||
795. 713
|
||||
825. 818
|
||||
855. 867
|
||||
885. 940
|
||||
915. 1045
|
||||
945. 1163
|
||||
975. 1282
|
||||
1005. 1325
|
||||
1035. 1439
|
||||
1065. 1537
|
||||
1095. 1729
|
||||
1125. 1870
|
||||
1155. 2026
|
||||
1185. 2086
|
||||
1215. 2254
|
||||
1245. 2420
|
||||
1275. 2727
|
||||
1305. 2742
|
||||
1335. 2994
|
||||
1365. 3144
|
||||
1395. 3381
|
||||
1425. 3666
|
||||
1455. 3717
|
||||
1485. 3911
|
||||
1515. 4053
|
||||
1545. 4093
|
||||
1575. 4045
|
||||
1605. 4095
|
||||
1635. 4120
|
||||
1665. 3817
|
||||
1695. 3589
|
||||
1725. 3286
|
||||
1755. 2787
|
||||
1785. 2240
|
||||
1815. 1803
|
||||
1845. 1254
|
||||
1875. 878
|
||||
1905. 473
|
||||
1935. 231
|
||||
1965. 97
|
||||
1995. 30
|
||||
2025. 4
|
||||
2055. 0
|
||||
2085. 1
|
||||
2115. 0
|
||||
2145. 0
|
||||
2175. 0
|
||||
2205. 0
|
||||
2235. 0
|
||||
2265. 0
|
||||
2295. 0
|
||||
2325. 0
|
||||
2355. 0
|
91
src/tests/CheckMusrfitInstall/ASlibs/profiles/Sn_E4000.rge
Normal file
91
src/tests/CheckMusrfitInstall/ASlibs/profiles/Sn_E4000.rge
Normal file
@ -0,0 +1,91 @@
|
||||
DEPTH PARTICLES
|
||||
4. 103
|
||||
12. 348
|
||||
20. 466
|
||||
28. 581
|
||||
36. 688
|
||||
44. 760
|
||||
52. 826
|
||||
60. 891
|
||||
68. 1036
|
||||
76. 1031
|
||||
84. 1096
|
||||
92. 1181
|
||||
100. 1268
|
||||
108. 1317
|
||||
116. 1343
|
||||
124. 1546
|
||||
132. 1633
|
||||
140. 1662
|
||||
148. 1781
|
||||
156. 1903
|
||||
164. 1906
|
||||
172. 2032
|
||||
180. 2162
|
||||
188. 2259
|
||||
196. 2318
|
||||
204. 2289
|
||||
212. 2437
|
||||
220. 2412
|
||||
228. 2514
|
||||
236. 2634
|
||||
244. 2622
|
||||
252. 2636
|
||||
260. 2749
|
||||
268. 2704
|
||||
276. 2724
|
||||
284. 2705
|
||||
292. 2654
|
||||
300. 2480
|
||||
308. 2455
|
||||
316. 2355
|
||||
324. 2322
|
||||
332. 2299
|
||||
340. 2118
|
||||
348. 1917
|
||||
356. 1792
|
||||
364. 1596
|
||||
372. 1377
|
||||
380. 1284
|
||||
388. 1118
|
||||
396. 931
|
||||
404. 827
|
||||
412. 696
|
||||
420. 597
|
||||
428. 418
|
||||
436. 348
|
||||
444. 254
|
||||
452. 209
|
||||
460. 154
|
||||
468. 110
|
||||
476. 72
|
||||
484. 54
|
||||
492. 27
|
||||
500. 20
|
||||
508. 14
|
||||
516. 8
|
||||
524. 3
|
||||
532. 3
|
||||
540. 1
|
||||
548. 1
|
||||
556. 0
|
||||
564. 0
|
||||
572. 0
|
||||
580. 0
|
||||
588. 0
|
||||
596. 0
|
||||
604. 0
|
||||
612. 0
|
||||
620. 0
|
||||
628. 0
|
||||
636. 0
|
||||
644. 0
|
||||
652. 0
|
||||
660. 0
|
||||
668. 0
|
||||
676. 0
|
||||
684. 0
|
||||
692. 0
|
||||
700. 0
|
||||
708. 0
|
||||
716. 0
|
101
src/tests/CheckMusrfitInstall/ASlibs/profiles/Sn_E6000.rge
Normal file
101
src/tests/CheckMusrfitInstall/ASlibs/profiles/Sn_E6000.rge
Normal file
@ -0,0 +1,101 @@
|
||||
DEPTH PARTICLES
|
||||
4. 62
|
||||
12. 158
|
||||
20. 246
|
||||
28. 302
|
||||
36. 338
|
||||
44. 405
|
||||
52. 482
|
||||
60. 467
|
||||
68. 508
|
||||
76. 582
|
||||
84. 576
|
||||
92. 620
|
||||
100. 679
|
||||
108. 688
|
||||
116. 777
|
||||
124. 830
|
||||
132. 836
|
||||
140. 911
|
||||
148. 914
|
||||
156. 1003
|
||||
164. 957
|
||||
172. 1083
|
||||
180. 1151
|
||||
188. 1203
|
||||
196. 1226
|
||||
204. 1337
|
||||
212. 1381
|
||||
220. 1365
|
||||
228. 1516
|
||||
236. 1519
|
||||
244. 1640
|
||||
252. 1648
|
||||
260. 1644
|
||||
268. 1718
|
||||
276. 1836
|
||||
284. 1865
|
||||
292. 1933
|
||||
300. 1917
|
||||
308. 1998
|
||||
316. 2027
|
||||
324. 2095
|
||||
332. 2134
|
||||
340. 2208
|
||||
348. 2268
|
||||
356. 2278
|
||||
364. 2222
|
||||
372. 2295
|
||||
380. 2291
|
||||
388. 2216
|
||||
396. 2276
|
||||
404. 2218
|
||||
412. 2173
|
||||
420. 2101
|
||||
428. 2009
|
||||
436. 1944
|
||||
444. 1877
|
||||
452. 1813
|
||||
460. 1789
|
||||
468. 1609
|
||||
476. 1506
|
||||
484. 1423
|
||||
492. 1225
|
||||
500. 1181
|
||||
508. 1034
|
||||
516. 900
|
||||
524. 797
|
||||
532. 629
|
||||
540. 538
|
||||
548. 457
|
||||
556. 351
|
||||
564. 270
|
||||
572. 229
|
||||
580. 178
|
||||
588. 133
|
||||
596. 81
|
||||
604. 67
|
||||
612. 39
|
||||
620. 23
|
||||
628. 18
|
||||
636. 14
|
||||
644. 4
|
||||
652. 5
|
||||
660. 3
|
||||
668. 0
|
||||
676. 0
|
||||
684. 0
|
||||
692. 0
|
||||
700. 0
|
||||
708. 0
|
||||
716. 0
|
||||
724. 0
|
||||
732. 0
|
||||
740. 0
|
||||
748. 0
|
||||
756. 0
|
||||
764. 0
|
||||
772. 0
|
||||
780. 0
|
||||
788. 0
|
||||
796. 0
|
99
src/tests/CheckMusrfitInstall/ASlibs/profiles/Sn_E8000.rge
Normal file
99
src/tests/CheckMusrfitInstall/ASlibs/profiles/Sn_E8000.rge
Normal file
@ -0,0 +1,99 @@
|
||||
DEPTH PARTICLES
|
||||
5. 74
|
||||
15. 177
|
||||
25. 219
|
||||
35. 270
|
||||
45. 311
|
||||
55. 351
|
||||
65. 370
|
||||
75. 376
|
||||
85. 448
|
||||
95. 513
|
||||
105. 517
|
||||
115. 542
|
||||
125. 622
|
||||
135. 645
|
||||
145. 647
|
||||
155. 732
|
||||
165. 772
|
||||
175. 789
|
||||
185. 890
|
||||
195. 959
|
||||
205. 946
|
||||
215. 1043
|
||||
225. 1033
|
||||
235. 1133
|
||||
245. 1185
|
||||
255. 1278
|
||||
265. 1369
|
||||
275. 1444
|
||||
285. 1392
|
||||
295. 1505
|
||||
305. 1531
|
||||
315. 1610
|
||||
325. 1712
|
||||
335. 1751
|
||||
345. 1853
|
||||
355. 1944
|
||||
365. 1885
|
||||
375. 2097
|
||||
385. 2147
|
||||
395. 2213
|
||||
405. 2251
|
||||
415. 2276
|
||||
425. 2347
|
||||
435. 2458
|
||||
445. 2404
|
||||
455. 2500
|
||||
465. 2468
|
||||
475. 2546
|
||||
485. 2547
|
||||
495. 2451
|
||||
505. 2513
|
||||
515. 2444
|
||||
525. 2361
|
||||
535. 2337
|
||||
545. 2193
|
||||
555. 2145
|
||||
565. 1989
|
||||
575. 1862
|
||||
585. 1845
|
||||
595. 1594
|
||||
605. 1368
|
||||
615. 1289
|
||||
625. 1097
|
||||
635. 885
|
||||
645. 782
|
||||
655. 618
|
||||
665. 540
|
||||
675. 397
|
||||
685. 295
|
||||
695. 196
|
||||
705. 140
|
||||
715. 111
|
||||
725. 59
|
||||
735. 22
|
||||
745. 21
|
||||
755. 9
|
||||
765. 5
|
||||
775. 1
|
||||
785. 1
|
||||
795. 2
|
||||
805. 1
|
||||
815. 0
|
||||
825. 0
|
||||
835. 0
|
||||
845. 0
|
||||
855. 0
|
||||
865. 0
|
||||
875. 0
|
||||
885. 0
|
||||
895. 0
|
||||
905. 0
|
||||
915. 0
|
||||
925. 0
|
||||
935. 0
|
||||
945. 0
|
||||
955. 0
|
||||
965. 0
|
||||
975. 0
|
104
src/tests/CheckMusrfitInstall/ASlibs/test-nonlocal.msr
Normal file
104
src/tests/CheckMusrfitInstall/ASlibs/test-nonlocal.msr
Normal file
@ -0,0 +1,104 @@
|
||||
Sn-210042 B=~48(G)/1.50(A), T=3.31(K), Tr=18.02(kV), Sa=-4.70(kV), En=21.97(keV), RAL-RAR=0.09(kV), RAT-RAB=0.15(kV)
|
||||
###############################################################
|
||||
FITPARAMETER
|
||||
# Nr. Name Value Step Pos_Error Boundaries
|
||||
1 one 1 0 none
|
||||
2 zero 0 0 none
|
||||
3 Asy 0.207938 0.00663241 none 0 0.33
|
||||
4 energy 22 0 none
|
||||
5 redTemp 0.8683 0 none
|
||||
6 thickness 5000 0 none
|
||||
7 ell 12000 0 none
|
||||
8 xi 94 0 none
|
||||
9 lambdaL 45.9973 1.19932 none
|
||||
10 Bext 47.11 0 none
|
||||
11 deadLayer 20.7296 0.054242 none 0 none
|
||||
12 RateSmear 0.327307 0.0222695 none
|
||||
13 N0_L 297.975 1.29352 none
|
||||
14 Bkg_L 24.582 0.122645 none
|
||||
15 Phase_L 31.2249 2.7339 none
|
||||
16 Alpha_LR 1.08146 0.00759253 none
|
||||
17 Bkg_R 27.5568 0.123419 none
|
||||
18 RelPhase_R 152.704 1.58788 none
|
||||
|
||||
###############################################################
|
||||
THEORY
|
||||
asymmetry 3
|
||||
userFcn libPNL_PippardFitter.so PNL_PippardFitter 4 5 6 7 8 9 10 fun2 11
|
||||
simpleGss 12 (rate)
|
||||
|
||||
###############################################################
|
||||
FUNCTIONS
|
||||
fun1 = par13 * map1
|
||||
fun2 = par15 + map2
|
||||
|
||||
###############################################################
|
||||
RUN data/lem10_his_0825 MUE4 PSI ROOT-NPP (name beamline institute data-file-format)
|
||||
fittype 0 (single histogram fit)
|
||||
norm 13
|
||||
backgr.fit 14
|
||||
lifetimecorrection
|
||||
map 1 2 0 0 0 0 0 0 0 0
|
||||
forward 1
|
||||
data 3289 65000
|
||||
t0 3289
|
||||
fit 0.2 9.2
|
||||
packing 250
|
||||
|
||||
RUN data/lem10_his_0825 MUE4 PSI ROOT-NPP (name beamline institute data-file-format)
|
||||
fittype 0 (single histogram fit)
|
||||
norm fun1
|
||||
backgr.fit 17
|
||||
lifetimecorrection
|
||||
map 16 18 0 0 0 0 0 0 0 0
|
||||
forward 3
|
||||
data 3289 65000
|
||||
t0 3289
|
||||
fit 0.2 9.2
|
||||
packing 250
|
||||
|
||||
###############################################################
|
||||
COMMANDS
|
||||
MINIMIZE
|
||||
HESSE
|
||||
SAVE
|
||||
|
||||
###############################################################
|
||||
PLOT 0 (single histo plot)
|
||||
runs 1 2
|
||||
range 0.00 9.00 -0.30 0.30
|
||||
view_packing 500
|
||||
|
||||
###############################################################
|
||||
FOURIER
|
||||
units Gauss # units either 'Gauss', 'MHz', or 'Mc/s'
|
||||
fourier_power 10
|
||||
apodization STRONG # NONE, WEAK, MEDIUM, STRONG
|
||||
plot POWER # REAL, IMAG, REAL_AND_IMAG, POWER, PHASE
|
||||
phase 8.50
|
||||
#range_for_phase_correction 50.0 70.0
|
||||
range 0.00 200.00
|
||||
|
||||
###############################################################
|
||||
STATISTIC --- 2010-11-07 16:46:59
|
||||
chisq = 417.37802066449291, NDF = 358, chisq/NDF = 1.1658603929175779
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
85
src/tests/userFcnGlobal/1951_tf_h13.msr
Normal file
85
src/tests/userFcnGlobal/1951_tf_h13.msr
Normal file
@ -0,0 +1,85 @@
|
||||
YBCO(110)/PrBCO/STO on Ag, T=4.96 K, E=19.12 keV, B=~98(G)/3.04(A), Tr/Sa=15.02/-5.00 kV, RA-LR 0.05 kV, RA-TB 0.14 kV
|
||||
###############################################################
|
||||
FITPARAMETER
|
||||
# No Name Value Step Pos_Error Boundaries
|
||||
1 phase 25.1328 -0.979855 0.987925 -180 180
|
||||
2 field 84.2201 -0.243991 0.264511 0 none
|
||||
3 asym 0.11616 -0.00735602 0.00786111 0 0.3
|
||||
4 rate 0.297241 -0.028157 0.0289587 0 2
|
||||
5 fieldBKG 94.9012 -0.142071 0.143479 0 none
|
||||
6 asymBKG 0.139904 -0.00933264 0.00905566 0 0.3
|
||||
7 rateBKG 0.0623834 -0.0189223 0.0188684 0 100
|
||||
8 Norm_L 272.022 -0.565339 0.566487 0 1000
|
||||
9 BG_L 25.7891 -0.120907 0.120769 0 100
|
||||
10 Norm_R 320.245 -0.608216 0.60492 0 1000
|
||||
11 BG_R 30.7947 -0.130858 0.131547 0 100
|
||||
12 relasy_R 0.982832 -0.0159124 0.0162089 0 1.2
|
||||
13 relphase_R 159.584 -0.898672 0.898169 150 210
|
||||
14 one 1 0 none
|
||||
15 zero 0 0 none
|
||||
|
||||
###############################################################
|
||||
THEORY
|
||||
asymmetry fun1
|
||||
userFcn libPRelax.so PGauss 4 (rate)
|
||||
TFieldCos fun3 fun4 (phase frequency)
|
||||
+
|
||||
asymmetry fun2
|
||||
userFcn libPRelax.so PExp 7 (rate)
|
||||
TFieldCos fun3 fun5 (phase frequency)
|
||||
|
||||
###############################################################
|
||||
FUNCTIONS
|
||||
fun1 = par3 * map1
|
||||
fun2 = par6 * map1
|
||||
fun3 = par1 + map2
|
||||
fun4 = par2 * gamma_mu
|
||||
fun5 = par5 * gamma_mu
|
||||
|
||||
###############################################################
|
||||
RUN data/lem10_his_1951 MUE4 PSI ROOT-NPP (name beamline institute data-file-format)
|
||||
fittype 0 (single histogram fit)
|
||||
norm 8
|
||||
backgr.fit 9
|
||||
lifetimecorrection
|
||||
map 14 15 0 0 0 0 0 0 0 0
|
||||
forward 1
|
||||
background 65000 66500
|
||||
data 3289 63000
|
||||
fit 0.15 8
|
||||
packing 200
|
||||
|
||||
RUN data/lem10_his_1951 MUE4 PSI ROOT-NPP (name beamline institute data-file-format)
|
||||
fittype 0 (single histogram fit)
|
||||
norm 10
|
||||
backgr.fit 11
|
||||
lifetimecorrection
|
||||
map 12 13 0 0 0 0 0 0 0 0
|
||||
forward 3
|
||||
background 65000 66500
|
||||
data 3289 63000
|
||||
fit 0.15 8
|
||||
packing 200
|
||||
|
||||
###############################################################
|
||||
COMMANDS
|
||||
MINIMIZE
|
||||
MINOS
|
||||
SAVE
|
||||
|
||||
###############################################################
|
||||
FOURIER
|
||||
units Gauss # units either 'Gauss', 'MHz', or 'Mc/s'
|
||||
fourier_power 10
|
||||
apodization STRONG # NONE, WEAK, MEDIUM, STRONG
|
||||
plot POWER # REAL, IMAG, REAL_AND_IMAG, POWER, PHASE
|
||||
range 0 250
|
||||
|
||||
###############################################################
|
||||
PLOT 0 (single histo plot)
|
||||
runs 1 2
|
||||
range 0.00 8.00 -0.30 0.30
|
||||
|
||||
###############################################################
|
||||
STATISTIC --- 2010-11-09 20:13:52
|
||||
chisq = 401.71526823978365, NDF = 389, chisq/NDF = 1.0326870648837627
|
99
src/tests/userFcnGlobal/Makefile
Normal file
99
src/tests/userFcnGlobal/Makefile
Normal file
@ -0,0 +1,99 @@
|
||||
#---------------------------------------------------
|
||||
# Makefile
|
||||
#
|
||||
# Author: Andreas Suter
|
||||
# e-mail: andreas.suter@psi.ch
|
||||
#
|
||||
# $Id: Makefile.libPNL_PippardFitter 4314 2009-12-22 17:03:48Z l_wojek $
|
||||
#
|
||||
#---------------------------------------------------
|
||||
|
||||
#---------------------------------------------------
|
||||
# get compilation and library flags from root-config
|
||||
|
||||
ROOTCFLAGS = $(shell $(ROOTSYS)/bin/root-config --cflags)
|
||||
ROOTLIBS = $(shell $(ROOTSYS)/bin/root-config --libs)
|
||||
ROOTGLIBS = $(shell $(ROOTSYS)/bin/root-config --glibs)
|
||||
|
||||
#---------------------------------------------------
|
||||
# depending on the architecture, choose the compiler,
|
||||
# linker, and the flags to use
|
||||
#
|
||||
|
||||
OSTYPE = $(shell uname)
|
||||
|
||||
ifeq ($(OSTYPE),Linux)
|
||||
OS = LINUX
|
||||
endif
|
||||
ifeq ($(OSTYPE),Linux-gnu)
|
||||
OS = LINUX
|
||||
endif
|
||||
ifeq ($(OSTYPE),Darwin)
|
||||
OS = DARWIN
|
||||
endif
|
||||
|
||||
# -- Linux
|
||||
ifeq ($(OS),LINUX)
|
||||
CXX = g++
|
||||
CXXFLAGS = -Wall -Wno-trigraphs -fPIC
|
||||
INCLUDES = -I../include
|
||||
LD = g++
|
||||
LDFLAGS = -g
|
||||
SOFLAGS = -O -shared
|
||||
endif
|
||||
|
||||
# -- Darwin
|
||||
ifeq ($(OS),DARWIN)
|
||||
CXX = g++
|
||||
CXXFLAGS = -Wall -Wno-trigraphs -fPIC
|
||||
INCLUDES = -I../include
|
||||
LD = g++
|
||||
LDFLAGS = -g
|
||||
SOFLAGS = -dynamic
|
||||
endif
|
||||
|
||||
# the output from the root-config script:
|
||||
CXXFLAGS += $(ROOTCFLAGS)
|
||||
LDFLAGS +=
|
||||
|
||||
# the ROOT libraries (G = graphic)
|
||||
LIBS = $(ROOTLIBS) -lXMLParser
|
||||
GLIBS = $(ROOTGLIBS) -lXMLParser
|
||||
|
||||
# some definitions: headers (used to generate *Dict* stuff), sources, objects,...
|
||||
OBJS =
|
||||
OBJS += PRelax.o PRelaxDict.o
|
||||
|
||||
SHLIB = libPRelax.so
|
||||
|
||||
# make the shared lib:
|
||||
#
|
||||
all: $(SHLIB)
|
||||
|
||||
$(SHLIB): $(OBJS)
|
||||
@echo "---> Building shared library $(SHLIB) ..."
|
||||
/bin/rm -f $(SHLIB)
|
||||
$(LD) $(OBJS) $(SOFLAGS) -o $(SHLIB) $(LIBS)
|
||||
@echo "done"
|
||||
|
||||
# clean up: remove all object file (and core files)
|
||||
# semicolon needed to tell make there is no source
|
||||
# for this target!
|
||||
#
|
||||
clean:; @rm -f $(OBJS) *Dict* core*
|
||||
@echo "---> removing $(OBJS)"
|
||||
|
||||
#
|
||||
$(OBJS): %.o: %.cpp
|
||||
$(CXX) $(INCLUDES) $(CXXFLAGS) -c $<
|
||||
|
||||
PRelaxDict.cpp: PRelax.h PRelaxLinkDef.h
|
||||
@echo "Generating dictionary $@..."
|
||||
rootcint -f $@ -c -p $^
|
||||
|
||||
install: all
|
||||
@echo "Installing shared lib: libPRelax.so ( you must be root ;-) )"
|
||||
ifeq ($(OS),LINUX)
|
||||
cp -pv $(SHLIB) $(ROOTSYS)/lib
|
||||
cp -pv PRelax.h $(ROOTSYS)/include
|
||||
endif
|
338
src/tests/userFcnGlobal/PRelax.cpp
Normal file
338
src/tests/userFcnGlobal/PRelax.cpp
Normal file
@ -0,0 +1,338 @@
|
||||
/***************************************************************************
|
||||
|
||||
PRelax.cpp
|
||||
|
||||
Author: Andreas Suter
|
||||
e-mail: andreas.suter@psi.ch
|
||||
|
||||
$Id$
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007 by Andreas Suter *
|
||||
* andreas.suter@psi.c *
|
||||
* *
|
||||
* 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. *
|
||||
***************************************************************************/
|
||||
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
#include <cassert>
|
||||
#include <cstdlib>
|
||||
#include <cmath>
|
||||
|
||||
#include "PRelax.h"
|
||||
|
||||
ClassImp(PExp)
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
/**
|
||||
* <p> Constructor.
|
||||
*/
|
||||
PExp::PExp()
|
||||
{
|
||||
fValid = false;
|
||||
fInvokedGlobal = false;
|
||||
fIdxGlobal = -1;
|
||||
fGlobalUserFcn = 0;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
/**
|
||||
* <p> Destructor.
|
||||
*/
|
||||
PExp::~PExp()
|
||||
{
|
||||
if ((fGlobalUserFcn != 0) && fInvokedGlobal) {
|
||||
delete fGlobalUserFcn;
|
||||
fGlobalUserFcn = 0;
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
/**
|
||||
* <p> Used to invoke/retrieve the proper global user function
|
||||
*
|
||||
* \param globalPart reference to the global user function object vector
|
||||
* \param idx global user function index within the theory tree
|
||||
*/
|
||||
void PExp::SetGlobalPart(vector<void *> &globalPart, UInt_t idx)
|
||||
{
|
||||
fIdxGlobal = static_cast<Int_t>(idx);
|
||||
|
||||
if ((Int_t)globalPart.size() <= fIdxGlobal) { // global user function not present, invoke it
|
||||
fGlobalUserFcn = new PExpGlobal();
|
||||
if (fGlobalUserFcn == 0) { // global user function object couldn't be invoked -> error
|
||||
fValid = false;
|
||||
cerr << endl << ">> PExp::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<PExpGlobal*>(fGlobalUserFcn);
|
||||
fValid = true;
|
||||
fInvokedGlobal = true;
|
||||
}
|
||||
} else { // global user function already present hence just retrieve a pointer to it
|
||||
fValid = true;
|
||||
fGlobalUserFcn = (PExpGlobal*)globalPart[fIdxGlobal];
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
/**
|
||||
* <p> Used to check if the user function is OK.
|
||||
*
|
||||
* <b>return:</b> true if both, the user function and the global user function object are valid
|
||||
*/
|
||||
Bool_t PExp::GlobalPartIsValid() const
|
||||
{
|
||||
return (fValid && fGlobalUserFcn->IsValid());
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
/**
|
||||
* <p> user function example: global exponential
|
||||
*
|
||||
* \f[ = exp(-t \lambda) \f]
|
||||
*
|
||||
* <b>meaning of paramValues:</b> \f$\lambda\f$ depol. rate
|
||||
*
|
||||
* <b>return:</b> function value
|
||||
*
|
||||
* \param t time in \f$(\mu\mathrm{s})\f$, or x-axis value for non-muSR fit
|
||||
* \param param parameter vector
|
||||
*/
|
||||
Double_t PExp::operator()(Double_t t, const std::vector<Double_t> ¶m) const
|
||||
{
|
||||
// expected parameters: lambda
|
||||
|
||||
assert(param.size() == 1);
|
||||
assert(fGlobalUserFcn);
|
||||
|
||||
// call the global user function object
|
||||
fGlobalUserFcn->Calc(param);
|
||||
|
||||
return exp(-t*param[0]);
|
||||
}
|
||||
|
||||
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
ClassImp(PExpGlobal)
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
/**
|
||||
* <p> Constructor
|
||||
*/
|
||||
PExpGlobal::PExpGlobal()
|
||||
{
|
||||
fValid = true;
|
||||
fRandom = 0.0;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
/**
|
||||
* <p> Destructor
|
||||
*/
|
||||
PExpGlobal::~PExpGlobal()
|
||||
{
|
||||
fPrevParam.clear();
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
/**
|
||||
* <p> Check if the parameter vector has changed to the previous one, and if so,
|
||||
* do some global user function calculation (here calculate only a stupid random
|
||||
* number).
|
||||
*
|
||||
* \param param fit parameter vector
|
||||
*/
|
||||
void PExpGlobal::Calc(const std::vector<Double_t> ¶m)
|
||||
{
|
||||
// check if previous parameters where ever fed
|
||||
if (fPrevParam.size() == 0) {
|
||||
fPrevParam = param;
|
||||
fRandom = rand() / (RAND_MAX+1.0);
|
||||
cout << endl << "debug> PExpGlobal::Calc(): fRandom = " << fRandom << " (first time)";
|
||||
}
|
||||
|
||||
// check if param has changed, i.e. something needs to be done
|
||||
Bool_t newParam = false;
|
||||
for (UInt_t i=0; i<param.size(); i++) {
|
||||
if (param[i] != fPrevParam[i]) {
|
||||
newParam = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (newParam) {
|
||||
// do the global calculations (here only a stupid random number)
|
||||
fRandom = rand() / (RAND_MAX+1.0);
|
||||
// feed the previous parameter vector
|
||||
for (UInt_t i=0; i<param.size(); i++)
|
||||
fPrevParam[i] = param[i];
|
||||
}
|
||||
}
|
||||
|
||||
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
ClassImp(PGauss)
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
/**
|
||||
* <p> Constructor.
|
||||
*/
|
||||
PGauss::PGauss()
|
||||
{
|
||||
fValid = false;
|
||||
fInvokedGlobal = false;
|
||||
fIdxGlobal = -1;
|
||||
fGlobalUserFcn = 0;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
/**
|
||||
* <p> Destructor.
|
||||
*/
|
||||
PGauss::~PGauss()
|
||||
{
|
||||
if ((fGlobalUserFcn != 0) && fInvokedGlobal) {
|
||||
delete fGlobalUserFcn;
|
||||
fGlobalUserFcn = 0;
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
/**
|
||||
* <p> Used to invoke/retrieve the proper global user function
|
||||
*
|
||||
* \param globalPart reference to the global user function object vector
|
||||
* \param idx global user function index within the theory tree
|
||||
*/
|
||||
void PGauss::SetGlobalPart(vector<void *> &globalPart, UInt_t idx)
|
||||
{
|
||||
fIdxGlobal = static_cast<Int_t>(idx);
|
||||
|
||||
if ((Int_t)globalPart.size() <= fIdxGlobal) {
|
||||
fGlobalUserFcn = new PGaussGlobal();
|
||||
if (fGlobalUserFcn == 0) {
|
||||
fValid = false;
|
||||
cerr << endl << ">> PGauss::SetGlobalPart(): **ERROR** Couldn't invoke global user function object, sorry ..." << endl;
|
||||
} else {
|
||||
globalPart.resize(fIdxGlobal+1);
|
||||
globalPart[fIdxGlobal] = dynamic_cast<PGaussGlobal*>(fGlobalUserFcn);
|
||||
fValid = true;
|
||||
fInvokedGlobal = true;
|
||||
}
|
||||
} else {
|
||||
fValid = true;
|
||||
fGlobalUserFcn = (PGaussGlobal*)globalPart[fIdxGlobal];
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
/**
|
||||
* <p> Used to check if the user function is OK.
|
||||
*
|
||||
* <b>return:</b> true if both, the user function and the global user function object are valid
|
||||
*/
|
||||
Bool_t PGauss::GlobalPartIsValid() const
|
||||
{
|
||||
return (fValid && fGlobalUserFcn->IsValid());
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
/**
|
||||
* <p> user function example: global Gaussian
|
||||
*
|
||||
* \f[ = exp(-1/2 (t sigma)^2) \f]
|
||||
*
|
||||
* <b>meaning of paramValues:</b> \f$\sigma\f$ depol. rate
|
||||
*
|
||||
* <b>return:</b> function value
|
||||
*
|
||||
* \param t time in \f$(\mu\mathrm{s})\f$, or x-axis value for non-muSR fit
|
||||
* \param param parameter vector
|
||||
*/
|
||||
Double_t PGauss::operator()(Double_t t, const std::vector<Double_t> ¶m) const
|
||||
{
|
||||
// expected parameters: sigma
|
||||
|
||||
assert(param.size() == 1);
|
||||
assert(fGlobalUserFcn);
|
||||
|
||||
fGlobalUserFcn->Calc(param);
|
||||
|
||||
return exp(-0.5*pow(t*param[0],2.0));
|
||||
}
|
||||
|
||||
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
ClassImp(PGaussGlobal)
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
/**
|
||||
* <p> Constructor
|
||||
*/
|
||||
PGaussGlobal::PGaussGlobal()
|
||||
{
|
||||
fValid = true;
|
||||
fRandom = 0.0;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
/**
|
||||
* <p> Destructor
|
||||
*/
|
||||
PGaussGlobal::~PGaussGlobal()
|
||||
{
|
||||
fPrevParam.clear();
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
/**
|
||||
* <p> Check if the parameter vector has changed to the previous one, and if so,
|
||||
* do some global user function calculation (here calculate only a stupid random
|
||||
* number).
|
||||
*
|
||||
* \param param fit parameter vector
|
||||
*/
|
||||
void PGaussGlobal::Calc(const std::vector<Double_t> ¶m)
|
||||
{
|
||||
// check if previous parameters where ever fed
|
||||
if (fPrevParam.size() == 0) {
|
||||
fPrevParam = param;
|
||||
fRandom = rand() / (RAND_MAX+1.0);
|
||||
cout << endl << "debug> PGaussGlobal::Calc(): fRandom = " << fRandom << " (first time)";
|
||||
}
|
||||
|
||||
// check if param has changed, i.e. something needs to be done
|
||||
Bool_t newParam = false;
|
||||
for (UInt_t i=0; i<param.size(); i++) {
|
||||
if (param[i] != fPrevParam[i]) {
|
||||
newParam = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (newParam) {
|
||||
// do the global calculations (here only a stupid random number)
|
||||
fRandom = rand() / (RAND_MAX+1.0);
|
||||
// feed the previous parameter vector
|
||||
for (UInt_t i=0; i<param.size(); i++)
|
||||
fPrevParam[i] = param[i];
|
||||
}
|
||||
}
|
135
src/tests/userFcnGlobal/PRelax.h
Normal file
135
src/tests/userFcnGlobal/PRelax.h
Normal file
@ -0,0 +1,135 @@
|
||||
/***************************************************************************
|
||||
|
||||
PRelax.h
|
||||
|
||||
Author: Andreas Suter
|
||||
e-mail: andreas.suter@psi.ch
|
||||
|
||||
$Id$
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007 by Andreas Suter *
|
||||
* andreas.suter@psi.c *
|
||||
* *
|
||||
* 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 _PRELAX_H_
|
||||
#define _PRELAX_H_
|
||||
|
||||
#include <vector>
|
||||
#include <iostream>
|
||||
|
||||
#include "PUserFcnBase.h"
|
||||
|
||||
class PExpGlobal;
|
||||
class PGaussGlobal;
|
||||
|
||||
//-----------------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>User function example class. Global exponential function.
|
||||
*/
|
||||
class PExp : public PUserFcnBase
|
||||
{
|
||||
public:
|
||||
PExp();
|
||||
virtual ~PExp();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return true; }
|
||||
virtual void SetGlobalPart(vector<void*> &globalPart, UInt_t idx);
|
||||
virtual Bool_t GlobalPartIsValid() const;
|
||||
|
||||
Double_t operator()(Double_t t, const std::vector<Double_t> ¶m) const;
|
||||
|
||||
private:
|
||||
Bool_t fValid;
|
||||
Bool_t fInvokedGlobal;
|
||||
Int_t fIdxGlobal;
|
||||
PExpGlobal *fGlobalUserFcn;
|
||||
|
||||
ClassDef(PExp, 1)
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>User function example class (global part). Global exponential function.
|
||||
*/
|
||||
class PExpGlobal
|
||||
{
|
||||
public:
|
||||
PExpGlobal();
|
||||
virtual ~PExpGlobal();
|
||||
|
||||
Bool_t IsValid() { return fValid; }
|
||||
void Calc(const std::vector<Double_t> ¶m);
|
||||
|
||||
private:
|
||||
Bool_t fValid;
|
||||
std::vector<Double_t> fPrevParam;
|
||||
Double_t fRandom;
|
||||
|
||||
ClassDef(PExpGlobal, 1)
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>User function example class. Global Gaussian function.
|
||||
*/
|
||||
class PGauss : public PUserFcnBase
|
||||
{
|
||||
public:
|
||||
PGauss();
|
||||
virtual ~PGauss();
|
||||
|
||||
virtual Bool_t NeedGlobalPart() const { return true; }
|
||||
virtual void SetGlobalPart(vector<void*> &globalPart, UInt_t idx);
|
||||
virtual Bool_t GlobalPartIsValid() const;
|
||||
|
||||
Double_t operator()(Double_t t, const std::vector<Double_t> ¶m) const;
|
||||
|
||||
private:
|
||||
Bool_t fValid;
|
||||
Bool_t fInvokedGlobal;
|
||||
Int_t fIdxGlobal;
|
||||
PGaussGlobal *fGlobalUserFcn;
|
||||
|
||||
ClassDef(PGauss, 1)
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>User function example class (global part). Global Gaussian function.
|
||||
*/
|
||||
class PGaussGlobal
|
||||
{
|
||||
public:
|
||||
PGaussGlobal();
|
||||
virtual ~PGaussGlobal();
|
||||
|
||||
Bool_t IsValid() { return fValid; }
|
||||
void Calc(const std::vector<Double_t> ¶m);
|
||||
|
||||
private:
|
||||
Bool_t fValid;
|
||||
std::vector<Double_t> fPrevParam;
|
||||
Double_t fRandom;
|
||||
|
||||
ClassDef(PGaussGlobal, 1)
|
||||
};
|
||||
|
||||
#endif // _PRELAX_H_
|
12
src/tests/userFcnGlobal/PRelaxLinkDef.h
Normal file
12
src/tests/userFcnGlobal/PRelaxLinkDef.h
Normal file
@ -0,0 +1,12 @@
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
#pragma link off all functions;
|
||||
|
||||
#pragma link C++ class PExp+;
|
||||
#pragma link C++ class PExpGlobal+;
|
||||
#pragma link C++ class PGauss+;
|
||||
#pragma link C++ class PGaussGlobal+;
|
||||
|
||||
#endif
|
BIN
src/tests/userFcnGlobal/data/lem10_his_1951.root
Normal file
BIN
src/tests/userFcnGlobal/data/lem10_his_1951.root
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user