[no commit message]
This commit is contained in:
parent
73908683b8
commit
dc03dfebf8
@ -13,88 +13,91 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package inr.numass.scripts;
|
package inr.numass.scripts;
|
||||||
|
|
||||||
import hep.dataforge.context.GlobalContext;
|
import hep.dataforge.context.GlobalContext;
|
||||||
import static hep.dataforge.context.GlobalContext.out;
|
import static hep.dataforge.context.GlobalContext.out;
|
||||||
import hep.dataforge.points.ListPointSet;
|
import hep.dataforge.points.ListPointSet;
|
||||||
import hep.dataforge.datafitter.FitManager;
|
import hep.dataforge.datafitter.FitManager;
|
||||||
import hep.dataforge.datafitter.FitState;
|
import hep.dataforge.datafitter.FitState;
|
||||||
import hep.dataforge.datafitter.FitTask;
|
import hep.dataforge.datafitter.FitTask;
|
||||||
import hep.dataforge.datafitter.MINUITPlugin
|
import hep.dataforge.datafitter.MINUITPlugin
|
||||||
|
|
||||||
import hep.dataforge.datafitter.ParamSet;
|
import hep.dataforge.datafitter.ParamSet;
|
||||||
import hep.dataforge.datafitter.models.XYModel;
|
import hep.dataforge.datafitter.models.XYModel;
|
||||||
import hep.dataforge.exceptions.NamingException;
|
import hep.dataforge.exceptions.NamingException;
|
||||||
import hep.dataforge.exceptions.PackFormatException;
|
import hep.dataforge.exceptions.PackFormatException;
|
||||||
import inr.numass.data.SpectrumDataAdapter;
|
import inr.numass.data.SpectrumDataAdapter;
|
||||||
import inr.numass.data.SpectrumGenerator;
|
import inr.numass.data.SpectrumGenerator;
|
||||||
import inr.numass.models.ModularTritiumSpectrum;
|
import inr.numass.models.ModularTritiumSpectrum;
|
||||||
import inr.numass.models.NBkgSpectrum;
|
import inr.numass.models.NBkgSpectrum;
|
||||||
import inr.numass.utils.DataModelUtils;
|
import inr.numass.utils.DataModelUtils;
|
||||||
import hep.dataforge.plotfit.PlotFitResultAction;
|
import hep.dataforge.plotfit.PlotFitResultAction;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import static java.util.Locale.setDefault;
|
import static java.util.Locale.setDefault;
|
||||||
|
import inr.numass.utils.TritiumUtils;
|
||||||
/**
|
import inr.numass.data.SpectrumDataAdapter;
|
||||||
*
|
|
||||||
* @author Darksnake
|
/**
|
||||||
*/
|
*
|
||||||
|
* @author Darksnake
|
||||||
setDefault(Locale.US);
|
*/
|
||||||
new MINUITPlugin().startGlobal();
|
|
||||||
// global.loadModule(new MINUITModule());
|
setDefault(Locale.US);
|
||||||
|
new MINUITPlugin().startGlobal();
|
||||||
FitManager fm = new FitManager();
|
// global.loadModule(new MINUITModule());
|
||||||
|
|
||||||
ModularTritiumSpectrum beta = new ModularTritiumSpectrum(8.3e-5, 14390d, 19001d, null);
|
FitManager fm = new FitManager();
|
||||||
beta.setCaching(false);
|
|
||||||
|
ModularTritiumSpectrum beta = new ModularTritiumSpectrum(8.3e-5, 13990d, 18600d, null);
|
||||||
NBkgSpectrum spectrum = new NBkgSpectrum(beta);
|
//beta.setCaching(false);
|
||||||
XYModel model = new XYModel("tritium", spectrum, new SpectrumDataAdapter());
|
|
||||||
|
NBkgSpectrum spectrum = new NBkgSpectrum(beta);
|
||||||
ParamSet allPars = new ParamSet();
|
XYModel model = new XYModel("tritium", spectrum, new SpectrumDataAdapter());
|
||||||
|
|
||||||
allPars.setParValue("N", 3e5);
|
ParamSet allPars = new ParamSet();
|
||||||
//значение 6е-6 соответствует полной интенстивности 6е7 распадов в секунду
|
|
||||||
//Проблема была в переполнении счетчика событий в генераторе. Заменил на long. Возможно стоит поставить туда число с плавающей точкой
|
allPars.setParValue("N", 9e5);
|
||||||
allPars.setParError("N", 6);
|
//значение 6е-6 соответствует полной интенстивности 6е7 распадов в секунду
|
||||||
allPars.setParDomain("N", 0d, Double.POSITIVE_INFINITY);
|
//Проблема была в переполнении счетчика событий в генераторе. Заменил на long. Возможно стоит поставить туда число с плавающей точкой
|
||||||
allPars.setParValue("bkg", 2d);
|
allPars.setParError("N", 6);
|
||||||
allPars.setParError("bkg", 0.03);
|
allPars.setParDomain("N", 0d, Double.POSITIVE_INFINITY);
|
||||||
allPars.setParValue("E0", 18575.0);
|
allPars.setParValue("bkg", 2d);
|
||||||
allPars.setParError("E0", 2);
|
allPars.setParError("bkg", 0.03);
|
||||||
allPars.setParValue("mnu2", 0d);
|
allPars.setParValue("E0", 18575.0);
|
||||||
allPars.setParError("mnu2", 1d);
|
allPars.setParError("E0", 2);
|
||||||
allPars.setParValue("msterile2", 1000 * 1000);
|
allPars.setParValue("mnu2", 0d);
|
||||||
allPars.setParValue("U2", 0);
|
allPars.setParError("mnu2", 1d);
|
||||||
allPars.setParError("U2", 1e-4);
|
allPars.setParValue("msterile2", 1000 * 1000);
|
||||||
allPars.setParDomain("U2", -1d, 1d);
|
allPars.setParValue("U2", 0);
|
||||||
allPars.setParValue("X", 0);
|
allPars.setParError("U2", 1e-4);
|
||||||
allPars.setParError("X", 0.01);
|
allPars.setParDomain("U2", -1d, 1d);
|
||||||
allPars.setParDomain("X", 0d, Double.POSITIVE_INFINITY);
|
allPars.setParValue("X", 0);
|
||||||
allPars.setParValue("trap", 0);
|
allPars.setParError("X", 0.01);
|
||||||
allPars.setParError("trap", 0.01d);
|
allPars.setParDomain("X", 0d, Double.POSITIVE_INFINITY);
|
||||||
allPars.setParDomain("trap", 0d, Double.POSITIVE_INFINITY);
|
allPars.setParValue("trap", 1d);
|
||||||
|
allPars.setParError("trap", 0.01d);
|
||||||
// PrintNamed.printSpectrum(GlobalContext.out(), spectrum, allPars, 0.0, 18700.0, 600);
|
allPars.setParDomain("trap", 0d, Double.POSITIVE_INFINITY);
|
||||||
//String fileName = "d:\\PlayGround\\merge\\scans.out";
|
|
||||||
// String configName = "d:\\PlayGround\\SCAN.CFG";
|
// PrintNamed.printSpectrum(GlobalContext.out(), spectrum, allPars, 0.0, 18700.0, 600);
|
||||||
// ListPointSet config = OldDataReader.readConfig(configName);
|
//String fileName = "d:\\PlayGround\\merge\\scans.out";
|
||||||
SpectrumGenerator generator = new SpectrumGenerator(model, allPars, 12316);
|
// String configName = "d:\\PlayGround\\SCAN.CFG";
|
||||||
|
// ListPointSet config = OldDataReader.readConfig(configName);
|
||||||
ListPointSet data = generator.generateData(DataModelUtils.getUniformSpectrumConfiguration(13500d, 18200, 1e6, 60));
|
SpectrumGenerator generator = new SpectrumGenerator(model, allPars, 12316);
|
||||||
|
|
||||||
// data = data.filter("X", Value.of(15510.0), Value.of(18610.0));
|
ListPointSet data = generator.generateData(DataModelUtils.getUniformSpectrumConfiguration(14000d, 18500, 2000, 90));
|
||||||
// allPars.setParValue("X", 0.4);
|
|
||||||
FitState state = FitManager.buildState(data, model, allPars);
|
data = TritiumUtils.correctForDeadTime(data, new SpectrumDataAdapter(), 1e-8);
|
||||||
new PlotFitResultAction(GlobalContext.instance(), null).runOne(state);
|
// data = data.filter("X", Value.of(15510.0), Value.of(18610.0));
|
||||||
|
// allPars.setParValue("X", 0.4);
|
||||||
|
FitState state = new FitState(data, model, allPars);
|
||||||
FitState res = fm.runTask(state, "QOW", FitTask.TASK_RUN, "N", "bkg", "E0", "U2");
|
//new PlotFitResultAction().eval(state);
|
||||||
|
|
||||||
|
|
||||||
|
FitState res = fm.runTask(state, "QOW", FitTask.TASK_RUN, "N", "bkg", "E0", "U2", "trap");
|
||||||
res.print(out());
|
|
||||||
|
|
||||||
|
|
||||||
|
res.print(out());
|
||||||
|
|
||||||
|
@ -34,7 +34,6 @@ import static java.lang.Math.abs;
|
|||||||
*
|
*
|
||||||
* @author Darksnake
|
* @author Darksnake
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class TritiumUtils {
|
public class TritiumUtils {
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
@ -59,6 +58,9 @@ public class TritiumUtils {
|
|||||||
// return res;
|
// return res;
|
||||||
//
|
//
|
||||||
// }
|
// }
|
||||||
|
public static ListPointSet correctForDeadTime(ListPointSet data, double dtime) {
|
||||||
|
return correctForDeadTime(data, adapter(), dtime);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Коррекция на мертвое время в секундах
|
* Коррекция на мертвое время в секундах
|
||||||
@ -67,17 +69,16 @@ public class TritiumUtils {
|
|||||||
* @param dtime
|
* @param dtime
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static ListPointSet correctForDeadTime(ListPointSet data, double dtime) {
|
public static ListPointSet correctForDeadTime(ListPointSet data, SpectrumDataAdapter adapter, double dtime) {
|
||||||
SpectrumDataAdapter reader = adapter();
|
// SpectrumDataAdapter adapter = adapter();
|
||||||
ListPointSet res = new ListPointSet(data.getFormat());
|
ListPointSet res = new ListPointSet(data.getFormat());
|
||||||
for (DataPoint dp : data) {
|
for (DataPoint dp : data) {
|
||||||
double corrFactor = 1 / (1 - dtime * reader.getCount(dp) /reader.getTime(dp));
|
double corrFactor = 1 / (1 - dtime * adapter.getCount(dp) / adapter.getTime(dp));
|
||||||
res.add(reader.buildSpectrumDataPoint(reader.getX(dp).doubleValue(), (long) (reader.getCount(dp)*corrFactor),reader.getTime(dp)));
|
res.add(adapter.buildSpectrumDataPoint(adapter.getX(dp).doubleValue(), (long) (adapter.getCount(dp) * corrFactor), adapter.getTime(dp)));
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Поправка масштаба высокого.
|
* Поправка масштаба высокого.
|
||||||
*
|
*
|
||||||
@ -90,15 +91,15 @@ public class TritiumUtils {
|
|||||||
ListPointSet res = new ListPointSet(data.getFormat());
|
ListPointSet res = new ListPointSet(data.getFormat());
|
||||||
for (DataPoint dp : data) {
|
for (DataPoint dp : data) {
|
||||||
double corrFactor = 1 + beta;
|
double corrFactor = 1 + beta;
|
||||||
res.add(reader.buildSpectrumDataPoint(reader.getX(dp).doubleValue()*corrFactor, reader.getCount(dp), reader.getTime(dp)));
|
res.add(reader.buildSpectrumDataPoint(reader.getX(dp).doubleValue() * corrFactor, reader.getCount(dp), reader.getTime(dp)));
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SpectrumDataAdapter adapter(){
|
public static SpectrumDataAdapter adapter() {
|
||||||
return new SpectrumDataAdapter("Uset", "CR", "CRerr", "Time");
|
return new SpectrumDataAdapter("Uset", "CR", "CRerr", "Time");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Integral beta spectrum background with given amplitude (total count rate
|
* Integral beta spectrum background with given amplitude (total count rate
|
||||||
* from)
|
* from)
|
||||||
@ -131,5 +132,5 @@ public class TritiumUtils {
|
|||||||
double Fermi = Fn * (1.002037 - 0.001427 * ve);
|
double Fermi = Fn * (1.002037 - 0.001427 * ve);
|
||||||
double res = Fermi * pe * Etot;
|
double res = Fermi * pe * Etot;
|
||||||
return res * 1E-23;
|
return res * 1E-23;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user