Analysis flow.

  1. Data is written into raw format files by NQ.
  2. Raw format files are read by NQ and converted into ntuple format.
  3. Ntuples converted into ROOT files by h2root routine (comes with root).
  4. Root files are read and processed with ROOT.
Last line is the one I am concentrating on right now - expanding:
  1. Data flow is controlled by LegsRun class. By creation of this object one auomatically opens input to data files ( prefix of data files and number of them can be specified in brackets).
  2. Inside of LegsPart event data is regrouped into abstract data structures LegsHit, LegsPart and user may place cuts using these data structures as well as ntuple structure variables. Complete list of the variables and their types may be found in LegsRun
  3. User cuts and histograms are implemented in LegsMaker*   classes. By declaring a LegsMaker* class one automatically adds the procedure contained in the Maker* to processing of the event. Order of execution of makers  is the same as order of declaration. So, clustering makers should come first before you try to use them in other makers.
  4. Histograms and possibly other objects ( inheriting from TObject )  that are data members of  a maker  class are automatically written to file into directory named after the maker. In fact th emaker itself is directory since it inherits from TDirectory class.  This simplifies writing to file and accesing histograms interactively in ROOT browser. Also,  no particular version library ( streamer function  depends on version of class) is needed to read a ROOT file with histos. All objects are still going to be in directories and possible to read.
  5. Calibration files are ordered  like follows: ru4191_1999_01_29_01_03_03.db where numbers are : run number, year, month, day,hour,min,sec. Functions to convert date from seconds to data format  and back are available in SasyTime.cxx
  6. Calibrations from a file are loaded automatically when time specified in file name comes. This is taken care of in LegsDB class mostlly with close cooperation with LegsRun of course.
  7. When a maker becomes absolute necessity to analysis it may be hardcoded added into LegsRun class and thus number of separate makers reduced.

  8.