Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-12-20 03:14:19

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   // --- Histograms
0030   MonitorElement* meBtlEtaEff_;
0031   MonitorElement* meBtlPhiEff_;
0032   MonitorElement* meBtlPtEff_;
0033   MonitorElement* meEtlEtaEff_;
0034   MonitorElement* meEtlPhiEff_;
0035   MonitorElement* meEtlPtEff_;
0036   MonitorElement* meEtlEtaEff2_;
0037   MonitorElement* meEtlPhiEff2_;
0038   MonitorElement* meEtlPtEff2_;
0039   MonitorElement* meEtlEtaEffLowPt_[2];
0040   MonitorElement* meEtlEtaEff2LowPt_[2];
0041 
0042   MonitorElement* meBTLTPPtSelEff_;
0043   MonitorElement* meBTLTPEtaSelEff_;
0044   MonitorElement* meBTLTPPtMatchEff_;
0045   MonitorElement* meBTLTPEtaMatchEff_;
0046   MonitorElement* meETLTPPtSelEff_;
0047   MonitorElement* meBTLTPPtCorrectMatchEff_;
0048   MonitorElement* meBTLTPEtaCorrectMatchEff_;
0049   MonitorElement* meETLTPEtaSelEff_;
0050   MonitorElement* meETLTPPtMatchEff_;
0051   MonitorElement* meETLTPEtaMatchEff_;
0052   MonitorElement* meETLTPPtMatchEff2_;
0053   MonitorElement* meETLTPEtaMatchEff2_;
0054   MonitorElement* meETLTPPtCorrectMatchEff_;
0055   MonitorElement* meETLTPEtaCorrectMatchEff_;
0056   MonitorElement* meETLTPPtCorrectMatchEff2_;
0057   MonitorElement* meETLTPEtaCorrectMatchEff2_;
0058 
0059   // - BTL track-mtd matching efficiencies
0060   MonitorElement* meBTLTPmtdDirectEtaSelEff_;
0061   MonitorElement* meBTLTPmtdDirectPtSelEff_;
0062   MonitorElement* meBTLTPmtdOtherEtaSelEff_;
0063   MonitorElement* meBTLTPmtdOtherPtSelEff_;
0064   MonitorElement* meBTLTPnomtdEtaSelEff_;
0065   MonitorElement* meBTLTPnomtdPtSelEff_;
0066 
0067   MonitorElement* meBTLTPmtdDirectCorrectAssocEtaMatchEff_;
0068   MonitorElement* meBTLTPmtdDirectCorrectAssocPtMatchEff_;
0069   MonitorElement* meBTLTPmtdDirectWrongAssocEtaMatchEff_;
0070   MonitorElement* meBTLTPmtdDirectWrongAssocPtMatchEff_;
0071   MonitorElement* meBTLTPmtdDirectNoAssocEtaMatchEff_;
0072   MonitorElement* meBTLTPmtdDirectNoAssocPtMatchEff_;
0073 
0074   MonitorElement* meBTLTPmtdOtherCorrectAssocEtaMatchEff_;
0075   MonitorElement* meBTLTPmtdOtherCorrectAssocPtMatchEff_;
0076   MonitorElement* meBTLTPmtdOtherWrongAssocEtaMatchEff_;
0077   MonitorElement* meBTLTPmtdOtherWrongAssocPtMatchEff_;
0078   MonitorElement* meBTLTPmtdOtherNoAssocEtaMatchEff_;
0079   MonitorElement* meBTLTPmtdOtherNoAssocPtMatchEff_;
0080 
0081   MonitorElement* meBTLTPnomtdEtaMatchEff_;
0082   MonitorElement* meBTLTPnomtdPtMatchEff_;
0083 
0084   // - ETL track-mtd matching efficiencies
0085   MonitorElement* meETLTPmtd1EtaSelEff_;
0086   MonitorElement* meETLTPmtd1PtSelEff_;
0087   MonitorElement* meETLTPmtd2EtaSelEff_;
0088   MonitorElement* meETLTPmtd2PtSelEff_;
0089   MonitorElement* meETLTPnomtdEtaSelEff_;
0090   MonitorElement* meETLTPnomtdPtSelEff_;
0091 
0092   MonitorElement* meETLTPmtd1CorrectAssocEtaMatchEff_;
0093   MonitorElement* meETLTPmtd1CorrectAssocPtMatchEff_;
0094   MonitorElement* meETLTPmtd1WrongAssocEtaMatchEff_;
0095   MonitorElement* meETLTPmtd1WrongAssocPtMatchEff_;
0096   MonitorElement* meETLTPmtd1NoAssocEtaMatchEff_;
0097   MonitorElement* meETLTPmtd1NoAssocPtMatchEff_;
0098 
0099   MonitorElement* meETLTPmtd2CorrectAssocEtaMatchEff_;
0100   MonitorElement* meETLTPmtd2CorrectAssocPtMatchEff_;
0101   MonitorElement* meETLTPmtd2WrongAssocEtaMatchEff_;
0102   MonitorElement* meETLTPmtd2WrongAssocPtMatchEff_;
0103   MonitorElement* meETLTPmtd2NoAssocEtaMatchEff_;
0104   MonitorElement* meETLTPmtd2NoAssocPtMatchEff_;
0105 
0106   MonitorElement* meETLTPnomtdEtaMatchEff_;
0107   MonitorElement* meETLTPnomtdPtMatchEff_;
0108 
0109   // -
0110   MonitorElement* meNoTimeFraction_;
0111   MonitorElement* meExtraPtEff_;
0112   MonitorElement* meExtraPtEtl2Eff_;
0113   MonitorElement* meExtraEtaEff_;
0114   MonitorElement* meExtraEtaEtl2Eff_;
0115   MonitorElement* meExtraPhiAtBTLEff_;
0116   MonitorElement* meExtraMTDfailExtenderEtaEff_;
0117   MonitorElement* meExtraMTDfailExtenderPtEff_;
0118 };
0119 
0120 // ------------ constructor and destructor --------------
0121 MtdTracksHarvester::MtdTracksHarvester(const edm::ParameterSet& iConfig)
0122     : folder_(iConfig.getParameter<std::string>("folder")) {}
0123 
0124 MtdTracksHarvester::~MtdTracksHarvester() {}
0125 
0126 // auxiliary method to compute efficiency from the ratio of two 1D MonitorElement
0127 void MtdTracksHarvester::computeEfficiency1D(MonitorElement* num, MonitorElement* den, MonitorElement* result) {
0128   for (int ibin = 1; ibin <= den->getNbinsX(); ibin++) {
0129     double eff = num->getBinContent(ibin) / den->getBinContent(ibin);
0130     double bin_err = sqrt((num->getBinContent(ibin) * (den->getBinContent(ibin) - num->getBinContent(ibin))) /
0131                           pow(den->getBinContent(ibin), 3));
0132     if (den->getBinContent(ibin) == 0) {
0133       eff = 0;
0134       bin_err = 0;
0135     }
0136     result->setBinContent(ibin, eff);
0137     result->setBinError(ibin, bin_err);
0138   }
0139 }
0140 
0141 void MtdTracksHarvester::normalize(MonitorElement* h, double scale) {
0142   double integral = h->getTH1F()->Integral();
0143   double norma = (integral > 0.) ? scale / integral : 0.;
0144   for (int ibin = 1; ibin <= h->getNbinsX(); ibin++) {
0145     double eff = h->getBinContent(ibin) * norma;
0146     double bin_err = h->getBinError(ibin) * norma;
0147     h->setBinContent(ibin, eff);
0148     h->setBinError(ibin, bin_err);
0149   }
0150 }
0151 
0152 // ------------ endjob tasks ----------------------------
0153 void MtdTracksHarvester::dqmEndJob(DQMStore::IBooker& ibook, DQMStore::IGetter& igetter) {
0154   // --- Get the monitoring histograms
0155   MonitorElement* meBTLTrackEtaTot = igetter.get(folder_ + "TrackBTLEtaTot");
0156   MonitorElement* meBTLTrackPhiTot = igetter.get(folder_ + "TrackBTLPhiTot");
0157   MonitorElement* meBTLTrackPtTot = igetter.get(folder_ + "TrackBTLPtTot");
0158   MonitorElement* meBTLTrackEtaMtd = igetter.get(folder_ + "TrackBTLEtaMtd");
0159   MonitorElement* meBTLTrackPhiMtd = igetter.get(folder_ + "TrackBTLPhiMtd");
0160   MonitorElement* meBTLTrackPtMtd = igetter.get(folder_ + "TrackBTLPtMtd");
0161 
0162   MonitorElement* meETLTrackEtaTot = igetter.get(folder_ + "TrackETLEtaTot");
0163   MonitorElement* meETLTrackPhiTot = igetter.get(folder_ + "TrackETLPhiTot");
0164   MonitorElement* meETLTrackPtTot = igetter.get(folder_ + "TrackETLPtTot");
0165   MonitorElement* meETLTrackEtaMtd = igetter.get(folder_ + "TrackETLEtaMtd");
0166   MonitorElement* meETLTrackPhiMtd = igetter.get(folder_ + "TrackETLPhiMtd");
0167   MonitorElement* meETLTrackPtMtd = igetter.get(folder_ + "TrackETLPtMtd");
0168   MonitorElement* meETLTrackEta2Mtd = igetter.get(folder_ + "TrackETLEta2Mtd");
0169   MonitorElement* meETLTrackPhi2Mtd = igetter.get(folder_ + "TrackETLPhi2Mtd");
0170   MonitorElement* meETLTrackPt2Mtd = igetter.get(folder_ + "TrackETLPt2Mtd");
0171 
0172   MonitorElement* meETLTrackEtaTotLowPt0 = igetter.get(folder_ + "TrackETLEtaTotLowPt0");
0173   MonitorElement* meETLTrackEtaTotLowPt1 = igetter.get(folder_ + "TrackETLEtaTotLowPt1");
0174   MonitorElement* meETLTrackEtaMtdLowPt0 = igetter.get(folder_ + "TrackETLEtaMtdLowPt0");
0175   MonitorElement* meETLTrackEtaMtdLowPt1 = igetter.get(folder_ + "TrackETLEtaMtdLowPt1");
0176   MonitorElement* meETLTrackEta2MtdLowPt0 = igetter.get(folder_ + "TrackETLEta2MtdLowPt0");
0177   MonitorElement* meETLTrackEta2MtdLowPt1 = igetter.get(folder_ + "TrackETLEta2MtdLowPt1");
0178 
0179   MonitorElement* meExtraPtMtd = igetter.get(folder_ + "ExtraPtMtd");
0180   MonitorElement* meExtraPtEtl2Mtd = igetter.get(folder_ + "ExtraPtEtl2Mtd");
0181   MonitorElement* meTrackMatchedTPPtTotLV = igetter.get(folder_ + "MatchedTPPtTotLV");
0182   MonitorElement* meExtraEtaMtd = igetter.get(folder_ + "ExtraEtaMtd");
0183   MonitorElement* meExtraEtaEtl2Mtd = igetter.get(folder_ + "ExtraEtaEtl2Mtd");
0184   MonitorElement* meTrackMatchedTPEtaTotLV = igetter.get(folder_ + "MatchedTPEtaTotLV");
0185 
0186   MonitorElement* meBTLTrackMatchedTPPtTot = igetter.get(folder_ + "BTLTrackMatchedTPPtTot");
0187   MonitorElement* meBTLTrackMatchedTPPtMtd = igetter.get(folder_ + "BTLTrackMatchedTPPtMtd");
0188   MonitorElement* meBTLTrackMatchedTPEtaTot = igetter.get(folder_ + "BTLTrackMatchedTPEtaTot");
0189   MonitorElement* meBTLTrackMatchedTPEtaMtd = igetter.get(folder_ + "BTLTrackMatchedTPEtaMtd");
0190   MonitorElement* meETLTrackMatchedTPPtTot = igetter.get(folder_ + "ETLTrackMatchedTPPtTot");
0191   MonitorElement* meETLTrackMatchedTPPtMtd = igetter.get(folder_ + "ETLTrackMatchedTPPtMtd");
0192   MonitorElement* meETLTrackMatchedTPPt2Mtd = igetter.get(folder_ + "ETLTrackMatchedTPPt2Mtd");
0193   MonitorElement* meETLTrackMatchedTPEtaTot = igetter.get(folder_ + "ETLTrackMatchedTPEtaTot");
0194   MonitorElement* meETLTrackMatchedTPEtaMtd = igetter.get(folder_ + "ETLTrackMatchedTPEtaMtd");
0195   MonitorElement* meETLTrackMatchedTPEta2Mtd = igetter.get(folder_ + "ETLTrackMatchedTPEta2Mtd");
0196   MonitorElement* meETLTrackMatchedTPPtMtdCorrect = igetter.get(folder_ + "ETLTrackMatchedTPPtMtdCorrect");
0197   MonitorElement* meETLTrackMatchedTPEtaMtdCorrect = igetter.get(folder_ + "ETLTrackMatchedTPEtaMtdCorrect");
0198 
0199   //
0200   MonitorElement* meBTLTrackMatchedTPmtdDirectEta = igetter.get(folder_ + "BTLTrackMatchedTPmtdDirectEta");
0201   MonitorElement* meBTLTrackMatchedTPmtdDirectPt = igetter.get(folder_ + "BTLTrackMatchedTPmtdDirectPt");
0202   MonitorElement* meBTLTrackMatchedTPmtdOtherEta = igetter.get(folder_ + "BTLTrackMatchedTPmtdOtherEta");
0203   MonitorElement* meBTLTrackMatchedTPmtdOtherPt = igetter.get(folder_ + "BTLTrackMatchedTPmtdOtherPt");
0204   ;
0205   MonitorElement* meBTLTrackMatchedTPnomtdEta = igetter.get(folder_ + "BTLTrackMatchedTPnomtdEta");
0206   MonitorElement* meBTLTrackMatchedTPnomtdPt = igetter.get(folder_ + "BTLTrackMatchedTPnomtdPt");
0207 
0208   MonitorElement* meBTLTrackMatchedTPmtdDirectCorrectAssocEta =
0209       igetter.get(folder_ + "BTLTrackMatchedTPmtdDirectCorrectAssocEta");
0210   MonitorElement* meBTLTrackMatchedTPmtdDirectCorrectAssocPt =
0211       igetter.get(folder_ + "BTLTrackMatchedTPmtdDirectCorrectAssocPt");
0212   MonitorElement* meBTLTrackMatchedTPmtdDirectWrongAssocEta =
0213       igetter.get(folder_ + "BTLTrackMatchedTPmtdDirectWrongAssocEta");
0214   MonitorElement* meBTLTrackMatchedTPmtdDirectWrongAssocPt =
0215       igetter.get(folder_ + "BTLTrackMatchedTPmtdDirectWrongAssocPt");
0216   MonitorElement* meBTLTrackMatchedTPmtdDirectNoAssocEta =
0217       igetter.get(folder_ + "BTLTrackMatchedTPmtdDirectNoAssocEta");
0218   MonitorElement* meBTLTrackMatchedTPmtdDirectNoAssocPt = igetter.get(folder_ + "BTLTrackMatchedTPmtdDirectNoAssocPt");
0219 
0220   MonitorElement* meBTLTrackMatchedTPmtdOtherCorrectAssocEta =
0221       igetter.get(folder_ + "BTLTrackMatchedTPmtdOtherCorrectAssocEta");
0222   MonitorElement* meBTLTrackMatchedTPmtdOtherCorrectAssocPt =
0223       igetter.get(folder_ + "BTLTrackMatchedTPmtdOtherCorrectAssocPt");
0224   MonitorElement* meBTLTrackMatchedTPmtdOtherWrongAssocEta =
0225       igetter.get(folder_ + "BTLTrackMatchedTPmtdOtherWrongAssocEta");
0226   MonitorElement* meBTLTrackMatchedTPmtdOtherWrongAssocPt =
0227       igetter.get(folder_ + "BTLTrackMatchedTPmtdOtherWrongAssocPt");
0228   MonitorElement* meBTLTrackMatchedTPmtdOtherNoAssocEta = igetter.get(folder_ + "BTLTrackMatchedTPmtdOtherNoAssocEta");
0229   MonitorElement* meBTLTrackMatchedTPmtdOtherNoAssocPt = igetter.get(folder_ + "BTLTrackMatchedTPmtdOtherNoAssocPt");
0230 
0231   MonitorElement* meBTLTrackMatchedTPnomtdAssocEta = igetter.get(folder_ + "BTLTrackMatchedTPnomtdAssocEta");
0232   MonitorElement* meBTLTrackMatchedTPnomtdAssocPt = igetter.get(folder_ + "BTLTrackMatchedTPnomtdAssocPt");
0233 
0234   MonitorElement* meETLTrackMatchedTPmtd1Eta = igetter.get(folder_ + "ETLTrackMatchedTPmtd1Eta");
0235   MonitorElement* meETLTrackMatchedTPmtd1Pt = igetter.get(folder_ + "ETLTrackMatchedTPmtd1Pt");
0236   MonitorElement* meETLTrackMatchedTPmtd2Eta = igetter.get(folder_ + "ETLTrackMatchedTPmtd2Eta");
0237   MonitorElement* meETLTrackMatchedTPmtd2Pt = igetter.get(folder_ + "ETLTrackMatchedTPmtd2Pt");
0238   ;
0239   MonitorElement* meETLTrackMatchedTPnomtdEta = igetter.get(folder_ + "ETLTrackMatchedTPnomtdEta");
0240   MonitorElement* meETLTrackMatchedTPnomtdPt = igetter.get(folder_ + "ETLTrackMatchedTPnomtdPt");
0241 
0242   MonitorElement* meETLTrackMatchedTPmtd1CorrectAssocEta =
0243       igetter.get(folder_ + "ETLTrackMatchedTPmtd1CorrectAssocEta");
0244   MonitorElement* meETLTrackMatchedTPmtd1CorrectAssocPt = igetter.get(folder_ + "ETLTrackMatchedTPmtd1CorrectAssocPt");
0245   MonitorElement* meETLTrackMatchedTPmtd1WrongAssocEta = igetter.get(folder_ + "ETLTrackMatchedTPmtd1WrongAssocEta");
0246   MonitorElement* meETLTrackMatchedTPmtd1WrongAssocPt = igetter.get(folder_ + "ETLTrackMatchedTPmtd1WrongAssocPt");
0247   MonitorElement* meETLTrackMatchedTPmtd1NoAssocEta = igetter.get(folder_ + "ETLTrackMatchedTPmtd1NoAssocEta");
0248   MonitorElement* meETLTrackMatchedTPmtd1NoAssocPt = igetter.get(folder_ + "ETLTrackMatchedTPmtd1NoAssocPt");
0249 
0250   MonitorElement* meETLTrackMatchedTPmtd2CorrectAssocEta =
0251       igetter.get(folder_ + "ETLTrackMatchedTPmtd2CorrectAssocEta");
0252   MonitorElement* meETLTrackMatchedTPmtd2CorrectAssocPt = igetter.get(folder_ + "ETLTrackMatchedTPmtd2CorrectAssocPt");
0253   MonitorElement* meETLTrackMatchedTPmtd2WrongAssocEta = igetter.get(folder_ + "ETLTrackMatchedTPmtd2WrongAssocEta");
0254   MonitorElement* meETLTrackMatchedTPmtd2WrongAssocPt = igetter.get(folder_ + "ETLTrackMatchedTPmtd2WrongAssocPt");
0255   MonitorElement* meETLTrackMatchedTPmtd2NoAssocEta = igetter.get(folder_ + "ETLTrackMatchedTPmtd2NoAssocEta");
0256   MonitorElement* meETLTrackMatchedTPmtd2NoAssocPt = igetter.get(folder_ + "ETLTrackMatchedTPmtd2NoAssocPt");
0257 
0258   MonitorElement* meETLTrackMatchedTPnomtdAssocEta = igetter.get(folder_ + "ETLTrackMatchedTPnomtdAssocEta");
0259   MonitorElement* meETLTrackMatchedTPnomtdAssocPt = igetter.get(folder_ + "ETLTrackMatchedTPnomtdAssocPt");
0260 
0261   //
0262   MonitorElement* meTrackNumHits = igetter.get(folder_ + "TrackNumHits");
0263   MonitorElement* meTrackNumHitsNT = igetter.get(folder_ + "TrackNumHitsNT");
0264   MonitorElement* meExtraPhiAtBTL = igetter.get(folder_ + "ExtraPhiAtBTL");
0265   MonitorElement* meExtraPhiAtBTLmatched = igetter.get(folder_ + "ExtraPhiAtBTLmatched");
0266   MonitorElement* meExtraBTLeneInCone = igetter.get(folder_ + "ExtraBTLeneInCone");
0267   MonitorElement* meExtraMTDfailExtenderEta = igetter.get(folder_ + "ExtraMTDfailExtenderEta");
0268   MonitorElement* meExtraMTDfailExtenderPt = igetter.get(folder_ + "ExtraMTDfailExtenderPt");
0269 
0270   if (!meBTLTrackEtaTot || !meBTLTrackPhiTot || !meBTLTrackPtTot || !meBTLTrackEtaMtd || !meBTLTrackPhiMtd ||
0271       !meBTLTrackPtMtd || !meETLTrackEtaTot || !meETLTrackPhiTot || !meETLTrackPtTot || !meETLTrackEtaMtd ||
0272       !meETLTrackPhiMtd || !meETLTrackPtMtd || !meETLTrackEta2Mtd || !meETLTrackPhi2Mtd || !meETLTrackPt2Mtd ||
0273       !meETLTrackEtaTotLowPt0 || !meETLTrackEtaTotLowPt1 || !meETLTrackEtaMtdLowPt0 || !meETLTrackEtaMtdLowPt1 ||
0274       !meETLTrackEta2MtdLowPt0 || !meETLTrackEta2MtdLowPt1 || !meTrackMatchedTPPtTotLV || !meTrackMatchedTPEtaTotLV ||
0275 
0276       !meBTLTrackMatchedTPPtTot || !meBTLTrackMatchedTPPtMtd || !meBTLTrackMatchedTPEtaTot ||
0277       !meBTLTrackMatchedTPEtaMtd || !meETLTrackMatchedTPPtTot || !meETLTrackMatchedTPPtMtd ||
0278       !meETLTrackMatchedTPPt2Mtd || !meETLTrackMatchedTPEtaTot || !meETLTrackMatchedTPEtaMtd ||
0279       !meETLTrackMatchedTPEta2Mtd || !meETLTrackMatchedTPPtMtdCorrect || !meETLTrackMatchedTPEtaMtdCorrect ||
0280 
0281       !meBTLTrackMatchedTPmtdDirectEta || !meBTLTrackMatchedTPmtdDirectPt || !meBTLTrackMatchedTPmtdOtherEta ||
0282       !meBTLTrackMatchedTPmtdOtherPt || !meBTLTrackMatchedTPnomtdEta || !meBTLTrackMatchedTPnomtdPt ||
0283       !meBTLTrackMatchedTPmtdDirectCorrectAssocEta || !meBTLTrackMatchedTPmtdDirectCorrectAssocPt ||
0284       !meBTLTrackMatchedTPmtdDirectWrongAssocEta || !meBTLTrackMatchedTPmtdDirectWrongAssocPt ||
0285       !meBTLTrackMatchedTPmtdDirectNoAssocEta || !meBTLTrackMatchedTPmtdDirectNoAssocPt ||
0286       !meBTLTrackMatchedTPmtdOtherCorrectAssocEta || !meBTLTrackMatchedTPmtdOtherCorrectAssocPt ||
0287       !meBTLTrackMatchedTPmtdOtherWrongAssocEta || !meBTLTrackMatchedTPmtdOtherWrongAssocPt ||
0288       !meBTLTrackMatchedTPmtdOtherNoAssocEta || !meBTLTrackMatchedTPmtdOtherNoAssocPt ||
0289       !meBTLTrackMatchedTPnomtdAssocEta || !meBTLTrackMatchedTPnomtdAssocPt || !meETLTrackMatchedTPmtd1Eta ||
0290       !meETLTrackMatchedTPmtd1Pt || !meETLTrackMatchedTPmtd2Eta || !meETLTrackMatchedTPmtd2Pt ||
0291       !meETLTrackMatchedTPnomtdEta || !meETLTrackMatchedTPnomtdPt || !meETLTrackMatchedTPmtd1CorrectAssocEta ||
0292       !meETLTrackMatchedTPmtd1CorrectAssocPt || !meETLTrackMatchedTPmtd1WrongAssocEta ||
0293       !meETLTrackMatchedTPmtd1WrongAssocPt || !meETLTrackMatchedTPmtd1NoAssocEta || !meETLTrackMatchedTPmtd1NoAssocPt ||
0294       !meETLTrackMatchedTPmtd2CorrectAssocEta || !meETLTrackMatchedTPmtd2CorrectAssocPt ||
0295       !meETLTrackMatchedTPmtd2WrongAssocEta || !meETLTrackMatchedTPmtd2WrongAssocPt ||
0296       !meETLTrackMatchedTPmtd2NoAssocEta || !meETLTrackMatchedTPmtd2NoAssocPt || !meETLTrackMatchedTPnomtdAssocEta ||
0297       !meETLTrackMatchedTPnomtdAssocPt || !meTrackNumHits || !meTrackNumHitsNT || !meExtraPtMtd || !meExtraPtEtl2Mtd ||
0298       !meExtraEtaMtd || !meExtraEtaEtl2Mtd || !meExtraPhiAtBTL || !meExtraPhiAtBTLmatched || !meExtraBTLeneInCone ||
0299       !meExtraMTDfailExtenderEta || !meExtraMTDfailExtenderPt) {
0300     edm::LogError("MtdTracksHarvester") << "Monitoring histograms not found!" << std::endl;
0301     return;
0302   }
0303 
0304   // --- Book  histograms
0305   ibook.cd(folder_);
0306   meBtlEtaEff_ = ibook.book1D("BtlEtaEff",
0307                               " Track Efficiency VS Eta;#eta;Efficiency",
0308                               meBTLTrackEtaTot->getNbinsX(),
0309                               meBTLTrackEtaTot->getTH1()->GetXaxis()->GetXmin(),
0310                               meBTLTrackEtaTot->getTH1()->GetXaxis()->GetXmax());
0311   meBtlEtaEff_->getTH1()->SetMinimum(0.);
0312   computeEfficiency1D(meBTLTrackEtaMtd, meBTLTrackEtaTot, meBtlEtaEff_);
0313 
0314   meBtlPhiEff_ = ibook.book1D("BtlPhiEff",
0315                               "Track Efficiency VS Phi;#phi [rad];Efficiency",
0316                               meBTLTrackPhiTot->getNbinsX(),
0317                               meBTLTrackPhiTot->getTH1()->GetXaxis()->GetXmin(),
0318                               meBTLTrackPhiTot->getTH1()->GetXaxis()->GetXmax());
0319   meBtlPhiEff_->getTH1()->SetMinimum(0.);
0320   computeEfficiency1D(meBTLTrackPhiMtd, meBTLTrackPhiTot, meBtlPhiEff_);
0321 
0322   meBtlPtEff_ = ibook.book1D("BtlPtEff",
0323                              "Track Efficiency VS Pt;Pt [GeV];Efficiency",
0324                              meBTLTrackPtTot->getNbinsX(),
0325                              meBTLTrackPtTot->getTH1()->GetXaxis()->GetXmin(),
0326                              meBTLTrackPtTot->getTH1()->GetXaxis()->GetXmax());
0327   meBtlPtEff_->getTH1()->SetMinimum(0.);
0328   computeEfficiency1D(meBTLTrackPtMtd, meBTLTrackPtTot, meBtlPtEff_);
0329 
0330   meEtlEtaEff_ = ibook.book1D("EtlEtaEff",
0331                               " Track Efficiency VS Eta;#eta;Efficiency",
0332                               meETLTrackEtaTot->getNbinsX(),
0333                               meETLTrackEtaTot->getTH1()->GetXaxis()->GetXmin(),
0334                               meETLTrackEtaTot->getTH1()->GetXaxis()->GetXmax());
0335   meEtlEtaEff_->getTH1()->SetMinimum(0.);
0336   computeEfficiency1D(meETLTrackEtaMtd, meETLTrackEtaTot, meEtlEtaEff_);
0337 
0338   meEtlPhiEff_ = ibook.book1D("EtlPhiEff",
0339                               "Track Efficiency VS Phi;#phi [rad];Efficiency",
0340                               meETLTrackPhiTot->getNbinsX(),
0341                               meETLTrackPhiTot->getTH1()->GetXaxis()->GetXmin(),
0342                               meETLTrackPhiTot->getTH1()->GetXaxis()->GetXmax());
0343   meEtlPhiEff_->getTH1()->SetMinimum(0.);
0344   computeEfficiency1D(meETLTrackPhiMtd, meETLTrackPhiTot, meEtlPhiEff_);
0345 
0346   meEtlPtEff_ = ibook.book1D("EtlPtEff",
0347                              "Track Efficiency VS Pt;Pt [GeV];Efficiency",
0348                              meETLTrackPtTot->getNbinsX(),
0349                              meETLTrackPtTot->getTH1()->GetXaxis()->GetXmin(),
0350                              meETLTrackPtTot->getTH1()->GetXaxis()->GetXmax());
0351   meEtlPtEff_->getTH1()->SetMinimum(0.);
0352   computeEfficiency1D(meETLTrackPtMtd, meETLTrackPtTot, meEtlPtEff_);
0353 
0354   meEtlEtaEff2_ = ibook.book1D("EtlEtaEff2",
0355                                " Track Efficiency VS Eta (2 hits);#eta;Efficiency",
0356                                meETLTrackEtaTot->getNbinsX(),
0357                                meETLTrackEtaTot->getTH1()->GetXaxis()->GetXmin(),
0358                                meETLTrackEtaTot->getTH1()->GetXaxis()->GetXmax());
0359   meEtlEtaEff2_->getTH1()->SetMinimum(0.);
0360   computeEfficiency1D(meETLTrackEta2Mtd, meETLTrackEtaTot, meEtlEtaEff2_);
0361 
0362   meEtlPhiEff2_ = ibook.book1D("EtlPhiEff2",
0363                                "Track Efficiency VS Phi (2 hits);#phi [rad];Efficiency",
0364                                meETLTrackPhiTot->getNbinsX(),
0365                                meETLTrackPhiTot->getTH1()->GetXaxis()->GetXmin(),
0366                                meETLTrackPhiTot->getTH1()->GetXaxis()->GetXmax());
0367   meEtlPhiEff2_->getTH1()->SetMinimum(0.);
0368   computeEfficiency1D(meETLTrackPhi2Mtd, meETLTrackPhiTot, meEtlPhiEff2_);
0369 
0370   meEtlPtEff2_ = ibook.book1D("EtlPtEff2",
0371                               "Track Efficiency VS Pt (2 hits);Pt [GeV];Efficiency",
0372                               meETLTrackPtTot->getNbinsX(),
0373                               meETLTrackPtTot->getTH1()->GetXaxis()->GetXmin(),
0374                               meETLTrackPtTot->getTH1()->GetXaxis()->GetXmax());
0375   meEtlPtEff2_->getTH1()->SetMinimum(0.);
0376   computeEfficiency1D(meETLTrackPt2Mtd, meETLTrackPtTot, meEtlPtEff2_);
0377 
0378   // low pT
0379   meEtlEtaEffLowPt_[0] = ibook.book1D("EtlEtaEffLowPt0",
0380                                       " Track Efficiency VS Eta, 0.2 < pt < 0.45;#eta;Efficiency",
0381                                       meETLTrackEtaTotLowPt0->getNbinsX(),
0382                                       meETLTrackEtaTotLowPt0->getTH1()->GetXaxis()->GetXmin(),
0383                                       meETLTrackEtaTotLowPt0->getTH1()->GetXaxis()->GetXmax());
0384   meEtlEtaEffLowPt_[0]->getTH1()->SetMinimum(0.);
0385   computeEfficiency1D(meETLTrackEtaMtdLowPt0, meETLTrackEtaTotLowPt0, meEtlEtaEffLowPt_[0]);
0386 
0387   meEtlEtaEffLowPt_[1] = ibook.book1D("EtlEtaEffLowPt1",
0388                                       " Track Efficiency VS Eta, 0.45 < pt < 0.7;#eta;Efficiency",
0389                                       meETLTrackEtaTotLowPt1->getNbinsX(),
0390                                       meETLTrackEtaTotLowPt1->getTH1()->GetXaxis()->GetXmin(),
0391                                       meETLTrackEtaTotLowPt1->getTH1()->GetXaxis()->GetXmax());
0392   meEtlEtaEffLowPt_[1]->getTH1()->SetMinimum(0.);
0393   computeEfficiency1D(meETLTrackEtaMtdLowPt1, meETLTrackEtaTotLowPt1, meEtlEtaEffLowPt_[1]);
0394 
0395   meEtlEtaEff2LowPt_[0] = ibook.book1D("EtlEtaEff2LowPt0",
0396                                        " Track Efficiency VS Eta (2 hits), 0.2 < pt < 0.45;#eta;Efficiency",
0397                                        meETLTrackEtaTotLowPt0->getNbinsX(),
0398                                        meETLTrackEtaTotLowPt0->getTH1()->GetXaxis()->GetXmin(),
0399                                        meETLTrackEtaTotLowPt0->getTH1()->GetXaxis()->GetXmax());
0400   meEtlEtaEff2LowPt_[0]->getTH1()->SetMinimum(0.);
0401   computeEfficiency1D(meETLTrackEta2MtdLowPt0, meETLTrackEtaTotLowPt0, meEtlEtaEff2LowPt_[0]);
0402 
0403   meEtlEtaEff2LowPt_[1] = ibook.book1D("EtlEtaEff2LowPt1",
0404                                        " Track Efficiency VS Eta (2 hits), 0.45 < pt < 0.7;#eta;Efficiency",
0405                                        meETLTrackEtaTotLowPt1->getNbinsX(),
0406                                        meETLTrackEtaTotLowPt1->getTH1()->GetXaxis()->GetXmin(),
0407                                        meETLTrackEtaTotLowPt1->getTH1()->GetXaxis()->GetXmax());
0408   meEtlEtaEff2LowPt_[1]->getTH1()->SetMinimum(0.);
0409   computeEfficiency1D(meETLTrackEta2MtdLowPt1, meETLTrackEtaTotLowPt1, meEtlEtaEff2LowPt_[1]);
0410 
0411   meExtraPtEff_ =
0412       ibook.book1D("ExtraPtEff",
0413                    "MTD matching efficiency wrt extrapolated track associated to LV VS Pt;Pt [GeV];Efficiency",
0414                    meTrackMatchedTPPtTotLV->getNbinsX(),
0415                    meTrackMatchedTPPtTotLV->getTH1()->GetXaxis()->GetXmin(),
0416                    meTrackMatchedTPPtTotLV->getTH1()->GetXaxis()->GetXmax());
0417   meExtraPtEff_->getTH1()->SetMinimum(0.);
0418   computeEfficiency1D(meExtraPtMtd, meTrackMatchedTPPtTotLV, meExtraPtEff_);
0419 
0420   meExtraPtEtl2Eff_ =
0421       ibook.book1D("ExtraPtEtl2Eff",
0422                    "MTD matching efficiency (2 ETL) wrt extrapolated track associated to LV VS Pt;Pt [GeV];Efficiency",
0423                    meTrackMatchedTPPtTotLV->getNbinsX(),
0424                    meTrackMatchedTPPtTotLV->getTH1()->GetXaxis()->GetXmin(),
0425                    meTrackMatchedTPPtTotLV->getTH1()->GetXaxis()->GetXmax());
0426   meExtraPtEtl2Eff_->getTH1()->SetMinimum(0.);
0427   computeEfficiency1D(meExtraPtEtl2Mtd, meTrackMatchedTPPtTotLV, meExtraPtEtl2Eff_);
0428 
0429   meExtraEtaEff_ = ibook.book1D("ExtraEtaEff",
0430                                 "MTD matching efficiency wrt extrapolated track associated to LV VS Eta;Eta;Efficiency",
0431                                 meTrackMatchedTPEtaTotLV->getNbinsX(),
0432                                 meTrackMatchedTPEtaTotLV->getTH1()->GetXaxis()->GetXmin(),
0433                                 meTrackMatchedTPEtaTotLV->getTH1()->GetXaxis()->GetXmax());
0434   meExtraEtaEff_->getTH1()->SetMinimum(0.);
0435   computeEfficiency1D(meExtraEtaMtd, meTrackMatchedTPEtaTotLV, meExtraEtaEff_);
0436 
0437   meExtraEtaEtl2Eff_ =
0438       ibook.book1D("ExtraEtaEtl2Eff",
0439                    "MTD matching efficiency (2 ETL) wrt extrapolated track associated to LV VS Eta;Eta;Efficiency",
0440                    meTrackMatchedTPEtaTotLV->getNbinsX(),
0441                    meTrackMatchedTPEtaTotLV->getTH1()->GetXaxis()->GetXmin(),
0442                    meTrackMatchedTPEtaTotLV->getTH1()->GetXaxis()->GetXmax());
0443   meExtraEtaEtl2Eff_->getTH1()->SetMinimum(0.);
0444   computeEfficiency1D(meExtraEtaEtl2Mtd, meTrackMatchedTPEtaTotLV, meExtraEtaEtl2Eff_);
0445 
0446   // Efficiency for TP matched tracks
0447   meBTLTPPtSelEff_ = ibook.book1D("BTLTPPtSelEff",
0448                                   "Track selected efficiency TP VS Pt;Pt [GeV];Efficiency",
0449                                   meBTLTrackPtTot->getNbinsX(),
0450                                   meBTLTrackPtTot->getTH1()->GetXaxis()->GetXmin(),
0451                                   meBTLTrackPtTot->getTH1()->GetXaxis()->GetXmax());
0452   meBTLTPPtSelEff_->getTH1()->SetMinimum(0.);
0453   computeEfficiency1D(meBTLTrackMatchedTPPtTot, meBTLTrackPtTot, meBTLTPPtSelEff_);
0454 
0455   meBTLTPEtaSelEff_ = ibook.book1D("BTLTPEtaSelEff",
0456                                    "Track selected efficiency TP VS Eta;Eta;Efficiency",
0457                                    meBTLTrackEtaTot->getNbinsX(),
0458                                    meBTLTrackEtaTot->getTH1()->GetXaxis()->GetXmin(),
0459                                    meBTLTrackEtaTot->getTH1()->GetXaxis()->GetXmax());
0460   meBTLTPEtaSelEff_->getTH1()->SetMinimum(0.);
0461   computeEfficiency1D(meBTLTrackMatchedTPEtaTot, meBTLTrackEtaTot, meBTLTPEtaSelEff_);
0462 
0463   meBTLTPPtMatchEff_ = ibook.book1D("BTLTPPtMatchEff",
0464                                     "Track matched to TP efficiency VS Pt;Pt [GeV];Efficiency",
0465                                     meBTLTrackMatchedTPPtTot->getNbinsX(),
0466                                     meBTLTrackMatchedTPPtTot->getTH1()->GetXaxis()->GetXmin(),
0467                                     meBTLTrackMatchedTPPtTot->getTH1()->GetXaxis()->GetXmax());
0468   meBTLTPPtMatchEff_->getTH1()->SetMinimum(0.);
0469   computeEfficiency1D(meBTLTrackMatchedTPPtMtd, meBTLTrackMatchedTPPtTot, meBTLTPPtMatchEff_);
0470 
0471   meBTLTPEtaMatchEff_ = ibook.book1D("BTLTPEtaMatchEff",
0472                                      "Track matched to TP efficiency VS Eta;Eta;Efficiency",
0473                                      meBTLTrackMatchedTPEtaTot->getNbinsX(),
0474                                      meBTLTrackMatchedTPEtaTot->getTH1()->GetXaxis()->GetXmin(),
0475                                      meBTLTrackMatchedTPEtaTot->getTH1()->GetXaxis()->GetXmax());
0476   meBTLTPEtaMatchEff_->getTH1()->SetMinimum(0.);
0477   computeEfficiency1D(meBTLTrackMatchedTPEtaMtd, meBTLTrackMatchedTPEtaTot, meBTLTPEtaMatchEff_);
0478 
0479   // -- BTL fraction of tracks with time and correct reco match
0480   meBTLTPPtCorrectMatchEff_ =
0481       ibook.book1D("BTLTPPtCorrectMatchEff",
0482                    "Track matched to TP efficiency for correct reco match VS Pt;Pt [GeV];Efficiency",
0483                    meBTLTrackMatchedTPPtMtd->getNbinsX(),
0484                    meBTLTrackMatchedTPPtMtd->getTH1()->GetXaxis()->GetXmin(),
0485                    meBTLTrackMatchedTPPtMtd->getTH1()->GetXaxis()->GetXmax());
0486   meBTLTPPtCorrectMatchEff_->getTH1()->SetMinimum(0.);
0487   MonitorElement* meBTLTrackMatchedTPPtMtdCorrect =
0488       ibook.book1D("BTLTrackMatchedTPPtMtdCorrect",
0489                    "Pt of tracks matched to TP with correct reco match; Pt [GeV];Efficiency",
0490                    meBTLTrackMatchedTPPtMtd->getNbinsX(),
0491                    meBTLTrackMatchedTPPtMtd->getTH1()->GetXaxis()->GetXmin(),
0492                    meBTLTrackMatchedTPPtMtd->getTH1()->GetXaxis()->GetXmax());
0493   meBTLTrackMatchedTPPtMtdCorrect->getTH1F()->Add(meBTLTrackMatchedTPmtdDirectCorrectAssocPt->getTH1F(),
0494                                                   meBTLTrackMatchedTPmtdOtherCorrectAssocPt->getTH1F());
0495   computeEfficiency1D(meBTLTrackMatchedTPPtMtdCorrect, meBTLTrackMatchedTPPtMtd, meBTLTPPtCorrectMatchEff_);
0496 
0497   meBTLTPEtaCorrectMatchEff_ =
0498       ibook.book1D("BTLTPEtaCorrectMatchEff",
0499                    "Track matched to TP efficiency for correct reco match VS Eta;Eta;Efficiency",
0500                    meBTLTrackMatchedTPEtaMtd->getNbinsX(),
0501                    meBTLTrackMatchedTPEtaMtd->getTH1()->GetXaxis()->GetXmin(),
0502                    meBTLTrackMatchedTPEtaMtd->getTH1()->GetXaxis()->GetXmax());
0503   meBTLTPEtaCorrectMatchEff_->getTH1()->SetMinimum(0.);
0504   MonitorElement* meBTLTrackMatchedTPEtaMtdCorrect =
0505       ibook.book1D("BTLTrackMatchedTPEtaMtdCorrect",
0506                    "Eta of tracks matched to TP with correct reco match; Eta [GeV];Efficiency",
0507                    meBTLTrackMatchedTPEtaMtd->getNbinsX(),
0508                    meBTLTrackMatchedTPEtaMtd->getTH1()->GetXaxis()->GetXmin(),
0509                    meBTLTrackMatchedTPEtaMtd->getTH1()->GetXaxis()->GetXmax());
0510   meBTLTrackMatchedTPEtaMtdCorrect->getTH1F()->Add(meBTLTrackMatchedTPmtdDirectCorrectAssocEta->getTH1F(),
0511                                                    meBTLTrackMatchedTPmtdOtherCorrectAssocEta->getTH1F());
0512   computeEfficiency1D(meBTLTrackMatchedTPEtaMtdCorrect, meBTLTrackMatchedTPEtaMtd, meBTLTPEtaCorrectMatchEff_);
0513 
0514   // -- ETL
0515   meETLTPPtSelEff_ = ibook.book1D("ETLTPPtSelEff",
0516                                   "Track selected efficiency TP VS Pt;Pt [GeV];Efficiency",
0517                                   meETLTrackPtTot->getNbinsX(),
0518                                   meETLTrackPtTot->getTH1()->GetXaxis()->GetXmin(),
0519                                   meETLTrackPtTot->getTH1()->GetXaxis()->GetXmax());
0520   meETLTPPtSelEff_->getTH1()->SetMinimum(0.);
0521   computeEfficiency1D(meETLTrackMatchedTPPtTot, meETLTrackPtTot, meETLTPPtSelEff_);
0522 
0523   meETLTPEtaSelEff_ = ibook.book1D("ETLTPEtaSelEff",
0524                                    "Track selected efficiency TP VS Eta;Eta;Efficiency",
0525                                    meETLTrackEtaTot->getNbinsX(),
0526                                    meETLTrackEtaTot->getTH1()->GetXaxis()->GetXmin(),
0527                                    meETLTrackEtaTot->getTH1()->GetXaxis()->GetXmax());
0528   meETLTPEtaSelEff_->getTH1()->SetMinimum(0.);
0529   computeEfficiency1D(meETLTrackMatchedTPEtaTot, meETLTrackEtaTot, meETLTPEtaSelEff_);
0530 
0531   meETLTPPtMatchEff_ = ibook.book1D("ETLTPPtMatchEff",
0532                                     "Track matched to TP efficiency VS Pt;Pt [GeV];Efficiency",
0533                                     meETLTrackMatchedTPPtTot->getNbinsX(),
0534                                     meETLTrackMatchedTPPtTot->getTH1()->GetXaxis()->GetXmin(),
0535                                     meETLTrackMatchedTPPtTot->getTH1()->GetXaxis()->GetXmax());
0536   meETLTPPtMatchEff_->getTH1()->SetMinimum(0.);
0537   computeEfficiency1D(meETLTrackMatchedTPPtMtd, meETLTrackMatchedTPPtTot, meETLTPPtMatchEff_);
0538 
0539   meETLTPEtaMatchEff_ = ibook.book1D("ETLTPEtaMatchEff",
0540                                      "Track matched to TP efficiency VS Eta;Eta;Efficiency",
0541                                      meETLTrackMatchedTPEtaTot->getNbinsX(),
0542                                      meETLTrackMatchedTPEtaTot->getTH1()->GetXaxis()->GetXmin(),
0543                                      meETLTrackMatchedTPEtaTot->getTH1()->GetXaxis()->GetXmax());
0544   meETLTPEtaMatchEff_->getTH1()->SetMinimum(0.);
0545   computeEfficiency1D(meETLTrackMatchedTPEtaMtd, meETLTrackMatchedTPEtaTot, meETLTPEtaMatchEff_);
0546 
0547   meETLTPPtMatchEff2_ = ibook.book1D("ETLTPPtMatchEff2",
0548                                      "Track matched to TP efficiency VS Pt (2 ETL hits);Pt [GeV];Efficiency",
0549                                      meETLTrackMatchedTPPtTot->getNbinsX(),
0550                                      meETLTrackMatchedTPPtTot->getTH1()->GetXaxis()->GetXmin(),
0551                                      meETLTrackMatchedTPPtTot->getTH1()->GetXaxis()->GetXmax());
0552   meETLTPPtMatchEff2_->getTH1()->SetMinimum(0.);
0553   computeEfficiency1D(meETLTrackMatchedTPPt2Mtd, meETLTrackMatchedTPPtTot, meETLTPPtMatchEff2_);
0554 
0555   meETLTPEtaMatchEff2_ = ibook.book1D("ETLTPEtaMatchEff2",
0556                                       "Track matched to TP efficiency VS Eta (2 hits);Eta;Efficiency",
0557                                       meETLTrackMatchedTPEtaTot->getNbinsX(),
0558                                       meETLTrackMatchedTPEtaTot->getTH1()->GetXaxis()->GetXmin(),
0559                                       meETLTrackMatchedTPEtaTot->getTH1()->GetXaxis()->GetXmax());
0560   meETLTPEtaMatchEff2_->getTH1()->SetMinimum(0.);
0561   computeEfficiency1D(meETLTrackMatchedTPEta2Mtd, meETLTrackMatchedTPEtaTot, meETLTPEtaMatchEff2_);
0562 
0563   //-- ETL fraction of tracks with time and correct reco match
0564   meETLTPPtCorrectMatchEff_ =
0565       ibook.book1D("ETLTPPtCorrectMatchEff",
0566                    "Track matched to TP efficiency with correct reco match VS Pt;Pt [GeV];Efficiency",
0567                    meETLTrackMatchedTPPtMtd->getNbinsX(),
0568                    meETLTrackMatchedTPPtMtd->getTH1()->GetXaxis()->GetXmin(),
0569                    meETLTrackMatchedTPPtMtd->getTH1()->GetXaxis()->GetXmax());
0570   meETLTPPtCorrectMatchEff_->getTH1()->SetMinimum(0.);
0571   computeEfficiency1D(meETLTrackMatchedTPPtMtdCorrect, meETLTrackMatchedTPPtMtd, meETLTPPtCorrectMatchEff_);
0572 
0573   meETLTPEtaCorrectMatchEff_ =
0574       ibook.book1D("ETLTPEtaCorrectMatchEff",
0575                    "Track matched to TP efficiency with correct reco match VS Eta;Eta;Efficiency",
0576                    meETLTrackMatchedTPEtaMtd->getNbinsX(),
0577                    meETLTrackMatchedTPEtaMtd->getTH1()->GetXaxis()->GetXmin(),
0578                    meETLTrackMatchedTPEtaMtd->getTH1()->GetXaxis()->GetXmax());
0579   meETLTPEtaCorrectMatchEff_->getTH1()->SetMinimum(0.);
0580   computeEfficiency1D(meETLTrackMatchedTPEtaMtdCorrect, meETLTrackMatchedTPEtaMtd, meETLTPEtaCorrectMatchEff_);
0581 
0582   meETLTPPtCorrectMatchEff2_ =
0583       ibook.book1D("ETLTPPtCorrectMatchEff2",
0584                    "Track matched to TP efficiency with correct reco match (2 hits) VS Pt;Pt [GeV];Efficiency",
0585                    meETLTrackMatchedTPPt2Mtd->getNbinsX(),
0586                    meETLTrackMatchedTPPt2Mtd->getTH1()->GetXaxis()->GetXmin(),
0587                    meETLTrackMatchedTPPt2Mtd->getTH1()->GetXaxis()->GetXmax());
0588   meETLTPPtCorrectMatchEff2_->getTH1()->SetMinimum(0.);
0589   computeEfficiency1D(meETLTrackMatchedTPmtd2CorrectAssocPt, meETLTrackMatchedTPPt2Mtd, meETLTPPtCorrectMatchEff2_);
0590 
0591   meETLTPEtaCorrectMatchEff2_ =
0592       ibook.book1D("ETLTPEtaCorrectMatchEff2",
0593                    "Track matched to TP efficiency with correct reco match (2 hits) VS Eta;Eta;Efficiency",
0594                    meETLTrackMatchedTPEta2Mtd->getNbinsX(),
0595                    meETLTrackMatchedTPEta2Mtd->getTH1()->GetXaxis()->GetXmin(),
0596                    meETLTrackMatchedTPEta2Mtd->getTH1()->GetXaxis()->GetXmax());
0597   meETLTPEtaCorrectMatchEff2_->getTH1()->SetMinimum(0.);
0598   computeEfficiency1D(meETLTrackMatchedTPmtd2CorrectAssocEta, meETLTrackMatchedTPEta2Mtd, meETLTPEtaCorrectMatchEff2_);
0599 
0600   // == Track-cluster matching efficiencies based on mc truth
0601   // -- BTL
0602   meBTLTPmtdDirectEtaSelEff_ = ibook.book1D("BTLTPmtdDirectEtaSelEff",
0603                                             "Track selected efficiency TP-mtd hit (direct) VS Eta",
0604                                             meBTLTrackEtaTot->getNbinsX(),
0605                                             meBTLTrackEtaTot->getTH1()->GetXaxis()->GetXmin(),
0606                                             meBTLTrackEtaTot->getTH1()->GetXaxis()->GetXmax());
0607   meBTLTPmtdDirectEtaSelEff_->getTH1()->SetMinimum(0.);
0608   computeEfficiency1D(meBTLTrackMatchedTPmtdDirectEta, meBTLTrackEtaTot, meBTLTPmtdDirectEtaSelEff_);
0609 
0610   meBTLTPmtdDirectPtSelEff_ = ibook.book1D("BTLTPmtdDirectPtSelEff",
0611                                            "Track selected efficiency TP-mtd hit (direct) VS Pt",
0612                                            meBTLTrackPtTot->getNbinsX(),
0613                                            meBTLTrackPtTot->getTH1()->GetXaxis()->GetXmin(),
0614                                            meBTLTrackPtTot->getTH1()->GetXaxis()->GetXmax());
0615   meBTLTPmtdDirectPtSelEff_->getTH1()->SetMinimum(0.);
0616   computeEfficiency1D(meBTLTrackMatchedTPmtdDirectPt, meBTLTrackPtTot, meBTLTPmtdDirectPtSelEff_);
0617 
0618   meBTLTPmtdOtherEtaSelEff_ = ibook.book1D("BTLTPmtdOtherEtaSelEff",
0619                                            "Track selected efficiency TP-mtd hit (other) VS Eta",
0620                                            meBTLTrackEtaTot->getNbinsX(),
0621                                            meBTLTrackEtaTot->getTH1()->GetXaxis()->GetXmin(),
0622                                            meBTLTrackEtaTot->getTH1()->GetXaxis()->GetXmax());
0623   meBTLTPmtdOtherEtaSelEff_->getTH1()->SetMinimum(0.);
0624   computeEfficiency1D(meBTLTrackMatchedTPmtdOtherEta, meBTLTrackEtaTot, meBTLTPmtdOtherEtaSelEff_);
0625 
0626   meBTLTPmtdOtherPtSelEff_ = ibook.book1D("BTLTPmtdOtherPtSelEff",
0627                                           "Track selected efficiency TP-mtd hit (other) VS Pt",
0628                                           meBTLTrackPtTot->getNbinsX(),
0629                                           meBTLTrackPtTot->getTH1()->GetXaxis()->GetXmin(),
0630                                           meBTLTrackPtTot->getTH1()->GetXaxis()->GetXmax());
0631   meBTLTPmtdOtherPtSelEff_->getTH1()->SetMinimum(0.);
0632   computeEfficiency1D(meBTLTrackMatchedTPmtdOtherPt, meBTLTrackPtTot, meBTLTPmtdOtherPtSelEff_);
0633 
0634   meBTLTPnomtdEtaSelEff_ = ibook.book1D("BTLTPnomtdEtaSelEff",
0635                                         "Track selected efficiency TP-no mtd hit VS Eta",
0636                                         meBTLTrackEtaTot->getNbinsX(),
0637                                         meBTLTrackEtaTot->getTH1()->GetXaxis()->GetXmin(),
0638                                         meBTLTrackEtaTot->getTH1()->GetXaxis()->GetXmax());
0639   meBTLTPnomtdEtaSelEff_->getTH1()->SetMinimum(0.);
0640   computeEfficiency1D(meBTLTrackMatchedTPnomtdEta, meBTLTrackEtaTot, meBTLTPnomtdEtaSelEff_);
0641 
0642   meBTLTPnomtdPtSelEff_ = ibook.book1D("BTLTPnomtdPtSelEff",
0643                                        "Track selected efficiency TP-no mtd hit VS Pt",
0644                                        meBTLTrackPtTot->getNbinsX(),
0645                                        meBTLTrackPtTot->getTH1()->GetXaxis()->GetXmin(),
0646                                        meBTLTrackPtTot->getTH1()->GetXaxis()->GetXmax());
0647   meBTLTPnomtdPtSelEff_->getTH1()->SetMinimum(0.);
0648   computeEfficiency1D(meBTLTrackMatchedTPnomtdPt, meBTLTrackPtTot, meBTLTPnomtdPtSelEff_);
0649 
0650   meBTLTPmtdDirectCorrectAssocEtaMatchEff_ =
0651       ibook.book1D("BTLTPmtdDirectCorrectAssocEtaMatchEff",
0652                    "Track efficiency TP-mtd hit (direct), correct reco match VS Eta",
0653                    meBTLTrackMatchedTPmtdDirectEta->getNbinsX(),
0654                    meBTLTrackMatchedTPmtdDirectEta->getTH1()->GetXaxis()->GetXmin(),
0655                    meBTLTrackMatchedTPmtdDirectEta->getTH1()->GetXaxis()->GetXmax());
0656   meBTLTPmtdDirectCorrectAssocEtaMatchEff_->getTH1()->SetMinimum(0.);
0657   computeEfficiency1D(meBTLTrackMatchedTPmtdDirectCorrectAssocEta,
0658                       meBTLTrackMatchedTPmtdDirectEta,
0659                       meBTLTPmtdDirectCorrectAssocEtaMatchEff_);
0660 
0661   meBTLTPmtdDirectCorrectAssocPtMatchEff_ =
0662       ibook.book1D("BTLTPmtdDirectCorrectAssocPtMatchEff",
0663                    "Track efficiency TP-mtd hit (direct), correct reco match VS Pt",
0664                    meBTLTrackMatchedTPmtdDirectPt->getNbinsX(),
0665                    meBTLTrackMatchedTPmtdDirectPt->getTH1()->GetXaxis()->GetXmin(),
0666                    meBTLTrackMatchedTPmtdDirectPt->getTH1()->GetXaxis()->GetXmax());
0667   meBTLTPmtdDirectCorrectAssocPtMatchEff_->getTH1()->SetMinimum(0.);
0668   computeEfficiency1D(meBTLTrackMatchedTPmtdDirectCorrectAssocPt,
0669                       meBTLTrackMatchedTPmtdDirectPt,
0670                       meBTLTPmtdDirectCorrectAssocPtMatchEff_);
0671 
0672   meBTLTPmtdDirectWrongAssocEtaMatchEff_ =
0673       ibook.book1D("BTLTPmtdDirectWrongAssocEtaMatchEff",
0674                    "Track efficiency TP-mtd hit (direct), incorrect reco match VS Eta",
0675                    meBTLTrackMatchedTPmtdDirectEta->getNbinsX(),
0676                    meBTLTrackMatchedTPmtdDirectEta->getTH1()->GetXaxis()->GetXmin(),
0677                    meBTLTrackMatchedTPmtdDirectEta->getTH1()->GetXaxis()->GetXmax());
0678   meBTLTPmtdDirectWrongAssocEtaMatchEff_->getTH1()->SetMinimum(0.);
0679   computeEfficiency1D(meBTLTrackMatchedTPmtdDirectWrongAssocEta,
0680                       meBTLTrackMatchedTPmtdDirectEta,
0681                       meBTLTPmtdDirectWrongAssocEtaMatchEff_);
0682 
0683   meBTLTPmtdDirectWrongAssocPtMatchEff_ =
0684       ibook.book1D("BTLTPmtdDirectWrongAssocPtMatchEff",
0685                    "Track efficiency TP-mtd hit (direct), incorrect reco match VS Pt",
0686                    meBTLTrackMatchedTPmtdDirectPt->getNbinsX(),
0687                    meBTLTrackMatchedTPmtdDirectPt->getTH1()->GetXaxis()->GetXmin(),
0688                    meBTLTrackMatchedTPmtdDirectPt->getTH1()->GetXaxis()->GetXmax());
0689   meBTLTPmtdDirectWrongAssocPtMatchEff_->getTH1()->SetMinimum(0.);
0690   computeEfficiency1D(
0691       meBTLTrackMatchedTPmtdDirectWrongAssocPt, meBTLTrackMatchedTPmtdDirectPt, meBTLTPmtdDirectWrongAssocPtMatchEff_);
0692 
0693   meBTLTPmtdDirectNoAssocEtaMatchEff_ = ibook.book1D("BTLTPmtdDirectNoAssocEtaMatchEff",
0694                                                      "Track efficiency TP-mtd hit (direct), no reco match VS Eta",
0695                                                      meBTLTrackMatchedTPmtdDirectEta->getNbinsX(),
0696                                                      meBTLTrackMatchedTPmtdDirectEta->getTH1()->GetXaxis()->GetXmin(),
0697                                                      meBTLTrackMatchedTPmtdDirectEta->getTH1()->GetXaxis()->GetXmax());
0698   meBTLTPmtdDirectNoAssocEtaMatchEff_->getTH1()->SetMinimum(0.);
0699   computeEfficiency1D(
0700       meBTLTrackMatchedTPmtdDirectNoAssocEta, meBTLTrackMatchedTPmtdDirectEta, meBTLTPmtdDirectNoAssocEtaMatchEff_);
0701 
0702   meBTLTPmtdDirectNoAssocPtMatchEff_ = ibook.book1D("BTLTPmtdDirectNoAssocPtMatchEff",
0703                                                     "Track efficiency TP-mtd hit (direct), no reco match VS Pt",
0704                                                     meBTLTrackMatchedTPmtdDirectPt->getNbinsX(),
0705                                                     meBTLTrackMatchedTPmtdDirectPt->getTH1()->GetXaxis()->GetXmin(),
0706                                                     meBTLTrackMatchedTPmtdDirectPt->getTH1()->GetXaxis()->GetXmax());
0707   meBTLTPmtdDirectNoAssocPtMatchEff_->getTH1()->SetMinimum(0.);
0708   computeEfficiency1D(
0709       meBTLTrackMatchedTPmtdDirectNoAssocPt, meBTLTrackMatchedTPmtdDirectPt, meBTLTPmtdDirectNoAssocPtMatchEff_);
0710 
0711   meBTLTPmtdOtherCorrectAssocEtaMatchEff_ =
0712       ibook.book1D("BTLTPmtdOtherCorrectAssocEtaMatchEff",
0713                    "Track efficiency TP-mtd hit (other), correct reco match VS Eta",
0714                    meBTLTrackMatchedTPmtdOtherEta->getNbinsX(),
0715                    meBTLTrackMatchedTPmtdOtherEta->getTH1()->GetXaxis()->GetXmin(),
0716                    meBTLTrackMatchedTPmtdOtherEta->getTH1()->GetXaxis()->GetXmax());
0717   meBTLTPmtdOtherCorrectAssocEtaMatchEff_->getTH1()->SetMinimum(0.);
0718   computeEfficiency1D(meBTLTrackMatchedTPmtdOtherCorrectAssocEta,
0719                       meBTLTrackMatchedTPmtdOtherEta,
0720                       meBTLTPmtdOtherCorrectAssocEtaMatchEff_);
0721 
0722   meBTLTPmtdOtherCorrectAssocPtMatchEff_ = ibook.book1D("BTLTPmtdOtherCorrectAssocPtMatchEff",
0723                                                         "Track efficiency TP-mtd hit (other), correct reco match VS Pt",
0724                                                         meBTLTrackMatchedTPmtdOtherPt->getNbinsX(),
0725                                                         meBTLTrackMatchedTPmtdOtherPt->getTH1()->GetXaxis()->GetXmin(),
0726                                                         meBTLTrackMatchedTPmtdOtherPt->getTH1()->GetXaxis()->GetXmax());
0727   meBTLTPmtdOtherCorrectAssocPtMatchEff_->getTH1()->SetMinimum(0.);
0728   computeEfficiency1D(
0729       meBTLTrackMatchedTPmtdOtherCorrectAssocPt, meBTLTrackMatchedTPmtdOtherPt, meBTLTPmtdOtherCorrectAssocPtMatchEff_);
0730 
0731   meBTLTPmtdOtherWrongAssocEtaMatchEff_ =
0732       ibook.book1D("BTLTPmtdOtherWrongAssocEtaMatchEff",
0733                    "Track efficiency TP-mtd hit (other), incorrect reco match VS Eta",
0734                    meBTLTrackMatchedTPmtdOtherEta->getNbinsX(),
0735                    meBTLTrackMatchedTPmtdOtherEta->getTH1()->GetXaxis()->GetXmin(),
0736                    meBTLTrackMatchedTPmtdOtherEta->getTH1()->GetXaxis()->GetXmax());
0737   meBTLTPmtdOtherWrongAssocEtaMatchEff_->getTH1()->SetMinimum(0.);
0738   computeEfficiency1D(
0739       meBTLTrackMatchedTPmtdOtherWrongAssocEta, meBTLTrackMatchedTPmtdOtherEta, meBTLTPmtdOtherWrongAssocEtaMatchEff_);
0740 
0741   meBTLTPmtdOtherWrongAssocPtMatchEff_ = ibook.book1D("BTLTPmtdOtherWrongAssocPtMatchEff",
0742                                                       "Track efficiency TP-mtd hit (other), incorrect reco match VS Pt",
0743                                                       meBTLTrackMatchedTPmtdOtherPt->getNbinsX(),
0744                                                       meBTLTrackMatchedTPmtdOtherPt->getTH1()->GetXaxis()->GetXmin(),
0745                                                       meBTLTrackMatchedTPmtdOtherPt->getTH1()->GetXaxis()->GetXmax());
0746   meBTLTPmtdOtherWrongAssocPtMatchEff_->getTH1()->SetMinimum(0.);
0747   computeEfficiency1D(
0748       meBTLTrackMatchedTPmtdOtherWrongAssocPt, meBTLTrackMatchedTPmtdOtherPt, meBTLTPmtdOtherWrongAssocPtMatchEff_);
0749 
0750   meBTLTPmtdOtherNoAssocEtaMatchEff_ = ibook.book1D("BTLTPmtdOtherNoAssocEtaMatchEff",
0751                                                     "Track efficiency TP-mtd hit (other), no reco match VS Eta",
0752                                                     meBTLTrackMatchedTPmtdOtherEta->getNbinsX(),
0753                                                     meBTLTrackMatchedTPmtdOtherEta->getTH1()->GetXaxis()->GetXmin(),
0754                                                     meBTLTrackMatchedTPmtdOtherEta->getTH1()->GetXaxis()->GetXmax());
0755   meBTLTPmtdOtherNoAssocEtaMatchEff_->getTH1()->SetMinimum(0.);
0756   computeEfficiency1D(
0757       meBTLTrackMatchedTPmtdOtherNoAssocEta, meBTLTrackMatchedTPmtdOtherEta, meBTLTPmtdOtherNoAssocEtaMatchEff_);
0758 
0759   meBTLTPmtdOtherNoAssocPtMatchEff_ = ibook.book1D("BTLTPmtdOtherNoAssocPtMatchEff",
0760                                                    "Track efficiency TP-mtd hit (other), no reco match VS Pt",
0761                                                    meBTLTrackMatchedTPmtdOtherPt->getNbinsX(),
0762                                                    meBTLTrackMatchedTPmtdOtherPt->getTH1()->GetXaxis()->GetXmin(),
0763                                                    meBTLTrackMatchedTPmtdOtherPt->getTH1()->GetXaxis()->GetXmax());
0764   meBTLTPmtdOtherNoAssocPtMatchEff_->getTH1()->SetMinimum(0.);
0765   computeEfficiency1D(
0766       meBTLTrackMatchedTPmtdOtherNoAssocPt, meBTLTrackMatchedTPmtdOtherPt, meBTLTPmtdOtherNoAssocPtMatchEff_);
0767 
0768   meBTLTPnomtdEtaMatchEff_ = ibook.book1D("BTLTPnomtdEtaMatchEff",
0769                                           "Track efficiency TP- no mtd hit, with reco match VS Eta",
0770                                           meBTLTrackMatchedTPnomtdEta->getNbinsX(),
0771                                           meBTLTrackMatchedTPnomtdEta->getTH1()->GetXaxis()->GetXmin(),
0772                                           meBTLTrackMatchedTPnomtdEta->getTH1()->GetXaxis()->GetXmax());
0773   meBTLTPnomtdEtaMatchEff_->getTH1()->SetMinimum(0.);
0774   computeEfficiency1D(meBTLTrackMatchedTPnomtdAssocEta, meBTLTrackMatchedTPnomtdEta, meBTLTPnomtdEtaMatchEff_);
0775 
0776   meBTLTPnomtdPtMatchEff_ = ibook.book1D("BTLTPnomtdPtMatchEff",
0777                                          "Track efficiency TP- no mtd hit, with reco match VS Pt",
0778                                          meBTLTrackMatchedTPnomtdPt->getNbinsX(),
0779                                          meBTLTrackMatchedTPnomtdPt->getTH1()->GetXaxis()->GetXmin(),
0780                                          meBTLTrackMatchedTPnomtdPt->getTH1()->GetXaxis()->GetXmax());
0781   meBTLTPnomtdPtMatchEff_->getTH1()->SetMinimum(0.);
0782   computeEfficiency1D(meBTLTrackMatchedTPnomtdAssocPt, meBTLTrackMatchedTPnomtdPt, meBTLTPnomtdPtMatchEff_);
0783 
0784   // -- ETL
0785   meETLTPmtd1EtaSelEff_ = ibook.book1D("ETLTPmtd1EtaSelEff",
0786                                        "Track selected efficiency TP-mtd hit (>=1 sim hit) VS Eta",
0787                                        meETLTrackEtaTot->getNbinsX(),
0788                                        meETLTrackEtaTot->getTH1()->GetXaxis()->GetXmin(),
0789                                        meETLTrackEtaTot->getTH1()->GetXaxis()->GetXmax());
0790   meETLTPmtd1EtaSelEff_->getTH1()->SetMinimum(0.);
0791   computeEfficiency1D(meETLTrackMatchedTPmtd1Eta, meETLTrackEtaTot, meETLTPmtd1EtaSelEff_);
0792 
0793   meETLTPmtd1PtSelEff_ = ibook.book1D("ETLTPmtd1PtSelEff",
0794                                       "Track selected efficiency TP-mtd hit (>=1 sim hit) VS Pt",
0795                                       meETLTrackPtTot->getNbinsX(),
0796                                       meETLTrackPtTot->getTH1()->GetXaxis()->GetXmin(),
0797                                       meETLTrackPtTot->getTH1()->GetXaxis()->GetXmax());
0798   meETLTPmtd1PtSelEff_->getTH1()->SetMinimum(0.);
0799   computeEfficiency1D(meETLTrackMatchedTPmtd1Pt, meETLTrackPtTot, meETLTPmtd1PtSelEff_);
0800 
0801   meETLTPmtd2EtaSelEff_ = ibook.book1D("ETLTPmtd2EtaSelEff",
0802                                        "Track selected efficiency TP-mtd hit (2 sim hits) VS Eta",
0803                                        meETLTrackEtaTot->getNbinsX(),
0804                                        meETLTrackEtaTot->getTH1()->GetXaxis()->GetXmin(),
0805                                        meETLTrackEtaTot->getTH1()->GetXaxis()->GetXmax());
0806   meETLTPmtd2EtaSelEff_->getTH1()->SetMinimum(0.);
0807   computeEfficiency1D(meETLTrackMatchedTPmtd2Eta, meETLTrackEtaTot, meETLTPmtd2EtaSelEff_);
0808 
0809   meETLTPmtd2PtSelEff_ = ibook.book1D("ETLTPmtd2PtSelEff",
0810                                       "Track selected efficiency TP-mtd hit (2 sim hits) VS Pt",
0811                                       meETLTrackPtTot->getNbinsX(),
0812                                       meETLTrackPtTot->getTH1()->GetXaxis()->GetXmin(),
0813                                       meETLTrackPtTot->getTH1()->GetXaxis()->GetXmax());
0814   meETLTPmtd2PtSelEff_->getTH1()->SetMinimum(0.);
0815   computeEfficiency1D(meETLTrackMatchedTPmtd2Pt, meETLTrackPtTot, meETLTPmtd2PtSelEff_);
0816 
0817   meETLTPnomtdEtaSelEff_ = ibook.book1D("ETLTPnomtdEtaSelEff",
0818                                         "Track selected efficiency TP-no mtd hit VS Eta",
0819                                         meETLTrackEtaTot->getNbinsX(),
0820                                         meETLTrackEtaTot->getTH1()->GetXaxis()->GetXmin(),
0821                                         meETLTrackEtaTot->getTH1()->GetXaxis()->GetXmax());
0822   meETLTPnomtdEtaSelEff_->getTH1()->SetMinimum(0.);
0823   computeEfficiency1D(meETLTrackMatchedTPnomtdEta, meETLTrackEtaTot, meETLTPnomtdEtaSelEff_);
0824 
0825   meETLTPnomtdPtSelEff_ = ibook.book1D("ETLTPnomtdPtSelEff",
0826                                        "Track selected efficiency TP-no mtd hit VS Pt",
0827                                        meETLTrackPtTot->getNbinsX(),
0828                                        meETLTrackPtTot->getTH1()->GetXaxis()->GetXmin(),
0829                                        meETLTrackPtTot->getTH1()->GetXaxis()->GetXmax());
0830   meETLTPnomtdPtSelEff_->getTH1()->SetMinimum(0.);
0831   computeEfficiency1D(meETLTrackMatchedTPnomtdPt, meETLTrackPtTot, meETLTPnomtdPtSelEff_);
0832 
0833   meETLTPmtd1CorrectAssocEtaMatchEff_ =
0834       ibook.book1D("ETLTPmtd1CorrectAssocEtaMatchEff",
0835                    "Track efficiency TP-mtd hit (>=1 sim hit), correct reco match VS Eta",
0836                    meETLTrackMatchedTPmtd1Eta->getNbinsX(),
0837                    meETLTrackMatchedTPmtd1Eta->getTH1()->GetXaxis()->GetXmin(),
0838                    meETLTrackMatchedTPmtd1Eta->getTH1()->GetXaxis()->GetXmax());
0839   meETLTPmtd1CorrectAssocEtaMatchEff_->getTH1()->SetMinimum(0.);
0840   computeEfficiency1D(
0841       meETLTrackMatchedTPmtd1CorrectAssocEta, meETLTrackMatchedTPmtd1Eta, meETLTPmtd1CorrectAssocEtaMatchEff_);
0842 
0843   meETLTPmtd1CorrectAssocPtMatchEff_ =
0844       ibook.book1D("ETLTPmtd1CorrectAssocPtMatchEff",
0845                    "Track efficiency TP-mtd hit (>=1 sim hit), correct reco match VS Pt",
0846                    meETLTrackMatchedTPmtd1Pt->getNbinsX(),
0847                    meETLTrackMatchedTPmtd1Pt->getTH1()->GetXaxis()->GetXmin(),
0848                    meETLTrackMatchedTPmtd1Pt->getTH1()->GetXaxis()->GetXmax());
0849   meETLTPmtd1CorrectAssocPtMatchEff_->getTH1()->SetMinimum(0.);
0850   computeEfficiency1D(
0851       meETLTrackMatchedTPmtd1CorrectAssocPt, meETLTrackMatchedTPmtd1Pt, meETLTPmtd1CorrectAssocPtMatchEff_);
0852 
0853   meETLTPmtd1WrongAssocEtaMatchEff_ =
0854       ibook.book1D("ETLTPmtd1WrongAssocEtaMatchEff",
0855                    "Track efficiency TP-mtd hit (>=1 sim hit), incorrect reco match VS Eta",
0856                    meETLTrackMatchedTPmtd1Eta->getNbinsX(),
0857                    meETLTrackMatchedTPmtd1Eta->getTH1()->GetXaxis()->GetXmin(),
0858                    meETLTrackMatchedTPmtd1Eta->getTH1()->GetXaxis()->GetXmax());
0859   meETLTPmtd1WrongAssocEtaMatchEff_->getTH1()->SetMinimum(0.);
0860   computeEfficiency1D(
0861       meETLTrackMatchedTPmtd1WrongAssocEta, meETLTrackMatchedTPmtd1Eta, meETLTPmtd1WrongAssocEtaMatchEff_);
0862 
0863   meETLTPmtd1WrongAssocPtMatchEff_ =
0864       ibook.book1D("ETLTPmtd1WrongAssocPtMatchEff",
0865                    "Track efficiency TP-mtd hit (>=1 sim hit), incorrect reco match VS Pt",
0866                    meETLTrackMatchedTPmtd1Pt->getNbinsX(),
0867                    meETLTrackMatchedTPmtd1Pt->getTH1()->GetXaxis()->GetXmin(),
0868                    meETLTrackMatchedTPmtd1Pt->getTH1()->GetXaxis()->GetXmax());
0869   meETLTPmtd1WrongAssocPtMatchEff_->getTH1()->SetMinimum(0.);
0870   computeEfficiency1D(meETLTrackMatchedTPmtd1WrongAssocPt, meETLTrackMatchedTPmtd1Pt, meETLTPmtd1WrongAssocPtMatchEff_);
0871 
0872   meETLTPmtd1NoAssocEtaMatchEff_ = ibook.book1D("ETLTPmtd1NoAssocEtaMatchEff",
0873                                                 "Track efficiency TP-mtd hit (>=1 sim hit), no reco match VS Eta",
0874                                                 meETLTrackMatchedTPmtd1Eta->getNbinsX(),
0875                                                 meETLTrackMatchedTPmtd1Eta->getTH1()->GetXaxis()->GetXmin(),
0876                                                 meETLTrackMatchedTPmtd1Eta->getTH1()->GetXaxis()->GetXmax());
0877   meETLTPmtd1NoAssocEtaMatchEff_->getTH1()->SetMinimum(0.);
0878   computeEfficiency1D(meETLTrackMatchedTPmtd1NoAssocEta, meETLTrackMatchedTPmtd1Eta, meETLTPmtd1NoAssocEtaMatchEff_);
0879 
0880   meETLTPmtd1NoAssocPtMatchEff_ = ibook.book1D("ETLTPmtd1NoAssocPtMatchEff",
0881                                                "Track efficiency TP-mtd hit (>=1 sim hit), no reco match VS Pt",
0882                                                meETLTrackMatchedTPmtd1Pt->getNbinsX(),
0883                                                meETLTrackMatchedTPmtd1Pt->getTH1()->GetXaxis()->GetXmin(),
0884                                                meETLTrackMatchedTPmtd1Pt->getTH1()->GetXaxis()->GetXmax());
0885   meETLTPmtd1NoAssocPtMatchEff_->getTH1()->SetMinimum(0.);
0886   computeEfficiency1D(meETLTrackMatchedTPmtd1NoAssocPt, meETLTrackMatchedTPmtd1Pt, meETLTPmtd1NoAssocPtMatchEff_);
0887 
0888   meETLTPmtd2CorrectAssocEtaMatchEff_ =
0889       ibook.book1D("ETLTPmtd2CorrectAssocEtaMatchEff",
0890                    "Track efficiency TP-mtd hit (2 sim hits), correct reco match VS Eta",
0891                    meETLTrackMatchedTPmtd2Eta->getNbinsX(),
0892                    meETLTrackMatchedTPmtd2Eta->getTH1()->GetXaxis()->GetXmin(),
0893                    meETLTrackMatchedTPmtd2Eta->getTH1()->GetXaxis()->GetXmax());
0894   meETLTPmtd2CorrectAssocEtaMatchEff_->getTH1()->SetMinimum(0.);
0895   computeEfficiency1D(
0896       meETLTrackMatchedTPmtd2CorrectAssocEta, meETLTrackMatchedTPmtd2Eta, meETLTPmtd2CorrectAssocEtaMatchEff_);
0897 
0898   meETLTPmtd2CorrectAssocPtMatchEff_ =
0899       ibook.book1D("ETLTPmtd2CorrectAssocPtMatchEff",
0900                    "Track efficiency TP-mtd hit (2 sim hits), correct reco match VS Pt",
0901                    meETLTrackMatchedTPmtd2Pt->getNbinsX(),
0902                    meETLTrackMatchedTPmtd2Pt->getTH1()->GetXaxis()->GetXmin(),
0903                    meETLTrackMatchedTPmtd2Pt->getTH1()->GetXaxis()->GetXmax());
0904   meETLTPmtd2CorrectAssocPtMatchEff_->getTH1()->SetMinimum(0.);
0905   computeEfficiency1D(
0906       meETLTrackMatchedTPmtd2CorrectAssocPt, meETLTrackMatchedTPmtd2Pt, meETLTPmtd2CorrectAssocPtMatchEff_);
0907 
0908   meETLTPmtd2WrongAssocEtaMatchEff_ =
0909       ibook.book1D("ETLTPmtd2WrongAssocEtaMatchEff",
0910                    "Track efficiency TP-mtd hit (2 sim hits), incorrect reco match VS Eta",
0911                    meETLTrackMatchedTPmtd2Eta->getNbinsX(),
0912                    meETLTrackMatchedTPmtd2Eta->getTH1()->GetXaxis()->GetXmin(),
0913                    meETLTrackMatchedTPmtd2Eta->getTH1()->GetXaxis()->GetXmax());
0914   meETLTPmtd2WrongAssocEtaMatchEff_->getTH1()->SetMinimum(0.);
0915   computeEfficiency1D(
0916       meETLTrackMatchedTPmtd2WrongAssocEta, meETLTrackMatchedTPmtd2Eta, meETLTPmtd2WrongAssocEtaMatchEff_);
0917 
0918   meETLTPmtd2WrongAssocPtMatchEff_ =
0919       ibook.book1D("ETLTPmtd2WrongAssocPtMatchEff",
0920                    "Track efficiency TP-mtd hit (2 sim hits), incorrect reco match VS Pt",
0921                    meETLTrackMatchedTPmtd2Pt->getNbinsX(),
0922                    meETLTrackMatchedTPmtd2Pt->getTH1()->GetXaxis()->GetXmin(),
0923                    meETLTrackMatchedTPmtd2Pt->getTH1()->GetXaxis()->GetXmax());
0924   meETLTPmtd2WrongAssocPtMatchEff_->getTH1()->SetMinimum(0.);
0925   computeEfficiency1D(meETLTrackMatchedTPmtd2WrongAssocPt, meETLTrackMatchedTPmtd2Pt, meETLTPmtd2WrongAssocPtMatchEff_);
0926 
0927   meETLTPmtd2NoAssocEtaMatchEff_ = ibook.book1D("ETLTPmtd2NoAssocEtaMatchEff",
0928                                                 "Track efficiency TP-mtd hit (2 sim hits), no reco match VS Eta",
0929                                                 meETLTrackMatchedTPmtd2Eta->getNbinsX(),
0930                                                 meETLTrackMatchedTPmtd2Eta->getTH1()->GetXaxis()->GetXmin(),
0931                                                 meETLTrackMatchedTPmtd2Eta->getTH1()->GetXaxis()->GetXmax());
0932   meETLTPmtd2NoAssocEtaMatchEff_->getTH1()->SetMinimum(0.);
0933   computeEfficiency1D(meETLTrackMatchedTPmtd2NoAssocEta, meETLTrackMatchedTPmtd2Eta, meETLTPmtd2NoAssocEtaMatchEff_);
0934 
0935   meETLTPmtd2NoAssocPtMatchEff_ = ibook.book1D("ETLTPmtd2NoAssocPtMatchEff",
0936                                                "Track efficiency TP-mtd hit (2 sim hits), no reco match VS Pt",
0937                                                meETLTrackMatchedTPmtd2Pt->getNbinsX(),
0938                                                meETLTrackMatchedTPmtd2Pt->getTH1()->GetXaxis()->GetXmin(),
0939                                                meETLTrackMatchedTPmtd2Pt->getTH1()->GetXaxis()->GetXmax());
0940   meETLTPmtd2NoAssocPtMatchEff_->getTH1()->SetMinimum(0.);
0941   computeEfficiency1D(meETLTrackMatchedTPmtd2NoAssocPt, meETLTrackMatchedTPmtd2Pt, meETLTPmtd2NoAssocPtMatchEff_);
0942 
0943   meETLTPnomtdEtaMatchEff_ = ibook.book1D("ETLTPnomtdEtaMatchEff",
0944                                           "Track efficiency TP- no mtd hit, with reco match VS Eta",
0945                                           meETLTrackMatchedTPnomtdEta->getNbinsX(),
0946                                           meETLTrackMatchedTPnomtdEta->getTH1()->GetXaxis()->GetXmin(),
0947                                           meETLTrackMatchedTPnomtdEta->getTH1()->GetXaxis()->GetXmax());
0948   meETLTPnomtdEtaMatchEff_->getTH1()->SetMinimum(0.);
0949   computeEfficiency1D(meETLTrackMatchedTPnomtdAssocEta, meETLTrackMatchedTPnomtdEta, meETLTPnomtdEtaMatchEff_);
0950 
0951   meETLTPnomtdPtMatchEff_ = ibook.book1D("ETLTPnomtdPtMatchEff",
0952                                          "Track efficiency TP- no mtd hit, with reco match VS Pt",
0953                                          meETLTrackMatchedTPnomtdPt->getNbinsX(),
0954                                          meETLTrackMatchedTPnomtdPt->getTH1()->GetXaxis()->GetXmin(),
0955                                          meETLTrackMatchedTPnomtdPt->getTH1()->GetXaxis()->GetXmax());
0956   meETLTPnomtdPtMatchEff_->getTH1()->SetMinimum(0.);
0957   computeEfficiency1D(meETLTrackMatchedTPnomtdAssocPt, meETLTrackMatchedTPnomtdPt, meETLTPnomtdPtMatchEff_);
0958 
0959   meNoTimeFraction_ = ibook.book1D("NoTimeFraction",
0960                                    "Fraction of tracks with MTD hits and no time associated; Num. of hits",
0961                                    meTrackNumHits->getNbinsX(),
0962                                    meTrackNumHits->getTH1()->GetXaxis()->GetXmin(),
0963                                    meTrackNumHits->getTH1()->GetXaxis()->GetXmax());
0964   meNoTimeFraction_->getTH1()->SetMinimum(0.);
0965   computeEfficiency1D(meTrackNumHitsNT, meTrackNumHits, meNoTimeFraction_);
0966 
0967   meBtlEtaEff_->getTH1()->SetMinimum(0.);
0968   meBtlPhiEff_->getTH1()->SetMinimum(0.);
0969   meBtlPtEff_->getTH1()->SetMinimum(0.);
0970   meEtlEtaEff_->getTH1()->SetMinimum(0.);
0971   meEtlPhiEff_->getTH1()->SetMinimum(0.);
0972   meEtlPtEff_->getTH1()->SetMinimum(0.);
0973   meEtlEtaEff2_->getTH1()->SetMinimum(0.);
0974   meEtlPhiEff2_->getTH1()->SetMinimum(0.);
0975   meEtlPtEff2_->getTH1()->SetMinimum(0.);
0976   for (int i = 0; i < 2; i++) {
0977     meEtlEtaEffLowPt_[i]->getTH1()->SetMinimum(0.);
0978     meEtlEtaEff2LowPt_[i]->getTH1()->SetMinimum(0.);
0979   }
0980 
0981   meExtraPhiAtBTLEff_ = ibook.book1D("ExtraPhiAtBTLEff",
0982                                      "Efficiency to match hits at BTL surface of extrapolated tracks associated to LV",
0983                                      meExtraPhiAtBTL->getNbinsX(),
0984                                      meExtraPhiAtBTL->getTH1()->GetXaxis()->GetXmin(),
0985                                      meExtraPhiAtBTL->getTH1()->GetXaxis()->GetXmax());
0986   meExtraPhiAtBTLEff_->getTH1()->SetMinimum(0.);
0987   computeEfficiency1D(meExtraPhiAtBTLmatched, meExtraPhiAtBTL, meExtraPhiAtBTLEff_);
0988 
0989   normalize(meExtraBTLeneInCone, 1.);
0990 
0991   meExtraMTDfailExtenderEtaEff_ =
0992       ibook.book1D("ExtraMTDfailExtenderEtaEff",
0993                    "Track associated to LV extrapolated at MTD surface no extender efficiency VS Eta;Eta;Efficiency",
0994                    meTrackMatchedTPEtaTotLV->getNbinsX(),
0995                    meTrackMatchedTPEtaTotLV->getTH1()->GetXaxis()->GetXmin(),
0996                    meTrackMatchedTPEtaTotLV->getTH1()->GetXaxis()->GetXmax());
0997   meExtraMTDfailExtenderEtaEff_->getTH1()->SetMinimum(0.);
0998   computeEfficiency1D(meExtraMTDfailExtenderEta, meTrackMatchedTPEtaTotLV, meExtraMTDfailExtenderEtaEff_);
0999 
1000   meExtraMTDfailExtenderPtEff_ = ibook.book1D(
1001       "ExtraMTDfailExtenderPtEff",
1002       "Track associated to LV extrapolated at MTD surface no extender efficiency VS Pt;Pt [GeV];Efficiency",
1003       meTrackMatchedTPPtTotLV->getNbinsX(),
1004       meTrackMatchedTPPtTotLV->getTH1()->GetXaxis()->GetXmin(),
1005       meTrackMatchedTPPtTotLV->getTH1()->GetXaxis()->GetXmax());
1006   meExtraMTDfailExtenderPtEff_->getTH1()->SetMinimum(0.);
1007   computeEfficiency1D(meExtraMTDfailExtenderPt, meTrackMatchedTPPtTotLV, meExtraMTDfailExtenderPtEff_);
1008 }
1009 
1010 // ------------ method fills 'descriptions' with the allowed parameters for the module  ----------
1011 void MtdTracksHarvester::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
1012   edm::ParameterSetDescription desc;
1013 
1014   desc.add<std::string>("folder", "MTD/Tracks/");
1015 
1016   descriptions.add("MtdTracksPostProcessor", desc);
1017 }
1018 
1019 DEFINE_FWK_MODULE(MtdTracksHarvester);