Merging selected events from several trees

I would like to combine events (from trees in several files) which fulfil a certain condition into a new file.
Is this possible using hadd, TChain::Merge or another existing method/tool?

Or is the best way to use TTree::CopyTree to create the reduced trees, write those into separate files, and finally merge those files?

see example in tutorial copytree3.C