I'm currently evaluating the use of ROOT in our in-house simulation of
factory-floor and warehouse operations, and am looking for comments on
this type of application...
Background:
Plattforms: Intel/Linux, Alpha/Linux, Alpha/Digital Unix
The simulation currently is partitioned into 3 areas:
- Simulation-engine itself, i.e. no graphics, analysis, etc.
This consists of 3 processes (warehouse, disposition and
assembly-lines) communicating via pipes. Input and output data
(some 100Mb) is in ASCII format. They are implemented in
C++ using some self-made utility classes, and basically flat
inheritance..
- The animation/visualization GUI: Tcl/Tk, which reads the ASCII
files produced by the engine
- Manual and automatic analysis generation, via perl, some clever
Makefiles, output in SGML(DocBook).
As the current version suffers from some design and implementation
faults, and has to be adapted to new requirements, a nearly total
rework is planned.
My current plan would be to use ROOT as the application framework for
all three areas, utilizing the utility classes/RNG and TTrees in the
engine, and using the GUI and rest of the framework in animation and
analysis generation (which would probably be folded into one
application)...
Would anybody like to comment on this, i.e. do you think this makes
sense, is appropriate, etc.? Things I should look out for?
A more specific question that I have:
Given a warehouse, which is partitioned into different named locations
(which are fixed within one simulation run, but may differ between
different runs), I would want to write out the current state
(i.e. number and type of parts, etc. in each location/sublocation)
every time an event has influenced the warehouse.
Using TTrees for output, I can't quite make up my mind, which would be
the best way of arranging the different parts, such that I can simply:
- write out the whole warehouse-state for every event during simulation,
- select only one location, and graph the resulting levels of usage
for the whole duration...
It seems to me, that branches would be the way to do it, but all the
examples either use auto-branching of a fixed object-type
(e.g. Event), or create branches manually for things that are totally
different in number and name between events (e.g. Tracks).
It seems to me, that this is a simple problem to solve, and I'm just
missing something...
Any help, comments, etc. will be much appreciated...
TIA
Regs, Pierre.
-- Pierre Mai <dent@cs.tu-berlin.de> http://home.pages.de/~trillian/ "Such is life." -- Fiona in "Four Weddings and a Funeral" (UK/1994)