Giter Site home page Giter Site logo

grsispoon's Introduction

GRSISpoon

Welcome to GRSISpoon (GRSI Sort Program for Online / Offline Nuclear data), a web-facing nuclear data sorter being developed by the GRIFFIN Collaboration.

##The Plan

In light of GRIFFIN's enormous (200 TB/week) throughput of raw data to disk, a new fast sort code GRSISpoon is being developed to meet user needs. Beyond algorithmic efficiency goals, the developers are taking this opportunity to build a modular, well factored suite of tools around this sort code that will allow it to be easily used on any experimental dataset or GEANT4 simulation, with minimal case-specific coding required. The overall program structure is a chain modularized as follows:

  1. Data format interface tool: a preprocessor that translates any arbitrary data format (GRIFFIN, TIGRESS, GPS, GEANT4, whatever) into the format needed by GRSISpoon. This is the ONLY piece of experiment specific code; everything downstream from here must be strictly experiment agnostic. Developers must produce a well defined specification of the data format required so third parties can write their own preprocessor, and the preprocessor logic must be factored in a way that makes it trivial to swap out.

  2. Sort core: the sort core does the computational heavy lifting of sorting the data into the requisite structure. Sorting the raw data is expected to be an O(n) process, since data needs only be replayed once and grouped by trigger ID. The sort core should be able to produce ROOT trees / ntuples, as well as flat histograms. Furthermore, the sort core must have an exposed API that an external server can control it by.

  3. Independent web server: a relatively simple web server that waits for AJAX get requests from a web page, parses them into commands for the sort core's API, and returns the result in a way that can be parsed by the page's visualization.

  4. Visualization web page: a web app sitting on top of the server described above, which will allow any Chrome or Firefox user to visualize (via the gammaSpectrum framework) any histogram that can be defined by the sort core's API (specific feature list TBD).

##Usage

GRSISpoon relies on MIDAS and ROOT (versions TBD). With them installed and working, follow these steps to get GRSISpoon off the ground:

  1. Run the setup script, SOURCEME.sh or .csh depending on your shell preference. Make sure the paths to ROOT and MIDAS are set correctly therein!
  2. do make at GRSISpoon's root; hopefully everything compiles
  3. ./bin/grsisort launches the program in interactive mode

Alternatively, you can launch as ./bin/grsisort -p 9091 to launch a server listening on port 9091 (or whatever port you want). More usage docs coming soon!

##Testing

Currently, the test suite for GRSISpoon is a simple procedure:

  1. Sort the benchmark file ./testSuite/run27422_000.mid
  2. Run the root macro root -b -l ./testSuite/testGauntlet.C
  3. The macro will tell you all is well (so pls PR!), or that something failed (pls fix or justify before PR).

The test just compares the tree you get from sorting the benchmark file with the tree I got from sorting the benchmark file, and demands they are identical up to timestamps. As an added bonus, testGauntlet.C should serve as an example of how to read GRSISpoon's ROOT output.

Please note that passing the test suite is required for merging code into the collaboration's repo! If you think there is a good reason why your changes don't match, open an issue to discuss the situation before attempting a merge.

grsispoon's People

Contributors

bkatiemills avatar carlu avatar pcbend avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.