{ gROOT->Reset(); gSystem.Load("libBlast.so"); TBLRaw raw("electronics.map"); TBLGeometry geom; geom.GetData("blast.geom"); TBLScRecon scRecon; scRecon.Init(geom, "/home/blast/blast/commis/phase1/blast.sc_cal");//for large TOF // TString script("show_p.C"); TString datadir(gSystem.Getenv("DATADIR")); TString analdir(gSystem.Getenv("ANALDIR")); TString data(datadir+"commis-"); int outFlag; char outFile[100], title[125]; raw.ReadEpicsMap("/home/blast/blast/commis/epics/Epics.map"); int beam_index = raw.GetEpicsID("ldcct:ma"); // read in the data file numbers, put them in list[] int arc=gApplication->Argc(); char** arv=gApplication->Argv(); int arg=0; int n1, n2, list[100], nl, il; int ntot, n3; int i, k, j, kk; outFlag = 0; for (i=0;i 0) list[nl++] = n1; if (k == 2 && n1 > 0 && n2 > 0 && n2>n1) for (j=n1;j 0 ) { good_Lpad++; iPadLeft = j; } // printf("\n found good LEFT paddle %9d %9d",j,scRecon.Data[0][j]); for (j = 0;j<15;j++) if (scRecon.Data[1][j].quality > 0 ) { good_Rpad++; iPadRight = j; } // printf("\n found good RIGHT paddle %9d %9d",j,scRecon.Data[1][j]); if ( good_Rpad == 1 && good_Lpad == 1 ) { clean++; timeLeft = (scRecon.Data[0][iPadLeft].tdc1 + scRecon.Data[0][iPadLeft].tdc2)/2.0; timeRight = (scRecon.Data[1][iPadRight].tdc1 + scRecon.Data[1][iPadRight].tdc2)/2.0; posLeft = (scRecon.Data[0][iPadLeft].tdc1 - scRecon.Data[0][iPadLeft].tdc2)/2.0; posRight = (scRecon.Data[1][iPadRight].tdc1 - scRecon.Data[1][iPadRight].tdc2)/2.0; adcLeft = (scRecon.Data[0][iPadLeft].adc1 + scRecon.Data[0][iPadLeft].adc2); adcRight = (scRecon.Data[1][iPadRight].adc1 + scRecon.Data[1][iPadRight].adc2); int sect, pad, lr ; nNC = raw.GetNCnhits(); for (i=0;i -1) good_LCC++ ; else if ( iPadLeft < 6 && raw.GetCCbox(i) == 1 && raw.GetCCtdc(i) > -1) good_LCC++ ; } if (raw.GetCCsector(i) == 1){ if ( iPadRight < 4 && raw.GetCCbox(i) == 0 && raw.GetCCtdc(i) > -1) good_RCC++ ; else if ( iPadRight < 6 && raw.GetCCbox(i) == 1 && raw.GetCCtdc(i) > -1) good_RCC++ ; } } if (iPadLeft > 9 && iPadRight < 6 && beam < 20 // cut on beam current // && good_RCC == 1 // cut R-forward CC hit // && adcRight < 2000 // Electron ADC (R) // && adcLeft > 3000 // Hadron ADC (L) // && rtOR < 1670 && rtOR > 1660 // retiming-OR self timing! ) { k = iPadLeft - 10; j = iPadRight; passed_Lcut++; tdiff_L[k][j]->Fill(timeLeft-timeRight); // copla_L[k][j]->Fill(posLeft + posRight); copla_2d_L[k][j]->Fill(posLeft , posRight); } else if (iPadLeft < 6 && iPadRight > 9 && beam < 20 // cut on beam current // && good_LCC == 1 // cut L-forward CC hit // && adcLeft < 2000 // Electron ADC (L) // && adcRight > 3000 // Hadron ADC (R) // && rtOR < 1670 && rtOR > 1660 // retiming-OR self timing! ) { k = iPadRight - 10; j = iPadLeft; passed_Rcut++; tdiff_R[k][j]->Fill(timeRight-timeLeft); // copla_R[k][j]->Fill(posLeft + posRight); copla_2d_R[k][j]->Fill(posLeft , posRight); } } // end of coinc was good (only 1 L and 1 R valid hit) } // end of physics event } // loop on events /* total_passed = passed_Lcut+passed_Rcut; if (phys >0 ) { printf("\n Total physics events %9d",phys); printf("\n Clean events (1Lhit + 1Rhit) %9d (%4d \%)",clean,100.*clean/phys); printf("\n Clean that passed proton cut %9d (%4d \%)",total_passed,100.*total_passed/phys); if (clean >0 ) { printf("\n ... of which in left sector %9d (%4d \%)",passed_Lcut,100.*passed_Lcut/total_passed); printf("\n ... of which in right sector %9d (%4d \%)",passed_Rcut,100.*passed_Rcut/total_passed); printf("\n"); printf("\n"); } } */ raw.CodaRead.closedatafile(); } // end of loop on runs - reset phys and clean counters TCanvas *c1 = new TCanvas("c1","L-R coincs", 10, 10, 1200, 900); c1->Divide(6,5); // columns, rows TCanvas *c2 = new TCanvas("c2","R-L coincs", 10, 10, 1200, 900); c2->Divide(6,5); // TCanvas *c1 = new TCanvas("c1","coincs", 10, 10, 1200, 900); // c1->Divide(3,3); // columns, rows // TCanvas *c2 = new TCanvas("c2","coincs", 10, 10, 1200, 900); // c2->Divide(3,3); // columns, rows // TCanvas *c3 = new TCanvas("c3","L-R coplanarity", 10, 10, 1200, 900); // c3->Divide(6,5); // TCanvas *c4 = new TCanvas("c4","R-L coplanarity", 10, 10, 1200, 900); // c4->Divide(6,5); for (k=0; k<5; k++) { // the backward paddle (rows) for (j=0; j<6; j++) { // the forward paddle (columns) // for (k=1; k<4; k++) { // the backward paddle (rows) // for (j=3; j<6; j++) { // the forward paddle (columns) c1->cd(6*k+j+1); tdiff_L[k][j]->Draw(); c2->cd(6*k+j+1); tdiff_R[k][j]->Draw(); //c3->cd(6*k+j+1); //copla_2d_L[k][j]->Draw(); //c4->cd(6*k+j+1); //copla_2d_R[k][j]->Draw(); // c1->cd(j-3+1+(k-1)*3); // copla_2d_L[k][j]->Draw(); // c2->cd(j-3+1+(k-1)*3); // copla_2d_R[k][j]->Draw(); } } }