--- quicklook/anticounter/src/AcQLOOK.cpp 2006/07/10 14:39:32 1.3 +++ quicklook/anticounter/src/AcQLOOK.cpp 2006/07/11 12:01:17 1.4 @@ -3,6 +3,7 @@ #include #include +#include #include #include @@ -432,6 +433,11 @@ ACheader[0]=0xAC11; ACheader[1]=0xAC22; + vector Err_type(0); + vector Err_obt(0); + vector Err_evt(0); + + Int_t *det_map = new Int_t[12]; det_map[0]=2; det_map[1]=14; @@ -540,18 +546,18 @@ } TH1D *status_h = new TH1D("Status","Status",12,0.,12.); - status_h->GetXaxis()->SetBinLabel(1,"CRC event M"); - status_h->GetXaxis()->SetBinLabel(2,"Headers M"); - status_h->GetXaxis()->SetBinLabel(3,"CRC M"); - status_h->GetXaxis()->SetBinLabel(4,"Dsp M"); - status_h->GetXaxis()->SetBinLabel(5,"Temp M"); - status_h->GetXaxis()->SetBinLabel(6,"Reg M"); - status_h->GetXaxis()->SetBinLabel(7,"CRC event E"); - status_h->GetXaxis()->SetBinLabel(8,"Headers E"); - status_h->GetXaxis()->SetBinLabel(9,"CRC E"); - status_h->GetXaxis()->SetBinLabel(10,"Dsp E"); - status_h->GetXaxis()->SetBinLabel(11,"Temp E"); - status_h->GetXaxis()->SetBinLabel(12,"Reg E"); + status_h->GetXaxis()->SetBinLabel(1,"Headers M"); + status_h->GetXaxis()->SetBinLabel(2,"CRC M"); + status_h->GetXaxis()->SetBinLabel(3,"Dsp M"); + status_h->GetXaxis()->SetBinLabel(4,"Temp M"); + status_h->GetXaxis()->SetBinLabel(5,"Reg M"); + status_h->GetXaxis()->SetBinLabel(6,"CRC Event M"); + status_h->GetXaxis()->SetBinLabel(7,"Headers E"); + status_h->GetXaxis()->SetBinLabel(8,"CRC E"); + status_h->GetXaxis()->SetBinLabel(9,"Dsp E"); + status_h->GetXaxis()->SetBinLabel(10,"Temp E"); + status_h->GetXaxis()->SetBinLabel(11,"Reg E"); + status_h->GetXaxis()->SetBinLabel(12,"CRC Event E"); status_h->GetYaxis()->SetTitle("# of Errors"); status_h->SetMinimum(0); @@ -655,16 +661,36 @@ } //Status - if((ace->header[card][0] != 0xACAC) || (ace->header[card][1] != ACheader[card])) + if((ace->header[card][0] != 0xACAC) || (ace->header[card][1] != ACheader[card])){ + status_h->Fill(6.*card,1.); + Err_type.push_back(6*card); + Err_obt.push_back(ph->GetOrbitalTime()); + Err_evt.push_back(i); + } + if((ace->status[card] & 0x8000) < 0x8000){ //crc status_h->Fill(1.+6.*card,1.); - if((ace->status[card] & 0x8000) < 0x8000) //crc + Err_type.push_back(1+6*card); + Err_obt.push_back(ph->GetOrbitalTime()); + Err_evt.push_back(i); + } + if((ace->status[card] & 0x6000) < 0x6000){ //dsp status_h->Fill(2.+6.*card,1.); - if((ace->status[card] & 0x6000) < 0x6000) //dsp + Err_type.push_back(2+6*card); + Err_obt.push_back(ph->GetOrbitalTime()); + Err_evt.push_back(i); + } + if((ace->status[card] & 0x0E00) < 0x0E00){ //temp status_h->Fill(3.+6.*card,1.); - if((ace->status[card] & 0x0E00) < 0x0E00) //temp + Err_type.push_back(3+6*card); + Err_obt.push_back(ph->GetOrbitalTime()); + Err_evt.push_back(i); + } + if((ace->status[card] & 0x01FF) < 0x01FF){ //reg status_h->Fill(4.+6.*card,1.); - if((ace->status[card] & 0x01FF) < 0x01FF) //reg - status_h->Fill(4.+6*card,1.); + Err_type.push_back(4+6*card); + Err_obt.push_back(ph->GetOrbitalTime()); + Err_evt.push_back(i); + } //temperature (left on cards) temp_gr[card][0][paramEvent] += ( ((ace->temp[card][0] & 0x00FF))*2.8 - 273. )/(Float_t)INTERVAL; @@ -673,8 +699,12 @@ temp_gr[card][3][paramEvent] += ( ((ace->temp[card][1] & 0xFF00)/256)*2.8 - 273. )/(Float_t)INTERVAL; }//if(crc check) - else - status_h->Fill(6.*card,1.); //event crc + else{ + status_h->Fill(5.+6.*card,1.); //event crc + Err_type.push_back(5+6*card); + Err_obt.push_back(ph->GetOrbitalTime()); + Err_evt.push_back(i); + } }//for(card) nmbhitpmtCARD_h->Fill(hitsCARD); @@ -707,7 +737,10 @@ } //for(events) - //time2 = clock(); + //for(Int_t i=0;icd(); char namn3[30]; char namn4[40]; + char namn5[30]; sprintf(namn3,"Anticounter Quicklook v%.1f",VERSION); sprintf(namn4,"File: %s",fileName.Data()); + sprintf(namn5,"Events: %d",nevents); t->SetTextSize(0.1); t->DrawLatex(5,90,namn3); t->SetTextSize(0.1); t->DrawLatex(20,50,namn4); + t->DrawLatex(20,40,namn5); t->SetTextSize(0.02); @@ -767,10 +803,14 @@ temperatureACTEL_M_g->SetMarkerColor(2); temperatureLEFT_M_g->SetMarkerColor(3); temperatureDSP_M_g->SetMarkerColor(4); - temperatureRIGHT_M_g->Draw("AP"); - temperatureACTEL_M_g->Draw("PSAME"); - temperatureLEFT_M_g->Draw("PSAME"); - temperatureDSP_M_g->Draw("PSAME"); + temperatureRIGHT_M_g->SetLineColor(1); + temperatureACTEL_M_g->SetLineColor(2); + temperatureLEFT_M_g->SetLineColor(3); + temperatureDSP_M_g->SetLineColor(4); + temperatureRIGHT_M_g->Draw("AL"); + temperatureACTEL_M_g->Draw("LSAME"); + temperatureLEFT_M_g->Draw("LSAME"); + temperatureDSP_M_g->Draw("LSAME"); TLegend *legTempM = new TLegend(0.72,0.63,0.85,0.8); legTempM->AddEntry(temperatureRIGHT_M_g,"Right","P"); @@ -984,14 +1024,14 @@ singles_Pads[k]->cd(); singles_gr[card][det_map[k]][0]=0.0; singlesrate_g[card][k] = new TGraph(paramEvents,event_obt,singles_gr[card][det_map[k]]); - singlesrate_g[card][k]->SetMarkerColor(card+1); + singlesrate_g[card][k]->SetLineColor(card+1); singlesrate_g[card][k]->GetXaxis()->SetTitle("Obt [ms]"); singlesrate_g[card][k]->GetYaxis()->SetTitle("f [Hz]"); singlesrate_g[card][k]->SetTitle(detector[det_map[k]].Data()); if(card==0) - singlesrate_g[card][k]->Draw("AP"); + singlesrate_g[card][k]->Draw("AL"); else - singlesrate_g[card][k]->Draw("PSAME"); + singlesrate_g[card][k]->Draw("LSAME"); k++; } } @@ -1055,21 +1095,96 @@ } } } + + // Plot error report if any error occurs + + //char *namn6 = "KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK"; + int mposition = 80; + int eposition = 80; + char *mystring = "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD"; + TString *merr; + TBox *b1,*b2; + TCanvas *sheetError; - figsave = Form("%s/%s_AcQLOOK1.%s",outDir.Data(),fileName.Data(),format.Data()); + if(Err_type.size() > 0) + { + merr = new TString[12]; + merr[0]="Header"; + merr[1]="CRC"; + merr[2]="Dsp"; + merr[3]="Temp"; + merr[4]="Reg"; + merr[5]="Event CRC"; + merr[6]="Header"; + merr[7]="CRC"; + merr[8]="Dsp"; + merr[9]="Temp"; + merr[10]="Reg"; + merr[11]="Event CRC"; + + sheetError = new TCanvas("Sheet Error","Sheet Error"); //base + sheetError->Range(0,0,100,100); + sheetError->Draw(); + b1 = new TBox(10,83.5,90,84.5); + b2 = new TBox(49.5,90,50.5,5); + b1->SetFillColor(1); + b2->SetFillColor(1); + b1->Draw(); + b2->Draw(); + + t->SetTextFont(40); + t->SetTextColor(1); + t->SetTextAlign(12); + t->SetTextSize(0.04); + namn = "AntiCounter Error Report"; + t->DrawLatex(37,94,namn); + t->SetTextColor(1); + namn = "MAIN card"; + t->DrawLatex(15,87,namn); + t->SetTextColor(1); + namn = "EXTRA card"; + t->DrawLatex(65,87,namn); + t->SetTextSize(0.015); + + + //for(Int_t i=0;iSetTextColor(2); + if(Err_type.at(iter) < 7 && mposition>10){ + mposition -= 2; + t->DrawLatex(15,mposition,mystring); + } + else if(eposition>10){ + eposition -= 2; + t->DrawLatex(65,eposition,mystring); + } + iter++; + } + if(mposition<10) + t->DrawLatex(15,5,"More errors in run!"); + if(eposition<10) + t->DrawLatex(65,5,"More errors in run!"); + + figsave = Form("%s/%s_AcQLOOK_Error.%s",outDir.Data(),fileName.Data(),format.Data()); + sheetError->SaveAs(figsave); + } + + figsave = Form("%s/%s_AcQLOOK_Status.%s",outDir.Data(),fileName.Data(),format.Data()); sheet1->SaveAs(figsave); - figsave = Form("%s/%s_AcQLOOK2.%s",outDir.Data(),fileName.Data(),format.Data()); + figsave = Form("%s/%s_AcQLOOK_Trigger.%s",outDir.Data(),fileName.Data(),format.Data()); sheet2->SaveAs(figsave); - figsave = Form("%s/%s_AcQLOOK3.%s",outDir.Data(),fileName.Data(),format.Data()); + figsave = Form("%s/%s_AcQLOOK_Singles.%s",outDir.Data(),fileName.Data(),format.Data()); sheet3->SaveAs(figsave); - figsave = Form("%s/%s_AcQLOOK4.%s",outDir.Data(),fileName.Data(),format.Data()); + figsave = Form("%s/%s_AcQLOOK_Shift.%s",outDir.Data(),fileName.Data(),format.Data()); sheet4->SaveAs(figsave); - delete sheet1; delete hitmap_h[0]; delete hitmap_h[1]; @@ -1078,7 +1193,6 @@ //printf("Draw time: %f\n\n",(Double_t) (stopTime - time2) / (Double_t) CLOCKS_PER_SEC); //printf("Exc time: %f\n",(Double_t) (stopTime-startTime) / (Double_t) CLOCKS_PER_SEC); - return 1; }