\documentclass[border=2pt]{standalone}

% Drawing
\usepackage{tikz}

% Tikz Library
\usetikzlibrary{decorations.markings, calc, arrows.meta, positioning, shadings}

% Styles
%% Laser
\tikzset{laser/.style={thick, black}}
%% Arrow in the Middle of a Line
\tikzset{arrow inside/.style = {postaction=decorate, decoration={markings, mark=at position .62 with \arrow{stealth}}}}
\tikzset{arrow inside1/.style = {postaction=decorate, decoration={markings,
						 mark=at position .62 with \arrow{stealth}}}}
%% Rays
\tikzset{ray/.style={very thick, red, arrow inside}}
\tikzset{ray1/.style={very thick, red, arrow inside1}}
%% Detectors
\tikzset{detector/.style={thick, draw=black, fill=black!40}}
%% Reflector
\tikzset{reflector/.style={thick, black, left color=black!50, right color=black!50, middle color=white}}
\tikzset{reflector1/.style={thick, black, top color=black!50, bottom color=black!50, middle color=white}}

\begin{document}
	
	%Layers
	\pgfdeclarelayer{background}
	\pgfdeclarelayer{foreground}
	%
	\pgfsetlayers{background, main, foreground}
	
	\begin{tikzpicture}
%		% Grid
%		\draw[black!20] (0,0) grid (10,10);
%		\foreach \i in {0,...,10}
%		{
%			\node at (-2ex,\i) {\i};
%			\node at (\i,-2ex) {\i};	
%		}
		
		% Coordinates
		%% Laser
		\coordinate (a) at (0,6);
		\coordinate (a') at (0.85,6);
		\coordinate (b) at (1,3);
		\coordinate (c) at (0.4,4.5);
		%% Rays
		\coordinate (A) at (4.94,9);
		\coordinate (O) at (5,4.5);
		\coordinate (Ol) at (4.85,4.5);
		\coordinate (Or) at (5.06,4.58);
		\coordinate (Ou) at (4.94,4.7);
		\coordinate (Od) at (5,4.35);
		\coordinate (B) at  (8,4.58);
		\coordinate (C) at (4.85,0);
		\coordinate (D) at (1,4.5);
		
		% Laser
		\begin{pgfonlayer}{foreground}
			\draw[laser, fill=black!20] (a) rectangle (b);
			\draw[laser, fill=black!40] (a') rectangle (b);
			\node[rotate=90] at (c) {Laser};
		\end{pgfonlayer}
		
		% Reflectors
		\begin{pgfonlayer}{background}
			\draw[rounded corners, thick] (7.5,4.58-1.1) rectangle (9.5,4.58+1.1);
		\end{pgfonlayer}
		%
		\begin{pgfonlayer}{foreground}
			\draw[detector] (4.94-1,9) rectangle (4.94+1,9.2);
			\draw[reflector] (4.85-1,0) rectangle (4.85+1,-0.2);
			\draw[reflector1] (8,4.58-1) rectangle (8.2,4.58+1);
		\end{pgfonlayer}
		%
		\begin{pgfonlayer}{main}
			\draw[reflector, rotate around={-45:(5,4.5)}] (4,4.4) rectangle (6,4.6);
		\end{pgfonlayer}
		
		% Lens
		\begin{pgfonlayer}{foreground}
			\draw[thick, top color = black!50, bottom color=black!50, middle color = white, even odd rule] (2.5,4.5) ellipse (0.1cm and 0.5cm) (2.53,4.5) ellipse (0.05cm and 0.4cm);
			\draw[thick, fill=black!10] (2.53,4.5) ellipse (0.05cm and 0.4cm);
		\end{pgfonlayer}
		
		% Rays
		\begin{pgfonlayer}{main}
			\draw[ray] (Ou) -- (A);
			\draw[ray] (Or) -- (B);
			\draw[ray1] (B) -- (Or);
			\draw[ray] (Ol) -- (C);
			\draw[ray1] (C) -- (Ol);
			\draw[ray] (D) -- (Ol);
			\draw[ray1] (1,4.5) -- (2.4,4.5);
			%
			\draw[very thick, red] (Ol) -- (Or);
			\draw[very thick, red] (Ol) -- (Ou);
		\end{pgfonlayer}
		
		% Arrows
		\begin{pgfonlayer}{background}
			\draw[latex-latex, thick, dashed] (7.6,3) -- (9.4,3);
		\end{pgfonlayer}
	
		% Nodes
		\node at (4.94,9.5) {\small Viewing screen};
		\node at (5.8,3.35) {$\mathrm{M_o}$};
		\node at (4.85,-0.5) {$\mathrm{M_1}$};
		\node at (8.6,4.58) {$\mathrm{M_2}$};
		\node at (2.5, 3.7) {$\mathrm{L}$};
		\node at (4.55, 2.3) {\small$1$};
		\node at (6.53, 4.9) {\small$2$};
		
		% Refinements
		\begin{pgfonlayer}{foreground}
			\draw[very thick, red, line cap=round] (2.55,4.5) -- ++(1,0);
			\draw[fill=red, draw=red] (Ou) circle (0.4pt);
			\draw[fill=red, draw=red] (Or) circle (0.4pt);
		\end{pgfonlayer}
		
%		% Axis
%		\begin{pgfonlayer}{main}
%			\node[circle, draw, inner sep=0pt, minimum size=5pt, label=below :{$x$}] (S) at (0,8) {};
%			\draw[fill=black] (0,8) circle (1pt);
%			\draw[-latex, thick] (S) -- (1,8) node[right] {$y$};
%			\draw[-latex, thick] (S) -- (0,9) node [above] {$z$};
%		\end{pgfonlayer}
	\end{tikzpicture}
	
\end{document}
