Data structure reorganization

From: Stan Seibert (volsung@physics.utexas.edu)
Date: Tue Oct 11 2005 - 13:06:32 CDT


Hi all,

I wanted to alert everyone to a coming (incompatible!!) change to RAT:

Josh has convinced me that the problem of multiple detector events
per physics event cannot be swept under the rug, and that we need to
alter the data structure to handle it. The way we have come up with
to address this is to change the data structure so it associates one
monte carlo (i.e. "physical") event with a list of "detector"
events. Prior to this, I had set things up to be one-to-one, which
does not make sense when the anti-nu interaction is going to always
produce multiple triggers.

At the same time, we're going to move a lot of intermediate
electronics response information into the data structure, to allow
the front end, trigger, and data readout to be simulated as
processors. This should make it easier to swap in and out alternate
designs for the electronics and see how they impact things like
reconstruction. In addition, it should make studies which want to
deliberately introduce problems, like smearing the timing or adding
noise, much easier to do.

Basically, GEANT4/GLG4sim (plus the Braidwood additions) will
simulate all the physics from the initial particle all the way to the
anode at the back of the PMT. Everything from that point onward,
including the DAQ system, reconstruction, and output to disk will be
handled by a RAT processor.

Using quasi-C++ syntax, here's how the new data structure will look
(with some members removed to keep from cluttering this up):

RAT_DS //Top level object, DS standing for "data structure", used to
be called "RATEvent"
{
     RAT_MC mc // All monte carlo information
     {
         vector<RAT_MCParticle> particle; // list of initial particles
         vector<RAT_MCTrack> track; // list of particle tracks,
including photons
         vector<RAT_MCPMT> pmt // list of pmts which were hit by
photons
         {
             vector<RAT_MCPhoton> photon; // one entry per photon
that hit this PMT
         };
         vector<RAT_VetoSystem> vetosystem; // list of hits to the
muon veto
         // Gsim stops here, RAT processors take over

         vector<RAT_MCHit> hit; // PMT pulses produced by photoelectrons
         vector<RAT_MCTrigger> trigger; // list of triggers produced
by event
     };

     vector<RAT_EV> ev // List of detector events, created by readout
processor based on triggers
     {
         vector<RAT_PMT> pmt; // list of PMT hits as read out by
electronics simulation
         vector<RAT_PosFit> posfit; // list of position fits produced
by reconstruction processors
         vector<RAT_EFit> efit; // list of energy fits produced by
reconstruction processors
     };
};

The reason for the warning is that this will break some root macros
due to moving around of data elements. It will also break any
processors people may have written. I have ported all the processors
in CVS to work with the new data structure, so if your code is
already in CVS, you won't have any work to do.

Also rolled in are some major cleanups that eliminate a lot of
redundant code, and make writing processors even simpler.

If there are no objections, I'll plan to push this into CVS on
Thursday. Documentation on all changes will be posted to the RAT
website at the same time.

---
Stan Seibert


This archive was generated by hypermail 2.1.6 : Wed Oct 12 2005 - 00:01:02 CDT