00001
00002
00003
00004
00005 #include "TH1.h"
00006 #include "TChain.h"
00007 #include "TSystem.h"
00008 #include "TFile.h"
00009 #include <iostream>
00010
00011 class StMuDstMaker;
00012 StMuDstMaker* maker;
00013
00014
00015 TH1D globalPt("globalPt","globalPt",100,0.,3.);
00016 TH1D primaryPt("primaryPt","primaryPt",100,0.,3.);
00017 TH1D l3Pt("l3Pt","l3Pt",100,0.,3.);
00018
00019 TH2D etaLength("etaLength","etaLength",20,-1,+1,200,0.,200.);
00020
00021
00022 void examplePt(const char* dir="", const char* file="/star/u/laue/afsWork/test.list",const char* filter="st:MuDst.root", const
00023 char* outFile="test.root") {
00024 gROOT->LoadMacro("$STAR/StRoot/StMuDSTMaker/COMMON/macros/loadSharedLibraries.C");
00025 loadSharedLibraries();
00026
00027 StMuDebug::setLevel(2);
00028
00029
00030
00031
00032 int counter=0;
00033 int iret=0;
00034 StMuTimer timer;
00035 timer.start();
00036 maker = new StMuDstMaker(0,0,dir,file,filter,10);
00037 cout << "time to load chain: " << timer.elapsedTime() <<endl;
00038 timer.reset();
00039 timer.start();
00040 cout << maker->chain()->GetEntries() << " events in chain" << endl;
00041 TMemStat memStat("examplePt");
00042 while ( !(iret=maker->Make()) ) {
00043
00044 StMuDst* mu = maker->muDst();
00045 int n;
00046 n= mu->globalTracks()->GetEntries();
00047 for (int l=0; l<n; l++) globalPt.Fill( mu->globalTracks(l)->pt() );
00048 n= mu->primaryTracks()->GetEntries();
00049 for (int l=0; l<n; l++) primaryPt.Fill( mu->primaryTracks(l)->pt() );
00050 n= mu->l3Tracks()->GetEntries();
00051 for (int l=0; l<n; l++) l3Pt.Fill( mu->l3Tracks(l)->pt() );
00052 if (maker->chain()->GetEntries()) cout << "event# " << counter << " " << counter++/maker->chain()->GetEntries() << "%";
00053 cout << " used= "<< memStat.Used();
00054 cout << " size= "<< memStat.ProgSize();
00055 cout << endl;
00056
00057 }
00058 cout << endl;
00059 if (counter) cout << "time/event " << timer.elapsedTime()/counter <<endl;
00060 cout << " # of events:" << counter << endl;
00061
00062 globalPt.Draw();
00063 primaryPt.Draw("same");
00064 l3Pt.Draw("same");
00065
00066 TFile f(outFile,"RECREATE");
00067 globalPt.Write();
00068 primaryPt.Write();
00069 l3Pt.Write();
00070 f.Close();
00071 }
00072
00073
00074