Hi! On Oct 14, 2004, at 9:21 PM, Philippe Canal wrote: > Hi, > > TTreeFormulaManager is in charge of 'synchronizing' the array indices > of > several TTreeFormula object. > If you have only one TTreeFormula, you do not need to worry about the > TTreeFormulaManager (a default one is provided). > > So you current code could be simplified with > > cut=new TTreeFormula("some_name",cut,tree); > for(;;) { > ii=LoadTree(i); > fChain->GetEntry(ii); > Double_t cut_result=cut->EvalInstance(); > ... > } > delete cut; > Okay. Right now I only use TTreeFormulaManager::Notify() for the purpose shown below. Since I have many TTreeFormula's in there, I would also like to have a bit more of a container interface (with array-like access to the formulas and a Clear() to delete them). But it's not urgent. >> I suppose I should also add manager->UpdateFormulaLeaves() to my > ::Notify(), right? Is there something else which is >> needed? > > Yes (or cut->UpdateFormulaLeaves()). The TTreeFormula object need to > be > poked any time the branch objects are changes (i.e. when the chain > opens a > new file). > > Also note that if your cut has arrays in it (or any other collection > that > has more than one value per entry), you might have to use something > like: > > int ndata = cut->GetNdata(); > for(int i = 0; i<ndata; ++i) { > cut_result = cut->EvalInstance(i); > } > Thanks for the clarification! I was constantly wondering what all the fuzz is about. > Cheers, > Philippe. > Ciao, Roland -- TU Muenchen, Physik-Department E18, James-Franck-Str. 85747 Garching Telefon 089/289-12592; Telefax 089/289-12570 -- A mouse is a device used to point at the xterm you want to type in. Kim Alm on a.s.r.
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:10 MET