From 931c880259a3e172c556b966c5aa00261f2439aa Mon Sep 17 00:00:00 2001 From: darksnake Date: Tue, 22 Nov 2016 17:02:05 +0300 Subject: [PATCH] numass analysis fix --- .../java/inr/numass/utils/TritiumUtils.java | 8 ++--- .../inr/numass/workspace/NumassFitTask.java | 2 ++ .../numass/workspace/NumassPrepareTask.java | 21 +++++++------ .../NumassSubstractEmptySourceTask.java | 30 +++++++++++-------- 4 files changed, 34 insertions(+), 27 deletions(-) diff --git a/numass-main/src/main/java/inr/numass/utils/TritiumUtils.java b/numass-main/src/main/java/inr/numass/utils/TritiumUtils.java index c039a0b4..750c7751 100644 --- a/numass-main/src/main/java/inr/numass/utils/TritiumUtils.java +++ b/numass-main/src/main/java/inr/numass/utils/TritiumUtils.java @@ -112,10 +112,10 @@ public class TritiumUtils { double res; if (deadTime > 0) { double total = p.getEventsCount(); - double time = p.getLength(); - res = wind / (1 - total * deadTime / time); -// double timeRatio = deadTime / p.getLength(); -// res = wind / total * (1d - Math.sqrt(1d - 4d * total * timeRatio)) / 2d / timeRatio; +// double time = p.getLength(); +// res = wind / (1 - total * deadTime / time); + double timeRatio = deadTime / p.getLength(); + res = wind / total * (1d - Math.sqrt(1d - 4d * total * timeRatio)) / 2d / timeRatio; } else { res = wind; } diff --git a/numass-main/src/main/java/inr/numass/workspace/NumassFitTask.java b/numass-main/src/main/java/inr/numass/workspace/NumassFitTask.java index 0cab6ac1..cc93a6b9 100644 --- a/numass-main/src/main/java/inr/numass/workspace/NumassFitTask.java +++ b/numass-main/src/main/java/inr/numass/workspace/NumassFitTask.java @@ -64,6 +64,8 @@ public class NumassFitTask extends SingleActionTask { MetaBuilder metaBuilder = new MetaBuilder(model.meta()).removeNode("fit"); if (model.meta().hasMeta("filter")) { model.dependsOn("filter", metaBuilder.build(), "prepare"); + } else if (model.meta().hasMeta("empty")) { + model.dependsOn("substractEmpty", metaBuilder.build(), "prepare"); } else { model.dependsOn("prepare", metaBuilder.build(), "prepare"); } diff --git a/numass-main/src/main/java/inr/numass/workspace/NumassPrepareTask.java b/numass-main/src/main/java/inr/numass/workspace/NumassPrepareTask.java index 4485b2e4..69120daf 100644 --- a/numass-main/src/main/java/inr/numass/workspace/NumassPrepareTask.java +++ b/numass-main/src/main/java/inr/numass/workspace/NumassPrepareTask.java @@ -12,7 +12,6 @@ import hep.dataforge.data.*; import hep.dataforge.description.DescriptorBuilder; import hep.dataforge.description.NodeDescriptor; import hep.dataforge.meta.Meta; -import hep.dataforge.meta.MetaBuilder; import hep.dataforge.meta.Template; import hep.dataforge.storage.api.Loader; import hep.dataforge.storage.commons.StorageUtils; @@ -60,9 +59,9 @@ public class NumassPrepareTask extends AbstractTask { Meta dataMeta = config.getMeta("data"); URI storageUri = input.getCheckedData("dataRoot", URI.class).get(); DataSet.Builder dataBuilder = readData(callback, context, storageUri, dataMeta); - if (config.hasMeta("empty")) { - dataBuilder.putNode("empty", readData(callback, context, storageUri, config.getMeta("empty")).build()); - } +// if (config.hasMeta("empty")) { +// dataBuilder.putNode("empty", readData(callback, context, storageUri, config.getMeta("empty")).build()); +// } DataNode data = dataBuilder.build(); @@ -80,13 +79,13 @@ public class NumassPrepareTask extends AbstractTask
{ DataTree.Builder
resultBuilder = DataTree.builder(Table.class); DataTree.Builder
tablesForMerge = new DataTree.Builder<>(tables); - //extracting empty data - if (config.hasMeta("empty")) { - DataNode
emptySourceNode = tables.getCheckedNode("empty", Table.class); - Meta emptyMergeMeta = new MetaBuilder("emptySource").setValue("mergeName", "emptySource"); - resultBuilder.putData("merge.empty", runAction(new MergeDataAction(), callback, context, emptySourceNode, emptyMergeMeta).getData()); - tablesForMerge.removeNode("empty"); - } +// //extracting empty data +// if (config.hasMeta("empty")) { +// DataNode
emptySourceNode = tables.getCheckedNode("empty", Table.class); +// Meta emptyMergeMeta = new MetaBuilder("emptySource").setValue("mergeName", "emptySource"); +// resultBuilder.putData("merge.empty", runAction(new MergeDataAction(), callback, context, emptySourceNode, emptyMergeMeta).getData()); +// tablesForMerge.removeNode("empty"); +// } config.getMetaList("merge").forEach(mergeNode -> { Meta mergeMeta = Template.compileTemplate(mergeNode, config); diff --git a/numass-main/src/main/java/inr/numass/workspace/NumassSubstractEmptySourceTask.java b/numass-main/src/main/java/inr/numass/workspace/NumassSubstractEmptySourceTask.java index 180be059..a8824388 100644 --- a/numass-main/src/main/java/inr/numass/workspace/NumassSubstractEmptySourceTask.java +++ b/numass-main/src/main/java/inr/numass/workspace/NumassSubstractEmptySourceTask.java @@ -22,6 +22,8 @@ import hep.dataforge.data.DataNode; import hep.dataforge.data.DataTree; import hep.dataforge.data.DataUtils; import hep.dataforge.io.ColumnedDataWriter; +import hep.dataforge.meta.Meta; +import hep.dataforge.meta.MetaBuilder; import hep.dataforge.tables.DataPoint; import hep.dataforge.tables.ListTable; import hep.dataforge.tables.MapPoint; @@ -45,26 +47,30 @@ public class NumassSubstractEmptySourceTask extends AbstractTask
{ protected DataNode
run(TaskModel model, ProgressCallback callback, DataNode data) { DataTree.Builder
builder = DataTree.builder(Table.class); DataNode
rootNode = data.getCheckedNode("prepare", Table.class); - Data
emptySource = rootNode.getCheckedData("merge.empty", Table.class); + Data emptySource = data.getCheckedNode("empty", Table.class).getData(); rootNode.forEachDataWithType(Table.class, input -> { - if (!input.getName().startsWith("merge.empty")) { - Data res = subtractBackground(input, emptySource); - res.getGoal().onComplete((r, err) -> { - if (r != null) { - OutputStream out = model.getContext().io().out("merge", input.getName()); - ColumnedDataWriter.writeDataSet(out, r, input.meta().toString()); - } - }); + Data res = subtractBackground(input, emptySource); + res.getGoal().onComplete((r, err) -> { + if (r != null) { + OutputStream out = model.getContext().io().out("merge", input.getName()); + ColumnedDataWriter.writeDataSet(out, r, input.meta().toString()); + } + }); - builder.putData(input.getName(), res); - } + builder.putData(input.getName(), res); }); return builder.build(); } @Override protected TaskModel transformModel(TaskModel model) { - model.dependsOn("prepare", model.meta(), "prepare"); + Meta modelMeta = model.meta(); + model.dependsOn("prepare", modelMeta, "prepare"); + MetaBuilder emptyCfg = new MetaBuilder("prepare") + .setNode(modelMeta.getMeta("prepare")) + .setNode("data", modelMeta.getMeta("empty")) + .setNode(new MetaBuilder("merge").setValue("mergeName", model.meta().getName() + ".empty")); + model.dependsOn("prepare", emptyCfg, "empty"); return model; }