STAR Computing | Tutorials main page |
ROOT C++ classes and the source tree organization | |
Offline computing tutorial | Maintained by Fine and Wenaus |
The special C++ classes to organize an interface between the STAF packages and tables and ROOT framework reside in the StRoot subdirectory and belong the "New software domains" (see: chapter "Organization of software releases")
It can be examined using the CVS repository browser to browse the current directory structure, domains and packages and the ROOT generated html documentation. The page ROOT chain outlines the main steps an user should perform to develop his/her own C++ class code based on approach present below.
At the moment the STAR C++ base classes generate:
The most complicated example of the ROOT macro employing all "integration" classes is bfc.C file. Other more simple examples can be found at ROOT in STAR Web page.
tss.C - "TPC slow simulator" chain (obsolete)
bfc.C - the STAR "Big Full Chain" (obsolete)
bfcx.C - the STAR extended "Big Full Chain" (obsolete)
ebye.C - "Event by Event" chain (obsolete)
laser.C - The analysis of laser events equivalent to Iwona's old tst.kumac (obsolete)
St_Module - the base class to create STAF module (PAMs) wrappers (St_base.so/St_base.dll)
StCL - the base class to provide the basic matrix / vector manipulation based on CERN F110 and F112 packages (St_base.so/St_base.dll) Macro micky.C and class StMicky test StCL class with the standard CERN testsuit
St_Table - the base class to create STAF table wrappers (St_base.so/St_base.dll)
St_TableElementDescriptor - the class to get an acces to one table column by its name (St_base.so/St_base.dll)
St_tableDescriptor - the class replaces the St_TableElementDescriptor to get an access to table column definitions by its name and support the data-base I/O as well (St_base.so/St_base.dll)
St_TableSorter - the class-iterator to work with the sorted rows of the STAF wrapped tables (see example TestSorter.C ) (St_base.so/St_base.dll)
St_TableNtuple - the class to convert STAR Tables into ntuples The class inherits from TTree (xdf2root.so/xdf2root.dll)
St_DataSet - the class to create the complex object (the tree-like list of the named objects) to provide the "old" STAF dataset functionality (St_base.so/St_base.dll)
St_ObjectSet - this class is a special kind of St_DataSet with one extra pointer to wrap any TObject into St_DataSet object (St_base.so/St_base.dll)
St_FileSet - the class to create (import) the heirarchycal structure of datasets from the "native" file system structure (directories/files) (St_base.so/St_base.dll)
St_DataSetIter - class-iterator of St_DataSet to iterate and navigate St_DataSet objects (St_base.so/St_base.dll)
St_XDFFile - class to create, read/write,fill the C++ objects (St_DataSet and St_Table ) from/to XDF files (xd2root.so/xdf2root.dll) This class provides the an interface for ROOT interactive browser. The XDFBrowser.C macro shows how this feature can used.
STAR GEANT and 3D Geometry classes:
St_Node - class to define STAR geometry. (St_base.so/St_base.dll) This class creates an interface between GEANT St_geant_Maker and other StMaker's (see: StarFromWeb.C for an example)
St_NodeView - Viewer of St_Node objects (St_base.so/St_base.dll)
St_NodeViewIter - Iterator for viewers of St_Node objects (St_base.so/St_base.dll) (see: SubDetectorView.C for an example)
St_NodePosition - class to defined the position of St_Node within data structure (St_base.so/St_base.dll)
St_PolyLineShape - class to create a special shape for the array of the abstarct 3D points (like hits, tracks, etc. See: HitsDraw.C macro) (St_base.so/St_base.dll)
St_Table3Points - class is to create 3D view of any 3 columns of the St_Table objects with one the same "key column value" (See: HitsDraw.C macro).
St_PolyLine3D - class is to create 3D view of the array of the floating point (see: basic3dPrimitives.C )
StHits3DPoints - class is to create 3D view of the StObjArray collection of the StHit objects (see: DrawTpcHits.C macro)
StHelix3DPoints - class is to create 3D view of the StHelixD and the StTrack objects . (see DrawTrackTpcHits.C )
StPadControlPanel - class to manipulate with 3D view on the screen interactively.
There are several classes and (see: example PadBrowser.C ) those can be used an example to see how the above 3D classes can be used.
StChain - class to define the whole process. The STAR chain is a list of STAR makers defined as a C++ object of the classes derived from StMaker base class. (StChain.so/StChain.dll)
StMaker - the base class to describe one single step of the full chain controlled by the object of the StChain class. At the moment there are several STAR makers ( StChain.so/StChain.dll )
St_io_Maker - the special "io" maker to take over all I/O operations for this chain ( St_io_Maker.so/St_io_Maker.dll )
St_TLA_Maker (St_TLA_Maker.so/St_TLA_Maker.dll) -
this is a "prototype" maker. Pick it and customize to create your own one.
St_srs_Maker (St_srs_Maker.so/St_srs_Maker.dll)
St_tpt_Maker (St_tpt_Maker.so/St_tpt_Maker.dll)
St_xdfin_Maker (St_xdfin_Maker.so/St_xdfin_Maker.dll)
St_evg_Maker (St_evg_Maker.so/St_evg_Maker.dll)
St_tcl_Maker (St_tcl_Maker.so/St_tcl_Maker.dll)
St_tss_Maker (St_tss_Maker.so/St_tss_Maker.dll)
St_laser_Maker (St_laser_Maker.so/St_laser_Maker.dll)
St_calib_Maker (St_calib_Maker.so/St_calib_Maker.dll)
St_smdst_Maker (St_smdst_Maker.so/St_smdst_Maker.dll)
The Html documentation for all STAR classes above can be generated with the method StMaker::MakeDoc().
StarView.C - Draws the STAR GEANT geometry converted into the local ROOT file with TGeometry object (requires AFS access)
StarWebView.C - Draws the STAR GEANT geometry converted into Web ROOT file with TGeometry object (requires Web access)
Apart this there are the derived wrapper classes for STAF modules and tables generated by stic compiler from the IDL description into .share/tables and .share/domains.
The scheme of the creating the STAF table wrapper classes is shown on the picture:
The full list of the STAF classes ready for ROOT is generated by ROOT itself and can be see too as a part of the St_Table class description.
The wrappers for the STAF modules are done the same way: