How to pre process TSelector. Discussion

Hi All,

Please read bellow and participate in this discussion about the pre processing of TSelectors.

I am analizing NTuples (D3PD’s) which contain huge numbers of physical objects. In order to loop over the entries we have been using MakeSelector and the TSelector::Process within.

We build up a framework of classes that takes as an imput data members of the TSelector, and are executed within the TSelector::Process. So far so god.

The analysis is quite complex, for what the code has grow exponentially, and I am now looking for a way to organize for each entry the data members of myTSelector in containers. So instead of passing one data member at the time, the entire set of data members are been taken for pre processing, of course, in an entry by entry basis.

However, I have not been able to create classes which take as an argument mySelector or (this with in the TSelector::Process). Apparently, the problem arises as the function members of mySelector are being redefined, when a mySelector is being passed as an argument to external classes.

Well, I hope some gurus may participate in this discussion. As I am looking for nice ideas to preprocess the data members of a TSelector.

Cheers,
Nicolas

Hi Nicolas,

A priori you could replace the set of data member by a single embedded object of you new type in the selector. i.e replace .... int fOne; float fTwo; .... fChain->SetBranchAddress("one",&fOne,&b_one); fChain->SetBranchAddress("two",&fTwo,&b_two);with[code]

Bundle fBundle; // Bundle contains 2 data memebers: fOne and fTwo

fChain->SetBranchAddress(“one”,&fBundle.fOne,&b_one);
fChain->SetBranchAddress(“two”,&fBundle.fTwo,&b_two);[/code]

Cheers,
Philippe.