Re: copy selected entries of subset of chain

From: Margar Simonyan <margar.simonyan_at_gmail.com>
Date: Sun, 17 Apr 2011 12:07:11 +0200


Hi Philippe

the code was crushing at the end (but works fine on singe tree), I thought it was caused by missing brunches. I have to investigate further, but before doing I have one more question. After cloning the input chain I add new branches to the new tree (it does not exist in the chain)

branch = newTree->Branch("var", &var, "var/O");

and var is calculated during event selection. I assume that newTree will be written on a singe file, the input is read from multiple. Is this supposed to work as well?

Thanks,

        Margar

On Fri, Apr 15, 2011 at 5:08 PM, Philippe Canal <pcanal_at_fnal.gov> wrote:
> 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 Sun Apr 17 2011 - 12:07:48 CEST

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