////////////////////////////////////////////////////////////////////////
/// \class RAT::GeoCerenkovSourceNewFactory
///
/// \brief Geometry for the Cherenkov Source being developed at Berkeley
///
/// \author Benjamin Land
///
/// REVISION HISTORY:\n
/// 	17/06/14 : B. Land - Folded development version into RAT \n
///
/// \details
/// 	Constructs the Cerenkov source geometry for the actual source
///     being developed at Berkeley. (work in progress)
///
////////////////////////////////////////////////////////////////////////

#ifndef __RAT_GeoCerenkovSourceNewFactory__
#define __RAT_GeoCerenkovSourceNewFactory__

#include <RAT/GeoFactory.hh>
#include <RAT/GeoPMTBuilderBase.hh>
#include <G4VPhysicalVolume.hh>
#include <G4VisAttributes.hh>
#include <vector>

namespace RAT {

	class GeoCerenkovSourceNewFactory : public GeoFactory, public GeoPMTBuilderBase  {
        public:

	        /// Constructor - index of factory is "CerenkovSourceNew"
	        GeoCerenkovSourceNewFactory() : GeoFactory("CerenkovSourceNew"), GeoPMTBuilderBase() {};

	        /// Builds the cherenkov source components according to the parameters given in the table
	        virtual void Construct(DBLinkPtr table, const bool checkOverlaps);

        protected:

            /// Converts a vector of RGB or RGBA color values into a G4VisAttributes
	        static G4VisAttributes* GetColor(std::vector<double> color);
	};

} // namespace RAT

#endif  // __RAT_GeoCerenkovSourceNewFactory__