Separated Input and Output management. Input moved to context
This commit is contained in:
parent
11f130d8f5
commit
a489d33548
@ -88,7 +88,7 @@ class TimeAnalyzerAction : OneToOneAction<NumassPoint, Table>() {
|
|||||||
|
|
||||||
histPlot.add(
|
histPlot.add(
|
||||||
XYFunctionPlot.plot(name + "_theory", 0.0, binSize * binNum) {
|
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)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -1,16 +1,17 @@
|
|||||||
package inr.numass.scripts.timeanalysis
|
package inr.numass.scripts.timeanalysis
|
||||||
|
|
||||||
|
import hep.dataforge.context.Global
|
||||||
import hep.dataforge.fx.plots.FXPlotManager
|
import hep.dataforge.fx.plots.FXPlotManager
|
||||||
import hep.dataforge.kodex.buildMeta
|
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 hep.dataforge.maths.chain.MarkovChain
|
||||||
import inr.numass.NumassPlugin
|
import inr.numass.NumassPlugin
|
||||||
import inr.numass.actions.TimeAnalyzerAction
|
import inr.numass.actions.TimeAnalyzerAction
|
||||||
import inr.numass.data.api.OrphanNumassEvent
|
import inr.numass.data.api.OrphanNumassEvent
|
||||||
import inr.numass.data.api.SimpleNumassPoint
|
import inr.numass.data.api.SimpleNumassPoint
|
||||||
import inr.numass.data.generateBlock
|
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.JDKRandomGenerator
|
||||||
import org.apache.commons.math3.random.RandomGenerator
|
import org.apache.commons.math3.random.RandomGenerator
|
||||||
import java.time.Instant
|
import java.time.Instant
|
||||||
@ -21,7 +22,7 @@ fun main(args: Array<String>) {
|
|||||||
|
|
||||||
val cr = 30e3
|
val cr = 30e3
|
||||||
val length = 30e9.toLong()
|
val length = 30e9.toLong()
|
||||||
val num = 4
|
val num = 2
|
||||||
val dt = 6.5
|
val dt = 6.5
|
||||||
|
|
||||||
val rnd = JDKRandomGenerator()
|
val rnd = JDKRandomGenerator()
|
||||||
@ -37,25 +38,19 @@ fun main(args: Array<String>) {
|
|||||||
|
|
||||||
val start = Instant.now()
|
val start = Instant.now()
|
||||||
|
|
||||||
//TODO make parallel
|
|
||||||
val blockChannel = produce {
|
val point = (1..num).map {
|
||||||
(1..num).forEach {
|
Global.generate {
|
||||||
send(
|
|
||||||
MarkovChain(OrphanNumassEvent(1000, 0)) { event ->
|
MarkovChain(OrphanNumassEvent(1000, 0)) { event ->
|
||||||
//val deltaT = rnd.nextDeltaTime(cr * exp(- event.timeOffset / 1e11))
|
//val deltaT = rnd.nextDeltaTime(cr * exp(- event.timeOffset / 1e11))
|
||||||
val deltaT = rnd.nextDeltaTime(cr)
|
val deltaT = rnd.nextDeltaTime(cr)
|
||||||
OrphanNumassEvent(1000, event.timeOffset + deltaT)
|
OrphanNumassEvent(1000, event.timeOffset + deltaT)
|
||||||
}.generateBlock(start.plusNanos(it * length), length)
|
}.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 {
|
val meta = buildMeta {
|
||||||
"t0" to 3000
|
"t0" to 3000
|
||||||
|
Loading…
Reference in New Issue
Block a user