#define AnalyzeMps_rNew_cxx #include "AnalyzeMps_rNew.h" #include #include #include #include void AnalyzeMps_rNew::Loop(Int_t run,Int_t pmt,Double_t preAmp,Int_t HV,Double_t LL,Double_t Iout,Int_t FF,Double_t Ped_X1,Double_t Ped_X2,Double_t asym_X1,Double_t asym_X2,Double_t chsum,Double_t asym1_X1,Double_t asym1_X2,Double_t asym8_X1,Double_t asym8_X2,Double_t asymF_X1,Double_t asymF_X2,Double_t asymP_X1,Double_t asymP_X2,Double_t asym_Y1,Double_t asym_Y2) { // In a ROOT session, you can do: // root> .L AnalyzeMps_rNew.C // root> AnalyzeMps_rNew t // root> t.GetEntry(12); // Fill t data members with entry number 12 // root> t.Show(); // Show values of entry 12 // root> t.Show(16); // Read and show values of entry 16 // root> t.Loop(); // Loop on all entries // // This is the loop skeleton where: // jentry is the global entry number in the chain // ientry is the entry number in the current Tree // Note that the argument to GetEntry must be: // jentry for TChain::GetEntry // ientry for TTree::GetEntry and TBranch::GetEntry // // To read only selected branches, Insert statements like: // METHOD1: // fChain->SetBranchStatus("*",0); // disable all branches // fChain->SetBranchStatus("branchname",1); // activate branchname // METHOD2: replace line // fChain->GetEntry(jentry); //read all branches //by b_branchname->GetEntry(ientry); //read only this branch if (fChain == 0) return; Long64_t nentries = fChain->GetEntriesFast(); TH2F *h1_raw = new TH2F("h1_raw", "", nentries/100, 0, nentries, 1000, 0, 262000000); TH2F *h1_raw_even = new TH2F("h1_raw_even", "", nentries/100, 0, nentries, 1000, 0, 262000000); TH2F *h1_raw_odd = new TH2F("h1_raw_odd", "", nentries/100, 0, nentries, 1000, 0, 262000000); TH1F *h1_ped = new TH1F("h1_ped", "", 100, Ped_X1, Ped_X2); TH1F *h1_ped_even = new TH1F("h1_ped_even", "", 100, Ped_X1, Ped_X2); TH1F *h1_ped_odd = new TH1F("h1_ped_odd", "", 100, Ped_X1, Ped_X2); TH2F *h1_rawCor = new TH2F("h1_rawCor", "", nentries/10, 0, nentries, 1000, 0, 262000000); TH2F *h1_rawCor_even = new TH2F("h1_rawCor_even", "", nentries/10, 0, nentries, 1000, 0, 262000000); TH2F *h1_rawCor_odd = new TH2F("h1_rawCor_odd", "", nentries/10, 0, nentries, 1000, 0, 262000000); TH2F *h1_asym_my = new TH2F("h1_asym_my", "", nentries/20, 0, nentries/2, 800, asym_X1, asym_X2); const int positions = 160; const int filters = 8; const int wheelCycles = 20; TH1S *h[positions]; TH1S *hPed; char name[20]; sprintf(name,"hPed_asym"); hPed = new TH1S(name,"",100, asymP_X1, asymP_X2); TH1S *havg[positions]; Int_t f; for(f=0;fSetMinimum(0.0); h[f]->SetMaximum(120); h[f]->SetYTitle("Events"); h[f]->SetXTitle("A_{LED}"); } for(f=0;fSetMinimum(0.0); havg[f]->SetMaximum(8); havg[f]->SetYTitle("Events"); havg[f]->SetXTitle("A_{LED}"); } Int_t samples = 400; Int_t blocks = 4; Double_t Vperch = 76.29E-6; //Volts per channel Long64_t nbytes = 0, nb = 0; const Int_t arraysize = nentries; const Int_t pairsize = arraysize/2; Double_t SumArray[arraysize]; Int_t EventNumArray[arraysize]; Double_t ChSum_even, ChSum_odd; ofstream outfile("diff.txt"); // ofstream outfile2("sum.txt"); for (Long64_t jentry=0; jentryGetEntry(jentry); nbytes += nb; EventNumArray[jentry] = CodaEventNumber; SumArray[jentry] = qwk_mod0ch6_hw_sum_raw; outfile << EventNumArray[jentry] << " " << SumArray[jentry] << endl; h1_raw->Fill(EventNumArray[jentry], SumArray[jentry]); if(EventNumArray[jentry]/2.0 - int(EventNumArray[jentry]/2) == 0) { h1_raw_even->Fill(EventNumArray[jentry], SumArray[jentry]); // ChSum_even = SumArray[jentry]; } else { h1_raw_odd->Fill(EventNumArray[jentry], SumArray[jentry]); // ChSum_odd = SumArray[jentry]; } if(SumArray[jentry]Fill(SumArray[jentry]); if(EventNumArray[jentry]/2.0 - int(EventNumArray[jentry]/2) == 0) { // cout << EventNumArray[jentry] << " " << SumArray[jentry] << endl; h1_ped_even->Fill(SumArray[jentry]); } else { h1_ped_odd->Fill(SumArray[jentry]); } } } Double_t pedAve = h1_ped->GetMean(); ChSum_even = h1_raw_even->GetMean(); ChSum_odd = h1_raw_odd->GetMean(); Long64_t nbytes2 = 0, nb2 = 0; Double_t pair[2]; Long64_t pairNumber = 0; Double_t Navg[positions] = {0}; Double_t NavgPed = 0; Double_t Navgmean[filters] = {0}; Double_t Navgmean_Cal[filters] = {0}; Double_t dummyError[filters] = {0}; Double_t Aled[positions] = {0}; Double_t Aledmean[filters] = {0}; Double_t AledPed = 0; Double_t AledError[filters] = {0}; Double_t AledErrormean[filters] = {0}; Double_t sum, diff, Asymmetry, Asymmetry_Ped; Double_t Filter_Event_Num[pairsize]; Double_t Ped_Event_Num[pairsize]; int group = 0; int group_data_count = 0; pair[0] = 0; pair[1] = 0; for (Long64_t jentry=0; jentryGetEntry(jentry); nbytes2 += nb2; if(EventNumArray[jentry]/2.0 - int(EventNumArray[jentry]/2) == 0) { h1_rawCor_even->Fill(EventNumArray[jentry], SumArray[jentry]-pedAve); pair[1] = SumArray[jentry]-pedAve; } else { h1_rawCor_odd->Fill(EventNumArray[jentry], SumArray[jentry]-pedAve); pair[0] = SumArray[jentry]-pedAve; } h1_rawCor->Fill(EventNumArray[jentry], SumArray[jentry]-pedAve); if(pair[0] != 0&&pair[1] != 0) { pairNumber++; sum = pair[1] + pair[0]; diff = pair[1] - pair[0]; Asymmetry = fabs(diff/sum); Asymmetry_Ped = (pair[1] - pair[0])/(pair[1] + pair[0] +2*pedAve); h1_asym_my->Fill(pairNumber, Asymmetry); // outfile2 << pairNumber << " " << sum << endl; if(sum > 1.0E6){ Filter_Event_Num[pairNumber] = pairNumber; }else{ Ped_Event_Num[pairNumber] = pairNumber; } if(Filter_Event_Num[pairNumber]!=Filter_Event_Num[pairNumber-1]+1&&Filter_Event_Num[pairNumber]!=0){ group++; cout << group << " " << pairNumber << " " << group_data_count << " " << Asymmetry << " " << sum << endl; group_data_count = 0; }else if(Filter_Event_Num[pairNumber]!=0){ group_data_count++; if(group_data_count>50&&group_data_count<=1150){ // outfile << pairNumber << " " << group << " " << group_data_count << " " << Asymmetry << endl; h[group-1]->Fill(Asymmetry); Navg[group-1] += sum[pairNumber]/2/1100/samples/blocks; } } if(Ped_Event_Num[pairNumber]!=0){ hPed->Fill(Asymmetry_Ped); } pair[0] = 0; pair[1] = 0; } } outfile.close(); // outfile2.close(); h1_raw->SetTitle(Form("Filter wheel scan: pmt#ZK%4d @ %5d V, I_{cath} = %2.2f nA;Event No.;ADC (raw ch sum)", pmt, HV, LL)); h1_ped->SetTitle("Shutter closed (pedestal data);ADC (raw ch sum);Events"); h1_rawCor->SetTitle("Pedestal-corrected;Event No.;ADC (raw, ped-corr ch sum)"); h1_asym_my->SetTitle("Pair-wise Asymmetry vs. pair No.;Pair No.;A_{LED}"); h1_ped->SetLineColor(kBlack); h1_raw_even->SetMarkerColor(kBlue); h1_raw_odd->SetMarkerColor(kRed); h1_ped_even->SetLineColor(kBlue); h1_ped_odd->SetLineColor(kRed); h1_rawCor_even->SetMarkerColor(kBlue); h1_rawCor_odd->SetMarkerColor(kRed); TCanvas *c = new TCanvas("c","Mps hwsum Tree Distributions",1000,650); c->Clear(); c->Divide(2,2); c->cd(1); gPad->SetGridx(1); gPad->SetGridy(1); h1_raw->Draw(); h1_raw_odd->Draw("same"); h1_raw_even->Draw("same"); char runLabel[256]; sprintf(runLabel,"run %4d, PreAmp @ %3.2f M#Omega LED flash @ %4d Hz:", run, preAmp,FF); TPaveLabel *pt_rl = new TPaveLabel(0.25,0.85,0.58,0.89,runLabel,"NDC"); pt_rl->SetBorderSize(0); pt_rl->SetTextColor(kBlack); pt_rl->SetTextSize(0.80); pt_rl->SetFillColor(0); pt_rl->Draw(); c->cd(2); gPad->SetGridx(1); gPad->SetGridy(1); h1_ped->Draw(); h1_ped_odd->Draw("same"); h1_ped_even->Draw("same"); c->cd(3); gPad->SetGridx(1); gPad->SetGridy(1); h1_rawCor->Draw(); h1_rawCor_odd->Draw("same"); h1_rawCor_even->Draw("same"); c->cd(4); gPad->SetGridx(1); gPad->SetGridy(1); h1_asym_my->Draw(); c->SaveAs(Form("r%dplotsMps.png",run)); TCanvas *c21 = new TCanvas("c21","Mps Tree Distributions_auto_20cyc",1000,650); c21->Clear(); c21->Divide(3,3); gStyle->SetStatW(0.30); gStyle->SetStatH(0.30); for(int i=0; icd(1); gPad->SetGridx(1); gPad->SetGridy(1); h[8*i+2]->Draw(); char label[filters][256], labelF[filters][256], labelFPed[256], labelRun[256];; sprintf(label[0],"N_avg = %4.3e (%4.1f %%)" ,Navg[8*i+2], Navg[8*i+2]/Navg[8*i+0]*100); TPaveLabel *pt1 = new TPaveLabel(0.15,0.84, 0.50,0.89,label[0],"NDC"); pt1->SetBorderSize(0); pt1->SetTextColor(kBlack); pt1->SetTextSize(1.0); pt1->SetFillColor(0); pt1->Draw(); sprintf(labelF[0],"1 #pm 0.1%% ND filter"); TPaveLabel *ptF1 = new TPaveLabel(0.15,0.75, 0.40,0.81,labelF[0],"NDC"); ptF1->SetBorderSize(0); ptF1->SetTextColor(kMagenta); ptF1->SetTextSize(1.0); ptF1->SetFillColor(0); ptF1->Draw(); sprintf(labelRun,"run %4d, %5d V, I_pe #approx %2.2f nA, %3d Hz", run, HV, LL, FF); TPaveLabel *ptR1 = new TPaveLabel(0.12,0.91, 0.68,0.99,labelRun,"NDC"); ptR1->SetBorderSize(0); ptR1->SetTextColor(kRed); ptR1->SetTextSize(0.80); ptR1->SetFillColor(0); ptR1->Draw(); c21->cd(2); gPad->SetGridx(1); gPad->SetGridy(1); h[8*i+3]->Draw(); sprintf(label[1],"N_avg = %4.3e (%4.1f %%)" ,Navg[8*i+3], Navg[8*i+3]/Navg[8*i+0]*100); TPaveLabel *pt2 = new TPaveLabel(0.15,0.84, 0.55,0.89,label[1],"NDC"); pt2->SetBorderSize(0); pt2->SetTextColor(kBlack); pt2->SetTextSize(1.0); pt2->SetFillColor(0); pt2->Draw(); sprintf(labelF[1],"50 #pm 5%% ND filter"); TPaveLabel *ptF2 = new TPaveLabel(0.15,0.75, 0.40,0.81,labelF[1],"NDC"); ptF2->SetBorderSize(0); ptF2->SetTextColor(kMagenta); ptF2->SetTextSize(1.0); ptF2->SetFillColor(0); ptF2->Draw(); c21->cd(3); gPad->SetGridx(1); gPad->SetGridy(1); h[8*i+4]->Draw(); sprintf(label[2],"N_avg = %4.3e (%4.1f %%)" ,Navg[8*i+4], Navg[8*i+4]/Navg[8*i+0]*100); TPaveLabel *pt3 = new TPaveLabel(0.15,0.84, 0.55,0.89,label[2],"NDC"); pt3->SetBorderSize(0); pt3->SetTextColor(kBlack); pt3->SetTextSize(1.0); pt3->SetFillColor(0); pt3->Draw(); sprintf(labelF[2],"63 #pm 5%% ND filter"); TPaveLabel *ptF3 = new TPaveLabel(0.15,0.75, 0.40,0.81,labelF[2],"NDC"); ptF3->SetBorderSize(0); ptF3->SetTextColor(kMagenta); ptF3->SetTextSize(1.0); ptF3->SetFillColor(0); ptF3->Draw(); c21->cd(4); gPad->SetGridx(1); gPad->SetGridy(1); h[8*i+5]->Draw(); sprintf(label[3],"N_avg = %4.3e (%4.1f %%)" ,Navg[8*i+5], Navg[8*i+5]/Navg[8*i+0]*100); TPaveLabel *pt4 = new TPaveLabel(0.15,0.84, 0.55,0.89,label[3],"NDC"); pt4->SetBorderSize(0); pt4->SetTextColor(kBlack); pt4->SetTextSize(1.0); pt4->SetFillColor(0); pt4->Draw(); sprintf(labelF[3],"25 #pm 2.5%% ND filter"); TPaveLabel *ptF4 = new TPaveLabel(0.15,0.75, 0.40,0.81,labelF[3],"NDC"); ptF4->SetBorderSize(0); ptF4->SetTextColor(kMagenta); ptF4->SetTextSize(1.0); ptF4->SetFillColor(0); ptF4->Draw(); c21->cd(5); gPad->SetGridx(1); gPad->SetGridy(1); h[8*i+6]->Draw(); sprintf(label[4],"N_avg = %4.3e (%4.1f %%)" ,Navg[8*i+6], Navg[8*i+6]/Navg[8*i+0]*100); TPaveLabel *pt5 = new TPaveLabel(0.15,0.84, 0.55,0.89,label[4],"NDC"); pt5->SetBorderSize(0); pt5->SetTextColor(kBlack); pt5->SetTextSize(1.0); pt5->SetFillColor(0); pt5->Draw(); sprintf(labelF[4],"79 #pm 5%% ND filter"); TPaveLabel *ptF5 = new TPaveLabel(0.15,0.75, 0.40,0.81,labelF[4],"NDC"); ptF5->SetBorderSize(0); ptF5->SetTextColor(kMagenta); ptF5->SetTextSize(1.0); ptF5->SetFillColor(0); ptF5->Draw(); c21->cd(6); gPad->SetGridx(1); gPad->SetGridy(1); h[8*i+7]->Draw(); sprintf(label[5],"N_avg = %4.3e (%4.1f %%)" ,Navg[8*i+7], Navg[8*i+7]/Navg[8*i+0]*100); TPaveLabel *pt6 = new TPaveLabel(0.15,0.84, 0.55,0.89,label[5],"NDC"); pt6->SetBorderSize(0); pt6->SetTextColor(kBlack); pt6->SetTextSize(1.0); pt6->SetFillColor(0); pt6->Draw(); sprintf(labelF[5],"40 #pm 4%% ND filter"); TPaveLabel *ptF6 = new TPaveLabel(0.15,0.75, 0.40,0.81,labelF[5],"NDC"); ptF6->SetBorderSize(0); ptF6->SetTextColor(kMagenta); ptF6->SetTextSize(1.0); ptF6->SetFillColor(0); ptF6->Draw(); c21->cd(7); gPad->SetGridx(1); gPad->SetGridy(1); h[8*i+0]->Draw(); sprintf(label[6],"N_avg = %4.3e (%4.1f %%)" ,Navg[8*i+0], Navg[8*i+0]/Navg[8*i+0]*100); TPaveLabel *pt7 = new TPaveLabel(0.15,0.84, 0.55,0.89,label[6],"NDC"); pt7->SetBorderSize(0); pt7->SetTextColor(kBlack); pt7->SetTextSize(1.0); pt7->SetFillColor(0); pt7->Draw(); sprintf(labelF[6],"100%% (No filter)"); TPaveLabel *ptF7 = new TPaveLabel(0.15,0.75, 0.40,0.81,labelF[6],"NDC"); ptF7->SetBorderSize(0); ptF7->SetTextColor(kMagenta); ptF7->SetTextSize(1.0); ptF7->SetFillColor(0); ptF7->Draw(); c21->cd(8); gPad->SetGridx(1); gPad->SetGridy(1); h[8*i+1]->Draw(); sprintf(label[7],"N_avg = %4.3e (%4.1f %%)" ,Navg[8*i+1], Navg[8*i+1]/Navg[8*i+0]*100); TPaveLabel *pt8 = new TPaveLabel(0.15,0.84, 0.55,0.89,label[7],"NDC"); pt8->SetBorderSize(0); pt8->SetTextColor(kBlack); pt8->SetTextSize(1.0); pt8->SetFillColor(0); pt8->Draw(); sprintf(labelF[7],"10 #pm 1%% ND filter"); TPaveLabel *ptF8 = new TPaveLabel(0.15,0.75, 0.40,0.81,labelF[7],"NDC"); ptF8->SetBorderSize(0); ptF8->SetTextColor(kMagenta); ptF8->SetTextSize(1.0); ptF8->SetFillColor(0); ptF8->Draw(); c21->cd(9); gPad->SetGridx(1); gPad->SetGridy(1); hPed->Draw(); sprintf(labelFPed,"Shutter Closed"); TPaveLabel *ptF9 = new TPaveLabel(0.15,0.75, 0.40,0.81,labelFPed,"NDC"); ptF9->SetBorderSize(0); ptF9->SetTextColor(kMagenta); ptF9->SetTextSize(1.0); ptF9->SetFillColor(0); ptF9->Draw(); c21->SaveAs(Form("r%d_asyms_auto_20cyc_c%d.png",run,i)); } for(f=0;fGetMean(); if((f-2)/8.0-int((f-2)/8)==0){ havg[0]->Fill(Aled[f]); Navgmean[0] += Navg[f]/wheelCycles; } else if((f-3)/8.0-int((f-3)/8)==0){ havg[1]->Fill(Aled[f]); Navgmean[1] += Navg[f]/wheelCycles; } else if((f-4)/8.0-int((f-4)/8)==0){ havg[2]->Fill(Aled[f]); Navgmean[2] += Navg[f]/wheelCycles; } else if((f-5)/8.0-int((f-5)/8)==0){ havg[3]->Fill(Aled[f]); Navgmean[3] += Navg[f]/wheelCycles; } else if((f-6)/8.0-int((f-6)/8)==0){ havg[4]->Fill(Aled[f]); Navgmean[4] += Navg[f]/wheelCycles; } else if((f-7)/8.0-int((f-7)/8)==0){ havg[5]->Fill(Aled[f]); Navgmean[5] += Navg[f]/wheelCycles; } else if((f-0)/8.0-int((f-0)/8)==0){ havg[6]->Fill(Aled[f]); Navgmean[6] += Navg[f]/wheelCycles; } else if((f-1)/8.0-int((f-1)/8)==0){ havg[7]->Fill(Aled[f]); Navgmean[7] += Navg[f]/wheelCycles; } } for(int i=0;iClear(); c_avg->Divide(4,2); gStyle->SetStatW(0.30); gStyle->SetStatH(0.30); c_avg->cd(1); gPad->SetGridx(1); gPad->SetGridy(1); havg[0]->Draw(); Aledmean[0] = havg[0]->GetMean(); AledErrormean[0] = sqrt(pow(havg[0]->GetMeanError(),2)); dummyError[0] = 0.0; char label[filters][256], labelF[filters][256], labelRun[256]; sprintf(label[0],"N_avg = %4.3e (%4.1f %%)" ,Navgmean[0], Navgmean[0]/Navgmean[6]*100); TPaveLabel *pt6 = new TPaveLabel(0.25,0.85, 0.55,0.89,label[0],"NDC"); pt6->SetBorderSize(0); pt6->SetTextColor(kBlack); pt6->SetTextSize(1.0); pt6->SetFillColor(0); pt6->Draw(); sprintf(labelF[0],"1 #pm 0.1% ND filter"); TPaveLabel *ptF1 = new TPaveLabel(0.25,0.80, 0.38,0.84,labelF[0],"NDC"); ptF1->SetBorderSize(0); ptF1->SetTextColor(kMagenta); ptF1->SetTextSize(1.0); ptF1->SetFillColor(0); ptF1->Draw(); sprintf(labelRun,"run %4d, %5d V, I_pe #approx %2.2f nA, %3d Hz", run, HV, LL, FF); TPaveLabel *ptR1 = new TPaveLabel(0.32,0.94, 0.65,0.99,labelRun,"NDC"); ptR1->SetBorderSize(0); ptR1->SetTextColor(kRed); ptR1->SetTextSize(0.80); ptR1->SetFillColor(0); ptR1->Draw(); c_avg->cd(2); gPad->SetGridx(1); gPad->SetGridy(1); havg[1]->Draw(); Aledmean[1] = havg[1]->GetMean(); AledErrormean[1] = sqrt(pow(havg[1]->GetMeanError(),2)); dummyError[1] = 0.0; sprintf(label[1],"N_avg = %4.3e (%4.1f %%)" ,Navgmean[1], Navgmean[1]/Navgmean[6]*100); TPaveLabel *pt6 = new TPaveLabel(0.25,0.85, 0.55,0.89,label[1],"NDC"); pt6->SetBorderSize(0); pt6->SetTextColor(kBlack); pt6->SetTextSize(1.0); pt6->SetFillColor(0); pt6->Draw(); sprintf(labelF[1],"50 #pm 5%% ND filter"); TPaveLabel *ptF2 = new TPaveLabel(0.25,0.80, 0.38,0.84,labelF[1],"NDC"); ptF2->SetBorderSize(0); ptF2->SetTextColor(kMagenta); ptF2->SetTextSize(1.0); ptF2->SetFillColor(0); ptF2->Draw(); c_avg->cd(3); gPad->SetGridx(1); gPad->SetGridy(1); havg[2]->Draw(); Aledmean[2] = havg[2]->GetMean(); AledErrormean[2] = sqrt(pow(havg[2]->GetMeanError(),2)); dummyError[2] = 0.0; sprintf(label[2],"N_avg = %4.3e (%4.1f %%)" ,Navgmean[2], Navgmean[2]/Navgmean[6]*100); TPaveLabel *pt6 = new TPaveLabel(0.25,0.85, 0.55,0.89,label[2],"NDC"); pt6->SetBorderSize(0); pt6->SetTextColor(kBlack); pt6->SetTextSize(1.0); pt6->SetFillColor(0); pt6->Draw(); sprintf(labelF[2],"63 #pm 5%% ND filter"); TPaveLabel *ptF3 = new TPaveLabel(0.25,0.80, 0.38,0.84,labelF[2],"NDC"); ptF3->SetBorderSize(0); ptF3->SetTextColor(kMagenta); ptF3->SetTextSize(1.0); ptF3->SetFillColor(0); ptF3->Draw(); c_avg->cd(4); gPad->SetGridx(1); gPad->SetGridy(1); havg[3]->Draw(); Aledmean[3] = havg[3]->GetMean(); AledErrormean[3] = sqrt(pow(havg[3]->GetMeanError(),2)); dummyError[3] = 0.0; sprintf(label[3],"N_avg = %4.3e (%4.1f %%)" ,Navgmean[3], Navgmean[3]/Navgmean[6]*100); TPaveLabel *pt6 = new TPaveLabel(0.25,0.85, 0.55,0.89,label[3],"NDC"); pt6->SetBorderSize(0); pt6->SetTextColor(kBlack); pt6->SetTextSize(1.0); pt6->SetFillColor(0); pt6->Draw(); sprintf(labelF[3],"25 #pm 2.5%% ND filter"); TPaveLabel *ptF4 = new TPaveLabel(0.25,0.80, 0.38,0.84,labelF[3],"NDC"); ptF4->SetBorderSize(0); ptF4->SetTextColor(kMagenta); ptF4->SetTextSize(1.0); ptF4->SetFillColor(0); ptF4->Draw(); c_avg->cd(5); gPad->SetGridx(1); gPad->SetGridy(1); havg[4]->Draw(); Aledmean[4] = havg[4]->GetMean(); AledErrormean[4] = sqrt(pow(havg[4]->GetMeanError(),2)); dummyError[4] = 0.0; sprintf(label[4],"N_avg = %4.3e (%4.1f %%)" ,Navgmean[4], Navgmean[4]/Navgmean[6]*100); TPaveLabel *pt6 = new TPaveLabel(0.25,0.85, 0.55,0.89,label[4],"NDC"); pt6->SetBorderSize(0); pt6->SetTextColor(kBlack); pt6->SetTextSize(1.0); pt6->SetFillColor(0); pt6->Draw(); sprintf(labelF[4],"79 #pm 5%% ND filter"); TPaveLabel *ptF5 = new TPaveLabel(0.25,0.80, 0.38,0.84,labelF[4],"NDC"); ptF5->SetBorderSize(0); ptF5->SetTextColor(kMagenta); ptF5->SetTextSize(1.0); ptF5->SetFillColor(0); ptF5->Draw(); c_avg->cd(6); gPad->SetGridx(1); gPad->SetGridy(1); havg[5]->Draw(); Aledmean[5] = havg[5]->GetMean(); AledErrormean[5] = sqrt(pow(havg[5]->GetMeanError(),2)); dummyError[5] = 0.0; sprintf(label[5],"N_avg = %4.3e (%4.1f %%)" ,Navgmean[5], Navgmean[5]/Navgmean[6]*100); TPaveLabel *pt6 = new TPaveLabel(0.25,0.85, 0.55,0.89,label[5],"NDC"); pt6->SetBorderSize(0); pt6->SetTextColor(kBlack); pt6->SetTextSize(1.0); pt6->SetFillColor(0); pt6->Draw(); sprintf(labelF[5],"40 #pm 4%% ND filter"); TPaveLabel *ptF6 = new TPaveLabel(0.25,0.80, 0.38,0.84,labelF[5],"NDC"); ptF6->SetBorderSize(0); ptF6->SetTextColor(kMagenta); ptF6->SetTextSize(1.0); ptF6->SetFillColor(0); ptF6->Draw(); c_avg->cd(7); gPad->SetGridx(1); gPad->SetGridy(1); havg[6]->Draw(); Aledmean[6] = havg[6]->GetMean(); AledErrormean[6] = sqrt(pow(havg[6]->GetMeanError(),2)); dummyError[6] = 0.0; sprintf(label[6],"N_avg = %4.3e (%4.1f %%)" ,Navgmean[6], Navgmean[6]/Navgmean[6]*100); TPaveLabel *pt6 = new TPaveLabel(0.25,0.85, 0.55,0.89,label[6],"NDC"); pt6->SetBorderSize(0); pt6->SetTextColor(kBlack); pt6->SetTextSize(1.0); pt6->SetFillColor(0); pt6->Draw(); sprintf(labelF[6],"100%% (No filter)"); TPaveLabel *ptF7 = new TPaveLabel(0.25,0.80, 0.38,0.84,labelF[6],"NDC"); ptF7->SetBorderSize(0); ptF7->SetTextColor(kMagenta); ptF7->SetTextSize(1.0); ptF7->SetFillColor(0); ptF7->Draw(); c_avg->cd(8); gPad->SetGridx(1); gPad->SetGridy(1); havg[7]->Draw(); Aledmean[7] = havg[7]->GetMean(); AledErrormean[7] = sqrt(pow(havg[7]->GetMeanError(),2)); dummyError[7] = 0.0; sprintf(label[7],"N_avg = %4.3e (%4.1f %%)" ,Navgmean[7], Navgmean[7]/Navgmean[6]*100); TPaveLabel *pt6 = new TPaveLabel(0.25,0.85, 0.55,0.89,label[7],"NDC"); pt6->SetBorderSize(0); pt6->SetTextColor(kBlack); pt6->SetTextSize(1.0); pt6->SetFillColor(0); pt6->Draw(); sprintf(labelF[7],"10 #pm 1%% ND filter"); TPaveLabel *ptF8 = new TPaveLabel(0.25,0.80, 0.38,0.84,labelF[7],"NDC"); ptF8->SetBorderSize(0); ptF8->SetTextColor(kMagenta); ptF8->SetTextSize(1.0); ptF8->SetFillColor(0); ptF8->Draw(); c_avg->SaveAs(Form("r%d_asyms_auto_20cyc_avg.png",run)); for(int i=0;iSetGridx(1); c3->SetGridy(1); gStyle->SetOptStat(kFALSE); char runLabel[256]; TH2F *hr1; hr1 = new TH2F("hr1","",100,0,131072,100,asym_Y1,asym_Y2); hr1->Draw(); TGraphErrors *gr1 = new TGraphErrors(8, Navgmean, Aledmean, dummyError, AledErrormean); gr1->SetMarkerColor(kBlue); gr1->SetMarkerStyle(20); gr1->SetMarkerSize(0.75); gStyle->SetOptFit(111); gStyle->SetStatW(0.2); gStyle->SetStatH(0.15); gr1->Draw("P"); TF1 *f1 = new TF1("f1","pol1",0,131000); f1->SetLineWidth(2); f1->SetLineColor(kMagenta); f1->SetParName(0,"A_{true}"); f1->SetParName(1,"A_{true}*#beta"); Double_t f1par[2]; gr1->Fit("f1","R"); f1->GetParameters(&f1par[0]); Double_t Error00 = f1->GetParError(0); Double_t Error01 = f1->GetParError(1); Double_t scale = sqrt(f1->GetChisquare()/f1->GetNDF()); cout << "Scale from Chi2 value is: " << scale << endl; char fitLabel[256], LabelCal[256]; sprintf(fitLabel,"run %4d, %3d Hz, %3.2f M#Omega, I_{anode} = %4.2f #mu A", run, FF, preAmp, Iout); TPaveLabel *pt_rlfit = new TPaveLabel(0.20,0.84,0.50,0.89,fitLabel,"NDC"); pt_rlfit->SetBorderSize(0); pt_rlfit->SetTextColor(kBlack); pt_rlfit->SetTextSize(0.75); pt_rlfit->SetFillColor(0); pt_rlfit->Draw(); sprintf(LabelCal,"%% non-lin = %5.3f V^{-1}", f1par[1]/f1par[0]*Navgmean[6]*100/Navgmean_Cal[6]); TPaveLabel *pt_cal = new TPaveLabel(0.68,0.70,0.85,0.74,LabelCal,"NDC"); pt_cal->SetBorderSize(0); pt_cal->SetTextColor(kMagenta); pt_cal->SetTextSize(0.75); pt_cal->SetFillColor(0); pt_cal->Draw(); char labelB[256], labelChi[256], labelP0[256]; sprintf(labelB,"#beta*N_{avg} @ %4.3e = %5.3f #pm %4.3f %% non-lin",Navgmean[6], f1par[1]/f1par[0]*Navgmean[6]*100, fabs(sqrt(pow(Error00/f1par[0],2) + pow(Error01/f1par[1],2))*f1par[1]/f1par[0]*Navgmean[6]*100)*scale); TPaveLabel *ptB = new TPaveLabel(0.11,0.78, 0.53,0.82,labelB,"NDC"); ptB->SetBorderSize(0); ptB->SetTextColor(kMagenta); ptB->SetTextSize(0.80); ptB->SetFillColor(0); ptB->Draw(); sprintf(labelChi,"#chi^{2} %4.4f",f1->GetChisquare()/f1->GetNDF()); TPaveLabel *ptChi = new TPaveLabel(0.63,0.888, 0.97,0.928,labelChi,"NDC"); ptChi->SetBorderSize(0); ptChi->SetTextColor(kBlack); ptChi->SetTextSize(0.80); ptChi->SetFillColor(0); ptChi->Draw(); hr1->SetTitle(Form("Filter wheel scan: pmt#ZK%4d @ %5d V, I_{cath} = %2.2f nA;N_{avg} (adc channels);A_{LED}", pmt, HV, LL)); TLegend *leg = new TLegend(0.55,0.10,0.89,0.30); leg->SetBorderSize(0); leg->SetFillColor(0); leg->SetFillStyle(0); leg->AddEntry(gr1,"data","pe"); leg->AddEntry(f1,"fit: A_{LED} = A_{true}(1+#beta*N_{avg})","l"); leg->Draw(); c3->SaveAs(Form("r%d_asymTrends_auto_20cyc.png",run)); TCanvas *c3Cal = new TCanvas("c3Cal","Non-linearity fit_auto_20cyc_avg_Cal",0,0,900,600); gStyle->SetOptStat(kFALSE); c3Cal->SetGridx(1); c3Cal->SetGridy(1); gStyle->SetOptStat(kFALSE); char runLabel[256]; TH2F *hr2; hr2 = new TH2F("hr2","",100,0,10,100,asym_Y1,asym_Y2); hr2->Draw(); TGraphErrors *gr3 = new TGraphErrors(8, Navgmean_Cal, Aledmean, dummyError, AledErrormean); gr3->SetMarkerColor(kBlue); gr3->SetMarkerStyle(20); gr3->SetMarkerSize(0.75); gStyle->SetOptFit(111); gStyle->SetStatW(0.2); gStyle->SetStatH(0.15); gr3->Draw("P"); TF1 *f3 = new TF1("f3","pol1",0,10); f3->SetLineWidth(2); f3->SetLineColor(kMagenta); f3->SetParName(0,"A_{true}"); f3->SetParName(1,"A_{true}*#beta"); gr3->Fit("f3","R"); Double_t f3par[2]; f3->GetParameters(&f3par[0]); Double_t Error20 = f3->GetParError(0); Double_t Error21 = f3->GetParError(1); char fitLabel[256], LabelCal[256]; sprintf(LabelCal,"%% non-lin = %5.3f V^{-1}", f1par[1]/f1par[0]*Navgmean[6]*100/Navgmean_Cal[6]); TPaveLabel *pt_cal = new TPaveLabel(0.68,0.70,0.85,0.74,LabelCal,"NDC"); pt_cal->SetBorderSize(0); pt_cal->SetTextColor(kMagenta); pt_cal->SetTextSize(0.75); pt_cal->SetFillColor(0); pt_cal->Draw(); sprintf(fitLabel,"run %4d, %3d Hz, %3.2f M#Omega, I_{anode} = %4.2f #mu A", run, FF, preAmp, Iout); TPaveLabel *pt_rlcal = new TPaveLabel(0.20,0.84,0.50,0.89,fitLabel,"NDC"); pt_rlcal->SetBorderSize(0); pt_rlcal->SetTextColor(kBlack); pt_rlcal->SetTextSize(0.75); pt_rlcal->SetFillColor(0); pt_rlcal->Draw(); char labelB[256], labelBB[256]; sprintf(labelB,"#beta*N_{avg} @ %4.3f = %5.3f #pm %4.3f %% non-lin",Navgmean_Cal[6], f3par[1]/f3par[0]*Navgmean_Cal[6]*100, fabs(sqrt(pow(Error20/f3par[0],2) + pow(Error21/f3par[1],2))*f3par[1]/f3par[0]*Navgmean_Cal[6]*100)*scale); TPaveLabel *ptB = new TPaveLabel(0.11,0.78, 0.53,0.82,labelB,"NDC"); ptB->SetBorderSize(0); ptB->SetTextColor(kMagenta); ptB->SetTextSize(0.80); ptB->SetFillColor(0); ptB->Draw(); sprintf(labelBB,"#chi^{2} %4.4f",f3->GetChisquare()/f3->GetNDF()); TPaveLabel *ptBB = new TPaveLabel(0.63,0.888, 0.97,0.928,labelBB,"NDC"); ptBB->SetBorderSize(0); ptBB->SetTextColor(kBlack); ptBB->SetTextSize(0.80); ptBB->SetFillColor(0); ptBB->Draw(); hr2->SetTitle(Form("Filter wheel scan: pmt#ZK%4d @ %5d V, I_{cath} = %2.2f nA;ADC Voltage (V);A_{LED}", pmt, HV, LL)); TLegend *leg = new TLegend(0.55,0.10,0.89,0.30); leg->SetBorderSize(0); leg->SetFillColor(0); leg->SetFillStyle(0); leg->AddEntry(gr1,"data","pe"); leg->AddEntry(f3,"fit: A_{LED} = A_{true}(1+#beta*N_{avg})","l"); leg->Draw(); c3Cal->SaveAs(Form("r%d_asymTrends_auto_20cyc_Cal.png",run)); }