CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
L3MuonIsolationProducer Class Reference

#include <L3MuonIsolationProducer.h>

Inheritance diagram for L3MuonIsolationProducer:
edm::stream::EDProducer<>

Public Member Functions

 L3MuonIsolationProducer (const edm::ParameterSet &)
 constructor with config More...
 
void produce (edm::Event &, const edm::EventSetup &) override
 Produce isolation maps. More...
 
 ~L3MuonIsolationProducer () override
 destructor More...
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 

Private Attributes

double optOutputIsoDeposits
 
bool theApplyCutsORmaxNTracks
 apply or not the maxN cut on top of the sumPt (or nominall eff) < cuts More...
 
edm::ParameterSet theConfig
 
muonisolation::Cuts theCuts
 
reco::isodeposit::IsoDepositExtractortheExtractor
 
int theMaxNTracks
 
edm::InputTag theMuonCollectionLabel
 
edm::EDGetTokenT< reco::RecoChargedCandidateCollectiontheMuonCollectionToken
 
double theTrackPt_Min
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Detailed Description

Definition at line 20 of file L3MuonIsolationProducer.h.

Constructor & Destructor Documentation

L3MuonIsolationProducer::L3MuonIsolationProducer ( const edm::ParameterSet par)

constructor with config

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]

Definition at line 36 of file L3MuonIsolationProducer.cc.

References L3NominalEfficiencyConfigurator::cuts(), reco::get(), edm::ParameterSet::getParameter(), LogDebug, LogTrace, optOutputIsoDeposits, muonisolation::Cuts::print(), AlCaHLTBitMon_QueryRunRegistry::string, theApplyCutsORmaxNTracks, theConfig, theCuts, theExtractor, theMaxNTracks, theMuonCollectionLabel, theMuonCollectionToken, and theTrackPt_Min.

36  :
37  theConfig(par),
38  theMuonCollectionLabel(par.getParameter<InputTag>("inputMuonCollection")),
39  optOutputIsoDeposits(par.getParameter<bool>("OutputMuIsoDeposits")),
40  theExtractor(nullptr),
41  theTrackPt_Min(-1)
42  {
43  LogDebug("RecoMuon|L3MuonIsolationProducer")<<" L3MuonIsolationProducer CTOR";
44 
45  theMuonCollectionToken = consumes<RecoChargedCandidateCollection>(theMuonCollectionLabel);
46 
47  if (optOutputIsoDeposits) produces<reco::IsoDepositMap>();
48  produces<edm::ValueMap<bool> >();
49 
50  //
51  // Extractor
52  //
53  edm::ParameterSet extractorPSet = theConfig.getParameter<edm::ParameterSet>("ExtractorPSet");
55  theTrackPt_Min = theConfig.getParameter<double>("TrackPt_Min");
56  std::string extractorName = extractorPSet.getParameter<std::string>("ComponentName");
57  theExtractor = IsoDepositExtractorFactory::get()->create( extractorName, extractorPSet, consumesCollector());
58  std::string depositType = extractorPSet.getUntrackedParameter<std::string>("DepositLabel");
59 
60  //
61  // Cuts
62  //
64  std::string cutsName = cutsPSet.getParameter<std::string>("ComponentName");
65  if (cutsName == "SimpleCuts") {
66  theCuts = Cuts(cutsPSet);
67  }
68  else if (
69 // (cutsName== "L3NominalEfficiencyCuts_PXLS" && depositType=="PXLS")
70 // || (cutsName== "L3NominalEfficiencyCuts_TRKS" && depositType=="TRKS")
72  (cutsName== "L3NominalEfficiencyCuts_PXLS" )
73  || (cutsName== "L3NominalEfficiencyCuts_TRKS") ) {
75  }
76  else {
77  LogError("L3MuonIsolationProducer::beginJob")
78  <<"cutsName: "<<cutsPSet<<" is not recognized:"
79  <<" theCuts not set!";
80  }
81  LogTrace("")<< theCuts.print();
82 
83  // (kludge) additional cut on the number of tracks
84  theMaxNTracks = cutsPSet.getParameter<int>("maxNTracks");
85  theApplyCutsORmaxNTracks = cutsPSet.getParameter<bool>("applyCutsORmaxNTracks");
86 }
#define LogDebug(id)
T getParameter(std::string const &) const
std::string print() const
Definition: Cuts.cc:55
bool theApplyCutsORmaxNTracks
apply or not the maxN cut on top of the sumPt (or nominall eff) < cuts
edm::EDGetTokenT< reco::RecoChargedCandidateCollection > theMuonCollectionToken
#define LogTrace(id)
T get(const Candidate &c)
Definition: component.h:55
reco::isodeposit::IsoDepositExtractor * theExtractor
L3MuonIsolationProducer::~L3MuonIsolationProducer ( )
override

destructor

Definition at line 89 of file L3MuonIsolationProducer.cc.

References LogDebug, and theExtractor.

89  {
90  LogDebug("RecoMuon|L3MuonIsolationProducer")<<" L3MuonIsolationProducer DTOR";
91  if (theExtractor) delete theExtractor;
92 }
#define LogDebug(id)
reco::isodeposit::IsoDepositExtractor * theExtractor

Member Function Documentation

void L3MuonIsolationProducer::produce ( edm::Event event,
const edm::EventSetup eventSetup 
)
override

Produce isolation maps.

Definition at line 94 of file L3MuonIsolationProducer.cc.

References KineDebug3::count(), TkAlMuonSelectors_cfi::cut, reco::isodeposit::IsoDepositExtractor::deposit(), reco::IsoDeposit::depositAndCountWithin(), symbols::deps, reco::TrackBase::eta(), edm::helper::Filler< Map >::fill(), mps_fire::i, edm::helper::Filler< Map >::insert(), LogDebug, LogTrace, metname, eostools::move(), RPCpg::mu, extraflags_cff::muons, jets_cff::nMuons, optOutputIsoDeposits, reco::IsoDeposit::print(), mps_fire::result, AlCaHLTBitMon_QueryRunRegistry::string, theApplyCutsORmaxNTracks, theCuts, theExtractor, theMaxNTracks, theMuonCollectionLabel, theMuonCollectionToken, theTrackPt_Min, reco::IsoDeposit::veto(), and boostedElectronIsolation_cff::vetos.

94  {
95  std::string metname = "RecoMuon|L3MuonIsolationProducer";
96 
97  LogDebug(metname)<<" L3 Muon Isolation producing..."
98  <<" BEGINING OF EVENT " <<"================================";
99 
100  // Take the SA container
101  LogTrace(metname)<<" Taking the muons: "<<theMuonCollectionLabel;
103  event.getByToken(theMuonCollectionToken,muons);
104 
105  auto depMap = std::make_unique<reco::IsoDepositMap>();
106  auto isoMap = std::make_unique<edm::ValueMap<bool>>();
107 
108 
109  //
110  // get Vetos and deposits
111  //
112  unsigned int nMuons = muons->size();
113 
114  IsoDeposit::Vetos vetos(nMuons);
115 
116  std::vector<IsoDeposit> deps(nMuons);
117  std::vector<bool> isos(nMuons, false);
118 
119  for (unsigned int i=0; i<nMuons; i++) {
120  TrackRef mu(muons,i);
121  deps[i] = theExtractor->deposit(event, eventSetup, *mu);
122  vetos[i] = deps[i].veto();
123  }
124 
125  //
126  // add here additional vetos
127  //
128  //.....
129 
130  //
131  // actual cut step
132  //
133  for(unsigned int iMu=0; iMu < nMuons; ++iMu){
134  const reco::Track* mu = &(*muons)[iMu];
135 
136  const IsoDeposit & deposit = deps[iMu];
137  LogTrace(metname)<< deposit.print();
138 
139  const Cuts::CutSpec & cut = theCuts( mu->eta());
140  std::pair<double, int> sumAndCount = deposit.depositAndCountWithin(cut.conesize, vetos, theTrackPt_Min);
141 
142  double value = sumAndCount.first;
143  int count = sumAndCount.second;
144 
145  bool result = (value < cut.threshold);
146  if (theApplyCutsORmaxNTracks ) result |= count <= theMaxNTracks;
147  LogTrace(metname)<<"deposit in cone: "<<value<<"with count "<<count<<" is isolated: "<<result;
148 
149  isos[iMu] = result;
150  }
151 
152  //
153  // store
154  //
156  reco::IsoDepositMap::Filler depFiller(*depMap);
157  depFiller.insert(muons, deps.begin(), deps.end());
158  depFiller.fill();
159  event.put(std::move(depMap));
160  }
161  edm::ValueMap<bool> ::Filler isoFiller(*isoMap);
162  isoFiller.insert(muons, isos.begin(), isos.end());
163  isoFiller.fill();
164  event.put(std::move(isoMap));
165 
166  LogTrace(metname) <<" END OF EVENT " <<"================================";
167 }
#define LogDebug(id)
const std::string metname
bool theApplyCutsORmaxNTracks
apply or not the maxN cut on top of the sumPt (or nominall eff) < cuts
virtual reco::IsoDeposit deposit(const edm::Event &ev, const edm::EventSetup &evSetup, const reco::Track &track) const =0
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:651
edm::EDGetTokenT< reco::RecoChargedCandidateCollection > theMuonCollectionToken
const int mu
Definition: Constants.h:22
Definition: value.py:1
#define LogTrace(id)
std::pair< double, int > depositAndCountWithin(double coneSize, const Vetos &vetos=Vetos(), double threshold=-1e+36, bool skipDepositVeto=false) const
Get deposit.
Definition: IsoDeposit.cc:44
std::string print() const
Definition: IsoDeposit.cc:181
def move(src, dest)
Definition: eostools.py:510
reco::isodeposit::IsoDepositExtractor * theExtractor

Member Data Documentation

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 L3MuonIsolationProducer(), and produce().

edm::ParameterSet L3MuonIsolationProducer::theConfig
private

Definition at line 35 of file L3MuonIsolationProducer.h.

Referenced by L3MuonIsolationProducer().

muonisolation::Cuts L3MuonIsolationProducer::theCuts
private

Definition at line 42 of file L3MuonIsolationProducer.h.

Referenced by L3MuonIsolationProducer(), and produce().

reco::isodeposit::IsoDepositExtractor* L3MuonIsolationProducer::theExtractor
private
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 L3MuonIsolationProducer(), and produce().

edm::InputTag L3MuonIsolationProducer::theMuonCollectionLabel
private

Definition at line 38 of file L3MuonIsolationProducer.h.

Referenced by L3MuonIsolationProducer(), and produce().

edm::EDGetTokenT<reco::RecoChargedCandidateCollection> L3MuonIsolationProducer::theMuonCollectionToken
private

Definition at line 39 of file L3MuonIsolationProducer.h.

Referenced by L3MuonIsolationProducer(), and 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 L3MuonIsolationProducer(), and produce().