Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:10:54

0001 // This file is part of the ACTS project.
0002 //
0003 // Copyright (C) 2016 CERN for the benefit of the ACTS project
0004 //
0005 // This Source Code Form is subject to the terms of the Mozilla Public
0006 // License, v. 2.0. If a copy of the MPL was not distributed with this
0007 // file, You can obtain one at https://mozilla.org/MPL/2.0/.
0008 
0009 #pragma once
0010 
0011 #include "Acts/Definitions/Algebra.hpp"
0012 #include "Acts/Material/Material.hpp"
0013 
0014 namespace Acts {
0015 
0016 class Material;
0017 
0018 /// @class IVolumeMaterial
0019 ///
0020 /// Virtual base class of volume material description
0021 //
0022 /// Material associated with a Volume (homogeneous, binned, interpolated)
0023 class IVolumeMaterial {
0024  public:
0025   /// Virtual Destructor
0026   virtual ~IVolumeMaterial() = default;
0027 
0028   /// Access to actual material
0029   ///
0030   /// @param position is the request position for the material call
0031   /// @todo interface to change including 'cell'
0032   virtual const Material material(const Vector3& position) const = 0;
0033 
0034   /// @brief output stream operator
0035   ///
0036   /// Prints information about this object to the output stream using the
0037   /// virtual IVolumeeMaterial::toStream method
0038   ///
0039   /// @return modified output stream object
0040   friend std::ostream& operator<<(std::ostream& out,
0041                                   const IVolumeMaterial& vm) {
0042     vm.toStream(out);
0043     return out;
0044   }
0045 
0046   /// Output Method for std::ostream, to be overloaded by child classes
0047   virtual std::ostream& toStream(std::ostream& sl) const = 0;
0048 };
0049 
0050 }  // namespace Acts