// ESAF : Euso Simulation and Analysis Framework // $Id: UniformLayersClouds.hh,v 1.7 2005/04/18 11:34:34 moreggia Exp $ // Author: Sylvain Moreggia Aug, 18 2004 #ifndef __UNIFORMLAYERSCLOUDS_HH_ #define __UNIFORMLAYERSCLOUDS_HH_ #include "euso.hh" #include "Clouds.hh" #include "CloudsBox.hh" #include "EarthVector.hh" /******************************************************************************* * * UniformLayersClouds: class description * * Multi-layer clouds spreading uniformly within Euso FoV * Each layer has homogeneous properties * Earth sphericity is taken into account * ******************************************************************************/ class UniformLayersClouds : public Clouds { public: // ctor UniformLayersClouds(); // dtor virtual ~UniformLayersClouds(); // Return impact on clouds for given position and direction // if opt is "outgoing", returns the track exit point // Convention : - if already within clouds, returns pos // - no impact, returns (0,0,HUGE) virtual EarthVector GetCloudImpact(const EarthVector&, const EarthVector&,string opt = "default") const; // to know if a position is within clouds virtual Bool_t IsInClouds(const EarthVector&) const; // Returns the total OD along a direction virtual Double_t TotalOD(const EarthVector&,const EarthVector&) const; // Layer OD between incoming and outgoing points Double_t InclinedODloc(Int_t,const EarthVector&,const EarthVector&) const; // Returns the impact of a track on a specified CloudLayer (outgoing option allowed) EarthVector GetLayerImpact(Int_t,const EarthVector&,const EarthVector&,string opt = "default") const; // says in which layer pos is standing Int_t LayerNumber(const EarthVector&) const; // reset virtual void Reset() {} EsafConfigClass(Atmosphere,UniformLayersClouds) private: // read config files virtual void Configure() {} // Build clouds description virtual void Build(); // to know if pos is in the specified layer Bool_t IsInLayer(Int_t,const EarthVector& pos, EarthVector dir = 0.) const; // says if the track points toward the specified layer Int_t PointToLayer(Int_t,const EarthVector&,const EarthVector&) const; // idem but for the whole cloud Int_t PointToClouds(const EarthVector&,const EarthVector&) const; // to know if locally track is going up/downward Bool_t GoingDownward(const EarthVector&,const EarthVector&) const; CloudsBox* fBox; // describe clouds properties string fCloudsType; // clouds type ClassDef(UniformLayersClouds,0) }; #endif /* __UNIFORMLAYERSCLOUDS_HH_ */