diff --git a/numass-main/build.gradle b/numass-main/build.gradle index f1fa9106..10d2db63 100644 --- a/numass-main/build.gradle +++ b/numass-main/build.gradle @@ -1,9 +1,9 @@ -apply plugin: 'application' +apply plugin: 'groovy' -if (!hasProperty('mainClass')) { - ext.mainClass = 'inr.numass.LaunchGrindShell' -} -mainClassName = mainClass +//if (!hasProperty('mainClass')) { +// ext.mainClass = 'inr.numass.LaunchGrindShell' +//} +//mainClassName = mainClass description = "Main numass project" @@ -15,28 +15,35 @@ dependencies { compile "hep.dataforge:grind-terminal" //project(':dataforge-grind:grind-terminal') } -task listActions(dependsOn: classes, type: JavaExec) { - main mainClass - args "-lc" - classpath = sourceSets.main.runtimeClasspath - description "print a list of available actions as via -lc command line parameter" - group "numass" -} - -task workspace(dependsOn: classes, type: JavaExec) { - main 'inr.numass.workspace.NumassGrindLauncher' - classpath = sourceSets.main.runtimeClasspath - args "-c \"D:\\Work\\Numass\\sterile2016\\workspace.groovy\" numass.fitsum sum_down".split() - description "Run workspace task" - group "numass" -} +//task listActions(dependsOn: classes, type: JavaExec) { +// main "inr.numass.LaunchGrindShell" +// args "-lc" +// classpath = sourceSets.main.runtimeClasspath +// description "print a list of available actions as via -lc command line parameter" +// group "numass" +//} task repl(dependsOn: classes, type: JavaExec) { + group "numass" main 'inr.numass.LaunchGrindShell' classpath = sourceSets.main.runtimeClasspath description "Start Grind repl" standardInput = System.in standardOutput = System.out - args["--config",] + if (project.hasProperty("cmd")) { + args = cmd.split().toList() + } +} + +task simulate(dependsOn: classes, type: JavaExec) { group "numass" + main 'inr.numass.scripts.Simulate' + classpath = sourceSets.main.runtimeClasspath + description "Simulate spectrum" +} + +task underflow(dependsOn: classes, type: JavaExec) { + group "numass" + main 'inr.numass.scripts.Underflow' + classpath = sourceSets.main.runtimeClasspath } \ No newline at end of file diff --git a/numass-main/src/main/groovy/inr/numass/scripts/Simulate.groovy b/numass-main/src/main/groovy/inr/numass/scripts/Simulate.groovy index 19b071d1..99078fd9 100644 --- a/numass-main/src/main/groovy/inr/numass/scripts/Simulate.groovy +++ b/numass-main/src/main/groovy/inr/numass/scripts/Simulate.groovy @@ -18,7 +18,10 @@ package inr.numass.scripts import hep.dataforge.context.Global import hep.dataforge.io.ColumnedDataWriter import hep.dataforge.meta.Meta -import hep.dataforge.stat.fit.* +import hep.dataforge.stat.fit.FitManager +import hep.dataforge.stat.fit.FitStage +import hep.dataforge.stat.fit.FitState +import hep.dataforge.stat.fit.ParamSet import hep.dataforge.stat.models.XYModel import hep.dataforge.tables.ListTable import inr.numass.NumassPlugin @@ -38,10 +41,9 @@ import static java.util.Locale.setDefault */ setDefault(Locale.US); -new MINUITPlugin().startGlobal(); new NumassPlugin().startGlobal() +FitManager fm = Global.instance().getFeature(FitManager) -FitManager fm = new FitManager(); SterileNeutrinoSpectrum sp = new SterileNeutrinoSpectrum(Global.instance(), Meta.empty()); //beta.setCaching(false); @@ -79,7 +81,7 @@ allPars.setParDomain("trap", 0d, Double.POSITIVE_INFINITY); // ListTable config = OldDataReader.readConfig(configName); SpectrumGenerator generator = new SpectrumGenerator(model, allPars, 12316); -ListTable data = generator.generateData(DataModelUtils.getUniformSpectrumConfiguration(5000d, 18500, 604800/100*100, 100)); +ListTable data = generator.generateData(DataModelUtils.getUniformSpectrumConfiguration(14000, 18500, 604800 / 100 * 100, 100)); data = TritiumUtils.correctForDeadTime(data, new SpectrumDataAdapter(), 10e-9); // data = data.filter("X", Value.of(15510.0), Value.of(18610.0)); diff --git a/numass-main/src/main/groovy/inr/numass/scripts/Underflow.groovy b/numass-main/src/main/groovy/inr/numass/scripts/Underflow.groovy index 63f349dc..75c7e0fa 100644 --- a/numass-main/src/main/groovy/inr/numass/scripts/Underflow.groovy +++ b/numass-main/src/main/groovy/inr/numass/scripts/Underflow.groovy @@ -14,15 +14,15 @@ import inr.numass.storage.NumassDataUtils import inr.numass.storage.NumassStorage import inr.numass.utils.UnderflowCorrection -File rootDir = new File("D:\\Work\\Numass\\data\\2016_10\\Fill_1") +//File rootDir = new File("D:\\Work\\Numass\\data\\2016_10\\Fill_1") //File rootDir = new File("D:\\Work\\Numass\\data\\2016_10\\Fill_2_wide") -//File rootDir = new File("D:\\Work\\Numass\\data\\2017_01\\Fill_2_wide") +File rootDir = new File("D:\\Work\\Numass\\data\\2017_01\\Fill_2_wide") NumassStorage storage = NumassStorage.buildLocalNumassRoot(rootDir, true); Collection data = NumassDataUtils.joinSpectra( StorageUtils.loaderStream(storage) - .filter { it.key.matches("set_.{2,3}") } + .filter { it.key.matches("set_.{1,3}") } .map { println "loading ${it.key}" it.value @@ -60,12 +60,10 @@ def printPoint(Iterable data, List us, int binning = 20, normalize = tr }; points.eachWithIndex { it, index -> - if (index > 0) { print "\t${it.uset}" it.getMapWithBinning(binning, normalize).each { k, v -> spectra[k].add(v) } - } } println() @@ -81,7 +79,8 @@ def printPoint(Iterable data, List us, int binning = 20, normalize = tr println "\n# spectra\n" -printPoint(data, [16200d, 16400d, 16800d, 17000d, 17200d, 17700d]) +//printPoint(data, [16200d, 16400d, 16800d, 17000d, 17200d, 17700d]) +printPoint(data, [14000d, 14500d, 15000d, 15500d, 16500d]) println() diff --git a/numass-main/src/main/java/inr/numass/NumassPlugin.java b/numass-main/src/main/java/inr/numass/NumassPlugin.java index c1b7b9f8..5600ed29 100644 --- a/numass-main/src/main/java/inr/numass/NumassPlugin.java +++ b/numass-main/src/main/java/inr/numass/NumassPlugin.java @@ -43,7 +43,7 @@ import org.apache.commons.math3.util.FastMath; * @author Alexander Nozik */ @PluginDef(group = "inr.numass", name = "numass", - dependsOn = {"hep.dataforge:actions", "hep.dataforge:math", "hep.dataforge:MINUIT"}, + dependsOn = {"hep.dataforge:math", "hep.dataforge:MINUIT"}, description = "Numass data analysis tools") public class NumassPlugin extends BasicPlugin { diff --git a/numass-storage/numass-server/build.gradle b/numass-storage/numass-server/build.gradle index c7268b7f..10e319ef 100644 --- a/numass-storage/numass-server/build.gradle +++ b/numass-storage/numass-server/build.gradle @@ -11,3 +11,12 @@ dependencies { //} +task runServer(dependsOn: classes, type: JavaExec){ + group "numass" + description "Run numass server in current directory" + main 'inr.numass.server.ServerRunner' + classpath = sourceSets.main.runtimeClasspath + workingDir "D:\\Temp\\test\\" + standardInput = System.in + standardOutput = System.out +} \ No newline at end of file diff --git a/numass-storage/numass-server/src/main/java/inr/numass/server/NumassServer.java b/numass-storage/numass-server/src/main/java/inr/numass/server/NumassServer.java index bd033746..d0609c8c 100644 --- a/numass-storage/numass-server/src/main/java/inr/numass/server/NumassServer.java +++ b/numass-storage/numass-server/src/main/java/inr/numass/server/NumassServer.java @@ -82,6 +82,7 @@ public class NumassServer extends AbstractNetworkListener { int port = meta().getInt("ratpack.port", 8336); ratpack = RatpackServer.start((RatpackServerSpec server) -> server .serverConfig((ServerConfigBuilder config) -> config +// .baseDir(Paths.get(getClass().getResource("/ratpack/.ratpack").toURI())) .findBaseDir() .address(InetAddress.getLocalHost()) .port(port)) diff --git a/numass-storage/numass-server/src/main/java/inr/numass/server/NumassServerDaemon.java b/numass-storage/numass-server/src/main/java/inr/numass/server/NumassServerDaemon.java index cfb7060f..70aa3bb4 100644 --- a/numass-storage/numass-server/src/main/java/inr/numass/server/NumassServerDaemon.java +++ b/numass-storage/numass-server/src/main/java/inr/numass/server/NumassServerDaemon.java @@ -15,102 +15,36 @@ */ package inr.numass.server; -import hep.dataforge.io.MetaFileReader; -import hep.dataforge.meta.Annotated; -import hep.dataforge.meta.Meta; -import hep.dataforge.storage.commons.StorageManager; -import hep.dataforge.storage.filestorage.FileStorage; import org.apache.commons.daemon.Daemon; import org.apache.commons.daemon.DaemonContext; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.File; +import org.apache.commons.daemon.DaemonInitException; /** * A daemon wrapper for numass server * * @author darksnake */ -public class NumassServerDaemon implements Daemon, Annotated { +public class NumassServerDaemon implements Daemon { + private ServerRunner server; - private final Logger logger = LoggerFactory.getLogger("NUMASS-SERVER"); - - public static final String SERVER_CONFIG_PATH = "numass-server.xml"; - private static final String NUMASS_REPO_ELEMENT = "numass.repository"; - private static final String LISTENER_ELEMENT = "listener"; - private static final String NUMASS_REPO_PATH_PROPERTY = "numass.repository.path"; - - Meta serverConfig; - FileStorage root; - NumassServer listener; @Override - public void destroy() { - if (root != null) { - try { - root.close(); - } catch (Exception ex) { - logger.error("Error while closing storage", ex); - } - } - } - - @Override - public Meta meta() { - if (serverConfig != null) { - return serverConfig; - } else { - return Meta.buildEmpty("numass-server"); - } - } - - @Override - public void init(DaemonContext dc) throws Exception { - logger.info("Starting numass server daemon"); - logger.info("Starting storage plugin"); - new StorageManager().startGlobal(); - - File configFile = new File(SERVER_CONFIG_PATH); - if (configFile.exists()) { - logger.info("Trying to read server configuration from {}", SERVER_CONFIG_PATH); - serverConfig = MetaFileReader.read(configFile); - } - - String repoPath = meta().getString(NUMASS_REPO_PATH_PROPERTY, "/home/numass-storage/"); - Meta repoConfig = null; - if (meta().hasMeta(NUMASS_REPO_ELEMENT)) { - repoConfig = meta().getMeta(NUMASS_REPO_ELEMENT); - } - logger.info("Initializing file storage in {}", repoPath); - root = FileStorage.in(new File(repoPath), repoConfig); -// root.toggleMonitor(true); + public void init(DaemonContext context) throws DaemonInitException, Exception { + server = new ServerRunner(); } @Override public void start() throws Exception { - logger.info("Starting numass server daemon"); - if (root != null) { - root.open(); - Meta listenerConfig = null; - if (meta().hasMeta(LISTENER_ELEMENT)) { - listenerConfig = meta().getMeta(LISTENER_ELEMENT); - } - - listener = new NumassServer(root, listenerConfig); - listener.open(); - logger.info("Sucessfully started numass server"); - } else { - logger.error("Root storage not initialized"); - } + server.start(); } @Override public void stop() throws Exception { - logger.info("Stoping numass server daemon"); - if (listener != null) { - listener.close(); - } + server.close(); } + @Override + public void destroy() { + server.close(); + } } diff --git a/numass-storage/numass-server/src/main/java/inr/numass/server/ServerRunner.java b/numass-storage/numass-server/src/main/java/inr/numass/server/ServerRunner.java new file mode 100644 index 00000000..29acf7fd --- /dev/null +++ b/numass-storage/numass-server/src/main/java/inr/numass/server/ServerRunner.java @@ -0,0 +1,99 @@ +package inr.numass.server; + +import hep.dataforge.io.MetaFileReader; +import hep.dataforge.meta.Meta; +import hep.dataforge.meta.SimpleConfigurable; +import hep.dataforge.storage.filestorage.FileStorage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStreamReader; +import java.text.ParseException; +import java.util.Objects; + +/** + * Created by darksnake on 11-Apr-17. + */ +public class ServerRunner extends SimpleConfigurable implements AutoCloseable { + public static final String SERVER_CONFIG_PATH = "numass-server.xml"; + private static final String NUMASS_REPO_ELEMENT = "numass.repository"; + private static final String LISTENER_ELEMENT = "listener"; + private static final String NUMASS_REPO_PATH_PROPERTY = "numass.repository.path"; + private final Logger logger = LoggerFactory.getLogger("NUMASS-SERVER"); + FileStorage root; + NumassServer listener; + + public ServerRunner() throws IOException, ParseException { +// Global.instance().pluginManager().load(StorageManager.class); + + File configFile = new File(SERVER_CONFIG_PATH); + if (configFile.exists()) { + logger.info("Trying to read server configuration from {}", SERVER_CONFIG_PATH); + configure(MetaFileReader.read(configFile)); + } + } + + public static void main(String[] args) { + try (ServerRunner r = new ServerRunner()) { + r.start(); + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + String in = null; + while (!Objects.equals(in, "exit")) { + in = reader.readLine(); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + public ServerRunner start() throws Exception { + String repoPath = meta().getString(NUMASS_REPO_PATH_PROPERTY, "."); + Meta repoConfig = null; + if (meta().hasMeta(NUMASS_REPO_ELEMENT)) { + repoConfig = meta().getMeta(NUMASS_REPO_ELEMENT); + } + logger.info("Initializing file storage in {}", repoPath); + root = FileStorage.in(new File(repoPath), repoConfig); + + logger.info("Starting numass server"); + if (root != null) { + root.open(); + Meta listenerConfig = null; + if (meta().hasMeta(LISTENER_ELEMENT)) { + listenerConfig = meta().getMeta(LISTENER_ELEMENT); + } + + listener = new NumassServer(root, listenerConfig); + listener.open(); + logger.info("Successfully started numass server"); + } else { + logger.error("Root storage not initialized"); + } + + return this; + } + + @Override + public void close() { + logger.info("Stopping numass server"); + if (listener != null) { + try { + listener.close(); + } catch (Exception e) { + logger.error("Failed to close listener", e); + } + } + + + if (root != null) { + try { + root.close(); + } catch (Exception ex) { + logger.error("Error while closing storage", ex); + } + } + } +}