ElectronPointer TestObjectFactory::goodIsolatedElectron() {
	ElectronPointer electron = TestObjectFactory::goodCaloElectron();
	electron->setTrackerIsolation(0.4);
	electron->setEcalIsolation(0.3);
	electron->setHcalIsolation(0.5);
	electron->setPFChargedHadronIsolation(0.4);
	electron->setPFGammaIsolation(0.3);
	electron->setPFNeutralHadronIsolation(0.5);
	electron->setUsedAlgorithm(ElectronAlgorithm::ParticleFlow);
	electron->setPFPUChargedHadronIsolation(0.2);
	electron->setPFRelativeIsolationRho(0.05);

	assert(electron->relativeIsolation() < 0.1);
	assert(electron->pfRelativeIsolationRhoCorrected() < 0.1);

	return electron;
}
ElectronPointer TestObjectFactory::goodCaloElectron() {
	ElectronPointer electron = ElectronPointer(new Electron(100., 99., 13., 5.));
	electron->setUsedAlgorithm(ElectronAlgorithm::Calo);
	electron->setSuperClusterEta(0);
	electron->setD0_wrtBeamSpot(0);
	electron->setD0(0);
	VertexPointer pv = TestObjectFactory::goodVertex();
	electron->setZDistanceToPrimaryVertex(0);

	electron->setDEtaIn(0);
	electron->setDPhiIn(0);
	electron->setHadOverEm(0);
	electron->setSigmaIEtaIEta(0);

	electron->setNumberOfMissingInnerLayerHits(0);
	electron->setDCotThetaToNextTrack(0.5);
	electron->setDistToNextTrack(0.5);

	assert(electron->relativeIsolation() > 0.1);
	return electron;
}