// _ can be given a set of run numbers // _ loads the tdc offset datafiles data/L20-tdc-after-walk-####.dat and data/L20-tdc-####.dat // _ enters the data into database // Revisions: // _ Original code updated (4/9/04) // raw_adc() { gROOT->Reset(); // read in the data file numbers, put them in list[] int i, j, n1, n2, list[3000], nl; int arc=gApplication->Argc(); char** arv=gApplication->Argv(); for (i=0;i 0) list[nl++] = n1; if (k == 2 && n1 > 0 && n2>n1) for (int j=n1;jLoad("/usr/lib/libz.so"); gSystem->Load("/usr/local/root/lib/libMySQL.so"); TSQLServer *db = TSQLServer::Connect("mysql://blast05.lns.mit.edu:3306/BLAST_physics","ANALYSIS", "BLana02"); TSQLResult *res; char table[15]; sprintf(table, "LAD_TDC_RUN"); char detector[3]; sprintf(detector, "L20"); char batchName[25]; char query[250]; sprintf(batchName, "pro2003"); gSystem.Load("libBlast.so"); Setup(); char title[125]; int k,il,mean; char data[100]; // make array for the tdc offsets of different runs int tdcoff[2][16][2][nl]; // [sect][pad][tb][il] / run# = list[il] int tdcrawoff[2][16][2][nl]; // [sect][pad][tb][il] / run# = list[il] // int pedmin[2][16][2]; // int pedmax[2][16][2]; // loop over datafiles for (il=0;ilnList();il++) { char tdcfilename[100], tdcrawfilename[100]; sprintf(tdcfilename,"data/%s-tdc-after-walk-%d\.dat",detector,list[il]); sprintf(tdcrawfilename,"data/%s-tdc-%d\.dat",detector,list[il]); cout<<"Processing tdc offset files "<AccessPathName(tdcfilename, kReadPermission)) { cerr<<"file "<AccessPathName(tdcrawfilename, kReadPermission)) { cerr<<"file "<GetPathInfo(tdcfilename,&myId1,&mySize1,&myFlags1,&myModtime1); gSystem->GetPathInfo(tdcrawfilename,&myId2,&mySize2,&myFlags2,&myModtime2); if (mySize1==0) { cerr<<"file "<Query(query); // ************** change this to non-destructive check of existence ****************** char hardware[25]; if (min_runno>list[il]) min_runno=list[il]; if (max_runnop || pedmin[lr][bar][tb]==0) && p>0) pedmin[lr][bar][tb] = p; // if (pedmax[lr][bar][tb]Query(query); } // end of comment line filter } // end of "eof check" while loop tdcfile.close(); ifstream tdcrawfile(tdcrawfilename, ios::in); int lr,tb,bar,p1; float p2,p3; while(!tdcrawfile.eof()) { tdcrawfile.getline(data,100); if (data[0]!=33 && data[0]!=NULL) // filter comment lines (starting with "!") { sscanf(data,"%d\t%d\t%d\t%d\t%f\t%f",&lr,&tb,&bar,&p1,&p2,&p3); tdcrawoff[lr][bar][tb][il]=p1; // if ((pedmin[lr][bar][tb]>p || pedmin[lr][bar][tb]==0) && p>0) pedmin[lr][bar][tb] = p; // if (pedmax[lr][bar][tb]Query(query); } // end of comment line filter } // end of "eof check" while loop tdcrawfile.close(); } // check if file has length 0 } // check if file exists } // loop on files } // end of walkfile existence check // display tdc offset array if (min_runno>max_runno) cerr<<"no datafiles found"<Divide(4,4); c1->Iconify(); for (k=0; k<16; k++) { c1->cd(k+1); TGraph *gr1 = new TGraph(nl,list,tdcoff[0][k][0]); gr1->SetMarkerStyle(6); gr1->SetMarkerSize(1); // gr1->SetMinimum(pedmin[0][k][0]-2); // gr1->SetMaximum(pedmax[0][k][0]+2); gr1->GetXaxis()->SetRangeUser(min_runno-1,max_runno+1); sprintf(txt,"%s left %d top",detector,k); gr1->SetTitle(txt); gr1->SetMarkerColor(2); gr1->Draw("AP"); TGraph *gr5 = new TGraph(nl,list,tdcrawoff[0][k][0]); gr5->SetMarkerStyle(6); gr5->SetMarkerSize(1); gr5->SetMarkerColor(1); gr5->Draw("P"); } TCanvas *c2 = new TCanvas("l20.LEFT.bot.tdcoffset.run","l20.LEFT_bot_tdcoffset_run", 10, 10, 960, 720); c2->Divide(4,4); c2->Iconify(); for (k=0; k<16; k++) { c2->cd(k+1); TGraph *gr2 = new TGraph(nl,list,tdcoff[0][k][1]); gr2->SetMarkerStyle(6); gr2->SetMarkerSize(1); // gr2->SetMinimum(pedmin[0][k][1]-2); // gr2->SetMaximum(pedmax[0][k][1]+2); gr2->GetXaxis()->SetRangeUser(min_runno-1,max_runno+1); sprintf(txt,"%s left %d bottom",detector,k); gr2->SetTitle(txt); gr2->SetMarkerColor(2); gr2->Draw("AP"); TGraph *gr6 = new TGraph(nl,list,tdcrawoff[0][k][1]); gr6->SetMarkerStyle(6); gr6->SetMarkerSize(1); gr6->SetMarkerColor(1); gr6->Draw("P"); } TCanvas *c3 = new TCanvas("l20.RIGHT.top.tdcoffset.run","l20.RIGHT_top_tdcoffset_run", 10, 10, 960, 720); c3->Divide(4,4); c3->Iconify(); for (k=0; k<16; k++) { c3->cd(k+1); TGraph *gr3 = new TGraph(nl,list,tdcoff[1][k][0]); gr3->SetMarkerStyle(6); gr3->SetMarkerSize(1); // gr3->SetMinimum(pedmin[1][k][0]-2); // gr3->SetMaximum(pedmax[1][k][0]+2); gr3->GetXaxis()->SetRangeUser(min_runno-1,max_runno+1); sprintf(txt,"%s right %d top",detector,k); gr3->SetTitle(txt); gr3->SetMarkerColor(2); gr3->Draw("AP"); TGraph *gr7 = new TGraph(nl,list,tdcrawoff[1][k][0]); gr7->SetMarkerStyle(6); gr7->SetMarkerSize(1); gr7->SetMarkerColor(1); gr7->Draw("P"); } TCanvas *c4 = new TCanvas("l20.RIGHT.bot.tdcoffset.run","l20.RIGHT_bot_tdcoffset_run", 10, 10, 960, 720); c4->Divide(4,4); c4->Iconify(); for (k=0; k<16; k++) { c4->cd(k+1); TGraph *gr4 = new TGraph(nl,list,tdcoff[1][k][1]); gr4->SetMarkerStyle(6); gr4->SetMarkerSize(1); // gr4->SetMinimum(pedmin[1][k][1]-2); // gr4->SetMaximum(pedmax[1][k][1]+2); gr4->GetXaxis()->SetRangeUser(min_runno-1,max_runno+1); sprintf(txt,"%s right %d bottom",detector,k); gr4->SetTitle(txt); gr4->SetMarkerColor(2); gr4->Draw("AP"); TGraph *gr8 = new TGraph(nl,list,tdcrawoff[1][k][1]); gr8->SetMarkerStyle(6); gr8->SetMarkerSize(1); gr8->SetMarkerColor(1); gr8->Draw("P"); } } }