// ESAF : Euso Simulation and Analysis Framework // $Id: RadiativeFactory.hh,v 1.12 2005/04/19 00:15:47 thea Exp $ // S. Moreggia created 27 October 2003 // // Factory class is a singleton // Build objects needed for radiative transfer according to config parameters #ifndef __RADIATIVEFACTORY_HH__ #define __RADIATIVEFACTORY_HH__ #include "EsafConfigurable.hh" #include "EsafMsgSource.hh" class Ground; class RadiativeProcessesCalculator; class ClearSkyPropagator; class InCloudsPropagator; class RadiativeFactory : public EsafConfigurable, public EsafMsgSource { public: // dtor virtual ~RadiativeFactory(); // to get the instance static RadiativeFactory* Get(); // Build and return the ExtinctionCalculator object RadiativeProcessesCalculator* GetRadiativeProcessesCalculator() const; // Build and return the Ground object Ground* GetGround() const; // Build and returns the InCloudsPropagator object ClearSkyPropagator* GetClearSkyPropagator(const Ground*) const; // Build and returns the InCloudsPropagator object InCloudsPropagator* GetInCloudsPropagator(const Ground*) const; EsafConfigClass(RadiativeTransfer,RadiativeFactory) private: // private ctor RadiativeFactory(); // single instance static RadiativeFactory* fMe; ClassDef(RadiativeFactory,0) }; #endif /* __RADIATIVEFACTORY_HH__ */