Re: copy selected entries of subset of chain

From: Margar Simonyan <margar.simonyan_at_gmail.com>
Date: Tue, 12 Apr 2011 15:18:05 +0200


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 Tue Apr 12 2011 - 15:18:40 CEST

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