00001
00002 class StChain;
00003 StChain *chain=0;
00004 TH1F *hbx=0, *hfb=0;
00005 TH2F *hs8ev=0,*hs8db=0, *hs4db=0, *hdbx=0;
00006 TFile *hf=0;
00007
00008 void rdSt2spinTest( Int_t nevents=10){
00009
00010 char * fname="/star/data03/daq/2005/janMisc/st_physics_6156028_raw_2040010.event.root";
00011
00012 initHisto();
00013
00014 gROOT->LoadMacro("$STAR/StRoot/StMuDSTMaker/COMMON/macros/loadSharedLibraries.C");
00015 loadSharedLibraries();
00016 cout << " loading done " << endl;
00017 gSystem->Load("StDbLib");
00018 gSystem->Load("StDbBroker");
00019 gSystem->Load("St_db_Maker");
00020 gSystem->Load("StSpinDbMaker");
00021
00022
00023 chain = new StChain("bfc");
00024
00025
00026 StIOMaker* ioMaker = new StIOMaker();
00027 ioMaker->SetFile(fname);
00028 ioMaker->SetIOMode("r");
00029 ioMaker->SetBranch("*",0,"0");
00030 ioMaker->SetBranch("eventBranch",0,"r");
00031 ioMaker->SetIOMode("r");
00032
00033 St_db_Maker *stDb = new St_db_Maker("StarDb", "MySQL:StarDb");
00034 spDb=new StSpinDbMaker("spinDb");
00035
00036 gMessMgr->SwitchOff("D");
00037 gMessMgr->SwitchOn("I");
00038
00039 chain->ls(3);
00040 Int_t initStat = chain->Init();
00041 if (initStat) chain->Fatal(initStat, "during Init()");
00042
00043 int istat=0,iev=0;
00044
00045
00046 while(1) {
00047 if (iev>=nevents) break;
00048 chain->Clear();
00049 istat = chain->Make();
00050 iev++;
00051 if(istat) break;
00052 cout << "---------------------- Processing Event : " << iev << " ---------------------- " << istat<<endl;
00053
00054 if(iev==1){
00055
00056 for(int bx48=0;bx48<120;bx48++){
00057 int bxStar=spDb->BXstarUsingBX48(bx48);
00058 if(spDb->isBXfilledUsingBX48(bx48)) hfb->Fill(bxStar);
00059
00060 }
00061 }
00062 if (istat == kStEOF || istat == kStFatal) break;
00063
00064 StEvent* mEvent = (StEvent*)chain->GetInputDS("StEvent");
00065 assert(mEvent);
00066 StTriggerIdCollection *tic=mEvent->triggerIdCollection();
00067 assert(tic);
00068
00069 StTriggerData* trgD= mEvent->triggerData(); assert(trgD);
00070 int bx48=trgD->bunchId48Bit();
00071 int bx7=trgD->bunchId7Bit();
00072 int bxStar48=spDb->BXstarUsingBX48(bx48);
00073 int bxStar7=spDb->BXstarUsingBX7(bx7);
00074 int bxPhase=spDb->offsetBX48minusBX7(bx48,bx7);
00075 int spin8ev=trgD->spinBit();
00076 int spin8db=spDb->spin8usingBX48(bx48);
00077 int spin4db=spDb->spin4usingBX48(bx48);
00078
00079 hbx->Fill(bxStar48);
00080 hdbx->Fill(bxStar48,bxStar7);
00081 hs8ev->Fill(bxStar48,spin8ev);
00082 if(spDb->isBXfilledUsingBX48(bx48)){
00083 hs8db->Fill(bxStar48,spin8db);
00084 hs4db->Fill(bxStar48,spin4db);
00085 }
00086 int nV=mEvent->numberOfPrimaryVertices();
00087 printf("eveID=%d nPrimVert=%d ", mEvent->id(),nV);
00088 printf("bx48=%3d bx7= %3d bxPhase=%3d spin8: ev=0x%02x : 0x%02x=db bxStar48=%3d \n",bx48,bx7,bxPhase,spin8ev,spin8db,bxStar48);
00089
00090 }
00091 hf->Write();
00092
00093 }
00094
00095
00096
00097 void initHisto() {
00098 hf=new TFile("outx.hist.root","recreate");
00099 hbx=new TH1F("bx","Rate vs. true bXing from bx48; bXing at STAR IP",120,-0.5,119.5);
00100 hfb=new TH1F("fb","Intended fill pattern; bXing at STAR IP",120,-0.5,119.5);
00101
00102 hs8ev=new TH2F("s8ev","spin8(eve) vs. true bXing from bx48; bXing at STAR; spin8 from event",120,-0.5,119.5,100,-0.5,99.5);
00103 hs8db=new TH2F("s8db","spin8(db) vs. true bXing from bx48; bXing at STAR; spin8 from DB",120,-0.5,119.5,100,-0.5,99.5);
00104
00105 hs4db=new TH2F("s4db","spin4(db) vs. true bXing from bx48; bXing at STAR; spin4 from DB",120,-0.5,119.5,100,-0.5,15.5);
00106
00107 hdbx=new TH2F("dbx","bx7 vs. true bXing from bx48; bXing at STAR;bx7",120,-0.5,119.5,120,-0.5,119.5);
00108 }