Hi,
I would not use TMinuit in a multi-thread environment, but MInuit2. There you can define a function class that you pass for the minimization and if you want to use it in a multi-thread environment is enough to implement the function to be minimized to be thread-safe.
I had a look and I guess you are referring to something similar as this: https://root.cern/doc/v610/demoMinimizer_8cxx_source.html ?
There, the problem seems to be the same as the one we currently encounter: The function which shall be minimised cannot depend on input that dynamically changes during runtime? I.e. in the example, the function is set via min->SetFunction(f) but we cannot pass any arguments to it explicitly which are then needed inside the function to calculate the return value. Or do I miss something?
In that case you have a class representing the function, so you can cache in the class some state values that can be used to evaluate the function .To be thread safe, you need to be sure to deal correctly with that state. Either keep constants during the multi-thread execution or look its writing access or make it as a thread local variable. All depends on how will you implement that function.