00001 class StChain;
00002 class StMuEmcCollection;
00003
00004 class StEEmcDb;
00005 class StMuDstMaker;
00006 class TChain;
00007
00008 StEEmcDb *myDb;
00009 StMuDstMaker* muMk;
00010 StChain *chain=0;
00011
00012 int rdMu2soloPi0(
00013 char* file="R7114062.lis",
00014 int nEve=1e3,
00015 Int_t nFiles = 999,
00016 char* outDir = "out2/"
00017 ){
00018 char* inDir = "./runList/";
00019
00020 gROOT->LoadMacro("$STAR/StRoot/StMuDSTMaker/COMMON/macros/loadSharedLibraries.C");
00021 loadSharedLibraries();
00022 cout << " loading done " << endl;
00023 gSystem->Load("StDbLib");
00024 gSystem->Load("StDbBroker");
00025 gSystem->Load("St_db_Maker");
00026 gSystem->Load("StEEmcUtil");
00027 gSystem->Load("StEEmcDbMaker");
00028 gSystem->Load("StEEsoloPi0");
00029
00030 gROOT->Macro("LoadLogger.C");
00031
00032
00033 chain = new StChain("StChain");
00034
00035 printf("adding muDst from '%s' ....\n",file);
00036
00037 muMk = new StMuDstMaker(0,0,inDir,file,"MuDst.root",nFiles);
00038 TChain* tree=muMk->chain(); assert(tree);
00039 int nEntries=tree->GetEntries();
00040 printf("total eve in chain =%d\n",nEntries);
00041
00042 St_db_Maker *stDb = new St_db_Maker("StarDb", "MySQL:StarDb");
00043
00044 new StEEmcDbMaker("eemcDb");
00045
00046
00047 myMk3=new StEEsoloPi0Maker("soloPi0","MuDst");
00048 TObjArray HList;
00049 myMk3->SetHList(&HList);
00050
00051 #if 0 // flags for M-C events
00052 stDb->SetDateTime(20031120,0);
00053 stDb->SetFlavor("sim","eemcPMTcal");
00054 stDb->SetFlavor("sim","eemcPIXcal");
00055 stDb->SetFlavor("sim","eemcPMTped");
00056 stDb->SetFlavor("sim","eemcPMTstat");
00057 stDb->SetFlavor("sim","eemcPMTname");
00058 stDb->SetFlavor("sim","eemcADCconf");
00059 myMk3->SetMCflag();
00060 #endif
00061
00062
00063 chain->Init();
00064 chain->ls(3);
00065
00066 int eventCounter=0;
00067 int stat=0;
00068 int t1=time(0);
00069
00070 while ( stat==0 ) {
00071 if(eventCounter>=nEve) break;
00072 eventCounter++;
00073 chain->Clear();
00074 stat = chain->Make();
00075
00076 if(eventCounter%300!=0)continue;
00077
00078 printf("\n====================%d processing ==============\n", eventCounter);
00079
00080 }
00081 printf("sorting done, nEve=%d of %d\n",nEve, nEntries);
00082 int t2=time(0);
00083 float rate=1.*eventCounter/(t2-t1);
00084 float nMnts=(t2-t1)/60.;
00085 printf("sorting done %d of nEve=%d, CPU rate=%.1f Hz, tot %.1f minutes\n",eventCounter,nEntries,rate,nMnts);
00086
00087 chain->Finish();
00088
00089 TString fullName=file; fullName.ReplaceAll(".lis",".hist.root");
00090 fullName=outDir+fullName;
00091 TFile f( fullName,"recreate");
00092 assert(f.IsOpen());
00093 printf("%d histos are written to '%s' ...\n",HList.GetEntries(),fullName.Data());
00094 HList.Write();
00095 f.Close();
00096 assert(!f.IsOpen());
00097
00098 }