Definition at line 39 of file ZMuMu_efficiencyAnalyzer.cc.
ZMuMu_efficiencyAnalyzer::ZMuMu_efficiencyAnalyzer | ( | const edm::ParameterSet & | pset | ) |
Definition at line 105 of file ZMuMu_efficiencyAnalyzer.cc.
References gather_cfg::cout, etaBins, etaRange, h_zmm1HLTminus_mass, h_zmm1HLTplus_mass, h_zmm2HLT_mass, h_zmm_mass, h_zmmNotIsominus_mass, h_zmmNotIsoplus_mass, h_zmsminus_mass, h_zmsplus_mass, h_zmtminus_mass, h_zmtplus_mass, hmumu1HLTminus_eta, hmumu1HLTminus_pt, hmumu1HLTplus_eta, hmumu1HLTplus_pt, hmumu2HLTminus_eta, hmumu2HLTminus_pt, hmumu2HLTplus_eta, hmumu2HLTplus_pt, hmumuNotIsominus_eta, hmumuNotIsominus_pt, hmumuNotIsoplus_eta, hmumuNotIsoplus_pt, hmustaminus_eta, hmustaminus_pt, hmustaplus_eta, hmustaplus_pt, hmutrackminus_eta, hmutrackminus_pt, hmutrackplus_eta, hmutrackplus_pt, i, TFileDirectory::make(), nGlobalMuonsMatched_passed, ptBins, and ptRange.
: zMuMu_(pset.getParameter<InputTag>("zMuMu")), zMuMuMatchMap_(pset.getParameter<InputTag>("zMuMuMatchMap")), zMuStandAlone_(pset.getParameter<InputTag>("zMuStandAlone")), zMuStandAloneMatchMap_(pset.getParameter<InputTag>("zMuStandAloneMatchMap")), zMuTrack_(pset.getParameter<InputTag>("zMuTrack")), zMuTrackMatchMap_(pset.getParameter<InputTag>("zMuTrackMatchMap")), muons_(pset.getParameter<InputTag>("muons")), tracks_(pset.getParameter<InputTag>("tracks")), genParticles_(pset.getParameter<InputTag>( "genParticles" ) ), primaryVertices_(pset.getParameter<InputTag>( "primaryVertices" ) ), bothMuons_(pset.getParameter<bool>("bothMuons")), etamax_(pset.getUntrackedParameter<double>("etamax")), ptmin_(pset.getUntrackedParameter<double>("ptmin")), massMin_(pset.getUntrackedParameter<double>("zMassMin")), massMax_(pset.getUntrackedParameter<double>("zMassMax")), isoMax_(pset.getUntrackedParameter<double>("isomax")) { Service<TFileService> fs; // general histograms h_zmm_mass = fs->make<TH1D>("zmm_mass","zmumu mass",100,0.,200.); h_zmm2HLT_mass = fs->make<TH1D>("zmm2HLT_mass","zmumu 2HLT mass",100,0.,200.); h_zmm1HLTplus_mass = fs->make<TH1D>("zmm1HLTplus_mass","zmumu 1HLT plus mass",100,0.,200.); h_zmmNotIsoplus_mass = fs->make<TH1D>("zmmNotIsoplus_mass","zmumu a least One Not Iso plus mass",100,0.,200.); h_zmsplus_mass = fs->make<TH1D>("zmsplus_mass","zmusta plus mass",100,0.,200.); h_zmtplus_mass = fs->make<TH1D>("zmtplus_mass","zmutrack plus mass",100,0.,200.); h_zmm1HLTminus_mass = fs->make<TH1D>("zmm1HLTminus_mass","zmumu 1HLT minus mass",100,0.,200.); h_zmmNotIsominus_mass = fs->make<TH1D>("zmmNotIsominus_mass","zmumu a least One Not Iso minus mass",100,0.,200.); h_zmsminus_mass = fs->make<TH1D>("zmsminus_mass","zmusta minus mass",100,0.,200.); h_zmtminus_mass = fs->make<TH1D>("zmtminus_mass","zmutrack minus mass",100,0.,200.); cout << "primo" << endl; // creating histograms for each Pt, eta interval TFileDirectory etaDirectory = fs->mkdir("etaIntervals"); // in this directory will be saved all the histos of different eta intervals TFileDirectory ptDirectory = fs->mkdir("ptIntervals"); // in this directory will be saved all the histos of different pt intervals // binning of entries array (at moment defined by hand and not in cfg file) etaBins = 6; ptBins = 4; double etaRangeTmp[7] = {-2.,-1.2,-0.8,0.,0.8,1.2,2.}; double ptRangeTmp[5] = {20.,40.,60.,80.,100.}; for (unsigned int i=0;i<=etaBins;i++) etaRange[i] = etaRangeTmp[i]; for (unsigned int i=0;i<=ptBins;i++) ptRange[i] = ptRangeTmp[i]; // eta histograms creation cout << "eta istograms creation " << endl; for (unsigned int i=0;i<etaBins;i++) { cout << " bin eta plus " << i << endl; // muon plus double range0 = etaRange[i]; double range1= etaRange[i+1]; char ap[30], bp[50]; sprintf(ap,"zmumu2HLTplus_etaRange%d",i); sprintf(bp,"zmumu2HLT plus mass eta Range %f to %f",range0,range1); cout << ap << " " << bp << endl; hmumu2HLTplus_eta.push_back(etaDirectory.make<TH1D>(ap,bp,200,0.,200.)); sprintf(ap,"zmumu1HLTplus_etaRange%d",i); sprintf(bp,"zmumu1HLT plus mass eta Range %f to %f",range0,range1); cout << ap << " " << bp << endl; hmumu1HLTplus_eta.push_back(etaDirectory.make<TH1D>(ap,bp,200,0.,200.)); sprintf(ap,"zmustaplus_etaRange%d",i); sprintf(bp,"zmusta plus mass eta Range %f to %f",range0,range1); cout << ap << " " << bp << endl; hmustaplus_eta.push_back(etaDirectory.make<TH1D>(ap,bp,50,0.,200.)); sprintf(ap,"zmutrackplus_etaRange%d",i); sprintf(bp,"zmutrack plus mass eta Range %f to %f",range0,range1); cout << ap << " " << bp << endl; hmutrackplus_eta.push_back(etaDirectory.make<TH1D>(ap,bp,100,0.,200.)); sprintf(ap,"zmumuNotIsoplus_etaRange%d",i); sprintf(bp,"zmumuNotIso plus mass eta Range %f to %f",range0,range1); cout << ap << " " << bp << endl; hmumuNotIsoplus_eta.push_back(etaDirectory.make<TH1D>(ap,bp,100,0.,200.)); // muon minus cout << " bin eta minus " << i << endl; char am[30], bm[50]; sprintf(am,"zmumu2HLTminus_etaRange%d",i); sprintf(bm,"zmumu2HLT minus mass eta Range %f to %f",range0,range1); cout << am << " " << bm << endl; hmumu2HLTminus_eta.push_back(etaDirectory.make<TH1D>(am,bm,200,0.,200.)); sprintf(am,"zmumu1HLTminus_etaRange%d",i); sprintf(bm,"zmumu1HLT minus mass eta Range %f to %f",range0,range1); cout << am << " " << bm << endl; hmumu1HLTminus_eta.push_back(etaDirectory.make<TH1D>(am,bm,200,0.,200.)); sprintf(am,"zmustaminus_etaRange%d",i); sprintf(bm,"zmusta minus mass eta Range %f to %f",range0,range1); cout << am << " " << bm << endl; hmustaminus_eta.push_back(etaDirectory.make<TH1D>(am,bm,50,0.,200.)); sprintf(am,"zmutrackminus_etaRange%d",i); sprintf(bm,"zmutrack minus mass eta Range %f to %f",range0,range1); cout << am << " " << bm << endl; hmutrackminus_eta.push_back(etaDirectory.make<TH1D>(am,bm,100,0.,200.)); sprintf(am,"zmumuNotIsominus_etaRange%d",i); sprintf(bm,"zmumuNotIso minus mass eta Range %f to %f",range0,range1); cout << am << " " << bm << endl; hmumuNotIsominus_eta.push_back(etaDirectory.make<TH1D>(am,bm,100,0.,200.)); } // pt histograms creation cout << "pt istograms creation " << endl; for (unsigned int i=0;i<ptBins;i++) { double range0 = ptRange[i]; double range1= ptRange[i+1]; // muon plus cout << " bin pt plus " << i << endl; char ap1[30], bp1[50]; sprintf(ap1,"zmumu2HLTplus_ptRange%d",i); sprintf(bp1,"zmumu2HLT plus mass pt Range %f to %f",range0,range1); cout << ap1 << " " << bp1 << endl; hmumu2HLTplus_pt.push_back(ptDirectory.make<TH1D>(ap1,bp1,200,0.,200.)); sprintf(ap1,"zmumu1HLTplus_ptRange%d",i); sprintf(bp1,"zmumu1HLT plus mass pt Range %f to %f",range0,range1); cout << ap1 << " " << bp1 << endl; hmumu1HLTplus_pt.push_back(ptDirectory.make<TH1D>(ap1,bp1,200,0.,200.)); sprintf(ap1,"zmustaplus_ptRange%d",i); sprintf(bp1,"zmusta plus mass pt Range %f to %f",range0,range1); cout << ap1 << " " << bp1 << endl; hmustaplus_pt.push_back(ptDirectory.make<TH1D>(ap1,bp1,50,0.,200.)); sprintf(ap1,"zmutrackplus_ptRange%d",i); sprintf(bp1,"zmutrack plus mass pt Range %f to %f",range0,range1); cout << ap1 << " " << bp1 << endl; hmutrackplus_pt.push_back(ptDirectory.make<TH1D>(ap1,bp1,100,0.,200.)); sprintf(ap1,"zmumuNotIsoplus_ptRange%d",i); sprintf(bp1,"zmumuNotIso plus mass pt Range %f to %f",range0,range1); cout << ap1 << " " << bp1 << endl; hmumuNotIsoplus_pt.push_back(ptDirectory.make<TH1D>(ap1,bp1,100,0.,200.)); // muon minus cout << " bin pt minus " << i << endl; char am1[30], bm1[50]; sprintf(am1,"zmumu2HLTminus_ptRange%d",i); sprintf(bm1,"zmumu2HLT minus mass pt Range %f to %f",range0,range1); cout << am1 << " " << bm1 << endl; hmumu2HLTminus_pt.push_back(ptDirectory.make<TH1D>(am1,bm1,200,0.,200.)); sprintf(am1,"zmumu1HLTminus_ptRange%d",i); sprintf(bm1,"zmumu1HLT minus mass pt Range %f to %f",range0,range1); cout << am1 << " " << bm1 << endl; hmumu1HLTminus_pt.push_back(ptDirectory.make<TH1D>(am1,bm1,200,0.,200.)); sprintf(am1,"zmustaminus_ptRange%d",i); sprintf(bm1,"zmusta minus mass pt Range %f to %f",range0,range1); cout << am1 << " " << bm1 << endl; hmustaminus_pt.push_back(ptDirectory.make<TH1D>(am1,bm1,50,0.,200.)); sprintf(am1,"zmutrackminus_ptRange%d",i); sprintf(bm1,"zmutrack minus mass pt Range %f to %f",range0,range1); cout << am1 << " " << bm1 << endl; hmutrackminus_pt.push_back(ptDirectory.make<TH1D>(am1,bm1,100,0.,200.)); sprintf(am1,"zmumuNotIsominus_ptRange%d",i); sprintf(bm1,"zmumuNotIso minus mass pt Range %f to %f",range0,range1); cout << am1 << " " << bm1 << endl; hmumuNotIsominus_pt.push_back(ptDirectory.make<TH1D>(am1,bm1,100,0.,200.)); } // clear global counters nGlobalMuonsMatched_passed = 0; }
void ZMuMu_efficiencyAnalyzer::analyze | ( | const edm::Event & | event, |
const edm::EventSetup & | setup | ||
) | [private, virtual] |
Implements edm::EDAnalyzer.
Definition at line 264 of file ZMuMu_efficiencyAnalyzer.cc.
References abs, reco::Candidate::charge(), DeDxDiscriminatorTools::charge(), reco::Candidate::daughter(), eta(), reco::Candidate::eta(), etaBins, etamax_, etaRange, genParticleCandidates2GenParticles_cfi::genParticles, genParticles_, h_zmm1HLTminus_mass, h_zmm1HLTplus_mass, h_zmm2HLT_mass, h_zmm_mass, h_zmsminus_mass, h_zmsplus_mass, h_zmtminus_mass, h_zmtplus_mass, hmumu1HLTminus_eta, hmumu1HLTminus_pt, hmumu1HLTplus_eta, hmumu1HLTplus_pt, hmumu2HLTminus_eta, hmumu2HLTminus_pt, hmumu2HLTplus_eta, hmumu2HLTplus_pt, hmustaminus_eta, hmustaminus_pt, hmustaplus_eta, hmustaplus_pt, hmutrackminus_eta, hmutrackminus_pt, hmutrackplus_eta, hmutrackplus_pt, i, reco::Muon::isGlobalMuon(), isoMax_, j, reco::Candidate::mass(), massMax_, massMin_, reco::Candidate::masterClone(), patZpeak::muons, muons_, primaryVertices_, reco::Candidate::pt(), ptBins, ptmin_, ptRange, pat::GenericParticle::trackIso(), pat::Muon::trackIso(), testEve_cfg::tracks, tracks_, pat::PATObject< ObjectType >::triggerObjectMatchesByPath(), ZMuMuAnalysisNtupler_cff::zMuMu, zMuMu_, zMuStandAlone_, zMuStandAloneMatchMap_, zMuTrack_, and zMuTrackMatchMap_.
{ Handle<CandidateView> zMuMu; Handle<GenParticleMatch> zMuMuMatchMap; //Map of Z made by Mu global + Mu global Handle<CandidateView> zMuStandAlone; Handle<GenParticleMatch> zMuStandAloneMatchMap; //Map of Z made by Mu + StandAlone Handle<CandidateView> zMuTrack; Handle<GenParticleMatch> zMuTrackMatchMap; //Map of Z made by Mu + Track Handle<CandidateView> muons; //Collection of Muons Handle<CandidateView> tracks; //Collection of Tracks Handle<GenParticleCollection> genParticles; // Collection of Generatd Particles Handle<reco::VertexCollection> primaryVertices; // Collection of primary Vertices event.getByLabel(zMuMu_, zMuMu); event.getByLabel(zMuStandAlone_, zMuStandAlone); event.getByLabel(zMuTrack_, zMuTrack); event.getByLabel(genParticles_, genParticles); event.getByLabel(primaryVertices_, primaryVertices); event.getByLabel(muons_, muons); event.getByLabel(tracks_, tracks); /* cout << "********* zMuMu size : " << zMuMu->size() << endl; cout << "********* zMuStandAlone size : " << zMuStandAlone->size() << endl; cout << "********* zMuTrack size : " << zMuTrack->size() << endl; cout << "********* muons size : " << muons->size() << endl; cout << "********* tracks size : " << tracks->size() << endl; cout << "********* vertices size : " << primaryVertices->size() << endl; */ // std::cout<<"Run-> "<<event.id().run()<<std::endl; // std::cout<<"Event-> "<<event.id().event()<<std::endl; bool zMuMu_found = false; // loop on ZMuMu if (zMuMu->size() > 0 ) { for(unsigned int i = 0; i < zMuMu->size(); ++i) { //loop on candidates const Candidate & zMuMuCand = (*zMuMu)[i]; //the candidate CandidateBaseRef zMuMuCandRef = zMuMu->refAt(i); const Candidate * lep0 = zMuMuCand.daughter( 0 ); const Candidate * lep1 = zMuMuCand.daughter( 1 ); const pat::Muon & muonDau0 = dynamic_cast<const pat::Muon &>(*lep0->masterClone()); double trkiso0 = muonDau0.trackIso(); const pat::Muon & muonDau1 = dynamic_cast<const pat::Muon &>(*lep1->masterClone()); double trkiso1 = muonDau1.trackIso(); // kinemtic variables double pt0 = zMuMuCand.daughter(0)->pt(); double pt1 = zMuMuCand.daughter(1)->pt(); double eta0 = zMuMuCand.daughter(0)->eta(); double eta1 = zMuMuCand.daughter(1)->eta(); double charge0 = zMuMuCand.daughter(0)->charge(); double charge1 = zMuMuCand.daughter(1)->charge(); double mass = zMuMuCand.mass(); // HLT match const pat::TriggerObjectStandAloneCollection mu0HLTMatches = muonDau0.triggerObjectMatchesByPath( "HLT_Mu9" ); const pat::TriggerObjectStandAloneCollection mu1HLTMatches = muonDau1.triggerObjectMatchesByPath( "HLT_Mu9" ); bool trig0found = false; bool trig1found = false; if( mu0HLTMatches.size()>0 ) trig0found = true; if( mu1HLTMatches.size()>0 ) trig1found = true; // kinematic selection bool checkOppositeCharge = false; if (charge0 != charge1) checkOppositeCharge = true; if (pt0>ptmin_ && pt1>ptmin_ && abs(eta0)<etamax_ && abs(eta1)<etamax_ && mass>massMin_ && mass<massMax_ && checkOppositeCharge) { if (trig0found || trig1found) { // at least one muon match HLT zMuMu_found = true; // Z found as global-global (so don't check Zms and Zmt) if (trkiso0 < isoMax_ && trkiso1 < isoMax_) { // both muons are isolated if (trig0found && trig1found) { // ******************** category zmm 2 HLT **************** h_zmm2HLT_mass->Fill(mass); h_zmm_mass->Fill(mass); // check the cynematics to fill correct histograms for (unsigned int j=0;j<etaBins;j++) { // eta Bins loop double range0 = etaRange[j]; double range1= etaRange[j+1]; // eta histograms if (eta0>=range0 && eta0<range1) { if (charge0<0) hmumu2HLTminus_eta[j]->Fill(mass); // mu- in bin eta if (charge0>0) hmumu2HLTplus_eta[j]->Fill(mass); // mu+ in bin eta } if (eta1>=range0 && eta1<range1) { if (charge1<0) hmumu2HLTminus_eta[j]->Fill(mass); // mu- in bin eta if (charge1>0) hmumu2HLTplus_eta[j]->Fill(mass); // mu+ in bin eta } } // end loop etaBins for (unsigned int j=0;j<ptBins;j++) { // pt Bins loop double range0pt = ptRange[j]; double range1pt = ptRange[j+1]; // pt histograms if (pt0>=range0pt && pt0<range1pt) { if (charge0<0) hmumu2HLTminus_pt[j]->Fill(mass); // mu- in bin eta if (charge0>0) hmumu2HLTplus_pt[j]->Fill(mass); // mu+ in bin eta } if (pt1>=range0pt && pt1<range1pt) { if (charge1<0) hmumu2HLTminus_pt[j]->Fill(mass); // mu- in bin eta if (charge1>0) hmumu2HLTplus_pt[j]->Fill(mass); // mu+ in bin eta } } // end loop ptBins } // ******************* end category zmm 2 HLT **************** if (!trig0found || !trig1found) { // ****************** category zmm 1 HLT ****************** h_zmm_mass->Fill(mass); double eta = 9999; double pt = 9999; double charge = 0; if (trig0found) { eta = eta1; // check muon not HLT matched pt = pt1; charge = charge1; } else { eta = eta0; pt =pt0; charge = charge0; } if (charge<0) h_zmm1HLTminus_mass->Fill(mass); if (charge>0) h_zmm1HLTplus_mass->Fill(mass); for (unsigned int j=0;j<etaBins;j++) { // eta Bins loop double range0 = etaRange[j]; double range1= etaRange[j+1]; // eta histograms fill the bin of the muon not HLT matched if (eta>=range0 && eta<range1) { if (charge<0) hmumu1HLTminus_eta[j]->Fill(mass); if (charge>0) hmumu1HLTplus_eta[j]->Fill(mass); } } // end loop etaBins for (unsigned int j=0;j<ptBins;j++) { // pt Bins loop double range0 = ptRange[j]; double range1= ptRange[j+1]; // pt histograms if (pt>=range0 && pt<range1) { if (charge<0) hmumu1HLTminus_pt[j]->Fill(mass); if (charge>0) hmumu1HLTplus_pt[j]->Fill(mass); } } // end loop ptBins } // ****************** end category zmm 1 HLT *************** } else { // one or both muons are not isolated // ***************** category zmumuNotIso **************** (per ora non studio iso vs eta e pt da capire meglio) } // end if both muons isolated } // end if at least 1 HLT trigger found } // end if kinematic selection } // end loop on ZMuMu cand } // end if ZMuMu size > 0 // loop on ZMuSta bool zMuSta_found = false; if (!zMuMu_found && zMuStandAlone->size() > 0 ) { event.getByLabel(zMuStandAloneMatchMap_, zMuStandAloneMatchMap); for(unsigned int i = 0; i < zMuStandAlone->size(); ++i) { //loop on candidates const Candidate & zMuStandAloneCand = (*zMuStandAlone)[i]; //the candidate CandidateBaseRef zMuStandAloneCandRef = zMuStandAlone->refAt(i); GenParticleRef zMuStandAloneMatch = (*zMuStandAloneMatchMap)[zMuStandAloneCandRef]; const Candidate * lep0 = zMuStandAloneCand.daughter( 0 ); const Candidate * lep1 = zMuStandAloneCand.daughter( 1 ); const pat::Muon & muonDau0 = dynamic_cast<const pat::Muon &>(*lep0->masterClone()); double trkiso0 = muonDau0.trackIso(); const pat::Muon & muonDau1 = dynamic_cast<const pat::Muon &>(*lep1->masterClone()); double trkiso1 = muonDau1.trackIso(); double pt0 = zMuStandAloneCand.daughter(0)->pt(); double pt1 = zMuStandAloneCand.daughter(1)->pt(); double eta0 = zMuStandAloneCand.daughter(0)->eta(); double eta1 = zMuStandAloneCand.daughter(1)->eta(); double charge0 = zMuStandAloneCand.daughter(0)->charge(); double charge1 = zMuStandAloneCand.daughter(1)->charge(); double mass = zMuStandAloneCand.mass(); // HLT match const pat::TriggerObjectStandAloneCollection mu0HLTMatches = muonDau0.triggerObjectMatchesByPath( "HLT_Mu9" ); const pat::TriggerObjectStandAloneCollection mu1HLTMatches = muonDau1.triggerObjectMatchesByPath( "HLT_Mu9" ); bool trig0found = false; bool trig1found = false; if( mu0HLTMatches.size()>0 ) trig0found = true; if( mu1HLTMatches.size()>0 ) trig1found = true; // check HLT match of Global muon and save eta, pt of second muon (standAlone) bool trigGlbfound = false; double pt =999.; double eta = 999.; double charge = 0; if (muonDau0.isGlobalMuon()) { trigGlbfound = trig0found; pt = pt1; eta = eta1; charge = charge1; } if (muonDau1.isGlobalMuon()) { trigGlbfound = trig1found; pt = pt0; eta = eta0; charge = charge0; } bool checkOppositeCharge = false; if (charge0 != charge1) checkOppositeCharge = true; if (checkOppositeCharge && trigGlbfound && pt0>ptmin_ && pt1>ptmin_ && abs(eta0)<etamax_ && abs(eta1)<etamax_ && mass>massMin_ && mass<massMax_ && trkiso0<isoMax_ && trkiso1<isoMax_ ) { // global mu match HLT + kinematic cuts + opposite charge if (charge<0) h_zmsminus_mass->Fill(mass); if (charge>0) h_zmsplus_mass->Fill(mass); for (unsigned int j=0;j<etaBins;j++) { // eta Bins loop double range0 = etaRange[j]; double range1= etaRange[j+1]; // eta histograms if (eta>=range0 && eta<range1) { if (charge<0) hmustaminus_eta[j]->Fill(mass); if (charge>0) hmustaplus_eta[j]->Fill(mass); } } // end loop etaBins for (unsigned int j=0;j<ptBins;j++) { // pt Bins loop double range0 = ptRange[j]; double range1= ptRange[j+1]; // pt histograms if (pt>=range0 && pt<range1) { if (charge<0) hmustaminus_pt[j]->Fill(mass); if (charge>0) hmustaplus_pt[j]->Fill(mass); } } // end loop ptBins } // end if trigGlbfound + kinecuts + OppostieCharge } // end loop on ZMuStandAlone cand } // end if ZMuStandAlone size > 0 // loop on ZMuTrack // bool zMuTrack_found = false; if (!zMuMu_found && !zMuSta_found && zMuTrack->size() > 0 ) { event.getByLabel(zMuTrackMatchMap_, zMuTrackMatchMap); for(unsigned int i = 0; i < zMuTrack->size(); ++i) { //loop on candidates const Candidate & zMuTrackCand = (*zMuTrack)[i]; //the candidate CandidateBaseRef zMuTrackCandRef = zMuTrack->refAt(i); const Candidate * lep0 = zMuTrackCand.daughter( 0 ); const Candidate * lep1 = zMuTrackCand.daughter( 1 ); const pat::Muon & muonDau0 = dynamic_cast<const pat::Muon &>(*lep0->masterClone()); double trkiso0 = muonDau0.trackIso(); const pat::GenericParticle & trackDau1 = dynamic_cast<const pat::GenericParticle &>(*lep1->masterClone()); double trkiso1 = trackDau1.trackIso(); double pt0 = zMuTrackCand.daughter(0)->pt(); double pt1 = zMuTrackCand.daughter(1)->pt(); double eta0 = zMuTrackCand.daughter(0)->eta(); double eta1 = zMuTrackCand.daughter(1)->eta(); double charge0 = zMuTrackCand.daughter(0)->charge(); double charge1 = zMuTrackCand.daughter(1)->charge(); double mass = zMuTrackCand.mass(); // HLT match (check just dau0 the global) const pat::TriggerObjectStandAloneCollection mu0HLTMatches = muonDau0.triggerObjectMatchesByPath( "HLT_Mu9" ); bool trig0found = false; if( mu0HLTMatches.size()>0 ) trig0found = true; bool checkOppositeCharge = false; if (charge0 != charge1) checkOppositeCharge = true; if (checkOppositeCharge && trig0found && pt0>ptmin_ && pt1>ptmin_ && abs(eta0)<etamax_ && abs(eta1)<etamax_ && mass>massMin_ && mass<massMax_ && trkiso0<isoMax_ && trkiso1<isoMax_ ) { // global mu match HLT + kinematic cuts + opposite charge if (charge1<0) h_zmtminus_mass->Fill(mass); if (charge1>0) h_zmtplus_mass->Fill(mass); for (unsigned int j=0;j<etaBins;j++) { // eta Bins loop double range0 = etaRange[j]; double range1= etaRange[j+1]; // eta histograms if (eta1>=range0 && eta1<range1) { if (charge1<0) hmutrackminus_eta[j]->Fill(mass); // just check muon1 (mu0 is global by definition) if (charge1>0) hmutrackplus_eta[j]->Fill(mass); // just check muon1 (mu0 is global by definition) } } // end loop etaBins for (unsigned int j=0;j<ptBins;j++) { // pt Bins loop double range0 = ptRange[j]; double range1= ptRange[j+1]; // pt histograms if (pt1>=range0 && pt1<range1) { if (charge1<0) hmutrackminus_pt[j]->Fill(mass); // just check muon1 (mu0 is global by definition) if (charge1>0) hmutrackplus_pt[j]->Fill(mass); // just check muon1 (mu0 is global by definition) } } // end loop ptBins } // end if trig0found } // end loop on ZMuTrack cand } // end if ZMuTrack size > 0 } // end analyze
bool ZMuMu_efficiencyAnalyzer::check_ifZmumu | ( | const Candidate * | dauGen0, |
const Candidate * | dauGen1, | ||
const Candidate * | dauGen2 | ||
) | [private] |
Definition at line 591 of file ZMuMu_efficiencyAnalyzer.cc.
References reco::Candidate::pdgId().
{ int partId0 = dauGen0->pdgId(); int partId1 = dauGen1->pdgId(); int partId2 = dauGen2->pdgId(); bool muplusFound=false; bool muminusFound=false; bool ZFound=false; if (partId0==13 || partId1==13 || partId2==13) muminusFound=true; if (partId0==-13 || partId1==-13 || partId2==-13) muplusFound=true; if (partId0==23 || partId1==23 || partId2==23) ZFound=true; return muplusFound*muminusFound*ZFound; }
void ZMuMu_efficiencyAnalyzer::endJob | ( | void | ) | [private, virtual] |
float ZMuMu_efficiencyAnalyzer::getParticleEta | ( | const int | ipart, |
const Candidate * | dauGen0, | ||
const Candidate * | dauGen1, | ||
const Candidate * | dauGen2 | ||
) | [private] |
Definition at line 638 of file ZMuMu_efficiencyAnalyzer.cc.
References abs, reco::Candidate::daughter(), reco::Candidate::eta(), gen::k, reco::Candidate::numberOfDaughters(), reco::Candidate::pdgId(), and reco::Candidate::status().
{ int partId0 = dauGen0->pdgId(); int partId1 = dauGen1->pdgId(); int partId2 = dauGen2->pdgId(); float etapart=0.; if (partId0 == ipart) { for(unsigned int k = 0; k < dauGen0->numberOfDaughters(); ++k) { const Candidate * dauMuGen = dauGen0->daughter(k); if(dauMuGen->pdgId() == ipart && dauMuGen->status() ==1) { etapart = dauMuGen->eta(); } } } if (partId1 == ipart) { for(unsigned int k = 0; k < dauGen1->numberOfDaughters(); ++k) { const Candidate * dauMuGen = dauGen1->daughter(k); if(dauMuGen->pdgId() == ipart && dauMuGen->status() ==1) { etapart = dauMuGen->eta(); } } } if (partId2 == ipart) { for(unsigned int k = 0; k < dauGen2->numberOfDaughters(); ++k) { const Candidate * dauMuGen = dauGen2->daughter(k); if(abs(dauMuGen->pdgId()) == ipart && dauMuGen->status() ==1) { etapart = dauMuGen->eta(); } } } return etapart; }
Particle::LorentzVector ZMuMu_efficiencyAnalyzer::getParticleP4 | ( | const int | ipart, |
const Candidate * | dauGen0, | ||
const Candidate * | dauGen1, | ||
const Candidate * | dauGen2 | ||
) | [private] |
Definition at line 704 of file ZMuMu_efficiencyAnalyzer.cc.
References abs, reco::Candidate::daughter(), gen::k, reco::Candidate::numberOfDaughters(), reco::Candidate::p4(), reco::Candidate::pdgId(), and reco::Candidate::status().
{ int partId0 = dauGen0->pdgId(); int partId1 = dauGen1->pdgId(); int partId2 = dauGen2->pdgId(); Particle::LorentzVector p4part(0.,0.,0.,0.); if (partId0 == ipart) { for(unsigned int k = 0; k < dauGen0->numberOfDaughters(); ++k) { const Candidate * dauMuGen = dauGen0->daughter(k); if(dauMuGen->pdgId() == ipart && dauMuGen->status() ==1) { p4part = dauMuGen->p4(); } } } if (partId1 == ipart) { for(unsigned int k = 0; k < dauGen1->numberOfDaughters(); ++k) { const Candidate * dauMuGen = dauGen1->daughter(k); if(dauMuGen->pdgId() == ipart && dauMuGen->status() ==1) { p4part = dauMuGen->p4(); } } } if (partId2 == ipart) { for(unsigned int k = 0; k < dauGen2->numberOfDaughters(); ++k) { const Candidate * dauMuGen = dauGen2->daughter(k); if(abs(dauMuGen->pdgId()) == ipart && dauMuGen->status() ==1) { p4part = dauMuGen->p4(); } } } return p4part; }
float ZMuMu_efficiencyAnalyzer::getParticlePhi | ( | const int | ipart, |
const Candidate * | dauGen0, | ||
const Candidate * | dauGen1, | ||
const Candidate * | dauGen2 | ||
) | [private] |
Definition at line 671 of file ZMuMu_efficiencyAnalyzer.cc.
References abs, reco::Candidate::daughter(), gen::k, reco::Candidate::numberOfDaughters(), reco::Candidate::pdgId(), reco::Candidate::phi(), and reco::Candidate::status().
{ int partId0 = dauGen0->pdgId(); int partId1 = dauGen1->pdgId(); int partId2 = dauGen2->pdgId(); float phipart=0.; if (partId0 == ipart) { for(unsigned int k = 0; k < dauGen0->numberOfDaughters(); ++k) { const Candidate * dauMuGen = dauGen0->daughter(k); if(dauMuGen->pdgId() == ipart && dauMuGen->status() ==1) { phipart = dauMuGen->phi(); } } } if (partId1 == ipart) { for(unsigned int k = 0; k < dauGen1->numberOfDaughters(); ++k) { const Candidate * dauMuGen = dauGen1->daughter(k); if(dauMuGen->pdgId() == ipart && dauMuGen->status() ==1) { phipart = dauMuGen->phi(); } } } if (partId2 == ipart) { for(unsigned int k = 0; k < dauGen2->numberOfDaughters(); ++k) { const Candidate * dauMuGen = dauGen2->daughter(k); if(abs(dauMuGen->pdgId()) == ipart && dauMuGen->status() ==1) { phipart = dauMuGen->phi(); } } } return phipart; }
float ZMuMu_efficiencyAnalyzer::getParticlePt | ( | const int | ipart, |
const Candidate * | dauGen0, | ||
const Candidate * | dauGen1, | ||
const Candidate * | dauGen2 | ||
) | [private] |
Definition at line 605 of file ZMuMu_efficiencyAnalyzer.cc.
References abs, reco::Candidate::daughter(), gen::k, reco::Candidate::numberOfDaughters(), reco::Candidate::pdgId(), reco::Candidate::pt(), and reco::Candidate::status().
{ int partId0 = dauGen0->pdgId(); int partId1 = dauGen1->pdgId(); int partId2 = dauGen2->pdgId(); float ptpart=0.; if (partId0 == ipart) { for(unsigned int k = 0; k < dauGen0->numberOfDaughters(); ++k) { const Candidate * dauMuGen = dauGen0->daughter(k); if(dauMuGen->pdgId() == ipart && dauMuGen->status() ==1) { ptpart = dauMuGen->pt(); } } } if (partId1 == ipart) { for(unsigned int k = 0; k < dauGen1->numberOfDaughters(); ++k) { const Candidate * dauMuGen = dauGen1->daughter(k); if(dauMuGen->pdgId() == ipart && dauMuGen->status() ==1) { ptpart = dauMuGen->pt(); } } } if (partId2 == ipart) { for(unsigned int k = 0; k < dauGen2->numberOfDaughters(); ++k) { const Candidate * dauMuGen = dauGen2->daughter(k); if(abs(dauMuGen->pdgId()) == ipart && dauMuGen->status() ==1) { ptpart = dauMuGen->pt(); } } } return ptpart; }
bool ZMuMu_efficiencyAnalyzer::bothMuons_ [private] |
Definition at line 58 of file ZMuMu_efficiencyAnalyzer.cc.
unsigned int ZMuMu_efficiencyAnalyzer::etaBins [private] |
Definition at line 63 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
double ZMuMu_efficiencyAnalyzer::etamax_ [private] |
Definition at line 60 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze().
double ZMuMu_efficiencyAnalyzer::etaRange[7] [private] |
Definition at line 65 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
Definition at line 56 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze().
Definition at line 68 of file ZMuMu_efficiencyAnalyzer.cc.
TH1D* ZMuMu_efficiencyAnalyzer::h_zmm1HLTminus_mass [private] |
Definition at line 74 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
TH1D* ZMuMu_efficiencyAnalyzer::h_zmm1HLTplus_mass [private] |
Definition at line 73 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
TH1D * ZMuMu_efficiencyAnalyzer::h_zmm2HLT_mass [private] |
Definition at line 72 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
TH1D* ZMuMu_efficiencyAnalyzer::h_zmm_mass [private] |
Definition at line 72 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
TH1D * ZMuMu_efficiencyAnalyzer::h_zmmNotIsominus_mass [private] |
Definition at line 74 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by ZMuMu_efficiencyAnalyzer().
TH1D * ZMuMu_efficiencyAnalyzer::h_zmmNotIsoplus_mass [private] |
Definition at line 73 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by ZMuMu_efficiencyAnalyzer().
TH1D * ZMuMu_efficiencyAnalyzer::h_zmsminus_mass [private] |
Definition at line 74 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
TH1D * ZMuMu_efficiencyAnalyzer::h_zmsplus_mass [private] |
Definition at line 73 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
TH1D * ZMuMu_efficiencyAnalyzer::h_zmtminus_mass [private] |
Definition at line 74 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
TH1D * ZMuMu_efficiencyAnalyzer::h_zmtplus_mass [private] |
Definition at line 73 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
vector<TH1D *> ZMuMu_efficiencyAnalyzer::hmumu1HLTminus_eta [private] |
Definition at line 81 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
vector<TH1D *> ZMuMu_efficiencyAnalyzer::hmumu1HLTminus_pt [private] |
Definition at line 82 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
vector<TH1D *> ZMuMu_efficiencyAnalyzer::hmumu1HLTplus_eta [private] |
Definition at line 79 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
vector<TH1D *> ZMuMu_efficiencyAnalyzer::hmumu1HLTplus_pt [private] |
Definition at line 80 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
vector<TH1D *> ZMuMu_efficiencyAnalyzer::hmumu2HLTminus_eta [private] |
Definition at line 81 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
vector<TH1D *> ZMuMu_efficiencyAnalyzer::hmumu2HLTminus_pt [private] |
Definition at line 82 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
vector<TH1D *> ZMuMu_efficiencyAnalyzer::hmumu2HLTplus_eta [private] |
Definition at line 79 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
vector<TH1D *> ZMuMu_efficiencyAnalyzer::hmumu2HLTplus_pt [private] |
Definition at line 80 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
vector<TH1D *> ZMuMu_efficiencyAnalyzer::hmumuNotIsominus_eta [private] |
Definition at line 81 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by ZMuMu_efficiencyAnalyzer().
vector<TH1D *> ZMuMu_efficiencyAnalyzer::hmumuNotIsominus_pt [private] |
Definition at line 82 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by ZMuMu_efficiencyAnalyzer().
vector<TH1D *> ZMuMu_efficiencyAnalyzer::hmumuNotIsoplus_eta [private] |
Definition at line 79 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by ZMuMu_efficiencyAnalyzer().
vector<TH1D *> ZMuMu_efficiencyAnalyzer::hmumuNotIsoplus_pt [private] |
Definition at line 80 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by ZMuMu_efficiencyAnalyzer().
vector<TH1D *> ZMuMu_efficiencyAnalyzer::hmustaminus_eta [private] |
Definition at line 81 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
vector<TH1D *> ZMuMu_efficiencyAnalyzer::hmustaminus_pt [private] |
Definition at line 82 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
vector<TH1D *> ZMuMu_efficiencyAnalyzer::hmustaplus_eta [private] |
Definition at line 79 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
vector<TH1D *> ZMuMu_efficiencyAnalyzer::hmustaplus_pt [private] |
Definition at line 80 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
vector<TH1D *> ZMuMu_efficiencyAnalyzer::hmutrackminus_eta [private] |
Definition at line 81 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
vector<TH1D *> ZMuMu_efficiencyAnalyzer::hmutrackminus_pt [private] |
Definition at line 82 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
vector<TH1D *> ZMuMu_efficiencyAnalyzer::hmutrackplus_eta [private] |
Definition at line 79 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
vector<TH1D *> ZMuMu_efficiencyAnalyzer::hmutrackplus_pt [private] |
Definition at line 80 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
double ZMuMu_efficiencyAnalyzer::isoMax_ [private] |
Definition at line 60 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze().
double ZMuMu_efficiencyAnalyzer::massMax_ [private] |
Definition at line 60 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze().
double ZMuMu_efficiencyAnalyzer::massMin_ [private] |
Definition at line 60 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze().
Definition at line 54 of file ZMuMu_efficiencyAnalyzer.cc.
Definition at line 54 of file ZMuMu_efficiencyAnalyzer.cc.
Definition at line 54 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze().
int ZMuMu_efficiencyAnalyzer::nGlobalMuonsMatched_passed [private] |
Definition at line 77 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by ZMuMu_efficiencyAnalyzer().
Definition at line 69 of file ZMuMu_efficiencyAnalyzer.cc.
Definition at line 56 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze().
unsigned int ZMuMu_efficiencyAnalyzer::ptBins [private] |
Definition at line 64 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
double ZMuMu_efficiencyAnalyzer::ptmin_ [private] |
Definition at line 60 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze().
double ZMuMu_efficiencyAnalyzer::ptRange[5] [private] |
Definition at line 66 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze(), and ZMuMu_efficiencyAnalyzer().
Definition at line 68 of file ZMuMu_efficiencyAnalyzer.cc.
Definition at line 55 of file ZMuMu_efficiencyAnalyzer.cc.
Definition at line 68 of file ZMuMu_efficiencyAnalyzer.cc.
Definition at line 55 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze().
Definition at line 51 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze().
Definition at line 51 of file ZMuMu_efficiencyAnalyzer.cc.
Definition at line 52 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze().
Definition at line 52 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze().
Definition at line 53 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze().
Definition at line 53 of file ZMuMu_efficiencyAnalyzer.cc.
Referenced by analyze().