/** This Macro 1. Measures ratios between efficiency values of SlPi, Pion, Kaon Need to specify 1. See Declare Constants */ ///// // Prepare Root ///// #include #include #include #include using namespace std; ///// // Declare constants ///// //For the file .txt to be called const string filename_SlPi = "output_ratio_SlPi_3.txt"; const string filename_Pion = "output_ratio_Pion_3.txt"; const string filename_Kaon = "output_ratio_Kaon_3.txt"; //Choose which ratio to plot in the same canvas //Only Pion/SlPi const bool both_ratios = false; //Both Pion/SlPi and Kaon/SlPi //const bool both_ratios = true; //For the number of values to be called (num_val must have the same value of const_bin in Efficiency_TruthMC_SlPi_Pi_K) const double num_val = 50; ///// // Main function ///// void Compare_ratio() { setTDRStyle(); cout<SetOptFit(1111); ///// //1. It measures ratios between efficiency values of SlPi, Pion, Kaon //Call values of efficiency and their error for //SlPi double SlPi; double SlPi_x[num_val]; double SlPi_val[num_val]; double SlPi_err[num_val]; ifstream file_SlPi; file_SlPi.open(filename_SlPi.c_str()); //Pion double Pion; double Pion_x[num_val]; double Pion_xerr[num_val]; double Pion_val[num_val]; double Pion_err[num_val]; ifstream file_Pion; file_Pion.open(filename_Pion.c_str()); //Kaon double Kaon; double Kaon_x[num_val]; double Kaon_xerr[num_val]; double Kaon_val[num_val]; double Kaon_err[num_val]; ifstream file_Kaon; file_Kaon.open(filename_Kaon.c_str()); //Ratio Pion/SlPi int n_pi_slpi = 0; double rv_pi_slpi[num_val]; double re_pi_slpi[num_val]; //Ratio Kaon/SlPi int n_k_slpi = 0; double rv_k_slpi[num_val]; double re_k_slpi[num_val]; for(int i=0; i>SlPi; SlPi_x[i] = SlPi; file_SlPi>>SlPi; SlPi_val[i] = SlPi; file_SlPi>>SlPi; SlPi_err[i] = SlPi; //Pion file_Pion>>Pion; Pion_val[i] = Pion; file_Pion>>Pion; Pion_err[i] = Pion; //Kaon file_Kaon>>Kaon; Kaon_val[i] = Kaon; file_Kaon>>Kaon; Kaon_err[i] = Kaon; //Ratio Pion/SlPi if(Pion_val[i] != 0 && SlPi_val[i] != 0) { Pion_x[i] = SlPi_x[i]; Pion_xerr[i] = 0; rv_pi_slpi[i] = Pion_val[i]/SlPi_val[i]; re_pi_slpi[i] = sqrt(pow(Pion_err[i]/SlPi_val[i],2) + pow((Pion_val[i]*SlPi_err[i])/(SlPi_val[i]*SlPi_val[i]),2)); n_pi_slpi++; //cout<SetHeader("Ratios of the efficiencies"); //Plot ratio Pion/SlPi TGraphErrors *pion_slpi = new TGraphErrors(n_pi_slpi, Pion_x, rv_pi_slpi, Pion_xerr, re_pi_slpi); pion_slpi->SetTitle(0); pion_slpi->GetXaxis()->SetTitle("p (GeV/c)"); pion_slpi->GetYaxis()->SetTitle("#frac{#epsilon(p_{#pi,K})}{#epsilon(p_{#pi_{s}})}"); pion_slpi->SetMarkerStyle(8); pion_slpi->SetMarkerColor(1); pion_slpi->Draw("APZ"); pion_slpi->Fit("pol0","S"); leg->AddEntry(pion_slpi,"#frac{#epsilon(p_{#pi})}{#epsilon(p_{#pi_{s}})}","p"); leg->SetBorderSize(0); //leg->Draw(); if(both_ratios) { //Plot ratio Kaon/SlPi TGraphErrors *kaon_slpi = new TGraphErrors(n_k_slpi, Kaon_x, rv_k_slpi, Kaon_xerr, re_k_slpi); kaon_slpi->SetMarkerStyle(21); kaon_slpi->SetMarkerColor(2); kaon_slpi->Draw("PZ"); leg->AddEntry(kaon_slpi,"#frac{#epsilon(p_{K})}{#epsilon(p_{#pi_{s}})}","p"); leg->SetBorderSize(0); leg->Draw(); } } ///// // Set setTDRStyle_modified (from link https://twiki.cern.ch/twiki/pub/CMS/TRK10001/setTDRStyle_modified.C) ///// void setTDRStyle(){ TStyle *tdrStyle = new TStyle("tdrStyle","Style for P-TDR"); // For the canvas: tdrStyle->SetCanvasBorderMode(0); tdrStyle->SetCanvasColor(kWhite); tdrStyle->SetCanvasDefH(600); //Height of canvas tdrStyle->SetCanvasDefW(600); //Width of canvas tdrStyle->SetCanvasDefX(0); //POsition on screen tdrStyle->SetCanvasDefY(0); // For the Pad: tdrStyle->SetPadBorderMode(0); // tdrStyle->SetPadBorderSize(Width_t size = 1); tdrStyle->SetPadColor(kWhite); tdrStyle->SetPadGridX(false); tdrStyle->SetPadGridY(false); tdrStyle->SetGridColor(0); tdrStyle->SetGridStyle(3); tdrStyle->SetGridWidth(1); // For the frame: tdrStyle->SetFrameBorderMode(0); tdrStyle->SetFrameBorderSize(1); tdrStyle->SetFrameFillColor(0); tdrStyle->SetFrameFillStyle(0); tdrStyle->SetFrameLineColor(1); tdrStyle->SetFrameLineStyle(1); tdrStyle->SetFrameLineWidth(1); // For the histo: tdrStyle->SetHistFillColor(0); // tdrStyle->SetHistFillStyle(0); tdrStyle->SetHistLineColor(1); tdrStyle->SetHistLineStyle(0); tdrStyle->SetHistLineWidth(1); // tdrStyle->SetLegoInnerR(Float_t rad = 0.5); // tdrStyle->SetNumberContours(Int_t number = 20); // tdrStyle->SetEndErrorSize(0); tdrStyle->SetErrorX(0.); // tdrStyle->SetErrorMarker(20); tdrStyle->SetMarkerStyle(20); //For the fit/function: tdrStyle->SetOptFit(1); tdrStyle->SetFitFormat("5.3g"); //tdrStyle->SetFuncColor(1); tdrStyle->SetFuncStyle(1); tdrStyle->SetFuncWidth(1); //For the date: tdrStyle->SetOptDate(0); // tdrStyle->SetDateX(Float_t x = 0.01); // tdrStyle->SetDateY(Float_t y = 0.01); // For the statistics box: tdrStyle->SetOptFile(0); tdrStyle->SetOptStat(0); // To display the mean and RMS: SetOptStat("mr"); tdrStyle->SetStatColor(kWhite); tdrStyle->SetStatFont(42); tdrStyle->SetStatFontSize(0.025); tdrStyle->SetStatTextColor(1); tdrStyle->SetStatFormat("6.4g"); tdrStyle->SetStatBorderSize(1); tdrStyle->SetStatH(0.1); tdrStyle->SetStatW(0.15); // tdrStyle->SetStatStyle(Style_t style = 1001); // tdrStyle->SetStatX(Float_t x = 0); // tdrStyle->SetStatY(Float_t y = 0); // Margins: tdrStyle->SetPadTopMargin(0.05); tdrStyle->SetPadBottomMargin(0.13); tdrStyle->SetPadLeftMargin(0.13); tdrStyle->SetPadRightMargin(0.05); // For the Global title: // tdrStyle->SetOptTitle(0); tdrStyle->SetTitleFont(42); tdrStyle->SetTitleColor(1); tdrStyle->SetTitleTextColor(1); tdrStyle->SetTitleFillColor(10); tdrStyle->SetTitleFontSize(0.05); // tdrStyle->SetTitleH(0); // Set the height of the title box // tdrStyle->SetTitleW(0); // Set the width of the title box // tdrStyle->SetTitleX(0); // Set the position of the title box // tdrStyle->SetTitleY(0.985); // Set the position of the title box // tdrStyle->SetTitleStyle(Style_t style = 1001); // tdrStyle->SetTitleBorderSize(2); // For the axis titles: tdrStyle->SetTitleColor(1, "XYZ"); tdrStyle->SetTitleFont(42, "XYZ"); tdrStyle->SetTitleSize(0.06, "XYZ"); // tdrStyle->SetTitleXSize(Float_t size = 0.02); // Another way to set the size? // tdrStyle->SetTitleYSize(Float_t size = 0.02); tdrStyle->SetTitleXOffset(0.9); tdrStyle->SetTitleYOffset(1.05); // tdrStyle->SetTitleOffset(1.1, "Y"); // Another way to set the Offset // For the axis labels: tdrStyle->SetLabelColor(1, "XYZ"); tdrStyle->SetLabelFont(42, "XYZ"); tdrStyle->SetLabelOffset(0.007, "XYZ"); tdrStyle->SetLabelSize(0.05, "XYZ"); // For the axis: tdrStyle->SetAxisColor(1, "XYZ"); tdrStyle->SetStripDecimals(kTRUE); tdrStyle->SetTickLength(0.03, "XYZ"); tdrStyle->SetNdivisions(510, "XYZ"); tdrStyle->SetPadTickX(1); // To get tick marks on the opposite side of the frame tdrStyle->SetPadTickY(1); // Change for log plots: tdrStyle->SetOptLogx(0); tdrStyle->SetOptLogy(0); tdrStyle->SetOptLogz(0); // Postscript options: // tdrStyle->SetPaperSize(15.,15.); // tdrStyle->SetLineScalePS(Float_t scale = 3); // tdrStyle->SetLineStyleString(Int_t i, const char* text); // tdrStyle->SetHeaderPS(const char* header); // tdrStyle->SetTitlePS(const char* pstitle); // tdrStyle->SetBarOffset(Float_t baroff = 0.5); // tdrStyle->SetBarWidth(Float_t barwidth = 0.5); // tdrStyle->SetPaintTextFormat(const char* format = "g"); // tdrStyle->SetPalette(Int_t ncolors = 0, Int_t* colors = 0); // tdrStyle->SetTimeOffset(Double_t toffset); // tdrStyle->SetHistMinimumZero(kTRUE); tdrStyle->cd(); }