How to optimize a function other than S/sqrt(S+B)


I am using the BDT framework (AdaBoost algorithm) for a BSM signal vs SM background discrimination problem. After training the BDT, I would like to get the significance at the optimal cut. By default, TMVA tries to optimize S/sqrt(S+B). I would like to include the effect of some fixed systematic uncertainty. How would I change the function that TMVA is trying to optimize?

Edit: If possible, I would appreciate a solution in Python since I am using pyTMVA for my work.


Hi @kbya99 ,
our TMVA expert @moneta might be able to help – but please consider that things might be slow during the holiday season.


Hi, @moneta please see this as a reminder for the question I had asked. Thanks!


Sorry for my late reply. I guess you are referring to change the function used in the TMVAGui to draw the efficiency and significance.
Instead of using the GUI you can call directly the corresponding function, where you can change the function used too optimise.
For example for the output of TMVAClassification, you can call this function:


If I want to use the Asimov mean significance instead of S/sqrt(S+B)



Hi @moneta thanks for the reply, I just want to confirm if “B+0.01” means 1% background systematic uncertainty.