Re: about selecting bins in THnSparse

From: Lorenzo Moneta <Lorenzo.Moneta_at_cern.ch>
Date: Wed, 30 Mar 2011 12:54:24 +0000


HI,

 I fully agree with Axel here. Allowing TAxis to set multiple ranges will make the interface too complex. There are many workaround you can use

 Cheers

 Lorenzo
On Mar 30, 2011, at 2:42 PM, Axel Naumann wrote:

> Hi,
>
> If I understand you well, this is a rather generic request: TAxis should allow its bins to be deactivated in a non-continuous way. I will let Lorenzo reply to this as it's his domain. (Though my opinion is that it makes the interface a *lot* more complex for a rather rare use case that even has an obvious work-around.)
>
> Cheers, Axel.
>
> ________________________________________
> From: Xianguo Lu [lu.xianguo_at_gmail.com]
> Sent: 30 March 2011 11:03
> To: Axel Naumann
> Cc: roottalk_at_root.cern.ch
> Subject: Re: [ROOT] about selecting bins in THnSparse
>
> Hi Axel,
>
> yes, it should work. But I think it would really be great if we
> could have the functionality to disable certain axis bins, so
> that we just need to call
> thnsparse->Projection(axisY);
> once and we could call it anywhere in the code, not necessarily
> in a loop and always together with SetRange ...
>
> Cheers,
> Xianguo
>
> 2011/3/30 Axel Naumann <Axel.Naumann_at_cern.ch<mailto:Axel.Naumann_at_cern.ch>>
> Hi,
>
> Even with 10 ranges I don't find it that problematic. You could do:
>
> // The lower, upper bound of the ranges
> int rangeBegin[10] = {...};
> int rangeEnd[10] = {...};
>
> TH1::AddDirectory(false); // we handle histogram lifetime
> TH1* hProjection = 0; // Contains the projection of all the ranges
>
> // Iterate over ranges
> for (int i = 0; i < 10; ++i) {
> thnsparse->GetAxis(0)->SetRange(rangeBegin[i], rangeEnd[i]);
> TH1* hThisProj = (TH1*)thnsparse->Projection(axisY);
> if (hProjection) {
> hProjection->Add(hThisProj);
> delete hThisProj;
> } else {
> hProjection = hThisProj;
> }
> }
>
> Cheers, Axel.
>
> ________________________________________
> From: owner-roottalk_at_root.cern.ch<mailto:owner-roottalk_at_root.cern.ch> [owner-roottalk_at_root.cern.ch<mailto:owner-roottalk_at_root.cern.ch>] on behalf of Xianguo Lu [lu.xianguo_at_gmail.com<mailto:lu.xianguo_at_gmail.com>]
> Sent: 30 March 2011 10:38
> To: Axel Naumann
> Cc: roottalk_at_root.cern.ch<mailto:roottalk_at_root.cern.ch>
> Subject: Re: [ROOT] about selecting bins in THnSparse
>
> Hi Axel,
>
> 2011/3/30 Axel Naumann <Axel.Naumann_at_cern.ch<mailto:Axel.Naumann_at_cern.ch><mailto:Axel.Naumann_at_cern.ch<mailto:Axel.Naumann_at_cern.ch>>>
> Hi,
>
> Apologies for the slow reply - I was away from work and internet for a while.
>
> You could select the first range, do the projection, then select the second range, do the projection to a different histogram, and then add the two projection histograms. Would that do what you are looking for?
>
>
> Thanks for the answer! But it does not fit inot my situation because
> what I actually have is something like 10 patches of discrete ranges,
> each with considerable staticstics. So projection-merge for every
> range is not that economical...
>
> Is there a functionality like disabling some status bits of the axis bins
> so that the disabled bins won't participate in the projection?
>
> Cheers,
> Xianguo
>
>
>
> Cheers, Axel.
>
> ________________________________________
> From: owner-roottalk_at_root.cern.ch<mailto:owner-roottalk_at_root.cern.ch><mailto:owner-roottalk_at_root.cern.ch<mailto:owner-roottalk_at_root.cern.ch>> [owner-roottalk_at_root.cern.ch<mailto:owner-roottalk_at_root.cern.ch><mailto:owner-roottalk_at_root.cern.ch<mailto:owner-roottalk_at_root.cern.ch>>] on behalf of Xianguo Lu [lu.xianguo_at_gmail.com<mailto:lu.xianguo_at_gmail.com><mailto:lu.xianguo_at_gmail.com<mailto:lu.xianguo_at_gmail.com>>]
> Sent: 26 March 2011 15:12
> To: roottalk_at_root.cern.ch<mailto:roottalk_at_root.cern.ch><mailto:roottalk_at_root.cern.ch<mailto:roottalk_at_root.cern.ch>>
> Subject: [ROOT] about selecting bins in THnSparse
>
> Hi Rooters,
>
> I have a question about selecting bins in THnSparse. It is the following.
>
> If I want to select only a certain range of a axis and do the projection of the
> THnSparse, then I do
> thnsparse->GetAxis(axisX)->SetRange(bin0, bin1);
> hh=(TH1D*)thnsparse->Projection(axisY);
>
> But what if I want to selection discontinuous patches of bins, like e.g.
> [bin0-bin1]+[bin4, bin5],
> then is there a simple way to do the projection?
>
> Many thanks!
>
> best regards,
> Xianguo
>
>
> --
> Xianguo Lu
>
> Physikalisches Institut
> Raum 204 OG2
> Philosophenweg 12
> D-69120 Heidelberg
>
> Tel: +49-6221-549499
>
>
>
> --
> Xianguo Lu
>
> Physikalisches Institut
> Raum 204 OG2
> Philosophenweg 12
> D-69120 Heidelberg
>
> Tel: +49-6221-549499
>
>
>
> --
> Xianguo Lu
>
> Physikalisches Institut
> Raum 204 OG2
> Philosophenweg 12
> D-69120 Heidelberg
>
> Tel: +49-6221-549499
>
Received on Wed Mar 30 2011 - 14:54:30 CEST

This archive was generated by hypermail 2.2.0 : Wed Mar 30 2011 - 17:50:01 CEST