Hi Birger,
I do not understand what you want to do with this class. Anyhow,
I suggest to modify your constructor like this:
TBand::TBand(TH1F *H){
Float_t *fx,*fy;
int i;
DefaultHisto(H);
int N=2*fND;
fx=(Float_t *)new Float_t[N];
fy=(Float_t *)new Float_t[N];
for(i=1; i<= fND ; i++){
fx[i-1] =H->GetBinCenter(i);
fx[N-i] = H->GetBinCenter(i);
fy[i-1] = fy[N-i] = H->GetBin(i);
}
SetPolyLine(N,fx,fy);
}
Rene Brun
Birger Koblitz wrote:
>
> Hi,
>
> I am trying to make a class to show the band defined by a MC using
> different of the tuning parameters. I do this via inheriting from
> TPolyLine:
>
> ---------- TBand.h ----------------
> #ifndef TBAND_H
> #define TBAND_H
>
> #if !defined(__CINT__) || defined(__MAKECINT__)
> #include <TPolyLine.h>
> #endif
> class TBand : public TPolyLine{
> Int_t fND; // Number of default Points
> Float_t *fXD;
> Float_t *fYD;
>
> public:
> TBand();
> TBand(TH1F *H);
> ~TBand();
> void AddHisto(TH1F *H);
> void DefaultHisto();
> };
>
> #endif
>
> // A constructor
> TBand::TBand(){
> fND=0;
> fXD=0;
> fYD=0;
> }
>
> ------------ TBand.C ------------------
> #include "TBand.h"
>
> TBand::TBand(TH1F *H){
> Float_t *fx,*fy;
> int i;
>
> DefaultHisto(H);
>
> fN=2*fND;
> fx=(Float_t *)new Float_t[fN];
> fy=(Float_t *)new Float_t[fN];
> cout << "2. " << fx << " " << fX << endl;
> fX=(Float_t *)fx; fY=(Float_t *)fy;
> cout << "1. " << fx << " " << fX << endl;
> for(i=1; i<= fND ; i++){
> fx[i-1] =H->GetBinCenter(i);
> fx[fN-i] = H->GetBinCenter(i);
> fY[i-1] = fY[fN-i] = H->GetBin(i);
> }
> }
>
> void TBand::DefaultHisto(TH1F *H){
>
> fND=H->GetNbinsX();
> if(!fND) return;
>
> fXD=(Float_t *)new Float_t[fND];
> fYD=(Float_t *)new Float_t[fND];
>
> for(int i=1; i<= fND ; i++){
> fXD[i]=H->GetBinCenter(i);
> fYD[i]=H->GetBin(i);
> }
> }
> -----------------------------------------------
>
> Now starting the code and looking what is written into the protected data
> member fX one sees:
> root [0] .L TBand.C
> root [1] TFile f("gen/qcdins_new.root")
> root [2] h133->Draw("bsph >> hi") // Make some histo
> root [5] TBand tb(hi) // Init Band
> 1. 0x209895b8 0xc8
> 2. 0x209895b8 0x209898e8 ????????????????????/
>
> which gives a nice segmentation violation some lines later. Obviously the
> class can not overwrite the protected data member!
> Could someone help me, please?
>
> Cheers,
> Birger
>
> /------------------------------------------------------------\
> | Birger Koblitz koblitz@mail.desy.de |
> | Max-Planck-Institut fuer Physik |
> | (Werner Heisenberg-Institut) |
> | DESY-FH1K Tel. (40) 8998-3971 |
> | Notkestr. 85 |
> | D-22603 HAMBURG |
> \------------------------------------------------------------/
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:26 MET