Hi all, I have the following problem: For the purpose of my analysis I have root trees with Branches containing many leafs (all are simple floats/integers). In order to get the cross-sections a number of (combinations of ) variables have to be extracted for different selections. These variables and cuts are passed to the class as character strings. e.g. I need to evaluate cos(Thetah), cos(mc_Thetah),(Q2+0.59)^2.2/(Q2+1.02)^0.2, goodevent&&BoxCut, Q2>2&&Q2<5&&t<1 etc... There is a way to get it tree->Draw("cos(Thetah):cos(mc_Thetah)",cut1) double* var1 = tree->GetV1() // contains cos(Thetah) double* var2 = tree->GetV2() // contains cos(mc_Thetah) However for more than 3 variables and few cuts one has to loop MANY times over the tree to get it. The I/O is the slowest operation and this is the main limit on the speed of my calculations. For this reason I would like to know if there is other way to do this if there would be a method like double TTree::Eval(const char* variable) or something more efficient so that one doesn't have to parse the string by every call. This would mean that after tree->GetEntry(10) var = tree->Eval("cos(Thetah)") the var would contain the value of cos(Thetah) for entry 10 This way I could do all my calculation in one loop through the data. Well, there is a way to do it if the variable is just a simple Leaf but is there anything I could use to evaluate more complicated strings? I think it must be already implemented somehow since the TTree::Draw() uses it extensively but I couldn't find it anywhere and many people around would be interested in this feature. Best regards, Miro Version 3.05/05 5 June 2003 for linuxsuse6
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:16 MET