diff --git a/numass-main/src/main/java/inr/numass/actions/MergeDataAction.java b/numass-main/src/main/java/inr/numass/actions/MergeDataAction.java
index e6f2ac6f..af0ae444 100644
--- a/numass-main/src/main/java/inr/numass/actions/MergeDataAction.java
+++ b/numass-main/src/main/java/inr/numass/actions/MergeDataAction.java
@@ -25,6 +25,8 @@ import hep.dataforge.meta.Laminate;
import hep.dataforge.meta.Meta;
import hep.dataforge.tables.*;
import hep.dataforge.values.Values;
+import inr.numass.data.api.NumassAnalyzer;
+import inr.numass.data.api.NumassPoint;
import inr.numass.utils.NumassUtils;
import java.util.*;
@@ -37,7 +39,7 @@ import java.util.*;
public class MergeDataAction extends ManyToOneAction
{
public static final String MERGE_NAME = "mergeName";
- public static String[] parnames = {"Uset", "Uread", "Length", "Total", "Window", "CR", "CRerr"};
+ public static String[] parnames = {NumassPoint.HV_KEY, NumassPoint.LENGTH_KEY, NumassAnalyzer.COUNT_KEY, NumassAnalyzer.COUNT_RATE_KEY, NumassAnalyzer.COUNT_RATE_ERROR_KEY};
@Override
@SuppressWarnings("unchecked")
@@ -54,8 +56,8 @@ public class MergeDataAction extends ManyToOneAction {
@Override
protected Table execute(Context context, String nodeName, Map data, Laminate meta) {
- Table res = mergeDataSets(nodeName, data.values());
- return new ListTable(res.getFormat(), TableTransform.sort(res, "Uset", true));
+ Table res = mergeDataSets(data.values());
+ return new ListTable(res.getFormat(), TableTransform.sort(res, NumassPoint.HV_KEY, true));
}
@Override
@@ -101,37 +103,37 @@ public class MergeDataAction extends ManyToOneAction {
//усредняем измеренное напряжение
double Uread = (dp1.getValue(parnames[1]).doubleValue() + dp2.getValue(parnames[1]).doubleValue()) / 2;
- double t1 = dp1.getValue("Length").doubleValue();
- double t2 = dp2.getValue("Length").doubleValue();
+ double t1 = dp1.getValue(NumassPoint.LENGTH_KEY).doubleValue();
+ double t2 = dp2.getValue(NumassPoint.LENGTH_KEY).doubleValue();
double time = t1 + t2;
long total = dp1.getValue(parnames[3]).intValue() + dp2.getValue(parnames[3]).intValue();
long wind = dp1.getValue(parnames[4]).intValue() + dp2.getValue(parnames[4]).intValue();
// double corr = dp1.getValue(parnames[5]).doubleValue() + dp2.getValue(parnames[5]).doubleValue();
- double cr1 = dp1.getValue("CR").doubleValue();
- double cr2 = dp2.getValue("CR").doubleValue();
+ double cr1 = dp1.getValue(NumassAnalyzer.COUNT_RATE_KEY).doubleValue();
+ double cr2 = dp2.getValue(NumassAnalyzer.COUNT_RATE_KEY).doubleValue();
double cr = (cr1 * t1 + cr2 * t2) / (t1 + t2);
- double err1 = dp1.getDouble("CRerr");
- double err2 = dp2.getDouble("CRerr");
+ double err1 = dp1.getDouble(NumassAnalyzer.COUNT_RATE_ERROR_KEY);
+ double err2 = dp2.getDouble(NumassAnalyzer.COUNT_RATE_ERROR_KEY);
// абсолютные ошибки складываются квадратично
double crErr = Math.sqrt(err1 * err1 * t1 * t1 + err2 * err2 * t2 * t2) / time;
- ValueMap.Builder map = ValueMap.of(parnames, Uset, Uread, time, total, wind, cr, crErr).builder();
+ ValueMap.Builder map = ValueMap.of(parnames, Uset, time, total, cr, crErr).builder();
- if (dp1.getNames().contains("relCR") && dp2.getNames().contains("relCR")) {
- double relCR = (dp1.getDouble("relCR") + dp2.getDouble("relCR")) / 2;
- map.putValue("relCR", relCR);
- map.putValue("relCRerr", crErr * relCR / cr);
- }
+// if (dp1.getNames().contains("relCR") && dp2.getNames().contains("relCR")) {
+// double relCR = (dp1.getDouble("relCR") + dp2.getDouble("relCR")) / 2;
+// map.putValue("relCR", relCR);
+// map.putValue("relCRerr", crErr * relCR / cr);
+// }
return map.build();
}
- private Table mergeDataSets(String name, Collection ds) {
+ private Table mergeDataSets(Collection ds) {
//Сливаем все точки в один набор данных
Map> points = new LinkedHashMap<>();
for (Table d : ds) {
@@ -155,9 +157,7 @@ public class MergeDataAction extends ManyToOneAction {
curPoint = mergeDataPoints(curPoint, newPoint);
}
return curPoint;
- }).forEach((curPoint) -> {
- res.add(curPoint);
- });
+ }).forEach(res::add);
return new ListTable(MetaTableFormat.forNames(parnames), res);
diff --git a/numass-main/src/main/java/inr/numass/tasks/NumassPrepareTask.java b/numass-main/src/main/java/inr/numass/tasks/NumassPrepareTask.java
index 7fef9eef..7562c561 100644
--- a/numass-main/src/main/java/inr/numass/tasks/NumassPrepareTask.java
+++ b/numass-main/src/main/java/inr/numass/tasks/NumassPrepareTask.java
@@ -6,6 +6,7 @@
package inr.numass.tasks;
import hep.dataforge.actions.GenericAction;
+import hep.dataforge.cache.CachePlugin;
import hep.dataforge.context.Context;
import hep.dataforge.data.DataFilter;
import hep.dataforge.data.DataNode;
@@ -55,6 +56,9 @@ public class NumassPrepareTask extends AbstractTask {
tables = runAction(new TransformDataAction(), context, tables, prepareMeta);
+ //intermediate caching
+ tables = model.getContext().getFeature(CachePlugin.class).cacheNode("prepare", prepareMeta, tables);
+
if (config.hasMeta("monitor")) {
Meta monitorMeta = config.getMeta("monitor");
tables = runAction(new MonitorCorrectAction(), context, tables, monitorMeta);