CMS 3D CMS Logo

List of all members | Public Member Functions | Private Types | Private Attributes
DiLeptonHelp::PlotsVsKinematics Class Reference

#include <DiLeptonVertexHelpers.h>

Public Member Functions

void bookFromPSet (const TFileDirectory &fs, const edm::ParameterSet &hpar)
 
void bookPlots (TFileDirectory &fs, const float valmin, const float valmax, const int nxbins, const int nybins)
 
void fillPlots (const float val, const std::pair< TLorentzVector, TLorentzVector > &momenta)
 
 PlotsVsKinematics (flavour FLAV)
 
 PlotsVsKinematics (flavour FLAV, const std::string &name, const std::string &tt, const std::string &ytt)
 
 ~PlotsVsKinematics ()=default
 

Private Types

enum  xAxis {
  Z_PHI, Z_ETA, LP_PHI, LP_ETA,
  LM_PHI, LM_ETA
}
 

Private Attributes

const std::vector< xAxisaxisChoices
 
flavour m_flav
 
std::map< xAxis, TH2F * > m_h2_map
 
bool m_isBooked
 
const std::string m_name
 
const std::string m_title
 
const std::string m_ytitle
 

Detailed Description

Definition at line 177 of file DiLeptonVertexHelpers.h.

Member Enumeration Documentation

◆ xAxis

Constructor & Destructor Documentation

◆ PlotsVsKinematics() [1/2]

DiLeptonHelp::PlotsVsKinematics::PlotsVsKinematics ( flavour  FLAV)
inline

◆ PlotsVsKinematics() [2/2]

DiLeptonHelp::PlotsVsKinematics::PlotsVsKinematics ( flavour  FLAV,
const std::string &  name,
const std::string &  tt,
const std::string &  ytt 
)
inline

Definition at line 183 of file DiLeptonVertexHelpers.h.

References m_flav.

184  : m_name(name), m_title(tt), m_ytitle(ytt), m_isBooked(false), m_flav(FLAV) {
185  if (m_flav < 0) {
186  edm::LogError("PlotsVsKinematics") << "The initialization flavour is not correct!" << std::endl;
187  }
188  }
Log< level::Error, false > LogError
Definition: TTTypes.h:54

◆ ~PlotsVsKinematics()

DiLeptonHelp::PlotsVsKinematics::~PlotsVsKinematics ( )
default

Member Function Documentation

◆ bookFromPSet()

void DiLeptonHelp::PlotsVsKinematics::bookFromPSet ( const TFileDirectory fs,
const edm::ParameterSet hpar 
)
inline

Definition at line 193 of file DiLeptonVertexHelpers.h.

References axisChoices, Exception, compareTotals::fs, edm::ParameterSet::getParameter(), m_flav, m_h2_map, m_isBooked, M_PI, AlCaHLTBitMon_QueryRunRegistry::string, TrackerOfflineValidation_Dqm_cff::xmax, and TrackerOfflineValidation_Dqm_cff::xmin.

Referenced by DiMuonVertexValidation::beginJob(), and DiElectronVertexValidation::beginJob().

193  {
194  std::string namePostfix;
195  std::string titlePostfix;
196  float xmin, xmax;
197 
198  std::string sed = (m_flav ? "e" : "#mu");
199 
200  for (const auto& xAx : axisChoices) {
201  switch (xAx) {
202  case xAxis::Z_PHI:
203  xmin = -M_PI;
204  xmax = M_PI;
205  namePostfix = m_flav ? "EEPhi" : "MMPhi";
206  titlePostfix = fmt::sprintf("%s%s pair #phi;%s^{+}%s^{-} #phi", sed, sed, sed, sed);
207  break;
208  case xAxis::Z_ETA:
209  xmin = -3.5;
210  xmax = 3.5;
211  namePostfix = m_flav ? "EEEta" : "MuMuEta";
212  titlePostfix = fmt::sprintf("%s%s pair #eta;%s^{+}%s^{-} #eta", sed, sed, sed, sed);
213  break;
214  case xAxis::LP_PHI:
215  xmin = -M_PI;
216  xmax = M_PI;
217  namePostfix = m_flav ? "EPlusPhi" : "MuPlusPhi";
218  titlePostfix = fmt::sprintf("%s^{+} #phi;%s^{+} #phi [rad]", sed, sed);
219  break;
220  case xAxis::LP_ETA:
221  xmin = -2.4;
222  xmax = 2.4;
223  namePostfix = m_flav ? "EPlusEta" : "MuPlusEta";
224  titlePostfix = fmt::sprintf("%s^{+} #eta;%s^{+} #eta", sed, sed);
225  break;
226  case xAxis::LM_PHI:
227  xmin = -M_PI;
228  xmax = M_PI;
229  namePostfix = m_flav ? "EMinusPhi" : "MuMinusPhi";
230  titlePostfix = fmt::sprintf("%s^{-} #phi;%s^{-} #phi [rad]", sed, sed);
231  break;
232  case xAxis::LM_ETA:
233  xmin = -2.4;
234  xmax = 2.4;
235  namePostfix = m_flav ? "EMinusEta" : "MuMinusEta";
236  titlePostfix = fmt::sprintf("%s^{-} #eta;%s^{+} #eta", sed, sed);
237  break;
238  default:
239  throw cms::Exception("LogicalError") << " there is not such Axis choice as " << xAx;
240  }
241 
242  const auto& h2name = fmt::sprintf("%sVs%s", hpar.getParameter<std::string>("name"), namePostfix);
243  const auto& h2title = fmt::sprintf("%s vs %s;%s% s",
244  hpar.getParameter<std::string>("title"),
245  titlePostfix,
246  hpar.getParameter<std::string>("title"),
247  hpar.getParameter<std::string>("yUnits"));
248 
249  m_h2_map[xAx] = fs.make<TH2F>(h2name.c_str(),
250  h2title.c_str(),
251  hpar.getParameter<int32_t>("NxBins"),
252  xmin,
253  xmax,
254  hpar.getParameter<int32_t>("NyBins"),
255  hpar.getParameter<double>("ymin"),
256  hpar.getParameter<double>("ymax"));
257  }
258 
259  // flip the is booked bit
260  m_isBooked = true;
261  }
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
std::map< xAxis, TH2F * > m_h2_map
const std::vector< xAxis > axisChoices
#define M_PI

◆ bookPlots()

void DiLeptonHelp::PlotsVsKinematics::bookPlots ( TFileDirectory fs,
const float  valmin,
const float  valmax,
const int  nxbins,
const int  nybins 
)
inline

Definition at line 264 of file DiLeptonVertexHelpers.h.

References ALPAKA_ACCELERATOR_NAMESPACE::brokenline::constexpr(), compareTotals::fs, m_flav, m_h2_map, m_isBooked, m_name, M_PI, m_title, m_ytitle, and AlCaHLTBitMon_QueryRunRegistry::string.

265  {
266  if (m_name.empty() && m_title.empty() && m_ytitle.empty()) {
267  edm::LogError("PlotsVsKinematics")
268  << "In" << __FUNCTION__ << "," << __LINE__
269  << "trying to book plots without the right constructor being called!" << std::endl;
270  return;
271  }
272 
273  std::string dilep = (m_flav ? "e^{+}e^{-}" : "#mu^{+}#mu^{-}");
274  std::string lep = (m_flav ? "e^{+}" : "#mu^{+}");
275  std::string lem = (m_flav ? "e^{-}" : "#mu^{-}");
276 
277  static constexpr float maxMuEta = 2.4;
278  static constexpr float maxMuMuEta = 3.5;
279  TH1F::SetDefaultSumw2(kTRUE);
280 
281  // clang-format off
282  m_h2_map[xAxis::Z_ETA] = fs.make<TH2F>(fmt::sprintf("%sVsMuMuEta", m_name).c_str(),
283  fmt::sprintf("%s vs %s pair #eta;%s #eta;%s", m_title, dilep, dilep, m_ytitle).c_str(),
284  nxbins, -M_PI, M_PI,
285  nybins, valmin, valmax);
286 
287  m_h2_map[xAxis::Z_PHI] = fs.make<TH2F>(fmt::sprintf("%sVsMuMuPhi", m_name).c_str(),
288  fmt::sprintf("%s vs %s pair #phi;%s #phi [rad];%s", m_title, dilep, dilep, m_ytitle).c_str(),
289  nxbins, -maxMuMuEta, maxMuMuEta,
290  nybins, valmin, valmax);
291 
292  m_h2_map[xAxis::LP_ETA] = fs.make<TH2F>(fmt::sprintf("%sVsMuPlusEta", m_name).c_str(),
293  fmt::sprintf("%s vs %s #eta;%s #eta;%s", m_title, lep, lep, m_ytitle).c_str(),
294  nxbins, -maxMuEta, maxMuEta,
295  nybins, valmin, valmax);
296 
297  m_h2_map[xAxis::LP_PHI] = fs.make<TH2F>(fmt::sprintf("%sVsMuPlusPhi", m_name).c_str(),
298  fmt::sprintf("%s vs %s #phi;%s #phi [rad];%s", m_title, lep, lep, m_ytitle).c_str(),
299  nxbins, -M_PI, M_PI,
300  nybins, valmin, valmax);
301 
302  m_h2_map[xAxis::LM_ETA] = fs.make<TH2F>(fmt::sprintf("%sVsMuMinusEta", m_name).c_str(),
303  fmt::sprintf("%s vs %s #eta;%s #eta;%s", m_title, lem, lem, m_ytitle).c_str(),
304  nxbins, -maxMuEta, maxMuEta,
305  nybins, valmin, valmax);
306 
307  m_h2_map[xAxis::LM_PHI] = fs.make<TH2F>(fmt::sprintf("%sVsMuMinusPhi", m_name).c_str(),
308  fmt::sprintf("%s vs %s #phi;%s #phi [rad];%s", m_title, lem, lem, m_ytitle).c_str(),
309  nxbins, -M_PI, M_PI,
310  nybins, valmin, valmax);
311  // clang-format on
312 
313  // flip the is booked bit
314  m_isBooked = true;
315  }
Log< level::Error, false > LogError
std::map< xAxis, TH2F * > m_h2_map
#define M_PI

◆ fillPlots()

void DiLeptonHelp::PlotsVsKinematics::fillPlots ( const float  val,
const std::pair< TLorentzVector, TLorentzVector > &  momenta 
)
inline

Definition at line 318 of file DiLeptonVertexHelpers.h.

References m_h2_map, m_isBooked, and heppy_batch::val.

Referenced by DiMuonVertexValidation::analyze(), and DiElectronVertexValidation::analyze().

318  {
319  if (!m_isBooked) {
320  edm::LogError("PlotsVsKinematics")
321  << "In" << __FUNCTION__ << "," << __LINE__ << "trying to fill a plot not booked!" << std::endl;
322  return;
323  }
324 
325  m_h2_map[xAxis::Z_ETA]->Fill((momenta.first + momenta.second).Eta(), val);
326  m_h2_map[xAxis::Z_PHI]->Fill((momenta.first + momenta.second).Phi(), val);
327  m_h2_map[xAxis::LP_ETA]->Fill((momenta.first).Eta(), val);
328  m_h2_map[xAxis::LP_PHI]->Fill((momenta.first).Phi(), val);
329  m_h2_map[xAxis::LM_ETA]->Fill((momenta.second).Eta(), val);
330  m_h2_map[xAxis::LM_PHI]->Fill((momenta.second).Phi(), val);
331  }
Log< level::Error, false > LogError
std::map< xAxis, TH2F * > m_h2_map

Member Data Documentation

◆ axisChoices

const std::vector<xAxis> DiLeptonHelp::PlotsVsKinematics::axisChoices
private
Initial value:
= {
xAxis::Z_PHI, xAxis::Z_ETA, xAxis::LP_PHI, xAxis::LP_ETA, xAxis::LM_PHI, xAxis::LM_ETA}

Definition at line 335 of file DiLeptonVertexHelpers.h.

Referenced by bookFromPSet().

◆ m_flav

flavour DiLeptonHelp::PlotsVsKinematics::m_flav
private

Definition at line 343 of file DiLeptonVertexHelpers.h.

Referenced by bookFromPSet(), bookPlots(), and PlotsVsKinematics().

◆ m_h2_map

std::map<xAxis, TH2F*> DiLeptonHelp::PlotsVsKinematics::m_h2_map
private

Definition at line 345 of file DiLeptonVertexHelpers.h.

Referenced by bookFromPSet(), bookPlots(), and fillPlots().

◆ m_isBooked

bool DiLeptonHelp::PlotsVsKinematics::m_isBooked
private

Definition at line 342 of file DiLeptonVertexHelpers.h.

Referenced by bookFromPSet(), bookPlots(), and fillPlots().

◆ m_name

const std::string DiLeptonHelp::PlotsVsKinematics::m_name
private

Definition at line 338 of file DiLeptonVertexHelpers.h.

Referenced by bookPlots().

◆ m_title

const std::string DiLeptonHelp::PlotsVsKinematics::m_title
private

Definition at line 339 of file DiLeptonVertexHelpers.h.

Referenced by bookPlots().

◆ m_ytitle

const std::string DiLeptonHelp::PlotsVsKinematics::m_ytitle
private

Definition at line 340 of file DiLeptonVertexHelpers.h.

Referenced by bookPlots().