Dear rooters,
I have an online histogram need to be displayed and it has been done in
a right way. But for some reason which I don't know I am not able to
update the histogram with the Update function of TH1 class. In order to
update the histogram on corrent pad I have to delete and then recreate the
Canvas. My source code is as following. Could you give me any help?
--------------------------------------------------------------------------
Tcanvas *smap;
smap = (TCanvas*)gROOT->GetListOfCanvases()->FindObject(obj->GetName());
if (smap) {
// hope not delete smap if already exist
smap->Delete();
smap = new TCanvas(obj->GetName(), obj->GetName());
//
} else {
smap = new TCanvas(obj->GetName(), obj->GetName());
}
smap->cd();
objs = gDirectory->Get(obj->GetName());
if (objs) {
if (objs->IsA() == TH1F::Class()) {
//__________Get histo from host
netm = SDPtr->GetNMPtr();
if (netm) {
netm->sendget((char*)objs->GetName(), smap);
smap->Update();
}
//
}
}
/**********************************************************/
void NetManager::sendget(char* hname, TPad *fig)
/**********************************************************/
{
TMessage* mess;
int len;
// the client tells the server the histo name
socket->Send(hname, kMESS_STRING);
// now it receives such histo
len = socket->Recv(mess);
if (len<=0)
{
cout << "ERROR in Recv histogram!" << endl;
}
else
{
if (mess->What() == kMESS_OBJECT) {
//char answer[3];
if (mess->IsA() == TH1F::Class()){
TH1F *h = (TH1F*) mess->ReadObject(mess->GetClass());
fig->cd();
h->Draw();
}
} else if (mess->What() == kMESS_STRING){
char str[64];
mess->ReadString(str, 64);
cout << "ERROR: " << str << endl;
}
delete mess;
}
}
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
M
Wen Mei M
M
DAQ-KLOE-LNF-INFN M
via E. Fermi 40 M
I-00044 Frascati (RM) W
Italy W
W
tel: 94032753 W
W
WWWWWWWWWWWWWWWWWWWWWWWWWWWWW
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:38 MET