Hi Christophe,
What you do should work. Could you give more details?
Note that with TTree::Draw, you can invoke object member functions !
Rene Brun
On Thu, 29 Aug 2002, Christophe Delaere wrote:
> Hi,
>
> I've got the following problem:
>
> I've a class deriving from TVector3 that I want to store in a TTree.
> The class is stored and I can retrieve it.
> This is just fine.
>
> However, for fast analysis with TTRee::Draw(), I would like to have Pt,
> eta and phi in my TTree.
> The solution I've found is to add those variables in my class, and let
> them be streamed as usual.
> The problem arises when I want to update those fields.
> I can't do it after each action during the object life, so I wanted to
> update them just before streaming the object.
> I've modified the streamer like this:
>
> void HLGlobalTriggerCandidate::Streamer(TBuffer &R__b)
> {
> // Stream an object of class HLGlobalTriggerCandidate.
>
> if (R__b.IsReading()) {
> HLGlobalTriggerCandidate::Class()->ReadBuffer(R__b, this);
> } else {
> et = Pt();
> eta = Eta();
> phi = Phi();
> HLGlobalTriggerCandidate::Class()->WriteBuffer(R__b, this);
> }
> }
>
> ... but it doesn't work.
> et, eta and phi are not stored with the right value.
>
> Can anybody tell me what's wrong ?
>
> Cheers,
> Christophe.
>
> --
> +-----------------------------------------------------------\|/---+
> | Christophe DELAERE office: e253 !o o! |
> | UCL - FYNU phone : 32-(0)10-473234 ! i ! |
> | chemin du cyclotron, 2 fax : 32-(0)10-452183 `-' |
> | 1348 Louvain-la-Neuve BELGIUM e-mail: delaere@fynu.ucl.ac.be |
> +-----------------------------------------------------------------+
>
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:08 MET