File indexing completed on 2023-10-25 10:06:48
0001 #include <string>
0002
0003 #include "FWCore/Framework/interface/MakerMacros.h"
0004 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0005 #include "FWCore/ServiceRegistry/interface/Service.h"
0006 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0007
0008 #include "DQMServices/Core/interface/DQMEDHarvester.h"
0009 #include "DQMServices/Core/interface/DQMStore.h"
0010
0011 #include "DataFormats/ForwardDetId/interface/ETLDetId.h"
0012
0013 class MtdTracksHarvester : public DQMEDHarvester {
0014 public:
0015 explicit MtdTracksHarvester(const edm::ParameterSet& iConfig);
0016 ~MtdTracksHarvester() override;
0017
0018 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0019
0020 protected:
0021 void dqmEndJob(DQMStore::IBooker&, DQMStore::IGetter&) override;
0022
0023 private:
0024 void computeEfficiency1D(MonitorElement* num, MonitorElement* den, MonitorElement* result);
0025 void normalize(MonitorElement* h, double scale);
0026
0027 const std::string folder_;
0028
0029
0030 MonitorElement* meBtlEtaEff_;
0031 MonitorElement* meBtlPhiEff_;
0032 MonitorElement* meBtlPtEff_;
0033 MonitorElement* meEtlEtaEff_[2];
0034 MonitorElement* meEtlPhiEff_[2];
0035 MonitorElement* meEtlPtEff_[2];
0036 MonitorElement* meEtlEtaEff2_[2];
0037 MonitorElement* meEtlPhiEff2_[2];
0038 MonitorElement* meEtlPtEff2_[2];
0039 MonitorElement* meMVAPtSelEff_;
0040 MonitorElement* meMVAEtaSelEff_;
0041 MonitorElement* meMVAPtMatchEff_;
0042 MonitorElement* meMVAEtaMatchEff_;
0043 MonitorElement* meTPPtSelEff_;
0044 MonitorElement* meTPEtaSelEff_;
0045 MonitorElement* meTPPtMatchEff_;
0046 MonitorElement* meTPEtaMatchEff_;
0047 MonitorElement* meTPPtMatchEtl2Eff_;
0048 MonitorElement* meTPEtaMatchEtl2Eff_;
0049 MonitorElement* meTPmtdPtSelEff_;
0050 MonitorElement* meTPmtdEtaSelEff_;
0051 MonitorElement* meTPmtdPtMatchEff_;
0052 MonitorElement* meTPmtdEtaMatchEff_;
0053 MonitorElement* meNoTimeFraction_;
0054 MonitorElement* meExtraPtEff_;
0055 MonitorElement* meExtraPtEtl2Eff_;
0056 MonitorElement* meExtraEtaEff_;
0057 MonitorElement* meExtraEtaEtl2Eff_;
0058 MonitorElement* meExtraPhiAtBTLEff_;
0059 MonitorElement* meExtraMTDfailExtenderEtaEff_;
0060 MonitorElement* meExtraMTDfailExtenderPtEff_;
0061 };
0062
0063
0064 MtdTracksHarvester::MtdTracksHarvester(const edm::ParameterSet& iConfig)
0065 : folder_(iConfig.getParameter<std::string>("folder")) {}
0066
0067 MtdTracksHarvester::~MtdTracksHarvester() {}
0068
0069
0070 void MtdTracksHarvester::computeEfficiency1D(MonitorElement* num, MonitorElement* den, MonitorElement* result) {
0071 for (int ibin = 1; ibin <= den->getNbinsX(); ibin++) {
0072 double eff = num->getBinContent(ibin) / den->getBinContent(ibin);
0073 double bin_err = sqrt((num->getBinContent(ibin) * (den->getBinContent(ibin) - num->getBinContent(ibin))) /
0074 pow(den->getBinContent(ibin), 3));
0075 if (den->getBinContent(ibin) == 0) {
0076 eff = 0;
0077 bin_err = 0;
0078 }
0079 result->setBinContent(ibin, eff);
0080 result->setBinError(ibin, bin_err);
0081 }
0082 }
0083
0084 void MtdTracksHarvester::normalize(MonitorElement* h, double scale) {
0085 double integral = h->getTH1F()->Integral();
0086 double norma = (integral > 0.) ? scale / integral : 0.;
0087 for (int ibin = 1; ibin <= h->getNbinsX(); ibin++) {
0088 double eff = h->getBinContent(ibin) * norma;
0089 double bin_err = h->getBinError(ibin) * norma;
0090 h->setBinContent(ibin, eff);
0091 h->setBinError(ibin, bin_err);
0092 }
0093 }
0094
0095
0096 void MtdTracksHarvester::dqmEndJob(DQMStore::IBooker& ibook, DQMStore::IGetter& igetter) {
0097
0098 MonitorElement* meBTLTrackEffEtaTot = igetter.get(folder_ + "TrackBTLEffEtaTot");
0099 MonitorElement* meBTLTrackEffPhiTot = igetter.get(folder_ + "TrackBTLEffPhiTot");
0100 MonitorElement* meBTLTrackEffPtTot = igetter.get(folder_ + "TrackBTLEffPtTot");
0101 MonitorElement* meBTLTrackEffEtaMtd = igetter.get(folder_ + "TrackBTLEffEtaMtd");
0102 MonitorElement* meBTLTrackEffPhiMtd = igetter.get(folder_ + "TrackBTLEffPhiMtd");
0103 MonitorElement* meBTLTrackEffPtMtd = igetter.get(folder_ + "TrackBTLEffPtMtd");
0104 MonitorElement* meETLTrackEffEtaTotZneg = igetter.get(folder_ + "TrackETLEffEtaTotZneg");
0105 MonitorElement* meETLTrackEffPhiTotZneg = igetter.get(folder_ + "TrackETLEffPhiTotZneg");
0106 MonitorElement* meETLTrackEffPtTotZneg = igetter.get(folder_ + "TrackETLEffPtTotZneg");
0107 MonitorElement* meETLTrackEffEtaMtdZneg = igetter.get(folder_ + "TrackETLEffEtaMtdZneg");
0108 MonitorElement* meETLTrackEffPhiMtdZneg = igetter.get(folder_ + "TrackETLEffPhiMtdZneg");
0109 MonitorElement* meETLTrackEffPtMtdZneg = igetter.get(folder_ + "TrackETLEffPtMtdZneg");
0110 MonitorElement* meETLTrackEffEta2MtdZneg = igetter.get(folder_ + "TrackETLEffEta2MtdZneg");
0111 MonitorElement* meETLTrackEffPhi2MtdZneg = igetter.get(folder_ + "TrackETLEffPhi2MtdZneg");
0112 MonitorElement* meETLTrackEffPt2MtdZneg = igetter.get(folder_ + "TrackETLEffPt2MtdZneg");
0113 MonitorElement* meETLTrackEffEtaTotZpos = igetter.get(folder_ + "TrackETLEffEtaTotZpos");
0114 MonitorElement* meETLTrackEffPhiTotZpos = igetter.get(folder_ + "TrackETLEffPhiTotZpos");
0115 MonitorElement* meETLTrackEffPtTotZpos = igetter.get(folder_ + "TrackETLEffPtTotZpos");
0116 MonitorElement* meETLTrackEffEtaMtdZpos = igetter.get(folder_ + "TrackETLEffEtaMtdZpos");
0117 MonitorElement* meETLTrackEffPhiMtdZpos = igetter.get(folder_ + "TrackETLEffPhiMtdZpos");
0118 MonitorElement* meETLTrackEffPtMtdZpos = igetter.get(folder_ + "TrackETLEffPtMtdZpos");
0119 MonitorElement* meETLTrackEffEta2MtdZpos = igetter.get(folder_ + "TrackETLEffEta2MtdZpos");
0120 MonitorElement* meETLTrackEffPhi2MtdZpos = igetter.get(folder_ + "TrackETLEffPhi2MtdZpos");
0121 MonitorElement* meETLTrackEffPt2MtdZpos = igetter.get(folder_ + "TrackETLEffPt2MtdZpos");
0122 MonitorElement* meTrackPtTot = igetter.get(folder_ + "TrackPtTot");
0123 MonitorElement* meMVATrackEffPtTot = igetter.get(folder_ + "MVAEffPtTot");
0124 MonitorElement* meMVATrackMatchedEffPtTot = igetter.get(folder_ + "MVAMatchedEffPtTot");
0125 MonitorElement* meMVATrackMatchedEffPtMtd = igetter.get(folder_ + "MVAMatchedEffPtMtd");
0126 MonitorElement* meExtraPtMtd = igetter.get(folder_ + "ExtraPtMtd");
0127 MonitorElement* meExtraPtEtl2Mtd = igetter.get(folder_ + "ExtraPtEtl2Mtd");
0128 MonitorElement* meTrackMatchedTPEffPtTot = igetter.get(folder_ + "MatchedTPEffPtTot");
0129 MonitorElement* meTrackMatchedTPEffPtMtd = igetter.get(folder_ + "MatchedTPEffPtMtd");
0130 MonitorElement* meTrackMatchedTPEffPtEtl2Mtd = igetter.get(folder_ + "MatchedTPEffPtEtl2Mtd");
0131 MonitorElement* meTrackMatchedTPmtdEffPtTot = igetter.get(folder_ + "MatchedTPmtdEffPtTot");
0132 MonitorElement* meTrackMatchedTPmtdEffPtMtd = igetter.get(folder_ + "MatchedTPmtdEffPtMtd");
0133 MonitorElement* meTrackEtaTot = igetter.get(folder_ + "TrackEtaTot");
0134 MonitorElement* meMVATrackEffEtaTot = igetter.get(folder_ + "MVAEffEtaTot");
0135 MonitorElement* meMVATrackMatchedEffEtaTot = igetter.get(folder_ + "MVAMatchedEffEtaTot");
0136 MonitorElement* meMVATrackMatchedEffEtaMtd = igetter.get(folder_ + "MVAMatchedEffEtaMtd");
0137 MonitorElement* meExtraEtaMtd = igetter.get(folder_ + "ExtraEtaMtd");
0138 MonitorElement* meExtraEtaEtl2Mtd = igetter.get(folder_ + "ExtraEtaEtl2Mtd");
0139 MonitorElement* meTrackMatchedTPEffEtaTot = igetter.get(folder_ + "MatchedTPEffEtaTot");
0140 MonitorElement* meTrackMatchedTPEffEtaMtd = igetter.get(folder_ + "MatchedTPEffEtaMtd");
0141 MonitorElement* meTrackMatchedTPEffEtaEtl2Mtd = igetter.get(folder_ + "MatchedTPEffEtaEtl2Mtd");
0142 MonitorElement* meTrackMatchedTPmtdEffEtaTot = igetter.get(folder_ + "MatchedTPmtdEffEtaTot");
0143 MonitorElement* meTrackMatchedTPmtdEffEtaMtd = igetter.get(folder_ + "MatchedTPmtdEffEtaMtd");
0144 MonitorElement* meTrackNumHits = igetter.get(folder_ + "TrackNumHits");
0145 MonitorElement* meTrackNumHitsNT = igetter.get(folder_ + "TrackNumHitsNT");
0146 MonitorElement* meExtraPhiAtBTL = igetter.get(folder_ + "ExtraPhiAtBTL");
0147 MonitorElement* meExtraPhiAtBTLmatched = igetter.get(folder_ + "ExtraPhiAtBTLmatched");
0148 MonitorElement* meExtraBTLeneInCone = igetter.get(folder_ + "ExtraBTLeneInCone");
0149 MonitorElement* meExtraMTDfailExtenderEta = igetter.get(folder_ + "ExtraMTDfailExtenderEta");
0150 MonitorElement* meExtraMTDfailExtenderPt = igetter.get(folder_ + "ExtraMTDfailExtenderPt");
0151
0152 if (!meBTLTrackEffEtaTot || !meBTLTrackEffPhiTot || !meBTLTrackEffPtTot || !meBTLTrackEffEtaMtd ||
0153 !meBTLTrackEffPhiMtd || !meBTLTrackEffPtMtd || !meETLTrackEffEtaTotZneg || !meETLTrackEffPhiTotZneg ||
0154 !meETLTrackEffPtTotZneg || !meETLTrackEffEtaMtdZneg || !meETLTrackEffPhiMtdZneg || !meETLTrackEffPtMtdZneg ||
0155 !meETLTrackEffEta2MtdZneg || !meETLTrackEffPhi2MtdZneg || !meETLTrackEffPt2MtdZneg || !meETLTrackEffEtaTotZpos ||
0156 !meETLTrackEffPhiTotZpos || !meETLTrackEffPtTotZpos || !meETLTrackEffEtaMtdZpos || !meETLTrackEffPhiMtdZpos ||
0157 !meETLTrackEffPtMtdZpos || !meETLTrackEffEta2MtdZpos || !meETLTrackEffPhi2MtdZpos || !meETLTrackEffPt2MtdZpos ||
0158 !meMVATrackEffPtTot || !meMVATrackMatchedEffPtTot || !meMVATrackMatchedEffPtMtd || !meMVATrackEffEtaTot ||
0159 !meMVATrackMatchedEffEtaTot || !meMVATrackMatchedEffEtaMtd || !meTrackMatchedTPEffPtTot ||
0160 !meTrackMatchedTPEffPtMtd || !meTrackMatchedTPEffPtEtl2Mtd || !meTrackMatchedTPmtdEffPtTot ||
0161 !meTrackMatchedTPmtdEffPtMtd || !meTrackMatchedTPEffEtaTot || !meTrackMatchedTPEffEtaMtd ||
0162 !meTrackMatchedTPEffEtaEtl2Mtd || !meTrackMatchedTPmtdEffEtaTot || !meTrackMatchedTPmtdEffEtaMtd ||
0163 !meTrackNumHits || !meTrackNumHitsNT || !meTrackPtTot || !meTrackEtaTot || !meExtraPtMtd || !meExtraPtEtl2Mtd ||
0164 !meExtraEtaMtd || !meExtraEtaEtl2Mtd || !meExtraPhiAtBTL || !meExtraPhiAtBTLmatched || !meExtraBTLeneInCone ||
0165 !meExtraMTDfailExtenderEta || !meExtraMTDfailExtenderPt) {
0166 edm::LogError("MtdTracksHarvester") << "Monitoring histograms not found!" << std::endl;
0167 return;
0168 }
0169
0170
0171 ibook.cd(folder_);
0172 meBtlEtaEff_ = ibook.book1D("BtlEtaEff",
0173 " Track Efficiency VS Eta;#eta;Efficiency",
0174 meBTLTrackEffEtaTot->getNbinsX(),
0175 meBTLTrackEffEtaTot->getTH1()->GetXaxis()->GetXmin(),
0176 meBTLTrackEffEtaTot->getTH1()->GetXaxis()->GetXmax());
0177 meBtlEtaEff_->getTH1()->SetMinimum(0.);
0178 computeEfficiency1D(meBTLTrackEffEtaMtd, meBTLTrackEffEtaTot, meBtlEtaEff_);
0179
0180 meBtlPhiEff_ = ibook.book1D("BtlPhiEff",
0181 "Track Efficiency VS Phi;#phi [rad];Efficiency",
0182 meBTLTrackEffPhiTot->getNbinsX(),
0183 meBTLTrackEffPhiTot->getTH1()->GetXaxis()->GetXmin(),
0184 meBTLTrackEffPhiTot->getTH1()->GetXaxis()->GetXmax());
0185 meBtlPhiEff_->getTH1()->SetMinimum(0.);
0186 computeEfficiency1D(meBTLTrackEffPhiMtd, meBTLTrackEffPhiTot, meBtlPhiEff_);
0187
0188 meBtlPtEff_ = ibook.book1D("BtlPtEff",
0189 "Track Efficiency VS Pt;Pt [GeV];Efficiency",
0190 meBTLTrackEffPtTot->getNbinsX(),
0191 meBTLTrackEffPtTot->getTH1()->GetXaxis()->GetXmin(),
0192 meBTLTrackEffPtTot->getTH1()->GetXaxis()->GetXmax());
0193 meBtlPtEff_->getTH1()->SetMinimum(0.);
0194 computeEfficiency1D(meBTLTrackEffPtMtd, meBTLTrackEffPtTot, meBtlPtEff_);
0195
0196 meEtlEtaEff_[0] = ibook.book1D("EtlEtaEffZneg",
0197 " Track Efficiency VS Eta (-Z);#eta;Efficiency",
0198 meETLTrackEffEtaTotZneg->getNbinsX(),
0199 meETLTrackEffEtaTotZneg->getTH1()->GetXaxis()->GetXmin(),
0200 meETLTrackEffEtaTotZneg->getTH1()->GetXaxis()->GetXmax());
0201 meEtlEtaEff_[0]->getTH1()->SetMinimum(0.);
0202 computeEfficiency1D(meETLTrackEffEtaMtdZneg, meETLTrackEffEtaTotZneg, meEtlEtaEff_[0]);
0203
0204 meEtlPhiEff_[0] = ibook.book1D("EtlPhiEffZneg",
0205 "Track Efficiency VS Phi (-Z);#phi [rad];Efficiency",
0206 meETLTrackEffPhiTotZneg->getNbinsX(),
0207 meETLTrackEffPhiTotZneg->getTH1()->GetXaxis()->GetXmin(),
0208 meETLTrackEffPhiTotZneg->getTH1()->GetXaxis()->GetXmax());
0209 meEtlPhiEff_[0]->getTH1()->SetMinimum(0.);
0210 computeEfficiency1D(meETLTrackEffPhiMtdZneg, meETLTrackEffPhiTotZneg, meEtlPhiEff_[0]);
0211
0212 meEtlPtEff_[0] = ibook.book1D("EtlPtEffZneg",
0213 "Track Efficiency VS Pt (-Z);Pt [GeV];Efficiency",
0214 meETLTrackEffPtTotZneg->getNbinsX(),
0215 meETLTrackEffPtTotZneg->getTH1()->GetXaxis()->GetXmin(),
0216 meETLTrackEffPtTotZneg->getTH1()->GetXaxis()->GetXmax());
0217 meEtlPtEff_[0]->getTH1()->SetMinimum(0.);
0218 computeEfficiency1D(meETLTrackEffPtMtdZneg, meETLTrackEffPtTotZneg, meEtlPtEff_[0]);
0219
0220 meEtlEtaEff_[1] = ibook.book1D("EtlEtaEffZpos",
0221 " Track Efficiency VS Eta (+Z);#eta;Efficiency",
0222 meETLTrackEffEtaTotZpos->getNbinsX(),
0223 meETLTrackEffEtaTotZpos->getTH1()->GetXaxis()->GetXmin(),
0224 meETLTrackEffEtaTotZpos->getTH1()->GetXaxis()->GetXmax());
0225 meEtlEtaEff_[1]->getTH1()->SetMinimum(0.);
0226 computeEfficiency1D(meETLTrackEffEtaMtdZpos, meETLTrackEffEtaTotZpos, meEtlEtaEff_[1]);
0227
0228 meEtlPhiEff_[1] = ibook.book1D("EtlPhiEffZpos",
0229 "Track Efficiency VS Phi (+Z);#phi [rad];Efficiency",
0230 meETLTrackEffPhiTotZpos->getNbinsX(),
0231 meETLTrackEffPhiTotZpos->getTH1()->GetXaxis()->GetXmin(),
0232 meETLTrackEffPhiTotZpos->getTH1()->GetXaxis()->GetXmax());
0233 meEtlPhiEff_[1]->getTH1()->SetMinimum(0.);
0234 computeEfficiency1D(meETLTrackEffPhiMtdZpos, meETLTrackEffPhiTotZpos, meEtlPhiEff_[1]);
0235
0236 meEtlPtEff_[1] = ibook.book1D("EtlPtEffZpos",
0237 "Track Efficiency VS Pt (+Z);Pt [GeV];Efficiency",
0238 meETLTrackEffPtTotZpos->getNbinsX(),
0239 meETLTrackEffPtTotZpos->getTH1()->GetXaxis()->GetXmin(),
0240 meETLTrackEffPtTotZpos->getTH1()->GetXaxis()->GetXmax());
0241 meEtlPtEff_[1]->getTH1()->SetMinimum(0.);
0242 computeEfficiency1D(meETLTrackEffPtMtdZpos, meETLTrackEffPtTotZpos, meEtlPtEff_[1]);
0243
0244 meEtlEtaEff2_[0] = ibook.book1D("EtlEtaEff2Zneg",
0245 " Track Efficiency VS Eta (-Z, 2 hit);#eta;Efficiency",
0246 meETLTrackEffEtaTotZneg->getNbinsX(),
0247 meETLTrackEffEtaTotZneg->getTH1()->GetXaxis()->GetXmin(),
0248 meETLTrackEffEtaTotZneg->getTH1()->GetXaxis()->GetXmax());
0249 meEtlEtaEff2_[0]->getTH1()->SetMinimum(0.);
0250 computeEfficiency1D(meETLTrackEffEta2MtdZneg, meETLTrackEffEtaTotZneg, meEtlEtaEff2_[0]);
0251
0252 meEtlPhiEff2_[0] = ibook.book1D("EtlPhiEff2Zneg",
0253 "Track Efficiency VS Phi (-Z, 2 hit);#phi [rad];Efficiency",
0254 meETLTrackEffPhiTotZneg->getNbinsX(),
0255 meETLTrackEffPhiTotZneg->getTH1()->GetXaxis()->GetXmin(),
0256 meETLTrackEffPhiTotZneg->getTH1()->GetXaxis()->GetXmax());
0257 meEtlPhiEff2_[0]->getTH1()->SetMinimum(0.);
0258 computeEfficiency1D(meETLTrackEffPhi2MtdZneg, meETLTrackEffPhiTotZneg, meEtlPhiEff2_[0]);
0259
0260 meEtlPtEff2_[0] = ibook.book1D("EtlPtEff2Zneg",
0261 "Track Efficiency VS Pt (-Z, 2 hit);Pt [GeV];Efficiency",
0262 meETLTrackEffPtTotZneg->getNbinsX(),
0263 meETLTrackEffPtTotZneg->getTH1()->GetXaxis()->GetXmin(),
0264 meETLTrackEffPtTotZneg->getTH1()->GetXaxis()->GetXmax());
0265 meEtlPtEff2_[0]->getTH1()->SetMinimum(0.);
0266 computeEfficiency1D(meETLTrackEffPt2MtdZneg, meETLTrackEffPtTotZneg, meEtlPtEff2_[0]);
0267
0268 meEtlEtaEff2_[1] = ibook.book1D("EtlEtaEff2Zpos",
0269 "Track Efficiency VS Eta (+Z, 2 hit);#eta;Efficiency",
0270 meETLTrackEffEtaTotZpos->getNbinsX(),
0271 meETLTrackEffEtaTotZpos->getTH1()->GetXaxis()->GetXmin(),
0272 meETLTrackEffEtaTotZpos->getTH1()->GetXaxis()->GetXmax());
0273 meEtlEtaEff2_[1]->getTH1()->SetMinimum(0.);
0274 computeEfficiency1D(meETLTrackEffEta2MtdZpos, meETLTrackEffEtaTotZpos, meEtlEtaEff2_[1]);
0275
0276 meEtlPhiEff2_[1] = ibook.book1D("EtlPhiEff2Zpos",
0277 "Track Efficiency VS Phi (+Z, 2 hit);#phi [rad];Efficiency",
0278 meETLTrackEffPhiTotZpos->getNbinsX(),
0279 meETLTrackEffPhiTotZpos->getTH1()->GetXaxis()->GetXmin(),
0280 meETLTrackEffPhiTotZpos->getTH1()->GetXaxis()->GetXmax());
0281 meEtlPhiEff2_[1]->getTH1()->SetMinimum(0.);
0282 computeEfficiency1D(meETLTrackEffPhi2MtdZpos, meETLTrackEffPhiTotZpos, meEtlPhiEff2_[1]);
0283
0284 meEtlPtEff2_[1] = ibook.book1D("EtlPtEff2Zpos",
0285 "Track Efficiency VS Pt (+Z, 2 hit);Pt [GeV];Efficiency",
0286 meETLTrackEffPtTotZpos->getNbinsX(),
0287 meETLTrackEffPtTotZpos->getTH1()->GetXaxis()->GetXmin(),
0288 meETLTrackEffPtTotZpos->getTH1()->GetXaxis()->GetXmax());
0289 meEtlPtEff2_[1]->getTH1()->SetMinimum(0.);
0290 computeEfficiency1D(meETLTrackEffPt2MtdZpos, meETLTrackEffPtTotZpos, meEtlPtEff2_[1]);
0291
0292 meExtraPtEff_ = ibook.book1D("ExtraPtEff",
0293 "MTD matching efficiency wrt extrapolated track VS Pt;Pt [GeV];Efficiency",
0294 meMVATrackEffPtTot->getNbinsX(),
0295 meMVATrackEffPtTot->getTH1()->GetXaxis()->GetXmin(),
0296 meMVATrackEffPtTot->getTH1()->GetXaxis()->GetXmax());
0297 meExtraPtEff_->getTH1()->SetMinimum(0.);
0298 computeEfficiency1D(meExtraPtMtd, meTrackMatchedTPEffPtTot, meExtraPtEff_);
0299
0300 meExtraPtEtl2Eff_ = ibook.book1D("ExtraPtEtl2Eff",
0301 "MTD matching efficiency (2 ETL) wrt extrapolated track VS Pt;Pt [GeV];Efficiency",
0302 meMVATrackEffPtTot->getNbinsX(),
0303 meMVATrackEffPtTot->getTH1()->GetXaxis()->GetXmin(),
0304 meMVATrackEffPtTot->getTH1()->GetXaxis()->GetXmax());
0305 meExtraPtEtl2Eff_->getTH1()->SetMinimum(0.);
0306 computeEfficiency1D(meExtraPtEtl2Mtd, meTrackMatchedTPEffPtTot, meExtraPtEtl2Eff_);
0307
0308 meExtraEtaEff_ = ibook.book1D("ExtraEtaEff",
0309 "MTD matching efficiency wrt extrapolated track VS Eta;Eta;Efficiency",
0310 meMVATrackEffEtaTot->getNbinsX(),
0311 meMVATrackEffEtaTot->getTH1()->GetXaxis()->GetXmin(),
0312 meMVATrackEffEtaTot->getTH1()->GetXaxis()->GetXmax());
0313 meExtraEtaEff_->getTH1()->SetMinimum(0.);
0314 computeEfficiency1D(meExtraEtaMtd, meTrackMatchedTPEffEtaTot, meExtraEtaEff_);
0315
0316 meExtraEtaEtl2Eff_ = ibook.book1D("ExtraEtaEtl2Eff",
0317 "MTD matching efficiency (2 ETL) wrt extrapolated track VS Eta;Eta;Efficiency",
0318 meMVATrackEffEtaTot->getNbinsX(),
0319 meMVATrackEffEtaTot->getTH1()->GetXaxis()->GetXmin(),
0320 meMVATrackEffEtaTot->getTH1()->GetXaxis()->GetXmax());
0321 meExtraEtaEtl2Eff_->getTH1()->SetMinimum(0.);
0322 computeEfficiency1D(meExtraEtaEtl2Mtd, meTrackMatchedTPEffEtaTot, meExtraEtaEtl2Eff_);
0323
0324 meMVAPtSelEff_ = ibook.book1D("MVAPtSelEff",
0325 "Track selected efficiency VS Pt;Pt [GeV];Efficiency",
0326 meMVATrackEffPtTot->getNbinsX(),
0327 meMVATrackEffPtTot->getTH1()->GetXaxis()->GetXmin(),
0328 meMVATrackEffPtTot->getTH1()->GetXaxis()->GetXmax());
0329 meMVAPtSelEff_->getTH1()->SetMinimum(0.);
0330 computeEfficiency1D(meMVATrackMatchedEffPtTot, meMVATrackEffPtTot, meMVAPtSelEff_);
0331
0332 meMVAEtaSelEff_ = ibook.book1D("MVAEtaSelEff",
0333 "Track selected efficiency VS Eta;Eta;Efficiency",
0334 meMVATrackEffEtaTot->getNbinsX(),
0335 meMVATrackEffEtaTot->getTH1()->GetXaxis()->GetXmin(),
0336 meMVATrackEffEtaTot->getTH1()->GetXaxis()->GetXmax());
0337 meMVAEtaSelEff_->getTH1()->SetMinimum(0.);
0338 computeEfficiency1D(meMVATrackMatchedEffEtaTot, meMVATrackEffEtaTot, meMVAEtaSelEff_);
0339
0340 meMVAPtMatchEff_ = ibook.book1D("MVAPtMatchEff",
0341 "Track matched to GEN efficiency VS Pt;Pt [GeV];Efficiency",
0342 meMVATrackMatchedEffPtTot->getNbinsX(),
0343 meMVATrackMatchedEffPtTot->getTH1()->GetXaxis()->GetXmin(),
0344 meMVATrackMatchedEffPtTot->getTH1()->GetXaxis()->GetXmax());
0345 meMVAPtMatchEff_->getTH1()->SetMinimum(0.);
0346 computeEfficiency1D(meMVATrackMatchedEffPtMtd, meMVATrackMatchedEffPtTot, meMVAPtMatchEff_);
0347
0348 meMVAEtaMatchEff_ = ibook.book1D("MVAEtaMatchEff",
0349 "Track matched to GEN efficiency VS Eta;Eta;Efficiency",
0350 meMVATrackMatchedEffEtaTot->getNbinsX(),
0351 meMVATrackMatchedEffEtaTot->getTH1()->GetXaxis()->GetXmin(),
0352 meMVATrackMatchedEffEtaTot->getTH1()->GetXaxis()->GetXmax());
0353 meMVAEtaMatchEff_->getTH1()->SetMinimum(0.);
0354 computeEfficiency1D(meMVATrackMatchedEffEtaMtd, meMVATrackMatchedEffEtaTot, meMVAEtaMatchEff_);
0355
0356 meTPPtSelEff_ = ibook.book1D("TPPtSelEff",
0357 "Track selected efficiency TP VS Pt;Pt [GeV];Efficiency",
0358 meMVATrackEffPtTot->getNbinsX(),
0359 meMVATrackEffPtTot->getTH1()->GetXaxis()->GetXmin(),
0360 meMVATrackEffPtTot->getTH1()->GetXaxis()->GetXmax());
0361 meTPPtSelEff_->getTH1()->SetMinimum(0.);
0362 computeEfficiency1D(meTrackMatchedTPEffPtTot, meTrackPtTot, meTPPtSelEff_);
0363
0364 meTPEtaSelEff_ = ibook.book1D("TPEtaSelEff",
0365 "Track selected efficiency TP VS Eta;Eta;Efficiency",
0366 meMVATrackEffEtaTot->getNbinsX(),
0367 meMVATrackEffEtaTot->getTH1()->GetXaxis()->GetXmin(),
0368 meMVATrackEffEtaTot->getTH1()->GetXaxis()->GetXmax());
0369 meTPEtaSelEff_->getTH1()->SetMinimum(0.);
0370 computeEfficiency1D(meTrackMatchedTPEffEtaTot, meTrackEtaTot, meTPEtaSelEff_);
0371
0372 meTPPtMatchEff_ = ibook.book1D("TPPtMatchEff",
0373 "Track matched to TP efficiency VS Pt;Pt [GeV];Efficiency",
0374 meTrackMatchedTPEffPtTot->getNbinsX(),
0375 meTrackMatchedTPEffPtTot->getTH1()->GetXaxis()->GetXmin(),
0376 meTrackMatchedTPEffPtTot->getTH1()->GetXaxis()->GetXmax());
0377 meTPPtMatchEff_->getTH1()->SetMinimum(0.);
0378 computeEfficiency1D(meTrackMatchedTPEffPtMtd, meTrackMatchedTPEffPtTot, meTPPtMatchEff_);
0379
0380 meTPEtaMatchEff_ = ibook.book1D("TPEtaMatchEff",
0381 "Track matched to TP efficiency VS Eta;Eta;Efficiency",
0382 meTrackMatchedTPEffEtaTot->getNbinsX(),
0383 meTrackMatchedTPEffEtaTot->getTH1()->GetXaxis()->GetXmin(),
0384 meTrackMatchedTPEffEtaTot->getTH1()->GetXaxis()->GetXmax());
0385 meTPEtaMatchEff_->getTH1()->SetMinimum(0.);
0386 computeEfficiency1D(meTrackMatchedTPEffEtaMtd, meTrackMatchedTPEffEtaTot, meTPEtaMatchEff_);
0387
0388 meTPPtMatchEtl2Eff_ = ibook.book1D("TPPtMatchEtl2Eff",
0389 "Track matched to TP efficiency VS Pt, 2 ETL hits;Pt [GeV];Efficiency",
0390 meTrackMatchedTPEffPtTot->getNbinsX(),
0391 meTrackMatchedTPEffPtTot->getTH1()->GetXaxis()->GetXmin(),
0392 meTrackMatchedTPEffPtTot->getTH1()->GetXaxis()->GetXmax());
0393 meTPPtMatchEtl2Eff_->getTH1()->SetMinimum(0.);
0394 computeEfficiency1D(meTrackMatchedTPEffPtEtl2Mtd, meTrackMatchedTPEffPtTot, meTPPtMatchEtl2Eff_);
0395
0396 meTPEtaMatchEtl2Eff_ = ibook.book1D("TPEtaMatchEtl2Eff",
0397 "Track matched to TP efficiency VS Eta, 2 ETL hits;Eta;Efficiency",
0398 meTrackMatchedTPEffEtaTot->getNbinsX(),
0399 meTrackMatchedTPEffEtaTot->getTH1()->GetXaxis()->GetXmin(),
0400 meTrackMatchedTPEffEtaTot->getTH1()->GetXaxis()->GetXmax());
0401 meTPEtaMatchEtl2Eff_->getTH1()->SetMinimum(0.);
0402 computeEfficiency1D(meTrackMatchedTPEffEtaEtl2Mtd, meTrackMatchedTPEffEtaTot, meTPEtaMatchEtl2Eff_);
0403
0404 meTPmtdPtSelEff_ = ibook.book1D("TPmtdPtSelEff",
0405 "Track selected efficiency TP-mtd hit VS Pt;Pt [GeV];Efficiency",
0406 meMVATrackEffPtTot->getNbinsX(),
0407 meMVATrackEffPtTot->getTH1()->GetXaxis()->GetXmin(),
0408 meMVATrackEffPtTot->getTH1()->GetXaxis()->GetXmax());
0409 meTPmtdPtSelEff_->getTH1()->SetMinimum(0.);
0410 computeEfficiency1D(meTrackMatchedTPmtdEffPtTot, meTrackPtTot, meTPmtdPtSelEff_);
0411
0412 meTPmtdEtaSelEff_ = ibook.book1D("TPmtdEtaSelEff",
0413 "Track selected efficiency TPmtd hit VS Eta;Eta;Efficiency",
0414 meMVATrackEffEtaTot->getNbinsX(),
0415 meMVATrackEffEtaTot->getTH1()->GetXaxis()->GetXmin(),
0416 meMVATrackEffEtaTot->getTH1()->GetXaxis()->GetXmax());
0417 meTPmtdEtaSelEff_->getTH1()->SetMinimum(0.);
0418 computeEfficiency1D(meTrackMatchedTPmtdEffEtaTot, meTrackEtaTot, meTPmtdEtaSelEff_);
0419
0420 meTPmtdPtMatchEff_ = ibook.book1D("TPmtdPtMatchEff",
0421 "Track matched to TP-mtd hit efficiency VS Pt;Pt [GeV];Efficiency",
0422 meTrackMatchedTPmtdEffPtTot->getNbinsX(),
0423 meTrackMatchedTPmtdEffPtTot->getTH1()->GetXaxis()->GetXmin(),
0424 meTrackMatchedTPmtdEffPtTot->getTH1()->GetXaxis()->GetXmax());
0425 meTPmtdPtMatchEff_->getTH1()->SetMinimum(0.);
0426 computeEfficiency1D(meTrackMatchedTPmtdEffPtMtd, meTrackMatchedTPmtdEffPtTot, meTPmtdPtMatchEff_);
0427
0428 meTPmtdEtaMatchEff_ = ibook.book1D("TPmtdEtaMatchEff",
0429 "Track matched to TP-mtd hit efficiency VS Eta;Eta;Efficiency",
0430 meTrackMatchedTPmtdEffEtaTot->getNbinsX(),
0431 meTrackMatchedTPmtdEffEtaTot->getTH1()->GetXaxis()->GetXmin(),
0432 meTrackMatchedTPmtdEffEtaTot->getTH1()->GetXaxis()->GetXmax());
0433 meTPmtdEtaMatchEff_->getTH1()->SetMinimum(0.);
0434 computeEfficiency1D(meTrackMatchedTPmtdEffEtaMtd, meTrackMatchedTPmtdEffEtaTot, meTPmtdEtaMatchEff_);
0435
0436 meNoTimeFraction_ = ibook.book1D("NoTimeFraction",
0437 "Fraction of tracks with MTD hits and no time associated; Num. of hits",
0438 meTrackNumHits->getNbinsX(),
0439 meTrackNumHits->getTH1()->GetXaxis()->GetXmin(),
0440 meTrackNumHits->getTH1()->GetXaxis()->GetXmax());
0441 meNoTimeFraction_->getTH1()->SetMinimum(0.);
0442 computeEfficiency1D(meTrackNumHitsNT, meTrackNumHits, meNoTimeFraction_);
0443
0444 meBtlEtaEff_->getTH1()->SetMinimum(0.);
0445 meBtlPhiEff_->getTH1()->SetMinimum(0.);
0446 meBtlPtEff_->getTH1()->SetMinimum(0.);
0447 for (int i = 0; i < 2; i++) {
0448 meEtlEtaEff_[i]->getTH1()->SetMinimum(0.);
0449 meEtlPhiEff_[i]->getTH1()->SetMinimum(0.);
0450 meEtlPtEff_[i]->getTH1()->SetMinimum(0.);
0451 meEtlEtaEff2_[i]->getTH1()->SetMinimum(0.);
0452 meEtlPhiEff2_[i]->getTH1()->SetMinimum(0.);
0453 meEtlPtEff2_[i]->getTH1()->SetMinimum(0.);
0454 }
0455 meMVAPtSelEff_->getTH1()->SetMinimum(0.);
0456 meMVAEtaSelEff_->getTH1()->SetMinimum(0.);
0457 meMVAPtMatchEff_->getTH1()->SetMinimum(0.);
0458 meMVAEtaMatchEff_->getTH1()->SetMinimum(0.);
0459
0460 meExtraPhiAtBTLEff_ = ibook.book1D("ExtraPhiAtBTLEff",
0461 "Efficiency to match hits at BTL surface",
0462 meExtraPhiAtBTL->getNbinsX(),
0463 meExtraPhiAtBTL->getTH1()->GetXaxis()->GetXmin(),
0464 meExtraPhiAtBTL->getTH1()->GetXaxis()->GetXmax());
0465 meExtraPhiAtBTLEff_->getTH1()->SetMinimum(0.);
0466 computeEfficiency1D(meExtraPhiAtBTLmatched, meExtraPhiAtBTL, meExtraPhiAtBTLEff_);
0467
0468 normalize(meExtraBTLeneInCone, 1.);
0469
0470 meExtraMTDfailExtenderEtaEff_ =
0471 ibook.book1D("ExtraMTDfailExtenderEtaEff",
0472 "Track extrapolated at MTD surface no extender efficiency VS Eta;Eta;Efficiency",
0473 meTrackMatchedTPEffEtaTot->getNbinsX(),
0474 meTrackMatchedTPEffEtaTot->getTH1()->GetXaxis()->GetXmin(),
0475 meTrackMatchedTPEffEtaTot->getTH1()->GetXaxis()->GetXmax());
0476 meExtraMTDfailExtenderEtaEff_->getTH1()->SetMinimum(0.);
0477 computeEfficiency1D(meExtraMTDfailExtenderEta, meTrackMatchedTPEffEtaTot, meExtraMTDfailExtenderEtaEff_);
0478
0479 meExtraMTDfailExtenderPtEff_ =
0480 ibook.book1D("ExtraMTDfailExtenderPtEff",
0481 "Track extrapolated at MTD surface no extender efficiency VS Pt;Pt [GeV];Efficiency",
0482 meTrackMatchedTPEffPtTot->getNbinsX(),
0483 meTrackMatchedTPEffPtTot->getTH1()->GetXaxis()->GetXmin(),
0484 meTrackMatchedTPEffPtTot->getTH1()->GetXaxis()->GetXmax());
0485 meExtraMTDfailExtenderPtEff_->getTH1()->SetMinimum(0.);
0486 computeEfficiency1D(meExtraMTDfailExtenderPt, meTrackMatchedTPEffPtTot, meExtraMTDfailExtenderPtEff_);
0487 }
0488
0489
0490 void MtdTracksHarvester::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0491 edm::ParameterSetDescription desc;
0492
0493 desc.add<std::string>("folder", "MTD/Tracks/");
0494
0495 descriptions.add("MtdTracksPostProcessor", desc);
0496 }
0497
0498 DEFINE_FWK_MODULE(MtdTracksHarvester);