Multiple fixes in value representation

This commit is contained in:
Alexander Nozik 2018-05-10 19:23:39 +03:00
parent 4194422352
commit 122c71c51d
8 changed files with 36 additions and 29 deletions

View File

@ -87,7 +87,7 @@ abstract class AbstractAnalyzer @JvmOverloads constructor(private val processor:
val format = getTableFormat(config)
return ListTable.Builder(format)
.rows(set.points.map { point -> analyzePoint(point, config) })
.rows(set.points.map { point -> analyzeParent(point, config) })
.build()
}

View File

@ -22,11 +22,8 @@ import hep.dataforge.tables.Adapters.*
import hep.dataforge.values.Value
import hep.dataforge.values.ValueMap
import hep.dataforge.values.Values
import inr.numass.data.api.NumassBlock
import inr.numass.data.api.NumassEvent
import inr.numass.data.api.NumassPoint
import inr.numass.data.api.*
import inr.numass.data.api.NumassPoint.Companion.HV_KEY
import inr.numass.data.api.NumassSet
import java.util.*
import java.util.concurrent.atomic.AtomicLong
import java.util.concurrent.atomic.AtomicReference
@ -55,9 +52,11 @@ interface NumassAnalyzer {
* @param config
* @return
*/
fun analyzePoint(point: NumassPoint, config: Meta = Meta.empty()): Values {
fun analyzeParent(point: ParentBlock, config: Meta = Meta.empty()): Values {
val map = HashMap(analyze(point, config).asMap())
map[HV_KEY] = Value.of(point.voltage)
if(point is NumassPoint) {
map[HV_KEY] = Value.of(point.voltage)
}
return ValueMap(map)
}

View File

@ -26,11 +26,8 @@ import hep.dataforge.values.Value
import hep.dataforge.values.ValueMap
import hep.dataforge.values.ValueType
import hep.dataforge.values.Values
import inr.numass.data.api.NumassBlock
import inr.numass.data.api.NumassEvent
import inr.numass.data.api.NumassPoint
import inr.numass.data.api.*
import inr.numass.data.api.NumassPoint.Companion.HV_KEY
import inr.numass.data.api.SignalProcessor
import java.util.*
import java.util.concurrent.atomic.AtomicLong
import java.util.stream.Stream
@ -45,8 +42,8 @@ class TimeAnalyzer @JvmOverloads constructor(private val processor: SignalProces
override fun analyze(block: NumassBlock, config: Meta): Values {
//In case points inside points
if (block is NumassPoint) {
return analyzePoint(block, config)
if (block is ParentBlock) {
return analyzeParent(block, config)
}
@ -81,7 +78,7 @@ class TimeAnalyzer @JvmOverloads constructor(private val processor: SignalProces
)
}
override fun analyzePoint(point: NumassPoint, config: Meta): Values {
override fun analyzeParent(point: ParentBlock, config: Meta): Values {
//Average count rates, do not sum events
val res = point.blocks.stream()
.filter { it.events.findAny().isPresent }// filter for empty blocks
@ -89,7 +86,9 @@ class TimeAnalyzer @JvmOverloads constructor(private val processor: SignalProces
.reduce(null) { v1, v2 -> this.combineBlockResults(v1, v2) }
val map = HashMap(res.asMap())
map[HV_KEY] = Value.of(point.voltage)
if(point is NumassPoint) {
map[HV_KEY] = Value.of(point.voltage)
}
return ValueMap(map)
}

View File

@ -5,13 +5,17 @@ import java.time.Instant
import java.util.*
import java.util.stream.Stream
interface ParentBlock: NumassBlock{
val blocks: Collection<NumassBlock>
}
/**
* A block constructed from a set of other blocks. Internal blocks are not necessary subsequent. Blocks are automatically sorted.
* Created by darksnake on 16.07.2017.
*/
class MetaBlock(blocks: Collection<NumassBlock>) : NumassBlock {
class MetaBlock(blocks: Collection<NumassBlock>) : ParentBlock {
private val blocks = TreeSet(Comparator.comparing<NumassBlock, Instant>{ it.startTime })
override val blocks = TreeSet(Comparator.comparing<NumassBlock, Instant>{ it.startTime })
init{
this.blocks.addAll(blocks)

View File

@ -14,10 +14,10 @@ import java.util.stream.Stream
/**
* Created by darksnake on 06-Jul-17.
*/
interface NumassPoint : Metoid, NumassBlock, Provider {
interface NumassPoint : Metoid, ParentBlock, Provider {
val blocks: List<NumassBlock>
override val blocks: List<NumassBlock>
/**
* Provides block with given number (starting with 0)

View File

@ -76,8 +76,8 @@ class TimeAnalyzerAction : OneToOneAction<NumassPoint, Table>() {
"showErrors" to false
"connectionType" to "step"
}.apply {
configure(inputMeta.getMetaOrEmpty("histogram"))
}.fillData(histogram)
configure(inputMeta.getMetaOrEmpty("histogram"))
}.fillData(histogram)
histPlot.add(histogramPlot)
}
@ -103,7 +103,9 @@ class TimeAnalyzerAction : OneToOneAction<NumassPoint, Table>() {
} else {
1.0
}
if(Thread.currentThread().isInterrupted){
throw InterruptedException()
}
statPlot.append(
Adapters.buildXYDataPoint(
t / 1000.0,

View File

@ -19,19 +19,20 @@ fun main(args: Array<String>) {
dataDir = "D:\\Work\\Numass\\data\\2018_04"
}
val storage = NumassStorageFactory.buildLocal(context, "Fill_2", true, false);
val storage = NumassStorageFactory.buildLocal(context, "Fill_3", true, false);
val meta = buildMeta {
"binNum" to 200
"t0Step" to 100
node("window") {
"lo" to 0
"lo" to 500
"up" to 4000
}
"plot.showErrors" to false
//"plot.showErrors" to false
}
//def sets = ((2..14) + (22..31)).collect { "set_$it" }
val sets = (2..14).map { "set_$it" }
val sets = (13..14).map { "set_$it" }
//def sets = (16..31).collect { "set_$it" }
//def sets = (20..28).collect { "set_$it" }
@ -39,7 +40,7 @@ fun main(args: Array<String>) {
storage.provide("loader::$set", NumassSet::class.java).orElse(null)
}.filter { it != null }
val hvs = listOf(14000.0, 14200.0, 14600.0, 14800.0)//, 15000d, 15200d, 15400d, 15600d, 15800d]
val hvs = listOf(12000.0, 13000.0, 14000.0, 15000.0)//, 15000d, 15200d, 15400d, 15600d, 15800d]
val all = NumassDataUtils.join("sum", loaders)
@ -60,7 +61,9 @@ fun main(args: Array<String>) {
val result = TimeAnalyzerAction().run(context, data, meta);
result.computeAll();
result.nodeGoal().run()
readLine()
println("Canceling task")
result.nodeGoal().cancel()
}

View File

@ -87,7 +87,7 @@ val monitorTableTask = task("monitor") {
data.values.stream().parallel()
.flatMap { it.points.stream() }
.filter { it.voltage == monitorVoltage }
.map { it -> analyzer.analyzePoint(it, analyzerMeta) }
.map { it -> analyzer.analyzeParent(it, analyzerMeta) }
).build()
if (meta.getBoolean("showPlot", true)) {