CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
SideBandSubtract Class Reference

#include <SideBandSubtraction.h>

Public Member Functions

void addSideBandRegion (Double_t min, Double_t max)
 
void addSignalRegion (Double_t min, Double_t max)
 
void doFastSubtraction (TH1F &Total, TH1F &Result, SbsRegion &leftRegion, SbsRegion &rightRegion)
 
int doGlobalFit ()
 
int doSubtraction (RooRealVar *variable, Double_t stsratio, Int_t index)
 
std::vector< TH1F * > getBaseHistos ()
 
RooFitResult * getFitResult ()
 
std::vector< TH1F > getRawHistos ()
 
std::vector< TH1F > getSBSHistos ()
 
Double_t getSTSRatio ()
 
void printResults (std::string prefix="")
 
void resetSBSProducts ()
 
void saveResults (std::string outname)
 
void setDataSet (RooDataSet *newData)
 
 SideBandSubtract ()
 
 SideBandSubtract (RooAbsPdf *model_shape, RooAbsPdf *bkg_shape, RooDataSet *data, RooRealVar *sep_var, const std::vector< TH1F *> &base, bool verb)
 
 ~SideBandSubtract ()
 

Private Member Functions

Double_t getYield (const std::vector< SbsRegion > &Regions, RooAbsPdf *PDF)
 
void print_plot (RooRealVar *printVar, std::string outname)
 

Private Attributes

RooAbsPdf * BackgroundPDF
 
TH1F * base_histo
 
std::vector< TH1F * > BaseHistos
 
RooDataSet * Data
 
RooFitResult * fit_result
 
RooAbsPdf * ModelPDF
 
std::vector< TH1F > RawHistos
 
std::vector< TH1F > SBSHistos
 
RooRealVar * SeparationVariable
 
std::vector< TH1F > SideBandHistos
 
std::vector< SbsRegionSideBandRegions
 
std::vector< SbsRegionSignalRegions
 
Double_t SignalSidebandRatio
 
bool verbose
 

Detailed Description

Definition at line 19 of file SideBandSubtraction.h.

Constructor & Destructor Documentation

◆ SideBandSubtract() [1/2]

SideBandSubtract::SideBandSubtract ( )

Definition at line 289 of file SideBandSubtraction.cc.

290  : BackgroundPDF(nullptr),
291  ModelPDF(nullptr),
292  Data(nullptr),
293  SeparationVariable(nullptr),
294  verbose(false),
295  SignalRegions(),
296  SideBandRegions(),
297  SideBandHistos(0),
298  RawHistos(0),
299  SBSHistos(0),
300  BaseHistos(0),
301  fit_result(nullptr),
303  // Default constructor so we can do fast subtraction
304 }
RooAbsPdf * BackgroundPDF
std::vector< TH1F > SideBandHistos
RooFitResult * fit_result
std::vector< TH1F > SBSHistos
RooRealVar * SeparationVariable
std::vector< SbsRegion > SideBandRegions
std::vector< SbsRegion > SignalRegions
std::vector< TH1F * > BaseHistos
std::vector< TH1F > RawHistos

◆ SideBandSubtract() [2/2]

SideBandSubtract::SideBandSubtract ( RooAbsPdf *  model_shape,
RooAbsPdf *  bkg_shape,
RooDataSet *  data,
RooRealVar *  sep_var,
const std::vector< TH1F *> &  base,
bool  verb 
)

◆ ~SideBandSubtract()

SideBandSubtract::~SideBandSubtract ( )

Definition at line 371 of file SideBandSubtraction.cc.

References resetSBSProducts().

371  {
372  //**WARNING**
373 
374  // We don't delete objects that we don't own (duh) so, all of our
375  // pointers just hang out and get handled by other people :)
376 
377  // We DO own the BaseHistos IFF the user didn't provide us with
378  // them and we constructed them from the dataset... in this case
379  // base_histo will be non-null and we want to delete the vector
380  // of histograms...
382  /*
383  if(base_histo!=NULL)
384  {
385  BaseHistos.clear();
386  }
387  */
388 }

Member Function Documentation

◆ addSideBandRegion()

void SideBandSubtract::addSideBandRegion ( Double_t  min,
Double_t  max 
)

Definition at line 399 of file SideBandSubtraction.cc.

References SbsRegion::max, SiStripPI::max, SbsRegion::min, SiStripPI::min, SbsRegion::RegionName, SeparationVariable, SideBandRegions, and stringify().

399  {
400  SbsRegion sideband;
401  sideband.min = min;
402  sideband.max = max;
403  sideband.RegionName = "SideBand" + stringify(SideBandRegions.size());
404  if (SeparationVariable != nullptr)
405  SeparationVariable->setRange(sideband.RegionName.c_str(), sideband.min, sideband.max);
406  SideBandRegions.push_back(sideband);
407  return;
408 }
std::string stringify(const T &t)
RooRealVar * SeparationVariable
std::string RegionName
std::vector< SbsRegion > SideBandRegions

◆ addSignalRegion()

void SideBandSubtract::addSignalRegion ( Double_t  min,
Double_t  max 
)

Definition at line 389 of file SideBandSubtraction.cc.

References SbsRegion::max, SiStripPI::max, SbsRegion::min, SiStripPI::min, SbsRegion::RegionName, SeparationVariable, SignalRegions, and stringify().

389  {
390  SbsRegion signal;
391  signal.min = min;
392  signal.max = max;
393  signal.RegionName = "Signal" + stringify(SignalRegions.size());
394  if (SeparationVariable != nullptr)
395  SeparationVariable->setRange(signal.RegionName.c_str(), signal.min, signal.max);
396  SignalRegions.push_back(signal);
397  return;
398 }
std::string stringify(const T &t)
RooRealVar * SeparationVariable
std::string RegionName
std::vector< SbsRegion > SignalRegions

◆ doFastSubtraction()

void SideBandSubtract::doFastSubtraction ( TH1F &  Total,
TH1F &  Result,
SbsRegion leftRegion,
SbsRegion rightRegion 
)

Definition at line 443 of file SideBandSubtraction.cc.

References spclusmultinvestigator_cfi::binMax, binMin, eeNoiseFilter_cfi::Intercept, SbsRegion::max, SbsRegion::min, totemT2DQMSource_cfi::nbinsx, eeNoiseFilter_cfi::Slope, IntegrityTask_cfi::Total, testProducerWithPsetDescEmpty_cfi::x1, testProducerWithPsetDescEmpty_cfi::x2, geometryCSVtoXML::xx, testProducerWithPsetDescEmpty_cfi::y1, and testProducerWithPsetDescEmpty_cfi::y2.

443  {
444  Int_t binMin = Total.FindBin(leftRegion.max, 0.0, 0.0);
445  Int_t binMax = Total.FindBin(leftRegion.min, 0.0, 0.0);
446  double numLeft = Total.Integral(binMin, binMax);
447 
448  binMin = Total.FindBin(rightRegion.max, 0.0, 0.0);
449  binMax = Total.FindBin(rightRegion.min, 0.0, 0.0);
450  double numRight = Total.Integral(binMin, binMax);
451 
452  const unsigned int nbinsx = Total.GetNbinsX();
453  const double x1 = (leftRegion.max + leftRegion.min) / 2.0;
454  const double x2 = (rightRegion.max + rightRegion.min) / 2.0;
455 
456  const double y1 = numLeft / (leftRegion.max - leftRegion.min);
457  const double y2 = numRight / (rightRegion.max - rightRegion.min);
458 
459  const double Slope = (y2 - y1) / (x2 - x1);
460  const double Intercept = y1 - Slope * x1;
461  // Evantually we want to handle more complicated functions, but for
462  // now... just use a linear one
463  TF1 function("sbs_function_line", "[0]*x + [1]", Total.GetMinimum(), Total.GetMaximum());
464  for (unsigned int binx = 1; binx <= nbinsx; ++binx) {
465  double binWidth = Total.GetBinWidth(binx);
466  function.SetParameter(0, Slope * binWidth);
467  function.SetParameter(1, Intercept * binWidth);
468 
469  double xx = Total.GetBinCenter(binx);
470  double cu = Total.GetBinContent(binx) - function.Eval(xx);
471  // TODO: Propogate the error on the parameters in function.
472  double error1 = Total.GetBinError(binx);
473 
474  Result.SetBinContent(binx, cu);
475  Result.SetBinError(binx, error1);
476  }
477  Result.SetEntries(Result.Integral());
478 }
const float binMin[32]

◆ doGlobalFit()

int SideBandSubtract::doGlobalFit ( )

Definition at line 409 of file SideBandSubtraction.cc.

References BackgroundPDF, BaseHistos, DMR_cfg::cerr, gather_cfg::cout, Data, doSubtraction(), fit_result, getYield(), mps_fire::i, ModelPDF, resetSBSProducts(), SeparationVariable, SideBandRegions, SignalRegions, SignalSidebandRatio, AlCaHLTBitMon_QueryRunRegistry::string, HPSPFTaus_cff::variable, and verbose.

409  {
410  if (verbose)
411  cout << "Beginning SideBand Subtraction\n";
412 
413  if (ModelPDF != nullptr && Data != nullptr && SeparationVariable != nullptr) {
414  fit_result = ModelPDF->fitTo(*Data);
415  } else {
416  cerr << "ERROR: doGobalFit, no ModelPDF, SeparationVariable or Data specified\n";
417  return -1;
418  }
419 
420  Double_t SideBandYield = getYield(SideBandRegions, BackgroundPDF);
421  Double_t BackgroundInSignal = getYield(SignalRegions, BackgroundPDF);
422 
423  SignalSidebandRatio = BackgroundInSignal / SideBandYield;
424  if (verbose) {
425  cout << "Finished fitting background!\n";
426  cout << "Attained a Signal to Sideband ratio of: " << SignalSidebandRatio << endl;
427  }
428  //I can't see a way around a double loop for each variable. Maybe I
429  //can get a C++/RooFit guru to save me the trouble here?
430 
431  //need to grab sbs objects after each global fit, because they get reset
433  for (const auto& variable : *Data->get()) {
434  for (unsigned int i = 0; i < BaseHistos.size(); i++) {
435  if ((string)variable->GetName() != (string)SeparationVariable->GetName() &&
436  (string)variable->GetName() == (string)BaseHistos[i]->GetName())
438  }
439  }
440 
441  return 0;
442 }
RooAbsPdf * BackgroundPDF
Double_t getYield(const std::vector< SbsRegion > &Regions, RooAbsPdf *PDF)
RooFitResult * fit_result
int doSubtraction(RooRealVar *variable, Double_t stsratio, Int_t index)
RooRealVar * SeparationVariable
std::vector< SbsRegion > SideBandRegions
std::vector< SbsRegion > SignalRegions
std::vector< TH1F * > BaseHistos

◆ doSubtraction()

int SideBandSubtract::doSubtraction ( RooRealVar *  variable,
Double_t  stsratio,
Int_t  index 
)

Definition at line 77 of file SideBandSubtraction.cc.

References DMR_cfg::cerr, mps_fire::i, dqmiolumiharvest::j, SiStripPI::max, SiStripPI::min, setHistOptions(), AlCaHLTBitMon_QueryRunRegistry::string, trigObjTnPSource_cfi::var, and HPSPFTaus_cff::variable.

Referenced by doGlobalFit().

80 {
81  if (Data == nullptr || SeparationVariable == nullptr) {
82  cerr << "ERROR: Data or SeparationVariable is NULL returning now!\n";
83  return -1;
84  }
85  TH1F* SideBandHist = (TH1F*)BaseHistos[index]->Clone();
86  setHistOptions(SideBandHist,
87  (string)variable->GetName() + "Sideband",
88  (string)SideBandHist->GetTitle() + " Sideband",
89  (string)variable->getUnit());
90 
91  TH1F* SignalHist = (TH1F*)BaseHistos[index]->Clone();
92  setHistOptions(SignalHist,
93  (string)variable->GetName() + "SignalHist",
94  (string)SignalHist->GetTitle() + " Raw Signal",
95  (string)variable->getUnit());
96 
97  //Begin a loop over the data to fill our histograms. I should figure
98  //out how to do this in one shot to avoid a loop
99  //O(N_vars*N_events)...
100 
101  RooRealVar* sep_var = nullptr;
102  for (const auto& var : *Data->get()) {
103  if ((string)var->GetName() == (string)SeparationVariable->GetName()) {
104  sep_var = (RooRealVar*)var;
105  break;
106  }
107  }
108 
109  for (int i = 0; i < Data->numEntries(); i++) {
110  Data->get(i);
111  Double_t value = variable->getVal();
112  Double_t cutval = sep_var->getVal();
113 
114  for (unsigned int j = 0; j < SideBandRegions.size(); j++) //UGLY! Find better solution!
115  {
116  if (cutval > SideBandRegions[j].min && cutval < SideBandRegions[j].max)
117  SideBandHist->Fill(value);
118  }
119  for (unsigned int j = 0; j < SignalRegions.size(); j++) {
120  if (cutval > SignalRegions[j].min && cutval < SignalRegions[j].max)
121  SignalHist->Fill(value);
122  }
123  }
124  //Save pre-subtracted histo
125  SignalHist->Sumw2();
126  SideBandHist->Sumw2();
127  //SignalHist->SetDirectory(0); SideBandHist->SetDirectory(0);
128  RawHistos.push_back(*SignalHist);
129 
130  SignalHist->Add(SideBandHist, -stsratio);
131 
132  SignalHist->SetTitle(((string)BaseHistos[index]->GetTitle() + " SBS Signal").c_str());
133  //Save subtracted histo
134  SBSHistos.push_back(*SignalHist);
135  //Save Sideband histo
136  SideBandHistos.push_back(*SideBandHist);
137 
138  if (SideBandHist)
139  delete SideBandHist;
140  return 0;
141 }
std::vector< TH1F > SideBandHistos
static void setHistOptions(TH1F *histo, string name, string title, string axis_label)
std::vector< TH1F > SBSHistos
RooRealVar * SeparationVariable
std::vector< SbsRegion > SideBandRegions
Definition: value.py:1
std::vector< SbsRegion > SignalRegions
std::vector< TH1F * > BaseHistos
std::vector< TH1F > RawHistos

◆ getBaseHistos()

vector< TH1F * > SideBandSubtract::getBaseHistos ( )

Definition at line 480 of file SideBandSubtraction.cc.

References BaseHistos.

480 { return BaseHistos; }
std::vector< TH1F * > BaseHistos

◆ getFitResult()

RooFitResult * SideBandSubtract::getFitResult ( )

Definition at line 479 of file SideBandSubtraction.cc.

References fit_result.

479 { return fit_result; }
RooFitResult * fit_result

◆ getRawHistos()

vector< TH1F > SideBandSubtract::getRawHistos ( )

Definition at line 481 of file SideBandSubtraction.cc.

References RawHistos.

481 { return RawHistos; }
std::vector< TH1F > RawHistos

◆ getSBSHistos()

vector< TH1F > SideBandSubtract::getSBSHistos ( )

Definition at line 482 of file SideBandSubtraction.cc.

References SBSHistos.

482 { return SBSHistos; }
std::vector< TH1F > SBSHistos

◆ getSTSRatio()

Double_t SideBandSubtract::getSTSRatio ( )

Definition at line 483 of file SideBandSubtraction.cc.

References SignalSidebandRatio.

483 { return SignalSidebandRatio; }

◆ getYield()

Double_t SideBandSubtract::getYield ( const std::vector< SbsRegion > &  Regions,
RooAbsPdf *  PDF 
)
private

Definition at line 51 of file SideBandSubtraction.cc.

References gather_cfg::cout, mps_fire::i, ExhumeParameters_cfi::PDF, SiPixelRawToDigiRegional_cfi::Regions, and verbose.

Referenced by doGlobalFit().

51  {
52  if (PDF == nullptr || SeparationVariable == nullptr)
53  return 0.0;
54 
55  Double_t yield = 0;
56  RooAbsReal* intPDF;
57  for (unsigned int i = 0; i < Regions.size(); i++) {
58  if (verbose)
59  cout << "Integrating over Range: " << Regions[i].RegionName << " from " << Regions[i].min << " to "
60  << Regions[i].max << endl;
61  intPDF = PDF->createIntegral(*SeparationVariable, Range(Regions[i].RegionName.c_str()));
62  yield += intPDF->getVal();
63  if (verbose)
64  cout << "Current yield: " << yield << endl;
65  }
66  return yield;
67 }
PixelRecoRange< float > Range
RooRealVar * SeparationVariable

◆ print_plot()

void SideBandSubtract::print_plot ( RooRealVar *  printVar,
std::string  outname 
)
private

Definition at line 273 of file SideBandSubtraction.cc.

References DMR_cfg::cerr, and DeadROCCounter_Phase1::outname.

273  {
274  if (Data == nullptr || ModelPDF == nullptr) {
275  cerr << "ERROR: print_plot, Data or ModelPDF are NULL\n";
276  return;
277  }
278 
279  RooPlot* genericFrame = printVar->frame();
280  Data->plotOn(genericFrame);
281  ModelPDF->plotOn(genericFrame);
282  TCanvas genericCanvas;
283  genericFrame->Draw();
284  outname = outname + ".eps";
285  genericCanvas.SaveAs(outname.c_str());
286  outname.replace(outname.size() - 3, 3, "gif");
287  genericCanvas.SaveAs(outname.c_str());
288 }

◆ printResults()

void SideBandSubtract::printResults ( std::string  prefix = "")

Definition at line 150 of file SideBandSubtraction.cc.

References DMR_cfg::cerr, gather_cfg::cout, corrVsCorr::filename, mps_fire::i, MillePedeFileConverter_cfg::out, DeadROCCounter_Phase1::outname, convertSQLitetoXML_cfg::output, hcallasereventfilter2012_cfi::prefix, print_histo(), AlCaHLTBitMon_QueryRunRegistry::string, EcalTangentSkim_cfg::Verbose, and verbose.

150  { //handles *all* printing
151  //spool over vectors of histograms and print them, then print
152  //separation variable plots and the results text file.
153  if (SeparationVariable == nullptr) {
154  cerr << "ERROR: printResults, SeparationVariable is NULL!\n";
155  return;
156  }
157  string filename; //output file name
158  for (unsigned int i = 0; i < RawHistos.size(); ++i) {
159  filename = prefix + "Raw_" + (string)RawHistos[i].GetName();
161  }
162  for (unsigned int i = 0; i < SBSHistos.size(); ++i) {
163  filename = prefix + "SBS_" + (string)RawHistos[i].GetName();
165  }
166  if (verbose) {
167  for (unsigned int i = 0; i < SideBandHistos.size(); ++i) {
168  filename = prefix + "SideBand_" + (string)RawHistos[i].GetName();
170  }
171  }
172 
173  string outname = prefix + (string)SeparationVariable->GetName() + "_fitted.eps";
174  if (Data != nullptr && ModelPDF != nullptr) {
175  RooPlot* SepVarFrame = SeparationVariable->frame();
176  Data->plotOn(SepVarFrame);
177  ModelPDF->plotOn(SepVarFrame);
178  TCanvas Canvas;
179  SepVarFrame->Draw();
180  Canvas.SaveAs(outname.c_str());
181  outname.replace(outname.size() - 3, 3, "gif");
182  Canvas.SaveAs(outname.c_str());
183  } else
184  cerr << "ERROR: printResults, Data or ModelPDF is NULL!\n";
185 
186  string result_outname = prefix + "_fit_results.txt";
187  std::ofstream output(result_outname.c_str(), std::ios::out);
188  if (!output) {
189  cout << "ERROR: Could not open file for writing!\n";
190  return;
191  }
192 
193  if (fit_result != nullptr) {
194 #if ROOT_VERSION_CODE <= ROOT_VERSION(5, 19, 0)
195  fit_result->printToStream(output, Verbose);
196 #else
197  fit_result->printMultiline(output, kTRUE);
198 #endif
199  }
200 }
std::vector< TH1F > SideBandHistos
RooFitResult * fit_result
static void print_histo(TH1F *plot, string outname)
std::vector< TH1F > SBSHistos
RooRealVar * SeparationVariable
Definition: output.py:1
std::vector< TH1F > RawHistos

◆ resetSBSProducts()

void SideBandSubtract::resetSBSProducts ( )

Definition at line 484 of file SideBandSubtraction.cc.

References RawHistos, SBSHistos, and SideBandHistos.

Referenced by doGlobalFit(), and ~SideBandSubtract().

484  {
485  //cout <<"Starting to reset products \n";
486 
487  if (!SideBandHistos.empty())
488  SideBandHistos.clear();
489 
490  if (!RawHistos.empty())
491  RawHistos.clear();
492  if (!SBSHistos.empty())
493  SBSHistos.clear();
494 }
std::vector< TH1F > SideBandHistos
std::vector< TH1F > SBSHistos
std::vector< TH1F > RawHistos

◆ saveResults()

void SideBandSubtract::saveResults ( std::string  outname)

Definition at line 202 of file SideBandSubtraction.cc.

References DMR_cfg::cerr, BTVHLTOfflineSource_cfi::dirname, mps_fire::i, submitPVResolutionJobs::key, getGTfromDQMFile::obj, DeadROCCounter_Phase1::outname, convertSQLitetoXML_cfg::output, and stringify().

202  {
203  //saves the ephemeral stuff to a root file for future
204  //use/modification (ie everything printed by printResults())
205 
206  TFile output(outname.c_str(), "UPDATE"); //open the output file,
207  //create it if it doesn't
208  //exist
209  //Since keys are only available from files on disk, we need to write
210  //out a new file. If the file already existed, then we opened to
211  //update, and are writing nothing new.
212  output.Write();
213  TString dirname;
214  TIter nextkey(output.GetListOfKeys());
215  TKey* key;
216  TDirectory* curDir = nullptr;
217  while ((key = (TKey*)nextkey.Next())) {
218  if (key == nullptr)
219  break;
220  TObject* obj = key->ReadObj();
221  if (obj->IsA()->InheritsFrom("TDirectory"))
222  dirname = obj->GetName();
223  }
224 
225  if (dirname == "") {
226  //we didn't find any directories so, we'll make a new one
227  curDir = output.mkdir("run0", "Run 0");
228  output.cd("run0");
229  } else {
230  //manipulate last dir string, make a new one, and get ready to fill
231  dirname.Remove(0, 3);
232  Int_t run_num = dirname.Atoi();
233  run_num++;
234  dirname = "run" + stringify(run_num);
235  curDir = output.mkdir(dirname.Data(), ("Run " + stringify(run_num)).c_str());
236  output.cd(dirname.Data());
237  }
238  if (curDir == nullptr)
239  curDir = output.GetDirectory("", kTRUE, "");
240 
241  //these should all be the same size, but to be pedantic we'll loop
242  //over each one individually, also, we need to associate them with
243  //the directory because by default they "float" in memory to avoid
244  //conflicts with other root files the user has open. If they want to
245  //write to those files, they need to close their file, pass the name
246  //here, and then let us work.
247  for (unsigned int i = 0; i < SideBandHistos.size(); ++i) {
248  SideBandHistos[i].SetDirectory(curDir);
249  SideBandHistos[i].Write();
250  }
251  for (unsigned int i = 0; i < RawHistos.size(); ++i) {
252  RawHistos[i].SetDirectory(curDir);
253  RawHistos[i].Write();
254  }
255  for (unsigned int i = 0; i < SBSHistos.size(); ++i) {
256  SBSHistos[i].SetDirectory(curDir);
257  SBSHistos[i].Write();
258  }
259  if (Data != nullptr && ModelPDF != nullptr && BackgroundPDF != nullptr && SeparationVariable != nullptr) {
260  RooPlot* sep_varFrame = SeparationVariable->frame();
261  Data->plotOn(sep_varFrame);
262  ModelPDF->plotOn(sep_varFrame);
263  BackgroundPDF->plotOn(sep_varFrame);
264  sep_varFrame->Write();
265  } else
266  cerr << "ERROR: saveResults, did not save RooPlot of data and fit\n";
267  output.Write();
268 }
RooAbsPdf * BackgroundPDF
std::vector< TH1F > SideBandHistos
std::string stringify(const T &t)
std::vector< TH1F > SBSHistos
RooRealVar * SeparationVariable
key
prepare the HTCondor submission files and eventually submit them
Definition: output.py:1
std::vector< TH1F > RawHistos

◆ setDataSet()

void SideBandSubtract::setDataSet ( RooDataSet *  newData)

Definition at line 269 of file SideBandSubtraction.cc.

269  {
270  if (newData != nullptr)
271  Data = newData;
272 }

Member Data Documentation

◆ BackgroundPDF

RooAbsPdf* SideBandSubtract::BackgroundPDF
private

Definition at line 23 of file SideBandSubtraction.h.

Referenced by doGlobalFit().

◆ base_histo

TH1F* SideBandSubtract::base_histo
private

Definition at line 34 of file SideBandSubtraction.h.

◆ BaseHistos

std::vector<TH1F*> SideBandSubtract::BaseHistos
private

Definition at line 33 of file SideBandSubtraction.h.

Referenced by doGlobalFit(), and getBaseHistos().

◆ Data

RooDataSet* SideBandSubtract::Data
private

Definition at line 25 of file SideBandSubtraction.h.

Referenced by doGlobalFit().

◆ fit_result

RooFitResult* SideBandSubtract::fit_result
private

Definition at line 35 of file SideBandSubtraction.h.

Referenced by doGlobalFit(), and getFitResult().

◆ ModelPDF

RooAbsPdf* SideBandSubtract::ModelPDF
private

Definition at line 24 of file SideBandSubtraction.h.

Referenced by doGlobalFit().

◆ RawHistos

std::vector<TH1F> SideBandSubtract::RawHistos
private

Definition at line 31 of file SideBandSubtraction.h.

Referenced by getRawHistos(), and resetSBSProducts().

◆ SBSHistos

std::vector<TH1F> SideBandSubtract::SBSHistos
private

Definition at line 32 of file SideBandSubtraction.h.

Referenced by getSBSHistos(), and resetSBSProducts().

◆ SeparationVariable

RooRealVar* SideBandSubtract::SeparationVariable
private

Definition at line 26 of file SideBandSubtraction.h.

Referenced by addSideBandRegion(), addSignalRegion(), and doGlobalFit().

◆ SideBandHistos

std::vector<TH1F> SideBandSubtract::SideBandHistos
private

Definition at line 30 of file SideBandSubtraction.h.

Referenced by resetSBSProducts().

◆ SideBandRegions

std::vector<SbsRegion> SideBandSubtract::SideBandRegions
private

Definition at line 29 of file SideBandSubtraction.h.

Referenced by addSideBandRegion(), and doGlobalFit().

◆ SignalRegions

std::vector<SbsRegion> SideBandSubtract::SignalRegions
private

Definition at line 28 of file SideBandSubtraction.h.

Referenced by addSignalRegion(), and doGlobalFit().

◆ SignalSidebandRatio

Double_t SideBandSubtract::SignalSidebandRatio
private

Definition at line 36 of file SideBandSubtraction.h.

Referenced by doGlobalFit(), and getSTSRatio().

◆ verbose

bool SideBandSubtract::verbose
private

Definition at line 27 of file SideBandSubtraction.h.

Referenced by doGlobalFit().