00001 #include <cmath>
00002 #include <algorithm>
00003 #include <utility>
00004 #include <cstring>
00005 #include <boost/foreach.hpp>
00006
00007 #include <TTree.h>
00008
00009 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00010 #include "FWCore/Framework/interface/ESHandle.h"
00011 #include "FWCore/Framework/interface/EventSetup.h"
00012 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00013
00014 #include "DataFormats/Common/interface/View.h"
00015 #include "DataFormats/JetReco/interface/Jet.h"
00016 #include "DataFormats/BTauReco/interface/JetTag.h"
00017
00018 #include "HLTrigger/HLTanalyzers/interface/HLTBJet.h"
00019
00020 static const size_t kMaxBJets = 10;
00021
00022 #include "HLTMessages.h"
00023
00024 HLTBJet::HLTBJet()
00025 {
00026
00027 NohBJetL2 = 0;
00028 ohBJetL2Energy = new float[kMaxBJets];
00029 ohBJetL2Et = new float[kMaxBJets];
00030 ohBJetL2Pt = new float[kMaxBJets];
00031 ohBJetL2Eta = new float[kMaxBJets];
00032 ohBJetL2Phi = new float[kMaxBJets];
00033
00034
00035 NohBJetL2Corrected = 0;
00036 ohBJetL2CorrectedEnergy = new float[kMaxBJets];
00037 ohBJetL2CorrectedEt = new float[kMaxBJets];
00038 ohBJetL2CorrectedPt = new float[kMaxBJets];
00039 ohBJetL2CorrectedEta = new float[kMaxBJets];
00040 ohBJetL2CorrectedPhi = new float[kMaxBJets];
00041
00042
00043 NohBJetL2CorrectedL1FastJet = 0;
00044 ohBJetL2CorrectedEnergyL1FastJet = new float[kMaxBJets];
00045 ohBJetL2CorrectedEtL1FastJet = new float[kMaxBJets];
00046 ohBJetL2CorrectedPtL1FastJet = new float[kMaxBJets];
00047 ohBJetL2CorrectedEtaL1FastJet = new float[kMaxBJets];
00048 ohBJetL2CorrectedPhiL1FastJet = new float[kMaxBJets];
00049
00050
00051 NohpfBJetL2 = 0;
00052 ohpfBJetL2Energy = new float[kMaxBJets];
00053 ohpfBJetL2Et = new float[kMaxBJets];
00054 ohpfBJetL2Pt = new float[kMaxBJets];
00055 ohpfBJetL2Eta = new float[kMaxBJets];
00056 ohpfBJetL2Phi = new float[kMaxBJets];
00057
00058
00059 ohBJetIPL25Tag = new float[kMaxBJets];
00060 ohBJetIPL3Tag = new float[kMaxBJets];
00061
00062
00063 ohBJetIPL25TagL1FastJet = new float[kMaxBJets];
00064 ohBJetIPL3TagL1FastJet = new float[kMaxBJets];
00065
00066
00067 ohpfBJetIPL3Tag = new float[kMaxBJets];
00068
00069
00070 ohBJetIPL25TagSingleTrack = new float[kMaxBJets];
00071 ohBJetIPL3TagSingleTrack = new float[kMaxBJets];
00072 ohBJetIPL25TagSingleTrackL1FastJet = new float[kMaxBJets];
00073 ohBJetIPL3TagSingleTrackL1FastJet = new float[kMaxBJets];
00074
00075
00076
00077 ohBJetPerfL25Tag = new int[kMaxBJets];
00078 ohBJetPerfL3Tag = new int[kMaxBJets];
00079
00080
00081 ohBJetPerfL25TagL1FastJet = new int[kMaxBJets];
00082 ohBJetPerfL3TagL1FastJet = new int[kMaxBJets];
00083 }
00084
00085 void HLTBJet::clear()
00086 {
00087 NohBJetL2 = 0;
00088 NohBJetL2Corrected = 0;
00089 std::memset(ohBJetL2Energy, '\0', kMaxBJets * sizeof(float));
00090 std::memset(ohBJetL2Et, '\0', kMaxBJets * sizeof(float));
00091 std::memset(ohBJetL2Et, '\0', kMaxBJets * sizeof(float));
00092 std::memset(ohBJetL2Pt, '\0', kMaxBJets * sizeof(float));
00093 std::memset(ohBJetL2Eta, '\0', kMaxBJets * sizeof(float));
00094 std::memset(ohBJetL2Phi, '\0', kMaxBJets * sizeof(float));
00095 std::memset(ohBJetL2CorrectedEnergy, '\0', kMaxBJets * sizeof(float));
00096 std::memset(ohBJetL2CorrectedEt, '\0', kMaxBJets * sizeof(float));
00097 std::memset(ohBJetL2CorrectedPt, '\0', kMaxBJets * sizeof(float));
00098 std::memset(ohBJetL2CorrectedEta, '\0', kMaxBJets * sizeof(float));
00099 std::memset(ohBJetL2CorrectedPhi, '\0', kMaxBJets * sizeof(float));
00100 std::memset(ohBJetL2CorrectedEnergyL1FastJet, '\0', kMaxBJets * sizeof(float));
00101 std::memset(ohBJetL2CorrectedEtL1FastJet, '\0', kMaxBJets * sizeof(float));
00102 std::memset(ohBJetL2CorrectedPtL1FastJet, '\0', kMaxBJets * sizeof(float));
00103 std::memset(ohBJetL2CorrectedEtaL1FastJet, '\0', kMaxBJets * sizeof(float));
00104 std::memset(ohBJetL2CorrectedPhiL1FastJet, '\0', kMaxBJets * sizeof(float));
00105 std::memset(ohpfBJetL2Energy, '\0', kMaxBJets * sizeof(float));
00106 std::memset(ohpfBJetL2Et, '\0', kMaxBJets * sizeof(float));
00107 std::memset(ohpfBJetL2Et, '\0', kMaxBJets * sizeof(float));
00108 std::memset(ohpfBJetL2Pt, '\0', kMaxBJets * sizeof(float));
00109 std::memset(ohpfBJetL2Eta, '\0', kMaxBJets * sizeof(float));
00110 std::memset(ohpfBJetL2Phi, '\0', kMaxBJets * sizeof(float));
00111
00112 std::memset(ohBJetIPL25Tag, '\0', kMaxBJets * sizeof(float));
00113 std::memset(ohBJetIPL3Tag, '\0', kMaxBJets * sizeof(float));
00114 std::memset(ohBJetIPL25TagL1FastJet, '\0', kMaxBJets * sizeof(float));
00115 std::memset(ohBJetIPL3TagL1FastJet, '\0', kMaxBJets * sizeof(float));
00116 std::memset(ohpfBJetIPL3Tag, '\0', kMaxBJets * sizeof(float));
00117
00118 std::memset(ohBJetIPL25TagSingleTrack, '\0', kMaxBJets * sizeof(float));
00119 std::memset(ohBJetIPL3TagSingleTrack, '\0', kMaxBJets * sizeof(float));
00120 std::memset(ohBJetIPL25TagSingleTrackL1FastJet, '\0', kMaxBJets * sizeof(float));
00121 std::memset(ohBJetIPL3TagSingleTrackL1FastJet, '\0', kMaxBJets * sizeof(float));
00122
00123 std::memset(ohBJetPerfL25Tag, '\0', kMaxBJets * sizeof(int));
00124 std::memset(ohBJetPerfL3Tag, '\0', kMaxBJets * sizeof(int));
00125 std::memset(ohBJetPerfL25TagL1FastJet, '\0', kMaxBJets * sizeof(int));
00126 std::memset(ohBJetPerfL3TagL1FastJet, '\0', kMaxBJets * sizeof(int));
00127 }
00128
00129 HLTBJet::~HLTBJet()
00130 {
00131 delete[] ohBJetL2Energy;
00132 delete[] ohBJetL2Et;
00133 delete[] ohBJetL2Pt;
00134 delete[] ohBJetL2Eta;
00135 delete[] ohBJetL2Phi;
00136 delete[] ohBJetL2CorrectedEnergy;
00137 delete[] ohBJetL2CorrectedEt;
00138 delete[] ohBJetL2CorrectedPt;
00139 delete[] ohBJetL2CorrectedEta;
00140 delete[] ohBJetL2CorrectedPhi;
00141 delete[] ohBJetL2CorrectedEnergyL1FastJet;
00142 delete[] ohBJetL2CorrectedEtL1FastJet;
00143 delete[] ohBJetL2CorrectedPtL1FastJet;
00144 delete[] ohBJetL2CorrectedEtaL1FastJet;
00145 delete[] ohBJetL2CorrectedPhiL1FastJet;
00146 delete[] ohpfBJetL2Energy;
00147 delete[] ohpfBJetL2Et;
00148 delete[] ohpfBJetL2Pt;
00149 delete[] ohpfBJetL2Eta;
00150 delete[] ohpfBJetL2Phi;
00151 delete[] ohBJetIPL25Tag;
00152 delete[] ohBJetIPL3Tag;
00153 delete[] ohBJetIPL25TagL1FastJet;
00154 delete[] ohBJetIPL3TagL1FastJet;
00155 delete[] ohpfBJetIPL3Tag;
00156 delete[] ohBJetIPL25TagSingleTrack;
00157 delete[] ohBJetIPL3TagSingleTrack;
00158 delete[] ohBJetIPL25TagSingleTrackL1FastJet;
00159 delete[] ohBJetIPL3TagSingleTrackL1FastJet;
00160 delete[] ohBJetPerfL25Tag;
00161 delete[] ohBJetPerfL3Tag;
00162 delete[] ohBJetPerfL25TagL1FastJet;
00163 delete[] ohBJetPerfL3TagL1FastJet;
00164 }
00165
00166 void HLTBJet::setup(const edm::ParameterSet & config, TTree * tree)
00167 {
00168
00169 if (tree) {
00170 tree->Branch("NohBJetL2", & NohBJetL2, "NohBJetL2/I");
00171 tree->Branch("ohBJetL2Energy", ohBJetL2Energy, "ohBJetL2Energy[NohBJetL2]/F");
00172 tree->Branch("ohBJetL2Et", ohBJetL2Et, "ohBJetL2Et[NohBJetL2]/F");
00173 tree->Branch("ohBJetL2Pt", ohBJetL2Pt, "ohBJetL2Pt[NohBJetL2]/F");
00174 tree->Branch("ohBJetL2Eta", ohBJetL2Eta, "ohBJetL2Eta[NohBJetL2]/F");
00175 tree->Branch("ohBJetL2Phi", ohBJetL2Phi, "ohBJetL2Phi[NohBJetL2]/F");
00176
00177 tree->Branch("NohBJetL2Corrected", & NohBJetL2Corrected, "NohBJetL2Corrected/I");
00178 tree->Branch("ohBJetL2CorrectedEnergy", ohBJetL2CorrectedEnergy, "ohBJetL2CorrectedEnergy[NohBJetL2Corrected]/F");
00179 tree->Branch("ohBJetL2CorrectedEt", ohBJetL2CorrectedEt, "ohBJetL2CorrectedEt[NohBJetL2Corrected]/F");
00180 tree->Branch("ohBJetL2CorrectedPt", ohBJetL2CorrectedPt, "ohBJetL2CorrectedPt[NohBJetL2Corrected]/F");
00181 tree->Branch("ohBJetL2CorrectedEta", ohBJetL2CorrectedEta, "ohBJetL2CorrectedEta[NohBJetL2Corrected]/F");
00182 tree->Branch("ohBJetL2CorrectedPhi", ohBJetL2CorrectedPhi, "ohBJetL2CorrectedPhi[NohBJetL2Corrected]/F");
00183
00184 tree->Branch("NohBJetL2CorrectedL1FastJet", & NohBJetL2CorrectedL1FastJet, "NohBJetL2CorrectedL1FastJet/I");
00185 tree->Branch("ohBJetL2CorrectedEnergyL1FastJet", ohBJetL2CorrectedEnergyL1FastJet, "ohBJetL2CorrectedEnergyL1FastJet[NohBJetL2CorrectedL1FastJet]/F");
00186 tree->Branch("ohBJetL2CorrectedEtL1FastJet", ohBJetL2CorrectedEtL1FastJet, "ohBJetL2CorrectedEtL1FastJet[NohBJetL2CorrectedL1FastJet]/F");
00187 tree->Branch("ohBJetL2CorrectedPtL1FastJet", ohBJetL2CorrectedPtL1FastJet, "ohBJetL2CorrectedPtL1FastJet[NohBJetL2CorrectedL1FastJet]/F");
00188 tree->Branch("ohBJetL2CorrectedEtaL1FastJet", ohBJetL2CorrectedEtaL1FastJet, "ohBJetL2CorrectedEtaL1FastJet[NohBJetL2CorrectedL1FastJet]/F");
00189 tree->Branch("ohBJetL2CorrectedPhiL1FastJet", ohBJetL2CorrectedPhiL1FastJet, "ohBJetL2CorrectedPhiL1FastJet[NohBJetL2CorrectedL1FastJet]/F");
00190
00191 tree->Branch("NohpfBJetL2", & NohpfBJetL2, "NohpfBJetL2/I");
00192 tree->Branch("ohpfBJetL2Energy", ohpfBJetL2Energy, "ohpfBJetL2Energy[NohpfBJetL2]/F");
00193 tree->Branch("ohpfBJetL2Et", ohpfBJetL2Et, "ohpfBJetL2Et[NohpfBJetL2]/F");
00194 tree->Branch("ohpfBJetL2Pt", ohpfBJetL2Pt, "ohpfBJetL2Pt[NohpfBJetL2]/F");
00195 tree->Branch("ohpfBJetL2Eta", ohpfBJetL2Eta, "ohpfBJetL2Eta[NohpfBJetL2]/F");
00196 tree->Branch("ohpfBJetL2Phi", ohpfBJetL2Phi, "ohpfBJetL2Phi[NohpfBJetL2]/F");
00197
00198 tree->Branch("ohBJetIPL25Tag", ohBJetIPL25Tag, "ohBJetIPL25Tag[NohBJetL2Corrected]/F");
00199 tree->Branch("ohBJetIPL3Tag", ohBJetIPL3Tag, "ohBJetIPL3Tag[NohBJetL2Corrected]/F");
00200 tree->Branch("ohBJetIPL25TagL1FastJet", ohBJetIPL25TagL1FastJet, "ohBJetIPL25TagL1FastJet[NohBJetL2CorrectedL1FastJet]/F");
00201 tree->Branch("ohBJetIPL3TagL1FastJet", ohBJetIPL3TagL1FastJet, "ohBJetIPL3TagL1FastJet[NohBJetL2CorrectedL1FastJet]/F");
00202 tree->Branch("ohpfBJetIPL3Tag", ohpfBJetIPL3Tag, "ohpfBJetIPL3Tag[NohpfBJetL2]/F");
00203
00204 tree->Branch("ohBJetIPL25TagSingleTrack", ohBJetIPL25TagSingleTrack, "ohBJetIPL25TagSingleTrack[NohBJetL2Corrected]/F");
00205 tree->Branch("ohBJetIPL3TagSingleTrack", ohBJetIPL3TagSingleTrack, "ohBJetIPL3TagSingleTrack[NohBJetL2Corrected]/F");
00206 tree->Branch("ohBJetIPL25TagSingleTrackL1FastJet", ohBJetIPL25TagSingleTrackL1FastJet, "ohBJetIPL25TagSingleTrackL1FastJet[NohBJetL2CorrectedL1FastJet]/F");
00207 tree->Branch("ohBJetIPL3TagSingleTrackL1FastJet", ohBJetIPL3TagSingleTrackL1FastJet, "ohBJetIPL3TagSingleTrackL1FastJet[NohBJetL2CorrectedL1FastJet]/F");
00208
00209 tree->Branch("ohBJetPerfL25Tag", ohBJetPerfL25Tag, "ohBJetPerfL25Tag[NohBJetL2Corrected]/I");
00210 tree->Branch("ohBJetPerfL3Tag", ohBJetPerfL3Tag, "ohBJetPerfL3Tag[NohBJetL2Corrected]/I");
00211 tree->Branch("ohBJetPerfL25TagL1FastJet", ohBJetPerfL25TagL1FastJet, "ohBJetPerfL25TagL1FastJet[NohBJetL2CorrectedL1FastJet]/I");
00212 tree->Branch("ohBJetPerfL3TagL1FastJet", ohBJetPerfL3TagL1FastJet, "ohBJetPerfL3TagL1FastJet[NohBJetL2CorrectedL1FastJet]/I");
00213 }
00214 }
00215
00216 void HLTBJet::analyze(
00217 const edm::Handle<edm::View<reco::Jet> > & rawBJets,
00218 const edm::Handle<edm::View<reco::Jet> > & correctedBJets,
00219 const edm::Handle<edm::View<reco::Jet> > & correctedBJetsL1FastJet,
00220 const edm::Handle<edm::View<reco::Jet> > & pfBJets,
00221 const edm::Handle<reco::JetTagCollection> & lifetimeBJetsL25,
00222 const edm::Handle<reco::JetTagCollection> & lifetimeBJetsL3,
00223 const edm::Handle<reco::JetTagCollection> & lifetimeBJetsL25L1FastJet,
00224 const edm::Handle<reco::JetTagCollection> & lifetimeBJetsL3L1FastJet,
00225 const edm::Handle<reco::JetTagCollection> & lifetimePFBJetsL3,
00226 const edm::Handle<reco::JetTagCollection> & lifetimeBJetsL25SingleTrack,
00227 const edm::Handle<reco::JetTagCollection> & lifetimeBJetsL3SingleTrack,
00228 const edm::Handle<reco::JetTagCollection> & lifetimeBJetsL25SingleTrackL1FastJet,
00229 const edm::Handle<reco::JetTagCollection> & lifetimeBJetsL3SingleTrackL1FastJet,
00230 const edm::Handle<reco::JetTagCollection> & performanceBJetsL25,
00231 const edm::Handle<reco::JetTagCollection> & performanceBJetsL3,
00232 const edm::Handle<reco::JetTagCollection> & performanceBJetsL25L1FastJet,
00233 const edm::Handle<reco::JetTagCollection> & performanceBJetsL3L1FastJet,
00234 TTree * tree)
00235 {
00236
00237 clear();
00238
00239
00240 if (rawBJets.isValid())
00241 analyseJets(* rawBJets);
00242
00243 if (correctedBJets.isValid())
00244 analyseCorrectedJets(* correctedBJets);
00245
00246 if (correctedBJetsL1FastJet.isValid())
00247 analyseCorrectedJetsL1FastJet(* correctedBJetsL1FastJet);
00248
00249 if (pfBJets.isValid())
00250 analysePFJets(* pfBJets);
00251
00252 if (correctedBJets.isValid() and lifetimeBJetsL25.isValid() and lifetimeBJetsL3.isValid())
00253 analyseLifetime(* correctedBJets, * lifetimeBJetsL25, * lifetimeBJetsL3);
00254
00255 if (correctedBJetsL1FastJet.isValid() and lifetimeBJetsL25L1FastJet.isValid() and lifetimeBJetsL3L1FastJet.isValid())
00256 analyseLifetimeL1FastJet(* correctedBJetsL1FastJet, * lifetimeBJetsL25L1FastJet, * lifetimeBJetsL3L1FastJet);
00257
00258 if (pfBJets.isValid() and lifetimePFBJetsL3.isValid())
00259 analyseLifetimePF(* pfBJets, * lifetimePFBJetsL3);
00260
00261 if (correctedBJets.isValid() and lifetimeBJetsL25SingleTrack.isValid() and lifetimeBJetsL3SingleTrack.isValid())
00262 analyseLifetimeSingleTrack(* correctedBJets, * lifetimeBJetsL25SingleTrack, * lifetimeBJetsL3SingleTrack);
00263
00264 if (correctedBJetsL1FastJet.isValid() and lifetimeBJetsL25SingleTrackL1FastJet.isValid() and lifetimeBJetsL3SingleTrackL1FastJet.isValid())
00265 analyseLifetimeSingleTrackL1FastJet(* correctedBJetsL1FastJet, * lifetimeBJetsL25SingleTrackL1FastJet, * lifetimeBJetsL3SingleTrackL1FastJet);
00266
00267 if (correctedBJets.isValid() and performanceBJetsL25.isValid() and performanceBJetsL3.isValid())
00268 analysePerformance(* correctedBJets, * performanceBJetsL25, * performanceBJetsL3);
00269
00270 if (correctedBJetsL1FastJet.isValid() and performanceBJetsL25L1FastJet.isValid() and performanceBJetsL3L1FastJet.isValid())
00271 analysePerformanceL1FastJet(* correctedBJetsL1FastJet, * performanceBJetsL25L1FastJet, * performanceBJetsL3L1FastJet);
00272
00273 }
00274
00275 void HLTBJet::analyseJets(const edm::View<reco::Jet> & jets)
00276 {
00277
00278
00279 size_t size = std::min(kMaxBJets, size_t(jets.size()) );
00280 NohBJetL2 = size;
00281 for (size_t i = 0; i < size; ++i) {
00282 ohBJetL2Energy[i] = jets[i].energy();
00283 ohBJetL2Et[i] = jets[i].et();
00284 ohBJetL2Pt[i] = jets[i].pt();
00285 ohBJetL2Eta[i] = jets[i].eta();
00286 ohBJetL2Phi[i] = jets[i].phi();
00287 }
00288 }
00289
00290 void HLTBJet::analyseCorrectedJets(const edm::View<reco::Jet> & jets)
00291 {
00292
00293
00294 size_t size = std::min(kMaxBJets, size_t(jets.size()) );
00295 NohBJetL2Corrected = size;
00296 for (size_t i = 0; i < size; ++i) {
00297 ohBJetL2CorrectedEnergy[i] = jets[i].energy();
00298 ohBJetL2CorrectedEt[i] = jets[i].et();
00299 ohBJetL2CorrectedPt[i] = jets[i].pt();
00300 ohBJetL2CorrectedEta[i] = jets[i].eta();
00301 ohBJetL2CorrectedPhi[i] = jets[i].phi();
00302 }
00303 }
00304
00305 void HLTBJet::analyseCorrectedJetsL1FastJet(const edm::View<reco::Jet> & jets)
00306 {
00307
00308
00309 size_t size = std::min(kMaxBJets, size_t(jets.size()) );
00310 NohBJetL2CorrectedL1FastJet = size;
00311 for (size_t i = 0; i < size; ++i) {
00312 ohBJetL2CorrectedEnergyL1FastJet[i] = jets[i].energy();
00313 ohBJetL2CorrectedEtL1FastJet[i] = jets[i].et();
00314 ohBJetL2CorrectedPtL1FastJet[i] = jets[i].pt();
00315 ohBJetL2CorrectedEtaL1FastJet[i] = jets[i].eta();
00316 ohBJetL2CorrectedPhiL1FastJet[i] = jets[i].phi();
00317 }
00318 }
00319
00320 void HLTBJet::analysePFJets(const edm::View<reco::Jet> & jets)
00321 {
00322
00323
00324 size_t size = std::min(kMaxBJets, size_t(jets.size()) );
00325 NohpfBJetL2 = size;
00326 for (size_t i = 0; i < size; ++i) {
00327 ohpfBJetL2Energy[i] = jets[i].energy();
00328 ohpfBJetL2Et[i] = jets[i].et();
00329 ohpfBJetL2Pt[i] = jets[i].pt();
00330 ohpfBJetL2Eta[i] = jets[i].eta();
00331 ohpfBJetL2Phi[i] = jets[i].phi();
00332 }
00333 }
00334
00335 void HLTBJet::analyseLifetime(
00336 const edm::View<reco::Jet> & jets,
00337 const reco::JetTagCollection & tagsL25,
00338 const reco::JetTagCollection & tagsL3)
00339 {
00340 if (tagsL25.size() != jets.size()) {
00341 edm::LogWarning("OpenHLT") << kBTagLifetimeBJetsL25 << " collection has " << tagsL25.size() << " elements, but " << jets.size() << " where expected from L2" << std::endl;
00342 return;
00343 }
00344 if (tagsL3.size() != jets.size()) {
00345 edm::LogWarning("OpenHLT") << kBTagLifetimeBJetsL3 << " collection has " << tagsL3.size() << " elements, but " << jets.size() << " where expected from L2" << std::endl;
00346 return;
00347 }
00348
00349
00350 size_t size = std::min(kMaxBJets, size_t(jets.size()) );
00351 for (size_t i = 0; i < size; i++) {
00352 ohBJetIPL25Tag[i] = tagsL25[i].second;
00353 ohBJetIPL3Tag[i] = tagsL3[i].second;
00354 }
00355 }
00356
00357 void HLTBJet::analyseLifetimeL1FastJet(
00358 const edm::View<reco::Jet> & jets,
00359 const reco::JetTagCollection & tagsL25,
00360 const reco::JetTagCollection & tagsL3)
00361 {
00362 if (tagsL25.size() != jets.size()) {
00363 edm::LogWarning("OpenHLT") << kBTagLifetimeBJetsL25L1FastJet << " collection has " << tagsL25.size() << " elements, but " << jets.size() << " where expected from L2" << std::endl;
00364 return;
00365 }
00366 if (tagsL3.size() != jets.size()) {
00367 edm::LogWarning("OpenHLT") << kBTagLifetimeBJetsL3L1FastJet << " collection has " << tagsL3.size() << " elements, but " << jets.size() << " where expected from L2" << std::endl;
00368 return;
00369 }
00370
00371
00372 size_t size = std::min(kMaxBJets, size_t(jets.size()) );
00373 for (size_t i = 0; i < size; i++) {
00374 ohBJetIPL25TagL1FastJet[i] = tagsL25[i].second;
00375 ohBJetIPL3TagL1FastJet[i] = tagsL3[i].second;
00376 }
00377 }
00378
00379 void HLTBJet::analyseLifetimePF(
00380 const edm::View<reco::Jet> & jets,
00381 const reco::JetTagCollection & tagsL3)
00382 {
00383 if (tagsL3.size() != jets.size()) {
00384 edm::LogWarning("OpenHLT") << kBTagLifetimePFBJetsL3 << " collection has " << tagsL3.size() << " elements, but " << jets.size() << " where expected from L2" << std::endl;
00385 return;
00386 }
00387
00388
00389 size_t size = std::min(kMaxBJets, size_t(jets.size()) );
00390 for (size_t i = 0; i < size; i++) {
00391 ohpfBJetIPL3Tag[i] = tagsL3[i].second;
00392 }
00393 }
00394
00395 void HLTBJet::analyseLifetimeSingleTrack(
00396 const edm::View<reco::Jet> & jets,
00397 const reco::JetTagCollection & tagsL25,
00398 const reco::JetTagCollection & tagsL3)
00399 {
00400 if (tagsL25.size() != jets.size()) {
00401 edm::LogWarning("OpenHLT") << kBTagLifetimeBJetsL25SingleTrack << " collection has " << tagsL25.size() << " elements, but " << jets.size() << " where expected from L2" << std::endl;
00402 return;
00403 }
00404 if (tagsL3.size() != jets.size()) {
00405 edm::LogWarning("OpenHLT") << kBTagLifetimeBJetsL3SingleTrack << " collection has " << tagsL3.size() << " elements, but " << jets.size() << " where expected from L2" << std::endl;
00406 return;
00407 }
00408
00409
00410 size_t size = std::min(kMaxBJets, size_t(jets.size()) );
00411 for (size_t i = 0; i < size; i++) {
00412 ohBJetIPL25TagSingleTrack[i] = tagsL25[i].second;
00413 ohBJetIPL3TagSingleTrack[i] = tagsL3[i].second;
00414 }
00415 }
00416
00417 void HLTBJet::analyseLifetimeSingleTrackL1FastJet(
00418 const edm::View<reco::Jet> & jets,
00419 const reco::JetTagCollection & tagsL25,
00420 const reco::JetTagCollection & tagsL3)
00421 {
00422 if (tagsL25.size() != jets.size()) {
00423 edm::LogWarning("OpenHLT") << kBTagLifetimeBJetsL25SingleTrackL1FastJet << " collection has " << tagsL25.size() << " elements, but " << jets.size() << " where expected from L2" << std::endl;
00424 return;
00425 }
00426 if (tagsL3.size() != jets.size()) {
00427 edm::LogWarning("OpenHLT") << kBTagLifetimeBJetsL3SingleTrackL1FastJet << " collection has " << tagsL3.size() << " elements, but " << jets.size() << " where expected from L2" << std::endl;
00428 return;
00429 }
00430
00431
00432 size_t size = std::min(kMaxBJets, size_t(jets.size()) );
00433 for (size_t i = 0; i < size; i++) {
00434 ohBJetIPL25TagSingleTrackL1FastJet[i] = tagsL25[i].second;
00435 ohBJetIPL3TagSingleTrackL1FastJet[i] = tagsL3[i].second;
00436 }
00437 }
00438
00439 void HLTBJet::analysePerformance(
00440 const edm::View<reco::Jet> & jets,
00441 const reco::JetTagCollection & tagsL25,
00442 const reco::JetTagCollection & tagsL3)
00443 {
00444 if (tagsL25.size() != jets.size()) {
00445 edm::LogWarning("OpenHLT") << kBTagPerformanceBJetsL25 << " collection has " << tagsL25.size() << " elements, but " << jets.size() << " where expected from L2" << std::endl;
00446 return;
00447 }
00448 if (tagsL3.size() != jets.size()) {
00449 edm::LogWarning("OpenHLT") << kBTagPerformanceBJetsL3 << " collection has " << tagsL3.size() << " elements, but " << jets.size() << " where expected from L2" << std::endl;
00450 return;
00451 }
00452
00453
00454 size_t size = std::min(kMaxBJets, size_t(jets.size()) );
00455 for (size_t i = 0; i < size; i++) {
00456 ohBJetPerfL25Tag[i] = (tagsL25[i].second > 0.) ? 1 : 0;
00457 ohBJetPerfL3Tag[i] = (tagsL3[i].second > 0.) ? 1 : 0;
00458 }
00459 }
00460
00461 void HLTBJet::analysePerformanceL1FastJet(
00462 const edm::View<reco::Jet> & jets,
00463 const reco::JetTagCollection & tagsL25,
00464 const reco::JetTagCollection & tagsL3)
00465 {
00466 if (tagsL25.size() != jets.size()) {
00467 edm::LogWarning("OpenHLT") << kBTagPerformanceBJetsL25L1FastJet << " collection has " << tagsL25.size() << " elements, but " << jets.size() << " where expected from L2" << std::endl;
00468 return;
00469 }
00470 if (tagsL3.size() != jets.size()) {
00471 edm::LogWarning("OpenHLT") << kBTagPerformanceBJetsL3L1FastJet << " collection has " << tagsL3.size() << " elements, but " << jets.size() << " where expected from L2" << std::endl;
00472 return;
00473 }
00474
00475
00476 size_t size = std::min(kMaxBJets, size_t(jets.size()) );
00477 for (size_t i = 0; i < size; i++) {
00478
00479 ohBJetPerfL25TagL1FastJet[i] = (tagsL25[i].second > 0.) ? 1 : 0;
00480 ohBJetPerfL3TagL1FastJet[i] = (tagsL3[i].second > 0.) ? 1 : 0;
00481 }
00482 }