00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 void MakeHists(Char_t *xdffilename=
00028 "/afs/rhic.bnl.gov/star/data/samples/gstar.dst.xdf")
00029 {
00030
00031 gROOT->Reset();
00032 Bool_t NT = kFALSE;
00033 if (strcmp(gSystem.GetName(),"WinNT")==0){
00034 NT = kTRUE;
00035 if (gSystem.Load("St_base.dll")) printf(" Loading DLL \"St_base.dll\" failed \n");
00036 if (gSystem.Load("St_Tables.dll")) printf(" Loading DLL \"St_Tables.dll\" failed \n");
00037 }
00038 else{
00039 if (gSystem.Load("St_base.so")) printf(" Loading DLL \"St_base.so\" failed \n");
00040 if (gSystem.Load("xdf2root.so")) printf(" Loading DLL \"xdf2root.so\" failed \n");
00041 if (gSystem.Load("St_Tables.so")) printf(" Loading DLL \"St_Tables.so\" failed \n");
00042 }
00043
00044
00045 St_XDFFile xdf(xdffilename);
00046 St_DataSet *event = xdf.NextEventGet();
00047 if (!event) { printf(" NO events \n"); return;}
00048 event->ls("*");
00049 St_DataSet *set=0;
00050 St_DataSetIter root(event);
00051 set = root.Cd("/evgen/particle");
00052
00053 if (set && set->HasData()) {
00054 St_particle *pa = (St_particle *)set;
00055 pa->ls("*");
00056
00057 printf(" Checking the results \n");
00058
00059 table_head_st *t1_h = pa->GetHeader();
00060
00061 printf(" Name=%s type=%s t1_h.nok = %i \n", t1_h->name, t1_h->type, t1_h->nok);
00062 printf(" t1_h.rbytes = %i \n", t1_h.rbytes);
00063
00064 particle_st *particle = pa->GetTable();
00065
00066
00067
00068
00069
00070 TH1F *h1 = new TH1F("h1","phep(3)",100);
00071 h1->SetFillColor(16);
00072
00073
00074
00075 TH1F *h1Sqrt=new TH1F("h1Sqrt","666.sqrt",100);
00076
00077
00078
00079
00080 TH1F *h2Log1= new TH1F("h2Log1","666.log1",100);
00081 h2Log1->SetFillColor(42);
00082
00083
00084
00085 TH1F *h3Log2=new TH1F("h3Log2","666.log2",100);
00086 h3Log2->SetFillColor(46);
00087
00088 TSlider *slider = 0;
00089
00090 Int_t kUPDATE = t1_h.nok/20;
00091
00092
00093
00094 c1 = new TCanvas("c1","The reading STAF table: \"particle.h\"",200,10,600,800);
00095 c1->SetGrid();
00096 gBenchmark->Start("hsum");
00097
00098 Int_t l = 0;
00099 Int_t nev =0;
00100 for (l=0; l < pa->GetNRows(); l++)
00101 {
00102 nev++;
00103 particle_st *p = particle[l];
00104
00105
00106
00107 h1->Fill(p->phep[2]);
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119 if ( p->phep[0] != 0 )
00120 {
00121 h1Sqrt->Fill(::sqrt(p->phep[0]**2+p->phep[1]**2));
00122 h2Log1->Fill(::sqrt(tan(0.5*atan(p->phep[2]/::sqrt(p->phep[0]**2+p->phep[1]**2))+.7854)));
00123 }
00124
00125
00126
00127
00128 if ( p->idhep ==211 || p->idhep == -211)
00129 h3Log2->Fill(::log(tan(0.5*atan(p->phep[2]/::sqrt(p->phep[0]**2+p->phep[1]**2))+.7854)));
00130
00131
00132
00133 if (l && (l%kUPDATE) == 0) {
00134 if (l == kUPDATE) {
00135 h1Sqrt->Draw("e1p");
00136 h2Log1->Draw("same");
00137 h1->Draw("same");
00138 h3Log2->Draw("same");
00139 c1->Update();
00140 slider = new TSlider("slider","test",1.05,0,1.1,h1Sqrt->GetMaximum()*1.3,38);
00141 slider->SetFillColor(46);
00142 }
00143 if (slider) slider->SetRange(0,Float_t(l)/t1_h->nok);
00144 c1->Modified();
00145 c1->Update();
00146 }
00147 }
00148
00149 slider->SetRange(0,1);
00150 c1->Modified();
00151 gBenchmark->Show("hsum");
00152 }
00153 printf(" This is a finish \n");
00154 printf(" You may pick up this example from /afs/rhic.bnl.gov/star/packages/dev/StRoot/macros/MakeHists.cxx\n");
00155 }
00156