Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:08:00

0001 #include "DQM/L1TMonitorClient/interface/L1TStage2CaloLayer2DEClient.h"
0002 
0003 L1TStage2CaloLayer2DEClient::L1TStage2CaloLayer2DEClient(const edm::ParameterSet &ps)
0004     : monitor_dir_(ps.getUntrackedParameter<std::string>("monitorDir", "")),
0005       input_dir_data_(ps.getUntrackedParameter<std::string>("inputDataDir", "")),
0006       input_dir_emul_(ps.getUntrackedParameter<std::string>("inputEmulDir", "")),
0007       CenJetRankComp_(nullptr),
0008       CenJetEtaComp_(nullptr),
0009       CenJetPhiComp_(nullptr),
0010       ForJetRankComp_(nullptr),
0011       ForJetEtaComp_(nullptr),
0012       ForJetPhiComp_(nullptr),
0013       IsoEGRankComp_(nullptr),
0014       IsoEGEtaComp_(nullptr),
0015       IsoEGPhiComp_(nullptr),
0016       NonIsoEGRankComp_(nullptr),
0017       NonIsoEGEtaComp_(nullptr),
0018       NonIsoEGPhiComp_(nullptr),
0019       IsoTauRankComp_(nullptr),
0020       IsoTauEtaComp_(nullptr),
0021       IsoTauPhiComp_(nullptr),
0022       TauRankComp_(nullptr),
0023       TauEtaComp_(nullptr),
0024       TauPhiComp_(nullptr),
0025       METComp_(nullptr),
0026       METPhiComp_(nullptr),
0027       METHFComp_(nullptr),
0028       METHFPhiComp_(nullptr),
0029       MHTComp_(nullptr),
0030       MHTPhiComp_(nullptr),
0031       MHTHFComp_(nullptr),
0032       MHTHFPhiComp_(nullptr),
0033       ETTComp_(nullptr),
0034       HTTComp_(nullptr),
0035       MinBiasHFP0Comp_(nullptr),
0036       MinBiasHFM0Comp_(nullptr),
0037       MinBiasHFP1Comp_(nullptr),
0038       MinBiasHFM1Comp_(nullptr),
0039       ETTEMComp_(nullptr),
0040       TowerCountComp_(nullptr) {}
0041 
0042 L1TStage2CaloLayer2DEClient::~L1TStage2CaloLayer2DEClient() {}
0043 
0044 void L1TStage2CaloLayer2DEClient::dqmEndLuminosityBlock(DQMStore::IBooker &ibooker,
0045                                                         DQMStore::IGetter &igetter,
0046                                                         const edm::LuminosityBlock &lumiSeg,
0047                                                         const edm::EventSetup &c) {
0048   book(ibooker);
0049   processHistograms(igetter);
0050 }
0051 
0052 void L1TStage2CaloLayer2DEClient::dqmEndJob(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter) {
0053   book(ibooker);
0054   processHistograms(igetter);
0055 }
0056 
0057 void L1TStage2CaloLayer2DEClient::book(DQMStore::IBooker &ibooker) {
0058   // problemSummary;
0059 
0060   ibooker.setCurrentFolder(monitor_dir_);
0061 
0062   if (CenJetRankComp_ == nullptr) {
0063     CenJetRankComp_ =
0064         ibooker.book1D("CenJetsRankDERatio", "Data/Emul of Central Jet E_{T}; Jet iE_{T}; Counts", 2048, -0.5, 2047.5);
0065     CenJetRankComp_->setEfficiencyFlag();
0066   } else {
0067     CenJetRankComp_->Reset();
0068   }
0069   if (CenJetEtaComp_ == nullptr) {
0070     CenJetEtaComp_ =
0071         ibooker.book1D("CenJetsEtaDERatio", "Data/Emul of Central Jet #eta; Jet i#eta; Counts", 229, -114.5, 114.5);
0072     CenJetEtaComp_->setEfficiencyFlag();
0073   } else {
0074     CenJetEtaComp_->Reset();
0075   }
0076   if (CenJetPhiComp_ == nullptr) {
0077     CenJetPhiComp_ =
0078         ibooker.book1D("CenJetsPhiDERatio", "Data/Emul of Central Jet #phi; Jet i#phi; Counts", 144, -0.5, 143.5);
0079     CenJetPhiComp_->setEfficiencyFlag();
0080   } else {
0081     CenJetPhiComp_->Reset();
0082   }
0083   if (ForJetRankComp_ == nullptr) {
0084     ForJetRankComp_ =
0085         ibooker.book1D("ForJetsRankDERatio", "Data/Emul of Forward Jet E_{T}; Jet iE_{T}; Counts", 2048, -0.5, 2047.5);
0086     ForJetRankComp_->setEfficiencyFlag();
0087   } else {
0088     ForJetRankComp_->Reset();
0089   }
0090   if (ForJetEtaComp_ == nullptr) {
0091     ForJetEtaComp_ =
0092         ibooker.book1D("ForJetsEtaDERatio", "Data/Emul of Forward Jet #eta; Jet i#eta; Counts", 229, -114.5, 114.5);
0093     ForJetEtaComp_->setEfficiencyFlag();
0094   } else {
0095     ForJetEtaComp_->Reset();
0096   }
0097   if (ForJetPhiComp_ == nullptr) {
0098     ForJetPhiComp_ =
0099         ibooker.book1D("ForJetsPhiDERatio", "Data/Emul of Forward Jet #phi; Jet i#phi; Counts", 144, -0.5, 143.5);
0100     ForJetPhiComp_->setEfficiencyFlag();
0101   } else {
0102     ForJetPhiComp_->Reset();
0103   }
0104   if (IsoEGRankComp_ == nullptr) {
0105     IsoEGRankComp_ =
0106         ibooker.book1D("IsoEGRankDERatio", "Data/Emul of isolated eg E_{T}; EG iE_{T}; Counts", 512, -0.5, 511.5);
0107     IsoEGRankComp_->setEfficiencyFlag();
0108   } else {
0109     IsoEGRankComp_->Reset();
0110   }
0111   if (IsoEGEtaComp_ == nullptr) {
0112     IsoEGEtaComp_ =
0113         ibooker.book1D("IsoEGEtaDERatio", "Data/Emul of isolated eg #eta; EG i#eta; Counts", 229, -114.5, 114.5);
0114     IsoEGEtaComp_->setEfficiencyFlag();
0115   } else {
0116     IsoEGEtaComp_->Reset();
0117   }
0118   if (IsoEGPhiComp_ == nullptr) {
0119     IsoEGPhiComp_ =
0120         ibooker.book1D("IsoEGPhiDERatio", "Data/Emul of isolated eg #phi; EG i#eta; Counts", 144, -0.5, 143.5);
0121     IsoEGPhiComp_->setEfficiencyFlag();
0122   } else {
0123     IsoEGPhiComp_->Reset();
0124   }
0125   if (NonIsoEGRankComp_ == nullptr) {
0126     NonIsoEGRankComp_ = ibooker.book1D(
0127         "NonIsoEGRankDERatio", "Data/Emul of non-isolated eg E_{T}; EG iE_{T}; Counts", 512, -0.5, 511.5);
0128     NonIsoEGRankComp_->setEfficiencyFlag();
0129   } else {
0130     NonIsoEGRankComp_->Reset();
0131   }
0132   if (NonIsoEGEtaComp_ == nullptr) {
0133     NonIsoEGEtaComp_ =
0134         ibooker.book1D("NonIsoEGEtaDERatio", "Data/Emul of non-isolated eg #eta; EG i#eta; Counts", 229, -114.5, 114.5);
0135     NonIsoEGEtaComp_->setEfficiencyFlag();
0136   } else {
0137     NonIsoEGEtaComp_->Reset();
0138   }
0139   if (NonIsoEGPhiComp_ == nullptr) {
0140     NonIsoEGPhiComp_ =
0141         ibooker.book1D("NonIsoEGPhiDERatio", "Data/Emul of non-isolated eg #phi; EG i#phi; Counts", 144, -0.5, 143.5);
0142     NonIsoEGPhiComp_->setEfficiencyFlag();
0143   } else {
0144     NonIsoEGPhiComp_->Reset();
0145   }
0146   if (TauRankComp_ == nullptr) {
0147     TauRankComp_ =
0148         ibooker.book1D("TauRankDERatio", "Data/Emul of relax tau E_{T}; Tau iE_{T}; Counts", 512, -0.5, 511.5);
0149     TauRankComp_->setEfficiencyFlag();
0150   } else {
0151     TauRankComp_->Reset();
0152   }
0153   if (TauEtaComp_ == nullptr) {
0154     TauEtaComp_ = ibooker.book1D("TauEtaDERatio", "Data/Emul of relax tau #eta; Tau i#eta; Counts", 229, -114.5, 114.5);
0155     TauEtaComp_->setEfficiencyFlag();
0156   } else {
0157     TauEtaComp_->Reset();
0158   }
0159   if (TauPhiComp_ == nullptr) {
0160     TauPhiComp_ =
0161         ibooker.book1D("TauPhiDERatio", "Data/Emul of relax tau eg #phi; Tau i#phi; Counts", 144, -0.5, 143.5);
0162     TauPhiComp_->setEfficiencyFlag();
0163   } else {
0164     TauPhiComp_->Reset();
0165   }
0166   if (IsoTauRankComp_ == nullptr) {
0167     IsoTauRankComp_ =
0168         ibooker.book1D("IsoTauRankDERatio", "Data/Emul of iso tau E_{T}; ISO Tau iE_{T}; Counts", 512, -0.5, 511.5);
0169     IsoTauRankComp_->setEfficiencyFlag();
0170   } else {
0171     IsoTauRankComp_->Reset();
0172   }
0173   if (IsoTauEtaComp_ == nullptr) {
0174     IsoTauEtaComp_ =
0175         ibooker.book1D("IsoTauEtaDERatio", "Data/Emul of iso tau #eta; ISO Tau i#eta; Counts", 229, -114.5, 114.5);
0176     IsoTauEtaComp_->setEfficiencyFlag();
0177   } else {
0178     IsoTauEtaComp_->Reset();
0179   }
0180   if (IsoTauPhiComp_ == nullptr) {
0181     IsoTauPhiComp_ =
0182         ibooker.book1D("IsoTauPhiDERatio", "Data/Emul of iso tau #phi; ISO Tau i#phi; Counts", 144, -0.5, 143.5);
0183     IsoTauPhiComp_->setEfficiencyFlag();
0184   } else {
0185     IsoTauPhiComp_->Reset();
0186   }
0187   if (METComp_ == nullptr) {
0188     METComp_ = ibooker.book1D("METRatio", "Data/Emul of MET; iE_{T}; Events", 4096, -0.5, 4095.5);
0189     METComp_->setEfficiencyFlag();
0190   } else {
0191     METComp_->Reset();
0192   }
0193   if (METPhiComp_ == nullptr) {
0194     METPhiComp_ = ibooker.book1D("METPhiRatio", "Data/Emul of MET #phi; MET i#phi; Events", 1008, -0.5, 1007.5);
0195     METPhiComp_->setEfficiencyFlag();
0196   } else {
0197     METPhiComp_->Reset();
0198   }
0199   if (METHFComp_ == nullptr) {
0200     METHFComp_ = ibooker.book1D("METHFRatio", "Data/Emul of METHF; METHF iE_{T}; Events", 4096, -0.5, 4095.5);
0201     METHFComp_->setEfficiencyFlag();
0202   } else {
0203     METHFComp_->Reset();
0204   }
0205   if (METHFPhiComp_ == nullptr) {
0206     METHFPhiComp_ = ibooker.book1D("METHFPhiRatio", "Data/Emul of METHF #phi; METHF i#phi; Events", 1008, -0.5, 1007.5);
0207     METHFPhiComp_->setEfficiencyFlag();
0208   } else {
0209     METHFPhiComp_->Reset();
0210   }
0211   if (MHTComp_ == nullptr) {
0212     MHTComp_ = ibooker.book1D("MHTRatio", "Data/Emul of MHT; MHT iE_{T}; Events", 4096, -0.5, 4095.5);
0213     MHTComp_->setEfficiencyFlag();
0214   } else {
0215     MHTComp_->Reset();
0216   }
0217   if (MHTPhiComp_ == nullptr) {
0218     MHTPhiComp_ = ibooker.book1D("MHTPhiRatio", "Data/Emul of MHT #phi; MHTHF i#phi; Events", 1008, -0.5, 1007.5);
0219     MHTPhiComp_->setEfficiencyFlag();
0220   } else {
0221     MHTPhiComp_->Reset();
0222   }
0223   if (MHTHFComp_ == nullptr) {
0224     MHTHFComp_ = ibooker.book1D("MHTHFRatio", "Data/Emul of MHTHF; MHTHF iE_{T}; Events", 4096, -0.5, 4095.5);
0225     MHTHFComp_->setEfficiencyFlag();
0226   } else {
0227     MHTHFComp_->Reset();
0228   }
0229   if (MHTHFPhiComp_ == nullptr) {
0230     MHTHFPhiComp_ = ibooker.book1D("MHTHFPhiRatio", "Data/Emul of MHTHF #phi; MHTHF i#phi; Events", 1008, -0.5, 1007.5);
0231     MHTHFPhiComp_->setEfficiencyFlag();
0232   } else {
0233     MHTHFPhiComp_->Reset();
0234   }
0235   if (ETTComp_ == nullptr) {
0236     ETTComp_ = ibooker.book1D("ETTRatio", "Data/Emul of ET Total; ETT iE_{T}; Events", 4096, -0.5, 4095.5);
0237     ETTComp_->setEfficiencyFlag();
0238   } else {
0239     ETTComp_->Reset();
0240   }
0241   if (ETTEMComp_ == nullptr) {
0242     ETTEMComp_ = ibooker.book1D("ETTEMRatio", "Data/Emul of ET Total EM; ETTEM iE_{T}; Events", 4096, -0.5, 4095.5);
0243     ETTEMComp_->setEfficiencyFlag();
0244   } else {
0245     ETTEMComp_->Reset();
0246   }
0247   if (HTTComp_ == nullptr) {
0248     HTTComp_ = ibooker.book1D("HTTRatio", "Data/Emul of HT Total; HT iE_{T}; Events", 4096, -0.5, 4095.5);
0249     HTTComp_->setEfficiencyFlag();
0250   } else {
0251     HTTComp_->Reset();
0252   }
0253 
0254   if (MinBiasHFP0Comp_ == nullptr) {
0255     MinBiasHFP0Comp_ = ibooker.book1D("MinBiasHFP0Ratio", "Data/Emul MinBiasHFP0; N_{towers}; Events", 16, -0.5, 15.5);
0256     MinBiasHFP0Comp_->setEfficiencyFlag();
0257   } else {
0258     MinBiasHFP0Comp_->Reset();
0259   }
0260   if (MinBiasHFM0Comp_ == nullptr) {
0261     MinBiasHFM0Comp_ = ibooker.book1D("MinBiasHFM0Ratio", "Data/Emul MinBiasHFM0; N_{towers}; Events", 16, -0.5, 15.5);
0262     MinBiasHFM0Comp_->setEfficiencyFlag();
0263   } else {
0264     MinBiasHFM0Comp_->Reset();
0265   }
0266   if (MinBiasHFP1Comp_ == nullptr) {
0267     MinBiasHFP1Comp_ = ibooker.book1D("MinBiasHFP1Ratio", "Data/Emul MinBiasHFP1; N_{towers}; Events", 16, -0.5, 15.5);
0268     MinBiasHFP1Comp_->setEfficiencyFlag();
0269   } else {
0270     MinBiasHFP1Comp_->Reset();
0271   }
0272   if (MinBiasHFM1Comp_ == nullptr) {
0273     MinBiasHFM1Comp_ = ibooker.book1D("MinBiasHFM1Ratio", "Data/Emul MinBiasHFM1; N_{towers}; Events", 16, -0.5, 15.5);
0274     MinBiasHFM1Comp_->setEfficiencyFlag();
0275   } else {
0276     MinBiasHFM1Comp_->Reset();
0277   }
0278 
0279   if (TowerCountComp_ == nullptr) {
0280     TowerCountComp_ = ibooker.book1D("TowCountRatio", "Data/Emul Tower Count; N_{towers}; Events", 5904, -0.5, 5903.5);
0281     TowerCountComp_->setEfficiencyFlag();
0282   } else {
0283     TowerCountComp_->Reset();
0284   }
0285 }
0286 
0287 void L1TStage2CaloLayer2DEClient::processHistograms(DQMStore::IGetter &igetter) {
0288   MonitorElement *dataHist_;
0289   MonitorElement *emulHist_;
0290 
0291   // central jets
0292   dataHist_ = igetter.get(input_dir_data_ + "/Central-Jets/" + "CenJetsRank");
0293   emulHist_ = igetter.get(input_dir_emul_ + "/Central-Jets/" + "CenJetsRank");
0294 
0295   if (dataHist_ && emulHist_) {
0296     TH1F *cjrNum = dataHist_->getTH1F();
0297     TH1F *cjrDen = emulHist_->getTH1F();
0298 
0299     TH1F *CenJetRankRatio = CenJetRankComp_->getTH1F();
0300 
0301     CenJetRankRatio->Divide(cjrNum, cjrDen);
0302   }
0303 
0304   dataHist_ = igetter.get(input_dir_data_ + "/Central-Jets/" + "CenJetsEta");
0305   emulHist_ = igetter.get(input_dir_emul_ + "/Central-Jets/" + "CenJetsEta");
0306 
0307   if (dataHist_ && emulHist_) {
0308     TH1F *cjeNum = dataHist_->getTH1F();
0309     TH1F *cjeDen = emulHist_->getTH1F();
0310 
0311     TH1F *CenJetEtaRatio = CenJetEtaComp_->getTH1F();
0312 
0313     CenJetEtaRatio->Divide(cjeNum, cjeDen);
0314   }
0315 
0316   dataHist_ = igetter.get(input_dir_data_ + "/Central-Jets/" + "CenJetsPhi");
0317   emulHist_ = igetter.get(input_dir_emul_ + "/Central-Jets/" + "CenJetsPhi");
0318 
0319   if (dataHist_ && emulHist_) {
0320     TH1F *cjpNum = dataHist_->getTH1F();
0321     TH1F *cjpDen = emulHist_->getTH1F();
0322 
0323     TH1F *CenJetPhiRatio = CenJetPhiComp_->getTH1F();
0324 
0325     CenJetPhiRatio->Divide(cjpNum, cjpDen);
0326   }
0327 
0328   // forward jets
0329   dataHist_ = igetter.get(input_dir_data_ + "/Forward-Jets/" + "ForJetsRank");
0330   emulHist_ = igetter.get(input_dir_emul_ + "/Forward-Jets/" + "ForJetsRank");
0331 
0332   if (dataHist_ && emulHist_) {
0333     TH1F *fjrNum = dataHist_->getTH1F();
0334     TH1F *fjrDen = emulHist_->getTH1F();
0335 
0336     TH1F *ForJetRankRatio = ForJetRankComp_->getTH1F();
0337 
0338     ForJetRankRatio->Divide(fjrNum, fjrDen);
0339   }
0340 
0341   dataHist_ = igetter.get(input_dir_data_ + "/Forward-Jets/" + "ForJetsEta");
0342   emulHist_ = igetter.get(input_dir_emul_ + "/Forward-Jets/" + "ForJetsEta");
0343 
0344   if (dataHist_ && emulHist_) {
0345     TH1F *fjeNum = dataHist_->getTH1F();
0346     TH1F *fjeDen = emulHist_->getTH1F();
0347 
0348     TH1F *ForJetEtaRatio = ForJetEtaComp_->getTH1F();
0349 
0350     ForJetEtaRatio->Divide(fjeNum, fjeDen);
0351   }
0352 
0353   dataHist_ = igetter.get(input_dir_data_ + "/Forward-Jets/" + "ForJetsPhi");
0354   emulHist_ = igetter.get(input_dir_emul_ + "/Forward-Jets/" + "ForJetsPhi");
0355 
0356   if (dataHist_ && emulHist_) {
0357     TH1F *fjpNum = dataHist_->getTH1F();
0358     TH1F *fjpDen = emulHist_->getTH1F();
0359 
0360     TH1F *ForJetPhiRatio = ForJetPhiComp_->getTH1F();
0361 
0362     ForJetPhiRatio->Divide(fjpNum, fjpDen);
0363   }
0364 
0365   // isolated eg
0366 
0367   dataHist_ = igetter.get(input_dir_data_ + "/Isolated-EG/" + "IsoEGsRank");
0368   emulHist_ = igetter.get(input_dir_emul_ + "/Isolated-EG/" + "IsoEGsRank");
0369 
0370   if (dataHist_ && emulHist_) {
0371     TH1F *ierNum = dataHist_->getTH1F();
0372     TH1F *ierDen = emulHist_->getTH1F();
0373 
0374     TH1F *IsoEGRankRatio = IsoEGRankComp_->getTH1F();
0375 
0376     IsoEGRankRatio->Divide(ierNum, ierDen);
0377   }
0378 
0379   dataHist_ = igetter.get(input_dir_data_ + "/Isolated-EG/" + "IsoEGsEta");
0380   emulHist_ = igetter.get(input_dir_emul_ + "/Isolated-EG/" + "IsoEGsEta");
0381 
0382   if (dataHist_ && emulHist_) {
0383     TH1F *ieeNum = dataHist_->getTH1F();
0384     TH1F *ieeDen = emulHist_->getTH1F();
0385 
0386     TH1F *IsoEGEtaRatio = IsoEGEtaComp_->getTH1F();
0387 
0388     IsoEGEtaRatio->Divide(ieeNum, ieeDen);
0389   }
0390 
0391   dataHist_ = igetter.get(input_dir_data_ + "/Isolated-EG/" + "IsoEGsPhi");
0392   emulHist_ = igetter.get(input_dir_emul_ + "/Isolated-EG/" + "IsoEGsPhi");
0393 
0394   if (dataHist_ && emulHist_) {
0395     TH1F *iepNum = dataHist_->getTH1F();
0396     TH1F *iepDen = emulHist_->getTH1F();
0397 
0398     TH1F *IsoEGPhiRatio = IsoEGPhiComp_->getTH1F();
0399 
0400     IsoEGPhiRatio->Divide(iepNum, iepDen);
0401   }
0402 
0403   // non-isolated eg
0404   dataHist_ = igetter.get(input_dir_data_ + "/NonIsolated-EG/" + "NonIsoEGsRank");
0405   emulHist_ = igetter.get(input_dir_emul_ + "/NonIsolated-EG/" + "NonIsoEGsRank");
0406 
0407   if (dataHist_ && emulHist_) {
0408     TH1F *nerNum = dataHist_->getTH1F();
0409     TH1F *nerDen = emulHist_->getTH1F();
0410 
0411     TH1F *NonIsoEGRankRatio = NonIsoEGRankComp_->getTH1F();
0412 
0413     NonIsoEGRankRatio->Divide(nerNum, nerDen);
0414   }
0415 
0416   dataHist_ = igetter.get(input_dir_data_ + "/NonIsolated-EG/" + "NonIsoEGsEta");
0417   emulHist_ = igetter.get(input_dir_emul_ + "/NonIsolated-EG/" + "NonIsoEGsEta");
0418 
0419   if (dataHist_ && emulHist_) {
0420     TH1F *neeNum = dataHist_->getTH1F();
0421     TH1F *neeDen = emulHist_->getTH1F();
0422 
0423     TH1F *NonIsoEGEtaRatio = NonIsoEGEtaComp_->getTH1F();
0424 
0425     NonIsoEGEtaRatio->Divide(neeNum, neeDen);
0426   }
0427 
0428   dataHist_ = igetter.get(input_dir_data_ + "/NonIsolated-EG/" + "NonIsoEGsPhi");
0429   emulHist_ = igetter.get(input_dir_emul_ + "/NonIsolated-EG/" + "NonIsoEGsPhi");
0430 
0431   if (dataHist_ && emulHist_) {
0432     TH1F *nepNum = dataHist_->getTH1F();
0433     TH1F *nepDen = emulHist_->getTH1F();
0434 
0435     TH1F *NonIsoEGPhiRatio = NonIsoEGPhiComp_->getTH1F();
0436 
0437     NonIsoEGPhiRatio->Divide(nepNum, nepDen);
0438   }
0439 
0440   // rlx tau
0441   dataHist_ = igetter.get(input_dir_data_ + "/NonIsolated-Tau/" + "TausRank");
0442   emulHist_ = igetter.get(input_dir_emul_ + "/NonIsolated-Tau/" + "TausRank");
0443 
0444   if (dataHist_ && emulHist_) {
0445     TH1F *trNum = dataHist_->getTH1F();
0446     TH1F *trDen = emulHist_->getTH1F();
0447 
0448     TH1F *TauRankRatio = TauRankComp_->getTH1F();
0449 
0450     TauRankRatio->Divide(trNum, trDen);
0451   }
0452 
0453   dataHist_ = igetter.get(input_dir_data_ + "/NonIsolated-Tau/" + "TausEta");
0454   emulHist_ = igetter.get(input_dir_emul_ + "/NonIsolated-Tau/" + "TausEta");
0455 
0456   if (dataHist_ && emulHist_) {
0457     TH1F *teNum = dataHist_->getTH1F();
0458     TH1F *teDen = emulHist_->getTH1F();
0459 
0460     TH1F *TauEtaRatio = TauEtaComp_->getTH1F();
0461 
0462     TauEtaRatio->Divide(teNum, teDen);
0463   }
0464 
0465   dataHist_ = igetter.get(input_dir_data_ + "/NonIsolated-Tau/" + "TausPhi");
0466   emulHist_ = igetter.get(input_dir_emul_ + "/NonIsolated-Tau/" + "TausPhi");
0467 
0468   if (dataHist_ && emulHist_) {
0469     TH1F *tpNum = dataHist_->getTH1F();
0470     TH1F *tpDen = emulHist_->getTH1F();
0471 
0472     TH1F *TauPhiRatio = TauPhiComp_->getTH1F();
0473 
0474     TauPhiRatio->Divide(tpNum, tpDen);
0475   }
0476 
0477   // iso tau
0478   dataHist_ = igetter.get(input_dir_data_ + "/Isolated-Tau/" + "IsoTausRank");
0479   emulHist_ = igetter.get(input_dir_emul_ + "/Isolated-Tau/" + "IsoTausRank");
0480 
0481   if (dataHist_ && emulHist_) {
0482     TH1F *itrNum = dataHist_->getTH1F();
0483     TH1F *itrDen = emulHist_->getTH1F();
0484 
0485     TH1F *IsoTauRankRatio = IsoTauRankComp_->getTH1F();
0486 
0487     IsoTauRankRatio->Divide(itrNum, itrDen);
0488   }
0489 
0490   dataHist_ = igetter.get(input_dir_data_ + "/Isolated-Tau/" + "IsoTausEta");
0491   emulHist_ = igetter.get(input_dir_emul_ + "/Isolated-Tau/" + "IsoTausEta");
0492 
0493   if (dataHist_ && emulHist_) {
0494     TH1F *iteNum = dataHist_->getTH1F();
0495     TH1F *iteDen = emulHist_->getTH1F();
0496 
0497     TH1F *IsoTauEtaRatio = IsoTauEtaComp_->getTH1F();
0498 
0499     IsoTauEtaRatio->Divide(iteNum, iteDen);
0500   }
0501 
0502   dataHist_ = igetter.get(input_dir_data_ + "/Isolated-Tau/" + "IsoTausPhi");
0503   emulHist_ = igetter.get(input_dir_emul_ + "/Isolated-Tau/" + "IsoTausPhi");
0504 
0505   if (dataHist_ && emulHist_) {
0506     TH1F *itpNum = dataHist_->getTH1F();
0507     TH1F *itpDen = emulHist_->getTH1F();
0508 
0509     TH1F *IsoTauPhiRatio = IsoTauPhiComp_->getTH1F();
0510 
0511     IsoTauPhiRatio->Divide(itpNum, itpDen);
0512   }
0513 
0514   // MET
0515   dataHist_ = igetter.get(input_dir_data_ + "/Energy-Sums/" + "METRank");
0516   emulHist_ = igetter.get(input_dir_emul_ + "/Energy-Sums/" + "METRank");
0517 
0518   if (dataHist_ && emulHist_) {
0519     TH1F *metNum = dataHist_->getTH1F();
0520     TH1F *metDen = emulHist_->getTH1F();
0521 
0522     TH1F *METRatio = METComp_->getTH1F();
0523 
0524     METRatio->Divide(metNum, metDen);
0525   }
0526 
0527   // This causes CMSSW to segfault with a complaint that ROOT cannot divide two
0528   // histograms with different number of bins. Checking the contents of the data
0529   // and emulator histograms, using both GetNbinsX() and GetSize(), it can be
0530   // seen that the reported number of bins is the same. This needs more
0531   // investigation.
0532 
0533   // MET Phi
0534   // dataHist_ = igetter.get(input_dir_data_+"/Energy-Sums/"+"METPhi");
0535   // emulHist_ = igetter.get(input_dir_emul_+"/Energy-Sums/"+"METPhi");
0536 
0537   // if (dataHist_ && emulHist_){
0538   //   TH1F * metphiNum = dataHist_->getTH1F();
0539   //   TH1F * metphiDen = emulHist_->getTH1F();
0540 
0541   //   TH1F * METPhiRatio = METPhiComp_->getTH1F();
0542 
0543   //   std::cout << "data met " << metphiNum->GetNbinsX() << std::endl;
0544   //   std::cout << "emul met " << metphiDen->GetNbinsX() << std::endl;
0545 
0546   //   METPhiRatio->Divide(metphiNum, metphiDen);
0547   // }
0548 
0549   // METHF
0550   dataHist_ = igetter.get(input_dir_data_ + "/Energy-Sums/" + "METHFRank");
0551   emulHist_ = igetter.get(input_dir_emul_ + "/Energy-Sums/" + "METHFRank");
0552 
0553   if (dataHist_ && emulHist_) {
0554     TH1F *methfNum = dataHist_->getTH1F();
0555     TH1F *methfDen = emulHist_->getTH1F();
0556 
0557     TH1F *METHFRatio = METHFComp_->getTH1F();
0558 
0559     METHFRatio->Divide(methfNum, methfDen);
0560   }
0561 
0562   // // METHF Phi
0563   // dataHist_ = igetter.get(input_dir_data_+"/Energy-Sums/"+"METHFPhi");
0564   // emulHist_ = igetter.get(input_dir_emul_+"/Energy-Sums/"+"METHFPhi");
0565 
0566   // if (dataHist_ && emulHist_){
0567   //   TH1F *methfphiNum = dataHist_->getTH1F();
0568   //   TH1F *methfphiDen = emulHist_->getTH1F();
0569 
0570   //   TH1F *METHFPhiRatio = METHFPhiComp_->getTH1F();
0571 
0572   //   METHFPhiRatio->Divide(methfphiNum, methfphiDen);
0573   // }
0574 
0575   // MHT
0576   dataHist_ = igetter.get(input_dir_data_ + "/Energy-Sums/" + "MHTRank");
0577   emulHist_ = igetter.get(input_dir_emul_ + "/Energy-Sums/" + "MHTRank");
0578 
0579   if (dataHist_ && emulHist_) {
0580     TH1F *mhtNum = dataHist_->getTH1F();
0581     TH1F *mhtDen = emulHist_->getTH1F();
0582 
0583     TH1F *MHTRatio = MHTComp_->getTH1F();
0584 
0585     MHTRatio->Divide(mhtNum, mhtDen);
0586   }
0587 
0588   // // MHT Phi
0589   // dataHist_ = igetter.get(input_dir_data_+"/Energy-Sums/"+"MHTPhi");
0590   // emulHist_ = igetter.get(input_dir_emul_+"/Energy-Sums/"+"MHTPhi");
0591 
0592   // if (dataHist_ && emulHist_){
0593   //   TH1F * mhtphiNum = dataHist_->getTH1F();
0594   //   TH1F * mhtphiDen = emulHist_->getTH1F();
0595 
0596   //   TH1F * MHTPhiRatio = MHTPhiComp_->getTH1F();
0597 
0598   //   MHTPhiRatio->Divide(mhtphiNum, mhtphiDen);
0599   // }
0600 
0601   // MHTHF
0602   dataHist_ = igetter.get(input_dir_data_ + "/Energy-Sums/" + "MHTHFRank");
0603   emulHist_ = igetter.get(input_dir_emul_ + "/Energy-Sums/" + "MHTHFRank");
0604 
0605   if (dataHist_ && emulHist_) {
0606     TH1F *mhthfNum = dataHist_->getTH1F();
0607     TH1F *mhthfDen = emulHist_->getTH1F();
0608 
0609     TH1F *MHTHFRatio = MHTHFComp_->getTH1F();
0610 
0611     MHTHFRatio->Divide(mhthfNum, mhthfDen);
0612   }
0613 
0614   // // MHTHF Phi
0615   // dataHist_ = igetter.get(input_dir_data_+"/Energy-Sums/"+"MHTHFPhi");
0616   // emulHist_ = igetter.get(input_dir_emul_+"/Energy-Sums/"+"MHTHFPhi");
0617 
0618   // if (dataHist_ && emulHist_){
0619   //   TH1F *mhthfphiNum = dataHist_->getTH1F();
0620   //   TH1F *mhthfphiDen = emulHist_->getTH1F();
0621 
0622   //   TH1F *MHTHFPhiRatio = MHTHFPhiComp_->getTH1F();
0623 
0624   //   std::cout << "dividing mhthf phi" << std::endl;
0625   //   MHTHFPhiRatio->Divide(mhthfphiNum, mhthfphiDen);
0626   // }
0627 
0628   // ETT
0629   dataHist_ = igetter.get(input_dir_data_ + "/Energy-Sums/" + "ETTRank");
0630   emulHist_ = igetter.get(input_dir_emul_ + "/Energy-Sums/" + "ETTRank");
0631 
0632   if (dataHist_ && emulHist_) {
0633     TH1F *ettNum = dataHist_->getTH1F();
0634     TH1F *ettDen = emulHist_->getTH1F();
0635 
0636     TH1F *ETTRatio = ETTComp_->getTH1F();
0637 
0638     ETTRatio->Divide(ettNum, ettDen);
0639   }
0640 
0641   // ETTEM
0642   dataHist_ = igetter.get(input_dir_data_ + "/Energy-Sums/" + "ETTEMRank");
0643   emulHist_ = igetter.get(input_dir_emul_ + "/Energy-Sums/" + "ETTEMRank");
0644 
0645   if (dataHist_ && emulHist_) {
0646     TH1F *ettemNum = dataHist_->getTH1F();
0647     TH1F *ettemDen = emulHist_->getTH1F();
0648 
0649     TH1F *ETTEMRatio = ETTEMComp_->getTH1F();
0650 
0651     ETTEMRatio->Divide(ettemNum, ettemDen);
0652   }
0653 
0654   // HTT
0655   dataHist_ = igetter.get(input_dir_data_ + "/Energy-Sums/" + "HTTRank");
0656   emulHist_ = igetter.get(input_dir_emul_ + "/Energy-Sums/" + "HTTRank");
0657 
0658   if (dataHist_ && emulHist_) {
0659     TH1F *httNum = dataHist_->getTH1F();
0660     TH1F *httDen = emulHist_->getTH1F();
0661 
0662     TH1F *HTTRatio = HTTComp_->getTH1F();
0663 
0664     HTTRatio->Divide(httNum, httDen);
0665   }
0666 
0667   // MBHFP0
0668   dataHist_ = igetter.get(input_dir_data_ + "/Energy-Sums/" + "MinBiasHFP0");
0669   emulHist_ = igetter.get(input_dir_emul_ + "/Energy-Sums/" + "MinBiasHFP0");
0670 
0671   if (dataHist_ && emulHist_) {
0672     TH1F *mbhfp0Num = dataHist_->getTH1F();
0673     TH1F *mbhfp0Den = emulHist_->getTH1F();
0674 
0675     TH1F *MBHFP0Ratio = MinBiasHFP0Comp_->getTH1F();
0676 
0677     MBHFP0Ratio->Divide(mbhfp0Num, mbhfp0Den);
0678   }
0679 
0680   // MBHFM0
0681   dataHist_ = igetter.get(input_dir_data_ + "/Energy-Sums/" + "MinBiasHFM0");
0682   emulHist_ = igetter.get(input_dir_emul_ + "/Energy-Sums/" + "MinBiasHFM0");
0683 
0684   if (dataHist_ && emulHist_) {
0685     TH1F *mbhfm0Num = dataHist_->getTH1F();
0686     TH1F *mbhfm0Den = emulHist_->getTH1F();
0687 
0688     TH1F *MBHFM0Ratio = MinBiasHFM0Comp_->getTH1F();
0689 
0690     MBHFM0Ratio->Divide(mbhfm0Num, mbhfm0Den);
0691   }
0692 
0693   // MBHFP1
0694   dataHist_ = igetter.get(input_dir_data_ + "/Energy-Sums/" + "MinBiasHFP1");
0695   emulHist_ = igetter.get(input_dir_emul_ + "/Energy-Sums/" + "MinBiasHFP1");
0696 
0697   if (dataHist_ && emulHist_) {
0698     TH1F *mbhfp1Num = dataHist_->getTH1F();
0699     TH1F *mbhfp1Den = emulHist_->getTH1F();
0700 
0701     TH1F *MBHFP1Ratio = MinBiasHFP1Comp_->getTH1F();
0702 
0703     MBHFP1Ratio->Divide(mbhfp1Num, mbhfp1Den);
0704   }
0705 
0706   // MBHFM1
0707   dataHist_ = igetter.get(input_dir_data_ + "/Energy-Sums/" + "MinBiasHFM1");
0708   emulHist_ = igetter.get(input_dir_emul_ + "/Energy-Sums/" + "MinBiasHFM1");
0709 
0710   if (dataHist_ && emulHist_) {
0711     TH1F *mbhfm1Num = dataHist_->getTH1F();
0712     TH1F *mbhfm1Den = emulHist_->getTH1F();
0713 
0714     TH1F *MBHFM1Ratio = MinBiasHFM1Comp_->getTH1F();
0715 
0716     MBHFM1Ratio->Divide(mbhfm1Num, mbhfm1Den);
0717   }
0718 
0719   // TowerCount
0720   dataHist_ = igetter.get(input_dir_data_ + "/Energy-Sums/" + "TowCount");
0721   emulHist_ = igetter.get(input_dir_emul_ + "/Energy-Sums/" + "TowCount");
0722 
0723   if (dataHist_ && emulHist_) {
0724     TH1F *towCountNum = dataHist_->getTH1F();
0725     TH1F *towCountDen = emulHist_->getTH1F();
0726 
0727     TH1F *TowCountRatio = TowerCountComp_->getTH1F();
0728 
0729     TowCountRatio->Divide(towCountNum, towCountDen);
0730   }
0731 }