bool TopPairMuPlusJetsReferenceSelection2011::isGoodMuon(const MuonPointer muon) const {
	bool passesEtAndEta = muon->pt() > 26 && fabs(muon->eta()) < 2.1;
	bool passesD0 = fabs(muon->d0()) < 0.02; //cm
	bool passesDistanceToPV = fabs(muon->ZDistanceToPrimaryVertex()) < 1;
	bool passesID(muon->isTracker() && muon->isGlobal());

	bool passesMuonQuality_1(muon->normChi2() < 10 && muon->trackerLayersWithMeasurement() > 8);
	bool passesMuonQuality_2(muon->numberOfValidMuonHits() > 0 && muon->pixelLayersWithMeasurement() > 0);
	bool passesMuonQuality_3(muon->numberOfMatchedStations() > 1);
	bool passesMuonQuality = passesMuonQuality_1 && passesMuonQuality_2 && passesMuonQuality_3;

	return passesEtAndEta && passesD0 && passesDistanceToPV && passesID && passesMuonQuality;
}
void MuonAnalyser::analyse(const EventPtr event) {
	if (singleMuonOnly_)
		return;
	histMan_->setCurrentHistogramFolder(histogramFolder_);
	weight_ = event->weight() * prescale_ * scale_;
	const MuonCollection muons = event->Muons();

	histMan_->H1D("Number_Of_Muons")->Fill(muons.size(), weight_);
	for (unsigned int index = 0; index < muons.size(); ++index) {
		const MuonPointer muon(muons.at(index));

		histMan_->H1D("All_Muon_Pt")->Fill(muon->pt(), weight_);
		histMan_->H1D("All_Muon_Eta")->Fill(muon->eta(), weight_);
		histMan_->H1D("All_Muon_AbsEta")->Fill(fabs(muon->eta()), weight_);
		histMan_->H1D("All_Muon_Phi")->Fill(muon->phi(), weight_);
		histMan_->H1D("All_Muon_pfIsolation_03")->Fill(muon->PFRelIso03(), weight_);
		histMan_->H1D("All_Muon_pfIsolation_04")->Fill(muon->PFRelIso04(), weight_);

		histMan_->H1D("All_Muon_dB")->Fill(muon->d0(), weight_);
	}
}
void MuonAnalyser::analyseMuon(const MuonPointer muon, double weight) {
	histMan_->setCurrentHistogramFolder(histogramFolder_);
	weight_ = weight * prescale_ * scale_;

	histMan_->H1D("muon_eta")->Fill(muon->eta(), weight_);
	histMan_->H1D("muon_AbsEta")->Fill(fabs(muon->eta()), weight_);
	histMan_->H1D("muon_pfIsolation_03_DeltaBeta")->Fill(muon->PFRelIso03DeltaBeta(), weight_);
	histMan_->H1D("muon_pfIsolation_04_DeltaBeta")->Fill(muon->PFRelIso04DeltaBeta(), weight_);

	if (!ttbarPlusMETAnalysisSetup_) {
		histMan_->H1D("muon_pT")->Fill(muon->pt(), weight_);
		histMan_->H1D("muon_phi")->Fill(muon->phi(), weight_);

		histMan_->H1D("muon_dB")->Fill(muon->d0(), weight_);
	}

	treeMan_->setCurrentFolder(histogramFolder_);
	treeMan_->Fill("EventWeight", weight_ );
	treeMan_->Fill("pt", muon->pt() );
	treeMan_->Fill("eta", muon->eta() );	
	treeMan_->Fill("relIso_04_deltaBeta", muon->PFRelIso04DeltaBeta() );	
}