The most systematic approach to controlling the output of RooFit is accessing the streams of the message service directly. The first thing is to check the instance of the RooMsgService:
RooMsgService::instance().Print() ;
This will tell you which streams exist and what they comprise. Note that error messages can appear in several strings at once. You can then access the stream and remove a certain topic:
RooMsgService::instance().getStream(1).removeTopic(RooFit::Eval);
The topics are:
RooFit::Eval RooFit::Generation RooFit::Minimization RooFit::Plotting RooFit::Fitting RooFit::Integration RooFit::LinkStateMgmt RooFit::Caching RooFit::Optimization RooFit::ObjectHandling RooFit::InputArguments RooFit::Tracing RooFit::Contents RooFit::DataHandling RooFit::NumIntegration RooFit::Eval
The above commands don't switch the MIGRAD output off, that goes to stdout after every fit. In order to do this, do:
RooFitResult* rForward = forward.fitTo( *forwardBS, RooFit::PrintLevel(-1) );
which will make your fit silent.