Dear Rooters,
I have a problem with my root program that I don't manage to solve.
To present it to you, I simplified my program in that way :
-I have a file minigraph.C which builds a class named Graph :
#include <iostream.h>
#include <TFile.h>
#include <TH1.h>
#include <TCanvas.h>
#include <TGClient.h>
#include <TGWindow.h>
#include <TObject.h>
class Graph
{
public:
char* Histoname;
Graph(){};
~Graph(){};
Graph(char name[20]){Histoname = name;};
void Draw();
};
void Graph::Draw()
{
TFile *f = new TFile("SiliMon85983aa.root");
TH1F *plot = new TH1F();
plot = (TH1F*)f->Get(Histoname);
plot->Draw();
}
-I have then a macro easybookgraphSOS.C :
{
gInterpreter->ProcessLine(".L minigraph.C+");
Graph *h2[2];
char scully[30];
int layer = 0;
sprintf(scully,"P%i",layer);
h2[0]= new Graph(scully);
sprintf(scully,"Z%i",layer);
h2[1] = new Graph(scully);
}
Now, on the ROOT prompt, when I execute :
root [0] .x easybookgraphSOS.C
root [1] h2[0]->Draw();
Instead of P0, the histo Z0 is drawn!
BUT, strangely, if I use two different names of variables (instead of
scully alone), that is to say if I replace easybookgraphSOS.C by :
{
gInterpreter->ProcessLine(".L minigraph.C+");
Graph *h2[2];
char scully[30];
char mulder[30];
int layer = 0;
sprintf(scully,"P%i",layer);
h2[0]= new Graph(scully);
sprintf(mulder,"Z%i",layer);
h2[1] = new Graph(mulder);
}
this time it works : h2[0]->Draw(); draws L0, and
h2[1]->Draw(); draws Z0, as expected... What definitely proves that
letting scully without mulder is a fundamental mistake!! (sorry for those
who don't know anything about those famous TV heroes...)
I must use one variable only because I have to book thousands of
histograms in a similar way.
Could anybody help me?
Thanks a lot in advance.
Stephane
student at CDF/Fermilab for the UC Davis
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:40 MET