12 #include <fmt/printf.h> 28 : topFolder_(iConfig.getParameter<
std::
string>(
"topFolderName")) {}
36 if (hpt_eta_tkAllCPU ==
nullptr or hpt_eta_tkAllCPUmatched ==
nullptr or hphi_z_tkAllCPU ==
nullptr or 37 hphi_z_tkAllCPUmatched ==
nullptr) {
39 <<
"MEs needed for this module are not found in the input file. Skipping.";
46 "matchingeff_pt_eta",
"Efficiency of track matching; #eta; p_{T} [GeV];", 30, -
M_PI,
M_PI, 200, 0., 200.);
48 "matchingeff_phi_z",
"Efficiency of track matching; #phi; z [cm];", 30, -
M_PI,
M_PI, 30, -30., 30.);
50 hpt_eta_matchRatio->
divide(hpt_eta_tkAllCPUmatched, hpt_eta_tkAllCPU, 1., 1.,
"B");
51 hphi_z_matchRatio->
divide(hphi_z_tkAllCPUmatched, hphi_z_tkAllCPU, 1., 1.,
"B");
54 std::vector<std::string> listOfMEsToProject = {
"nTracks",
55 "nLooseAndAboveTracks",
56 "nLooseAndAboveTracks_matched",
66 for (
const auto&
me : listOfMEsToProject) {
73 if (input2D ==
nullptr) {
75 <<
"MEs needed for diagonal projection are not found in the input file. Skipping.";
81 const auto& h_name = fmt::sprintf(
"%s_proj", input2D->
getName());
82 const auto& h_title = fmt::sprintf(
";%s CPU -GPU difference", input2D->
getTitle());
84 const auto& b_w = span / input2D->
getNbinsX();
107 desc.add<
std::string>(
"topFolderName",
"SiPixelHeterogeneous/PixelTrackCompareGPUvsCPU/");
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)
SiPixelTrackComparisonHarvester(const edm::ParameterSet &)
virtual void setCurrentFolder(std::string const &fullpath)
const std::string topFolder_
Log< level::Error, false > LogError
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
void dqmEndJob(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter) override
#define DEFINE_FWK_MODULE(type)
void project2DalongDiagonal(MonitorElement *input2D, DQMStore::IBooker &ibooker)
virtual int getNbinsY() const
get # of bins in Y-axis
virtual std::string getTitle() const
get MonitorElement title
~SiPixelTrackComparisonHarvester() override=default
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
virtual MonitorElement * get(std::string const &fullpath) const
virtual double getAxisMin(int axis=1) const
const std::string & getName() const
get name of ME
virtual double getAxisMax(int axis=1) const
virtual int getNbinsX() const
get # of bins in X-axis
virtual void setBinError(int binx, double error)
set uncertainty on content of bin (1-D)
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
virtual void divide(const MonitorElement *, const MonitorElement *, double, double, const char *)
Replace entries with results of dividing num by denom.
virtual double getBinContent(int binx) const
get content of bin (1-D)