Re: copy selected entries of subset of chain

From: Philippe Canal <pcanal_at_fnal.gov>
Date: Fri, 15 Apr 2011 10:08:24 -0500


Hi Margar,

> Since all branches of chain are active at that point, it tries to set
> address for newTree for branches that newTree does not have.

This should 'only' result in a warning (that you can suppress by changing the value of gErrorIgnoreLevel). So besides these warnings what else is not working correctly?

Cheers,
Philippe.

On 4/12/11 8:18 AM, Margar Simonyan wrote:
> Hi Philippe
>
> when the second file is opened and, if I understand well, ROOT changes
> branch addresses of chain, it also forwards the changes to newTree.
> Since all branches of chain are active at that point, it tries to set
> address for newTree for branches that newTree does not have. This is
> at least one problem.
>
> Thanks,
> Margar
>
>
> On Tue, Apr 12, 2011 at 3:06 PM, Philippe Canal<pcanal_at_fnal.gov> wrote:
>> Hi Margar,
>>
>> Then all the ingredients are there and it should work ... unless their
>> ordering
>> and calls are wrongly set (I would need more code to know).
>>
>> Cheers,
>> Philippe.
>>
>> On 4/12/11 8:02 AM, Margar Simonyan wrote:
>>> Hi Philippe
>>>
>>> sorry, that was a typo in the e-mail, I have
>>> chain->SetBranchStatus("*", 1) in the code, as well as LoadEntry,
>>> GetEntry etc.
>>>
>>> Margar
>>>
>>>
>>>
>>> On Tue, Apr 12, 2011 at 2:58 PM, Philippe Canal<pcanal_at_fnal.gov> wrote:
>>>> Hi Margar,
>>>>
>>>> (Besides the missing LoadEntry, GetEntry and SetBranchAddress which I
>>>> assume
>>>> are in the routines
>>>> you did no show), it seems that the problem is the 2nd argument of the
>>>> 2nd
>>>> SetBranchStatus,
>>>> I think it should read:
>>>>
>>>> chain->SetBranchStatus("*", 1);
>>>>
>>>> Cheers,
>>>> Philippe.
>>>>
>>>> On 4/12/11 2:43 AM, Margar Simonyan wrote:
>>>>> Hello ROOTTalk
>>>>>
>>>>> I would like to copy selected entries of some branches of TChain to
>>>>> another tree. So far my attempt work for single tree but not for a
>>>>> chain. Simplified logic looks like this:
>>>>>
>>>>> type var1;
>>>>> TBranch * b1=0;
>>>>> chain->SetBranchAddress("var1",&var1,&b)
>>>>>
>>>>> chain->SetBranchStatus("*", 0)
>>>>> chain->SetBranchStatus("var1", 1);
>>>>>
>>>>> f = TFile::Open("file.root", "UPDATE");
>>>>> newTree = chain->CloneTree(0);
>>>>>
>>>>> now have to enable all branches since they are needed for event
>>>>> selection
>>>>> chain->SetBranchStatus("*", 0);
>>>>> for(; ; )
>>>>> if(selection_function())
>>>>> newTree->Fill()
>>>>>
>>>>>
>>>>> The trees are connected and when a new file is opened in chain things
>>>>> go wrong. I tried reseting the branch addresses, but it didn't work.
>>>>> Is there any way to get it working?
>>>>>
>>>>> Thanks,
>>>>> Margar
>>>>>
>>>>> -------------------------------------------------------------------------
>>>>> Dr Margar Simonyan, post-doctoral researcher
>>>>> Niels Bohr Institute, Copenhagen University
>>>>>
>>>>> -------------------------------------------------------------------------
>>>>>
Received on Fri Apr 15 2011 - 17:08:36 CEST

This archive was generated by hypermail 2.2.0 : Sun Apr 17 2011 - 17:50:01 CEST