26 #include <fmt/printf.h> 70 useQualityCut_ = iConfig.
getParameter<
bool>(
"useQualityCut");
79 const auto& tsoaHandle =
iEvent.getHandle(tokenSoATrack_);
80 if (!tsoaHandle.isValid()) {
81 edm::LogWarning(
"SiPixelMonitorTrackSoA") <<
"No Track SoA found \n returning!" << std::endl;
86 auto const& tsoa = *tsoaHandle.product();
87 auto maxTracks = tsoa.view().metadata().size();
88 auto const*
quality = tsoa.view().quality();
90 int32_t nLooseAndAboveTracks = 0;
92 for (int32_t it = 0; it <
maxTracks; ++it) {
94 auto nLayers = tsoa.view()[it].nLayers();
97 float pt = tsoa.view()[it].pt();
103 hquality->Fill(
int(
qual));
106 if (useQualityCut_ &&
quality[it] < minQuality_)
110 float chi2 = tsoa.view()[it].chi2();
111 float phi = helper::phi(tsoa.const_view(), it);
113 float eta = tsoa.view()[it].eta();
130 nLooseAndAboveTracks++;
133 hnLooseAndAboveTracks->Fill(nLooseAndAboveTracks);
139 template <
typename T>
148 hnTracks = iBook.
book1D(
"nTracks", fmt::sprintf(
";%s per event;#events",toRep), 1001, -0.5, 1000.5);
149 hnLooseAndAboveTracks = iBook.
book1D(
"nLooseAndAboveTracks", fmt::sprintf(
";%s (quality #geq loose) per event;#events",toRep), 1001, -0.5, 1000.5);
151 toRep =
"Number of all RecHits per track (quality #geq loose)";
152 hnHits = iBook.
book1D(
"nRecHits", fmt::sprintf(
";%s;#tracks",toRep), 15, -0.5, 14.5);
153 hnHitsVsPhi = iBook.
bookProfile(
"nHitsPerTrackVsPhi", fmt::sprintf(
"%s vs track #phi;Track #phi;%s",toRep,toRep), 30, -
M_PI,
M_PI,0., 15.);
154 hnHitsVsEta = iBook.
bookProfile(
"nHitsPerTrackVsEta", fmt::sprintf(
"%s vs track #eta;Track #eta;%s",toRep,toRep), 30, -3., 3., 0., 15.);
156 toRep =
"Number of all layers per track (quality #geq loose)";
157 hnLayers = iBook.
book1D(
"nLayers", fmt::sprintf(
";%s;#tracks",toRep), 15, -0.5, 14.5);
158 hnLayersVsPhi = iBook.
bookProfile(
"nLayersPerTrackVsPhi", fmt::sprintf(
"%s vs track #phi;Track #phi;%s",toRep,toRep), 30, -
M_PI,
M_PI,0., 15.);
159 hnLayersVsEta = iBook.
bookProfile(
"nLayersPerTrackVsEta", fmt::sprintf(
"%s vs track #eta;Track #eta;%s",toRep,toRep), 30, -3., 3., 0., 15.);
161 toRep =
"Track (quality #geq loose) #chi^{2}/ndof";
162 hchi2 = iBook.
book1D(
"nChi2ndof", fmt::sprintf(
";%s;#tracks",toRep), 40, 0., 20.);
163 hChi2VsPhi = iBook.
bookProfile(
"nChi2ndofVsPhi", fmt::sprintf(
"%s vs track #phi;Track #phi;%s",toRep,toRep), 30, -
M_PI,
M_PI, 0., 20.);
164 hChi2VsEta = iBook.
bookProfile(
"nChi2ndofVsEta", fmt::sprintf(
"%s vs track #eta;Track #eta;%s",toRep,toRep), 30, -3., 3., 0., 20.);
167 hpt = iBook.
book1D(
"pt",
";Track (quality #geq loose) p_{T} [GeV];#tracks", 200, 0., 200.);
168 heta = iBook.
book1D(
"eta",
";Track (quality #geq loose) #eta;#tracks", 30, -3., 3.);
169 hphi = iBook.
book1D(
"phi",
";Track (quality #geq loose) #phi;#tracks", 30, -
M_PI,
M_PI);
170 hz = iBook.
book1D(
"z",
";Track (quality #geq loose) z [cm];#tracks", 30, -30., 30.);
171 htip = iBook.
book1D(
"tip",
";Track (quality #geq loose) TIP [cm];#tracks", 100, -0.5, 0.5);
172 hquality = iBook.
book1D(
"quality",
";Track Quality;#tracks", 7, -0.5, 6.5);
175 hquality->setBinLabel(
i,
q, 1);
180 template <
typename T>
185 desc.add<
std::string>(
"topFolderName",
"SiPixelHeterogeneous/PixelTrackSoA");
186 desc.add<
bool>(
"useQualityCut",
true);
MonitorElement * hChi2VsEta
std::string topFolderName_
MonitorElement * hnLayers
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)
T getParameter(std::string const &) const
pixelTrack::Quality minQuality_
virtual void setCurrentFolder(std::string const &fullpath)
Quality qualityByName(std::string const &name)
const std::string qualityName[qualitySize]
MonitorElement * hnHitsVsEta
MonitorElement * hnHitsVsPhi
edm::EDGetTokenT< PixelTrackHeterogeneous > tokenSoATrack_
void bookHistograms(DQMStore::IBooker &ibooker, edm::Run const &iRun, edm::EventSetup const &iSetup) override
MonitorElement * hnTracks
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
OutputIterator zip(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
#define DEFINE_FWK_MODULE(type)
SiPixelMonitorTrackSoA(const edm::ParameterSet &)
MonitorElement * hnLayersVsPhi
void analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup) override
MonitorElement * hnLayersVsEta
MonitorElement * hnLooseAndAboveTracks
MonitorElement * hChi2VsPhi
Log< level::Warning, false > LogWarning
MonitorElement * hquality
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
TupleMultiplicity< TrackerTraits > const *__restrict__ uint32_t nHits
~SiPixelMonitorTrackSoA() override=default