本文整理汇总了C++中TH1F::GetAsymmetry方法的典型用法代码示例。如果您正苦于以下问题:C++ TH1F::GetAsymmetry方法的具体用法?C++ TH1F::GetAsymmetry怎么用?C++ TH1F::GetAsymmetry使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TH1F
的用法示例。
在下文中一共展示了TH1F::GetAsymmetry方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Hist_FitAsymmetry
void Hist_FitAsymmetry() {
TFile *filepara = TFile::Open("hist_p2gamma_para.acc.root");
TFile *fileperp = TFile::Open("hist_p2gamma_perp.acc.root");
TH2F *h2para = (TH2F*)filepara->Get("phi_t"); h2para->Rebin2D(10, 5);
TH2F *h2perp = (TH2F*)fileperp->Get("phi_t"); h2perp->Rebin2D(10, 5);
// phi distributions integrated over |t|
TCanvas *cc1 = new TCanvas("cc1", "cc1", 800, 600);
cc1->Divide(2,2);
TH1F *hpara = (TH1F*)h2para->ProjectionY("phi_para");
TH1F *hperp = (TH1F*)h2perp->ProjectionY("phi_perp");
TH1F *hasym = (TH1F*)hperp->GetAsymmetry(hpara);
TH1F *hsum = (TH1F*)hpara->Clone(); hsum->Add(hperp);
cc1->cd(1);
TF1* fpara = new TF1("fitpara","[0]*(1.0 + [1]*cos(2*(x + [2])/180.*3.14159))");
fpara->SetLineColor(kRed);
hpara->Fit(fpara, "", "");
hpara->Draw("e");
cc1->cd(2);
TF1* fperp = new TF1("fitperp","[0]*(1.0 + [1]*cos(2*(x + [2])/180.*3.14159))");
fperp->SetLineColor(kRed);
hperp->Fit(fperp, "", "");
hperp->Draw("e");
cc1->cd(3);
TF1* fitasym = new TF1("fitasym","[1]*cos(2*(x + [2])/180.*3.14159)");
fitasym->SetLineColor(kRed);
hasym->Fit(fitasym, "", "");
hasym->Draw("e");
cc1->cd(4);
hsum->Draw();
return;
}
示例2: add_hand_targ_asymmetry_vs_nu
//.........这里部分代码省略.........
// The section below will plot the bars used for vetos for the previous canvas. It will consist of two
// canvases, one without the veto cuts made and one with to show the different.
// if (includeVetos) {hand_draw_vetos(veto1plane, veto2plane, veto3plane, veto4plane, veto5plane, veto6plane,veto1bar, veto2bar, veto3bar, veto4bar, veto5bar, veto6bar, imageVetosWithoutVetosTitle, imageVetosWithVetosTitle, HeRunNumber, endHeRunNumber, chainHe, nplane, thisbar, TDCbins, TDCmin, TDCmax, cuts, vetoTDCs, antivetosAsVetos, allVetos, allAntivetos);}
// if ((nplane==1) && (thisbar==15)) { nplane = 2; thisbar = 7;}
// if ((nplane==2) && (thisbar==12)) { nplane = 3; thisbar = 6;}
// if ((nplane==3) && (thisbar==11)) { nplane = 4; thisbar = 3;}
// if ((nplane==4) && (thisbar==7)) { nplane = 4; thisbar = 99;}
}
}
TString canvasTotalSpinTest = "TotalSpinTest";
TString canvasTitleTotalSpinTest = "HAND - Total Spin (Not Scaled)";
TCanvas *totalSpinTestCanvas = new TCanvas(canvasTotalSpinTest,canvasTitleTotalSpinTest,1400,730); //x,y
totalspintestpad01 = new TPad("totalspintestpad01","totalspintestpad01",0.0000,0.5000,0.5000,1.0000,0,0,0);
totalspintestpad02 = new TPad("totalspintestpad02","totalspintestpad02",0.5000,0.5000,1.0000,1.0000,0,0,0);
totalspintestpad03 = new TPad("totalspintestpad03","totalspintestpad03",0.0000,0.0000,1.0000,0.5000,0,0,0);
totalspintestpad01->Draw(); totalspintestpad02->Draw(); totalspintestpad03->Draw();
totalspintestpad01->cd();
newHANDTotalSpinUpx->SetTitle("Total Spin Up (Not Scaled)");
newHANDTotalSpinUpx->Draw();
totalspintestpad01->Update();
totalspintestpad02->cd();
newHANDTotalSpinDownx->SetTitle("Total Spin Down (Not Scaled)");
newHANDTotalSpinDownx->Draw();
totalspintestpad02->Update();
totalspintestpad03->cd();
TF1 *fitasymtest = new TF1("fitasymtest","[0]",nuMin,nuMax);
HANDAsymTest = newHANDTotalSpinUpx->GetAsymmetry(newHANDTotalSpinDownx);
TString AsymTestTitle = "Target Asymmerty with Neutron Cuts vs. xBj for runs ";
AsymTestTitle += HeRunNumber;
AsymTestTitle += "-";
AsymTestTitle += endHeRunNumber;
HANDAsymTest->SetTitle(AsymTestTitle);
HANDAsymTest->Draw();
fitasymtest->SetLineColor(kBlue);
HANDAsymTest->Fit("fitasymtest","R");
totalspintestpad03->Update();
TString asymTitle = "Target Asymmetry for Runs ";
asymTitle += HeRunNumber;
asymTitle += "-";
asymTitle += endHeRunNumber;
TCanvas *asymCanvas = new TCanvas("asymCanvas",asymTitle,1400,730); //x,y
asymCanvas->cd();
asymCanvas->SetGrid();
Double_t x[nuBins], y[nuBins], errorx[nuBins], errory[nuBins];
double minError;
double maxError;
double posStuff;
double negStuff;
double UpEvents;
double DownEvents;
if ((targ == "v") || (targ == "l") || (targ == "t") || (targ == "c") || (targ == "h")) { check = true;}
if (targ == "v") {asymOutFile << "Dataset: Vertical 3He, Q2=" << kine << endl; cout << "Dataset: Vertical 3He, Q2=" << kine << endl;}
if (targ == "l") {asymOutFile << "Dataset: Longitudinal 3He, Q2=" << kine << endl; cout << "Dataset: Longitudinal 3He, Q2=" << kine << endl;}
if (targ == "t") {asymOutFile << "Dataset: Transverse 3He, Q2=" << kine << endl; cout << "Dataset: Transverse 3He, Q2=" << kine << endl;}
if (targ == "c") {asymOutFile << "Dataset: Carbon, Q2=" << kine << endl; cout << "Dataset: Carbon, Q2=" << kine << endl;}
if (targ == "h") {asymOutFile << "Dataset: Hydrogen, Q2=" << kine << endl; cout << "Dataset: Hydrogen, Q2=" << kine << endl;}
asymOutFile << "Runs: " << HeRunNumber << "-" << endHeRunNumber << endl;
示例3: l_beam_asymmetry
//.........这里部分代码省略.........
pad5->cd();
TString titleQ2 = "Q2";
cout << "Drawing " << titleQ2 << "..." << endl;
chainHe->Draw("PriKineR.Q2>>histQ2(400,0,1.6)", cuts, "");
histQ2->SetTitle(titleQ2);
histQ2->SetStats(kFALSE);
histQ2->Draw();
pad6->cd();
TString titleOmega = "Omega";
cout << "Drawing " << titleOmega << "..." << endl;
chainHe->Draw("PriKineR.omega>>histOmega(100,0.3,0.8)", cuts, "");
histOmega->SetTitle(titleOmega);
histOmega->SetStats(kFALSE);
histOmega->Draw();
pad7->cd();
TString titleHel = "Helicity vs. Bjorken x";
cout << "Drawing " << titleHel << "..." << endl;
TH2F *histHel = new TH2F("histHel",titleHel,bins,xmin,xmax,7,-2,2);
chainHe->Draw("g0hel.R.helicity:(PriKineR.Q2 / (PriKineR.omega * 2 * 0.9315))>>histHel", cuts, "");
histHel->Draw("COLZ");
// Note: For all plots below, Positive Helicity is defined as g0hel.R.helicity==1 when the BHWP is In
// and g0hel.R.helicity==-1 when the BHWP is Out
pad8->cd();
TString titlePosHelx = "# of Positive Helicity Events vs. Bjorken x";
cout << "Drawing " << titlePosHelx << "..." << endl;
TH1F *histPosHelxIn = new TH1F("histPosHelxIn",titlePosHelx,bins,xmin,xmax);
TH1F *histPosHelxOut = new TH1F("histPosHelxOut",titlePosHelx,bins,xmin,xmax);
TH1F *histPosHelx = new TH1F("histPosHelx",titlePosHelx,bins,xmin,xmax);
chainHe->Draw("(PriKineR.Q2 / (PriKineR.omega * 2 * 0.9315))>>histPosHelxIn", cuts && "g0hel.R.helicity==1" && "fEvtHdr.fRun<22413", "");
chainHe->Draw("(PriKineR.Q2 / (PriKineR.omega * 2 * 0.9315))>>histPosHelxOut", cuts && "g0hel.R.helicity==-1" && "fEvtHdr.fRun>22412", "");
histPosHelxIn->Sumw2();
histPosHelxOut->Sumw2();
histPosHelx->Add(histPosHelxIn,histPosHelxOut);
histPosHelx->Draw();
pad9->cd();
TString titleNegHelx = "# of Negative Helicity Events vs. Bjorken x";
cout << "Drawing " << titleNegHelx << "..." << endl;
TH1F *histNegHelxIn = new TH1F("histNegHelxIn",titleNegHelx,bins,xmin,xmax);
TH1F *histNegHelxOut = new TH1F("histNegHelxOut",titleNegHelx,bins,xmin,xmax);
TH1F *histNegHelx = new TH1F("histNegHelx",titleNegHelx,bins,xmin,xmax);
chainHe->Draw("(PriKineR.Q2 / (PriKineR.omega * 2 * 0.9315))>>histNegHelxIn", cuts && "g0hel.R.helicity==-1" && "fEvtHdr.fRun<22413", "");
chainHe->Draw("(PriKineR.Q2 / (PriKineR.omega * 2 * 0.9315))>>histNegHelxOut", cuts && "g0hel.R.helicity==1" && "fEvtHdr.fRun>22412", "");
histNegHelxIn->Sumw2();
histNegHelxOut->Sumw2();
histNegHelx->Add(histNegHelxIn,histNegHelxOut);
histNegHelx->Draw();
pad10->cd();
TString titlex = "Bjorken x ";
titlex += " (x=Q^2/[2m*omega])";
cout << "Drawing " << titlex << "..." << endl;
TH1F *histx = new TH1F("histx",titlex,bins,xmin,xmax);
histx->Sumw2();
chainHe->Draw("(PriKineR.Q2 / (PriKineR.omega * 2 * 0.9315))>>histx", cuts, "E");
histx->Draw();
// Note: Asymmetry is defined as (Pos - Neg)/(Pos + Neg)
pad11->cd();
TString titleAsym = "Beam Asymmetry (%) vs. Bjorken x for Q2 of ";
titleAsym += Q2;
cout << "Drawing " << titleAsym << "..." << endl;
// TH1F *histPosHelIn = new TH1F("histPosHelIn",titleAsym,bins,xmin,xmax);
// TH1F *histPosHelOut = new TH1F("histPosHelOut",titleAsym,bins,xmin,xmax);
// chainHe->Draw("(PriKineR.Q2 / (PriKineR.omega * 2 * 0.9315))>>histPosHelIn", cuts && "g0hel.R.helicity==1" && "fEvtHdr.fRun<22413", "");
// chainHe->Draw("(PriKineR.Q2 / (PriKineR.omega * 2 * 0.9315))>>histPosHelOut", cuts && "g0hel.R.helicity==-1" && "fEvtHdr.fRun>22412", "");
// histPosHelIn->Sumw2();
// histPosHelOut->Sumw2();
// histPosHel->Add(histPosHelIn,histPosHelOut);
// TH1F *histNegHelIn = new TH1F("histNegHelIn","Negative Helicity",bins,xmin,xmax);
// TH1F *histNegHelOut = new TH1F("histNegHelOut","Negative Helicity",bins,xmin,xmax);
// chainHe->Draw("(PriKineR.Q2 / (PriKineR.omega * 2 * 0.9315))>>histNegHelIn", cuts && "g0hel.R.helicity==-1" && "fEvt.fRun<22413", "");
// chainHe->Draw("(PriKineR.Q2 / (PriKineR.omega * 2 * 0.9315))>>histNegHelOut", cuts && "g0hel.R.helicity==1" && "fEvt.fRun>22412", "");
// histNegHelIn->Sumw2();
// histNegHelOut->Sumw2();
// histNegHel->Add(histNegHelIn,histNegHelOut);
// histPosHelx->SetStats(kFALSE);
// histNegHelx->SetStats(kFALSE);
// histPosHelx->Sumw2();
// histNegHelx->Sumw2();
histAsym = histPosHelx->GetAsymmetry(histNegHelx);
histAsym->Scale(100);
histAsym->SetTitle(titleAsym);
histAsym->Draw();
TString imagename = "Asymmetries/Longitudinal_Beam_Asymmetry_for_Q2_of_";
imagename += Q2;
imagename += ".png";
c1->Print(imagename);
cout << "All done!" << endl;
}
示例4: hand_beam_asymmetry_vs_nu
//.........这里部分代码省略.........
// if (includeVetos) {hand_draw_vetos(veto1plane, veto2plane, veto3plane, veto4plane, veto5plane, veto6plane,veto1bar, veto2bar, veto3bar, veto4bar, veto5bar, veto6bar, imageVetosWithoutVetosTitle, imageVetosWithVetosTitle, HeRunNumber, endHeRunNumber, chainHe, nplane, thisbar, TDCbins, TDCmin, TDCmax, cuts, vetoTDCs, antivetosAsVetos, allVetos, allAntivetos);}
// if ((nplane==1) && (thisbar==15)) { nplane = 2; thisbar = 7;}
// if ((nplane==2) && (thisbar==12)) { nplane = 3; thisbar = 6;}
// if ((nplane==3) && (thisbar==11)) { nplane = 4; thisbar = 3;}
// if ((nplane==4) && (thisbar==7)) { nplane = 4; thisbar = 99;}
}
}
TString canvasTotalSpinTest = "TotalSpinTest";
TString canvasTitleTotalSpinTest = "HAND - Total Spin (Not Scaled)";
TCanvas *totalSpinTestCanvas = new TCanvas(canvasTotalSpinTest,canvasTitleTotalSpinTest,1400,770); //x,y
totalspintestpad01 = new TPad("totalspintestpad01","totalspintestpad01",0.0000,0.5000,0.5000,1.0000,0,0,0);
totalspintestpad02 = new TPad("totalspintestpad02","totalspintestpad02",0.5000,0.5000,1.0000,1.0000,0,0,0);
totalspintestpad03 = new TPad("totalspintestpad03","totalspintestpad03",0.0000,0.0000,1.0000,0.5000,0,0,0);
totalspintestpad01->Draw(); totalspintestpad02->Draw(); totalspintestpad03->Draw();
totalspintestpad01->cd();
HANDTotalSpinUpx->SetTitle("Total Spin Up (Not Scaled)");
HANDTotalSpinUpx->Write();
HANDTotalSpinUpx->Draw();
totalspintestpad01->Update();
totalspintestpad02->cd();
HANDTotalSpinDownx->SetTitle("Total Spin Down (Not Scaled)");
HANDTotalSpinDownx->Write();
HANDTotalSpinDownx->Draw();
totalspintestpad02->Update();
totalspintestpad03->cd();
TF1 *fitasymtest = new TF1("fitasymtest","[0]",nuMin,nuMax);
HANDAsymTest = HANDTotalSpinUpx->GetAsymmetry(HANDTotalSpinDownx);
TString AsymTestTitle = "Target Asymmerty with Neutron Cuts vs. xBj for runs ";
AsymTestTitle += HeRunNumber;
AsymTestTitle += "-";
AsymTestTitle += endHeRunNumber;
HANDAsymTest->SetTitle(AsymTestTitle);
HANDAsymTest->Write();
HANDAsymTest->Draw();
fitasymtest->SetLineColor(kBlue);
HANDAsymTest->Fit("fitasymtest","R");
totalspintestpad03->Update();
TString asymTitle = "Target Asymmetry for Runs ";
asymTitle += HeRunNumber;
asymTitle += "-";
asymTitle += endHeRunNumber;
TCanvas *asymCanvas = new TCanvas("asymCanvas",asymTitle,1400,770); //x,y
asymCanvas->cd();
asymCanvas->SetGrid();
Double_t x[nuBins], y[nuBins], errorx[nuBins], errory[nuBins];
double minError;
double maxError;
double posStuff;
double negStuff;
double UpEvents;
double DownEvents;
asymOutFile << "Runs " << HeRunNumber << "-" << endHeRunNumber << endl;
cout << "Runs " << HeRunNumber << "-" << endHeRunNumber << endl;
asymOutFile << "xBj Asymmetry Stat. Error # BeamPos Events BeamPos Charge PosBeam LT # Neg Events BeamNeg Charge NegBeam LT" << endl;
cout << "xBj Asymmetry Stat. Error # BeamPos Events BeamPos Charge PosBeam LT # Neg Events BeamNeg Charge NegBeam LT" << endl;
for (int i=0; i<nuBins; i++)
{
示例5: v_beam_asymmetry
//.........这里部分代码省略.........
TH1F *histPosHelxIn2R = new TH1F("histPosHelxIn2R",titlePosHelx,bins,xmin,xmax);
TH1F *histPosHelxInR = new TH1F("histPosHelxInR",titlePosHelx,bins,xmin,xmax);
TH1F *histPosHelxOut1R = new TH1F("histPosHelxOut1R",titlePosHelx,bins,xmin,xmax);
TH1F *histPosHelxOut2R = new TH1F("histPosHelxOut2R",titlePosHelx,bins,xmin,xmax);
TH1F *histPosHelxOutR = new TH1F("histPosHelxOutR",titlePosHelx,bins,xmin,xmax);
TH1F *histPosHelxIn1L = new TH1F("histPosHelxIn1L",titlePosHelx,bins,xmin,xmax);
TH1F *histPosHelxIn2L = new TH1F("histPosHelxIn2L",titlePosHelx,bins,xmin,xmax);
TH1F *histPosHelxInL = new TH1F("histPosHelxInL",titlePosHelx,bins,xmin,xmax);
TH1F *histPosHelxOut1L = new TH1F("histPosHelxOut1L",titlePosHelx,bins,xmin,xmax);
TH1F *histPosHelxOut2L = new TH1F("histPosHelxOut2L",titlePosHelx,bins,xmin,xmax);
TH1F *histPosHelxOutL = new TH1F("histPosHelxOutL",titlePosHelx,bins,xmin,xmax);
TH1F *histPosHelxR = new TH1F("histPosHelxL",titlePosHelx,bins,xmin,xmax);
TH1F *histPosHelxL = new TH1F("histPosHelxR",titlePosHelx,bins,xmin,xmax);
TH1F *histPosHelx = new TH1F("histPosHelx",titlePosHelx,bins,xmin,xmax);
chainHeR->Draw("(PriKineR.Q2 / (PriKineR.nu * 2 * 0.9315))>>histPosHelxIn1R", cutsR && "g0hel.R.helicity==1" && "fEvtHdr.fRun>20576" && "fEvtHdr.fRun<20684", "");
chainHeR->Draw("(PriKineR.Q2 / (PriKineR.nu * 2 * 0.9315))>>histPosHelxIn2R", cutsR && "g0hel.R.helicity==1" && "fEvtHdr.fRun>20728" && "fEvtHdr.fRun<20813", "");
chainHeR->Draw("(PriKineR.Q2 / (PriKineR.nu * 2 * 0.9315))>>histPosHelxOut1R", cutsR && "g0hel.R.helicity==-1" && "fEvtHdr.fRun>20683" && "fEvtHdr.fRun<20728", "");
chainHeR->Draw("(PriKineR.Q2 / (PriKineR.nu * 2 * 0.9315))>>histPosHelxOut2R", cutsR && "g0hel.R.helicity==-1" && "fEvtHdr.fRun>20813" && "fEvtHdr.fRun<20879", "");
chainHeL->Draw("(PriKineL.Q2 / (PriKineL.nu * 2 * 0.9315))>>histPosHelxIn1L", cutsL && "g0hel.L.helicity==1" && "fEvtHdr.fRun>1685" && "fEvtHdr.fRun<1778", "");
chainHeL->Draw("(PriKineL.Q2 / (PriKineL.nu * 2 * 0.9315))>>histPosHelxIn2L", cutsL && "g0hel.L.helicity==1" && "fEvtHdr.fRun>1822" && "fEvtHdr.fRun<1905", "");
chainHeL->Draw("(PriKineL.Q2 / (PriKineL.nu * 2 * 0.9315))>>histPosHelxOut1L", cutsL && "g0hel.L.helicity==-1" && "fEvtHdr.fRun>1777" && "fEvtHdr.fRun<1823", "");
chainHeL->Draw("(PriKineL.Q2 / (PriKineL.nu * 2 * 0.9315))>>histPosHelxOut2L", cutsL && "g0hel.L.helicity==-1" && "fEvtHdr.fRun>1905" && "fEvtHdr.fRun<1960", "");
histPosHelxInR->Add(histPosHelxIn1R,histPosHelxIn2R);
histPosHelxOutR->Add(histPosHelxOut1R,histPosHelxOut2R);
histPosHelxR->Add(histPosHelxInR,histPosHelxOutR);
histPosHelxInL->Add(histPosHelxIn1L,histPosHelxIn2L);
histPosHelxOutL->Add(histPosHelxOut1L,histPosHelxOut2L);
histPosHelxL->Add(histPosHelxInL,histPosHelxOutL);
histPosHelx->Add(histPosHelxR,histPosHelxL);
histPosHelx->Draw();
pad9->cd();
TString titleNegHelx = "# of Negative Helicity Events vs. Bjorken x";
cout << "Drawing " << titleNegHelx << "..." << endl;
TH1F *histNegHelxIn1R = new TH1F("histNegHelxIn1R",titleNegHelx,bins,xmin,xmax);
TH1F *histNegHelxIn2R = new TH1F("histNegHelxIn2R",titleNegHelx,bins,xmin,xmax);
TH1F *histNegHelxInR = new TH1F("histNegHelxInR",titleNegHelx,bins,xmin,xmax);
TH1F *histNegHelxOut1R = new TH1F("histNegHelxOut1R",titleNegHelx,bins,xmin,xmax);
TH1F *histNegHelxOut2R = new TH1F("histNegHelxOut2R",titleNegHelx,bins,xmin,xmax);
TH1F *histNegHelxOutR = new TH1F("histNegHelxOutR",titleNegHelx,bins,xmin,xmax);
TH1F *histNegHelxR = new TH1F("histNegHelxR",titleNegHelx,bins,xmin,xmax);
TH1F *histNegHelxIn1L = new TH1F("histNegHelxIn1L",titleNegHelx,bins,xmin,xmax);
TH1F *histNegHelxIn2L = new TH1F("histNegHelxIn2L",titleNegHelx,bins,xmin,xmax);
TH1F *histNegHelxInL = new TH1F("histNegHelxInL",titleNegHelx,bins,xmin,xmax);
TH1F *histNegHelxOut1L = new TH1F("histNegHelxOut1L",titleNegHelx,bins,xmin,xmax);
TH1F *histNegHelxOut2L = new TH1F("histNegHelxOut2L",titleNegHelx,bins,xmin,xmax);
TH1F *histNegHelxOutL = new TH1F("histNegHelxOutL",titleNegHelx,bins,xmin,xmax);
TH1F *histNegHelxL = new TH1F("histNegHelxL",titleNegHelx,bins,xmin,xmax);
TH1F *histNegHelx = new TH1F("histNegHelx",titleNegHelx,bins,xmin,xmax);
chainHeR->Draw("(PriKineR.Q2 / (PriKineR.nu * 2 * 0.9315))>>histNegHelxIn1R", cutsR && "g0hel.R.helicity==-1" && "fEvtHdr.fRun>20576" && "fEvtHdr.fRun<20684", "");
chainHeR->Draw("(PriKineR.Q2 / (PriKineR.nu * 2 * 0.9315))>>histNegHelxIn2R", cutsR && "g0hel.R.helicity==-1" && "fEvtHdr.fRun>20728" && "fEvtHdr.fRun<20813", "");
chainHeR->Draw("(PriKineR.Q2 / (PriKineR.nu * 2 * 0.9315))>>histNegHelxOut1R", cutsR && "g0hel.R.helicity==1" && "fEvtHdr.fRun>20683" && "fEvtHdr.fRun<20728", "");
chainHeR->Draw("(PriKineR.Q2 / (PriKineR.nu * 2 * 0.9315))>>histNegHelxOut2R", cutsR && "g0hel.R.helicity==1" && "fEvtHdr.fRun>20813" && "fEvtHdr.fRun<20879", "");
chainHeL->Draw("(PriKineL.Q2 / (PriKineL.nu * 2 * 0.9315))>>histNegHelxIn1L", cutsL && "g0hel.L.helicity==-1" && "fEvtHdr.fRun>1685" && "fEvtHdr.fRun<1778", "");
chainHeL->Draw("(PriKineL.Q2 / (PriKineL.nu * 2 * 0.9315))>>histNegHelxIn2L", cutsL && "g0hel.L.helicity==-1" && "fEvtHdr.fRun>1822" && "fEvtHdr.fRun<1905", "");
chainHeL->Draw("(PriKineL.Q2 / (PriKineL.nu * 2 * 0.9315))>>histNegHelxOut1L", cutsL && "g0hel.L.helicity==1" && "fEvtHdr.fRun>1777" && "fEvtHdr.fRun<1823", "");
chainHeL->Draw("(PriKineL.Q2 / (PriKineL.nu * 2 * 0.9315))>>histNegHelxOut2L", cutsL && "g0hel.L.helicity==1" && "fEvtHdr.fRun>1905" && "fEvtHdr.fRun<1960", "");
histNegHelxInR->Add(histNegHelxIn1R,histNegHelxIn2R);
histNegHelxInL->Add(histNegHelxIn1L,histNegHelxIn2L);
histNegHelxOutR->Add(histNegHelxOut1R,histNegHelxOut2R);
histNegHelxOutL->Add(histNegHelxOut1L,histNegHelxOut2L);
histNegHelxR->Add(histNegHelxInR,histNegHelxOutR);
histNegHelxL->Add(histNegHelxInL,histNegHelxOutL);
histNegHelx->Add(histNegHelxR,histNegHelxL);
histNegHelx->Draw();
pad10->cd();
TString titlex = "Bjorken x ";
titlex += " (x=Q^2/[2m*nu])";
cout << "Drawing " << titlex << "..." << endl;
TH1F *histxR = new TH1F("histxR",titlex,bins,xmin,xmax);
TH1F *histxL = new TH1F("histxL",titlex,bins,xmin,xmax);
TH1F *histx = new TH1F("histx",titlex,bins,xmin,xmax);
histx->Sumw2();
chainHeR->Draw("(PriKineR.Q2 / (PriKineR.nu * 2 * 0.9315))>>histxR", cutsR, "E");
chainHeL->Draw("(PriKineL.Q2 / (PriKineL.nu * 2 * 0.9315))>>histxL", cutsL, "E");
histx->Add(histxR,histxL);
histx->Draw();
// Note: Asymmetry is defined as (Pos - Neg)/(Pos + Neg)
pad11->cd();
TString titleAsym = "Beam Asymmetry (%) vs. Bjorken x for Q2 of ";
titleAsym += Q2;
cout << "Drawing " << titleAsym << "..." << endl;
histAsym = histPosHelx->GetAsymmetry(histNegHelx);
histAsym->Scale(100);
histAsym->SetTitle(titleAsym);
histAsym->Draw();
TString imagename = "Asymmetries/Vertical_Beam_Asymmetry_for_Q2_of_";
imagename += Q2;
imagename += ".png";
c1->Print(imagename);
cout << "All done!" << endl;
}