diff --git a/src/external/TFitPofB-lib/classes/TLondon1D.cpp b/src/external/TFitPofB-lib/classes/TLondon1D.cpp index 075c690a..60c153f2 100644 --- a/src/external/TFitPofB-lib/classes/TLondon1D.cpp +++ b/src/external/TFitPofB-lib/classes/TLondon1D.cpp @@ -113,6 +113,7 @@ TLondon1DHS::TLondon1DHS() : fCalcNeeded(true), fFirstCall(true) { fParForPofB.push_back(startupHandler->GetDeltat()); fParForPofB.push_back(startupHandler->GetDeltaB()); fParForPofB.push_back(0.0); +// fParForPofB.push_back(0.0); TTrimSPData *x = new TTrimSPData(rge_path, energy_vec); fImpProfile = x; @@ -196,6 +197,7 @@ double TLondon1DHS::operator()(double t, const vector &par) const { fParForBofZ[i-2] = par[i]; fParForPofB[2] = par[1]; // energy +// fParForPofB[3] = par[3]; // deadlayer for convolution of field profile TLondon1D_HS BofZ(fNSteps, fParForBofZ); TPofBCalc PofB(BofZ, *fImpProfile, fParForPofB); @@ -220,7 +222,7 @@ double TLondon1DHS::operator()(double t, const vector &par) const { // creates (a pointer to) the TPofTCalc object (with the FFT plan) //------------------ -TLondon1D1L::TLondon1D1L() : fCalcNeeded(true), fFirstCall(true) { +TLondon1D1L::TLondon1D1L() : fCalcNeeded(true), fFirstCall(true), fCallCounter(0) { // read startup file string startup_path_name("TFitPofB_startup.xml"); @@ -275,6 +277,11 @@ TLondon1D1L::TLondon1D1L() : fCalcNeeded(true), fFirstCall(true) { //------------------ double TLondon1D1L::operator()(double t, const vector &par) const { + + // Debugging + // Count the number of function calls + fCallCounter++; + if(t<0.0) return 0.0; @@ -283,16 +290,16 @@ double TLondon1D1L::operator()(double t, const vector &par) const { if(fFirstCall){ fPar = par; - for (unsigned int i(0); iEval(t); @@ -414,13 +431,13 @@ double TLondon1D2L::operator()(double t, const vector &par) const { if(fFirstCall){ fPar = par; - for (unsigned int i(0); iWeightLayers(par[1], interfaces, weights); } @@ -559,13 +576,13 @@ double TLondon1D3L::operator()(double t, const vector &par) const { if(fFirstCall){ fPar = par; - for (unsigned int i(0); iWeightLayers(par[1], interfaces, weights); } @@ -719,13 +736,13 @@ double TLondon1D3LS::operator()(double t, const vector &par) const { if(fFirstCall){ fPar = par; - for (unsigned int i(0); iWeightLayers(par[1], interfaces, weights); } diff --git a/src/external/TFitPofB-lib/classes/TPofBCalc.cpp b/src/external/TFitPofB-lib/classes/TPofBCalc.cpp index f672e91d..0f63063c 100644 --- a/src/external/TFitPofB-lib/classes/TPofBCalc.cpp +++ b/src/external/TFitPofB-lib/classes/TPofBCalc.cpp @@ -5,11 +5,11 @@ Author: Bastian M. Wojek e-mail: bastian.wojek@psi.ch - 2008/06/03 + 2008/09/04 ***************************************************************************/ -#include "TPofBCalc.h" +#include "TPofTCalc.h" #include #include #include @@ -17,14 +17,14 @@ /* USED FOR DEBUGGING----------------------------------- #include #include --------------------------------------------------------*/ +/-------------------------------------------------------*/ //----------- // Constructor that does the P(B) calculation for given B(z) and n(z) // Parameters: dt[us], dB[G], Energy[keV] //----------- -TPofBCalc::TPofBCalc( const TBofZCalc &BofZ, const TTrimSPData &dataTrimSP, const vector ¶ ) { +TPofBCalc::TPofBCalc( const TBofZCalc &BofZ, const TTrimSPData &dataTrimSP, const vector ¶ ) : fDT(para[0]), fDB(para[1]) { fBmin = BofZ.GetBmin(); fBmax = BofZ.GetBmax(); @@ -34,7 +34,7 @@ TPofBCalc::TPofBCalc( const TBofZCalc &BofZ, const TTrimSPData &dataTrimSP, cons // fill not used Bs before Bmin with 0.0 - for ( BB = 0.0 ; BB < fBmin ; BB += para[1] ) { + for ( BB = 0.0 ; BB < fBmin ; BB += fDB ) { fB.push_back(BB); fPB.push_back(0.0); } @@ -69,23 +69,43 @@ TPofBCalc::TPofBCalc( const TBofZCalc &BofZ, const TTrimSPData &dataTrimSP, cons char debugfile1[50]; int n1 = sprintf (debugfile1, "test_NZ_%ld_%f.dat", seconds, para[2]); + char debugfile2[50]; + int n2 = sprintf (debugfile2, "test_NZgss_%ld_%f.dat", seconds, para[2]); + if (n1 > 0) { ofstream of1(debugfile1); // assure(of1, debugfile1); + dataTrimSP.Normalize(para[2]); + for (unsigned int i(0); i 0) { + ofstream of2(debugfile2); +// assure(of1, debugfile1); + + dataTrimSP.ConvolveGss(10.0,para[2]); + dataTrimSP.Normalize(para[2]); + + for (unsigned int i(0); i z, nz, gss; + double nn; + + for(unsigned int i(0); i fParForPofB; string fWisdom; unsigned int fNSteps; + mutable unsigned int fCallCounter; ClassDef(TLondon1D1L,1) }; @@ -66,7 +67,7 @@ private: class TLondon1D2L : public PUserFcnBase { public: - // default conctructor + // default constructor TLondon1D2L(); ~TLondon1D2L(); @@ -91,7 +92,7 @@ private: class TLondon1D3L : public PUserFcnBase { public: - // default conctructor + // default constructor TLondon1D3L(); ~TLondon1D3L(); @@ -117,7 +118,7 @@ private: class TLondon1D3LS : public PUserFcnBase { public: - // default conctructor + // default constructor TLondon1D3LS(); ~TLondon1D3LS(); diff --git a/src/external/TFitPofB-lib/include/TPofBCalc.h b/src/external/TFitPofB-lib/include/TPofBCalc.h index e59e41c8..9d256605 100644 --- a/src/external/TFitPofB-lib/include/TPofBCalc.h +++ b/src/external/TFitPofB-lib/include/TPofBCalc.h @@ -5,7 +5,7 @@ Author: Bastian M. Wojek e-mail: bastian.wojek@psi.ch - 2008/05/25 + 2008/09/04 ***************************************************************************/ @@ -31,13 +31,15 @@ public: vector DataPB() const {return fPB;} double GetBmin() const {return fBmin;} double GetBmax() const {return fBmax;} + void ConvolveGss(double); private: vector fB; vector fPB; double fBmin; double fBmax; - + double fDT; + double fDB; }; #endif // _TPofBCalc_H_ diff --git a/src/external/TFitPofB-lib/include/TTrimSPDataHandler.h b/src/external/TFitPofB-lib/include/TTrimSPDataHandler.h index 8289596d..c87e7f65 100644 --- a/src/external/TFitPofB-lib/include/TTrimSPDataHandler.h +++ b/src/external/TFitPofB-lib/include/TTrimSPDataHandler.h @@ -5,7 +5,7 @@ Author: Bastian M. Wojek e-mail: bastian.wojek@psi.ch - 2008/05/26 + 2008/09/02 ***************************************************************************/ @@ -33,8 +33,9 @@ public: vector OrigDataNZ(double) const; void WeightLayers(double, const vector&, const vector&) const; double GetNofZ(double, double) const; - void Normalize(double); + void Normalize(double) const; bool IsNormalized(double) const; + void ConvolveGss(double, double) const; private: vector fEnergy; diff --git a/src/external/TFitPofB-lib/test/test.cpp b/src/external/TFitPofB-lib/test/test.cpp index 20b17fb9..5b1ff431 100644 --- a/src/external/TFitPofB-lib/test/test.cpp +++ b/src/external/TFitPofB-lib/test/test.cpp @@ -5,41 +5,105 @@ using namespace std; int main(){ -/* string rge_path("/home/l_wojek/nt/wojek/g/Bastian/ImplantationDepth/YBCO_PBCO-"); - string energy_arr[] = {"02_1", "02_5", "03_5", "05_0", "07_5", "10_0", "12_5", "15_0", "17_5", "19_0", "20_0", "22_5", "25_0"}; - + string rge_path("/home/l_wojek/TrimSP/YBCOxtal/YBCOxtal-500000-"); + string energy_arr[] = {"03_0", "03_6", "05_0", "05_3", "07_0", "07_7", "08_0", "09_0", "10_0", "10_2", "12_0", "14_1", "16_0", "16_4", "18_0", "19_7", "20_0", "22_0", "24_0", "24_6"}; + vector energy_vec(energy_arr, energy_arr+(sizeof(energy_arr)/sizeof(energy_arr[0]))); TTrimSPData calcData(rge_path, energy_vec); - vector energies(calcData.Energy()); +/* vector energies(calcData.Energy()); for (unsigned int i(0); i z(calcData.DataZ(2.5)); - vector nz(calcData.DataNZ(2.5)); - - vector z2(calcData.DataZ(25.0)); - vector nz2(calcData.DataNZ(25.0)); - - ofstream of("test_out1.dat"); +*/ + calcData.Normalize(22.0); + + vector z(calcData.DataZ(22.0)); + vector nz(calcData.DataNZ(22.0)); + + ofstream of("Implantation-profile-normal.dat"); for (unsigned int i(0); i par_vec(par_arr, par_arr+(sizeof(par_arr)/sizeof(par_arr[0]))); - ofstream of2("test_out2.dat"); + vector parForBofZ; + for (unsigned int i(2); i parForPofB; + parForPofB.push_back(0.01); //dt + parForPofB.push_back(0.2); //dB + parForPofB.push_back(par_vec[1]); + + TLondon1D_HS BofZ(3000, parForBofZ); + + TPofBCalc PofB(BofZ, calcData, parForPofB); + + vector hurgaB(PofB.DataB()); + vector hurgaPB(PofB.DataPB()); + + ofstream of7("BpB-normal.dat"); + for (unsigned int i(0); i hurgaB1(PofB.DataB()); + vector hurgaPB1(PofB.DataPB()); + + ofstream of1("BpB-field-broad.dat"); + for (unsigned int i(0); i z2(calcData.DataZ(par_vec[1])); + vector nz2(calcData.DataNZ(par_vec[1])); + + ofstream of2("Implantation-profile-broad.dat"); for (unsigned int i(0); i hurgaB2(PofB2.DataB()); + vector hurgaPB2(PofB2.DataPB()); + ofstream of8("BpB-profile-broad.dat"); + for (unsigned int i(0); i hurgaB3(PofB2.DataB()); + vector hurgaPB3(PofB2.DataPB()); + + ofstream of9("BpB-profile+field-broad.dat"); + for (unsigned int i(0); i parameter(param,param+8); vector param_for_BofZ; @@ -97,10 +161,10 @@ int main(){ of8.close(); */ -/**************** Test TLondon1DHS *********************************/ +/**************** Test TLondon1DHS ********************************* // unsigned int parNo_arr[] = {1, 2, 5, 7, 9, 10, 11, 12}; - double par_arr[] = {20.0, 24.6, 100.0, 15.0, 140.0}; + double par_arr[] = {24.4974, 22.0, 95.8253, 7.62096, 143.215}; // vector parNo_vec(parNo_arr, parNo_arr+(sizeof(parNo_arr)/sizeof(parNo_arr[0]))); vector par_vec(par_arr, par_arr+(sizeof(par_arr)/sizeof(par_arr[0]))); @@ -113,7 +177,7 @@ int main(){ TLondon1DHS fitter; -/************************************************************************/ +************************************************************************/ /**************** Test TLondon1D1L ********************************* @@ -189,83 +253,83 @@ int main(){ ************************************************************************/ - ofstream of01("test_fitter01.dat"); - ofstream of02("test_fitter02.dat"); - ofstream of03("test_fitter03.dat"); - ofstream of04("test_fitter04.dat"); - ofstream of05("test_fitter05.dat"); - ofstream of06("test_fitter06.dat"); - ofstream of07("test_fitter07.dat"); - ofstream of08("test_fitter08.dat"); -// ofstream of09("test_fitter09.dat"); -// ofstream of10("test_fitter10.dat"); +// ofstream of01("test_fitter01.dat"); +// ofstream of02("test_fitter02.dat"); +// ofstream of03("test_fitter03.dat"); +// ofstream of04("test_fitter04.dat"); +// ofstream of05("test_fitter05.dat"); +// ofstream of06("test_fitter06.dat"); +// ofstream of07("test_fitter07.dat"); +// ofstream of08("test_fitter08.dat"); +// ofstream of09("test_fitter09.dat"); +// ofstream of10("test_fitter10.dat"); - for (double i(0.); i<12.0; i+=0.003) { - of01 << i << " " << fitter(i, par_vec) << endl; - } - of01.close(); +// for (double i(0.); i<12.0; i+=0.003) { +// of01 << i << " " << fitter(i, par_vec) << endl; +// } +// of01.close(); - par_vec[1] = 7.7; - - for (double i(0.); i<12.0; i+=0.003) { - of02 << i << " " << fitter(i, par_vec) << endl; - } - of02.close(); - - par_vec[0] = 0.0; - - for (double i(0.); i<12.0; i+=0.003) { - of03 << i << " " << fitter(i, par_vec) << endl; - } - of03.close(); - - par_vec[2] = 200.0; - - for (double i(0.); i<12.0; i+=0.003) { - of04 << i << " " << fitter(i, par_vec) << endl; - } - of04.close(); - - par_vec[4] = 100.0; - - for (double i(0.); i<12.0; i+=0.003) { - of05 << i << " " << fitter(i, par_vec) << endl; - } - of05.close(); - - par_vec[0] = 20.0; - par_vec[1] = 24.6; - par_vec[2] = 96.5; - par_vec[3] = 15.0; - par_vec[4] = 130.0; - - for (double i(0.); i<12.0; i+=0.003) { - of06 << i << " " << fitter(i, par_vec) << endl; - } - of06.close(); - - par_vec[0] = 20.0; - par_vec[1] = 24.6; - par_vec[2] = 96.5; - par_vec[3] = 15.0; - par_vec[4] = 140.0; - - for (double i(0.); i<12.0; i+=0.003) { - of07 << i << " " << fitter(i, par_vec) << endl; - } - of07.close(); - - par_vec[0] = 20.0; - par_vec[1] = 24.6; - par_vec[2] = 96.5; - par_vec[3] = 20.0; - par_vec[4] = 130.0; - - for (double i(0.); i<12.0; i+=0.003) { - of08 << i << " " << fitter(i, par_vec) << endl; - } - of08.close(); +// par_vec[1] = 7.7; +// +// for (double i(0.); i<12.0; i+=0.003) { +// of02 << i << " " << fitter(i, par_vec) << endl; +// } +// of02.close(); +// +// par_vec[0] = 0.0; +// +// for (double i(0.); i<12.0; i+=0.003) { +// of03 << i << " " << fitter(i, par_vec) << endl; +// } +// of03.close(); +// +// par_vec[2] = 200.0; +// +// for (double i(0.); i<12.0; i+=0.003) { +// of04 << i << " " << fitter(i, par_vec) << endl; +// } +// of04.close(); +// +// par_vec[4] = 100.0; +// +// for (double i(0.); i<12.0; i+=0.003) { +// of05 << i << " " << fitter(i, par_vec) << endl; +// } +// of05.close(); +// +// par_vec[0] = 20.0; +// par_vec[1] = 24.6; +// par_vec[2] = 96.5; +// par_vec[3] = 15.0; +// par_vec[4] = 130.0; +// +// for (double i(0.); i<12.0; i+=0.003) { +// of06 << i << " " << fitter(i, par_vec) << endl; +// } +// of06.close(); +// +// par_vec[0] = 20.0; +// par_vec[1] = 24.6; +// par_vec[2] = 96.5; +// par_vec[3] = 15.0; +// par_vec[4] = 140.0; +// +// for (double i(0.); i<12.0; i+=0.003) { +// of07 << i << " " << fitter(i, par_vec) << endl; +// } +// of07.close(); +// +// par_vec[0] = 20.0; +// par_vec[1] = 24.6; +// par_vec[2] = 96.5; +// par_vec[3] = 20.0; +// par_vec[4] = 130.0; +// +// for (double i(0.); i<12.0; i+=0.003) { +// of08 << i << " " << fitter(i, par_vec) << endl; +// } +// of08.close(); /* par_vec_sub[0] = 0.0; par_vec_sub[7] = 1000.0; @@ -347,7 +411,7 @@ int main(){ */ - par_vec.clear(); +// par_vec.clear();