00001
00002 #include "TH1.h"
00003 #include "TChain.h"
00004 #include "TSystem.h"
00005 #include "TFile.h"
00006 #include <iostream>
00007
00008 class StMuIOMaker;
00009 StMuIOMaker* maker;
00010
00011 TH1D globalPt("globalPt","globalPt",100,0.,3.);
00012 TH1D primaryPt("primaryPt","primaryPt",100,0.,3.);
00013 TH1D l3Pt("l3Pt","l3Pt",100,0.,3.);
00014 TH1D refMult("refMult","refMult",100,0.,100.);
00015
00016 TH2D etaLength("etaLength","etaLength",20,-1,+1,200,0.,200.);
00017
00018
00019 void exampleStMuIOMaker(const char* file="/star/data14/reco/productionCentral/ReversedFullField/P02ge/2001/324/st_physics_2324001_raw_0006.MuDst.root") {
00020 gROOT->LoadMacro("$STAR/StRoot/StMuDSTMaker/COMMON/macros/loadSharedLibraries.C");
00021 loadSharedLibraries();
00022
00023 StMuDebug::setLevel(0);
00024
00025 int counter=0;
00026 int iret=0;
00027
00028 StMuIOMaker* maker = new StMuIOMaker("MuDst");
00029 maker->SetFileAndOpen(file);
00030
00031 TMemStat memStat("exampleMuIO");
00032
00033 StMuDst* mu;
00034
00035
00036
00037
00038
00039
00040
00041 for ( int i=0; i<20; i++) {
00042
00043 iret = maker->Make(i);
00044 if ( iret == kStOK) {
00045 StMuDst* mu = maker->muDst();
00046 if ( !mu ) continue;
00047
00048
00049
00050 int n;
00051 n= mu->globalTracks()->GetEntries();
00052 for (int l=0; l<n; l++) globalPt.Fill(mu->globalTracks(l)->pt());
00053 n= mu->primaryTracks()->GetEntries();
00054 for (int l=0; l<n; l++) primaryPt.Fill(mu->primaryTracks(l)->pt());
00055 n= mu->l3Tracks()->GetEntries();
00056 for (int l=0; l<n; l++) {l3Pt.Fill( mu->l3Tracks(l)->pt() );}
00057
00058
00059 StMuEvent* muEvent = mu->event();
00060 int referenceMultiplicity = muEvent->refMult();
00061 refMult.Fill(referenceMultiplicity);
00062
00063 cout << "#" << i << " index=" << maker->currentIndex()
00064
00065 << " refmult= "<< referenceMultiplicity
00066 << " used= "<< memStat.Used()
00067 << " size= "<< memStat.ProgSize() << endl;
00068 counter++;
00069 }
00070 }
00071 cout << " # of events:" << counter << endl;
00072
00073 globalPt.Draw();
00074 primaryPt.Draw("same");
00075 l3Pt.Draw("same");
00076
00077 TFile f("testMuIO.root","RECREATE");
00078 globalPt.Write();
00079 primaryPt.Write();
00080 l3Pt.Write();
00081 refMult.Write();
00082 f.Close();
00083 }