diff --git a/numass-core/src/main/kotlin/inr/numass/data/analyzers/TimeAnalyzer.kt b/numass-core/src/main/kotlin/inr/numass/data/analyzers/TimeAnalyzer.kt index afd86191..f3caff9c 100644 --- a/numass-core/src/main/kotlin/inr/numass/data/analyzers/TimeAnalyzer.kt +++ b/numass-core/src/main/kotlin/inr/numass/data/analyzers/TimeAnalyzer.kt @@ -84,6 +84,7 @@ class TimeAnalyzer @JvmOverloads constructor(private val processor: SignalProces override fun analyzePoint(point: NumassPoint, config: Meta): Values { //Average count rates, do not sum events val res = point.blocks.stream() + .filter { it.events.findAny().isPresent }// filter for empty blocks .map { it -> analyze(it, config) } .reduce(null) { v1, v2 -> this.combineBlockResults(v1, v2) } @@ -169,10 +170,10 @@ class TimeAnalyzer @JvmOverloads constructor(private val processor: SignalProces * @return */ fun getEventsWithDelay(block: NumassBlock, config: Meta): Stream> { - val inverted = config.getBoolean("inverted",true) + val inverted = config.getBoolean("inverted", true) return super.getEvents(block, config).asSequence().zipWithNext { prev, next -> val delay = Math.max(next.timeOffset - prev.timeOffset, 0) - if(inverted){ + if (inverted) { Pair(next, delay) } else { Pair(prev, delay) diff --git a/numass-core/src/main/kotlin/inr/numass/data/api/SimpleNumassPoint.kt b/numass-core/src/main/kotlin/inr/numass/data/api/SimpleNumassPoint.kt index 4449f642..b3cda470 100644 --- a/numass-core/src/main/kotlin/inr/numass/data/api/SimpleNumassPoint.kt +++ b/numass-core/src/main/kotlin/inr/numass/data/api/SimpleNumassPoint.kt @@ -18,4 +18,10 @@ class SimpleNumassPoint(override val blocks: List, meta: Meta) : Me constructor(blocks: Collection, voltage: Double) : this(blocks.sortedBy { it.startTime }, MetaBuilder("point").setValue(NumassPoint.HV_KEY, voltage)) + init { + if(blocks.isEmpty()){ + throw IllegalArgumentException("No blocks in collection") + } + } + } diff --git a/numass-main/src/main/kotlin/inr/numass/actions/TimeAnalyzerAction.kt b/numass-main/src/main/kotlin/inr/numass/actions/TimeAnalyzerAction.kt index ac1d75f9..bb348a18 100644 --- a/numass-main/src/main/kotlin/inr/numass/actions/TimeAnalyzerAction.kt +++ b/numass-main/src/main/kotlin/inr/numass/actions/TimeAnalyzerAction.kt @@ -37,18 +37,12 @@ class TimeAnalyzerAction : OneToOneAction() { override fun execute(context: Context, name: String, input: NumassPoint, inputMeta: Laminate): Table { val log = getLog(context, name); - - //val t0 = inputMeta.getDouble("t0", 30e3); -// val loChannel = inputMeta.getInt("window.lo", 500); -// val upChannel = inputMeta.getInt("window.up", 10000); - val pm = context.get(PlotPlugin::class.java); - + val pm = context[PlotPlugin::class.java]; val trueCR = analyzer.analyze(input, inputMeta).getDouble("cr") log.report("The expected count rate for 30 us delay is $trueCR") - val binNum = inputMeta.getInt("binNum", 1000); val binSize = inputMeta.getDouble("binSize", 1.0 / trueCR * 10 / binNum * 1e6) diff --git a/numass-main/src/main/kotlin/inr/numass/scripts/timeanalysis/AnalyzePoint.kt b/numass-main/src/main/kotlin/inr/numass/scripts/timeanalysis/AnalyzePoint.kt index 3d3d2484..6b7e8db6 100644 --- a/numass-main/src/main/kotlin/inr/numass/scripts/timeanalysis/AnalyzePoint.kt +++ b/numass-main/src/main/kotlin/inr/numass/scripts/timeanalysis/AnalyzePoint.kt @@ -15,7 +15,7 @@ import inr.numass.data.storage.NumassStorageFactory fun main(args: Array) { val context = buildContext("NUMASS", NumassPlugin::class.java, FXPlotManager::class.java) { - rootDir = "D:\\Work\\Numass\\sterile\\2018_04" + rootDir = "D:\\Work\\Numass\\sterile2018_04" dataDir = "D:\\Work\\Numass\\data\\2018_04" } @@ -23,10 +23,9 @@ fun main(args: Array) { val meta = buildMeta { "binNum" to 200 - "inverted" to true node("window") { - "lo" to 500 - "up" to 3000 + "lo" to 0 + "up" to 4000 } "plot.showErrors" to false } @@ -46,15 +45,15 @@ fun main(args: Array) { val data = DataSet.edit(NumassPoint::class).apply { hvs.forEach { hv -> - putStatic( - "point_${hv.toInt()}", - SimpleNumassPoint( - all.points.filter { - it.voltage == hv - }.toList(), - hv - ) - ) + val points = all.points.filter { + it.voltage == hv + }.toList() + if (!points.isEmpty()) { + putStatic( + "point_${hv.toInt()}", + SimpleNumassPoint(points, hv) + ) + } } }.build() @@ -63,4 +62,5 @@ fun main(args: Array) { result.computeAll(); + readLine() } \ No newline at end of file