Hi Philipe, Thanks so much for your solution. It worked great and I'm now back up and running. I have another question on a related note. I need to be sure that my TSelector reads in the branches necessary (and *only* those branches, since I have 100s) for the TTreeFormulas I am using. But I don't see the need to add/change SetBranchStatus lines in my TSelector::Init method everytime I add/change my TTreeFormulas. Is there a way to do this more easily, like by looping over the leaves a TTreeFormula needs? Cheers, Chris *** Today, you (Philippe Canal) wrote *** >Hi Chris, > >The problem was that the TTreeFormula were not informed properly that >the chain loaded a need TTree. To fix that you need to add at the end of >generic::Notify the following: > > // fChain->LoadTree(fChain->GetReadEntry()); > // Also update the formulas: > for (Int_t cut=0; cut<_cs->nCuts(); cut++) { > ttform[cut]->UpdateFormulaLeaves(); > } > >Now in your sample case (only one file), it should not have been loading >any new file in the first place. The reason why it was, is that you have >in all your selector's Notify method (like generic::Notify) calls like: > > fChain->SetBranchStatus("*",kFALSE); > >This forces a reload of the current file. The SetBranchStatus actually >belongs in the generic::Init method because they only need to be once >by chain. The chain (at least in newer ROOT) keeps track of the >info and pass it to each TTree. If for some reasons (very old ROOT >version) this does not work, then uncomment the first like in my >first code fragment. > >Cheers, >Philipe. > > >-----Original Message----- >From: owner-roottalk@pcroot.cern.ch >[mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Chris Roat >Sent: Wednesday, December 19, 2001 1:03 PM >To: roottalk@pcroot.cern.ch >Subject: [ROOT] TTreeFormula within TSelector::ProcessCut > > >Hi ROOT, > >I'm having problems finding out if a particular entry in a tree passes a >cut. I'm using a TSelector which takes recieves a list of strings (which >are cuts, of the form "p>3" or "myBool" from the outside world). During >ProcessCut/ProcessFill, I would like to see if the entry I'm on passes any >of the strings. > >I am trying to use TTreeFormula to tackle this, but without prolonged >luck. It works fine on the first entry - EvalInstance(0) returns the >correct answer, so I'm on the right track. However, EvalInstance(0) seg >faults on subsequent entries. > >Could there be a problem with ProcessCut() and EvalInstance() both getting >info from the tree? > >Thanks for any insight, >Chris > > >
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:51:13 MET