00001 class StMaker;
00002 void rmMaker(const StMaker *top,const char *key);
00003 int runStv(const char *daqFile,const char *flg,int nEvents)
00004 {
00005 gROOT->LoadMacro("bfc.C");
00006 gROOT->LoadMacro("$STAR/StarVMC/GeoTestMaker/GeoTestLoad.C");
00007 GeoTestLoad();
00008 gSystem->Load("/usr/lib/mysql/libmysqlclient_r.so");
00009 TString opt(flg),fil(daqFile);
00010 int fr=1,to=nEvents;
00011 int ierr = 0;
00012
00013 opt += " StiPulls";
00014
00015
00016 bfc(-1,opt,fil);
00017
00018
00019
00020
00021
00022
00023
00024 chain->SetAttr(".call","SetActive(0)",".*Tof.*Maker::");
00025 chain->SetAttr(".call","SetActive(0)",".*Emc.*Maker");
00026 chain->SetAttr(".call","SetActive(0)","dEdxY2");
00027
00028 StMaker *mk=0;
00029 gSystem->Load("StvUtil.so");
00030 gSystem->Load("Stv.so");
00031 gSystem->Load("StvMaker.so");
00032 mk = new StvMaker();
00033 chain->AddAfter("Sti",mk);
00034
00035 rmMaker(chain,"::geant");
00036 rmMaker(chain,"MuDst.*");
00037 rmMaker(chain,"StFtpc.*::");
00038 rmMaker(chain,"StEmc.*::");
00039 rmMaker(chain,"StEEmc.*::");
00040 rmMaker(chain,"Sti");
00041 rmMaker(chain,"StKinkMaker");
00042 rmMaker(chain,"StXiFinderMaker");
00043
00044
00045
00046
00047 chain->Init();
00048
00049 chain->EventLoop(nEvents);
00050 return 99;
00051 }
00052
00053 void rmMaker(const StMaker *top, const char *key)
00054 {
00055 TRegexp rex(key);
00056 for (int del=1;del;) {
00057 TDataSetIter iter((TDataSet*)top,20);
00058 del=0;
00059 for(const TDataSet *mk=top;mk;mk = iter.Next()) {
00060 if(strncmp(".maker",mk->GetTitle(),6)!=0) continue;
00061 TString ts(mk->ClassName()); ts+="::";
00062 ts+=mk->GetName();
00063 if (ts.Index(rex)<0) continue;
00064 printf("*** Remove %s *** \n",ts.Data());
00065 delete mk; del = 1; break;
00066 }
00067 }
00068
00069 printf("*** Maker %s Not Found ***\n",ts.Data());
00070
00071 }
00072