Zero Events Pass Background Selection with TMVA

I’m working with TMVA to classify signal and background events, and I am trying to apply a selection criteria on the training/testing data for both the signal and background samples. This is the code I used for the selection:

TCut mycut = "jet1_pt > 500000 && jet1_pt < 1320000 && jet2_pt > 320000 && jet2_pt < 1320000";
factory->PrepareTrainingAndTestTree( mycut, "SplitMode=random:!V" );

With this, the signal events get about 92% efficiency, but none of the background events pass at all, which shouldn’t happen. I tried simplifying the background selection requiring that jet1_pt > 0 with the following:

TCut mycut = "jet1_pt > 500000 && jet1_pt < 1320000 && jet2_pt > 320000 && jet2_pt < 1320000";
TCut temp = "jet1_pt > 0";
factory->PrepareTrainingAndTestTree( mycut, temp, "SplitMode=random:!V" );

Which does exactly as I expect: signal events still have about 92% efficiency and all of the background events pass (100% efficiency). So then I increased the bound on background jet1_pt from 0 to very low numbers (tried: 10, 1, 0.1, 0.00000001), and again none of the events pass the background selection.

I checked the plot of jet1_pt for the background sample with TBrowser, and I don’t see anything wrong. There is a large peak around 400000-800000 (units of MeV), the total number of events is about 3 million, and TMVA claims to see 3.2 million events before the selection.


Our math/TMVA expert is away until next week, but he will take care of this once back.

Cheers, Bertrand


i’ve tried to reproduce your problem but wasn’t able to. Could you perhaps prepare a small scrip+data subsample which would reproduce the problem ??

Which TMVA/ROOT version do you use?