Remaking descriptors

This commit is contained in:
Alexander Nozik 2018-07-03 20:29:15 +03:00
parent 464c53c465
commit d8913bb984
8 changed files with 44 additions and 18 deletions

View File

@ -146,7 +146,7 @@ class PKT8Display : DeviceDisplayFX<PKT8Device>(), PKT8ValueListener {
private val plotFrame: PlotFrame by lazy { private val plotFrame: PlotFrame by lazy {
JFreeChartFrame(plotFrameMeta).apply { JFreeChartFrame(plotFrameMeta).apply {
plots.descriptor = Descriptors.buildDescriptor(TimePlot::class.java) plots.descriptor = Descriptors.forElement(TimePlot::class.java)
PlotUtils.setXAxis(this, "timestamp", "", "time") PlotUtils.setXAxis(this, "timestamp", "", "time")
} }
} }

View File

@ -22,7 +22,7 @@ new GrindShell(ctx).eval {
def beta = new NumassBeta(); def beta = new NumassBeta();
def params = MetaMorph.morphNode(ParamSet, def params = MetaMorph.morph(ParamSet,
Grind.buildMeta("params") { Grind.buildMeta("params") {
E0(value: 18575, err: 0.1) E0(value: 18575, err: 0.1)
mnu2(value: 0, err: 0.01) mnu2(value: 0, err: 0.01)

View File

@ -2,7 +2,6 @@ package inr.numass.scripts.temp
import hep.dataforge.context.Context import hep.dataforge.context.Context
import hep.dataforge.context.Global import hep.dataforge.context.Global
import hep.dataforge.description.Descriptors
import hep.dataforge.grind.Grind import hep.dataforge.grind.Grind
import hep.dataforge.grind.GrindShell import hep.dataforge.grind.GrindShell
import hep.dataforge.grind.helpers.PlotHelper import hep.dataforge.grind.helpers.PlotHelper
@ -61,7 +60,7 @@ new GrindShell(ctx).eval {
PlotFrame frame = (plots as PlotHelper).getManager().getPlotFrame("test", "spectra") PlotFrame frame = (plots as PlotHelper).getManager().getPlotFrame("test", "spectra")
frame.plots.setDescriptor(Descriptors.buildDescriptor(DataPlot)) frame.plots.setType(DataPlot)
frame.plots.configure(showErrors: false, showSymbol: false, showLine: true, connection: "step") frame.plots.configure(showErrors: false, showSymbol: false, showLine: true, connection: "step")
joined.points.filter { it.voltage in [14000d, 15000d, 16000d, 17000d, 18000d] }.forEach { joined.points.filter { it.voltage in [14000d, 15000d, 16000d, 17000d, 18000d] }.forEach {

View File

@ -51,7 +51,7 @@ fun NumassBlock.plotAmplitudeSpectrum(plotName: String = "spectrum", frameName:
"showLine" to true "showLine" to true
"showSymbol" to false "showSymbol" to false
"showErrors" to false "showErrors" to false
}.setType(DataPlot::class) }.setType<DataPlot>()
val plot = DataPlot.plot( val plot = DataPlot.plot(
plotName, plotName,

View File

@ -60,7 +60,7 @@ fun main(args: Array<String>) {
} }
val frame = displayChart("differential").apply { val frame = displayChart("differential").apply {
this.plots.descriptor = Descriptors.buildDescriptor(DataPlot::class) this.plots.descriptor = Descriptors.forObject(DataPlot::class)
this.plots.configureValue("showLine", true) this.plots.configureValue("showLine", true)
} }

View File

@ -66,7 +66,7 @@ fun main(args: Array<String>) {
for (hv in arrayOf(14000.0, 14500.0, 15000.0, 15500.0, 16050.0)) { for (hv in arrayOf(14000.0, 14500.0, 15000.0, 15500.0, 16050.0)) {
val frame = displayChart("integral[$hv]").apply { val frame = displayChart("integral[$hv]").apply {
this.plots.descriptor = Descriptors.buildDescriptor(DataPlot::class) this.plots.descriptor = Descriptors.forObject(DataPlot::class)
this.plots.configureValue("showLine", true) this.plots.configureValue("showLine", true)
} }

View File

@ -47,7 +47,7 @@ fun main(args: Array<String>) {
val point = ProtoNumassPoint.readFile(Paths.get("D:\\Work\\Numass\\data\\2017_05_frames\\Fill_3_events\\set_33\\p36(30s)(HV1=17000).df")) val point = ProtoNumassPoint.readFile(Paths.get("D:\\Work\\Numass\\data\\2017_05_frames\\Fill_3_events\\set_33\\p36(30s)(HV1=17000).df"))
val frame = displayChart("integral").apply { val frame = displayChart("integral").apply {
this.plots.descriptor = Descriptors.buildDescriptor(DataPlot::class) this.plots.descriptor = Descriptors.forObject(DataPlot::class)
this.plots.configureValue("showLine", true) this.plots.configureValue("showLine", true)
} }

View File

@ -29,6 +29,7 @@ import hep.dataforge.stat.fit.ParamSet
import inr.numass.NumassPlugin import inr.numass.NumassPlugin
import inr.numass.models.NBkgSpectrum import inr.numass.models.NBkgSpectrum
import inr.numass.models.sterile.SterileNeutrinoSpectrum import inr.numass.models.sterile.SterileNeutrinoSpectrum
import kotlin.math.sqrt
fun main(args: Array<String>) { fun main(args: Array<String>) {
@ -46,24 +47,36 @@ fun main(args: Array<String>) {
//val model = XYModel(Meta.empty(), SpectrumAdapter(Meta.empty()), spectrum) //val model = XYModel(Meta.empty(), SpectrumAdapter(Meta.empty()), spectrum)
val params = ParamSet().apply { val params = ParamSet().apply {
setPar("N", 2e6 / 100, 6.0, 0.0, Double.POSITIVE_INFINITY) setPar("N", 8e5, 6.0, 0.0, Double.POSITIVE_INFINITY)
setPar("bkg", 2.0, 0.03) setPar("bkg", 2.0, 0.03)
setPar("E0", 18575.0, 1.0) setPar("E0", 18575.0, 1.0)
setPar("mnu2", 0.0, 1.0) setPar("mnu2", 0.0, 1.0)
setParValue("msterile2", (8000 * 8000).toDouble()) setParValue("msterile2", (1000 * 1000).toDouble())
setPar("U2", 0.0, 1e-3) setPar("U2", 0.0, 1e-3)
setPar("X", 0.1, 0.01) setPar("X", 0.1, 0.01)
setPar("trap", 1.0, 0.01) setPar("trap", 1.0, 0.01)
} }
fun plotSpectrum(name: String, vararg override: Pair<String, Double>): Plot { fun ParamSet.update(vararg override: Pair<String, Double>): ParamSet = this.copy().apply {
val pars = params.copy().apply { override.forEach {
override.forEach { setParValue(it.first, it.second)
setParValue(it.first, it.second)
}
} }
}
fun plotSpectrum(name: String, vararg override: Pair<String, Double>): Plot {
val x = (14000.0..18600.0).step(100.0).toList() val x = (14000.0..18600.0).step(100.0).toList()
val y = x.map { spectrum.value(it, pars) } val y = x.map { spectrum.value(it, params.update(*override)) }
return DataPlot.plot(name, x.toDoubleArray(), y.toDoubleArray())
}
fun plotResidual(name: String, vararg override: Pair<String, Double>): Plot {
val x = (14000.0..18600.0).step(100.0).toList()
val y = x.map {
val base = spectrum.value(it, params)
val mod = spectrum.value(it, params.update(*override))
val err = sqrt(base/1e6)
return@map (mod - base) / err
}
return DataPlot.plot(name, x.toDoubleArray(), y.toDoubleArray()) return DataPlot.plot(name, x.toDoubleArray(), y.toDoubleArray())
} }
@ -75,8 +88,22 @@ fun main(args: Array<String>) {
"showSymbol" to false "showSymbol" to false
"showErrors" to false "showErrors" to false
} }
add(plotSpectrum("base")) plots.setType<DataPlot>()
add(plotSpectrum("noTrap", "trap" to 0.0)) +plotSpectrum("base")
+plotSpectrum("noTrap", "trap" to 0.0)
}
context.plot("residuals") {
plots.configure {
"showLine" to true
"showSymbol" to false
"showErrors" to false
}
plots.setType<DataPlot>()
+plotResidual("sterile_1","U2" to 1e-3)
+plotResidual("sterile_3","msterile2" to (3000*3000).toDouble(),"U2" to 1e-3)
+plotResidual("X","X" to 0.11)
+plotResidual("trap", "trap" to 0.99)
} }
} }