00001
00002 rdEz2histoExample(int mxEve=5000,
00003 char *runL="R5132028 R5132029 ",
00004 TString iPath="/star/data04/sim/balewski/daq/ezTree/pp200/pp2/",
00005 int firstSec=5,
00006 int lastSec=5,
00007 int oflTrigId=0
00008 ) {
00009
00010 char *libL[]={
00011 "StRoot/StDbLib/StDbLib.so",
00012 "StRoot/StEEmcUtil/EEfeeRaw/libEEfeeRaw.so",
00013 "StRoot/StEEmcDbMaker/libEEmcDbMaker.so",
00014 "StRoot/StEEmcPool/StEzExample/libEzEEtower.so",
00015 "EEmcDb/libEEmcDb.so"
00016 };
00017
00018 int i;
00019 for(i=0;i<sizeof(libL)/sizeof(char*);i++) {
00020 printf(" load '%s' ...\n",libL[i]);
00021 assert( !gSystem->Load(libL[i]));
00022 }
00023 printf("loaded %d libraries\n",i);
00024
00025
00026
00027 TChain *chain = new TChain("ezstar");
00028
00029 char *run=strtok(runL," ");
00030 int i=0;
00031 do {
00032 printf("add run %d '%s' \n",i++,run);
00033 TString fullName=iPath+run+".ez.root";
00034 chain->Add(fullName);
00035 } while(run=strtok(0," "));
00036
00037 int nEntries = (Int_t)chain->GetEntries();
00038 printf("Sort %d of total Events %d\n",mxEve, nEntries);
00039 int nEve=0;
00040
00041
00042 Int_t nEntries = (Int_t)chain->GetEntries();
00043 if(nEntries<=0) {
00044 printf("\n\nSth is wrong, chain is empty nEntries=%d\n\n",nEntries);
00045 assert(nEntries>0);
00046 }
00047
00048 EEfeeRawEvent *eFee=0;
00049 EEmcEventHeader *eHead =0;
00050 EEstarTrig *eTrig=0;
00051 chain->SetBranchAddress("eemc",&eFee);
00052 chain->SetBranchAddress("head",&eHead);
00053 chain->SetBranchAddress("trig",&eTrig);
00054
00055 chain->GetEntry(0);
00056
00057 long timeStamp=eHead->getTimeStamp();
00058
00059 printf("run timeStamp=%d=%s\n" ,timeStamp,ctime((const time_t *)&timeStamp));
00060
00061
00062 EEmcDb *db=new EEmcDb() ;
00063 db->setThreshold(3.0);
00064 db->requestDataBase(timeStamp,firstSec,lastSec);
00065
00066 TObjArray HList;
00067
00068 EzEEtowerExample *sorter=new EzEEtowerExample;
00069 sorter->set(&HList,db,eFee,eHead,eTrig);
00070 sorter->init();
00071
00072 printf("Sort %d of total Events %d, use trigId=%d\n",mxEve, nEntries,oflTrigId);
00073
00074 int nEve=0,nAcc=0,nOK=0;
00075 int t1=time(0);
00076 for(nEve=0; nEve<nEntries && nEve<mxEve; nEve++) {
00077 chain->GetEntry(nEve);
00078 if(nEve%1000==0)printf("in %d, acc %d ok=%d\n",nEve,nAcc,nOK);
00079 if(oflTrigId>0 && ! eTrig->isTrigID(oflTrigId) ){ continue;}
00080 nAcc++;
00081
00082 int nCr=eFee->maskWrongCrates(timeStamp,eHead->getToken(),EEfeeRawEvent::headVer1);
00083 if(nCr==22) nOK++;
00084 sorter->make();
00085 }
00086 int t2=time(0);
00087 if(t2==t1) t2=t1+1;
00088 float rate=1.*nEve/(t2-t1);
00089 printf("sorting done, nEve=%d, CPU event rate=%.1f Hz\n",nEve,rate);
00090
00091 sorter->finish();
00092
00093
00094
00095 HList.ls();
00096 sorter->saveHisto("aaa");
00097
00098 return;
00099 h=(TH1F*)HList.FindObject("tE");
00100 h->Draw(""); gPad->SetLogy();
00101 }
00102