//This macro plots HITS vs TOF using raw data. { #define MAX_EVENT 1000000 //THIS IS THE PART THAT MAKES IT 'ONLINE' (more below)/////////////////////////////// gSystem->Load("libEtSpy.so"); TEtSpy *etspy = new TEtSpy(); etspy->OpenSpy("/scratch/dblast07/blast/et_data/et_sys_pro2003"); int n, i, j, k, d[10000]; //it reads whatever is in the et pipe so a run number is not required ///////////////////////////////////////////////////////////////////////////////////// gSystem.Load("libBlast.so"); TBLRaw raw("electronics.map"); char title[125]; int sect, pad, tb; TH1F *LSECT_HITS = new TH1F("LEFT SECTOR","LEFT SECTOR",32,0,16); TH1F *RSECT_HITS = new TH1F("RIGHT SECTOR","RIGHT SECTOR",32,0,16); TCanvas *c1 = new TCanvas("Main","Hits vs TOF", 10, 10, 1200, 900); gStyle->SetOptTitle(kFALSE); gStyle->SetTitleOffset(1.5,"Y"); c1->Range(0,0,25,18); c1->SetFillColor(40); TPaveLabel *pl = new TPaveLabel(1,16.3,24,17.5,"HITS VS TOF WITH GOOD ADC & TDC","br"); pl->SetFillColor(18); pl->SetTextFont(32); pl->SetTextColor(49); pl->Draw(); pad1 = new TPad("pad1","This is pad1",0.02,0.02,0.48,0.83,17); pad2 = new TPad("pad2","This is pad2",0.52,0.02,0.98,0.83,17); pad1->Draw(); pad2->Draw(); pad1-> SetLeftMargin(0.15); pad2-> SetLeftMargin(0.15); TText *t = new TText(); t->SetTextFont(32); t->SetTextColor(1); t->SetTextSize(0.03); t->SetTextAlign(12); t->DrawText(4.1,15.5,"LEFT SECTOR TOFS"); t->DrawText(16.,15.5,"RIGHT SECTOR TOFS"); pad1->cd(); LSECT_HITS->SetFillColor(kGreen); LSECT_HITS->SetStats(kFALSE); LSECT_HITS->SetXTitle("LEFT TOF #"); LSECT_HITS->SetYTitle("HITS"); LSECT_HITS->GetXaxis()->CenterTitle(); LSECT_HITS->GetYaxis()->CenterTitle(); LSECT_HITS->SetTitleOffset(1.9,"Y"); pad2->cd(); RSECT_HITS->SetFillColor(kGreen); RSECT_HITS->SetStats(kFALSE); RSECT_HITS->SetXTitle("RIGHT TOF #"); RSECT_HITS->SetYTitle("HITS"); RSECT_HITS->GetXaxis()->CenterTitle(); RSECT_HITS->GetYaxis()->CenterTitle(); RSECT_HITS->SetTitleOffset(1.9,"Y"); int nSC, nCC; for (k = 0; kNewEvent(d); raw.ReadNext(n,d); printf(">> %d %d \n",j,n); if (raw.GetEventType() == 1){ // for (i=0;i 100 && raw.GetSCtdc(kSC) <4096 && raw.GetSCadc(kSC) > 1000 && raw.GetSCadc(kSC) <8192){ LTOP = 1; LPAD = pad; } if (sect == 0 && tb == 1 && raw.GetSCtdc(kSC) > 100 && raw.GetSCtdc(kSC) <4096 && raw.GetSCadc(kSC) > 1000 && raw.GetSCadc(kSC) <8192){ LBOT = 1; LPAD = pad; } if (sect == 1 && tb == 0 && raw.GetSCtdc(kSC) > 100 && raw.GetSCtdc(kSC) <4096 && raw.GetSCadc(kSC) > 1000 && raw.GetSCadc(kSC) <8192){ RTOP = 1; RPAD = pad; } if (sect == 1 && tb == 1 && raw.GetSCtdc(kSC) > 100 && raw.GetSCtdc(kSC) <4096 && raw.GetSCadc(kSC) > 1000 && raw.GetSCadc(kSC) <8192){ RBOT = 1; RPAD = pad; } } //IF BOTH TOP AND BOTTOM TUBES ARE HIT INCREMENT THE NUMBER OF HITS FOR THIS TOF if (LTOP == 1 && LBOT == 1){ LSECT_HITS->Fill(LPAD); } else if (RTOP ==1 && RBOT ==1){ RSECT_HITS->Fill(RPAD); } }//get event type // }//while }//j loop pad1->cd(); LSECT_HITS->Draw(); char bin[100]; for (int i=1;iGetNbinsX();i++){ if (i==1){ sprintf(bin,"%d",0); LSECT_HITS->GetXaxis()->SetBinLabel(i,bin); } else { i = i + 1; sprintf(bin,"%d",(i-1)/2); LSECT_HITS->GetXaxis()->SetBinLabel(i,bin); } if (LSECT_HITS->GetBinContent(i) < 1) { TText *t = new TText(); t->SetTextFont(62); t->SetTextColor(kRed); t->SetTextSize(.03); t->SetTextAlign(12); t->SetTextAngle(90); t->DrawText(LSECT_HITS->GetBinCenter(i)+.06,0,"NO TDC / ADC DATA"); } } pad2->cd(); RSECT_HITS->Draw(); //THESE BELOW LOOPS LINE UP THE BINS LABELS------------- for (int i=1;iGetNbinsX();i++){ if (i==1){ sprintf(bin,"%d",0); RSECT_HITS->GetXaxis()->SetBinLabel(i,bin); } else { i = i + 1; sprintf(bin,"%d",(i-1)/2); RSECT_HITS->GetXaxis()->SetBinLabel(i,bin); } if (RSECT_HITS->GetBinContent(i) < 1) { TText *t = new TText(); t->SetTextFont(62); t->SetTextColor(kRed); t->SetTextSize(0.03); t->SetTextAlign(12); t->SetTextAngle(90); t->DrawText(LSECT_HITS->GetBinCenter(i)+.06,0,"NO TDC / ADC DATA"); } } //NOT SURE IF I NEED THESE FOR THE ONLINE UPDATE SO I'LL PUT THEM IN////////////////////// pad1->Modified(); pad1->Update(); pad2->Modified(); pad2->Update(); c1->Modified(); c1->Update(); ////////////////////////////////////////////////////////////////////////////////////////// } }