CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/HLTriggerOffline/JetMET/src/HLTJetMETValidation.cc

Go to the documentation of this file.
00001 #include "HLTriggerOffline/JetMET/interface/HLTJetMETValidation.h"
00002 #include "Math/GenVector/VectorUtil.h"
00003 #include "FWCore/Common/interface/TriggerNames.h"
00004 
00005 HLTJetMETValidation::HLTJetMETValidation(const edm::ParameterSet& ps) : 
00006   triggerEventObject_(ps.getUntrackedParameter<edm::InputTag>("triggerEventObject")),
00007   CaloJetAlgorithm( ps.getUntrackedParameter<edm::InputTag>( "CaloJetAlgorithm" ) ),
00008   GenJetAlgorithm( ps.getUntrackedParameter<edm::InputTag>( "GenJetAlgorithm" ) ),
00009   CaloMETColl( ps.getUntrackedParameter<edm::InputTag>( "CaloMETCollection" ) ),
00010   GenMETColl( ps.getUntrackedParameter<edm::InputTag>( "GenMETCollection" ) ),
00011   HLTriggerResults( ps.getParameter<edm::InputTag>( "HLTriggerResults" ) ),
00012   triggerTag_(ps.getUntrackedParameter<std::string>("DQMFolder","SingleJet")),
00013   patternJetTrg_(ps.getUntrackedParameter<std::string>("PatternJetTrg","")),
00014   patternMetTrg_(ps.getUntrackedParameter<std::string>("PatternMetTrg","")),
00015   patternMuTrg_(ps.getUntrackedParameter<std::string>("PatternMuTrg","")),
00016   outFile_(ps.getUntrackedParameter<std::string>("OutputFileName","")),
00017   HLTinit_(false),
00018   //JL
00019   writeFile_(ps.getUntrackedParameter<bool>("WriteFile",false))
00020 {
00021   evtCnt=0;
00022 
00023   store = &*edm::Service<DQMStore>();
00024 
00025 }
00026 
00027 HLTJetMETValidation::~HLTJetMETValidation()
00028 {
00029 }
00030 
00031 //
00032 // member functions
00033 //
00034 
00035 
00036 void
00037 HLTJetMETValidation::beginRun(const edm::Run & iRun, const edm::EventSetup & iSetup) {
00038 
00039   
00040   bool foundMuTrg = false;
00041   std::string trgMuNm;
00042   bool changedConfig;
00043   //--define search patterns
00044   /*
00045   TPRegexp patternJet("HLT_Jet([0-9]*)?(_v[0-9]*)?$");
00046   TPRegexp patternMet("HLT_(PF*)?M([E,H]*)?T([0-9]*)?(_v[0-9]*)?$");
00047   TPRegexp patternMu("HLT_Mu([0-9]*)?(_v[0-9]*)?$");
00048   */
00049   TPRegexp patternJet(patternJetTrg_);
00050   TPRegexp patternMet(patternMetTrg_);
00051   TPRegexp patternMu(patternMuTrg_);
00052 
00053   if (!hltConfig_.init(iRun, iSetup, "HLT", changedConfig)) {
00054     edm::LogError("HLTJetMET") << "Initialization of HLTConfigProvider failed!!"; 
00055     return;
00056   }
00057   std::vector<std::string> validTriggerNames = hltConfig_.triggerNames();
00058   for (size_t j = 0; j < validTriggerNames.size(); j++) {
00059     //---find the muon path
00060     if (TString(validTriggerNames[j]).Contains(patternMu)) {
00061       //std::cout <<validTriggerNames[j].c_str()<<std::endl;
00062       if (!foundMuTrg) trgMuNm = validTriggerNames[j].c_str();
00063       foundMuTrg = true;
00064     }
00065     //---find the jet paths
00066     if (TString(validTriggerNames[j]).Contains(patternJet)) {
00067       hltTrgJet.push_back(validTriggerNames[j]);
00068     }
00069     //---find the met paths
00070     if (TString(validTriggerNames[j]).Contains(patternMet)) {
00071       hltTrgMet.push_back(validTriggerNames[j]);
00072     }
00073   }
00074   
00075   //----set the denominator paths
00076   for (size_t it=0;it<hltTrgJet.size();it++) {
00077     if (it==0 && foundMuTrg) hltTrgJetLow.push_back(trgMuNm);//--lowest threshold uses muon path
00078     if (it==0 && !foundMuTrg) hltTrgJetLow.push_back(hltTrgJet[it]);//---if no muon then itself
00079     if (it!=0) hltTrgJetLow.push_back(hltTrgJet[it-1]);
00080     //std::cout<<hltTrgJet[it].c_str()<<" "<<hltTrgJetLow[it].c_str()<<std::endl;
00081   }
00082   int itm(0), itpm(0), itmh(0), itpmh(0);
00083   for (size_t it=0;it<hltTrgMet.size();it++) {
00084     if (TString(hltTrgMet[it]).Contains("PF")) {
00085       if (TString(hltTrgMet[it]).Contains("MHT")) {
00086         if( 0 == itpmh ) {
00087           if( foundMuTrg ) hltTrgMetLow.push_back(trgMuNm);
00088           else hltTrgMetLow.push_back(hltTrgMet[it]);
00089         }
00090         else hltTrgMetLow.push_back(hltTrgMet[it-1]);
00091         itpmh++;
00092       }
00093       if (TString(hltTrgMet[it]).Contains("MET")) {
00094         if( 0 == itpm ) {
00095           if( foundMuTrg ) hltTrgMetLow.push_back(trgMuNm);
00096           else hltTrgMetLow.push_back(hltTrgMet[it]);
00097         }
00098         else hltTrgMetLow.push_back(hltTrgMet[it-1]);
00099         itpm++;
00100       }
00101     }
00102     else {
00103       if (TString(hltTrgMet[it]).Contains("MHT")) {
00104         if( 0 == itmh ) {
00105           if( foundMuTrg ) hltTrgMetLow.push_back(trgMuNm);
00106           else hltTrgMetLow.push_back(hltTrgMet[it]);
00107         }
00108         else hltTrgMetLow.push_back(hltTrgMet[it-1]);
00109         itmh++;
00110       }
00111       if (TString(hltTrgMet[it]).Contains("MET")) {
00112         if( 0 == itm ) {
00113           if( foundMuTrg ) hltTrgMetLow.push_back(trgMuNm);
00114           else hltTrgMetLow.push_back(hltTrgMet[it]);
00115         }
00116         else hltTrgMetLow.push_back(hltTrgMet[it-1]);
00117         itm++;
00118       }
00119     }
00120     //std::cout<<hltTrgMet[it].c_str()<<" "<<hltTrgMetLow[it].c_str()<<std::endl;
00121   }
00122 
00123   //----define dqm folders and elements
00124   for (size_t it=0;it<hltTrgJet.size();it++) {
00125     //std::cout<<hltTrgJet[it].c_str()<<" "<<hltTrgJetLow[it].c_str()<<std::endl;
00126     //store->setCurrentFolder(triggerTag_+hltTrgJet[it].c_str());
00127     std::string trgPathName = HLTConfigProvider::removeVersion(triggerTag_+hltTrgJet[it].c_str());
00128     //std::cout << "str = " << triggerTag_+hltTrgJet[it].c_str() << std::endl;
00129     //std::cout << "trgPathName = " << trgPathName << std::endl;
00130     store->setCurrentFolder(trgPathName);
00131     //_meRecoJetPt= store->book1D("_meRecoJetPt","Single Reconstructed Jet Pt",100,0,500);
00132     _meRecoJetPt.push_back(store->book1D("_meRecoJetPt","Single Reconstructed Jet Pt",100,0,500));
00133     _meRecoJetPtTrgMC.push_back(store->book1D("_meRecoJetPtTrgMC","Single Reconstructed Jet Pt -- HLT Triggered",100,0,500));
00134     _meRecoJetPtTrg.push_back(store->book1D("_meRecoJetPtTrg","Single Reconstructed Jet Pt -- HLT Triggered",100,0,500));
00135     _meRecoJetPtTrgLow.push_back(store->book1D("_meRecoJetPtTrgLow","Single Reconstructed Jet Pt -- HLT Triggered Low",100,0,500));
00136     
00137     _meRecoJetEta.push_back(store->book1D("_meRecoJetEta","Single Reconstructed Jet Eta",100,-10,10));
00138     _meRecoJetEtaTrgMC.push_back(store->book1D("_meRecoJetEtaTrgMC","Single Reconstructed Jet Eta -- HLT Triggered",100,-10,10));
00139     _meRecoJetEtaTrg.push_back(store->book1D("_meRecoJetEtaTrg","Single Reconstructed Jet Eta -- HLT Triggered",100,-10,10));
00140     _meRecoJetEtaTrgLow.push_back(store->book1D("_meRecoJetEtaTrgLow","Single Reconstructed Jet Eta -- HLT Triggered Low",100,-10,10));
00141     
00142     _meRecoJetPhi.push_back(store->book1D("_meRecoJetPhi","Single Reconstructed Jet Phi",100,-4.,4.));
00143     _meRecoJetPhiTrgMC.push_back(store->book1D("_meRecoJetPhiTrgMC","Single Reconstructed Jet Phi -- HLT Triggered",100,-4.,4.));
00144     _meRecoJetPhiTrg.push_back(store->book1D("_meRecoJetPhiTrg","Single Reconstructed Jet Phi -- HLT Triggered",100,-4.,4.));
00145     _meRecoJetPhiTrgLow.push_back(store->book1D("_meRecoJetPhiTrgLow","Single Reconstructed Jet Phi -- HLT Triggered Low",100,-4.,4.));
00146     
00147     _meGenJetPt.push_back(store->book1D("_meGenJetPt","Single Generated Jet Pt",100,0,500));
00148     _meGenJetPtTrgMC.push_back(store->book1D("_meGenJetPtTrgMC","Single Generated Jet Pt -- HLT Triggered",100,0,500));
00149     _meGenJetPtTrg.push_back(store->book1D("_meGenJetPtTrg","Single Generated Jet Pt -- HLT Triggered",100,0,500));
00150     _meGenJetPtTrgLow.push_back(store->book1D("_meGenJetPtTrgLow","Single Generated Jet Pt -- HLT Triggered Low",100,0,500));
00151     
00152     _meGenJetEta.push_back(store->book1D("_meGenJetEta","Single Generated Jet Eta",100,-10,10));
00153     _meGenJetEtaTrgMC.push_back(store->book1D("_meGenJetEtaTrgMC","Single Generated Jet Eta -- HLT Triggered",100,-10,10));
00154     _meGenJetEtaTrg.push_back(store->book1D("_meGenJetEtaTrg","Single Generated Jet Eta -- HLT Triggered",100,-10,10));
00155     _meGenJetEtaTrgLow.push_back(store->book1D("_meGenJetEtaTrgLow","Single Generated Jet Eta -- HLT Triggered Low",100,-10,10));
00156     
00157     _meGenJetPhi.push_back(store->book1D("_meGenJetPhi","Single Generated Jet Phi",100,-4.,4.));
00158     _meGenJetPhiTrgMC.push_back(store->book1D("_meGenJetPhiTrgMC","Single Generated Jet Phi -- HLT Triggered",100,-4.,4.));
00159     _meGenJetPhiTrg.push_back(store->book1D("_meGenJetPhiTrg","Single Generated Jet Phi -- HLT Triggered",100,-4.,4.));
00160     _meGenJetPhiTrgLow.push_back(store->book1D("_meGenJetPhiTrgLow","Single Generated Jet Phi -- HLT Triggered Low",100,-4.,4.));
00161     
00162   }
00163   for (size_t it=0;it<hltTrgMet.size();it++) {
00164     //std::cout<<hltTrgMet[it].c_str()<<" "<<hltTrgMetLow[it].c_str()<<std::endl;
00165     //store->setCurrentFolder(triggerTag_+hltTrgMet[it].c_str());
00166     std::string trgPathName = HLTConfigProvider::removeVersion(triggerTag_+hltTrgMet[it].c_str());
00167     store->setCurrentFolder(trgPathName);
00168     _meRecoMET.push_back(store->book1D("_meRecoMET","Reconstructed Missing ET",100,0,500));
00169     _meRecoMETTrgMC.push_back(store->book1D("_meRecoMETTrgMC","Reconstructed Missing ET -- HLT Triggered",100,0,500));
00170     _meRecoMETTrg.push_back(store->book1D("_meRecoMETTrg","Reconstructed Missing ET -- HLT Triggered",100,0,500));
00171     _meRecoMETTrgLow.push_back(store->book1D("_meRecoMETTrgLow","Reconstructed Missing ET -- HLT Triggered Low",100,0,500));
00172     
00173     _meGenMET.push_back(store->book1D("_meGenMET","Generated Missing ET",100,0,500));
00174     _meGenMETTrgMC.push_back(store->book1D("_meGenMETTrgMC","Generated Missing ET -- HLT Triggered",100,0,500));
00175     _meGenMETTrg.push_back(store->book1D("_meGenMETTrg","Generated Missing ET -- HLT Triggered",100,0,500));
00176     _meGenMETTrgLow.push_back(store->book1D("_meGenMETTrgLow","Generated Missing ET -- HLT Triggered Low",100,0,500));
00177   }
00178 }
00179 
00180 void
00181 HLTJetMETValidation::endJob()
00182 {
00183 
00184   //Write DQM thing..
00185   if(outFile_.size()>0)
00186     if (&*edm::Service<DQMStore>() && writeFile_) {
00187       edm::Service<DQMStore>()->save (outFile_);
00188     }
00189   
00190 }
00191 
00192 void
00193 HLTJetMETValidation::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)
00194 {
00195   using namespace std;
00196   using namespace edm;
00197   using namespace reco;
00198   using namespace l1extra;
00199   using namespace trigger;
00200   
00201   evtCnt++;
00202   //get The triggerEvent
00203 
00204   Handle<TriggerEventWithRefs> trigEv;
00205   iEvent.getByLabel(triggerEventObject_,trigEv);
00206 
00207 // get TriggerResults object
00208 
00209   bool gotHLT=true;
00210   //bool myTrig=false;
00211   //bool myTrigLow=false;
00212   std::vector<bool> myTrigJ;
00213   for (size_t it=0;it<hltTrgJet.size();it++) myTrigJ.push_back(false);
00214   std::vector<bool> myTrigJLow;
00215   for (size_t it=0;it<hltTrgJetLow.size();it++) myTrigJLow.push_back(false);
00216   std::vector<bool> myTrigM;
00217   for (size_t it=0;it<hltTrgMet.size();it++) myTrigM.push_back(false);
00218   std::vector<bool> myTrigMLow;
00219   for (size_t it=0;it<hltTrgMetLow.size();it++) myTrigMLow.push_back(false);
00220 
00221 
00222   Handle<TriggerResults> hltresults,hltresultsDummy;
00223   iEvent.getByLabel(HLTriggerResults,hltresults);
00224   if (! hltresults.isValid() ) { 
00225     //std::cout << "  -- No HLTRESULTS"; 
00226     //if (evtCnt==1) edm::LogWarning("HLTJetMETValidation") << "  -- No HLTRESULTS";    
00227     gotHLT=false;
00228   }
00229 
00230   if (gotHLT) {
00231     const edm::TriggerNames & triggerNames = iEvent.triggerNames(*hltresults);
00232     getHLTResults(*hltresults, triggerNames);
00233     //    trig_iter=hltTriggerMap.find(MyTrigger);
00234     //trig_iter=hltTriggerMap.find(_HLTPath.label());
00235 
00236     //---pick-up the jet trigger decisions
00237     for (size_t it=0;it<hltTrgJet.size();it++) {
00238       trig_iter=hltTriggerMap.find(hltTrgJet[it]);
00239       if (trig_iter==hltTriggerMap.end()){
00240         //std::cout << "Could not find trigger path with name: " << _probefilter.label() << std::endl;
00241         //if (evtCnt==1) edm::LogWarning("HLTJetMETValidation") << "Could not find trigger path with name: " << _probefilter.label(); 
00242       }else{
00243         myTrigJ[it]=trig_iter->second;
00244       }
00245       //std::cout<<hltTrgJet[it].c_str()<<" "<<myTrigJ[it]<<std::endl;
00246     }
00247     for (size_t it=0;it<hltTrgJetLow.size();it++) {
00248       trig_iter=hltTriggerMap.find(hltTrgJetLow[it]);
00249       if (trig_iter==hltTriggerMap.end()){
00250         //std::cout << "Could not find trigger path with name: " << _probefilter.label() << std::endl;
00251         //if (evtCnt==1) edm::LogWarning("HLTJetMETValidation") << "Could not find trigger path with name: " << _probefilter.label(); 
00252       }else{
00253         myTrigJLow[it]=trig_iter->second;
00254       }
00255       //std::cout<<hltTrgJetLow[it].c_str()<<" "<<myTrigJLow[it]<<std::endl;
00256     }
00257     //---pick-up the met trigger decisions
00258     for (size_t it=0;it<hltTrgMet.size();it++) {
00259       trig_iter=hltTriggerMap.find(hltTrgMet[it]);
00260       if (trig_iter==hltTriggerMap.end()){
00261         //std::cout << "Could not find trigger path with name: " << _probefilter.label() << std::endl;
00262         //if (evtCnt==1) edm::LogWarning("HLTJetMETValidation") << "Could not find trigger path with name: " << _probefilter.label(); 
00263       }else{
00264         myTrigM[it]=trig_iter->second;
00265       }
00266       //std::cout<<hltTrgMet[it].c_str()<<" "<<myTrigM[it]<<std::endl;
00267     }
00268     for (size_t it=0;it<hltTrgMetLow.size();it++) {
00269       trig_iter=hltTriggerMap.find(hltTrgMetLow[it]);
00270       if (trig_iter==hltTriggerMap.end()){
00271         //std::cout << "Could not find trigger path with name: " << _probefilter.label() << std::endl;
00272         //if (evtCnt==1) edm::LogWarning("HLTJetMETValidation") << "Could not find trigger path with name: " << _probefilter.label(); 
00273       }else{
00274         myTrigMLow[it]=trig_iter->second;
00275       }
00276       //std::cout<<hltTrgMetLow[it].c_str()<<" "<<myTrigMLow[it]<<std::endl;
00277     }
00278   }
00279 
00280   Handle<PFJetCollection> caloJets,caloJetsDummy;
00281   iEvent.getByLabel( CaloJetAlgorithm, caloJets );
00282   double calJetPt=-1.;
00283   double calJetEta=-999.;
00284   double calJetPhi=-999.;
00285   //double calHT=0;
00286   if (caloJets.isValid()) { 
00287     //Loop over the CaloJets and fill some histograms
00288     int jetInd = 0;
00289     for( PFJetCollection::const_iterator cal = caloJets->begin(); cal != caloJets->end(); ++ cal ) {
00290       //std::cout << "CALO JET #" << jetInd << std::endl << cal->print() << std::endl;
00291       if (jetInd == 0){
00292         calJetPt=cal->pt();
00293         calJetEta=cal->eta();
00294         calJetPhi=cal->phi();
00295         for (size_t it=0;it<hltTrgJet.size();it++) {
00296           _meRecoJetPt[it]->Fill( calJetPt );
00297           _meRecoJetEta[it]->Fill( calJetEta );
00298           _meRecoJetPhi[it]->Fill( calJetPhi );
00299           if (myTrigJ[it]) _meRecoJetPtTrgMC[it]->Fill( calJetPt );
00300           if (myTrigJ[it]) _meRecoJetEtaTrgMC[it]->Fill( calJetEta );
00301           if (myTrigJ[it]) _meRecoJetPhiTrgMC[it]->Fill( calJetPhi );
00302           if (myTrigJ[it] && myTrigJLow[it]) _meRecoJetPtTrg[it]->Fill( calJetPt );
00303           if (myTrigJ[it] && myTrigJLow[it]) _meRecoJetEtaTrg[it]->Fill( calJetEta );
00304           if (myTrigJ[it] && myTrigJLow[it]) _meRecoJetPhiTrg[it]->Fill( calJetPhi );
00305           if (myTrigJLow[it]) _meRecoJetPtTrgLow[it]->Fill( calJetPt );
00306           if (myTrigJLow[it]) _meRecoJetEtaTrgLow[it]->Fill( calJetEta );
00307           if (myTrigJLow[it]) _meRecoJetPhiTrgLow[it]->Fill( calJetPhi );
00308         }
00309         jetInd++;
00310       }
00311       /*
00312       if (cal->pt()>30) {
00313         calHT+=cal->pt();
00314       }
00315       */
00316     }
00317     /*
00318     _meRecoHT->Fill( calHT );
00319     if (myTrig) _meRecoHTTrg->Fill( calHT );
00320     if (myTrigLow) _meRecoHTTrgLow->Fill( calHT );
00321     */
00322   }else{
00323     //std::cout << "  -- No CaloJets" << std::endl;
00324     //if (evtCnt==1) edm::LogWarning("HLTJetMETValidation") << "  -- No CaloJets"; 
00325   }
00326 
00327   Handle<GenJetCollection> genJets,genJetsDummy;
00328   iEvent.getByLabel( GenJetAlgorithm, genJets );
00329   double genJetPt=-1.;
00330   double genJetEta=-999.;
00331   double genJetPhi=-999.;
00332   //double genHT=0;
00333   if (genJets.isValid()) { 
00334     //Loop over the GenJets and fill some histograms
00335     int jetInd = 0;
00336     for( GenJetCollection::const_iterator gen = genJets->begin(); gen != genJets->end(); ++ gen ) {
00337       // std::cout << "CALO JET #" << jetInd << std::endl << cal->print() << std::endl;
00338       if (jetInd == 0){
00339         genJetPt=gen->pt();
00340         genJetEta=gen->eta();
00341         genJetPhi=gen->phi();
00342         for (size_t it=0;it<hltTrgJet.size();it++) {
00343           _meGenJetPt[it]->Fill( genJetPt );
00344           _meGenJetEta[it]->Fill( genJetEta );
00345           _meGenJetPhi[it]->Fill( genJetPhi );
00346           if (myTrigJ[it]) _meGenJetPtTrgMC[it]->Fill( genJetPt );
00347           if (myTrigJ[it]) _meGenJetEtaTrgMC[it]->Fill( genJetEta );
00348           if (myTrigJ[it]) _meGenJetPhiTrgMC[it]->Fill( genJetPhi );
00349           if (myTrigJ[it] && myTrigJLow[it]) _meGenJetPtTrg[it]->Fill( genJetPt );
00350           if (myTrigJ[it] && myTrigJLow[it]) _meGenJetEtaTrg[it]->Fill( genJetEta );
00351           if (myTrigJ[it] && myTrigJLow[it]) _meGenJetPhiTrg[it]->Fill( genJetPhi );
00352           if (myTrigJLow[it]) _meGenJetPtTrgLow[it]->Fill( genJetPt );
00353           if (myTrigJLow[it]) _meGenJetEtaTrgLow[it]->Fill( genJetEta );
00354           if (myTrigJLow[it]) _meGenJetPhiTrgLow[it]->Fill( genJetPhi );
00355         }
00356         jetInd++;
00357       }
00358       /*
00359       if (gen->pt()>30) {
00360         genHT+=gen->pt();
00361       }
00362       */
00363     }
00364     /*
00365     _meGenHT->Fill( genHT );
00366     if (myTrig) _meGenHTTrg->Fill( genHT );
00367     if (myTrigLow) _meGenHTTrgLow->Fill( genHT );
00368     */
00369   }else{
00370     //std::cout << "  -- No GenJets" << std::endl;
00371     //if (evtCnt==1) edm::LogWarning("HLTJetMETValidation") << "  -- No GenJets"; 
00372   }
00373   
00374 
00375   edm::Handle<CaloMETCollection> recmet, recmetDummy;
00376   iEvent.getByLabel(CaloMETColl,recmet);
00377 
00378   double calMet=-1;
00379   if (recmet.isValid()) { 
00380     typedef CaloMETCollection::const_iterator cmiter;
00381     //std::cout << "Size of MET collection" <<  recmet.size() << std::endl;
00382     for ( cmiter i=recmet->begin(); i!=recmet->end(); i++) {
00383       calMet = i->pt();
00384       for (size_t it=0;it<hltTrgMet.size();it++) {
00385         _meRecoMET[it] -> Fill(calMet);
00386         if (myTrigM[it]) _meRecoMETTrgMC[it] -> Fill(calMet);
00387         if (myTrigM[it] && myTrigMLow[it]) _meRecoMETTrg[it] -> Fill(calMet);
00388         if (myTrigMLow[it]) _meRecoMETTrgLow[it] -> Fill(calMet);
00389       }
00390     }
00391   }else{
00392     //std::cout << "  -- No MET Collection with name: " << CaloMETColl << std::endl;
00393     //if (evtCnt==1) edm::LogWarning("HLTJetMETValidation") << "  -- No MET Collection with name: "<< CaloMETColl; 
00394   }
00395   
00396   edm::Handle<GenMETCollection> genmet, genmetDummy;
00397   iEvent.getByLabel(GenMETColl,genmet);
00398 
00399   double genMet=-1;
00400   if (genmet.isValid()) { 
00401     typedef GenMETCollection::const_iterator cmiter;
00402     //std::cout << "Size of GenMET collection" <<  recmet.size() << std::endl;
00403     for ( cmiter i=genmet->begin(); i!=genmet->end(); i++) {
00404       genMet = i->pt();
00405       for (size_t it=0;it<hltTrgMet.size();it++) {
00406         _meGenMET[it] -> Fill(genMet);
00407         if (myTrigM[it]) _meGenMETTrgMC[it] -> Fill(genMet);
00408         if (myTrigM[it] && myTrigMLow[it]) _meGenMETTrg[it] -> Fill(genMet);
00409         if (myTrigMLow[it]) _meGenMETTrgLow[it] -> Fill(genMet);
00410       }
00411     }
00412   }else{
00413     //std::cout << "  -- No GenMET Collection with name: " << GenMETColl << std::endl;
00414     //if (evtCnt==1) edm::LogWarning("HLTJetMETValidation") << "  -- No GenMET Collection with name: "<< GenMETColl; 
00415   }
00416   
00417 }
00418 
00419 void HLTJetMETValidation::getHLTResults(const edm::TriggerResults& hltresults,
00420                                         const edm::TriggerNames & triggerNames) {
00421 
00422   int ntrigs=hltresults.size();
00423   if (! HLTinit_){
00424     HLTinit_=true;
00425     
00426     //if (writeFile_) std::cout << "Number of HLT Paths: " << ntrigs << std::endl;
00427     for (int itrig = 0; itrig != ntrigs; ++itrig){
00428       std::string trigName = triggerNames.triggerName(itrig);
00429       // std::cout << "trigger " << itrig << ": " << trigName << std::endl; 
00430     }
00431   }
00432   
00433   for (int itrig = 0; itrig != ntrigs; ++itrig){
00434     std::string trigName = triggerNames.triggerName(itrig);
00435      bool accept=hltresults.accept(itrig);
00436 
00437      //if (accept) _triggerResults->Fill(float(itrig));
00438 
00439      // fill the trigger map
00440      typedef std::map<std::string,bool>::value_type valType;
00441      trig_iter=hltTriggerMap.find(trigName);
00442      if (trig_iter==hltTriggerMap.end())
00443        hltTriggerMap.insert(valType(trigName,accept));
00444      else
00445        trig_iter->second=accept;
00446   }
00447 }