anaphe developer developer anaphe interfaces interfaces
play

Anaphe Developer Developer Anaphe Interfaces Interfaces Lorenzo - PowerPoint PPT Presentation

Anaphe Developer Developer Anaphe Interfaces Interfaces Lorenzo Moneta Lorenzo Moneta CERN AIDA Workshop 3/7/2003 http://lcgapp.cern.ch/project/pi/ Anaphe Architecture AIDA interfaces IHistogram IPlotter IFitter developer interf.


  1. Anaphe Developer Developer Anaphe Interfaces Interfaces Lorenzo Moneta Lorenzo Moneta CERN AIDA Workshop 3/7/2003 http://lcgapp.cern.ch/project/pi/

  2. Anaphe Architecture AIDA interfaces IHistogram IPlotter IFitter developer interf. IDevHistogram IDevPlotter IDevFitter wrapper layer AIDA Plotter AIDA Fitter Basic components Histo library Grace Plotter FML Lorenzo Moneta, CERN AIDA Workshop, July 2003

  3. Design Lorenzo Moneta, CERN AIDA Workshop, July 2003

  4. Histogram Developer Interfaces � Histogram Developer interface: � IDevHistogram : – Inherits from IHistogram1D and IDevManagedObject – Methods: � bool setBinContents(iBin, entries, height, error , centre); � bool setRms( rms); � IDevHistogramFactory – no inheritance from IHistogramFactory – Factory to create unmanaged objects – Same methods as in IHistogramFactory but without the name � IDevHistogram1D createCopy(const IHistogram1D & h); � Anaphe::HistogramFactory implements IHistogramFactory using the IDevHistogramFactory Lorenzo Moneta, CERN AIDA Workshop, July 2003

  5. Inheritance tree for Anaphe::Histogram1D IHistogram1D IManagedObject IDevManagedObject IDevHistogram1D Anaphe::Histogram1D Lorenzo Moneta, CERN AIDA Workshop, July 2003

  6. Histogram Dev interfaces Lorenzo Moneta, CERN AIDA Workshop, July 2003

  7. IDevManagedObject � IDevManagedObject � All developer interfaces for objects which are going to be stored inherits from IDevManagedObject – Store needs to know if an update is needed of an existing persistency object � Methods: bool isUpToDate(); void setUpToDate( bool isUpToDate ); bool setName( const std::string& newName ); std::string userLevelClassType(); Lorenzo Moneta, CERN AIDA Workshop, July 2003

  8. Anaphe Store � Tree is separated from Store implementation � Depends only on developer interface IStore � Store does not depend on the Tree � No dependency between Store and any particular implementation of the data objects � Store deals only with IDevHistogram, IDevClouds, IDevTuple, etc… – Copy them in the corresponding persistency objects when writing – Use developer factory interface to create them when reading � No need to use tree to create a IDevHistoframFactory Lorenzo Moneta, CERN AIDA Workshop, July 2003

  9. IStore developer interface Lorenzo Moneta, CERN AIDA Workshop, July 2003

  10. IDevTree interface Lorenzo Moneta, CERN AIDA Workshop, July 2003

  11. Factory Providers � Each component library defines a unique global symbol : � FactoryProvider for all the various data objects – Histograms, Tuples, Functions and DataPointSet � StoreFactories fo each store implementation � TreeFactoryProvider for the tree � AnnotationFactory for the annotation implementation � Access to the symbol is provided through the IDevAnalysisFactory interface � When the library is loaded it registers in the AnalysisFactory � No dynamic loaded is supported but can be easley added, by implementing the AnalysisFactory with a PluginManager Lorenzo Moneta, CERN AIDA Workshop, July 2003

  12. Tuples developer interfaces � IDevTuple � IBackingStore � Read/write a row � Bind variables Other Tuple developer Interfaces: ITupleHeader, ITupleVariableDescription, ITupleVariableStatistics Lorenzo Moneta, CERN AIDA Workshop, July 2003

  13. Functions and Fitting � IDevFunction � IDevFunctionCatalog � IDevFunctionFactory � IDevFitter � IDevFitData � IDevFitDataIterator � IDevFitResult � IDevFitParameterSettings Lorenzo Moneta, CERN AIDA Workshop, July 2003

  14. Conclusions � Need developer interfaces for AIDA objects : � Setter methods for efficient copying � Some common properties for storing and plotting – E.g. isValid() ? � Type information ? � Need to be able to create unmanaged objects � IDevFactories ? � Can we remove managedObject from user interface ? – Possibility to leave management to specific implementations – Now IManagedObject appear only in � IManagedObject * find(std::string path); � std::string findPath(const IManagedObject & obj); � Store interface Lorenzo Moneta, CERN AIDA Workshop, July 2003

Recommend


More recommend