CMS 3D CMS Logo

Classes | Functions | Variables
Zmumumerge.cc File Reference
#include <cmath>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <string>
#include "toolbox.h"
#include "Options.h"
#include "TAxis.h"
#include "TBranch.h"
#include "TCanvas.h"
#include "TChain.h"
#include "TCut.h"
#include "TF1.h"
#include "TFile.h"
#include "TFrame.h"
#include "TH1.h"
#include "TH1D.h"
#include "TH1F.h"
#include "TH2.h"
#include "TH2F.h"
#include "THStack.h"
#include "TLatex.h"
#include "TLegend.h"
#include "TMath.h"
#include "TPad.h"
#include "TPaveText.h"
#include "TRandom.h"
#include "TString.h"
#include "TStyle.h"
#include "TSystem.h"
#include "TTree.h"
#include <boost/filesystem.hpp>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
#include <boost/range/adaptor/indexed.hpp>
#include "Alignment/OfflineValidation/interface/FitWithRooFit.h"
#include "Alignment/OfflineValidation/macros/CMS_lumi.h"

Go to the source code of this file.

Classes

class  FitOut
 

Functions

void Draw_th1d (TH1D *th1d_input, TString variable_name, TString output_path)
 
void Draw_TH1D_forMultiRootFiles (const vector< TString > &file_names, const vector< TString > &label_names, const vector< int > &colors, const vector< int > &styles, const TString &Rlabel, const TString &th1d_name, const TString &xlabel, const TString &ylabel, const TString &output_name)
 
void Fitting_GetMassmeanVSvariables (TString inputfile_name, TString output_path)
 
int main (int argc, char *argv[])
 
void makeNicePlotStyle (RooPlot *plot)
 
RooRealVar MuMu_mass ("MuMu_mass", "MuMu_mass", 70, 110)
 
FitOut ZMassBinFit_OldTool (TH1D *th1d_input, TString s_name="zmumu_fitting", TString output_path="./")
 
int Zmumumerge (int argc, char *argv[])
 

Variables

static TString GT = ""
 
static const int max_file_number = 10
 
TLatex * tlxg = new TLatex()
 
const TString tstring_variables_name [variables_number]
 
const TString tstring_variables_name_label [variables_number]
 
static const int variables_number = 8
 

Function Documentation

◆ Draw_th1d()

void Draw_th1d ( TH1D *  th1d_input,
TString  variable_name,
TString  output_path 
)

Definition at line 139 of file Zmumumerge.cc.

References DummyCfis::c, GT, and tlxg.

Referenced by Fitting_GetMassmeanVSvariables().

139  {
140  TCanvas* c = new TCanvas();
141  c->cd();
142  gStyle->SetOptStat(0);
143  th1d_input->SetMarkerStyle(kFullCircle);
144  th1d_input->SetMarkerColor(kRed);
145  th1d_input->SetLineColor(kRed);
146  th1d_input->SetMaximum(91.4);
147  th1d_input->SetMinimum(90.85);
148  th1d_input->GetXaxis()->SetTitle(variable_name.Data());
149  th1d_input->GetXaxis()->SetTitleOffset(1.2);
150  th1d_input->GetYaxis()->SetTitle("Mass mean (GeV)");
151  th1d_input->Draw();
152  tlxg->DrawLatexNDC(0.2, 0.8, Form("%s", GT.Data()));
153  c->Print(Form("%s/fitResultPlot/mass_VS_%s.pdf", output_path.Data(), variable_name.Data()));
154 }
static TString GT
Definition: Zmumumerge.cc:66
TLatex * tlxg
Definition: Zmumumerge.cc:67

◆ Draw_TH1D_forMultiRootFiles()

void Draw_TH1D_forMultiRootFiles ( const vector< TString > &  file_names,
const vector< TString > &  label_names,
const vector< int > &  colors,
const vector< int > &  styles,
const TString &  Rlabel,
const TString &  th1d_name,
const TString &  xlabel,
const TString &  ylabel,
const TString &  output_name 
)

Definition at line 242 of file Zmumumerge.cc.

References cms::cuda::assert(), B, CMS_lumi(), gather_cfg::cout, corrVsCorr::filename, data-class-funcs::H, dttmaxenums::L, max_file_number, dttmaxenums::R, styles, HistogramManager_cfi::xlabel, HistogramManager_cfi::ylabel, L1TOccupancyClient_cfi::ymax, and L1TOccupancyClient_cfi::ymin.

Referenced by Zmumumerge().

250  {
251  if (file_names.empty() || label_names.empty()) {
252  std::cout << "Provided an empty list of file and label names" << std::endl;
253  return;
254  }
255 
256  // do not allow the list of files and labels names to differ
257  assert(file_names.size() == label_names.size());
258 
259  TH1D* th1d_input[max_file_number];
260  TFile* file_input[max_file_number];
261  for (auto const& filename : file_names | boost::adaptors::indexed(0)) {
262  file_input[filename.index()] = TFile::Open(filename.value());
263  th1d_input[filename.index()] = (TH1D*)file_input[filename.index()]->Get(th1d_name);
264  th1d_input[filename.index()]->SetTitle("");
265  }
266 
267  int W = 800;
268  int H = 800;
269  // references for T, B, L, R
270  float T = 0.08 * H;
271  float B = 0.12 * H;
272  float L = 0.12 * W;
273  float R = 0.04 * W;
274 
275  // Form the canvas name by appending th1d_name
276  TString canvasName;
277  canvasName.Form("canv_%s", th1d_name.Data());
278 
279  // Create a new canvas with the formed name
280  TCanvas* canv = new TCanvas(canvasName, canvasName, W, H);
281  canv->SetFillColor(0);
282  canv->SetBorderMode(0);
283  canv->SetFrameFillStyle(0);
284  canv->SetFrameBorderMode(0);
285  canv->SetLeftMargin(L / W + 0.05);
286  canv->SetRightMargin(R / W);
287  canv->SetTopMargin(T / H);
288  canv->SetBottomMargin(B / H);
289  canv->SetTickx(0);
290  canv->SetTicky(0);
291  canv->SetGrid();
292  canv->cd();
293 
294  gStyle->SetOptStat(0);
295 
296  TLegend* lg = new TLegend(0.3, 0.7, 0.7, 0.9);
297  lg->SetFillStyle(0);
298  lg->SetLineColor(0);
299  lg->SetEntrySeparation(0.05);
300 
301  double ymin = 0.;
302  double ymax = 0.;
303 
304  for (auto const& labelname : label_names | boost::adaptors::indexed(0)) {
305  double temp_ymin = th1d_input[labelname.index()]->GetMinimum();
306  double temp_ymax = th1d_input[labelname.index()]->GetMaximum();
307  if (labelname.index() == 0) {
308  ymin = temp_ymin;
309  ymax = temp_ymax;
310  }
311  if (temp_ymin <= ymin) {
312  ymin = temp_ymin;
313  }
314  if (temp_ymax >= ymax) {
315  ymax = temp_ymax;
316  }
317  }
318 
319  for (auto const& labelname : label_names | boost::adaptors::indexed(0)) {
320  th1d_input[labelname.index()]->SetMarkerColor(colors[labelname.index()]);
321  th1d_input[labelname.index()]->SetLineColor(colors[labelname.index()]);
322  th1d_input[labelname.index()]->SetMarkerStyle(styles[labelname.index()]);
323  th1d_input[labelname.index()]->GetXaxis()->SetTitle(xlabel);
324  th1d_input[labelname.index()]->GetYaxis()->SetTitle(ylabel);
325  th1d_input[labelname.index()]->GetYaxis()->SetTitleOffset(2.0);
326  lg->AddEntry(th1d_input[labelname.index()], labelname.value());
327 
328  TString label_meanmass_plot = "Mean M_{#mu#mu} (GeV)";
329  if (ylabel.EqualTo(label_meanmass_plot)) {
330  double ycenter = (ymax + ymin) / 2.0;
331  double yrange = (ymax - ymin) * 2;
332  double Ymin = ycenter - yrange;
333  double Ymax = ycenter + yrange * 1.10;
334  th1d_input[labelname.index()]->SetAxisRange(Ymin, Ymax, "Y");
335  th1d_input[labelname.index()]->Draw("PEX0same");
336  } else {
337  double Ymin = ymin - ymin * 0.07;
338  double Ymax = ymax + ymax * 0.35;
339  th1d_input[labelname.index()]->SetAxisRange(Ymin, Ymax, "Y");
340  th1d_input[labelname.index()]->Draw("HIST E1 same");
341  }
342  }
343 
344  CMS_lumi(canv, 0, 3, Rlabel);
345 
346  lg->Draw("same");
347 
348  canv->Update();
349  canv->RedrawAxis();
350  canv->GetFrame()->Draw();
351  canv->SaveAs(output_name);
352 
353  if (output_name.Contains(".pdf")) {
354  TString output_name_png(output_name); // output_name is const, copy to modify
355  output_name_png.Replace(output_name_png.Index(".pdf"), 4, ".png");
356  canv->SaveAs(output_name_png);
357  }
358 }
Definition: APVGainStruct.h:7
static const int max_file_number
Definition: Zmumumerge.cc:241
assert(be >=bs)
std::vector< Style_t > styles
Definition: colors.py:1
long double T
void CMS_lumi(TPad *pad, int iPeriod=3, int iPosX=10, TString RLabel="")
Definition: CMS_lumi.h:46

◆ Fitting_GetMassmeanVSvariables()

void Fitting_GetMassmeanVSvariables ( TString  inputfile_name,
TString  output_path 
)

Definition at line 168 of file Zmumumerge.cc.

References DMR_cfg::cerr, gather_cfg::cout, Draw_th1d(), mps_fire::i, dqmiolumiharvest::j, M_PI, FitOut::mean, FitOut::mean_err, writedatasetfile::outputfile, EnsembleCalibrationLA_cfg::path, tstring_variables_name, variables_number, and ZMassBinFit_OldTool().

Referenced by Zmumumerge().

168  {
169  TH2D* th2d_mass_variables[variables_number];
170  TFile* inputfile = TFile::Open(inputfile_name.Data());
171  TDirectoryFile* tdirectory = (TDirectoryFile*)inputfile->Get("DiMuonMassValidation");
172  for (int i = 0; i < variables_number; i++) {
173  TString th2d_name = Form("th2d_mass_%s", tstring_variables_name[i].Data());
174  th2d_mass_variables[i] = (TH2D*)tdirectory->Get(th2d_name);
175  }
176 
177  gSystem->Exec(Form("mkdir -p %s", output_path.Data()));
178  gSystem->Exec(Form("mkdir -p %s/fitResultPlot", output_path.Data()));
179  TFile* outputfile = TFile::Open(Form("%s/fitting_output.root", output_path.Data()), "RECREATE");
180  TH1D* th1d_variables_meanmass[variables_number];
181  TH1D* th1d_variables_entries[variables_number];
182  const int variables_rebin[variables_number] = {1, 1, 1, 1, 1, 1, 1, 1};
183  const double xaxis_range[variables_number][2] = {
184  {-1, 1}, {-4.8, 4.8}, {-2.4, 2.4}, {-2.4, 2.4}, {-1, 1}, {-M_PI, M_PI}, {-M_PI, M_PI}, {0, 100}};
185  for (int i = 0; i < variables_number; i++) {
186  TString th1d_name = Form("th1d_meanmass_%s", tstring_variables_name[i].Data());
187 
188  th2d_mass_variables[i]->RebinY(variables_rebin[i]);
189  th1d_variables_meanmass[i] = th2d_mass_variables[i]->ProjectionY(th1d_name, 1, 1, "d");
190  for (int j = 0; j < th1d_variables_meanmass[i]->GetNbinsX(); j++) {
191  if (i == 7 and j > 25) {
192  continue;
193  }
194  std::cout << __PRETTY_FUNCTION__
195  << " th1d_variables_meanmass[i]->GetNbinsX()=" << th1d_variables_meanmass[i]->GetNbinsX() << endl;
196  std::cout << __PRETTY_FUNCTION__ << " th2d_mass_variables[i]->GetNbinsY()=" << th2d_mass_variables[i]->GetNbinsY()
197  << endl;
198  th1d_variables_meanmass[i]->SetBinContent(j, 0);
199  th1d_variables_meanmass[i]->SetBinError(j, 0);
200 
201  TString th1d_mass_temp_name = Form("th1d_mass_%s_%d", tstring_variables_name[i].Data(), j);
202  TH1D* th1d_i = th2d_mass_variables[i]->ProjectionX(th1d_mass_temp_name, j, j, "d");
203  th1d_i->Write(th1d_mass_temp_name);
204  TString s_cut = Form("nocut");
205  TString s_name = Form("%s_%d", tstring_variables_name[i].Data(), j);
206 
207  FitOut fitR = ZMassBinFit_OldTool(th1d_i, s_name, output_path);
208 
209  th1d_variables_meanmass[i]->SetBinContent(j, fitR.mean);
210  th1d_variables_meanmass[i]->SetBinError(j, fitR.mean_err);
211  }
212 
213  th1d_variables_meanmass[i]->GetXaxis()->SetRangeUser(xaxis_range[i][0], xaxis_range[i][1]);
214  Draw_th1d(th1d_variables_meanmass[i], tstring_variables_name[i], output_path);
215  outputfile->cd();
216  th1d_variables_meanmass[i]->Write(th1d_name);
217 
218  TString th1d_name_entries = Form("th1d_entries_%s", tstring_variables_name[i].Data());
219  th1d_variables_entries[i] = th2d_mass_variables[i]->ProjectionY(th1d_name_entries, 0, -1, "d");
220  th1d_variables_entries[i]->GetXaxis()->SetTitle(tstring_variables_name[i].Data());
221  th1d_variables_entries[i]->GetYaxis()->SetTitle("Entry");
222  outputfile->cd();
223  th1d_variables_entries[i]->Write(th1d_name_entries);
224  }
225 
226  if (outputfile->IsOpen()) {
227  // Get the path (current working directory) in which the file is going to be written
228  const char* path = outputfile->GetPath();
229 
230  if (path) {
231  std::cout << "File is going to be written in the directory: " << path << " for input file: " << inputfile_name
232  << std::endl;
233  } else {
234  std::cerr << "Error: Unable to determine the path." << std::endl;
235  }
236  outputfile->Close();
237  delete outputfile;
238  }
239 }
static const int variables_number
Definition: Zmumumerge.cc:156
FitOut ZMassBinFit_OldTool(TH1D *th1d_input, TString s_name="zmumu_fitting", TString output_path="./")
Definition: Zmumumerge.cc:78
#define M_PI
const TString tstring_variables_name[variables_number]
Definition: Zmumumerge.cc:157
void Draw_th1d(TH1D *th1d_input, TString variable_name, TString output_path)
Definition: Zmumumerge.cc:139
double mean
Definition: Zmumumerge.cc:70
double mean_err
Definition: Zmumumerge.cc:71

◆ main()

int main ( int  argc,
char *  argv[] 
)

Definition at line 455 of file Zmumumerge.cc.

References dir2webdir::argc, GCPpyPlots::argv, and Zmumumerge().

455 { return Zmumumerge(argc, argv); }
int Zmumumerge(int argc, char *argv[])
Definition: Zmumumerge.cc:360

◆ makeNicePlotStyle()

void makeNicePlotStyle ( RooPlot *  plot)

Definition at line 49 of file Zmumumerge.cc.

References plotFactory::plot.

49  {
50  plot->GetXaxis()->CenterTitle(true);
51  plot->GetYaxis()->CenterTitle(true);
52  plot->GetXaxis()->SetTitleFont(42);
53  plot->GetYaxis()->SetTitleFont(42);
54  plot->GetXaxis()->SetTitleSize(0.05);
55  plot->GetYaxis()->SetTitleSize(0.05);
56  plot->GetXaxis()->SetTitleOffset(0.9);
57  plot->GetYaxis()->SetTitleOffset(1.3);
58  plot->GetXaxis()->SetLabelFont(42);
59  plot->GetYaxis()->SetLabelFont(42);
60  plot->GetYaxis()->SetLabelSize(.05);
61  plot->GetXaxis()->SetLabelSize(.05);
62 }

◆ MuMu_mass()

RooRealVar MuMu_mass ( "MuMu_mass"  ,
"MuMu_mass"  ,
70  ,
110   
)

◆ ZMassBinFit_OldTool()

FitOut ZMassBinFit_OldTool ( TH1D *  th1d_input,
TString  s_name = "zmumu_fitting",
TString  output_path = "./" 
)

Definition at line 78 of file Zmumumerge.cc.

References alignmentValidation::c1, instance, multiplicitycorr_cfi::xMax, and photonAnalyzer_cfi::xMin.

Referenced by Fitting_GetMassmeanVSvariables().

78  {
79  // silence messages
80  RooMsgService::instance().setGlobalKillBelow(RooFit::FATAL);
81 
82  double xMean = 91.1876;
83  double xMin = th1d_input->GetXaxis()->GetXmin();
84  double xMax = th1d_input->GetXaxis()->GetXmax();
85 
86  double sigma(2.);
87  double sigmaMin(0.1);
88  double sigmaMax(10.);
89 
90  double sigma2(0.1);
91  double sigma2Min(0.);
92  double sigma2Max(10.);
93 
94  std::unique_ptr<FitWithRooFit> fitter = std::make_unique<FitWithRooFit>();
95 
96  bool useChi2(false);
97 
98  fitter->useChi2_ = useChi2;
99  fitter->initMean(xMean, xMin, xMax);
100  fitter->initSigma(sigma, sigmaMin, sigmaMax);
101  fitter->initSigma2(sigma2, sigma2Min, sigma2Max);
102  fitter->initAlpha(1.5, 0.05, 10.);
103  fitter->initN(1, 0.01, 100.);
104  fitter->initFGCB(0.4, 0., 1.);
105  fitter->initGamma(2.4952, 0., 10.);
106  fitter->gamma()->setConstant(kTRUE);
107  fitter->initMean2(0., -20., 20.);
108  fitter->mean2()->setConstant(kTRUE);
109  fitter->initSigma(1.2, 0., 5.);
110  fitter->initAlpha(1.5, 0.05, 10.);
111  fitter->initN(1, 0.01, 100.);
112  fitter->initExpCoeffA0(-1., -10., 10.);
113  fitter->initExpCoeffA1(0., -10., 10.);
114  fitter->initExpCoeffA2(0., -2., 2.);
115  fitter->initFsig(0.9, 0., 1.);
116  fitter->initA0(0., -10., 10.);
117  fitter->initA1(0., -10., 10.);
118  fitter->initA2(0., -10., 10.);
119  fitter->initA3(0., -10., 10.);
120  fitter->initA4(0., -10., 10.);
121  fitter->initA5(0., -10., 10.);
122  fitter->initA6(0., -10., 10.);
123 
124  TCanvas* c1 = new TCanvas();
125  c1->Clear();
126  c1->SetLeftMargin(0.15);
127  c1->SetRightMargin(0.10);
128 
129  fitter->fit(th1d_input, "breitWignerTimesCB", "exponential", xMin, xMax, false);
130 
131  c1->Print(Form("%s/fitResultPlot/%s_oldtool.pdf", output_path.Data(), s_name.Data()));
132  c1->Print(Form("%s/fitResultPlot/%s_oldtool.root", output_path.Data(), s_name.Data()));
133 
134  FitOut fitRes(
135  fitter->mean()->getVal(), fitter->mean()->getError(), fitter->sigma()->getVal(), fitter->sigma()->getError());
136 
137  return fitRes;
138 }
static PFTauRenderPlugin instance

◆ Zmumumerge()

int Zmumumerge ( int  argc,
char *  argv[] 
)

Definition at line 360 of file Zmumumerge.cc.

References dir2webdir::argc, GCPpyPlots::argv, DMR_cfg::cerr, gather_cfg::cout, Draw_TH1D_forMultiRootFiles(), Fitting_GetMassmeanVSvariables(), mps_fire::i, AlcaSiPixelAliHarvester0T_cff::options, jetUpdater_cfi::sort, AlCaHLTBitMon_QueryRunRegistry::string, tstring_variables_name, tstring_variables_name_label, and variables_number.

Referenced by main().

360  {
361  vector<TString> vec_single_file_path;
362  vector<TString> vec_single_file_name;
363  vector<TString> vec_global_tag;
364  vector<TString> vec_title;
365  vector<int> vec_color;
366  vector<int> vec_style;
367  vector<TString> vec_right_title;
368 
370  options.helper(argc, argv);
371  options.parser(argc, argv);
372  pt::ptree main_tree;
373  pt::read_json(options.config, main_tree);
374  pt::ptree alignments = main_tree.get_child("alignments");
375  pt::ptree validation = main_tree.get_child("validation");
376 
377  //Load defined order
378  std::vector<std::pair<std::string, pt::ptree>> alignmentsOrdered;
379  for (const auto& childTree : alignments) {
380  alignmentsOrdered.push_back(childTree);
381  }
382  std::sort(alignmentsOrdered.begin(),
383  alignmentsOrdered.end(),
384  [](const std::pair<std::string, pt::ptree>& left, const std::pair<std::string, pt::ptree>& right) {
385  return left.second.get<int>("index") < right.second.get<int>("index");
386  });
387 
388  for (const auto& childTree : alignmentsOrdered) {
389  // do not consider the nodes with a "file" to merge
390  if (childTree.second.find("file") == childTree.second.not_found()) {
391  std::cerr << "Ignoring alignment: " << childTree.second.get<std::string>("title") << ".\nNo file to merged found!"
392  << std::endl;
393  continue;
394  } else {
395  std::cout << "Storing alignment: " << childTree.second.get<std::string>("title") << std::endl;
396  }
397  vec_single_file_path.push_back(childTree.second.get<std::string>("file"));
398  vec_single_file_name.push_back(childTree.second.get<std::string>("file") + "/Zmumu.root");
399  vec_color.push_back(childTree.second.get<int>("color"));
400  vec_style.push_back(childTree.second.get<int>("style"));
401  if (childTree.second.find("customrighttitle") == childTree.second.not_found()) {
402  vec_right_title.push_back("");
403  } else {
404  vec_right_title.push_back(childTree.second.get<std::string>("customrighttitle"));
405  }
406  vec_global_tag.push_back(childTree.second.get<std::string>("globaltag"));
407  vec_title.push_back(childTree.second.get<std::string>("title"));
408 
409  //Fitting_GetMassmeanVSvariables(childTree.second.get<std::string>("file") + "/Zmumu.root", childTree.second.get<std::string>("file"));
410  }
411 
412  TString merge_output = main_tree.get<std::string>("output");
413  //=============================================
414  vector<TString> vec_single_fittingoutput;
415  vec_single_fittingoutput.clear();
416  for (unsigned i = 0; i < vec_single_file_path.size(); i++) {
417  Fitting_GetMassmeanVSvariables(vec_single_file_name[i], vec_single_file_path[i]);
418  vec_single_fittingoutput.push_back(vec_single_file_path[i] + "/fitting_output.root");
419  }
420 
421  int files_number = vec_single_file_path.size();
422  cout << "files_number=" << files_number << endl;
423  for (int idx_variable = 0; idx_variable < variables_number; idx_variable++) {
424  TString th1d_name = Form("th1d_meanmass_%s", tstring_variables_name[idx_variable].Data());
425 
427  vec_single_fittingoutput,
428  vec_title,
429  vec_color,
430  vec_style,
431  vec_right_title[0],
432  th1d_name,
433  tstring_variables_name_label[idx_variable].Data(),
434  "Mean M_{#mu#mu} (GeV)",
435  merge_output + Form("/meanmass_%s_GTs.pdf", tstring_variables_name[idx_variable].Data()));
436 
437  TString th1d_name_entries = Form("th1d_entries_%s", tstring_variables_name[idx_variable].Data());
438 
440  vec_single_fittingoutput,
441  vec_title,
442  vec_color,
443  vec_style,
444  vec_right_title[0],
445  th1d_name_entries,
446  tstring_variables_name_label[idx_variable].Data(),
447  "Events",
448  merge_output + Form("/entries_%s_GTs.pdf", tstring_variables_name[idx_variable].Data()));
449  }
450 
451  //=============================================
452  return EXIT_SUCCESS;
453 }
static const int variables_number
Definition: Zmumumerge.cc:156
const TString tstring_variables_name_label[variables_number]
Definition: Zmumumerge.cc:159
void Draw_TH1D_forMultiRootFiles(const vector< TString > &file_names, const vector< TString > &label_names, const vector< int > &colors, const vector< int > &styles, const TString &Rlabel, const TString &th1d_name, const TString &xlabel, const TString &ylabel, const TString &output_name)
Definition: Zmumumerge.cc:242
const TString tstring_variables_name[variables_number]
Definition: Zmumumerge.cc:157
void Fitting_GetMassmeanVSvariables(TString inputfile_name, TString output_path)
Definition: Zmumumerge.cc:168

Variable Documentation

◆ GT

TString GT = ""
static

Definition at line 66 of file Zmumumerge.cc.

Referenced by Draw_th1d().

◆ max_file_number

const int max_file_number = 10
static

Definition at line 241 of file Zmumumerge.cc.

Referenced by Draw_TH1D_forMultiRootFiles().

◆ tlxg

TLatex* tlxg = new TLatex()

Definition at line 67 of file Zmumumerge.cc.

Referenced by Draw_th1d().

◆ tstring_variables_name

const TString tstring_variables_name[variables_number]
Initial value:
= {
"CosThetaCS", "DeltaEta", "EtaMinus", "EtaPlus", "PhiCS", "PhiMinus", "PhiPlus", "Pt"}

Definition at line 157 of file Zmumumerge.cc.

Referenced by Fitting_GetMassmeanVSvariables(), and Zmumumerge().

◆ tstring_variables_name_label

const TString tstring_variables_name_label[variables_number]
Initial value:
= {"cos #theta_{CS}",
"#Delta #eta",
"#eta_{#mu^{-}}",
"#eta_{#mu^{+}}",
"#phi_{CS}",
"#phi_{#mu^{-}}",
"#phi_{#mu^{+}}",
"p_{T}"}

Definition at line 159 of file Zmumumerge.cc.

Referenced by Zmumumerge().

◆ variables_number

const int variables_number = 8
static

Definition at line 156 of file Zmumumerge.cc.

Referenced by Fitting_GetMassmeanVSvariables(), and Zmumumerge().