Re: 2 questions about TH1 class

Diego Casadei (Diego.Casadei@bo.infn.it)
Sat, 30 May 1998 22:29:33 +0200 (MET DST)


The question about the memory allocation of TH1 objects is still valid,
but I found the problem in my code (there is an estraneous asterisk).

The right code contains the line
histvec[max%12][i]=new
TH1F(*(TH1F*)gAMSDisplay->GetRootFile()->Get(string));

Cheers

Diego Casadei
casadei@bo.infn.it
casadei@cern.ch
AMS-BO lab: tel. +39 51 630 5044
fax +39 51 630 5040

On Sat, 30 May 1998, Diego Casadei wrote:

> Hello Rooters,
> I'd like to have a 2-index array of pointers to TH1 objects.
>
> I write:
>
> static TH1* (histvec[12][6]);
>
> for(int i=0;i<6;i++){// don't worry about the sprintf: it does work
> sprintf(string,"h%d",startvec[i]+30*(ilay-1)+ibar-1+14*isid);
> histvec[max%12][i]=new TH1*((TH1*)gAMSDisplay->GetRootFile()->Get(string));
> if(histvec[max%12][i]){
> // do something
> }
> }
>
> but I get an error:
>
> cxx: Error: AMSTOFHist.cxx, line 667: In this statement, the referenced
> type of the pointer value
> "new TH1 ...((TH1 ...)gAMSDisplay->GetRootFile()->Get(string))" is
> "pointer to TH1", which is not compatible with "TH1".
> histvec[max%12][i]=new
> TH1*((TH1*)gAMSDisplay->GetRootFile()->Get(string));
> ----^
>
>
> Another question.
> If I understand, each TH1 object has a unique string identifier.
> I create with "new" many TH1 objects, within different calls of a static
> function. I guess that if I create an object of TH1 with the same name
> (string) as an existing one, I will not allocate additional space with
> "new" but I will overwrite the existing one. At least I hope... if not my
> application will use more and more memory...
>
>
> Thanks
>
> Diego Casadei
> casadei@bo.infn.it
> casadei@cern.ch
> AMS-BO lab: tel. +39 51 630 5044
> fax +39 51 630 5040
>
>