You can superimpose another dash pattern
over the scalar
option (which is equivalent to dashed
. You need to adjust the pattern, however, in order to have exactly the left half of the loop drawn:
\documentclass{article}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
\feynmandiagram [horizontal=a to b, layered layout] {
a -- [scalar] b [dot] -- [out=125, in=55, loop, min distance=2cm, scalar, postaction={draw, dash pattern=on 1.5cm off 1.5cm}] b -- c,
};
\end{document}

A maybe more elegant approach would be to use decorations to re-draw the first half of the loop path:
\documentclass{article}
\usepackage[compat=1.1.0]{tikz-feynman}
\pgfdeclaremetadecoration{draw first half}{initial}{
\state{initial}[width={\pgfmetadecoratedpathlength/2}, next state=final]{
\decoration{curveto}
}
\state{final}{}
}
\begin{document}
\feynmandiagram [horizontal=a to b, layered layout] {
a -- [scalar] b [dot] -- [out=125, in=55, loop, min distance=2cm, scalar, postaction={decorate, draw, decoration={draw first half}}] b -- c,
};
\end{document}
A variation of this approach would be to include the dash pattern in the decoration:
\documentclass{article}
\usepackage[compat=1.1.0]{tikz-feynman}
\pgfdeclaremetadecoration{half dashed}{initial}{
\state{initial}[width={\pgfmetadecoratedpathlength/2}, next state=final]{
\decoration{curveto}
\afterdecoration{
\pgfusepath{stroke}
}
}
\state{final}{
\beforedecoration{
\pgfsetdash{{3pt}{3pt}}{0pt}
}
\decoration{curveto}
}
}
\begin{document}
\feynmandiagram [horizontal=a to b, layered layout] {
a -- [scalar] b [dot] -- [out=125, in=55, loop, min distance=2cm, decorate, decoration={half dashed}] b -- c,
};
\end{document}
The output of these two code snippets look the same as above.