Hi Rooters, Speaking of Date classes. The current root date and time class TDatime has one second precision, but the year must be 1995 or later. I personally need to handle dates older than that, but I don't need one second precision. I have pieced together a fairly sophisticated date class with one day precision which I would be happy to contribute to the project for those who handle older dates and need to do more complicated date arithmetic. Is there other interest in having this? Thoughts Rene? Eddy? Cheers, Steve >From: Eddy Offermann <eddy@rentec.com> >Reply-To: Eddy Offermann <eddy@rentec.com> >To: gavalian@jlab.org, roottalk@pcroot.cern.ch >Subject: Re: [ROOT] Time Graphs. >Date: Thu, 18 May 2000 15:37:10 -0400 (EDT) > >Hi Gagik, > >If I understand you correctly you would like to plot something like >a time series. Here is a simple macro that can accomplish this. >I am using a class "TSDate" to calculate business dates, replace it >with your own times: >{ > TCanvas *c1 = new TCanvas("c1","A Simple Graph",200,10,700,500); > c1->SetGridx(); > c1->SetGridy(); > > Float_t x[20],y[20]; > Char_t *daystr[20]; > TSDate day; > >//-- make data > Int_t n = 20; > TSDate sday("1/1/99"); > Long_t sbusday = sday.GetDateNr(); > for (Int_t i=0;i<n;i++) > { > day.SetDate(sbusday+i); > x[i] = day.GetDateNr(); > y[i] = TMath::Sin((x[i]-sbusday)/n*2*TMath::Pi()); > } > >//--- code needed to get date strings for the x labels > Int_t nrDivisions = 5; > Float_t xmin = x[0]-1.0; > Float_t xmax = x[n-1]+1.0; > Float_t ymin = -1.5; > Float_t ymax = 1.5; > TH1F *frame = new TH1F("frame","bla bla",2,xmin,xmax); > { > frame->SetMinimum(ymin); > frame->SetMaximum(ymax); > frame->SetLabelOffset(10); > frame->SetLabelSize(0.0); > frame->SetNdivisions(-nrDivisions); > frame->SetTitleOffset(1.1,"X"); > frame->SetXTitle("time"); > frame->SetTitleOffset(1.1,"Y"); > frame->SetYTitle("who knows"); > frame->Draw(); > } > > TText *t = new TText(); > { > t->SetTextAlign(22); > t->SetTextSize(0.030); > } > > Float_t timeSpan = xmax-xmin; > Float_t step = Float_t(timeSpan/nrDivisions); > Float_t dist = TMath::Abs(ymax-ymin); > > for (Int_t j=0; j<nrDivisions+1;j++) > { > Float_t xpos = xmin+j*step; > Float_t ypos = ymin-0.05*dist; > day.SetDate(xpos); > t->DrawText(xpos,ypos,day.GetDateString()); > } > >//-- Finally plot the graph > > gr = new TGraph(n,x,y); > gr->SetMarkerStyle(20); > gr->SetMarkerSize(1.0); > gr->SetMarkerColor(kRed); > gr->SetLineWidth(1.0); > gr->Draw("LP"); > >} > >Eddy >Renaissance Technologies Corp. > > ________________________________________________________________________ Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:25 MET