From a489d335489a933998798a5f9c11685484d2adb8 Mon Sep 17 00:00:00 2001 From: Alexander Nozik Date: Thu, 17 May 2018 20:52:36 +0300 Subject: [PATCH] Separated Input and Output management. Input moved to context --- .../inr/numass/actions/TimeAnalyzerAction.kt | 2 +- .../scripts/timeanalysis/TestAnalyzer.kt | 37 ++++++++----------- 2 files changed, 17 insertions(+), 22 deletions(-) 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 5d8096ae..8e724341 100644 --- a/numass-main/src/main/kotlin/inr/numass/actions/TimeAnalyzerAction.kt +++ b/numass-main/src/main/kotlin/inr/numass/actions/TimeAnalyzerAction.kt @@ -88,7 +88,7 @@ class TimeAnalyzerAction : OneToOneAction() { histPlot.add( XYFunctionPlot.plot(name + "_theory", 0.0, binSize * binNum) { - trueCR/1e6 * initialEstimate.getInt(NumassAnalyzer.COUNT_KEY) * Math.exp( - it * trueCR / 1e6) + trueCR/1e6 * initialEstimate.getInt(NumassAnalyzer.COUNT_KEY) * binSize * Math.exp( - it * trueCR / 1e6) } ) } diff --git a/numass-main/src/main/kotlin/inr/numass/scripts/timeanalysis/TestAnalyzer.kt b/numass-main/src/main/kotlin/inr/numass/scripts/timeanalysis/TestAnalyzer.kt index 308f6659..fd14e172 100644 --- a/numass-main/src/main/kotlin/inr/numass/scripts/timeanalysis/TestAnalyzer.kt +++ b/numass-main/src/main/kotlin/inr/numass/scripts/timeanalysis/TestAnalyzer.kt @@ -1,16 +1,17 @@ package inr.numass.scripts.timeanalysis +import hep.dataforge.context.Global import hep.dataforge.fx.plots.FXPlotManager import hep.dataforge.kodex.buildMeta +import hep.dataforge.kodex.coroutineContext +import hep.dataforge.kodex.generate +import hep.dataforge.kodex.join import hep.dataforge.maths.chain.MarkovChain import inr.numass.NumassPlugin import inr.numass.actions.TimeAnalyzerAction import inr.numass.data.api.OrphanNumassEvent import inr.numass.data.api.SimpleNumassPoint import inr.numass.data.generateBlock -import kotlinx.coroutines.experimental.channels.produce -import kotlinx.coroutines.experimental.channels.toList -import kotlinx.coroutines.experimental.runBlocking import org.apache.commons.math3.random.JDKRandomGenerator import org.apache.commons.math3.random.RandomGenerator import java.time.Instant @@ -21,7 +22,7 @@ fun main(args: Array) { val cr = 30e3 val length = 30e9.toLong() - val num = 4 + val num = 2 val dt = 6.5 val rnd = JDKRandomGenerator() @@ -37,25 +38,19 @@ fun main(args: Array) { val start = Instant.now() - //TODO make parallel - val blockChannel = produce { - (1..num).forEach { - send( - MarkovChain(OrphanNumassEvent(1000, 0)) { event -> - //val deltaT = rnd.nextDeltaTime(cr * exp(- event.timeOffset / 1e11)) - val deltaT = rnd.nextDeltaTime(cr) - OrphanNumassEvent(1000, event.timeOffset + deltaT) - }.generateBlock(start.plusNanos(it * length), length) - ) + + val point = (1..num).map { + Global.generate { + MarkovChain(OrphanNumassEvent(1000, 0)) { event -> + //val deltaT = rnd.nextDeltaTime(cr * exp(- event.timeOffset / 1e11)) + val deltaT = rnd.nextDeltaTime(cr) + OrphanNumassEvent(1000, event.timeOffset + deltaT) + }.generateBlock(start.plusNanos(it * length), length) } - } + }.join(Global.coroutineContext) {blocks-> + SimpleNumassPoint(blocks, 12000.0) + }.get() - val blocks = runBlocking { - blockChannel.toList() - } - - - val point = SimpleNumassPoint(blocks, 12000.0) val meta = buildMeta { "t0" to 3000