ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/UHHAnalysis/NtupleWriter/src/NtupleWriter.cc
(Generate patch)

Comparing UserCode/UHHAnalysis/NtupleWriter/src/NtupleWriter.cc (file contents):
Revision 1.5 by peiffer, Thu Apr 5 09:48:20 2012 UTC vs.
Revision 1.6 by peiffer, Wed Apr 11 15:15:44 2012 UTC

# Line 55 | Line 55 | NtupleWriter::NtupleWriter(const edm::Pa
55    doGenInfo = iConfig.getParameter<bool>("doGenInfo");
56    doPV = iConfig.getParameter<bool>("doPV");
57    doTopJets = iConfig.getParameter<bool>("doTopJets");
58 +  doTrigger = iConfig.getParameter<bool>("doTrigger");
59  
60    // initialization of tree variables
61  
# Line 125 | Line 126 | NtupleWriter::NtupleWriter(const edm::Pa
126      tr->Branch("genInfo","GenInfo",&genInfo);
127      tr->Branch("GenParticles","std::vector<GenParticle>", &genps);
128    }
129 <
130 <  trigger_prefixes = iConfig.getParameter<std::vector<std::string> >("trigger_prefixes");
131 <  //tr->Branch("triggerResults","std::map<std::string, bool>",&triggerResults);
132 <  tr->Branch("triggerNames", "std::vector<std::string>", &triggerNames);  
133 <  tr->Branch("triggerResults", "std::vector<bool>", &triggerResults);
134 <  tr->Branch("L1_prescale", "std::vector<int>", &L1_prescale);
135 <  tr->Branch("HLT_prescale", "std::vector<int>", &HLT_prescale);
136 <
129 >  if(doTrigger){
130 >    trigger_prefixes = iConfig.getParameter<std::vector<std::string> >("trigger_prefixes");
131 >    //tr->Branch("triggerResults","std::map<std::string, bool>",&triggerResults);
132 >    tr->Branch("triggerNames", "std::vector<std::string>", &triggerNames);  
133 >    tr->Branch("triggerResults", "std::vector<bool>", &triggerResults);
134 >    tr->Branch("L1_prescale", "std::vector<int>", &L1_prescale);
135 >    tr->Branch("HLT_prescale", "std::vector<int>", &HLT_prescale);
136 >  }
137    newrun = true;
138   }
139  
# Line 537 | Line 538 | NtupleWriter::analyze(const edm::Event&
538     }
539  
540     // ------------- trigger -------------
541 <  
542 <   edm::InputTag triggerEvent = edm::InputTag("hltTriggerSummaryAOD");
543 <   edm::Handle< trigger::TriggerEvent > dummy_TriggerEvent;
544 <   iEvent.getByLabel( edm::InputTag(triggerEvent.label(), triggerEvent.instance()), dummy_TriggerEvent );
545 <  
546 <   const edm::Provenance *meta = dummy_TriggerEvent.provenance();
547 <   std::string nameProcess = meta->processName();
548 <   edm::InputTag triggerResultTag = edm::InputTag("TriggerResults");
549 <   triggerResultTag = edm::InputTag( triggerResultTag.label(), triggerResultTag.instance(), nameProcess );
550 <  
551 <   edm::Handle<edm::TriggerResults> trigger;
552 <   iEvent.getByLabel(triggerResultTag, trigger);
553 <   const edm::TriggerResults& trig = *(trigger.product());
554 <  
555 <   triggerResults.clear();
556 <   triggerNames.clear();
557 <   L1_prescale.clear();
558 <   HLT_prescale.clear();
559 <
560 <   edm::Service<edm::service::TriggerNamesService> tns;
561 <   std::vector<std::string> triggerNames_all;
562 <   tns->getTrigPaths(trig,triggerNames_all);
563 <
564 <   if (trig.size()!=triggerNames_all.size()) std::cout <<"ERROR: length of names and paths not the same: "<<triggerNames_all.size()<<","<<trig.size()<< std::endl;
565 <   for(unsigned int i=0; i<trig.size(); ++i){
566 <     std::vector<std::string>::const_iterator it = trigger_prefixes.begin();
567 <     for(; it!=trigger_prefixes.end(); ++it){
568 <       if(triggerNames_all[i].substr(0, it->size()) == *it)break;
569 <     }
570 <     if(it==trigger_prefixes.end()) continue;
571 <
572 <     //triggerResults.insert(std::pair<std::string, bool>(triggerNames[i],trig.accept(i)));
573 <     triggerResults.push_back(trig.accept(i));
574 <     if(newrun) triggerNames.push_back(triggerNames_all[i]);
575 <     if(isRealData){
576 <       std::pair<int, int> pre=hlt_cfg.prescaleValues(iEvent, iSetup, triggerNames_all[i]);
577 <       L1_prescale.push_back(pre.first);
578 <       HLT_prescale.push_back(pre.second);
541 >   if(doTrigger){
542 >     edm::InputTag triggerEvent = edm::InputTag("hltTriggerSummaryAOD");
543 >     edm::Handle< trigger::TriggerEvent > dummy_TriggerEvent;
544 >     iEvent.getByLabel( edm::InputTag(triggerEvent.label(), triggerEvent.instance()), dummy_TriggerEvent );
545 >    
546 >     const edm::Provenance *meta = dummy_TriggerEvent.provenance();
547 >     std::string nameProcess = meta->processName();
548 >     edm::InputTag triggerResultTag = edm::InputTag("TriggerResults");
549 >     triggerResultTag = edm::InputTag( triggerResultTag.label(), triggerResultTag.instance(), nameProcess );
550 >    
551 >     edm::Handle<edm::TriggerResults> trigger;
552 >     iEvent.getByLabel(triggerResultTag, trigger);
553 >     const edm::TriggerResults& trig = *(trigger.product());
554 >    
555 >     triggerResults.clear();
556 >     triggerNames.clear();
557 >     L1_prescale.clear();
558 >     HLT_prescale.clear();
559 >    
560 >     edm::Service<edm::service::TriggerNamesService> tns;
561 >     std::vector<std::string> triggerNames_all;
562 >     tns->getTrigPaths(trig,triggerNames_all);
563 >    
564 >     if (trig.size()!=triggerNames_all.size()) std::cout <<"ERROR: length of names and paths not the same: "<<triggerNames_all.size()<<","<<trig.size()<< std::endl;
565 >     for(unsigned int i=0; i<trig.size(); ++i){
566 >       std::vector<std::string>::const_iterator it = trigger_prefixes.begin();
567 >       for(; it!=trigger_prefixes.end(); ++it){
568 >         if(triggerNames_all[i].substr(0, it->size()) == *it)break;
569 >       }
570 >       if(it==trigger_prefixes.end()) continue;
571 >      
572 >       //triggerResults.insert(std::pair<std::string, bool>(triggerNames[i],trig.accept(i)));
573 >       triggerResults.push_back(trig.accept(i));
574 >       if(newrun) triggerNames.push_back(triggerNames_all[i]);
575 >       if(isRealData){
576 >         std::pair<int, int> pre=hlt_cfg.prescaleValues(iEvent, iSetup, triggerNames_all[i]);
577 >         L1_prescale.push_back(pre.first);
578 >         HLT_prescale.push_back(pre.second);
579 >       }
580       }
581 +     //    for(std::map<std::string, bool>::const_iterator iter = triggerResults.begin(); iter!=triggerResults.end(); iter++){
582 +     //      std::cout << (*iter).first << "   " << (*iter).second << std::endl;
583 +     //    }
584 +     newrun=false;
585     }
580 //    for(std::map<std::string, bool>::const_iterator iter = triggerResults.begin(); iter!=triggerResults.end(); iter++){
581 //      std::cout << (*iter).first << "   " << (*iter).second << std::endl;
582 //    }
583   newrun=false;
586  
587     // ------------- generator info -------------
588    

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines