00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "DQMOffline/JetMET/interface/JetMETAnalyzer.h"
00011
00012 #include "FWCore/Framework/interface/Event.h"
00013 #include "FWCore/Framework/interface/EventSetup.h"
00014 #include "FWCore/Common/interface/TriggerNames.h"
00015
00016 #include "DataFormats/METReco/interface/CaloMETFwd.h"
00017 #include "DataFormats/METReco/interface/METFwd.h"
00018 #include "DataFormats/METReco/interface/PFMETFwd.h"
00019 #include "DataFormats/JetReco/interface/CaloJetCollection.h"
00020 #include "DataFormats/JetReco/interface/CaloJet.h"
00021 #include "DataFormats/JetReco/interface/JPTJetCollection.h"
00022 #include "DataFormats/JetReco/interface/PFJetCollection.h"
00023 #include "DataFormats/JetReco/interface/PFJet.h"
00024
00025 #include "DataFormats/Common/interface/Handle.h"
00026 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00027
00028 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutSetupFwd.h"
00029 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutSetup.h"
00030 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutRecord.h"
00031
00032 #include <string>
00033 using namespace edm;
00034
00035 #define DEBUG 0
00036
00037
00038 JetMETAnalyzer::JetMETAnalyzer(const edm::ParameterSet& pSet) {
00039
00040 parameters = pSet;
00041
00042
00043 theAKJetCollectionLabel = parameters.getParameter<edm::InputTag>("AKJetsCollectionLabel");
00044 theSCJetCollectionLabel = parameters.getParameter<edm::InputTag>("SCJetsCollectionLabel");
00045 theICJetCollectionLabel = parameters.getParameter<edm::InputTag>("ICJetsCollectionLabel");
00046 theJPTJetCollectionLabel = parameters.getParameter<edm::InputTag>("JPTJetsCollectionLabel");
00047 thePFJetCollectionLabel = parameters.getParameter<edm::InputTag>("PFJetsCollectionLabel");
00048
00049 theTriggerResultsLabel = parameters.getParameter<edm::InputTag>("TriggerResultsLabel");
00050
00051 theJetAnalyzerFlag = parameters.getUntrackedParameter<bool>("DoJetAnalysis", true);
00052 theJetCleaningFlag = parameters.getUntrackedParameter<bool>("DoJetCleaning", true);
00053 theIConeJetAnalyzerFlag = parameters.getUntrackedParameter<bool>("DoIterativeCone", false);
00054 theSConeJetAnalyzerFlag = parameters.getUntrackedParameter<bool>("DoSisCone", false);
00055 theJetPtAnalyzerFlag = parameters.getUntrackedParameter<bool>("DoJetPtAnalysis", false);
00056 theJetPtCleaningFlag = parameters.getUntrackedParameter<bool>("DoJetPtCleaning", false);
00057 theJPTJetAnalyzerFlag = parameters.getUntrackedParameter<bool>("DoJPTJetAnalysis", false);
00058 theJPTJetCleaningFlag = parameters.getUntrackedParameter<bool>("DoJPTJetCleaning", true);
00059 thePFJetAnalyzerFlag = parameters.getUntrackedParameter<bool>("DoPFJetAnalysis", false);
00060 thePFJetCleaningFlag = parameters.getUntrackedParameter<bool>("DoPFJetCleaning", true);
00061
00062 theDiJetSelectionFlag = parameters.getUntrackedParameter<bool>("DoDiJetSelection", true);
00063
00064 theCaloMETAnalyzerFlag = parameters.getUntrackedParameter<bool>("DoCaloMETAnalysis",true);
00065 theTcMETAnalyzerFlag = parameters.getUntrackedParameter<bool>("DoTcMETAnalysis", true);
00066 theMuCorrMETAnalyzerFlag = parameters.getUntrackedParameter<bool>("DoMuCorrMETAnalysis", true);
00067 thePfMETAnalyzerFlag = parameters.getUntrackedParameter<bool>("DoPfMETAnalysis", true);
00068 theHTMHTAnalyzerFlag = parameters.getUntrackedParameter<bool>("DoHTMHTAnalysis", true);
00069
00070
00071
00072
00073 DCSFilterCalo = new JetMETDQMDCSFilter(parameters.getParameter<ParameterSet>("DCSFilterCalo"));
00074 DCSFilterPF = new JetMETDQMDCSFilter(parameters.getParameter<ParameterSet>("DCSFilterPF"));
00075 DCSFilterJPT = new JetMETDQMDCSFilter(parameters.getParameter<ParameterSet>("DCSFilterJPT"));
00076 DCSFilterAll = new JetMETDQMDCSFilter(parameters.getParameter<ParameterSet>("DCSFilterAll"));
00077
00078
00079
00080 if(theJetAnalyzerFlag) {
00081 theAKJetAnalyzer = new JetAnalyzer(parameters.getParameter<ParameterSet>("jetAnalysis"));
00082 theAKJetAnalyzer->setSource("AntiKtJets");
00083 if(theSConeJetAnalyzerFlag) {
00084 theSCJetAnalyzer = new JetAnalyzer(parameters.getParameter<ParameterSet>("jetAnalysis"));
00085 theSCJetAnalyzer->setSource("SISConeJets");
00086 }
00087 if(theIConeJetAnalyzerFlag){
00088 theICJetAnalyzer = new JetAnalyzer(parameters.getParameter<ParameterSet>("jetAnalysis"));
00089 theICJetAnalyzer->setSource("IterativeConeJets");
00090 }
00091 }
00092
00093 if(theJetCleaningFlag) {
00094 theCleanedAKJetAnalyzer = new JetAnalyzer(parameters.getParameter<ParameterSet>("CleanedjetAnalysis"));
00095 theCleanedAKJetAnalyzer->setSource("CleanedAntiKtJets");
00096 if(theSConeJetAnalyzerFlag){
00097 theCleanedSCJetAnalyzer = new JetAnalyzer(parameters.getParameter<ParameterSet>("CleanedjetAnalysis"));
00098 theCleanedSCJetAnalyzer->setSource("CleanedSISConeJets");
00099 }
00100 if(theIConeJetAnalyzerFlag){
00101 theCleanedICJetAnalyzer = new JetAnalyzer(parameters.getParameter<ParameterSet>("CleanedjetAnalysis"));
00102 theCleanedICJetAnalyzer->setSource("CleanedIterativeConeJets");
00103 }
00104 }
00105
00106 if(theDiJetSelectionFlag){
00107 theDiJetAnalyzer = new JetAnalyzer(parameters.getParameter<ParameterSet>("DijetAnalysis"));
00108 theDiJetAnalyzer->setSource("DiJets");
00109 }
00110
00111
00112 if(theJetPtAnalyzerFlag ) {
00113 thePtAKJetAnalyzer = new JetPtAnalyzer(parameters.getParameter<ParameterSet>("PtAnalysis"));
00114 thePtAKJetAnalyzer->setSource("PtAnalysisAntiKtJets");
00115 if(theSConeJetAnalyzerFlag){
00116 thePtSCJetAnalyzer = new JetPtAnalyzer(parameters.getParameter<ParameterSet>("PtAnalysis"));
00117 thePtSCJetAnalyzer->setSource("PtAnalysisSISConeJets");
00118 }
00119 if(theIConeJetAnalyzerFlag){
00120 thePtICJetAnalyzer = new JetPtAnalyzer(parameters.getParameter<ParameterSet>("PtAnalysis"));
00121 thePtICJetAnalyzer->setSource("PtAnalysisIterativeConeJets");
00122 }
00123 }
00124
00125 if(theJetPtCleaningFlag ) {
00126 theCleanedPtAKJetAnalyzer = new JetPtAnalyzer(parameters.getParameter<ParameterSet>("CleanedPtAnalysis"));
00127 theCleanedPtAKJetAnalyzer->setSource("PtAnalysisCleanedAntiKtJets");
00128 if(theSConeJetAnalyzerFlag){
00129 theCleanedPtSCJetAnalyzer = new JetPtAnalyzer(parameters.getParameter<ParameterSet>("CleanedPtAnalysis"));
00130 theCleanedPtSCJetAnalyzer->setSource("PtAnalysisCleanedSISConeJets");
00131 }
00132 if(theIConeJetAnalyzerFlag){
00133 theCleanedPtICJetAnalyzer = new JetPtAnalyzer(parameters.getParameter<ParameterSet>("CleanedPtAnalysis"));
00134 theCleanedPtICJetAnalyzer->setSource("PtAnalysisCleanedIterativeConeJets");
00135 }
00136 }
00137
00138
00139 if(theJPTJetAnalyzerFlag) {
00140 theJPTJetAnalyzer = new JPTJetAnalyzer(parameters.getParameter<ParameterSet>("JPTJetAnalysis"));
00141 }
00142
00143 if(theJPTJetCleaningFlag) {
00144 theCleanedJPTJetAnalyzer = new JPTJetAnalyzer(parameters.getParameter<ParameterSet>("CleanedJPTJetAnalysis"));
00145 }
00146
00147
00148 if(thePFJetAnalyzerFlag){
00149 thePFJetAnalyzer = new PFJetAnalyzer(parameters.getParameter<ParameterSet>("pfJetAnalysis"));
00150 thePFJetAnalyzer->setSource("uncPFJets");
00151 }
00152
00153 if(thePFJetCleaningFlag) {
00154 theCleanedPFJetAnalyzer = new PFJetAnalyzer(parameters.getParameter<ParameterSet>("CleanedpfJetAnalysis"));
00155 theCleanedPFJetAnalyzer->setSource("PFJets");
00156 }
00157
00158 if(theDiJetSelectionFlag){
00159 thePFDiJetAnalyzer = new PFJetAnalyzer(parameters.getParameter<ParameterSet>("PFDijetAnalysis"));
00160 thePFDiJetAnalyzer->setSource("PFDiJets");
00161 }
00162
00163 edm::ParameterSet highptjetparms = parameters.getParameter<edm::ParameterSet>("highPtJetTrigger");
00164 edm::ParameterSet lowptjetparms = parameters.getParameter<edm::ParameterSet>("lowPtJetTrigger" );
00165
00166 _HighPtJetEventFlag = new GenericTriggerEventFlag( highptjetparms );
00167 _LowPtJetEventFlag = new GenericTriggerEventFlag( lowptjetparms );
00168
00169 highPtJetExpr_ = highptjetparms.getParameter<std::vector<std::string> >("hltPaths");
00170 lowPtJetExpr_ = lowptjetparms .getParameter<std::vector<std::string> >("hltPaths");
00171
00172
00173 if(theCaloMETAnalyzerFlag){
00174 theCaloMETAnalyzer = new CaloMETAnalyzer(parameters.getParameter<ParameterSet>("caloMETAnalysis"));
00175
00176
00177
00178 }
00179 if(theTcMETAnalyzerFlag){
00180 theTcMETAnalyzer = new METAnalyzer(parameters.getParameter<ParameterSet>("tcMETAnalysis"));
00181 }
00182 if(theMuCorrMETAnalyzerFlag){
00183 theMuCorrMETAnalyzer = new CaloMETAnalyzer(parameters.getParameter<ParameterSet>("mucorrMETAnalysis"));
00184 }
00185 if(thePfMETAnalyzerFlag){
00186 thePfMETAnalyzer = new PFMETAnalyzer(parameters.getParameter<ParameterSet>("pfMETAnalysis"));
00187 }
00188 if(theHTMHTAnalyzerFlag){
00189 theHTMHTAnalyzer = new HTMHTAnalyzer(parameters.getParameter<ParameterSet>("HTMHTAnalysis"));
00190 }
00191
00192 _LSBegin = parameters.getParameter<int>("LSBegin");
00193 _LSEnd = parameters.getParameter<int>("LSEnd");
00194
00195 processname_ = parameters.getParameter<std::string>("processname");
00196
00197
00198 theCleaningParameters = parameters.getParameter<ParameterSet>("CleaningParameters"),
00199
00200 _hlt_PhysDec = theCleaningParameters.getParameter<std::string>("HLT_PhysDec");
00201
00202 _techTrigsAND = theCleaningParameters.getParameter<std::vector<unsigned > >("techTrigsAND");
00203 _techTrigsOR = theCleaningParameters.getParameter<std::vector<unsigned > >("techTrigsOR");
00204 _techTrigsNOT = theCleaningParameters.getParameter<std::vector<unsigned > >("techTrigsNOT");
00205
00206 _doPVCheck = theCleaningParameters.getParameter<bool>("doPrimaryVertexCheck");
00207 _doHLTPhysicsOn = theCleaningParameters.getParameter<bool>("doHLTPhysicsOn");
00208
00209 _tightBHFiltering = theCleaningParameters.getParameter<bool>("tightBHFiltering");
00210
00211 _theVertexLabel = theCleaningParameters.getParameter<edm::InputTag>("vertexLabel");
00212 _theGTLabel = theCleaningParameters.getParameter<edm::InputTag>("gtLabel");
00213
00214
00215 if (_doPVCheck) {
00216 _nvtx_min = theCleaningParameters.getParameter<int>("nvtx_min");
00217 _nvtxtrks_min = theCleaningParameters.getParameter<int>("nvtxtrks_min");
00218 _vtxndof_min = theCleaningParameters.getParameter<int>("vtxndof_min");
00219 _vtxchi2_max = theCleaningParameters.getParameter<double>("vtxchi2_max");
00220 _vtxz_max = theCleaningParameters.getParameter<double>("vtxz_max");
00221 }
00222
00223 }
00224
00225
00226 JetMETAnalyzer::~JetMETAnalyzer() {
00227
00228 if(theJetAnalyzerFlag) {
00229 delete theAKJetAnalyzer;
00230 if(theSConeJetAnalyzerFlag) delete theSCJetAnalyzer;
00231 if(theIConeJetAnalyzerFlag) delete theICJetAnalyzer;
00232 }
00233 if(theJetCleaningFlag) {
00234 delete theCleanedAKJetAnalyzer;
00235 if(theSConeJetAnalyzerFlag) delete theCleanedSCJetAnalyzer;
00236 if(theIConeJetAnalyzerFlag) delete theCleanedICJetAnalyzer;
00237 }
00238 if(theDiJetSelectionFlag) {
00239 delete theDiJetAnalyzer;
00240 }
00241 if(theJetPtAnalyzerFlag) {
00242 delete thePtAKJetAnalyzer;
00243 if(theSConeJetAnalyzerFlag) delete thePtSCJetAnalyzer;
00244 if(theIConeJetAnalyzerFlag) delete thePtICJetAnalyzer;
00245 }
00246
00247 if(theJetPtCleaningFlag) {
00248 delete theCleanedPtAKJetAnalyzer;
00249 if(theSConeJetAnalyzerFlag) delete theCleanedPtSCJetAnalyzer;
00250 if(theIConeJetAnalyzerFlag) delete theCleanedPtICJetAnalyzer;
00251 }
00252
00253 if(theJPTJetAnalyzerFlag) delete theJPTJetAnalyzer;
00254 if(theJPTJetCleaningFlag) delete theCleanedJPTJetAnalyzer;
00255
00256 if(thePFJetAnalyzerFlag) delete thePFJetAnalyzer;
00257 if(thePFJetCleaningFlag) delete theCleanedPFJetAnalyzer;
00258 if(theDiJetSelectionFlag) delete thePFDiJetAnalyzer;
00259
00260 delete _HighPtJetEventFlag;
00261 delete _LowPtJetEventFlag;
00262
00263 if(theCaloMETAnalyzerFlag){
00264 delete theCaloMETAnalyzer;
00265
00266
00267
00268 }
00269 if(theTcMETAnalyzerFlag) delete theTcMETAnalyzer;
00270 if(theMuCorrMETAnalyzerFlag) delete theMuCorrMETAnalyzer;
00271 if(thePfMETAnalyzerFlag) delete thePfMETAnalyzer;
00272 if(theHTMHTAnalyzerFlag) delete theHTMHTAnalyzer;
00273
00274 delete DCSFilterCalo;
00275 delete DCSFilterPF;
00276 delete DCSFilterJPT;
00277 delete DCSFilterAll;
00278
00279 }
00280
00281
00282 void JetMETAnalyzer::beginJob(void) {
00283
00284 metname = "JetMETAnalyzer";
00285
00286 LogTrace(metname)<<"[JetMETAnalyzer] Parameters initialization";
00287 dbe = edm::Service<DQMStore>().operator->();
00288
00289
00290
00291 if(theJetAnalyzerFlag) {
00292 theAKJetAnalyzer->beginJob(dbe);
00293 if(theSConeJetAnalyzerFlag) theSCJetAnalyzer->beginJob(dbe);
00294 if(theIConeJetAnalyzerFlag) theICJetAnalyzer->beginJob(dbe);
00295 }
00296 if(theJetCleaningFlag) {
00297 theCleanedAKJetAnalyzer->beginJob(dbe);
00298 if(theSConeJetAnalyzerFlag) theCleanedSCJetAnalyzer->beginJob(dbe);
00299 if(theIConeJetAnalyzerFlag) theCleanedICJetAnalyzer->beginJob(dbe);
00300 }
00301 if(theDiJetSelectionFlag) theDiJetAnalyzer->beginJob(dbe);
00302 if(theJetPtAnalyzerFlag ) {
00303 thePtAKJetAnalyzer->beginJob(dbe);
00304 if(theSConeJetAnalyzerFlag) thePtSCJetAnalyzer->beginJob(dbe);
00305 if(theIConeJetAnalyzerFlag) thePtICJetAnalyzer->beginJob(dbe);
00306 }
00307 if(theJetPtCleaningFlag ) {
00308 theCleanedPtAKJetAnalyzer->beginJob(dbe);
00309 if(theSConeJetAnalyzerFlag) theCleanedPtSCJetAnalyzer->beginJob(dbe);
00310 if(theIConeJetAnalyzerFlag) theCleanedPtICJetAnalyzer->beginJob(dbe);
00311 }
00312
00313 if(theJPTJetAnalyzerFlag) theJPTJetAnalyzer->beginJob(dbe);
00314 if(theJPTJetCleaningFlag) theCleanedJPTJetAnalyzer->beginJob(dbe);
00315
00316 if(thePFJetAnalyzerFlag) thePFJetAnalyzer->beginJob(dbe);
00317 if(thePFJetCleaningFlag) theCleanedPFJetAnalyzer->beginJob(dbe);
00318 if(theDiJetSelectionFlag) thePFDiJetAnalyzer->beginJob(dbe);
00319
00320
00321
00322 if(theCaloMETAnalyzerFlag){
00323 theCaloMETAnalyzer->beginJob(dbe);
00324
00325
00326
00327 }
00328 if(theTcMETAnalyzerFlag) theTcMETAnalyzer->beginJob(dbe);
00329 if(theMuCorrMETAnalyzerFlag) theMuCorrMETAnalyzer->beginJob(dbe);
00330 if(thePfMETAnalyzerFlag) thePfMETAnalyzer->beginJob(dbe);
00331 if(theHTMHTAnalyzerFlag) theHTMHTAnalyzer->beginJob(dbe);
00332
00333 dbe->setCurrentFolder("JetMET");
00334 lumisecME = dbe->book1D("lumisec", "lumisec", 500, 0., 500.);
00335 cleanupME = dbe->book1D("cleanup", "cleanup", 10, 0., 10.);
00336 cleanupME->setBinLabel(1,"Primary Vertex");
00337 cleanupME->setBinLabel(2,"DCS::Pixel");
00338 cleanupME->setBinLabel(3,"DCS::SiStrip");
00339 cleanupME->setBinLabel(4,"DCS::ECAL");
00340 cleanupME->setBinLabel(5,"DCS::ES");
00341 cleanupME->setBinLabel(6,"DCS::HBHE");
00342 cleanupME->setBinLabel(7,"DCS::HF");
00343 cleanupME->setBinLabel(8,"DCS::HO");
00344 cleanupME->setBinLabel(9,"DCS::Muon");
00345
00346 verticesME = dbe->book1D("vertices", "vertices", 50, 0, 50);
00347 }
00348
00349
00350 void JetMETAnalyzer::beginRun(const edm::Run& iRun, const edm::EventSetup& iSetup)
00351 {
00352
00353
00354
00355 if ( _HighPtJetEventFlag->on() ) _HighPtJetEventFlag->initRun( iRun, iSetup );
00356 if ( _LowPtJetEventFlag ->on() ) _LowPtJetEventFlag ->initRun( iRun, iSetup );
00357
00358 if (_HighPtJetEventFlag->on() && _HighPtJetEventFlag->expressionsFromDB(_HighPtJetEventFlag->hltDBKey(), iSetup)[0] != "CONFIG_ERROR")
00359 highPtJetExpr_ = _HighPtJetEventFlag->expressionsFromDB(_HighPtJetEventFlag->hltDBKey(), iSetup);
00360 if (_LowPtJetEventFlag->on() && _LowPtJetEventFlag->expressionsFromDB(_LowPtJetEventFlag->hltDBKey(), iSetup)[0] != "CONFIG_ERROR")
00361 lowPtJetExpr_ = _LowPtJetEventFlag->expressionsFromDB(_LowPtJetEventFlag->hltDBKey(), iSetup);
00362
00363
00364
00365 bool changed(true);
00366 _hlt_initialized = hltConfig_.init(iRun,iSetup,processname_,changed);
00367 if (!_hlt_initialized) {
00368
00369 processname_ = "FU";
00370 _hlt_initialized = hltConfig_.init(iRun,iSetup,processname_,changed);
00371 if(!_hlt_initialized){
00372
00373 LogDebug("JetMETAnalyzer") << "HLTConfigProvider failed to initialize.";
00374 }
00375 }
00376
00377
00378
00379
00380
00381
00382
00383
00384
00385
00386
00387
00388
00389
00390
00391
00392
00393
00394
00395
00396
00397 if(theCaloMETAnalyzerFlag){
00398 theCaloMETAnalyzer->beginRun(iRun, iSetup);
00399
00400
00401
00402 }
00403 if(theTcMETAnalyzerFlag) theTcMETAnalyzer->beginRun(iRun, iSetup);
00404 if(theMuCorrMETAnalyzerFlag) theMuCorrMETAnalyzer->beginRun(iRun, iSetup);
00405 if(thePfMETAnalyzerFlag) thePfMETAnalyzer->beginRun(iRun, iSetup);
00406
00407
00408 }
00409
00410
00411 void JetMETAnalyzer::endRun(const edm::Run& iRun, const edm::EventSetup& iSetup)
00412 {
00413
00414
00415
00416
00417
00418 if(theCaloMETAnalyzerFlag){
00419 theCaloMETAnalyzer->endRun(iRun, iSetup, dbe);
00420
00421
00422
00423 }
00424 if(theTcMETAnalyzerFlag) theTcMETAnalyzer->endRun(iRun, iSetup, dbe);
00425 if(theMuCorrMETAnalyzerFlag) theMuCorrMETAnalyzer->endRun(iRun, iSetup, dbe);
00426 if(thePfMETAnalyzerFlag) thePfMETAnalyzer->endRun(iRun, iSetup, dbe);
00427
00428
00429 }
00430
00431
00432 void JetMETAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
00433
00434 LogTrace(metname)<<"[JetMETAnalyzer] Analysis of event # ";
00435
00436
00437 int myLuminosityBlock;
00438 myLuminosityBlock = iEvent.luminosityBlock();
00439 lumisecME->Fill(myLuminosityBlock);
00440
00441 if (myLuminosityBlock<_LSBegin) return;
00442 if (myLuminosityBlock>_LSEnd && _LSEnd>0) return;
00443
00444
00445 edm::Handle<TriggerResults> triggerResults;
00446 iEvent.getByLabel(theTriggerResultsLabel, triggerResults);
00447
00448 bool bPhysicsDeclared = false;
00449 if(!_doHLTPhysicsOn) bPhysicsDeclared = true;
00450
00451 Int_t JetLoPass = 0;
00452 Int_t JetHiPass = 0;
00453
00454 if (triggerResults.isValid()){
00455 const edm::TriggerNames & triggerNames = iEvent.triggerNames(*triggerResults);
00456
00457 if( triggerNames.triggerIndex("HLT_PhysicsDeclared") != triggerNames.size() )
00458 if (triggerResults->accept(triggerNames.triggerIndex("HLT_PhysicsDeclared"))) {
00459 if(_doHLTPhysicsOn) bPhysicsDeclared = true;
00460 }
00461
00462
00463
00464
00465
00466
00467
00468
00469
00470
00471
00472
00473 const unsigned int nTrig(triggerNames.size());
00474 for (unsigned int i=0;i<nTrig;++i)
00475 {
00476 if (triggerNames.triggerName(i).find(highPtJetExpr_[0].substr(0,highPtJetExpr_[0].rfind("_v")+2))!=std::string::npos && triggerResults->accept(i))
00477 JetHiPass=1;
00478 else if (triggerNames.triggerName(i).find(lowPtJetExpr_[0].substr(0,lowPtJetExpr_[0].rfind("_v")+2))!=std::string::npos && triggerResults->accept(i))
00479 JetLoPass=1;
00480 }
00481
00482 }
00483
00484 if (DEBUG) std::cout << "trigger label " << theTriggerResultsLabel << std::endl;
00485
00486
00487
00488
00489
00490
00491
00492
00493
00494 if (DEBUG) {
00495 std::cout << ">>> Trigger Lo = " << JetLoPass
00496 << " Hi = " << JetHiPass
00497 << std::endl;
00498 }
00499
00500
00501
00502
00503 int _numPV = 0;
00504 bool bPrimaryVertex = true;
00505 if(_doPVCheck){
00506 bPrimaryVertex = false;
00507 Handle<reco::VertexCollection> vertexHandle;
00508
00509 iEvent.getByLabel(_theVertexLabel, vertexHandle);
00510
00511 if (!vertexHandle.isValid()) {
00512 LogInfo("JetMETAnalyzer") << "JetMETAnalyzer: Could not find vertex collection" << std::endl;
00513 if (DEBUG) std::cout << "JetMETAnalyzer: Could not find vertex collection" << std::endl;
00514 }
00515
00516 if ( vertexHandle.isValid() ){
00517 reco::VertexCollection vertexCollection = *(vertexHandle.product());
00518 int vertex_number = vertexCollection.size();
00519 reco::VertexCollection::const_iterator v = vertexCollection.begin();
00520 for ( ; v != vertexCollection.end(); ++v) {
00521 double vertex_chi2 = v->normalizedChi2();
00522 double vertex_ndof = v->ndof();
00523 bool fakeVtx = v->isFake();
00524 double vertex_Z = v->z();
00525
00526 if ( !fakeVtx
00527 && vertex_number>=_nvtx_min
00528 && vertex_ndof >_vtxndof_min
00529 && vertex_chi2 <_vtxchi2_max
00530 && fabs(vertex_Z)<_vtxz_max ) {
00531 bPrimaryVertex = true;
00532 ++_numPV;
00533 }
00534 }
00535 }
00536 }
00537 verticesME->Fill(_numPV);
00538
00539
00540 edm::Handle< L1GlobalTriggerReadoutRecord > gtReadoutRecord;
00541 iEvent.getByLabel( _theGTLabel, gtReadoutRecord);
00542
00543 if (!gtReadoutRecord.isValid()) {
00544 LogInfo("JetMETAnalyzer") << "JetMETAnalyzer: Could not find GT readout record" << std::endl;
00545 if (DEBUG) std::cout << "JetMETAnalyzer: Could not find GT readout record product" << std::endl;
00546 }
00547
00548 bool bTechTriggers = true;
00549 bool bTechTriggersAND = true;
00550 bool bTechTriggersOR = false;
00551 bool bTechTriggersNOT = false;
00552
00553 if (gtReadoutRecord.isValid()) {
00554 const TechnicalTriggerWord& technicalTriggerWordBeforeMask = gtReadoutRecord->technicalTriggerWord();
00555
00556 if (_techTrigsAND.size() == 0)
00557 bTechTriggersAND = true;
00558 else
00559 for (unsigned ttr = 0; ttr != _techTrigsAND.size(); ttr++) {
00560 bTechTriggersAND = bTechTriggersAND && technicalTriggerWordBeforeMask.at(_techTrigsAND.at(ttr));
00561 }
00562
00563 if (_techTrigsAND.size() == 0)
00564 bTechTriggersOR = true;
00565 else
00566 for (unsigned ttr = 0; ttr != _techTrigsOR.size(); ttr++) {
00567 bTechTriggersOR = bTechTriggersOR || technicalTriggerWordBeforeMask.at(_techTrigsOR.at(ttr));
00568 }
00569 if (_techTrigsNOT.size() == 0)
00570 bTechTriggersNOT = false;
00571 else
00572 for (unsigned ttr = 0; ttr != _techTrigsNOT.size(); ttr++) {
00573 bTechTriggersNOT = bTechTriggersNOT || technicalTriggerWordBeforeMask.at(_techTrigsNOT.at(ttr));
00574 }
00575 }
00576 else
00577 {
00578 bTechTriggersAND = true;
00579 bTechTriggersOR = true;
00580 bTechTriggersNOT = false;
00581 }
00582
00583 if (_techTrigsAND.size()==0)
00584 bTechTriggersAND = true;
00585 if (_techTrigsOR.size()==0)
00586 bTechTriggersOR = true;
00587 if (_techTrigsNOT.size()==0)
00588 bTechTriggersNOT = false;
00589
00590 bTechTriggers = bTechTriggersAND && bTechTriggersOR && !bTechTriggersNOT;
00591
00592 bool bJetCleanup = bTechTriggers && bPrimaryVertex && bPhysicsDeclared;
00593
00594 DCSFilterAll->filter(iEvent, iSetup);
00595 if (bPrimaryVertex) cleanupME->Fill(0.5);
00596 if ( DCSFilterAll->passPIX ) cleanupME->Fill(1.5);
00597 if ( DCSFilterAll->passSiStrip ) cleanupME->Fill(2.5);
00598 if ( DCSFilterAll->passECAL ) cleanupME->Fill(3.5);
00599 if ( DCSFilterAll->passES ) cleanupME->Fill(4.5);
00600 if ( DCSFilterAll->passHBHE ) cleanupME->Fill(5.5);
00601 if ( DCSFilterAll->passHF ) cleanupME->Fill(6.5);
00602 if ( DCSFilterAll->passHO ) cleanupME->Fill(7.5);
00603 if ( DCSFilterAll->passMuon ) cleanupME->Fill(8.5);
00604
00605
00606 edm::Handle<reco::CaloJetCollection> caloJets;
00607
00608
00609
00610 iEvent.getByLabel(theAKJetCollectionLabel, caloJets);
00611 if(caloJets.isValid()) {
00612
00613 if(theJetAnalyzerFlag){
00614 theAKJetAnalyzer->setJetHiPass(JetHiPass);
00615 theAKJetAnalyzer->setJetLoPass(JetLoPass);
00616 theAKJetAnalyzer->analyze(iEvent, iSetup, *caloJets, _numPV);
00617 }
00618 if(theJetPtAnalyzerFlag){
00619 LogTrace(metname)<<"[JetMETAnalyzer] Call to the Jet Pt anti-Kt analyzer";
00620 thePtAKJetAnalyzer->analyze(iEvent, iSetup, *caloJets);
00621 }
00622
00623 }
00624
00625 if(caloJets.isValid() && bJetCleanup) {
00626 if(DCSFilterCalo->filter(iEvent, iSetup)){
00627 if(theJetCleaningFlag){
00628 theCleanedAKJetAnalyzer->setJetHiPass(JetHiPass);
00629 theCleanedAKJetAnalyzer->setJetLoPass(JetLoPass);
00630 theCleanedAKJetAnalyzer->analyze(iEvent, iSetup, *caloJets, _numPV);
00631 }
00632 if(theJetPtCleaningFlag){
00633 LogTrace(metname)<<"[JetMETAnalyzer] Call to the Cleaned Jet Pt anti-Kt analyzer";
00634 theCleanedPtAKJetAnalyzer->analyze(iEvent, iSetup, *caloJets);
00635 }
00636 }
00637 }
00638
00639 if(caloJets.isValid() && bJetCleanup){
00640 if(DCSFilterCalo->filter(iEvent, iSetup)){
00641 if(theDiJetSelectionFlag){
00642 theDiJetAnalyzer->analyze(iEvent, iSetup, *caloJets, _numPV);
00643 }
00644 }
00645 }
00646
00647
00648 if(caloJets.isValid()){
00649 if(theJetPtAnalyzerFlag){
00650 LogTrace(metname)<<"[JetMETAnalyzer] Call to the Jet Pt anti-Kt analyzer";
00651 thePtAKJetAnalyzer->analyze(iEvent, iSetup, *caloJets);
00652 }
00653 }
00654
00655 if(caloJets.isValid() && bJetCleanup){
00656 if(DCSFilterCalo->filter(iEvent, iSetup)){
00657 if(theJetPtCleaningFlag){
00658 LogTrace(metname)<<"[JetMETAnalyzer] Call to the Cleaned Jet Pt anti-Kt analyzer";
00659 theCleanedPtAKJetAnalyzer->analyze(iEvent, iSetup, *caloJets);
00660 }
00661 }
00662 }
00663
00664
00665 iEvent.getByLabel(theSCJetCollectionLabel, caloJets);
00666 if(theSConeJetAnalyzerFlag){
00667 if(caloJets.isValid()){
00668 if(theJetAnalyzerFlag){
00669 theSCJetAnalyzer->setJetHiPass(JetHiPass);
00670 theSCJetAnalyzer->setJetLoPass(JetLoPass);
00671 theSCJetAnalyzer->analyze(iEvent, iSetup, *caloJets, _numPV);
00672 }
00673 if(theJetPtAnalyzerFlag){
00674 LogTrace(metname)<<"[JetMETAnalyzer] Call to the Jet Pt SisCone analyzer";
00675 thePtSCJetAnalyzer->analyze(iEvent, iSetup, *caloJets);
00676 }
00677 }
00678
00679 if(caloJets.isValid() && bJetCleanup){
00680 if(DCSFilterCalo->filter(iEvent, iSetup)){
00681 if(theJetCleaningFlag){
00682 theCleanedSCJetAnalyzer->setJetHiPass(JetHiPass);
00683 theCleanedSCJetAnalyzer->setJetLoPass(JetLoPass);
00684 theCleanedSCJetAnalyzer->analyze(iEvent, iSetup, *caloJets, _numPV);
00685 }
00686 if(theJetPtCleaningFlag){
00687 LogTrace(metname)<<"[JetMETAnalyzer] Call to the Cleaned Jet Pt SisCone analyzer";
00688 theCleanedPtSCJetAnalyzer->analyze(iEvent, iSetup, *caloJets);
00689 }
00690 }
00691 }
00692 }
00693
00694 iEvent.getByLabel(theICJetCollectionLabel, caloJets);
00695 if(theIConeJetAnalyzerFlag) {
00696 if(caloJets.isValid()){
00697 if(theJetAnalyzerFlag){
00698 theICJetAnalyzer->setJetHiPass(JetHiPass);
00699 theICJetAnalyzer->setJetLoPass(JetLoPass);
00700 theICJetAnalyzer->analyze(iEvent, iSetup, *caloJets, _numPV);
00701 }
00702 if(theJetPtAnalyzerFlag){
00703 LogTrace(metname)<<"[JetMETAnalyzer] Call to the Jet Pt ICone analyzer";
00704 thePtICJetAnalyzer->analyze(iEvent, iSetup, *caloJets);
00705 }
00706 }
00707
00708 if(caloJets.isValid() && bJetCleanup){
00709 if(DCSFilterCalo->filter(iEvent, iSetup)){
00710 if(theJetCleaningFlag){
00711 theCleanedICJetAnalyzer->setJetHiPass(JetHiPass);
00712 theCleanedICJetAnalyzer->setJetLoPass(JetLoPass);
00713 theCleanedICJetAnalyzer->analyze(iEvent, iSetup, *caloJets, _numPV);
00714 }
00715 if(theJetPtCleaningFlag){
00716 LogTrace(metname)<<"[JetMETAnalyzer] Call to the Cleaned Jet Pt ICone analyzer";
00717 theCleanedPtICJetAnalyzer->analyze(iEvent, iSetup, *caloJets);
00718 }
00719 }
00720 }
00721 }
00722
00723
00724 edm::Handle<reco::JPTJetCollection> jptJets;
00725 iEvent.getByLabel(theJPTJetCollectionLabel, jptJets);
00726 if(jptJets.isValid() && theJPTJetAnalyzerFlag){
00727
00728
00729 theJPTJetAnalyzer->analyze(iEvent, iSetup, *jptJets, _numPV);
00730 }
00731
00732 if(jptJets.isValid() && bJetCleanup && theJPTJetCleaningFlag){
00733 if(DCSFilterJPT->filter(iEvent, iSetup)){
00734
00735
00736 theCleanedJPTJetAnalyzer->analyze(iEvent, iSetup, *jptJets, _numPV);
00737 }
00738 }
00739
00740
00741 edm::Handle<reco::PFJetCollection> pfJets;
00742 iEvent.getByLabel(thePFJetCollectionLabel, pfJets);
00743
00744 if(pfJets.isValid()){
00745 if(thePFJetAnalyzerFlag){
00746 thePFJetAnalyzer->setJetHiPass(JetHiPass);
00747 thePFJetAnalyzer->setJetLoPass(JetLoPass);
00748 LogTrace(metname)<<"[JetMETAnalyzer] Call to the PFJet analyzer";
00749 thePFJetAnalyzer->analyze(iEvent, iSetup, *pfJets, _numPV);
00750 }
00751 if(thePFJetCleaningFlag){
00752 if(DCSFilterPF->filter(iEvent, iSetup)){
00753 theCleanedPFJetAnalyzer->setJetHiPass(JetHiPass);
00754 theCleanedPFJetAnalyzer->setJetLoPass(JetLoPass);
00755 LogTrace(metname)<<"[JetMETAnalyzer] Call to the Cleaned PFJet analyzer";
00756 theCleanedPFJetAnalyzer->analyze(iEvent, iSetup, *pfJets, _numPV);
00757 if(theDiJetSelectionFlag){
00758 thePFDiJetAnalyzer->analyze(iEvent, iSetup, *pfJets, _numPV);
00759 }
00760 }
00761 }
00762 } else {
00763 if (DEBUG) LogTrace(metname)<<"[JetMETAnalyzer] pfjets NOT VALID!!";
00764 }
00765
00766
00767
00768
00769 if(theCaloMETAnalyzerFlag){
00770
00771 theCaloMETAnalyzer->analyze(iEvent, iSetup, *triggerResults);
00772
00773
00774
00775 }
00776
00777
00778
00779
00780 if(theTcMETAnalyzerFlag){
00781
00782 theTcMETAnalyzer->analyze(iEvent, iSetup, *triggerResults);
00783
00784 }
00785
00786
00787
00788
00789 if(theMuCorrMETAnalyzerFlag){
00790
00791 theMuCorrMETAnalyzer->analyze(iEvent, iSetup, *triggerResults);
00792
00793 }
00794
00795
00796
00797
00798 if(thePfMETAnalyzerFlag){
00799
00800 thePfMETAnalyzer->analyze(iEvent, iSetup, *triggerResults);
00801
00802 }
00803
00804
00805
00806
00807 if(theHTMHTAnalyzerFlag){
00808
00809 theHTMHTAnalyzer->analyze(iEvent, iSetup, *triggerResults);
00810
00811 }
00812
00813 }
00814
00815
00816 void JetMETAnalyzer::endJob(void) {
00817 LogTrace(metname)<<"[JetMETAnalyzer] Saving the histos";
00818 bool outputMEsInRootFile = parameters.getParameter<bool>("OutputMEsInRootFile");
00819 std::string outputFileName = parameters.getParameter<std::string>("OutputFileName");
00820
00821
00822
00823 if(theCaloMETAnalyzerFlag){
00824 theCaloMETAnalyzer->endJob();
00825
00826
00827
00828 }
00829 if(theTcMETAnalyzerFlag) theTcMETAnalyzer->endJob();
00830 if(theMuCorrMETAnalyzerFlag) theMuCorrMETAnalyzer->endJob();
00831 if(thePfMETAnalyzerFlag) thePfMETAnalyzer->endJob();
00832
00833
00834
00835 if(theJetAnalyzerFlag) {
00836 theAKJetAnalyzer->endJob();
00837 if(theSConeJetAnalyzerFlag) theSCJetAnalyzer->endJob();
00838 if(theIConeJetAnalyzerFlag) theICJetAnalyzer->endJob();
00839 }
00840
00841 if(theJetCleaningFlag) {
00842 theCleanedAKJetAnalyzer->endJob();
00843 if(theSConeJetAnalyzerFlag) theCleanedSCJetAnalyzer->endJob();
00844 if(theIConeJetAnalyzerFlag) theCleanedICJetAnalyzer->endJob();
00845 }
00846
00847 if(theDiJetSelectionFlag) theDiJetAnalyzer->endJob();
00848
00849 if(theJetPtAnalyzerFlag ) {
00850 thePtAKJetAnalyzer->endJob();
00851 if(theSConeJetAnalyzerFlag) thePtSCJetAnalyzer->endJob();
00852 if(theIConeJetAnalyzerFlag) thePtICJetAnalyzer->endJob();
00853 }
00854
00855 if(theJetPtCleaningFlag ) {
00856 theCleanedPtAKJetAnalyzer->endJob();
00857 if(theSConeJetAnalyzerFlag) theCleanedPtSCJetAnalyzer->endJob();
00858 if(theIConeJetAnalyzerFlag) theCleanedPtICJetAnalyzer->endJob();
00859 }
00860
00861 if(theJPTJetAnalyzerFlag) theJPTJetAnalyzer->endJob();
00862 if(theJPTJetCleaningFlag) theCleanedJPTJetAnalyzer->endJob();
00863
00864 if(thePFJetAnalyzerFlag) thePFJetAnalyzer->endJob();
00865 if(thePFJetCleaningFlag) theCleanedPFJetAnalyzer->endJob();
00866 if(theDiJetSelectionFlag) thePFDiJetAnalyzer->endJob();
00867
00868 if(outputMEsInRootFile){
00869 dbe->save(outputFileName);
00870 }
00871
00872 }
00873
00874