#include <L3MuonIsolationProducer.h>
Public Member Functions | |
virtual void | beginJob () |
initialisation | |
L3MuonIsolationProducer (const edm::ParameterSet &) | |
constructor with config | |
virtual void | produce (edm::Event &, const edm::EventSetup &) |
Produce isolation maps. | |
virtual | ~L3MuonIsolationProducer () |
destructor | |
Private Attributes | |
double | optOutputIsoDeposits |
bool | theApplyCutsORmaxNTracks |
apply or not the maxN cut on top of the sumPt (or nominall eff) < cuts | |
edm::ParameterSet | theConfig |
muonisolation::Cuts | theCuts |
reco::isodeposit::IsoDepositExtractor * | theExtractor |
int | theMaxNTracks |
edm::InputTag | theMuonCollectionLabel |
double | theTrackPt_Min |
Definition at line 18 of file L3MuonIsolationProducer.h.
L3MuonIsolationProducer::L3MuonIsolationProducer | ( | const edm::ParameterSet & | par | ) |
constructor with config
Definition at line 36 of file L3MuonIsolationProducer.cc.
References LogDebug, and optOutputIsoDeposits.
: theConfig(par), theMuonCollectionLabel(par.getParameter<InputTag>("inputMuonCollection")), optOutputIsoDeposits(par.getParameter<bool>("OutputMuIsoDeposits")), theExtractor(0), theTrackPt_Min(-1) { LogDebug("RecoMuon|L3MuonIsolationProducer")<<" L3MuonIsolationProducer CTOR"; if (optOutputIsoDeposits) produces<reco::IsoDepositMap>(); produces<edm::ValueMap<bool> >(); }
L3MuonIsolationProducer::~L3MuonIsolationProducer | ( | ) | [virtual] |
destructor
Definition at line 50 of file L3MuonIsolationProducer.cc.
References LogDebug, and theExtractor.
{ LogDebug("RecoMuon|L3MuonIsolationProducer")<<" L3MuonIsolationProducer DTOR"; if (theExtractor) delete theExtractor; }
void L3MuonIsolationProducer::beginJob | ( | void | ) | [virtual] |
initialisation
get min pt for the track to go into sumPt
test cutsName only. The depositType is informational only (has not been used so far) [VK]
Reimplemented from edm::EDProducer.
Definition at line 55 of file L3MuonIsolationProducer.cc.
References L3NominalEfficiencyConfigurator::cuts(), reco::get(), edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), LogTrace, muonisolation::Cuts::print(), theApplyCutsORmaxNTracks, theConfig, theCuts, theExtractor, theMaxNTracks, and theTrackPt_Min.
{ // // Extractor // edm::ParameterSet extractorPSet = theConfig.getParameter<edm::ParameterSet>("ExtractorPSet"); theTrackPt_Min = theConfig.getParameter<double>("TrackPt_Min"); std::string extractorName = extractorPSet.getParameter<std::string>("ComponentName"); theExtractor = IsoDepositExtractorFactory::get()->create( extractorName, extractorPSet); std::string depositType = extractorPSet.getUntrackedParameter<std::string>("DepositLabel"); // // Cuts // edm::ParameterSet cutsPSet = theConfig.getParameter<edm::ParameterSet>("CutsPSet"); std::string cutsName = cutsPSet.getParameter<std::string>("ComponentName"); if (cutsName == "SimpleCuts") { theCuts = Cuts(cutsPSet); } else if ( // (cutsName== "L3NominalEfficiencyCuts_PXLS" && depositType=="PXLS") // || (cutsName== "L3NominalEfficiencyCuts_TRKS" && depositType=="TRKS") (cutsName== "L3NominalEfficiencyCuts_PXLS" ) || (cutsName== "L3NominalEfficiencyCuts_TRKS") ) { theCuts = L3NominalEfficiencyConfigurator(cutsPSet).cuts(); } else { LogError("L3MuonIsolationProducer::beginJob") <<"cutsName: "<<cutsPSet<<" is not recognized:" <<" theCuts not set!"; } LogTrace("")<< theCuts.print(); // (kludge) additional cut on the number of tracks theMaxNTracks = cutsPSet.getParameter<int>("maxNTracks"); theApplyCutsORmaxNTracks = cutsPSet.getParameter<bool>("applyCutsORmaxNTracks"); }
void L3MuonIsolationProducer::produce | ( | edm::Event & | event, |
const edm::EventSetup & | eventSetup | ||
) | [virtual] |
Produce isolation maps.
Implements edm::EDProducer.
Definition at line 96 of file L3MuonIsolationProducer.cc.
References muonisolation::Cuts::CutSpec::conesize, prof2calltree::count, align_tpl::cut, reco::isodeposit::IsoDepositExtractor::deposit(), reco::IsoDeposit::depositAndCountWithin(), reco::TrackBase::eta(), edm::helper::Filler< Map >::fill(), i, edm::helper::Filler< Map >::insert(), LogDebug, LogTrace, metname, RPCpg::mu, patZpeak::muons, optOutputIsoDeposits, reco::IsoDeposit::print(), query::result, theApplyCutsORmaxNTracks, theCuts, theExtractor, theMaxNTracks, theMuonCollectionLabel, theTrackPt_Min, muonisolation::Cuts::CutSpec::threshold, relativeConstraints::value, and reco::IsoDeposit::veto().
{ std::string metname = "RecoMuon|L3MuonIsolationProducer"; LogDebug(metname)<<" L3 Muon Isolation producing..." <<" BEGINING OF EVENT " <<"================================"; // Take the SA container LogTrace(metname)<<" Taking the muons: "<<theMuonCollectionLabel; Handle<TrackCollection> muons; event.getByLabel(theMuonCollectionLabel,muons); std::auto_ptr<reco::IsoDepositMap> depMap( new reco::IsoDepositMap()); std::auto_ptr<edm::ValueMap<bool> > isoMap( new edm::ValueMap<bool> ()); // // get Vetos and deposits // unsigned int nMuons = muons->size(); IsoDeposit::Vetos vetos(nMuons); std::vector<IsoDeposit> deps(nMuons); std::vector<bool> isos(nMuons, false); for (unsigned int i=0; i<nMuons; i++) { TrackRef mu(muons,i); deps[i] = theExtractor->deposit(event, eventSetup, *mu); vetos[i] = deps[i].veto(); } // // add here additional vetos // //..... // // actual cut step // for(unsigned int iMu=0; iMu < nMuons; ++iMu){ const reco::Track* mu = &(*muons)[iMu]; const IsoDeposit & deposit = deps[iMu]; LogTrace(metname)<< deposit.print(); const Cuts::CutSpec & cut = theCuts( mu->eta()); std::pair<double, int> sumAndCount = deposit.depositAndCountWithin(cut.conesize, vetos, theTrackPt_Min); double value = sumAndCount.first; int count = sumAndCount.second; bool result = (value < cut.threshold); if (theApplyCutsORmaxNTracks ) result |= count <= theMaxNTracks; LogTrace(metname)<<"deposit in cone: "<<value<<"with count "<<count<<" is isolated: "<<result; isos[iMu] = result; } // // store // if (optOutputIsoDeposits){ reco::IsoDepositMap::Filler depFiller(*depMap); depFiller.insert(muons, deps.begin(), deps.end()); depFiller.fill(); event.put(depMap); } edm::ValueMap<bool> ::Filler isoFiller(*isoMap); isoFiller.insert(muons, isos.begin(), isos.end()); isoFiller.fill(); event.put(isoMap); LogTrace(metname) <<" END OF EVENT " <<"================================"; }
double L3MuonIsolationProducer::optOutputIsoDeposits [private] |
Definition at line 45 of file L3MuonIsolationProducer.h.
Referenced by L3MuonIsolationProducer(), and produce().
bool L3MuonIsolationProducer::theApplyCutsORmaxNTracks [private] |
apply or not the maxN cut on top of the sumPt (or nominall eff) < cuts
Definition at line 59 of file L3MuonIsolationProducer.h.
Referenced by beginJob(), and produce().
Definition at line 36 of file L3MuonIsolationProducer.h.
Referenced by beginJob().
Definition at line 42 of file L3MuonIsolationProducer.h.
Referenced by beginJob(), and produce().
Definition at line 48 of file L3MuonIsolationProducer.h.
Referenced by beginJob(), produce(), and ~L3MuonIsolationProducer().
int L3MuonIsolationProducer::theMaxNTracks [private] |
max number of tracks to allow in the sum count <= maxN
Definition at line 56 of file L3MuonIsolationProducer.h.
Referenced by beginJob(), and produce().
Definition at line 39 of file L3MuonIsolationProducer.h.
Referenced by produce().
double L3MuonIsolationProducer::theTrackPt_Min [private] |
pt cut to consider track in sumPt after extracting iso deposit better split this off into a filter
Definition at line 52 of file L3MuonIsolationProducer.h.
Referenced by beginJob(), and produce().