/*
  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
*/

#ifndef GEOMODELENVELOPES_FORDETENVELOPEFACTORY_H
#define GEOMODELENVELOPES_FORDETENVELOPEFACTORY_H

#include "GeoModelKernel/GeoVDetectorFactory.h"
#include "GeoModelEnvelopes/ForDetEnvelopeManager.h"

class StoreGateSvc;
class StoredMaterialManager;
class GeoShape;

class ForDetEnvelopeFactory final : public GeoVDetectorFactory
{
 public:

  // Constructor:
  ForDetEnvelopeFactory(StoreGateSvc *pDetStore);

  // Destructor:
  ~ForDetEnvelopeFactory() = default;

  // Creation of geometry:
  virtual void create(GeoPhysVol *world) override;

  // Access to the results:
  virtual const ForDetEnvelopeManager * getDetectorManager() const override;

 private:

  // Illegal operations:
  const ForDetEnvelopeFactory & operator=(const ForDetEnvelopeFactory &right);
  ForDetEnvelopeFactory(const ForDetEnvelopeFactory &right);

  // The manager:
  ForDetEnvelopeManager*   m_detectorManager;

  StoredMaterialManager* m_materialManager;
  StoreGateSvc*             m_detectorStore;
};

// Class ForDetEnvelopeFactory
#endif