CMS 3D CMS Logo

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

#include <MuonAnalysis/MomentumScaleCalibration/plugins/ErrorsPropagationAnalyzer.cc>

Inheritance diagram for ErrorsPropagationAnalyzer:
edm::one::EDAnalyzer<> edm::one::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

 ErrorsPropagationAnalyzer (const edm::ParameterSet &)
 
 ~ErrorsPropagationAnalyzer () override
 
- Public Member Functions inherited from edm::one::EDAnalyzer<>
 EDAnalyzer ()=default
 
 EDAnalyzer (const EDAnalyzer &)=delete
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
const EDAnalyzeroperator= (const EDAnalyzer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
- Public Member Functions inherited from edm::one::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDAnalyzerBase () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::array< std::vector< ModuleDescription const *> *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const *> const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void drawHistograms (const TProfile *histo, const TProfile *histoPlusErr, const TProfile *histoMinusErr, const TString &type, const TString &yLabel)
 
void endJob () override
 
void fillHistograms ()
 
void fillValueError ()
 
double massResolution (const lorentzVector &mu1, const lorentzVector &mu2, const std::vector< double > &parval, const double &sigmaPt1, const double &sigmaPt2)
 Modified method to take into account the error. More...
 
double massResolution (const lorentzVector &mu1, const lorentzVector &mu2, double *parval, const double &sigmaPt1, const double &sigmaPt2)
 

Private Attributes

bool debug_
 
std::vector< int > errorFactors_
 
std::vector< double > errors_
 
int etaBins_
 
double etaMax_
 
double etaMaxCut_
 
double etaMin_
 
double etaMinCut_
 
uint32_t maxEvents_
 
TString outputFileName_
 
std::vector< double > parameters_
 
int ptBins_
 
double ptMax_
 
double ptMaxCut_
 
double ptMin_
 
double ptMinCut_
 
int resolFitType_
 
TProfile * sigmaMassOverMassVsEta_
 
TProfile * sigmaMassOverMassVsEtaMinusErr_
 
TProfile * sigmaMassOverMassVsEtaPlusErr_
 
TProfile * sigmaMassOverMassVsPt_
 
TProfile * sigmaMassOverMassVsPtMinusErr_
 
TProfile * sigmaMassOverMassVsPtPlusErr_
 
TProfile * sigmaMassVsEta_
 
TProfile * sigmaMassVsEtaMinusErr_
 
TProfile * sigmaMassVsEtaPlusErr_
 
TProfile * sigmaMassVsPt_
 
TProfile * sigmaMassVsPtMinusErr_
 
TProfile * sigmaMassVsPtPlusErr_
 
TProfile * sigmaPtVsEta_
 
TProfile * sigmaPtVsEtaDiff_
 
TProfile * sigmaPtVsEtaMinusErr_
 
TProfile * sigmaPtVsEtaPlusErr_
 
TProfile * sigmaPtVsPt_
 
TProfile * sigmaPtVsPtDiff_
 
TProfile * sigmaPtVsPtMinusErr_
 
TProfile * sigmaPtVsPtPlusErr_
 
TString treeFileName_
 
std::vector< double > valueMinusError_
 
std::vector< double > valuePlusError_
 

Additional Inherited Members

- Public Types inherited from edm::one::EDAnalyzerBase
typedef EDAnalyzerBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< Bconsumes (edm::InputTag tag) noexcept
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes ()
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag)
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
void resetItemsToGetFrom (BranchType iType)
 

Detailed Description

Description: <one line="" class="" summary>="">

Implementation: <Notes on="" implementation>="">

Definition at line 46 of file ErrorsPropagationAnalyzer.cc.

Constructor & Destructor Documentation

◆ ErrorsPropagationAnalyzer()

ErrorsPropagationAnalyzer::ErrorsPropagationAnalyzer ( const edm::ParameterSet iConfig)
explicit

Definition at line 123 of file ErrorsPropagationAnalyzer.cc.

References gather_cfg::cout, errorFactors_, errors_, etaBins_, etaMax_, etaMin_, beamvalidation::exit(), fillValueError(), edm::ParameterSet::getParameter(), parameters_, ptBins_, ptMax_, ptMin_, sigmaMassOverMassVsEta_, sigmaMassOverMassVsEtaMinusErr_, sigmaMassOverMassVsEtaPlusErr_, sigmaMassOverMassVsPt_, sigmaMassOverMassVsPtMinusErr_, sigmaMassOverMassVsPtPlusErr_, sigmaMassVsEta_, sigmaMassVsEtaMinusErr_, sigmaMassVsEtaPlusErr_, sigmaMassVsPt_, sigmaMassVsPtMinusErr_, sigmaMassVsPtPlusErr_, sigmaPtVsEta_, sigmaPtVsEtaDiff_, sigmaPtVsEtaMinusErr_, sigmaPtVsEtaPlusErr_, sigmaPtVsPt_, sigmaPtVsPtDiff_, sigmaPtVsPtMinusErr_, and sigmaPtVsPtPlusErr_.

124  : treeFileName_(iConfig.getParameter<std::string>("InputFileName")),
125  resolFitType_(iConfig.getParameter<int>("ResolFitType")),
126  maxEvents_(iConfig.getParameter<int>("MaxEvents")),
127  outputFileName_(iConfig.getParameter<std::string>("OutputFileName")),
128  ptBins_(iConfig.getParameter<int>("PtBins")),
129  ptMin_(iConfig.getParameter<double>("PtMin")),
130  ptMax_(iConfig.getParameter<double>("PtMax")),
131  etaBins_(iConfig.getParameter<int>("EtaBins")),
132  etaMin_(iConfig.getParameter<double>("EtaMin")),
133  etaMax_(iConfig.getParameter<double>("EtaMax")),
134  debug_(iConfig.getParameter<bool>("Debug")),
135  ptMinCut_(iConfig.getUntrackedParameter<double>("PtMinCut", 0.)),
136  ptMaxCut_(iConfig.getUntrackedParameter<double>("PtMaxCut", 999999.)),
137  etaMinCut_(iConfig.getUntrackedParameter<double>("EtaMinCut", 0.)),
138  etaMaxCut_(iConfig.getUntrackedParameter<double>("EtaMaxCut", 100.)) {
139  parameters_ = iConfig.getParameter<std::vector<double> >("Parameters");
140  errors_ = iConfig.getParameter<std::vector<double> >("Errors");
141  errorFactors_ = iConfig.getParameter<std::vector<int> >("ErrorFactors");
142 
143  if ((parameters_.size() != errors_.size()) || (parameters_.size() != errorFactors_.size())) {
144  std::cout << "Error: parameters and errors have different number of values" << std::endl;
145  exit(1);
146  }
147 
148  fillValueError();
149 
150  sigmaPtVsPt_ = new TProfile("sigmaPtVsPtProfile", "sigmaPtVsPt", ptBins_, ptMin_, ptMax_);
151  sigmaPtVsPtPlusErr_ = new TProfile("sigmaPtVsPtPlusErrProfile", "sigmaPtVsPtPlusErr", ptBins_, ptMin_, ptMax_);
152  sigmaPtVsPtMinusErr_ = new TProfile("sigmaPtVsPtMinusErrProfile", "sigmaPtVsPtMinusErr", ptBins_, ptMin_, ptMax_);
153 
154  sigmaPtVsEta_ = new TProfile("sigmaPtVsEtaProfile", "sigmaPtVsEta", etaBins_, etaMin_, etaMax_);
155  sigmaPtVsEtaPlusErr_ = new TProfile("sigmaPtVsEtaPlusErrProfile", "sigmaPtVsEtaPlusErr", etaBins_, etaMin_, etaMax_);
157  new TProfile("sigmaPtVsEtaMinusErrProfile", "sigmaPtVsEtaMinusErr", etaBins_, etaMin_, etaMax_);
158 
159  sigmaMassVsPt_ = new TProfile("sigmaMassVsPtProfile", "sigmaMassVsPt", ptBins_, ptMin_, ptMax_);
160  sigmaMassVsPtPlusErr_ = new TProfile("sigmaMassVsPtPlusErrProfile", "sigmaMassVsPtPlusErr", ptBins_, ptMin_, ptMax_);
162  new TProfile("sigmaMassVsPtMinusErrProfile", "sigmaMassVsPtMinusErr", ptBins_, ptMin_, ptMax_);
163 
164  sigmaMassVsEta_ = new TProfile("sigmaMassVsEtaProfile", "sigmaMassVsEta", etaBins_, etaMin_, etaMax_);
166  new TProfile("sigmaMassVsEtaPlusErrProfile", "sigmaMassVsEtaPlusErr", etaBins_, etaMin_, etaMax_);
168  new TProfile("sigmaMassVsEtaMinusErrProfile", "sigmaMassVsEtaMinusErr", etaBins_, etaMin_, etaMax_);
169 
171  new TProfile("sigmaMassOverMassVsPtProfile", "sigmaMassOverMassVsPt", ptBins_, ptMin_, ptMax_);
173  new TProfile("sigmaMassOverMassVsPtPlusErrProfile", "sigmaMassOverMassVsPtPlusErr", ptBins_, ptMin_, ptMax_);
175  new TProfile("sigmaMassOverMassVsPtMinusErrProfile", "sigmaMassOverMassVsPtMinusErr", ptBins_, ptMin_, ptMax_);
176 
178  new TProfile("sigmaMassOverMassVsEtaProfile", "sigmaMassOverMassVsEta", etaBins_, etaMin_, etaMax_);
180  new TProfile("sigmaMassOverMassVsEtaPlusErrProfile", "sigmaMassOverMassVsEtaPlusErr", etaBins_, etaMin_, etaMax_);
181  sigmaMassOverMassVsEtaMinusErr_ = new TProfile(
182  "sigmaMassOverMassVsEtaMinusErrProfile", "sigmaMassOverMassVsEtaMinusErr", etaBins_, etaMin_, etaMax_);
183 
184  sigmaPtVsPtDiff_ = new TProfile("sigmaPtVsPtDiffProfile", "sigmaPtVsPtDiff", ptBins_, ptMin_, ptMax_);
185  sigmaPtVsEtaDiff_ = new TProfile("sigmaPtVsEtaDiffProfile", "sigmaPtVsEtaDiff", etaBins_, etaMin_, etaMax_);
186 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
T getUntrackedParameter(std::string const &, T const &) const
def exit(msg="")

◆ ~ErrorsPropagationAnalyzer()

ErrorsPropagationAnalyzer::~ErrorsPropagationAnalyzer ( )
override

Definition at line 202 of file ErrorsPropagationAnalyzer.cc.

References drawHistograms(), fillHistograms(), download_sqlite_cfg::outputFile, outputFileName_, sigmaMassOverMassVsEta_, sigmaMassOverMassVsEtaMinusErr_, sigmaMassOverMassVsEtaPlusErr_, sigmaMassOverMassVsPt_, sigmaMassOverMassVsPtMinusErr_, sigmaMassOverMassVsPtPlusErr_, sigmaMassVsEta_, sigmaMassVsEtaMinusErr_, sigmaMassVsEtaPlusErr_, sigmaMassVsPt_, sigmaMassVsPtMinusErr_, sigmaMassVsPtPlusErr_, sigmaPtVsEta_, sigmaPtVsEtaDiff_, sigmaPtVsEtaMinusErr_, sigmaPtVsEtaPlusErr_, sigmaPtVsPt_, sigmaPtVsPtDiff_, sigmaPtVsPtMinusErr_, and sigmaPtVsPtPlusErr_.

202  {
203  gROOT->SetStyle("Plain");
204 
205  fillHistograms();
206 
207  TFile* outputFile = new TFile(outputFileName_, "RECREATE");
208 
209  drawHistograms(sigmaPtVsEta_, sigmaPtVsEtaPlusErr_, sigmaPtVsEtaMinusErr_, "sigmaPtVsEta", "#sigma(Pt)/Pt");
210  drawHistograms(sigmaPtVsPt_, sigmaPtVsPtPlusErr_, sigmaPtVsPtMinusErr_, "sigmaPtVsPt", "#sigma(Pt)/Pt");
211 
214 
218  "sigmaMassOverMassVsEta",
219  "#sigma(M)/M");
223  "sigmaMassOverMassVsPt",
224  "#sigma(M)/M");
225 
226  sigmaPtVsPtDiff_->Write();
227  sigmaPtVsEtaDiff_->Write();
228 
229  outputFile->Write();
230  outputFile->Close();
231 }
void drawHistograms(const TProfile *histo, const TProfile *histoPlusErr, const TProfile *histoMinusErr, const TString &type, const TString &yLabel)

Member Function Documentation

◆ analyze()

void ErrorsPropagationAnalyzer::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivatevirtual

Implements edm::one::EDAnalyzerBase.

Definition at line 368 of file ErrorsPropagationAnalyzer.cc.

368 {}

◆ drawHistograms()

void ErrorsPropagationAnalyzer::drawHistograms ( const TProfile *  histo,
const TProfile *  histoPlusErr,
const TProfile *  histoMinusErr,
const TString &  type,
const TString &  yLabel 
)
private

Definition at line 233 of file ErrorsPropagationAnalyzer.cc.

References svgfig::canvas(), timingPdfMaker::histo, mps_fire::i, sigmaMassOverMassVsEta_, sigmaMassOverMassVsEtaMinusErr_, sigmaMassOverMassVsEtaPlusErr_, sigmaMassVsEta_, sigmaMassVsEtaMinusErr_, sigmaMassVsEtaPlusErr_, sigmaPtVsEta_, sigmaPtVsEtaMinusErr_, sigmaPtVsEtaPlusErr_, runGCPTkAlMap::title, and contentValuesCheck::values.

Referenced by ~ErrorsPropagationAnalyzer().

237  {
238  TH1D* sigmaPtVsEtaTH1D =
239  new TH1D(type, type, histo->GetNbinsX(), histo->GetXaxis()->GetXmin(), histo->GetXaxis()->GetXmax());
240  TH1D* sigmaPtVsEtaPlusErrTH1D = new TH1D(type + "PlusErr",
241  type + "PlusErr",
242  histo->GetNbinsX(),
243  histo->GetXaxis()->GetXmin(),
244  histo->GetXaxis()->GetXmax());
245  TH1D* sigmaPtVsEtaMinusErrTH1D = new TH1D(type + "MinusErr",
246  type + "MinusErr",
247  histo->GetNbinsX(),
248  histo->GetXaxis()->GetXmin(),
249  histo->GetXaxis()->GetXmax());
250 
251  TH1D* sigmaMassVsEtaTH1D =
252  new TH1D(type, type, histo->GetNbinsX(), histo->GetXaxis()->GetXmin(), histo->GetXaxis()->GetXmax());
253  TH1D* sigmaMassVsEtaPlusErrTH1D = new TH1D(type + "PlusErr",
254  type + "PlusErr",
255  histo->GetNbinsX(),
256  histo->GetXaxis()->GetXmin(),
257  histo->GetXaxis()->GetXmax());
258  TH1D* sigmaMassVsEtaMinusErrTH1D = new TH1D(type + "MinusErr",
259  type + "MinusErr",
260  histo->GetNbinsX(),
261  histo->GetXaxis()->GetXmin(),
262  histo->GetXaxis()->GetXmax());
263 
264  TH1D* sigmaMassOverMassVsEtaTH1D =
265  new TH1D(type, type, histo->GetNbinsX(), histo->GetXaxis()->GetXmin(), histo->GetXaxis()->GetXmax());
266  TH1D* sigmaMassOverMassVsEtaPlusErrTH1D = new TH1D(type + "PlusErr",
267  type + "PlusErr",
268  histo->GetNbinsX(),
269  histo->GetXaxis()->GetXmin(),
270  histo->GetXaxis()->GetXmax());
271  TH1D* sigmaMassOverMassVsEtaMinusErrTH1D = new TH1D(type + "MinusErr",
272  type + "MinusErr",
273  histo->GetNbinsX(),
274  histo->GetXaxis()->GetXmin(),
275  histo->GetXaxis()->GetXmax());
276 
277  TCanvas* canvas = new TCanvas("canvas" + type, "canvas" + type, 1000, 800);
278  for (int iBin = 1; iBin <= histo->GetNbinsX(); ++iBin) {
279  sigmaPtVsEtaTH1D->SetBinContent(iBin, histo->GetBinContent(iBin));
280  sigmaPtVsEtaPlusErrTH1D->SetBinContent(iBin, histoPlusErr->GetBinContent(iBin));
281  sigmaPtVsEtaMinusErrTH1D->SetBinContent(iBin, histoMinusErr->GetBinContent(iBin));
282  }
283  int numBins = sigmaPtVsEtaTH1D->GetNbinsX();
284  // Draw TGraph with asymmetric errors
285  Double_t* values = sigmaPtVsEtaTH1D->GetArray();
286  Double_t* valuesPlus = sigmaPtVsEtaPlusErrTH1D->GetArray();
287  Double_t* valuesMinus = sigmaPtVsEtaMinusErrTH1D->GetArray();
288  double* posErrors = new double[numBins];
289  double* negErrors = new double[numBins];
290 
291  TGraphAsymmErrors* graphAsymmErrors = new TGraphAsymmErrors(sigmaPtVsEtaTH1D);
292  TGraph* graph = new TGraph(sigmaPtVsEtaTH1D);
293 
294  for (int i = 1; i <= numBins; ++i) {
295  // std::cout << "filling " << i << std::endl;
296  posErrors[i - 1] = valuesPlus[i] - values[i];
297  if (valuesMinus[i] < 0)
298  negErrors[i - 1] = values[i];
299  else
300  negErrors[i - 1] = values[i] - valuesMinus[i];
301 
302  graphAsymmErrors->SetPointEYlow(i - 1, negErrors[i - 1]);
303  graphAsymmErrors->SetPointEYhigh(i - 1, posErrors[i - 1]);
304  }
305 
306  canvas->Draw();
307 
308  delete[] posErrors;
309  delete[] negErrors;
310 
311  graphAsymmErrors->SetTitle("");
312  graphAsymmErrors->SetFillColor(kGray);
313  graphAsymmErrors->Draw("A2");
314  TString title(type);
315  if (type == "Eta")
316  title = "#eta";
317  graphAsymmErrors->GetXaxis()->SetTitle(title);
318  graphAsymmErrors->GetYaxis()->SetTitle("yLabel");
319  graph->Draw();
320 
321  // graph->SetLineColor(kGray);
322  // graph->SetMarkerColor(kBlack);
323  // graph->Draw("AP");
324 
325  // if( debug_ ) {
326  // sigmaPtVsEtaPlusErrTH1D->SetLineColor(kRed);
327  // sigmaPtVsEtaMinusErrTH1D->SetLineColor(kBlue);
328  // }
329  // else {
330  // sigmaPtVsEtaPlusErrTH1D->SetFillColor(kGray);
331  // sigmaPtVsEtaPlusErrTH1D->SetLineColor(kWhite);
332  // sigmaPtVsEtaMinusErrTH1D->SetFillColor(kWhite);
333  // sigmaPtVsEtaMinusErrTH1D->SetLineColor(kWhite);
334  // }
335  // sigmaPtVsEtaPlusErrTH1D->Draw();
336  // sigmaPtVsEtaTH1D->Draw("SAME");
337  // sigmaPtVsEtaMinusErrTH1D->Draw("SAME");
338 
339  sigmaPtVsEtaPlusErrTH1D->Write();
340  sigmaPtVsEtaTH1D->Write();
341  sigmaPtVsEtaMinusErrTH1D->Write();
342 
343  sigmaPtVsEtaPlusErr_->Write();
344  sigmaPtVsEta_->Write();
345  sigmaPtVsEtaMinusErr_->Write();
346 
347  // Mass
348  sigmaMassVsEtaPlusErrTH1D->Write();
349  sigmaMassVsEtaTH1D->Write();
350  sigmaMassVsEtaMinusErrTH1D->Write();
351 
352  sigmaMassOverMassVsEtaPlusErrTH1D->Write();
353  sigmaMassOverMassVsEtaTH1D->Write();
354  sigmaMassOverMassVsEtaMinusErrTH1D->Write();
355 
356  sigmaMassVsEtaPlusErr_->Write();
357  sigmaMassVsEta_->Write();
358  sigmaMassVsEtaMinusErr_->Write();
359 
361  sigmaMassOverMassVsEta_->Write();
363 
364  canvas->Write();
365 }
def canvas(sub, attr)
Definition: svgfig.py:482

◆ endJob()

void ErrorsPropagationAnalyzer::endJob ( void  )
inlineoverrideprivatevirtual

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 60 of file ErrorsPropagationAnalyzer.cc.

60 {};

◆ fillHistograms()

void ErrorsPropagationAnalyzer::fillHistograms ( )
private

Definition at line 448 of file ErrorsPropagationAnalyzer.cc.

References gather_cfg::cout, MuScleFitUtils::debug, debug_, MuScleFitUtils::debugMassResol_, errors_, HLT_2022v12_cff::eta1, HLT_2022v12_cff::eta2, etaMaxCut_, etaMinCut_, mps_fire::i, EgHLTOffHistBins_cfi::mass, massResolution(), maxEvents_, parameters_, HLT_2022v12_cff::pt1, HLT_2022v12_cff::pt2, ptMaxCut_, ptMinCut_, RootTreeHandler::readTree(), MuScleFitUtils::resfind, resolFitType_, MuScleFitUtils::resolutionFunction, resolutionFunctionService(), resolutionFunctionVecService(), sigmaMassOverMassVsEta_, sigmaMassOverMassVsEtaMinusErr_, sigmaMassOverMassVsEtaPlusErr_, sigmaMassOverMassVsPt_, sigmaMassOverMassVsPtMinusErr_, sigmaMassOverMassVsPtPlusErr_, sigmaMassVsEta_, sigmaMassVsEtaMinusErr_, sigmaMassVsEtaPlusErr_, sigmaMassVsPt_, sigmaMassVsPtMinusErr_, sigmaMassVsPtPlusErr_, resolutionFunctionBase< T >::sigmaPt(), resolutionFunctionBase< T >::sigmaPtError(), sigmaPtVsEta_, sigmaPtVsEtaDiff_, sigmaPtVsEtaMinusErr_, sigmaPtVsEtaPlusErr_, sigmaPtVsPt_, sigmaPtVsPtDiff_, sigmaPtVsPtMinusErr_, sigmaPtVsPtPlusErr_, SigmaPtDiff::squaredDiff(), and treeFileName_.

Referenced by ~ErrorsPropagationAnalyzer().

448  {
449  std::cout << "Reading muon pairs from Root Tree in " << treeFileName_ << std::endl;
450  RootTreeHandler rootTreeHandler;
451 
452  typedef std::vector<std::pair<lorentzVector, lorentzVector> > MuonPairVector;
453  MuonPairVector savedPair;
454  std::vector<std::pair<unsigned int, unsigned long long> > evtRun;
455  rootTreeHandler.readTree(maxEvents_, treeFileName_, &savedPair, 0, &evtRun);
456  // rootTreeHandler.readTree(maxEvents, inputRootTreeFileName_, &savedPair, &(MuScleFitUtils::genPair));
457 
462  MuScleFitUtils::resfind = std::vector<int>(6, 0);
463 
464  SigmaPt sigmaPt(parameters_, errors_);
465  SigmaPtDiff sigmaPtDiff;
466 
467  // Loop on all the pairs
468  unsigned int i = 0;
469  MuonPairVector::iterator it = savedPair.begin();
470  std::cout << "Starting loop on " << savedPair.size() << " muons" << std::endl;
471  for (; it != savedPair.end(); ++it, ++i) {
472  double pt1 = it->first.pt();
473  double eta1 = it->first.eta();
474  double pt2 = it->second.pt();
475  double eta2 = it->second.eta();
476 
477  if (debug_) {
478  std::cout << "pt1 = " << pt1 << ", eta1 = " << eta1 << ", pt2 = " << pt2 << ", eta2 = " << eta2 << std::endl;
479  }
480  // double fabsEta1 = fabs(eta1);
481  // double fabsEta2 = fabs(eta2);
482 
483  if (pt1 == 0 && pt2 == 0 && eta1 == 0 && eta2 == 0)
484  continue;
485 
486  // double sigmaPt1 = sigmaPt( eta1 );
487  // double sigmaPt2 = sigmaPt( eta2 );
488 
489  // double sigmaPtPlusErr1 = sigmaPt1 + sigmaPt.sigma(eta1);
490  // double sigmaPtPlusErr2 = sigmaPt2 + sigmaPt.sigma(eta2);
491  // double sigmaPtMinusErr1 = sigmaPt1 - sigmaPt.sigma(eta1);
492  // double sigmaPtMinusErr2 = sigmaPt2 - sigmaPt.sigma(eta2);
493 
494  double sigmaPt1 = resolutionFunctionForVec->sigmaPt(pt1, eta1, parameters_);
495  double sigmaPt2 = resolutionFunctionForVec->sigmaPt(pt2, eta2, parameters_);
496  double sigmaPtPlusErr1 = sigmaPt1 + resolutionFunctionForVec->sigmaPtError(pt1, eta1, parameters_, errors_);
497  double sigmaPtPlusErr2 = sigmaPt2 + resolutionFunctionForVec->sigmaPtError(pt2, eta2, parameters_, errors_);
498  double sigmaPtMinusErr1 = sigmaPt1 - resolutionFunctionForVec->sigmaPtError(pt1, eta1, parameters_, errors_);
499  double sigmaPtMinusErr2 = sigmaPt2 - resolutionFunctionForVec->sigmaPtError(pt2, eta2, parameters_, errors_);
500 
501  // double sigmaMass = MuScleFitUtils::massResolution( it->first, it->second, parameters_ );
502  // double sigmaMassPlusErr = MuScleFitUtils::massResolution( it->first, it->second, valuePlusError_ );
503  // double sigmaMassMinusErr = MuScleFitUtils::massResolution( it->first, it->second, valueMinusError_ );
504  double sigmaMass = massResolution(it->first, it->second, parameters_, sigmaPt1, sigmaPt2);
505  double sigmaMassPlusErr = massResolution(it->first, it->second, parameters_, sigmaPtPlusErr1, sigmaPtPlusErr2);
506  double sigmaMassMinusErr = massResolution(it->first, it->second, parameters_, sigmaPtMinusErr1, sigmaPtMinusErr2);
507 
508  double mass = (it->first + it->second).mass();
509 
510  if (debug_) {
511  std::cout << "sigmaPt1 = " << sigmaPt1 << " + " << sigmaPtPlusErr1 << " - " << sigmaPtMinusErr1 << std::endl;
512  std::cout << "sigmaPt2 = " << sigmaPt2 << " + " << sigmaPtPlusErr2 << " - " << sigmaPtMinusErr2 << std::endl;
513  std::cout << "sigmaMass = " << sigmaMass << " + " << sigmaMassPlusErr << " - " << sigmaMassMinusErr << std::endl;
514  }
515 
516  // Protections from nans
517  if (pt1 != pt1)
518  continue;
519  if (pt2 != pt2)
520  continue;
521  if (eta1 != eta1)
522  continue;
523  if (eta2 != eta2)
524  continue;
525  if (sigmaPt1 != sigmaPt1)
526  continue;
527  if (sigmaPt2 != sigmaPt2)
528  continue;
529  if (sigmaPtPlusErr1 != sigmaPtPlusErr1)
530  continue;
531  if (sigmaPtPlusErr2 != sigmaPtPlusErr2)
532  continue;
533  if (sigmaPtMinusErr1 != sigmaPtMinusErr1)
534  continue;
535  if (sigmaPtMinusErr2 != sigmaPtMinusErr2)
536  continue;
537  if (sigmaMass != sigmaMass)
538  continue;
539  if (sigmaMassPlusErr != sigmaMassPlusErr)
540  continue;
541  if (sigmaMassMinusErr != sigmaMassMinusErr)
542  continue;
543  if (mass == 0)
544  continue;
545 
546  std::cout << "Muon pair number " << i << std::endl;
547 
548  // std::cout << "sigmaPt1 = " << sigmaPt1 << ", sigmaPt2 = " << sigmaPt2 << std::endl;
549  // std::cout << "sigmaPtPlusErr1 = " << sigmaPtPlusErr1 << ", sigmaPtMinusErr2 = " << sigmaPtMinusErr2 << std::endl;
550  // std::cout << "sigmaPtMinusErr1 = " << sigmaPtPlusErr1 << ", sigmaPtMinusErr2 = " << sigmaPtMinusErr2 << std::endl;
551 
552  if ((pt1 >= ptMinCut_ && pt1 <= ptMaxCut_) && (fabs(eta1) >= etaMinCut_ && fabs(eta1) <= etaMaxCut_)) {
553  sigmaPtVsPt_->Fill(pt1, sigmaPt1);
554  sigmaPtVsPtPlusErr_->Fill(pt1, sigmaPtPlusErr1);
555  sigmaPtVsPtMinusErr_->Fill(pt1, sigmaPtMinusErr1);
556  sigmaPtVsPtDiff_->Fill(pt1, sigmaPtDiff.squaredDiff(eta1));
557  sigmaMassVsPt_->Fill(pt1, sigmaMass * mass);
558  sigmaMassVsPtPlusErr_->Fill(pt1, sigmaMassPlusErr * mass);
559  sigmaMassVsPtMinusErr_->Fill(pt1, sigmaMassMinusErr * mass);
560  sigmaMassOverMassVsPt_->Fill(pt1, sigmaMass);
561  sigmaMassOverMassVsPtPlusErr_->Fill(pt1, sigmaMassPlusErr);
562  sigmaMassOverMassVsPtMinusErr_->Fill(pt1, sigmaMassMinusErr);
563 
564  sigmaPtVsEta_->Fill(eta1, sigmaPt1);
565  sigmaPtVsEtaPlusErr_->Fill(eta1, sigmaPtPlusErr1);
566  sigmaPtVsEtaMinusErr_->Fill(eta1, sigmaPtMinusErr1);
567  sigmaPtVsEtaDiff_->Fill(eta1, sigmaPtDiff.squaredDiff(eta1));
568  sigmaMassVsEta_->Fill(eta1, sigmaMass * mass);
569  sigmaMassVsEtaPlusErr_->Fill(eta1, sigmaMassPlusErr * mass);
570  sigmaMassVsEtaMinusErr_->Fill(eta1, sigmaMassMinusErr * mass);
571  sigmaMassOverMassVsEta_->Fill(eta1, sigmaMass);
572  sigmaMassOverMassVsEtaPlusErr_->Fill(eta1, sigmaMassPlusErr);
573  sigmaMassOverMassVsEtaMinusErr_->Fill(eta1, sigmaMassMinusErr);
574  }
575  if ((pt2 >= ptMinCut_ && pt2 <= ptMaxCut_) && (fabs(eta2) >= etaMinCut_ && fabs(eta2) <= etaMaxCut_)) {
576  sigmaPtVsPt_->Fill(pt2, sigmaPt2);
577  sigmaPtVsPtPlusErr_->Fill(pt2, sigmaPtPlusErr2);
578  sigmaPtVsPtMinusErr_->Fill(pt2, sigmaPtMinusErr2);
579  sigmaPtVsPtDiff_->Fill(pt2, sigmaPtDiff.squaredDiff(eta2));
580  sigmaMassVsPt_->Fill(pt2, sigmaMass * mass);
581  sigmaMassVsPtPlusErr_->Fill(pt2, sigmaMassPlusErr * mass);
582  sigmaMassVsPtMinusErr_->Fill(pt2, sigmaMassMinusErr * mass);
583  sigmaMassOverMassVsPt_->Fill(pt2, sigmaMass);
584  sigmaMassOverMassVsPtPlusErr_->Fill(pt2, sigmaMassPlusErr);
585  sigmaMassOverMassVsPtMinusErr_->Fill(pt2, sigmaMassMinusErr);
586 
587  sigmaPtVsEta_->Fill(eta2, sigmaPt2);
588  sigmaPtVsEtaPlusErr_->Fill(eta2, sigmaPtPlusErr2);
589  sigmaPtVsEtaMinusErr_->Fill(eta2, sigmaPtMinusErr2);
590  sigmaPtVsEtaDiff_->Fill(eta2, sigmaPtDiff.squaredDiff(eta2));
591  sigmaMassVsEta_->Fill(eta2, sigmaMass * mass);
592  sigmaMassVsEtaPlusErr_->Fill(eta2, sigmaMassPlusErr * mass);
593  sigmaMassVsEtaMinusErr_->Fill(eta2, sigmaMassMinusErr * mass);
594  sigmaMassOverMassVsEta_->Fill(eta2, sigmaMass);
595  sigmaMassOverMassVsEtaPlusErr_->Fill(eta2, sigmaMassPlusErr);
596  sigmaMassOverMassVsEtaMinusErr_->Fill(eta2, sigmaMassMinusErr);
597  }
598  }
599 }
Returns ( sigmaPt/Pt(data)^2 - sigmaPt/Pt(MC)^2 )
Definition: SigmaPtDiff.h:61
static bool debugMassResol_
static int debug
void readTree(const int maxEvents, const TString &fileName, MuonPairVector *savedPair, const int muonType, std::vector< std::pair< unsigned int, unsigned long long > > *evtRun, MuonPairVector *genPair=nullptr)
resolutionFunctionBase< double * > * resolutionFunctionService(const int identifier)
Service to build the resolution functor corresponding to the passed identifier.
Definition: Functions.cc:70
virtual double sigmaPt(const double &pt, const double &eta, const T &parval)=0
resolutionFunctionBase< std::vector< double > > * resolutionFunctionVecService(const int identifier)
Service to build the resolution functor corresponding to the passed identifier when receiving a std::...
Definition: Functions.cc:92
double squaredDiff(const double &eta)
Definition: SigmaPtDiff.h:149
double massResolution(const lorentzVector &mu1, const lorentzVector &mu2, const std::vector< double > &parval, const double &sigmaPt1, const double &sigmaPt2)
Modified method to take into account the error.
std::vector< std::pair< lorentzVector, lorentzVector > > MuonPairVector
static std::vector< int > resfind
virtual double sigmaPtError(const double &pt, const double &eta, const T &parval, const T &parError)
Definition: Functions.h:831
static resolutionFunctionBase< double * > * resolutionFunction

◆ fillValueError()

void ErrorsPropagationAnalyzer::fillValueError ( )
private

Definition at line 188 of file ErrorsPropagationAnalyzer.cc.

References errorFactors_, errors_, mps_fire::i, parameters_, valueMinusError_, and valuePlusError_.

Referenced by ErrorsPropagationAnalyzer().

188  {
189  valuePlusError_.resize(parameters_.size());
190  valueMinusError_.resize(parameters_.size());
191 
192  std::vector<double>::const_iterator parIt = parameters_.begin();
193  std::vector<double>::const_iterator errIt = errors_.begin();
194  std::vector<int>::const_iterator errFactorIt = errorFactors_.begin();
195  int i = 0;
196  for (; parIt != parameters_.end(); ++parIt, ++errIt, ++errFactorIt, ++i) {
197  valuePlusError_[i] = *parIt + (*errIt) * (*errFactorIt);
198  valueMinusError_[i] = *parIt - (*errIt) * (*errFactorIt);
199  }
200 }
std::vector< double > valueMinusError_
std::vector< double > valuePlusError_

◆ massResolution() [1/2]

double ErrorsPropagationAnalyzer::massResolution ( const lorentzVector mu1,
const lorentzVector mu2,
const std::vector< double > &  parval,
const double &  sigmaPt1,
const double &  sigmaPt2 
)
private

Modified method to take into account the error.

Definition at line 370 of file ErrorsPropagationAnalyzer.cc.

References triggerObjects_cff::id, createfilelist::int, and AlCaHLTBitMon_ParallelJobs::p.

Referenced by fillHistograms().

374  {
375  double* p = new double[(int)(parval.size())];
376  std::vector<double>::const_iterator it = parval.begin();
377  int id = 0;
378  for (; it != parval.end(); ++it, ++id) {
379  p[id] = *it;
380  }
381  double massRes = massResolution(mu1, mu2, p, sigmaPt1, sigmaPt2);
382  delete[] p;
383  return massRes;
384 }
double massResolution(const lorentzVector &mu1, const lorentzVector &mu2, const std::vector< double > &parval, const double &sigmaPt1, const double &sigmaPt2)
Modified method to take into account the error.

◆ massResolution() [2/2]

double ErrorsPropagationAnalyzer::massResolution ( const lorentzVector mu1,
const lorentzVector mu2,
double *  parval,
const double &  sigmaPt1,
const double &  sigmaPt2 
)
private

Definition at line 386 of file ErrorsPropagationAnalyzer.cc.

References funct::cos(), resolutionFunctionBase< T >::covPt1Pt2(), HLT_2022v12_cff::eta1, HLT_2022v12_cff::eta2, JetChargeProducer_cfi::exp, EgHLTOffHistBins_cfi::mass, MuScleFitUtils::mMu2, funct::pow(), HLT_2022v12_cff::pt1, HLT_2022v12_cff::pt2, MuScleFitUtils::resolutionFunction, resolutionFunctionBase< T >::sigmaCotgTh(), resolutionFunctionBase< T >::sigmaPhi(), funct::sin(), and mathSSE::sqrt().

390  {
391  double mass = (mu1 + mu2).mass();
392  double pt1 = mu1.Pt();
393  double phi1 = mu1.Phi();
394  double eta1 = mu1.Eta();
395  double theta1 = 2 * atan(exp(-eta1));
396  double pt2 = mu2.Pt();
397  double phi2 = mu2.Phi();
398  double eta2 = mu2.Eta();
399  double theta2 = 2 * atan(exp(-eta2));
400 
401  // ATTENTION: need to compute 1/tan(theta) as cos(theta)/sin(theta) because the latter diverges for theta=pi/2
402  // -----------------------------------------------------------------------------------------------------------
403  double dmdpt1 = (pt1 / std::pow(sin(theta1), 2) *
404  sqrt((std::pow(pt2 / sin(theta2), 2) + MuScleFitUtils::mMu2) /
405  (std::pow(pt1 / sin(theta1), 2) + MuScleFitUtils::mMu2)) -
406  pt2 * (cos(phi1 - phi2) + cos(theta1) * cos(theta2) / (sin(theta1) * sin(theta2)))) /
407  mass;
408  double dmdpt2 = (pt2 / std::pow(sin(theta2), 2) *
409  sqrt((std::pow(pt1 / sin(theta1), 2) + MuScleFitUtils::mMu2) /
410  (std::pow(pt2 / sin(theta2), 2) + MuScleFitUtils::mMu2)) -
411  pt1 * (cos(phi2 - phi1) + cos(theta2) * cos(theta1) / (sin(theta2) * sin(theta1)))) /
412  mass;
413  double dmdphi1 = pt1 * pt2 / mass * sin(phi1 - phi2);
414  double dmdphi2 = pt2 * pt1 / mass * sin(phi2 - phi1);
415  double dmdcotgth1 = (pt1 * pt1 * cos(theta1) / sin(theta1) *
416  sqrt((std::pow(pt2 / sin(theta2), 2) + MuScleFitUtils::mMu2) /
417  (std::pow(pt1 / sin(theta1), 2) + MuScleFitUtils::mMu2)) -
418  pt1 * pt2 * cos(theta2) / sin(theta2)) /
419  mass;
420  double dmdcotgth2 = (pt2 * pt2 * cos(theta2) / sin(theta2) *
421  sqrt((std::pow(pt1 / sin(theta1), 2) + MuScleFitUtils::mMu2) /
422  (std::pow(pt2 / sin(theta2), 2) + MuScleFitUtils::mMu2)) -
423  pt2 * pt1 * cos(theta1) / sin(theta1)) /
424  mass;
425 
426  // Resolution parameters:
427  // ----------------------
428  // double sigma_pt1 = MuScleFitUtils::resolutionFunction->sigmaPt( pt1,eta1,parval );
429  // double sigma_pt2 = MuScleFitUtils::resolutionFunction->sigmaPt( pt2,eta2,parval );
430  double sigma_pt1 = sigmaPt1;
431  double sigma_pt2 = sigmaPt2;
432  double sigma_phi1 = MuScleFitUtils::resolutionFunction->sigmaPhi(pt1, eta1, parval);
433  double sigma_phi2 = MuScleFitUtils::resolutionFunction->sigmaPhi(pt2, eta2, parval);
434  double sigma_cotgth1 = MuScleFitUtils::resolutionFunction->sigmaCotgTh(pt1, eta1, parval);
435  double sigma_cotgth2 = MuScleFitUtils::resolutionFunction->sigmaCotgTh(pt2, eta2, parval);
436  double cov_pt1pt2 = MuScleFitUtils::resolutionFunction->covPt1Pt2(pt1, eta1, pt2, eta2, parval);
437 
438  // Sigma_Pt is defined as a relative sigmaPt/Pt for this reason we need to
439  // multiply it by pt.
440  double mass_res = sqrt(std::pow(dmdpt1 * sigma_pt1 * pt1, 2) + std::pow(dmdpt2 * sigma_pt2 * pt2, 2) +
441  std::pow(dmdphi1 * sigma_phi1, 2) + std::pow(dmdphi2 * sigma_phi2, 2) +
442  std::pow(dmdcotgth1 * sigma_cotgth1, 2) + std::pow(dmdcotgth2 * sigma_cotgth2, 2) +
443  2 * dmdpt1 * dmdpt2 * cov_pt1pt2);
444 
445  return mass_res;
446 }
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
T sqrt(T t)
Definition: SSEVec.h:19
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
virtual double covPt1Pt2(const double &pt1, const double &eta1, const double &pt2, const double &eta2, const T &parval)
Definition: Functions.h:834
virtual double sigmaCotgTh(const double &pt, const double &eta, const T &parval)=0
static const double mMu2
virtual double sigmaPhi(const double &pt, const double &eta, const T &parval)=0
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29
static resolutionFunctionBase< double * > * resolutionFunction

Member Data Documentation

◆ debug_

bool ErrorsPropagationAnalyzer::debug_
private

Definition at line 83 of file ErrorsPropagationAnalyzer.cc.

Referenced by fillHistograms().

◆ errorFactors_

std::vector<int> ErrorsPropagationAnalyzer::errorFactors_
private

Definition at line 89 of file ErrorsPropagationAnalyzer.cc.

Referenced by ErrorsPropagationAnalyzer(), and fillValueError().

◆ errors_

std::vector<double> ErrorsPropagationAnalyzer::errors_
private

◆ etaBins_

int ErrorsPropagationAnalyzer::etaBins_
private

Definition at line 80 of file ErrorsPropagationAnalyzer.cc.

Referenced by ErrorsPropagationAnalyzer().

◆ etaMax_

double ErrorsPropagationAnalyzer::etaMax_
private

Definition at line 82 of file ErrorsPropagationAnalyzer.cc.

Referenced by ErrorsPropagationAnalyzer().

◆ etaMaxCut_

double ErrorsPropagationAnalyzer::etaMaxCut_
private

Definition at line 85 of file ErrorsPropagationAnalyzer.cc.

Referenced by fillHistograms().

◆ etaMin_

double ErrorsPropagationAnalyzer::etaMin_
private

Definition at line 81 of file ErrorsPropagationAnalyzer.cc.

Referenced by ErrorsPropagationAnalyzer().

◆ etaMinCut_

double ErrorsPropagationAnalyzer::etaMinCut_
private

Definition at line 85 of file ErrorsPropagationAnalyzer.cc.

Referenced by fillHistograms().

◆ maxEvents_

uint32_t ErrorsPropagationAnalyzer::maxEvents_
private

Definition at line 75 of file ErrorsPropagationAnalyzer.cc.

Referenced by fillHistograms().

◆ outputFileName_

TString ErrorsPropagationAnalyzer::outputFileName_
private

Definition at line 76 of file ErrorsPropagationAnalyzer.cc.

Referenced by ~ErrorsPropagationAnalyzer().

◆ parameters_

std::vector<double> ErrorsPropagationAnalyzer::parameters_
private

◆ ptBins_

int ErrorsPropagationAnalyzer::ptBins_
private

Definition at line 77 of file ErrorsPropagationAnalyzer.cc.

Referenced by ErrorsPropagationAnalyzer().

◆ ptMax_

double ErrorsPropagationAnalyzer::ptMax_
private

Definition at line 79 of file ErrorsPropagationAnalyzer.cc.

Referenced by ErrorsPropagationAnalyzer().

◆ ptMaxCut_

double ErrorsPropagationAnalyzer::ptMaxCut_
private

Definition at line 85 of file ErrorsPropagationAnalyzer.cc.

Referenced by fillHistograms().

◆ ptMin_

double ErrorsPropagationAnalyzer::ptMin_
private

Definition at line 78 of file ErrorsPropagationAnalyzer.cc.

Referenced by ErrorsPropagationAnalyzer().

◆ ptMinCut_

double ErrorsPropagationAnalyzer::ptMinCut_
private

Definition at line 85 of file ErrorsPropagationAnalyzer.cc.

Referenced by fillHistograms().

◆ resolFitType_

int ErrorsPropagationAnalyzer::resolFitType_
private

Definition at line 74 of file ErrorsPropagationAnalyzer.cc.

Referenced by fillHistograms().

◆ sigmaMassOverMassVsEta_

TProfile* ErrorsPropagationAnalyzer::sigmaMassOverMassVsEta_
private

◆ sigmaMassOverMassVsEtaMinusErr_

TProfile* ErrorsPropagationAnalyzer::sigmaMassOverMassVsEtaMinusErr_
private

◆ sigmaMassOverMassVsEtaPlusErr_

TProfile* ErrorsPropagationAnalyzer::sigmaMassOverMassVsEtaPlusErr_
private

◆ sigmaMassOverMassVsPt_

TProfile* ErrorsPropagationAnalyzer::sigmaMassOverMassVsPt_
private

◆ sigmaMassOverMassVsPtMinusErr_

TProfile* ErrorsPropagationAnalyzer::sigmaMassOverMassVsPtMinusErr_
private

◆ sigmaMassOverMassVsPtPlusErr_

TProfile* ErrorsPropagationAnalyzer::sigmaMassOverMassVsPtPlusErr_
private

◆ sigmaMassVsEta_

TProfile* ErrorsPropagationAnalyzer::sigmaMassVsEta_
private

◆ sigmaMassVsEtaMinusErr_

TProfile* ErrorsPropagationAnalyzer::sigmaMassVsEtaMinusErr_
private

◆ sigmaMassVsEtaPlusErr_

TProfile* ErrorsPropagationAnalyzer::sigmaMassVsEtaPlusErr_
private

◆ sigmaMassVsPt_

TProfile* ErrorsPropagationAnalyzer::sigmaMassVsPt_
private

◆ sigmaMassVsPtMinusErr_

TProfile* ErrorsPropagationAnalyzer::sigmaMassVsPtMinusErr_
private

◆ sigmaMassVsPtPlusErr_

TProfile* ErrorsPropagationAnalyzer::sigmaMassVsPtPlusErr_
private

◆ sigmaPtVsEta_

TProfile* ErrorsPropagationAnalyzer::sigmaPtVsEta_
private

◆ sigmaPtVsEtaDiff_

TProfile* ErrorsPropagationAnalyzer::sigmaPtVsEtaDiff_
private

◆ sigmaPtVsEtaMinusErr_

TProfile* ErrorsPropagationAnalyzer::sigmaPtVsEtaMinusErr_
private

◆ sigmaPtVsEtaPlusErr_

TProfile* ErrorsPropagationAnalyzer::sigmaPtVsEtaPlusErr_
private

◆ sigmaPtVsPt_

TProfile* ErrorsPropagationAnalyzer::sigmaPtVsPt_
private

◆ sigmaPtVsPtDiff_

TProfile* ErrorsPropagationAnalyzer::sigmaPtVsPtDiff_
private

◆ sigmaPtVsPtMinusErr_

TProfile* ErrorsPropagationAnalyzer::sigmaPtVsPtMinusErr_
private

◆ sigmaPtVsPtPlusErr_

TProfile* ErrorsPropagationAnalyzer::sigmaPtVsPtPlusErr_
private

◆ treeFileName_

TString ErrorsPropagationAnalyzer::treeFileName_
private

Definition at line 73 of file ErrorsPropagationAnalyzer.cc.

Referenced by fillHistograms().

◆ valueMinusError_

std::vector<double> ErrorsPropagationAnalyzer::valueMinusError_
private

Definition at line 92 of file ErrorsPropagationAnalyzer.cc.

Referenced by fillValueError().

◆ valuePlusError_

std::vector<double> ErrorsPropagationAnalyzer::valuePlusError_
private

Definition at line 91 of file ErrorsPropagationAnalyzer.cc.

Referenced by fillValueError().