IGUANA has a number of multi-methods that bridge the application objects and the reps. Each such multi-method has a base method in IgBrowserMethods plus an extensible family of functions in plug-ins. Each method takes a main argument pair (for example, represent takes a pair <object, model> for which to create a rep); the method implementation selects from the family of functions the best match for the pair of actual arguments used. In this context, "best" means that no exact match is required -- the system uses the polymorphic nature of classes as one would expect.
Perhaps the important concept with these methods is that the family of functions varies based on which shared libraries are loaded. Thus, functions for a multi-method family need not be linked into the programs but can be put into separate IGUANA plug-in libraries. When dropped into the plug-in directories, IGUANA will automatically detect these libraries and load them on demand -- when objects of those arguments combinations are handled. It is therefore an advantage to split the rep mapping methods into fairly small granularity shared libraries. That way the minimum of code will be loaded, and even then only when it is actually needed. (Note that although the focus here is on lazy dynamic loading of extension code in shared libraries, IGUANA's plug-in mechanism is orthogonal to dynamic loading. It is possible to build plug-ins directly into the program itself, either fully so that it will never try to load anything dynamically, or partly so that some plug-ins are built into the program and others are loaded at run time.)
Multi-methods are not a native feature of C++, and hence are implemented by an additional library (classlib). We provide a number of preprocessor macros to make their use as simple and intuitive as possible. This guide explains both how to use and understand the macros as well as what the purpose of each method is. The methods available in IgBrowserMethods are explained below; each method consist of a pair: a front-end class-static function that should be used to call the method, and the multi-method itself.
The functions for the multi-method families are usually "free functions" -- functions outside any class. That is, they are normally not members of the application object nor of the rep, but mediators between the two, and simply use the public interfaces of both classes to do their job. The package they are contained in normally links against both the application object library and the model libraries -- but typically not against the browsers that view the model.
Come girare il codice
ovvero come cominciare a
programmare / girare codice senza
capirci molto
Dove e il codice?
Dove e la documentazione?
Dove sono i sample di simulazione?
Come compilo?
Come eseguo?
Come scrivo Ntuple Root files o che altro?
SCRAM e' la chiave di tutto!
Recognize cross-project nature of key deliverables in CPT
Core Software and Computing CSC
MOUable deliverables (e.g. TierX computing centers, plus core
software graphics, libraries, GEANTx, CARF, etc)
Physics Reconstruction and Selection PRS
Consolidate Physics Software work between the detector groups
targeted at CMS deliverables (HLT design, test-beams, calibrations,
Physics TDR...)
Trigger and Data Acquisition TRIDAS
Online Event Filter Farm + online software framework (the other parts of
TriDAS, e.g. Evt-Builder, RunControl, outside the CPT reorganization)
/usr/local/gcc-alt-2.95.2/bin/c++ -c -DPROJECT_NAME=ORCA -DPROJECT_VERSION=ORCA_5_3_4 -DHEP_ODBMS_EXPORT='' -DOS_NEW_CHECK -DOS_STL_ASSERT -DOS_NO_WSTRING -DOS_NO_ALLOCAT ORS -D__USE_BSD -D__USE_XOPEN_EXTENDED -DOS_LINUX_2_0 -DOS_MULTI_THREADED -DOS_LINUX_ PTHREADS -DOS_REALTIME -DOS_USE_ALTERNATE_STD -DQT_ALTERNATE_QTSMANIP -DQT_CLEAN_NAME SPACE -DQT_THREAD_SUPPORT -I/afs/cern.ch/cms/Releases/COBRA/COBRA_5_3_6/src/Porting/ Linux2-EGCS/wrappers -I/afs/cern.ch/cms/Releases/COBRA/COBRA_5_3_6/src/Porting/Linux2 -EGCS/wrappers -I/afs/cern.ch/user/g/gzito/orca/ORCA_5_3_4/src -I/afs/cern.ch/cms/Rel eases/ORCA/ORCA_5_3_4/src -I/afs/cern.ch/sw/lhcxx/specific/redhat61/gcc-2.95.2/3.6.2/ include -I/afs/cern.ch/sw/lhcxx/specific/redhat61/gcc-2.95.2/3.6.2/include -I/afs/cer n.ch/sw/lhcxx/specific/redhat61/gcc-2.95.2/Objectivity/6.1/include -I/afs/cern.ch/sw/ lhcxx/specific/redhat61/gcc-2.95.2/ObjectSpace/2.1.0.1/ToolKit -I/afs/cern.ch/sw/lhcx x/specific/redhat61/gcc-2.95.2/Qt/2.2.4/include -I/afs/cern.ch/sw/lhcxx/specific/redh at61/gcc-2.95.2/OpenInventor/2.6/include -I/afs/cern.ch/sw/lhcxx/specific/redhat61/Me sa/3.2/include -I/usr/X11R6/include -I/afs/cern.ch/cms/Releases/COBRA/COBRA_5_3_6/src -I/afs/cern.ch/cms/Releases/IGUANA/IGUANA_2_5_0/src -I/afs/cern.ch/cms/Releases/IGUA NA/IGUANA_2_5_0/include/Linux__2.2/src -I/afs/cern.ch/user/g/gzito/orca/ORCA_5_3_4/sr c -I/afs/cern.ch/cms/Releases/ORCA/ORCA_5_3_4/src -O2 -pthread -pipe -felide-constru ctors -fnonnull-objects -fPIC /afs/cern.ch/user/g/gzito/orca/ORCA_5_3_4/src/Visualis ation/MuonVis/src/TwigMuBarRpcSimHits.cc -o TwigMuBarRpcSimHits_pic.o
More flexibility
Event by event high-granularity control of output
On demand digitization
Multiple-streams by reference
One copy of the event,many collections
Multiple-streams by value
Multiple copy of the event
Dynamic clustering
one copy of the event,location stream-dependent
Full re-clustering
of data
of meta-data
Vincenzo reported on the plans for COBRA for the near future. The main question is to keep the code stable or to implement new interfaces. Currently, he is making access to the database as lazy as possible. It followed a discussion on the use of the interfaces to CARF at different layers in the inheritance tree (very abstract vs. very concrete). Stephan will ask all subsystem coordinators to compile a list of the CARF interfaces they use, merge and compare, and try to see where a grand unification is possible and makes sense.
Pal has a new version of the ntuple maker, that he hopes can be used
for production. However, it has problems from memory leaks, because
the ORCA code it uses has memory leaks. He has notified the authors
of this ORCA code. He plans to add muons and tracking as well, provided
they have acceptable memory leakage (muon is rumored to have leaks).