Added the musrfit --title-from-data-file option to msr2data (-t) and made TFitPofB compilable with g++-4.4
This commit is contained in:
@ -220,7 +220,7 @@ AC_SUBST(ROOT_CFLAGS)
|
|||||||
# It should be checked properly for -lMinuit2 -- at the moment we simply look if a header file is present in the include directory:
|
# It should be checked properly for -lMinuit2 -- at the moment we simply look if a header file is present in the include directory:
|
||||||
|
|
||||||
AC_CHECK_FILE([${ROOTINCDIR}/../include/Minuit2/MnMinimize.h], AC_MSG_RESULT([Minuit2 headers found... OK]),
|
AC_CHECK_FILE([${ROOTINCDIR}/../include/Minuit2/MnMinimize.h], AC_MSG_RESULT([Minuit2 headers found... OK]),
|
||||||
AC_MSG_ERROR([Minuit2 headers not found... Please check!]))
|
AC_MSG_WARN([Minuit2 headers not found... Please check!]))
|
||||||
|
|
||||||
|
|
||||||
dnl -----------------------------------------------
|
dnl -----------------------------------------------
|
||||||
|
@ -6,14 +6,14 @@ ROOTCFLAGS = $(shell $(ROOTSYS)/bin/root-config --cflags)
|
|||||||
#---------------------------------------------------
|
#---------------------------------------------------
|
||||||
|
|
||||||
OS = LINUX
|
OS = LINUX
|
||||||
CXX = g++-4.2.4
|
CXX = g++-4.4.0
|
||||||
CXXFLAGS = -O3 -Wall -fopenmp -Wno-trigraphs -fPIC
|
CXXFLAGS = -O3 -Wall -fopenmp -Wno-trigraphs -fPIC
|
||||||
MUSRFITINCLUDE = ../../../include
|
MUSRFITINCLUDE = ../../../include
|
||||||
#MUSRFITINCLUDE = /home/l_wojek/rep/analysis/musrfit/src/include
|
#MUSRFITINCLUDE = /home/l_wojek/rep/analysis/musrfit/src/include
|
||||||
LOCALINCLUDE = ../include
|
LOCALINCLUDE = ../include
|
||||||
ROOTINCLUDE = $(ROOTSYS)/include
|
ROOTINCLUDE = $(ROOTSYS)/include
|
||||||
INCLUDES = -I$(LOCALINCLUDE) -I$(MUSRFITINCLUDE) -I$(ROOTINCLUDE)
|
INCLUDES = -I$(LOCALINCLUDE) -I$(MUSRFITINCLUDE) -I$(ROOTINCLUDE)
|
||||||
LD = g++-4.2.4
|
LD = g++-4.4.0
|
||||||
LDFLAGS = -O3
|
LDFLAGS = -O3
|
||||||
SOFLAGS = -O3 -shared -fopenmp -lfftw3_threads -lfftw3 -lm -lpthread
|
SOFLAGS = -O3 -shared -fopenmp -lfftw3_threads -lfftw3 -lm -lpthread
|
||||||
|
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include <cstdlib>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
@ -140,7 +140,7 @@ TLondon1D3LSub::~TLondon1D3LSub() {
|
|||||||
// creates (a pointer to) the TPofTCalc object (with the FFT plan)
|
// creates (a pointer to) the TPofTCalc object (with the FFT plan)
|
||||||
//------------------
|
//------------------
|
||||||
|
|
||||||
TLondon1DHS::TLondon1DHS() : fCalcNeeded(true), fFirstCall(true), fDeadLayerChanged(true) {
|
TLondon1DHS::TLondon1DHS() : fCalcNeeded(true), fFirstCall(true) {
|
||||||
|
|
||||||
// read startup file
|
// read startup file
|
||||||
string startup_path_name("TFitPofB_startup.xml");
|
string startup_path_name("TFitPofB_startup.xml");
|
||||||
@ -618,7 +618,7 @@ TProximity1D1LHS::TProximity1D1LHS() : fCalcNeeded(true), fFirstCall(true) {
|
|||||||
fParForPofB.push_back(startupHandler->GetDeltaB());
|
fParForPofB.push_back(startupHandler->GetDeltaB());
|
||||||
fParForPofB.push_back(0.0);
|
fParForPofB.push_back(0.0);
|
||||||
fParForPofB.push_back(0.0); // Bkg-Field
|
fParForPofB.push_back(0.0); // Bkg-Field
|
||||||
fParForPofB.push_back(0.005); // Bkg-width
|
fParForPofB.push_back(0.01); // Bkg-width
|
||||||
fParForPofB.push_back(0.0); // Bkg-weight
|
fParForPofB.push_back(0.0); // Bkg-weight
|
||||||
|
|
||||||
TTrimSPData *x = new TTrimSPData(rge_path, energy_vec);
|
TTrimSPData *x = new TTrimSPData(rge_path, energy_vec);
|
||||||
@ -669,7 +669,7 @@ double TProximity1D1LHS::operator()(double t, const vector<double> &par) const {
|
|||||||
fParForBofZ.push_back(fPar[i]);
|
fParForBofZ.push_back(fPar[i]);
|
||||||
// cout << "fParForBofZ[" << i-2 << "] = " << fParForBofZ[i-2] << endl;
|
// cout << "fParForBofZ[" << i-2 << "] = " << fParForBofZ[i-2] << endl;
|
||||||
}
|
}
|
||||||
fFirstCall=false;
|
fFirstCall = false;
|
||||||
width_changed = true;
|
width_changed = true;
|
||||||
dead_layer_changed = true;
|
dead_layer_changed = true;
|
||||||
// cout << this << endl;
|
// cout << this << endl;
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
#include "TPofTCalc.h"
|
#include "TPofTCalc.h"
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
#include <cstdlib>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
@ -40,6 +40,7 @@
|
|||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
|
#include <cstdlib>
|
||||||
|
|
||||||
#include <omp.h>
|
#include <omp.h>
|
||||||
|
|
||||||
|
149
src/external/TFitPofB-lib/classes/TSkewedGss.cpp
vendored
Normal file
149
src/external/TFitPofB-lib/classes/TSkewedGss.cpp
vendored
Normal file
@ -0,0 +1,149 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
TSkewedGss.cpp
|
||||||
|
|
||||||
|
Author: Bastian M. Wojek
|
||||||
|
e-mail: bastian.wojek@psi.ch
|
||||||
|
|
||||||
|
2009/01/24
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include "TSkewedGss.h"
|
||||||
|
#include <iostream>
|
||||||
|
#include <cassert>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
#include <TSAXParser.h>
|
||||||
|
#include "TFitPofBStartupHandler.h"
|
||||||
|
|
||||||
|
ClassImp(TSkewedGss)
|
||||||
|
|
||||||
|
//------------------
|
||||||
|
// Destructor of the TSkewedGss class -- cleaning up
|
||||||
|
//------------------
|
||||||
|
|
||||||
|
TSkewedGss::~TSkewedGss() {
|
||||||
|
fPar.clear();
|
||||||
|
fParForPofB.clear();
|
||||||
|
fParForPofT.clear();
|
||||||
|
delete fPofT;
|
||||||
|
fPofT = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//------------------
|
||||||
|
// Constructor of the TSkewedGss class -- creates (a pointer to) the TPofTCalc object (with the FFT plan)
|
||||||
|
//------------------
|
||||||
|
|
||||||
|
TSkewedGss::TSkewedGss() : fCalcNeeded(true), fFirstCall(true) {
|
||||||
|
|
||||||
|
// read startup file
|
||||||
|
string startup_path_name("TFitPofB_startup.xml");
|
||||||
|
|
||||||
|
TSAXParser *saxParser = new TSAXParser();
|
||||||
|
TFitPofBStartupHandler *startupHandler = new TFitPofBStartupHandler();
|
||||||
|
saxParser->ConnectToHandler("TFitPofBStartupHandler", startupHandler);
|
||||||
|
int status (saxParser->ParseFile(startup_path_name.c_str()));
|
||||||
|
// check for parse errors
|
||||||
|
if (status) { // error
|
||||||
|
cout << endl << "**WARNING** reading/parsing TFitPofB_startup.xml failed." << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
fWisdom = startupHandler->GetWisdomFile();
|
||||||
|
|
||||||
|
fParForPofT.push_back(0.0); // phase
|
||||||
|
fParForPofT.push_back(startupHandler->GetDeltat());
|
||||||
|
fParForPofT.push_back(startupHandler->GetDeltaB());
|
||||||
|
|
||||||
|
fParForPofB.push_back(startupHandler->GetDeltat());
|
||||||
|
fParForPofB.push_back(startupHandler->GetDeltaB());
|
||||||
|
fParForPofB.push_back(0.0); // nu0
|
||||||
|
fParForPofB.push_back(0.0); // s-
|
||||||
|
fParForPofB.push_back(0.0); // s+
|
||||||
|
|
||||||
|
TPofTCalc *y = new TPofTCalc(fWisdom, fParForPofT);
|
||||||
|
fPofT = y;
|
||||||
|
y = 0;
|
||||||
|
delete y;
|
||||||
|
|
||||||
|
// clean up
|
||||||
|
if (saxParser) {
|
||||||
|
delete saxParser;
|
||||||
|
saxParser = 0;
|
||||||
|
}
|
||||||
|
if (startupHandler) {
|
||||||
|
delete startupHandler;
|
||||||
|
startupHandler = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//------------------
|
||||||
|
// TSkewedGss-Method that calls the procedures to create p(B) and P(t)
|
||||||
|
// It finally returns P(t) for a given t.
|
||||||
|
// Parameters: all the parameters for the function to be fitted through TSkewedGss (phase,freq0,sigma-,sigma+)
|
||||||
|
//------------------
|
||||||
|
|
||||||
|
double TSkewedGss::operator()(double t, const vector<double> &par) const {
|
||||||
|
|
||||||
|
assert(par.size() == 4);
|
||||||
|
|
||||||
|
if(t<0.0)
|
||||||
|
return 1.0;
|
||||||
|
|
||||||
|
// check if the function is called the first time and if yes, read in parameters
|
||||||
|
|
||||||
|
if(fFirstCall){
|
||||||
|
fPar = par;
|
||||||
|
fFirstCall=false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if any parameter has changed
|
||||||
|
|
||||||
|
bool par_changed(false);
|
||||||
|
bool only_phase_changed(false);
|
||||||
|
|
||||||
|
for (unsigned int i(0); i<fPar.size(); i++) {
|
||||||
|
if( fPar[i]-par[i] ) {
|
||||||
|
fPar[i] = par[i];
|
||||||
|
par_changed = true;
|
||||||
|
if (i == 0) {
|
||||||
|
only_phase_changed = true;
|
||||||
|
} else {
|
||||||
|
only_phase_changed = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (par_changed)
|
||||||
|
fCalcNeeded = true;
|
||||||
|
|
||||||
|
// if model parameters have changed, recalculate P(B) and P(t)
|
||||||
|
|
||||||
|
if (fCalcNeeded) {
|
||||||
|
|
||||||
|
fParForPofT[0] = par[0]; // phase
|
||||||
|
|
||||||
|
if(!only_phase_changed) {
|
||||||
|
|
||||||
|
// cout << " Parameters have changed, (re-)calculating p(B) and P(t) now..." << endl;
|
||||||
|
|
||||||
|
fParForPofB[2] = par[1]; // nu0
|
||||||
|
fParForPofB[3] = par[2]; // sigma-
|
||||||
|
fParForPofB[4] = par[3]; // sigma+
|
||||||
|
|
||||||
|
TPofBCalc PofB("skg", fParForPofB);
|
||||||
|
fPofT->DoFFT(PofB);
|
||||||
|
|
||||||
|
}/* else {
|
||||||
|
cout << "Only the phase parameter has changed, (re-)calculating P(t) now..." << endl;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
fPofT->CalcPol(fParForPofT);
|
||||||
|
|
||||||
|
fCalcNeeded = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return fPofT->Eval(t);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
39
src/external/TFitPofB-lib/include/TSkewedGss.h
vendored
Normal file
39
src/external/TFitPofB-lib/include/TSkewedGss.h
vendored
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
TSkewedGss.h
|
||||||
|
|
||||||
|
Author: Bastian M. Wojek
|
||||||
|
e-mail: bastian.wojek@psi.ch
|
||||||
|
|
||||||
|
2009/01/24
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _TSkewedGss_H_
|
||||||
|
#define _TSkewedGss_H_
|
||||||
|
|
||||||
|
#include "PUserFcnBase.h"
|
||||||
|
#include "TPofTCalc.h"
|
||||||
|
|
||||||
|
class TSkewedGss : public PUserFcnBase {
|
||||||
|
|
||||||
|
public:
|
||||||
|
// default constructor
|
||||||
|
TSkewedGss();
|
||||||
|
~TSkewedGss();
|
||||||
|
|
||||||
|
double operator()(double, const vector<double>&) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
mutable vector<double> fPar;
|
||||||
|
TPofTCalc *fPofT;
|
||||||
|
mutable bool fCalcNeeded;
|
||||||
|
mutable bool fFirstCall;
|
||||||
|
mutable vector<double> fParForPofT;
|
||||||
|
mutable vector<double> fParForPofB;
|
||||||
|
string fWisdom;
|
||||||
|
|
||||||
|
ClassDef(TSkewedGss,1)
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif //_TSkewedGss_H_
|
20
src/external/scripts/msr2data
vendored
20
src/external/scripts/msr2data
vendored
@ -11,11 +11,11 @@ if [ "$#" -lt 2 ] ; then
|
|||||||
|
|
||||||
"musrfit-msr to db/dat converter"
|
"musrfit-msr to db/dat converter"
|
||||||
|
|
||||||
USAGE: msr2data FIRSTRUN# LASTRUN# EXTENSION [noheader | nosummary | fit-TEMPLATERUN# | -oOUTPUT_FILE | -k | data ]
|
USAGE: msr2data FIRSTRUN# LASTRUN# EXTENSION [noheader | nosummary | fit-TEMPLATERUN# | -oOUTPUT_FILE | -k | -t | data ]
|
||||||
OR
|
OR
|
||||||
msr2data \[SPACE SEPARATED LIST OF RUNS\] EXTENSION [noheader | nosummary | fit-TEMPLATERUN# | -oOUTPUT_FILE | -k | data ]
|
msr2data \[SPACE SEPARATED LIST OF RUNS\] EXTENSION [noheader | nosummary | fit-TEMPLATERUN# | -oOUTPUT_FILE | -k | -t | data ]
|
||||||
OR
|
OR
|
||||||
msr2data RUNLISTFILE EXTENSION [noheader | nosummary | fit-TEMPLATERUN# | -oOUTPUT_FILE | -k | data ]
|
msr2data RUNLISTFILE EXTENSION [noheader | nosummary | fit-TEMPLATERUN# | -oOUTPUT_FILE | -k | -t | data ]
|
||||||
|
|
||||||
This small script converts subsequent musrfit msr output files into one db- or column-ASCII-file using bash/awk.
|
This small script converts subsequent musrfit msr output files into one db- or column-ASCII-file using bash/awk.
|
||||||
|
|
||||||
@ -61,6 +61,8 @@ template for the first musrfit input file. The results of the fits will be writt
|
|||||||
|
|
||||||
For keeping the MINUIT2 output files after calling musrfit, i.e. invoke musrfit with the option "--keep-mn2-output" just pass the option "-k" to msr2data. If you pass this option to msr2data but do not fit any data, the option will just be ignored.
|
For keeping the MINUIT2 output files after calling musrfit, i.e. invoke musrfit with the option "--keep-mn2-output" just pass the option "-k" to msr2data. If you pass this option to msr2data but do not fit any data, the option will just be ignored.
|
||||||
|
|
||||||
|
If musrfit should add the title present in the first data file mentioned in a RUN block to the title line of the mlog output file, pass the option "-t" to msr2data. Then musrfit is called with the option "--title-from-data-file". If you pass this option to msr2data but do not fit any data, the option will just be ignored.
|
||||||
|
|
||||||
If your musrfit output files do not have an extension as specified above like "200.msr" you have to call the script as in the following example.
|
If your musrfit output files do not have an extension as specified above like "200.msr" you have to call the script as in the following example.
|
||||||
|
|
||||||
Example 5:
|
Example 5:
|
||||||
@ -283,7 +285,15 @@ else
|
|||||||
for PAR in "$@"
|
for PAR in "$@"
|
||||||
do
|
do
|
||||||
if [ "$PAR" == "-k" ]; then
|
if [ "$PAR" == "-k" ]; then
|
||||||
MUSRFITPARAM="-k"
|
MUSRFITPARAM+=" -k"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
for PAR in "$@"
|
||||||
|
do
|
||||||
|
if [ "$PAR" == "-t" ]; then
|
||||||
|
MUSRFITPARAM+=" -t"
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@ -395,7 +405,7 @@ else
|
|||||||
if [ "${CUR_PAR:0:2}" == "-o" ]; then
|
if [ "${CUR_PAR:0:2}" == "-o" ]; then
|
||||||
if [ "$CUR_PAR" == "-o" ]; then
|
if [ "$CUR_PAR" == "-o" ]; then
|
||||||
if [ "$l" -ne "$LAST_OPT_PAR" ] && [ "$NEXT_PAR" != "noheader" ] && [ "$NEXT_PAR" != "nosummary" ] \
|
if [ "$l" -ne "$LAST_OPT_PAR" ] && [ "$NEXT_PAR" != "noheader" ] && [ "$NEXT_PAR" != "nosummary" ] \
|
||||||
&& [ "${NEXT_PAR:0:3}" != "fit" ] && [ "$NEXT_PAR" != "-k" ]; then
|
&& [ "${NEXT_PAR:0:3}" != "fit" ] && [ "$NEXT_PAR" != "-k" ] && [ "$NEXT_PAR" != "-t" ]; then
|
||||||
OUTFILE=$NEXT_PAR
|
OUTFILE=$NEXT_PAR
|
||||||
break
|
break
|
||||||
else
|
else
|
||||||
|
Reference in New Issue
Block a user