diff --git a/numass-main/src/main/groovy/inr/numass/LaunchGrindShell.groovy b/numass-main/src/main/groovy/inr/numass/LaunchGrindShell.groovy index 9b94d86a..a96ae79d 100644 --- a/numass-main/src/main/groovy/inr/numass/LaunchGrindShell.groovy +++ b/numass-main/src/main/groovy/inr/numass/LaunchGrindShell.groovy @@ -3,7 +3,7 @@ package inr.numass import hep.dataforge.context.Global import hep.dataforge.grind.GrindWorkspaceBuilder import hep.dataforge.grind.terminal.GrindTerminal -import inr.numass.workspace.* +import inr.numass.tasks.* /** * Created by darksnake on 29-Aug-16. diff --git a/numass-main/src/main/groovy/inr/numass/scripts/CountRateSummary.groovy b/numass-main/src/main/groovy/inr/numass/scripts/CountRateSummary.groovy index 984dd715..188133db 100644 --- a/numass-main/src/main/groovy/inr/numass/scripts/CountRateSummary.groovy +++ b/numass-main/src/main/groovy/inr/numass/scripts/CountRateSummary.groovy @@ -2,7 +2,7 @@ package inr.numass.scripts import hep.dataforge.grind.GrindWorkspaceBuilder import hep.dataforge.tables.Table -import inr.numass.workspace.* +import inr.numass.tasks.* /** * Created by darksnake on 26-Dec-16. diff --git a/numass-main/src/main/java/inr/numass/NumassPlugin.java b/numass-main/src/main/java/inr/numass/NumassPlugin.java index 61b48804..1a2cf8d4 100644 --- a/numass-main/src/main/java/inr/numass/NumassPlugin.java +++ b/numass-main/src/main/java/inr/numass/NumassPlugin.java @@ -81,7 +81,7 @@ public class NumassPlugin extends BasicPlugin { ActionManager actions = ActionManager.buildFrom(context); actions.register(SlicingAction.class); actions.register(PrepareDataAction.class); - actions.register(ReadNumassDataAction.class); + actions.register(ReadLegacyDataAction.class); actions.register(MergeDataAction.class); actions.register(FindBorderAction.class); actions.register(MonitorCorrectAction.class); diff --git a/numass-main/src/main/java/inr/numass/actions/BuildStorageAction.java b/numass-main/src/main/java/inr/numass/actions/BuildStorageAction.java new file mode 100644 index 00000000..7921608c --- /dev/null +++ b/numass-main/src/main/java/inr/numass/actions/BuildStorageAction.java @@ -0,0 +1,22 @@ +package inr.numass.actions; + +import hep.dataforge.actions.OneToOneAction; +import hep.dataforge.context.Context; +import hep.dataforge.description.TypedActionDef; +import hep.dataforge.meta.Laminate; +import inr.numass.storage.NumassStorage; + +import java.net.URI; + +/** + * TODO generalize and move to dataforge-stoage + * Create a Storage from given URI object + * Created by darksnake on 29-Jan-17. + */ +@TypedActionDef(name = "buildStorage", inputType = URI.class, outputType = NumassStorage.class) +public class BuildStorageAction extends OneToOneAction { + @Override + protected NumassStorage execute(Context context, String name, URI input, Laminate inputMeta) { + return NumassStorage.buildNumassRoot(input, inputMeta.getBoolean("readOnly", true), inputMeta.getBoolean("monitor", false)); + } +} diff --git a/numass-main/src/main/java/inr/numass/actions/JoinNumassDataAction.java b/numass-main/src/main/java/inr/numass/actions/JoinNumassDataAction.java index 1fd77091..496b78c7 100644 --- a/numass-main/src/main/java/inr/numass/actions/JoinNumassDataAction.java +++ b/numass-main/src/main/java/inr/numass/actions/JoinNumassDataAction.java @@ -3,7 +3,7 @@ package inr.numass.actions; import hep.dataforge.actions.ManyToOneAction; import hep.dataforge.context.Context; import hep.dataforge.description.TypedActionDef; -import hep.dataforge.meta.Meta; +import hep.dataforge.meta.Laminate; import inr.numass.storage.NMPoint; import inr.numass.storage.NumassData; @@ -19,7 +19,7 @@ import java.util.stream.IntStream; public class JoinNumassDataAction extends ManyToOneAction { @Override - protected NumassData execute(Context context, String nodeName, Map input, Meta meta) { + protected NumassData execute(Context context, String nodeName, Map input, Laminate meta) { throw new UnsupportedOperationException("not implemented"); } 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 ac05e6c9..3afba48b 100644 --- a/numass-main/src/main/java/inr/numass/actions/MergeDataAction.java +++ b/numass-main/src/main/java/inr/numass/actions/MergeDataAction.java @@ -22,6 +22,7 @@ import hep.dataforge.data.DataNode; import hep.dataforge.description.NodeDef; import hep.dataforge.description.TypedActionDef; import hep.dataforge.io.ColumnedDataWriter; +import hep.dataforge.meta.Laminate; import hep.dataforge.meta.Meta; import hep.dataforge.tables.*; @@ -52,7 +53,7 @@ public class MergeDataAction extends ManyToOneAction { } @Override - protected Table execute(Context context, String nodeName, Map data, Meta meta) { + 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)); } diff --git a/numass-main/src/main/java/inr/numass/actions/ReadNumassDataAction.java b/numass-main/src/main/java/inr/numass/actions/ReadLegacyDataAction.java similarity index 95% rename from numass-main/src/main/java/inr/numass/actions/ReadNumassDataAction.java rename to numass-main/src/main/java/inr/numass/actions/ReadLegacyDataAction.java index ae0cc938..bb83357d 100644 --- a/numass-main/src/main/java/inr/numass/actions/ReadNumassDataAction.java +++ b/numass-main/src/main/java/inr/numass/actions/ReadLegacyDataAction.java @@ -39,7 +39,7 @@ import static inr.numass.NumassIO.getNumassData; def = "2.468555393226049", type = "NUMBER") @ValueDef(name = "noUset", info = "If 'true', then Uset = Uread") @NodeDef(name = "debunch", target = "class::inr.numass.actions.DebunchAction", info = "If given, governs debunching") -public class ReadNumassDataAction extends OneToOneAction { +public class ReadLegacyDataAction extends OneToOneAction { @Override protected NMFile execute(Context context, String name, Binary source, Laminate meta) throws ContentException { diff --git a/numass-main/src/main/java/inr/numass/actions/ReadStorageAction.java b/numass-main/src/main/java/inr/numass/actions/ReadStorageAction.java new file mode 100644 index 00000000..91e5aa86 --- /dev/null +++ b/numass-main/src/main/java/inr/numass/actions/ReadStorageAction.java @@ -0,0 +1,60 @@ +package inr.numass.actions; + +import hep.dataforge.actions.OneToManyAction; +import hep.dataforge.context.Context; +import hep.dataforge.meta.Laminate; +import hep.dataforge.meta.Meta; +import hep.dataforge.storage.api.Loader; +import inr.numass.debunch.DebunchReport; +import inr.numass.debunch.FrameAnalizer; +import inr.numass.storage.*; + +import java.util.Map; + +/** + * Created by darksnake on 29-Jan-17. + */ +public class ReadStorageAction extends OneToManyAction { + @Override + protected Map prepareMeta(Context context, String inputName, Laminate meta) { + return null; + } + + @Override + protected NumassData execute(Context context, String inputName, String outputName, NumassStorage input, Laminate meta) { + try(Loader loader = input.getLoader(outputName)) { + if (loader instanceof NumassDataLoader) { + NumassDataLoader nd = (NumassDataLoader) loader; + return buildData(context, nd, meta); + } else { + throw new RuntimeException("Numass loader expected"); + } + } catch (Exception ex){ + throw new RuntimeException(ex); + } + } + + private NumassData buildData(Context context, NumassDataLoader loader, Meta meta) { + if (meta.hasNode("debunch")) { + return loader.applyRawTransformation(rp -> debunch(context, rp, meta.getMeta("debunch"))); + } else { + return loader; + } + } + + private NMPoint debunch(Context context, RawNMPoint point, Meta meta) { + int upper = meta.getInt("upperchanel", RawNMPoint.MAX_CHANEL); + int lower = meta.getInt("lowerchanel", 0); + double rejectionprob = meta.getDouble("rejectprob", 1e-10); + double framelength = meta.getDouble("framelength", 1); + double maxCR = meta.getDouble("maxcr", 500d); + + double cr = point.selectChanels(lower, upper).getCR(); + if (cr < maxCR) { + DebunchReport report = new FrameAnalizer(rejectionprob, framelength, lower, upper).debunchPoint(point); + return new NMPoint(report.getPoint()); + } else { + return new NMPoint(point); + } + } +} diff --git a/numass-main/src/main/java/inr/numass/actions/SummaryAction.java b/numass-main/src/main/java/inr/numass/actions/SummaryAction.java index 154d4dd2..ae5e338c 100644 --- a/numass-main/src/main/java/inr/numass/actions/SummaryAction.java +++ b/numass-main/src/main/java/inr/numass/actions/SummaryAction.java @@ -22,6 +22,7 @@ import hep.dataforge.data.DataNode; import hep.dataforge.description.TypedActionDef; import hep.dataforge.description.ValueDef; import hep.dataforge.io.ColumnedDataWriter; +import hep.dataforge.meta.Laminate; import hep.dataforge.meta.Meta; import hep.dataforge.stat.fit.FitState; import hep.dataforge.tables.*; @@ -55,7 +56,7 @@ public class SummaryAction extends ManyToOneAction { } @Override - protected Table execute(Context context,String nodeName, Map input, Meta meta) { + protected Table execute(Context context, String nodeName, Map input, Laminate meta) { String[] parNames; if (meta.hasValue("parnames")) { parNames = meta.getStringArray("parnames"); diff --git a/numass-main/src/main/java/inr/numass/workspace/NumassFitScanSummaryTask.java b/numass-main/src/main/java/inr/numass/tasks/NumassFitScanSummaryTask.java similarity index 94% rename from numass-main/src/main/java/inr/numass/workspace/NumassFitScanSummaryTask.java rename to numass-main/src/main/java/inr/numass/tasks/NumassFitScanSummaryTask.java index 3eb99071..896c0443 100644 --- a/numass-main/src/main/java/inr/numass/workspace/NumassFitScanSummaryTask.java +++ b/numass-main/src/main/java/inr/numass/tasks/NumassFitScanSummaryTask.java @@ -3,7 +3,7 @@ * To change this template file, choose Tools | Templates * and open the template in the editor. */ -package inr.numass.workspace; +package inr.numass.tasks; import hep.dataforge.actions.Action; import hep.dataforge.actions.ManyToOneAction; @@ -12,7 +12,7 @@ import hep.dataforge.data.DataNode; import hep.dataforge.data.DataSet; import hep.dataforge.description.TypedActionDef; import hep.dataforge.io.ColumnedDataWriter; -import hep.dataforge.meta.Meta; +import hep.dataforge.meta.Laminate; import hep.dataforge.stat.fit.FitState; import hep.dataforge.stat.fit.ParamSet; import hep.dataforge.stat.fit.UpperLimitGenerator; @@ -57,7 +57,7 @@ public class NumassFitScanSummaryTask extends AbstractTask { private class FitSummaryAction extends ManyToOneAction { @Override - protected Table execute(Context context, String nodeName, Map input, Meta meta) { + protected Table execute(Context context, String nodeName, Map input, Laminate meta) { ListTable.Builder builder = new ListTable.Builder("msterile2", "U2", "U2err", "U2limit", "E0", "trap"); input.forEach((key, fitRes) -> { ParamSet pars = fitRes.getParameters(); diff --git a/numass-main/src/main/java/inr/numass/workspace/NumassFitScanTask.java b/numass-main/src/main/java/inr/numass/tasks/NumassFitScanTask.java similarity index 96% rename from numass-main/src/main/java/inr/numass/workspace/NumassFitScanTask.java rename to numass-main/src/main/java/inr/numass/tasks/NumassFitScanTask.java index 869e1891..7616e4d9 100644 --- a/numass-main/src/main/java/inr/numass/workspace/NumassFitScanTask.java +++ b/numass-main/src/main/java/inr/numass/tasks/NumassFitScanTask.java @@ -3,7 +3,7 @@ * To change this template file, choose Tools | Templates * and open the template in the editor. */ -package inr.numass.workspace; +package inr.numass.tasks; import hep.dataforge.actions.Action; import hep.dataforge.data.DataNode; diff --git a/numass-main/src/main/java/inr/numass/workspace/NumassFitSummaryTask.java b/numass-main/src/main/java/inr/numass/tasks/NumassFitSummaryTask.java similarity index 95% rename from numass-main/src/main/java/inr/numass/workspace/NumassFitSummaryTask.java rename to numass-main/src/main/java/inr/numass/tasks/NumassFitSummaryTask.java index 6fc09532..be604596 100644 --- a/numass-main/src/main/java/inr/numass/workspace/NumassFitSummaryTask.java +++ b/numass-main/src/main/java/inr/numass/tasks/NumassFitSummaryTask.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package inr.numass.workspace; +package inr.numass.tasks; import hep.dataforge.actions.Action; import hep.dataforge.data.DataNode; diff --git a/numass-main/src/main/java/inr/numass/workspace/NumassFitTask.java b/numass-main/src/main/java/inr/numass/tasks/NumassFitTask.java similarity index 95% rename from numass-main/src/main/java/inr/numass/workspace/NumassFitTask.java rename to numass-main/src/main/java/inr/numass/tasks/NumassFitTask.java index 48894607..ad6f781c 100644 --- a/numass-main/src/main/java/inr/numass/workspace/NumassFitTask.java +++ b/numass-main/src/main/java/inr/numass/tasks/NumassFitTask.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package inr.numass.workspace; +package inr.numass.tasks; import hep.dataforge.actions.Action; import hep.dataforge.actions.ActionUtils; diff --git a/numass-main/src/main/java/inr/numass/workspace/NumassPrepareTask.java b/numass-main/src/main/java/inr/numass/tasks/NumassPrepareTask.java similarity index 97% rename from numass-main/src/main/java/inr/numass/workspace/NumassPrepareTask.java rename to numass-main/src/main/java/inr/numass/tasks/NumassPrepareTask.java index 4483975a..4f00b31f 100644 --- a/numass-main/src/main/java/inr/numass/workspace/NumassPrepareTask.java +++ b/numass-main/src/main/java/inr/numass/tasks/NumassPrepareTask.java @@ -3,7 +3,7 @@ * To change this template file, choose Tools | Templates * and open the template in the editor. */ -package inr.numass.workspace; +package inr.numass.tasks; import hep.dataforge.actions.GenericAction; import hep.dataforge.context.Context; diff --git a/numass-main/src/main/java/inr/numass/workspace/NumassSubstractEmptySourceTask.java b/numass-main/src/main/java/inr/numass/tasks/NumassSubstractEmptySourceTask.java similarity index 96% rename from numass-main/src/main/java/inr/numass/workspace/NumassSubstractEmptySourceTask.java rename to numass-main/src/main/java/inr/numass/tasks/NumassSubstractEmptySourceTask.java index 5dfdef4f..240df43c 100644 --- a/numass-main/src/main/java/inr/numass/workspace/NumassSubstractEmptySourceTask.java +++ b/numass-main/src/main/java/inr/numass/tasks/NumassSubstractEmptySourceTask.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package inr.numass.workspace; +package inr.numass.tasks; import hep.dataforge.data.Data; import hep.dataforge.data.DataNode; diff --git a/numass-main/src/main/java/inr/numass/workspace/NumassTableFilterTask.java b/numass-main/src/main/java/inr/numass/tasks/NumassTableFilterTask.java similarity index 96% rename from numass-main/src/main/java/inr/numass/workspace/NumassTableFilterTask.java rename to numass-main/src/main/java/inr/numass/tasks/NumassTableFilterTask.java index 75c62128..1b98b21e 100644 --- a/numass-main/src/main/java/inr/numass/workspace/NumassTableFilterTask.java +++ b/numass-main/src/main/java/inr/numass/tasks/NumassTableFilterTask.java @@ -1,4 +1,4 @@ -package inr.numass.workspace; +package inr.numass.tasks; import hep.dataforge.actions.Action; import hep.dataforge.actions.OneToOneAction;