Re: about selecting bins in THnSparse

From: Xianguo Lu <lu.xianguo_at_gmail.com>
Date: Wed, 30 Mar 2011 11:03:34 +0200


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>

> 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 [owner-roottalk_at_root.cern.ch] on behalf
> of Xianguo Lu [lu.xianguo_at_gmail.com]
> Sent: 30 March 2011 10:38
> To: Axel Naumann
> Cc: 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>>
> 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> [
> 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: 26 March 2011 15:12
> To: 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 - 11:03:40 CEST

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