////////// THE MOUSE IS WATCHED BY: void CChildView::OnLButtonDown(UINT nFlags, CPoint point) { TObject *sel; CString cStat = ""; if (fCanvas) { fCanvas->HandleInput(kButton1Down, point.x, point.y); sel = gPad->GetSelected(); CString cThisClass = sel->ClassName(); if (HistNumber() >= 0) cStat = cThisClass + " " + sel->GetObjectInfo(point.x,point.y); } CWnd::OnLButtonDown(nFlags, point); if ((cStat != "")&& iDebug) AfxMessageBox(cStat); } ////////// WHERE PADS ARE CHECKED BY: int CChildView::HistNumber() { int ii = 0; char cThisPad[40]; strncpy(cThisPad, fCanvas->GetSelected()->GetName(), sizeof(cThisPad)); if (strncmp(cThisPad, "fCanvas_", 8) == 0) ii = atoi(&cThisPad[8]); return ii; } ////////// HISTOGRAMS ARE DRAW BY: void CChildView::BuildPlot(int iLoc) { char cFormat[150]; char cX[10], cY[10], cXY[10]; char cAxis[50] = "100,,"; int iParmX = GetXDef(iLoc-1); int iParmY = GetYDef(iLoc-1); TH1F *hHist; TH2F *hDots; fCanvas->cd(iLoc); if ((iParmY < 0) && (iParmX >= 0)) { //show histogram sprintf(cX, "cX%d", iLoc); sprintf(cFormat, "%s>>%s(%s)", &cRootTxt[iParmX][0], cX, cAxis); fTree->Draw(cFormat,"",""); } else { //dot plot if ((iParmY >= 0) && (iParmX >= 0)) { sprintf(cXY, "cXY%d", iLoc); sprintf(cFormat, "%s:%s>>%s(%s,%s)", &cRootTxt[iParmY][0], &cRootTxt[iParmX][0], cXY, cAxis, cAxis); fTree->Draw(cFormat,"","COL"); } } } ////////// ON A CANVAS SPLIT BY: void CChildView::BuildRootCanvas() { RECT rect; GetWindowRect(&rect); int width = rect.right-rect.left; int height = rect.bottom-rect.top; int wid = gVirtualX->AddWindow((ULong_t)m_hWnd, width, height); GetProto(); // load setup parameters fCanvas = new TCanvas("fCanvas", width, height, wid); fCanvas->SetFillColor(10); fCanvas->SetBorderMode(0); fCanvas->SetSupportGL(kTRUE); fCanvas->SetTitle("Gigasort Data Frame"); gStyle->SetPalette(1); gStyle->SetOptStat(0); //turn off stats globally fCanvas->Divide(4,2,0.0005,.0005); //size doesn't matter... fCanvas->Update(); }