CMS 3D CMS Logo

Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes

HiggsDQM Class Reference

#include <HiggsDQM.h>

Inheritance diagram for HiggsDQM:
edm::EDAnalyzer

List of all members.

Public Member Functions

 HiggsDQM (const edm::ParameterSet &ps)
virtual ~HiggsDQM ()

Protected Member Functions

void analyze (edm::Event const &e, edm::EventSetup const &eSetup)
void beginJob ()
void beginLuminosityBlock (edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &context)
void beginRun (edm::Run const &run, edm::EventSetup const &eSetup)
void endJob ()
void endLuminosityBlock (edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &c)
void endRun (edm::Run const &run, edm::EventSetup const &eSetup)

Private Member Functions

void bookHistos (DQMStore *bei)
double calcDeltaPhi (double phi1, double phi2)
double Distance (const reco::Candidate &c1, const reco::Candidate &c2)
double DistancePhi (const reco::Candidate &c1, const reco::Candidate &c2)

Private Attributes

DQMStorebei_
MonitorElementh_caloMet
MonitorElementh_caloMet_phi
MonitorElementh_dielemass
MonitorElementh_dimumass_GMGM
MonitorElementh_dimumass_GMTM
MonitorElementh_dimumass_TMTM
MonitorElementh_eCombIso
MonitorElementh_eEta
MonitorElementh_eMultiplicity
MonitorElementh_ePhi
MonitorElementh_ePt
MonitorElementh_jet2_et
MonitorElementh_jet_count
MonitorElementh_jet_et
MonitorElementh_lepcounts
MonitorElementh_mCombIso
MonitorElementh_mEta_GM
MonitorElementh_mEta_GMPT
MonitorElementh_mEta_GMTM
MonitorElementh_mEta_STAM
MonitorElementh_mEta_TM
MonitorElementh_mMultiplicity
MonitorElementh_mPhi_GM
MonitorElementh_mPhi_GMPT
MonitorElementh_mPhi_GMTM
MonitorElementh_mPhi_STAM
MonitorElementh_mPhi_TM
MonitorElementh_mPt_GM
MonitorElementh_mPt_GMPT
MonitorElementh_mPt_GMTM
MonitorElementh_mPt_STAM
MonitorElementh_mPt_TM
MonitorElementh_pfMet
MonitorElementh_pfMet_phi
MonitorElementh_vertex_chi2
MonitorElementh_vertex_d0
MonitorElementh_vertex_number
MonitorElementh_vertex_numTrks
MonitorElementh_vertex_sumTrks
HLTConfigProvider hltConfigProvider_
int ievt
int irun
bool isValidHltConfig_
int leptonflavor
reco::CandidateCollectionleptonscands_
unsigned long long m_cacheID_
int nElectron
int nEvents_
int nfourlept
int nHiggs
int nLepton
int nLooseIsolEle
int nLooseIsolMu
int nLumiSecs_
int nMuon
int nZEE
int nZMuMu
float pi
double ptThrMu1_
double ptThrMu2_
edm::InputTag theCaloJetCollectionLabel
edm::InputTag theCaloMETCollectionLabel
std::string theElecTriggerPathToPass
edm::InputTag theElectronCollectionLabel
edm::InputTag theMuonCollectionLabel
std::string theMuonTriggerPathToPass
edm::InputTag thePfMETCollectionLabel
edm::InputTag theTriggerResultsCollection

Detailed Description

Definition at line 43 of file HiggsDQM.h.


Constructor & Destructor Documentation

HiggsDQM::HiggsDQM ( const edm::ParameterSet ps)

Definition at line 129 of file HiggsDQM.cc.

References edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), and cmsCodeRules::cppFunctionSkipper::operator.

                                           {
 //cout<<"Entering  HiggsDQM::HiggsDQM: "<<endl;
 
  edm::LogInfo("HZZ4LeptonsDQM") <<  " Creating HZZ4LeptonsDQM " << "\n" ;
  bei_ = Service<DQMStore>().operator->();
  typedef std::vector<edm::InputTag> vtag;
  // Get parameters from configuration file
  theElecTriggerPathToPass    = ps.getParameter<string>("elecTriggerPathToPass");
  theMuonTriggerPathToPass    = ps.getParameter<string>("muonTriggerPathToPass");
  theTriggerResultsCollection = ps.getParameter<InputTag>("triggerResultsCollection");
  theMuonCollectionLabel      = ps.getParameter<InputTag>("muonCollection");
  theElectronCollectionLabel  = ps.getParameter<InputTag>("electronCollection");
  theCaloJetCollectionLabel   = ps.getParameter<InputTag>("caloJetCollection");
  theCaloMETCollectionLabel   = ps.getParameter<InputTag>("caloMETCollection");
  thePfMETCollectionLabel     = ps.getParameter<InputTag>("pfMETCollection");
  // just to initialize
  isValidHltConfig_ = false;
  // cuts:
  ptThrMu1_ = ps.getUntrackedParameter<double>("PtThrMu1");
  ptThrMu2_ = ps.getUntrackedParameter<double>("PtThrMu2");
 

  
 //cout<<"...leaving  HiggsDQM::HiggsDQM. "<<endl;
}
HiggsDQM::~HiggsDQM ( ) [virtual]

Definition at line 157 of file HiggsDQM.cc.

                   {
  //cout<<"Entering HiggsDQM::~HiggsDQM: "<<endl;
  
  edm::LogInfo("HiggsDQM") <<  " Deleting HiggsDQM " << "\n" ;

  //cout<<"...leaving HiggsDQM::~HiggsDQM. "<<endl;
}

Member Function Documentation

void HiggsDQM::analyze ( edm::Event const &  e,
edm::EventSetup const &  eSetup 
) [protected, virtual]

Implements edm::EDAnalyzer.

Definition at line 256 of file HiggsDQM.cc.

References edm::EventID::event(), edm::Event::getByLabel(), muon::GlobalMuonPromptTight, i, edm::EventBase::id(), reco::Muon::isGlobalMuon(), muon::isGoodMuon(), reco::Muon::isTrackerMuon(), edm::HandleBase::isValid(), j, LogDebug, reco::LeafCandidate::p(), PFMET_cfi::pfMet, edm::Handle< T >::product(), reco::LeafCandidate::pt(), reco::LeafCandidate::px(), reco::LeafCandidate::py(), reco::LeafCandidate::pz(), edm::EventID::run(), reco::Muon::SegmentAndTrackArbitration, muon::segmentCompatibility(), mathSSE::sqrt(), v, and GoodVertex_cfg::vertexCollection.

                                                                    {
  //cout<<"[HiggsDQM::analyze()] "<<endl;

//-------------------------------
//--- Trigger Info
//-------------------------------
  // short-circuit if hlt problems
  if( ! isValidHltConfig_ ) return;
  // Did it pass certain HLT path?
  Handle<TriggerResults> HLTresults;
  e.getByLabel(theTriggerResultsCollection, HLTresults); 
  if ( !HLTresults.isValid() ) return;
  //unsigned int triggerIndex_elec = hltConfig.triggerIndex(theElecTriggerPathToPass);
  //unsigned int triggerIndex_muon = hltConfig.triggerIndex(theMuonTriggerPathToPass);
  bool passed_electron_HLT = true;
  bool passed_muon_HLT     = true;
  //if (triggerIndex_elec < HLTresults->size()) passed_electron_HLT = HLTresults->accept(triggerIndex_elec);
  //if (triggerIndex_muon < HLTresults->size()) passed_muon_HLT     = HLTresults->accept(triggerIndex_muon);
  //if ( !(passed_electron_HLT || passed_muon_HLT) ) return;

//-------------------------------
//--- Vertex Info
//-------------------------------
  Handle<VertexCollection> vertexHandle;
  e.getByLabel("offlinePrimaryVertices", vertexHandle);
  if ( vertexHandle.isValid() ){
    VertexCollection vertexCollection = *(vertexHandle.product());
    int vertex_number     = vertexCollection.size();
    VertexCollection::const_iterator v = vertexCollection.begin();
    double vertex_chi2    = v->normalizedChi2(); //v->chi2();
    double vertex_d0      = sqrt(v->x()*v->x()+v->y()*v->y());
    //double vertex_ndof    = v->ndof();cout << "ndof="<<vertex_ndof<<endl;
    double vertex_numTrks = v->tracksSize();
    double vertex_sumTrks = 0.0;
    for (Vertex::trackRef_iterator vertex_curTrack = v->tracks_begin(); vertex_curTrack!=v->tracks_end(); vertex_curTrack++) {
      vertex_sumTrks += (*vertex_curTrack)->pt();
    }
    h_vertex_number->Fill(vertex_number);
    h_vertex_chi2->Fill(vertex_chi2);
    h_vertex_d0  ->Fill(vertex_d0);
    h_vertex_numTrks->Fill(vertex_numTrks);
    h_vertex_sumTrks->Fill(vertex_sumTrks);
  }
  
//-------------------------------
//--- Electrons
//-------------------------------
  float nEle=0;
  Handle<GsfElectronCollection> electronCollection;
  e.getByLabel(theElectronCollectionLabel, electronCollection);
  if ( electronCollection.isValid() ){
    int posEle=0,negEle=0;
    // If it passed electron HLT and the collection was found, find electrons near Z mass
    if( passed_electron_HLT ) {
      for (reco::GsfElectronCollection::const_iterator recoElectron=electronCollection->begin(); recoElectron!=electronCollection->end(); recoElectron++){
//      cout << "Electron with pt= " <<  recoElectron->pt() << " and eta" << recoElectron->eta() << " p=" <<  recoElectron->p() << endl;
        h_ePt->Fill(recoElectron->pt());
        h_eEta->Fill(recoElectron->eta());
        h_ePhi->Fill(recoElectron->phi());
        if(recoElectron->charge()==1){
          posEle++;
        }else if(recoElectron->charge()==-1){
          negEle++;
        }
      // Require electron to pass some basic cuts
      //if ( recoElectron->et() < 20 || fabs(recoElectron->eta())>2.5 ) continue;
      // Tighter electron cuts
      //if ( recoElectron->deltaPhiSuperClusterTrackAtVtx() > 0.58 || 
      //     recoElectron->deltaEtaSuperClusterTrackAtVtx() > 0.01 || 
      //     recoElectron->sigmaIetaIeta() > 0.027 ) continue;
      } // end of loop over electrons
    } // end if passed HLT
    nEle = posEle+negEle; if(nEle>9.) nEle=9.;
    h_eMultiplicity->Fill(nEle);  

    // Z->ee:
    unsigned int eleCollectionSize = electronCollection->size();
    for(unsigned int i=0; i<eleCollectionSize; i++) {
      const GsfElectron& ele = electronCollection->at(i);
      double pt = ele.pt();
      if(pt>ptThrMu1_){
        for(unsigned int j=i+1; j<eleCollectionSize; j++) {
          const GsfElectron& ele2 = electronCollection->at(j);
          double pt2 = ele2.pt();
          if(pt2>ptThrMu2_){
            const math::XYZTLorentzVector ZRecoEE (ele.px()+ele2.px(), ele.py()+ele2.py() , ele.pz()+ele2.pz(), ele.p()+ele2.p());
            h_dielemass->Fill(ZRecoEE.mass());
          }
        }
      }
    }
  }
  
  
  
//-------------------------------
//--- Muons
//-------------------------------
  float nMu=0;
  Handle<MuonCollection> muonCollection;
  e.getByLabel(theMuonCollectionLabel,muonCollection);
  if ( muonCollection.isValid() ){
    // Find the highest pt muons
    int posMu=0,negMu=0;
    TLorentzVector m1, m2;
    if( passed_muon_HLT ) {
      for (reco::MuonCollection::const_iterator recoMuon=muonCollection->begin(); recoMuon!=muonCollection->end(); recoMuon++){
        //cout << "Muon with pt= " <<  muIter->pt() << " and eta" << muIter->eta() << " p=" <<  muIter->p() << endl;
        if(recoMuon->isGlobalMuon()&&recoMuon->isTrackerMuon()){
          h_mPt_GMTM->Fill(recoMuon->pt());
          h_mEta_GMTM->Fill(recoMuon->eta());
          h_mPhi_GMTM->Fill(recoMuon->phi());
        }else if(recoMuon->isGlobalMuon()&&(muon::isGoodMuon( (*recoMuon),muon::GlobalMuonPromptTight))){
          h_mPt_GMPT->Fill(recoMuon->pt());
          h_mEta_GMPT->Fill(recoMuon->eta());
          h_mPhi_GMPT->Fill(recoMuon->phi());
        }else if(recoMuon->isGlobalMuon()){
          h_mPt_GM->Fill(recoMuon->pt());
          h_mEta_GM->Fill(recoMuon->eta());
          h_mPhi_GM->Fill(recoMuon->phi());
        }else if(recoMuon->isTrackerMuon()&&(muon::segmentCompatibility((*recoMuon),reco::Muon::SegmentAndTrackArbitration))){
          h_mPt_TM->Fill(recoMuon->pt());
          h_mEta_TM->Fill(recoMuon->eta());
          h_mPhi_TM->Fill(recoMuon->phi());
        }else if(recoMuon->isStandAloneMuon()){
          h_mPt_STAM->Fill(recoMuon->pt());
          h_mEta_STAM->Fill(recoMuon->eta());
          h_mPhi_STAM->Fill(recoMuon->phi());
        }
        if ( recoMuon->charge()==1 ){
          posMu++;
        }else if ( recoMuon->charge()==-1 ){
          negMu++;
        }
      }
      nMu = posMu+negMu; if(nMu>9.) nMu=9.;
      h_mMultiplicity->Fill(nMu);
    }

    // Z->mumu:
    unsigned int muonCollectionSize = muonCollection->size();
    for(unsigned int i=0; i<muonCollectionSize; i++) {
      const Muon& mu = muonCollection->at(i);
      //if (!mu.isGlobalMuon()) continue;
      double pt = mu.pt();
      if(pt>ptThrMu1_){
        for(unsigned int j=i+1; j<muonCollectionSize; j++) {
          const Muon& mu2 = muonCollection->at(j);
          double pt2 = mu2.pt();
          if(pt2>ptThrMu2_){
            // Glb + Glb  
            if(mu.isGlobalMuon() && mu2.isGlobalMuon()){
              const math::XYZTLorentzVector ZRecoGMGM (mu.px()+mu2.px(), mu.py()+mu2.py() , mu.pz()+mu2.pz(), mu.p()+mu2.p());
              h_dimumass_GMGM->Fill(ZRecoGMGM.mass());
            }
            // Glb + TM 
            else if(mu.isGlobalMuon() && mu2.isTrackerMuon()){
              const math::XYZTLorentzVector ZRecoGMTM (mu.px()+mu2.px(), mu.py()+mu2.py() , mu.pz()+mu2.pz(), mu.p()+mu2.p());
              h_dimumass_GMTM->Fill(ZRecoGMTM.mass());
            }
            // TM + TM 
            else if(mu.isTrackerMuon() && mu2.isTrackerMuon()){
              const math::XYZTLorentzVector ZRecoTMTM (mu.px()+mu2.px(), mu.py()+mu2.py() , mu.pz()+mu2.pz(), mu.p()+mu2.p());
              h_dimumass_TMTM->Fill(ZRecoTMTM.mass());
            }
          }
        }
      }
    }
  }
  
//-------------------------------
//--- Jets
//-------------------------------
  Handle<CaloJetCollection> caloJetCollection;
  e.getByLabel (theCaloJetCollectionLabel,caloJetCollection);
  if ( caloJetCollection.isValid() ){
    float jet_et    = -8.0;
    float jet_eta   = -8.0;
    float jet_phi   = -8.0;
    int   jet_count = 0;
    float jet2_et   = -9.0;
    float jet2_eta  = -9.0;
    float jet2_phi  = -9.0;
    for (CaloJetCollection::const_iterator i_calojet = caloJetCollection->begin(); i_calojet != caloJetCollection->end(); i_calojet++) {
      float jet_current_et = i_calojet->et();
      // if it overlaps with electron, it is not a jet
      //if ( electron_et>0.0 && fabs(i_calojet->eta()-electron_eta ) < 0.2 && calcDeltaPhi(i_calojet->phi(), electron_phi ) < 0.2) continue;
      //if ( electron2_et>0.0&& fabs(i_calojet->eta()-electron2_eta) < 0.2 && calcDeltaPhi(i_calojet->phi(), electron2_phi) < 0.2) continue;
      // if it has too low Et, throw away
      if (jet_current_et < 15) continue;
      jet_count++;
      if (jet_current_et > jet_et) {
        jet2_et  = jet_et;  // 2nd highest jet get's et from current highest
        jet2_eta = jet_eta;
        jet2_phi = jet_phi;
        jet_et   = i_calojet->et(); // current highest jet gets et from the new highest
        jet_eta  = i_calojet->eta();
        jet_phi  = i_calojet->phi();
      } else if (jet_current_et > jet2_et) {
        jet2_et  = i_calojet->et();
        jet2_eta = i_calojet->eta();
        jet2_phi = i_calojet->phi();
      }
    }
    if (jet_et>0.0) {
      h_jet_et   ->Fill(jet_et);
      h_jet_count->Fill(jet_count);
    }
  }
  
//-------------------------------
//--- MET
//-------------------------------
  Handle<CaloMETCollection> caloMETCollection;
  e.getByLabel(theCaloMETCollectionLabel, caloMETCollection);
  if ( caloMETCollection.isValid() ){
    float caloMet = caloMETCollection->begin()->et();
    float caloMet_phi = caloMETCollection->begin()->phi();
    h_caloMet        ->Fill(caloMet);
    h_caloMet_phi    ->Fill(caloMet_phi);
  }
  Handle<PFMETCollection> pfMETCollection;
  e.getByLabel(thePfMETCollectionLabel, pfMETCollection);
  if ( pfMETCollection.isValid() ){
    float pfMet = pfMETCollection->begin()->et();
    float pfMet_phi = pfMETCollection->begin()->phi();
    h_pfMet        ->Fill(pfMet);
    h_pfMet_phi    ->Fill(pfMet_phi);
  }
  
//-------------------------------------
//--- Events with more than 2 leptons:
//-------------------------------------
  if(nMu+nEle > 2 && nMu+nEle < 10){
    if(nMu==0 && nEle==3) h_lepcounts->Fill(0);
    if(nMu==0 && nEle==4) h_lepcounts->Fill(1);
    if(nMu==0 && nEle==5) h_lepcounts->Fill(2);
    if(nMu==0 && nEle==6) h_lepcounts->Fill(3);
    if(nMu==0 && nEle==7) h_lepcounts->Fill(4);
    if(nMu==0 && nEle==8) h_lepcounts->Fill(5);
    if(nMu==0 && nEle==9) h_lepcounts->Fill(6);
    if(nMu==1 && nEle==2) h_lepcounts->Fill(7);
    if(nMu==1 && nEle==3) h_lepcounts->Fill(8);
    if(nMu==1 && nEle==4) h_lepcounts->Fill(9);
    if(nMu==1 && nEle==5) h_lepcounts->Fill(10);
    if(nMu==1 && nEle==6) h_lepcounts->Fill(11);
    if(nMu==1 && nEle==7) h_lepcounts->Fill(12);
    if(nMu==1 && nEle==8) h_lepcounts->Fill(13);
    if(nMu==2 && nEle==1) h_lepcounts->Fill(14);
    if(nMu==2 && nEle==2) h_lepcounts->Fill(15);
    if(nMu==2 && nEle==3) h_lepcounts->Fill(16);
    if(nMu==2 && nEle==4) h_lepcounts->Fill(17);
    if(nMu==2 && nEle==5) h_lepcounts->Fill(18);
    if(nMu==2 && nEle==6) h_lepcounts->Fill(19);
    if(nMu==2 && nEle==7) h_lepcounts->Fill(20);
    if(nMu==3 && nEle==0) h_lepcounts->Fill(21);
    if(nMu==3 && nEle==1) h_lepcounts->Fill(22);
    if(nMu==3 && nEle==2) h_lepcounts->Fill(23);
    if(nMu==3 && nEle==3) h_lepcounts->Fill(24);
    if(nMu==3 && nEle==4) h_lepcounts->Fill(25);
    if(nMu==3 && nEle==5) h_lepcounts->Fill(26);
    if(nMu==3 && nEle==6) h_lepcounts->Fill(27);
    if(nMu==4 && nEle==0) h_lepcounts->Fill(28);
    if(nMu==4 && nEle==1) h_lepcounts->Fill(29);
    if(nMu==4 && nEle==2) h_lepcounts->Fill(30);
    if(nMu==4 && nEle==3) h_lepcounts->Fill(31);
    if(nMu==4 && nEle==4) h_lepcounts->Fill(32);
    if(nMu==4 && nEle==5) h_lepcounts->Fill(33);
    if(nMu==5 && nEle==0) h_lepcounts->Fill(34);
    if(nMu==5 && nEle==1) h_lepcounts->Fill(35);
    if(nMu==5 && nEle==2) h_lepcounts->Fill(36);
    if(nMu==5 && nEle==3) h_lepcounts->Fill(37);
    if(nMu==5 && nEle==4) h_lepcounts->Fill(38);
    if(nMu==6 && nEle==0) h_lepcounts->Fill(39);
    if(nMu==6 && nEle==1) h_lepcounts->Fill(40);
    if(nMu==6 && nEle==2) h_lepcounts->Fill(41);
    if(nMu==6 && nEle==3) h_lepcounts->Fill(42);
    if(nMu==7 && nEle==0) h_lepcounts->Fill(43);
    if(nMu==7 && nEle==1) h_lepcounts->Fill(44);
    if(nMu==7 && nEle==2) h_lepcounts->Fill(45);
    if(nMu==8 && nEle==0) h_lepcounts->Fill(46);
    if(nMu==8 && nEle==1) h_lepcounts->Fill(47);
    if(nMu==9 && nEle==0) h_lepcounts->Fill(48);
    
  
  }
  if ((nMu+nEle) >= 10)
    LogDebug("HiggsDQM") <<"WARNING: "<<nMu+nEle<<" leptons in this event: run="<<e.id().run()<<", event="<<e.id().event()<< "\n"; 
//     std::cout <<"WARNING: "<<nMu+nEle<<" leptons in this event: run="<<e.id().run()<<", event="<<e.id().event()<< "\n"; 
  
/*  /// channel conditions
  nElectron=0;
  nMuon=0;
  if (decaychannel=="2e2mu") {
    if ( posEle>=1 && negEle>=1 ) {
      nElectron=posEle+negEle;
    }
    if ( posMu>=1 && negMu>=1 ) {
      nMuon=posMu+negMu;
    }
  }
  else if (decaychannel=="4e") {
    if ( posEle>=2 && negEle>=2 ) {
      nElectron=posEle+negEle;
    }
  }
  else if (decaychannel=="4mu") {
    if ( posMu>=2 && negMu>=2 ) {
      nMuon=posMu+negMu;
    }  
  }
       

  // Pairs of EE MuMu 
  int nZEE=0,nZMuMu=0;
  if (decaychannel=="2e2mu"){
    Handle<CompositeCandidateCollection> zEECandidates;
    e.getByLabel(zToEETag_.label(), zEECandidates);    
    for ( CompositeCandidateCollection::const_iterator zIter=zEECandidates->begin(); zIter!= zEECandidates->end(); ++zIter ) {
//      cout << "Zee mass= " << double(zIter->p4().mass()) << endl;
      if ( double(zIter->p4().mass())> 12. ){ 
        nZEE++;
      }
    }
    Handle<CompositeCandidateCollection> zMuMuCandidates;
    e.getByLabel(zToMuMuTag_.label(), zMuMuCandidates);
    for ( CompositeCandidateCollection::const_iterator zIter=zMuMuCandidates->begin(); zIter!= zMuMuCandidates->end(); ++zIter ) {
//      cout << "Zmumu mass= " << double(zIter->p4().mass()) << endl;
      if ( zIter->p4().mass()> 12. ){
        nZMuMu++;
      }
    }    
  }
  
  // exclusive couples ZEE and ZMUMU
  if (decaychannel=="4e" ){
    Handle<CompositeCandidateCollection> higgsCandidates;
    e.getByLabel(hTozzTo4leptonsTag_.label(), higgsCandidates);
    for ( CompositeCandidateCollection::const_iterator hIter=higgsCandidates->begin(); hIter!= higgsCandidates->end(); ++hIter ) {
      if (nZEE<2) nZEE=0;
      for (size_t ndau=0; ndau<hIter->numberOfDaughters();ndau++){
        if ( hIter->daughter(ndau)->p4().mass()> 12.){  
          nZEE++;
        }
      }
    }
  }
  //
  if (decaychannel=="4mu" ){
    Handle<CompositeCandidateCollection> higgsCandidates;
    e.getByLabel(hTozzTo4leptonsTag_.label(), higgsCandidates);
    for ( CompositeCandidateCollection::const_iterator hIter=higgsCandidates->begin(); hIter!= higgsCandidates->end(); ++hIter ) {
      if (nZMuMu<2) nZMuMu=0;
      for (size_t ndau=0; ndau<hIter->numberOfDaughters();ndau++){
        if ( hIter->daughter(ndau)->p4().mass()> 12. ){  
          nZMuMu++;
        }
      }
    }
  }

  // 4 lepton combinations
  Handle<CompositeCandidateCollection> higgsCandidates;
  e.getByLabel(hTozzTo4leptonsTag_.label(), higgsCandidates);
   int nHiggs=0;
  for ( CompositeCandidateCollection::const_iterator hIter=higgsCandidates->begin(); hIter!= higgsCandidates->end(); ++hIter ) {
    if ( hIter->p4().mass()> 100. ){  
      nHiggs++;
    }
  }    
*/
//  cout<<"Z and Higgs candidates: "<<nZEE<<" "<<nZMuMu<<" "<<nHiggs<<endl;

  //cout<<"[leaving HiggsDQM::analyze()] "<<endl;

}
void HiggsDQM::beginJob ( void  ) [protected, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 167 of file HiggsDQM.cc.

References bookHistos(), and pi.

                       {
  //cout<<"Entering HiggsDQM::beginJob: "<<endl;

  nLumiSecs_ = 0;
  nEvents_   = 0;
  bei_->setCurrentFolder("Physics/Higgs");
  bookHistos(bei_);
  pi = 3.14159265;
  

  //cout<<"...leaving HiggsDQM::beginJob. "<<endl;
}
void HiggsDQM::beginLuminosityBlock ( edm::LuminosityBlock const &  lumiSeg,
edm::EventSetup const &  context 
) [protected, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 196 of file HiggsDQM.cc.

                                                                          {
  //cout<<"Entering HiggsDQM::beginLuminosityBlock: "<<endl;
  
  edm::LogInfo ("HiggsDQM") <<"[HiggsDQM]: Begin of LS transition";

  //cout<<"...leaving HiggsDQM::beginLuminosityBlock. "<<endl;
}
void HiggsDQM::beginRun ( edm::Run const &  run,
edm::EventSetup const &  eSetup 
) [protected, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 182 of file HiggsDQM.cc.

                                                                   {
  edm::LogInfo ("HiggsDQM") <<"[HiggsDQM]: Begining of Run";
  // passed as parameter to HLTConfigProvider::init(), not yet used
  bool isConfigChanged = false;
  
  // isValidHltConfig_ used to short-circuit analyze() in case of problems
  //  const std::string hltProcessName( "HLT" );
  const std::string hltProcessName = theTriggerResultsCollection.process();
  isValidHltConfig_ = hltConfigProvider_.init( run, eSetup, hltProcessName, isConfigChanged );

}
void HiggsDQM::bookHistos ( DQMStore bei) [private]

Definition at line 207 of file HiggsDQM.cc.

References DQMStore::book1D(), DQMStore::cd(), and DQMStore::setCurrentFolder().

                                      {
  bei->cd();
  bei->setCurrentFolder("Physics/Higgs");
  h_vertex_number = bei->book1D("h_vertex_number", "Number of event vertices in collection", 10,-0.5,   9.5 );
  h_vertex_chi2  = bei->book1D("h_vertex_chi2" , "Event Vertex #chi^{2}/n.d.o.f."          , 100, 0.0,   2.0 );
  h_vertex_numTrks = bei->book1D("h_vertex_numTrks", "Event Vertex, number of tracks"     , 100, -0.5,  99.5 );
  h_vertex_sumTrks = bei->book1D("h_vertex_sumTrks", "Event Vertex, sum of track pt"      , 100,  0.0, 100.0 );
  h_vertex_d0    = bei->book1D("h_vertex_d0"   , "Event Vertex d0"                        , 100,  -10.0,  10.0);
  h_jet_et       = bei->book1D("h_jet_et",       "Jet with highest E_{T} (from "+theCaloJetCollectionLabel.label()+");E_{T}(1^{st} jet) (GeV)",    20, 0., 200.0);
  h_jet2_et      = bei->book1D("h_jet2_et",      "Jet with 2^{nd} highest E_{T} (from "+theCaloJetCollectionLabel.label()+");E_{T}(2^{nd} jet) (GeV)",    20, 0., 200.0);
  h_jet_count    = bei->book1D("h_jet_count",    "Number of "+theCaloJetCollectionLabel.label()+" (E_{T} > 15 GeV);Number of Jets", 8, -0.5, 7.5);
  h_caloMet      = bei->book1D("h_caloMet",        "Calo Missing E_{T}; GeV"          , 20,  0.0 , 100);
  h_caloMet_phi  = bei->book1D("h_caloMet_phi",    "Calo Missing E_{T} #phi;#phi(MET)", 35, -3.5, 3.5 );
  h_pfMet        = bei->book1D("h_pfMet",        "Pf Missing E_{T}; GeV"          , 20,  0.0 , 100);
  h_pfMet_phi    = bei->book1D("h_pfMet_phi",    "Pf Missing E_{T} #phi;#phi(MET)", 35, -3.5, 3.5 );
  h_eMultiplicity = bei_->book1D("NElectrons","# of electrons per event",10,0.,10.);
  h_mMultiplicity = bei_->book1D("NMuons","# of muons per event",10,0.,10.);
  h_ePt = bei_->book1D("ElePt","Pt of electrons",50,0.,100.);
  h_eEta = bei_->book1D("EleEta","Eta of electrons",100,-5.,5.);
  h_ePhi = bei_->book1D("ElePhi","Phi of electrons",100,-3.5,3.5);
  h_mPt_GMTM = bei_->book1D("MuonPt_GMTM","Pt of global+tracker muons",50,0.,100.);
  h_mEta_GMTM = bei_->book1D("MuonEta_GMTM","Eta of global+tracker muons",60,-3.,3.);
  h_mPhi_GMTM = bei_->book1D("MuonPhi_GMTM","Phi of global+tracker muons",70,-3.5,3.5);
  h_mPt_GMPT = bei_->book1D("MuonPt_GMPT","Pt of global prompt-tight muons",50,0.,100.);
  h_mEta_GMPT = bei_->book1D("MuonEta_GMPT","Eta of global prompt-tight muons",60,-3.,3.);
  h_mPhi_GMPT = bei_->book1D("MuonPhi_GMPT","Phi of global prompt-tight muons",70,-3.5,3.5);
  h_mPt_GM = bei_->book1D("MuonPt_GM","Pt of global muons",50,0.,100.);
  h_mEta_GM = bei_->book1D("MuonEta_GM","Eta of global muons",60,-3.,3.);
  h_mPhi_GM = bei_->book1D("MuonPhi_GM","Phi of global muons",70,-3.5,3.5);
  h_mPt_TM = bei_->book1D("MuonPt_TM","Pt of tracker muons",50,0.,100.);
  h_mEta_TM = bei_->book1D("MuonEta_TM","Eta of tracker muons",60,-3.,3.);
  h_mPhi_TM = bei_->book1D("MuonPhi_TM","Phi of tracker muons",70,-3.5,3.5);
  h_mPt_STAM = bei_->book1D("MuonPt_STAM","Pt of STA muons",50,0.,100.);
  h_mEta_STAM = bei_->book1D("MuonEta_STAM","Eta of STA muons",60,-3.,3.);
  h_mPhi_STAM = bei_->book1D("MuonPhi_STAM","Phi of STA muons",70,-3.5,3.5);
  h_eCombIso = bei_->book1D("EleCombIso","CombIso of electrons",100,0.,10.);
  h_mCombIso = bei_->book1D("MuonCombIso","CombIso of muons",100,0.,10.);
  h_dimumass_GMGM = bei->book1D("DimuMass_GMGM","Invariant mass of GMGM pairs",100,0.,200.);
  h_dimumass_GMTM = bei->book1D("DimuMass_GMTM","Invariant mass of GMTM pairs",100,0.,200.);
  h_dimumass_TMTM = bei->book1D("DimuMass_TMTM","Invariant mass of TMTM pairs",100,0.,200.);
  h_dielemass = bei->book1D("DieleMass","Invariant mass of EE pairs",100,0.,200.);
  h_lepcounts = bei->book1D("LeptonCounts","LeptonCounts for multi lepton events",49,0.,49.);
  
  bei->cd();  

}
double HiggsDQM::calcDeltaPhi ( double  phi1,
double  phi2 
) [private]

Definition at line 117 of file HiggsDQM.cc.

References Geom::deltaPhi().

                                                      {
  double deltaPhi = phi1 - phi2;
  if (deltaPhi < 0) deltaPhi = -deltaPhi;
  if (deltaPhi > 3.1415926) {
    deltaPhi = 2 * 3.1415926 - deltaPhi;
  }
  return deltaPhi;
}
double HiggsDQM::Distance ( const reco::Candidate c1,
const reco::Candidate c2 
) [private]

Definition at line 108 of file HiggsDQM.cc.

References deltaR().

                                                                              {
        return  deltaR(c1,c2);
}
double HiggsDQM::DistancePhi ( const reco::Candidate c1,
const reco::Candidate c2 
) [private]

Definition at line 112 of file HiggsDQM.cc.

References Geom::deltaPhi(), and reco::Candidate::p4().

                                                                                 {
        return  deltaPhi(c1.p4().phi(),c2.p4().phi());
}
void HiggsDQM::endJob ( void  ) [protected, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 663 of file HiggsDQM.cc.

                     {
//  cout<<"In HiggsDQM::endJob "<<endl;
  edm::LogInfo("HiggsDQM") <<"[HiggsDQM]: endjob called!";

}
void HiggsDQM::endLuminosityBlock ( edm::LuminosityBlock const &  lumiSeg,
edm::EventSetup const &  c 
) [protected, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 636 of file HiggsDQM.cc.

References edm::LuminosityBlockBase::luminosityBlock().

                                                                                                {
//  cout<<"Entering HiggsDQM::endLuminosityBlock: "<<endl;

  edm::LogInfo ("HiggsDQM") <<"[HiggsDQM]: End of LS transition, performing the DQM client operation";

  nLumiSecs_++;
  //cout << "nLumiSecs_: "<< nLumiSecs_ << endl;
  
  edm::LogInfo("HiggsDQM") << "====================================================== " << endl << " ===> Iteration # " << nLumiSecs_ << " " << lumiSeg.luminosityBlock() << endl  << "====================================================== " << endl;

//  cout<<"...leaving HiggsDQM::endLuminosityBlock. "<<endl;
}
void HiggsDQM::endRun ( edm::Run const &  run,
edm::EventSetup const &  eSetup 
) [protected, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 651 of file HiggsDQM.cc.

                                                                   {
//  cout<<"Entering HiggsDQM::endRun: "<<endl;

  //edm::LogVerbatim ("HiggsDQM") <<"[HiggsDQM]: End of Run, saving  DQM output ";
  //int iRun = run.run();
  
//  cout<<"...leaving HiggsDQM::endRun. "<<endl;
}

Member Data Documentation

Definition at line 79 of file HiggsDQM.h.

Definition at line 104 of file HiggsDQM.h.

Definition at line 105 of file HiggsDQM.h.

Definition at line 134 of file HiggsDQM.h.

Definition at line 131 of file HiggsDQM.h.

Definition at line 132 of file HiggsDQM.h.

Definition at line 133 of file HiggsDQM.h.

Definition at line 129 of file HiggsDQM.h.

Definition at line 112 of file HiggsDQM.h.

Definition at line 109 of file HiggsDQM.h.

Definition at line 113 of file HiggsDQM.h.

Definition at line 111 of file HiggsDQM.h.

Definition at line 102 of file HiggsDQM.h.

Definition at line 103 of file HiggsDQM.h.

Definition at line 101 of file HiggsDQM.h.

Definition at line 135 of file HiggsDQM.h.

Definition at line 130 of file HiggsDQM.h.

Definition at line 121 of file HiggsDQM.h.

Definition at line 118 of file HiggsDQM.h.

Definition at line 115 of file HiggsDQM.h.

Definition at line 127 of file HiggsDQM.h.

Definition at line 124 of file HiggsDQM.h.

Definition at line 110 of file HiggsDQM.h.

Definition at line 122 of file HiggsDQM.h.

Definition at line 119 of file HiggsDQM.h.

Definition at line 116 of file HiggsDQM.h.

Definition at line 128 of file HiggsDQM.h.

Definition at line 125 of file HiggsDQM.h.

Definition at line 120 of file HiggsDQM.h.

Definition at line 117 of file HiggsDQM.h.

Definition at line 114 of file HiggsDQM.h.

Definition at line 126 of file HiggsDQM.h.

Definition at line 123 of file HiggsDQM.h.

Definition at line 106 of file HiggsDQM.h.

Definition at line 107 of file HiggsDQM.h.

Definition at line 97 of file HiggsDQM.h.

Definition at line 98 of file HiggsDQM.h.

Definition at line 96 of file HiggsDQM.h.

Definition at line 99 of file HiggsDQM.h.

Definition at line 100 of file HiggsDQM.h.

Definition at line 80 of file HiggsDQM.h.

int HiggsDQM::ievt [private]

Definition at line 74 of file HiggsDQM.h.

int HiggsDQM::irun [private]

Definition at line 74 of file HiggsDQM.h.

Definition at line 81 of file HiggsDQM.h.

int HiggsDQM::leptonflavor [private]

Definition at line 76 of file HiggsDQM.h.

Definition at line 75 of file HiggsDQM.h.

unsigned long long HiggsDQM::m_cacheID_ [private]

Definition at line 72 of file HiggsDQM.h.

int HiggsDQM::nElectron [private]

Definition at line 108 of file HiggsDQM.h.

int HiggsDQM::nEvents_ [private]

Definition at line 74 of file HiggsDQM.h.

int HiggsDQM::nfourlept [private]

Definition at line 108 of file HiggsDQM.h.

int HiggsDQM::nHiggs [private]

Definition at line 108 of file HiggsDQM.h.

int HiggsDQM::nLepton [private]

Definition at line 108 of file HiggsDQM.h.

int HiggsDQM::nLooseIsolEle [private]

Definition at line 108 of file HiggsDQM.h.

int HiggsDQM::nLooseIsolMu [private]

Definition at line 108 of file HiggsDQM.h.

int HiggsDQM::nLumiSecs_ [private]

Definition at line 73 of file HiggsDQM.h.

int HiggsDQM::nMuon [private]

Definition at line 108 of file HiggsDQM.h.

int HiggsDQM::nZEE [private]

Definition at line 108 of file HiggsDQM.h.

int HiggsDQM::nZMuMu [private]

Definition at line 108 of file HiggsDQM.h.

float HiggsDQM::pi [private]

Definition at line 77 of file HiggsDQM.h.

double HiggsDQM::ptThrMu1_ [private]

Definition at line 92 of file HiggsDQM.h.

double HiggsDQM::ptThrMu2_ [private]

Definition at line 93 of file HiggsDQM.h.

Definition at line 89 of file HiggsDQM.h.

Definition at line 90 of file HiggsDQM.h.

std::string HiggsDQM::theElecTriggerPathToPass [private]

Definition at line 84 of file HiggsDQM.h.

Definition at line 88 of file HiggsDQM.h.

Definition at line 87 of file HiggsDQM.h.

std::string HiggsDQM::theMuonTriggerPathToPass [private]

Definition at line 85 of file HiggsDQM.h.

Definition at line 91 of file HiggsDQM.h.

Definition at line 86 of file HiggsDQM.h.