Fork me on GitHub

Changes between Initial Version and Version 1 of OutDated/FrameworkWishList


Ignore:
Timestamp:
Jun 22, 2012, 11:58:31 PM (12 years ago)
Author:
Pavel Demin
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • OutDated/FrameworkWishList

    v1 v1  
     1Here is a wish list for a common !FastSim framework:
     2
     31. (optional, lowest priority) ROOT independance
     4   (for example, using some classes from CLHEP and Boost.Python for factories, config. file, etc)
     5
     62. (optional) config. file independence (specifying only in-memory representation and access methods)
     7
     83. Module factory that creates modules instances at runtime '''by name'''
     9   
     10   With ROOT it's just {{{gROOT->GetClass(moduleClassName)->New()}}}
     11
     12   http://root.cern.ch/root/html/TClass.html
     13   
     14   The simplest solution without ROOT would be
     15{{{
     16  BaseModuleClass* moduleFactory(string const &name)
     17  {
     18    if(name == "Module1")
     19    {
     20      return new Module1;
     21    }
     22    else if(name == "Module2")
     23    {
     24      return new Module2;
     25    }
     26    return NULL;
     27  }
     28}}}
     29
     304. Memory manager that minimizes the amount of memory allocations and
     31   that creates/destroys/clears all data collections used by other services and modules.
     32   It also clears all data collections produce by other services and modules between
     33   events in the event loop. 
     34   (see ROOT {{{TClonesArray}}}, {{{ExRootFactory}}})
     35   
     36   http://root.cern.ch/root/html/TClonesArray.html
     37
     38   https://server06.fynu.ucl.ac.be/projects/ExRootAnalysis/browser/trunk/ExRootAnalysis/ExRootFactory.h
     39
     405. Central configuration manager that stores all parameters for all modules and
     41   that provides access '''by name''' to these parameters
     42   ({{{getDouble(name, defaultValue)}}}, {{{getDouble("JetFinder/MinPT", 10.0)}}})
     43
     446. Data manager that provides access '''by name''' to all data collections created by other services and modules
     45   (see {{{fwlite::Handle<T>::getByLabel(event, label)}}} in CMSSW or {{{TFolder}}} in ROOT)
     46
     47   https://twiki.cern.ch/twiki/bin/view/CMSPublic/WorkBookFWLiteEventLoop
     48
     49   http://cmssdt.cern.ch/SDT/doxygen/CMSSW_5_3_2/doc/html/d1/dd2/classfwlite_1_1Handle.html
     50
     51   http://root.cern.ch/download/doc/ROOTUsersGuideHTML/ch10.html
     52   
     537. Universal object that could represent all physics objects (particles, tracks,
     54   calorimeter towers, jets) with possibility to add user defined information
     55   (see !FastJet {{{PseudoJet}}} & {{{UserInfoBase}}} classes, CMS PAT {{{UserData}}}, {{{ExRootCandidate}}})
     56   
     57   With ROOT, user defined information can be implemented quite easily
     58{{{
     59  class ExRootCandidate
     60  {
     61  ...
     62  private:
     63    map< const TClass*, TObject* > fInfoMap
     64  };
     65 
     66   //------------------------------------------------------------------------------
     67
     68  TObject *ExRootCandidate::GetInfo(const TClass *cl)
     69  {
     70    map<const TClass *, TObject *>::const_iterator it = fInfoMap.find(cl);
     71
     72    return (it != fInfoMap.end() ? it->second : 0);
     73  }
     74
     75  //------------------------------------------------------------------------------
     76
     77  void ExRootCandidate::SetInfo(TObject *info)
     78  {
     79    fInfoMap[info->IsA()] = info;
     80  }
     81}}}
     82   
     83   https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuidePATUserData
     84   
     85   http://fastjet.fr/repo/doxygen-3.0.2/classfastjet_1_1PseudoJet.html
     86
     87   http://fastjet.fr/repo/doxygen-3.0.2/classfastjet_1_1PseudoJet_1_1UserInfoBase.html
     88   
     89   https://server06.fynu.ucl.ac.be/projects/ExRootAnalysis/browser/trunk/ExRootAnalysis/ExRootCandidate.h
     90
     91   http://isscvs.cern.ch/cgi-bin/viewcvs-all.cgi/ORCA/Examples/ExRootAnalysis/UserRootAnalysis.cc?root=orca&view=markup
     92
     938. Modules that consume and produce collections of universal objects