CMS 3D CMS Logo

RecoTauPiZeroStripPlugin3.cc
Go to the documentation of this file.
1 /*
2  * RecoTauPiZeroStripPlugin3
3  *
4  * Merges PFGammas in a PFJet into Candidate piZeros defined as
5  * strips in eta-phi.
6  *
7  * Author: Michail Bachtis (University of Wisconsin)
8  *
9  * Code modifications: Evan Friis (UC Davis),
10  * Christian Veelken (LLR)
11  *
12  */
13 
14 #include <algorithm>
15 #include <functional>
16 #include <memory>
17 
19 
28 
33 
34 //-------------------------------------------------------------------------------
35 // CV: the following headers are needed only for debug print-out
38 //-------------------------------------------------------------------------------
39 
40 #include "TString.h"
41 #include "TFormula.h"
42 
43 namespace reco {
44  namespace tau {
45 
46  namespace {
47  // Apply a hypothesis on the mass of the strips.
48  math::XYZTLorentzVector applyMassConstraint(const math::XYZTLorentzVector& vec, double mass) {
49  double factor = sqrt(vec.energy() * vec.energy() - mass * mass) / vec.P();
50  return math::XYZTLorentzVector(vec.px() * factor, vec.py() * factor, vec.pz() * factor, vec.energy());
51  }
52  } // namespace
53 
55  public:
57  ~RecoTauPiZeroStripPlugin3() override;
58  // Return type is unique_ptr<PiZeroVector>
59  return_type operator()(const reco::Jet&) const override;
60  // Hook to update PV information
61  void beginEvent() override;
62 
63  private:
64  typedef std::vector<reco::CandidatePtr> CandPtrs;
65  void addCandsToStrip(RecoTauPiZero&, CandPtrs&, const std::vector<bool>&, std::set<size_t>&, bool&) const;
66 
68 
69  std::unique_ptr<RecoTauQualityCuts> qcuts_;
73 
74  double minStripEt_;
75 
76  std::vector<int> inputParticleIds_; // type of candidates to clusterize
77  std::unique_ptr<const TFormula> etaAssociationDistance_; // size of strip clustering window in eta direction
78  std::unique_ptr<const TFormula> phiAssociationDistance_; // size of strip clustering window in phi direction
79 
82 
83  // Parameters for build strip combinations
87 
89 
91  };
92 
93  namespace {
94  std::unique_ptr<TFormula> makeFunction(const std::string& functionName, const edm::ParameterSet& pset) {
95  TString formula = pset.getParameter<std::string>("function");
96  formula = formula.ReplaceAll("pT", "x");
97  std::unique_ptr<TFormula> function(new TFormula(functionName.data(), formula.Data()));
98  int numParameter = function->GetNpar();
99  for (int idxParameter = 0; idxParameter < numParameter; ++idxParameter) {
100  std::string parameterName = Form("par%i", idxParameter);
101  double parameter = pset.getParameter<double>(parameterName);
102  function->SetParameter(idxParameter, parameter);
103  }
104  return function;
105  }
106  } // namespace
107 
110  vertexAssociator_(pset.getParameter<edm::ParameterSet>("qualityCuts"), std::move(iC)),
111  qcuts_(nullptr),
112  etaAssociationDistance_(nullptr),
113  phiAssociationDistance_(nullptr) {
114  minGammaEtStripSeed_ = pset.getParameter<double>("minGammaEtStripSeed");
115  minGammaEtStripAdd_ = pset.getParameter<double>("minGammaEtStripAdd");
116 
117  minStripEt_ = pset.getParameter<double>("minStripEt");
118 
119  edm::ParameterSet qcuts_pset = pset.getParameterSet("qualityCuts").getParameterSet("signalQualityCuts");
120  //-------------------------------------------------------------------------------
121  // CV: disable track quality cuts for PFElectronsPFElectron
122  // (treat PFElectrons like PFGammas for the purpose of building eta-phi strips)
123  applyElecTrackQcuts_ = pset.getParameter<bool>("applyElecTrackQcuts");
124  if (!applyElecTrackQcuts_) {
125  qcuts_pset.addParameter<double>("minTrackPt", std::min(minGammaEtStripSeed_, minGammaEtStripAdd_));
126  qcuts_pset.addParameter<double>("maxTrackChi2", 1.e+9);
127  qcuts_pset.addParameter<double>("maxTransverseImpactParameter", 1.e+9);
128  qcuts_pset.addParameter<double>("maxDeltaZ", 1.e+9);
129  qcuts_pset.addParameter<double>("minTrackVertexWeight", -1.);
130  qcuts_pset.addParameter<unsigned>("minTrackPixelHits", 0);
131  qcuts_pset.addParameter<unsigned>("minTrackHits", 0);
132  }
133  //-------------------------------------------------------------------------------
134  qcuts_pset.addParameter<double>("minGammaEt", std::min(minGammaEtStripSeed_, minGammaEtStripAdd_));
135  //qcuts_ = new RecoTauQualityCuts(qcuts_pset);
136  //std::unique_ptr<RecoTauQualityCuts> qcuts_(new RecoTauQualityCuts(qcuts_pset));
137 
138  qcuts_ = std::make_unique<RecoTauQualityCuts>(qcuts_pset);
139 
140  inputParticleIds_ = pset.getParameter<std::vector<int> >("stripCandidatesParticleIds");
141  const edm::ParameterSet& stripSize_eta_pset = pset.getParameterSet("stripEtaAssociationDistanceFunc");
142  etaAssociationDistance_ = makeFunction("etaAssociationDistance", stripSize_eta_pset);
143  const edm::ParameterSet& stripSize_phi_pset = pset.getParameterSet("stripPhiAssociationDistanceFunc");
144  phiAssociationDistance_ = makeFunction("phiAssociationDistance", stripSize_phi_pset);
145 
146  updateStripAfterEachDaughter_ = pset.getParameter<bool>("updateStripAfterEachDaughter");
147  maxStripBuildIterations_ = pset.getParameter<int>("maxStripBuildIterations");
148 
149  combineStrips_ = pset.getParameter<bool>("makeCombinatoricStrips");
150  if (combineStrips_) {
151  maxStrips_ = pset.getParameter<int>("maxInputStrips");
152  combinatoricStripMassHypo_ = pset.getParameter<double>("stripMassWhenCombining");
153  }
154 
155  verbosity_ = pset.getParameter<int>("verbosity");
156  }
158 
159  // Update the primary vertex
161 
163  CandPtrs& cands,
164  const std::vector<bool>& candFlags,
165  std::set<size_t>& candIdsCurrentStrip,
166  bool& isCandAdded) const {
167  if (verbosity_ >= 1) {
168  edm::LogPrint("RecoTauPiZeroStripPlugin3") << "<RecoTauPiZeroStripPlugin3::addCandsToStrip>:";
169  }
170  size_t numCands = cands.size();
171  for (size_t candId = 0; candId < numCands; ++candId) {
172  if ((!candFlags[candId]) &&
173  candIdsCurrentStrip.find(candId) == candIdsCurrentStrip.end()) { // do not include same cand twice
174  reco::CandidatePtr cand = cands[candId];
175  double etaAssociationDistance_value =
176  etaAssociationDistance_->Eval(strip.pt()) + etaAssociationDistance_->Eval(cand->pt());
177  double phiAssociationDistance_value =
178  phiAssociationDistance_->Eval(strip.pt()) + phiAssociationDistance_->Eval(cand->pt());
179  if (fabs(strip.eta() - cand->eta()) <
180  etaAssociationDistance_value && // check if cand is within eta-phi window centered on strip
181  reco::deltaPhi(strip.phi(), cand->phi()) < phiAssociationDistance_value) {
182  if (verbosity_ >= 2) {
183  edm::LogPrint("RecoTauPiZeroStripPlugin3")
184  << "--> adding PFCand #" << candId << " (" << cand.id() << ":" << cand.key()
185  << "): Et = " << cand->et() << ", eta = " << cand->eta() << ", phi = " << cand->phi();
186  }
187  strip.addDaughter(cand);
190  isCandAdded = true;
191  candIdsCurrentStrip.insert(candId);
192  }
193  }
194  }
195  }
196 
197  namespace {
198  void markCandsInStrip(std::vector<bool>& candFlags, const std::set<size_t>& candIds) {
199  for (std::set<size_t>::const_iterator candId = candIds.begin(); candId != candIds.end(); ++candId) {
200  candFlags[*candId] = true;
201  }
202  }
203 
204  // The following method has not been adapted to work with PackedCandidates,
205  // however, it is only used for printing/debugging and can be adapted when
206  // needed.
207  inline const reco::TrackBaseRef getTrack(const Candidate& cand) {
208  const PFCandidate* pfCandPtr = dynamic_cast<const PFCandidate*>(&cand);
209  if (pfCandPtr) {
210  if (pfCandPtr->trackRef().isNonnull())
211  return reco::TrackBaseRef(pfCandPtr->trackRef());
212  else if (pfCandPtr->gsfTrackRef().isNonnull())
213  return reco::TrackBaseRef(pfCandPtr->gsfTrackRef());
214  else
215  return reco::TrackBaseRef();
216  }
217 
218  return reco::TrackBaseRef();
219  }
220  } // namespace
221 
223  if (verbosity_ >= 1) {
224  edm::LogPrint("RecoTauPiZeroStripPlugin3") << "<RecoTauPiZeroStripPlugin3::operator()>:";
225  edm::LogPrint("RecoTauPiZeroStripPlugin3") << " minGammaEtStripSeed = " << minGammaEtStripSeed_;
226  edm::LogPrint("RecoTauPiZeroStripPlugin3") << " minGammaEtStripAdd = " << minGammaEtStripAdd_;
227  edm::LogPrint("RecoTauPiZeroStripPlugin3") << " minStripEt = " << minStripEt_;
228  }
229 
231 
232  // Get the candidates passing our quality cuts
234  CandPtrs candsVector = qcuts_->filterCandRefs(pfCandidates(jet, inputParticleIds_));
235 
236  // Convert to stl::list to allow fast deletions
237  CandPtrs seedCands;
238  CandPtrs addCands;
239  int idx = 0;
240  for (CandPtrs::iterator cand = candsVector.begin(); cand != candsVector.end(); ++cand) {
241  if (verbosity_ >= 1) {
242  edm::LogPrint("RecoTauPiZeroStripPlugin3")
243  << "PFGamma #" << idx << " (" << cand->id() << ":" << cand->key() << "): Et = " << (*cand)->et()
244  << ", eta = " << (*cand)->eta() << ", phi = " << (*cand)->phi();
245  }
246  if ((*cand)->et() > minGammaEtStripSeed_) {
247  if (verbosity_ >= 2) {
248  edm::LogPrint("RecoTauPiZeroStripPlugin3") << "--> assigning seedCandId = " << seedCands.size();
249  const reco::TrackBaseRef candTrack = getTrack(**cand);
250  if (candTrack.isNonnull()) {
251  edm::LogPrint("RecoTauPiZeroStripPlugin3")
252  << "track: Pt = " << candTrack->pt() << " eta = " << candTrack->eta()
253  << ", phi = " << candTrack->phi() << ", charge = " << candTrack->charge();
254  edm::LogPrint("RecoTauPiZeroStripPlugin3")
255  << " (dZ = " << candTrack->dz(vertexAssociator_.associatedVertex(jet)->position())
256  << ", dXY = " << candTrack->dxy(vertexAssociator_.associatedVertex(jet)->position()) << ","
257  << " numHits = " << candTrack->hitPattern().numberOfValidTrackerHits()
258  << ", numPxlHits = " << candTrack->hitPattern().numberOfValidPixelHits() << ","
259  << " chi2 = " << candTrack->normalizedChi2()
260  << ", dPt/Pt = " << (candTrack->ptError() / candTrack->pt()) << ")";
261  }
262  }
263  seedCands.push_back(*cand);
264  } else if ((*cand)->et() > minGammaEtStripAdd_) {
265  if (verbosity_ >= 2) {
266  edm::LogPrint("RecoTauPiZeroStripPlugin3") << "--> assigning addCandId = " << addCands.size();
267  }
268  addCands.push_back(*cand);
269  }
270  ++idx;
271  }
272 
273  std::vector<bool> seedCandFlags(seedCands.size()); // true/false: seedCand is already/not yet included in strip
274  std::vector<bool> addCandFlags(addCands.size()); // true/false: addCand is already/not yet included in strip
275 
276  std::set<size_t> seedCandIdsCurrentStrip;
277  std::set<size_t> addCandIdsCurrentStrip;
278 
279  size_t idxSeed = 0;
280  while (idxSeed < seedCands.size()) {
281  if (verbosity_ >= 2)
282  edm::LogPrint("RecoTauPiZeroStripPlugin3") << "processing seed #" << idxSeed;
283 
284  seedCandIdsCurrentStrip.clear();
285  addCandIdsCurrentStrip.clear();
286 
287  std::unique_ptr<RecoTauPiZero> strip(new RecoTauPiZero(*seedCands[idxSeed], RecoTauPiZero::kStrips));
288  strip->addDaughter(seedCands[idxSeed]);
289  seedCandIdsCurrentStrip.insert(idxSeed);
290 
291  bool isCandAdded;
292  int stripBuildIteration = 0;
293  do {
294  isCandAdded = false;
295 
296  //if ( verbosity_ >= 2 ) edm::LogPrint("RecoTauPiZeroStripPlugin3") << " adding seedCands to strip..." ;
297  addCandsToStrip(*strip, seedCands, seedCandFlags, seedCandIdsCurrentStrip, isCandAdded);
298  //if ( verbosity_ >= 2 ) edm::LogPrint("RecoTauPiZeroStripPlugin3") << " adding addCands to strip..." ;
299  addCandsToStrip(*strip, addCands, addCandFlags, addCandIdsCurrentStrip, isCandAdded);
300 
302  p4Builder_.set(*strip);
303 
304  ++stripBuildIteration;
305  } while (isCandAdded && (stripBuildIteration < maxStripBuildIterations_ || maxStripBuildIterations_ == -1));
306 
307  if (strip->et() > minStripEt_) { // strip passed Et cuts, add it to the event
308  if (verbosity_ >= 2)
309  edm::LogPrint("RecoTauPiZeroStripPlugin3")
310  << "Building strip: Et = " << strip->et() << ", eta = " << strip->eta() << ", phi = " << strip->phi();
311 
312  // Update the vertex
313  if (strip->daughterPtr(0).isNonnull())
314  strip->setVertex(strip->daughterPtr(0)->vertex());
315  output.push_back(std::move(strip));
316 
317  // Mark daughters as being part of this strip
318  markCandsInStrip(seedCandFlags, seedCandIdsCurrentStrip);
319  markCandsInStrip(addCandFlags, addCandIdsCurrentStrip);
320  } else { // strip failed Et cuts, just skip it
321  if (verbosity_ >= 2)
322  edm::LogPrint("RecoTauPiZeroStripPlugin3")
323  << "Discarding strip: Et = " << strip->et() << ", eta = " << strip->eta() << ", phi = " << strip->phi();
324  }
325 
326  ++idxSeed;
327  while (idxSeed < seedCands.size() && seedCandFlags[idxSeed]) {
328  ++idxSeed; // fast-forward to next seed cand not yet included in any strip
329  }
330  }
331 
332  // Check if we want to combine our strips
333  if (combineStrips_ && output.size() > 1) {
334  PiZeroVector stripCombinations;
335  // Sort the output by descending pt
336  output.sort(output.begin(), output.end(), [&](auto& arg1, auto& arg2) { return arg1.pt() > arg2.pt(); });
337  // Get the end of interesting set of strips to try and combine
338  PiZeroVector::const_iterator end_iter = takeNElements(output.begin(), output.end(), maxStrips_);
339 
340  // Look at all the combinations
341  for (PiZeroVector::const_iterator first = output.begin(); first != end_iter - 1; ++first) {
342  for (PiZeroVector::const_iterator second = first + 1; second != end_iter; ++second) {
343  Candidate::LorentzVector firstP4 = first->p4();
344  Candidate::LorentzVector secondP4 = second->p4();
345  // If we assume a certain mass for each strip apply it here.
346  firstP4 = applyMassConstraint(firstP4, combinatoricStripMassHypo_);
347  secondP4 = applyMassConstraint(secondP4, combinatoricStripMassHypo_);
348  Candidate::LorentzVector totalP4 = firstP4 + secondP4;
349  // Make our new combined strip
350  std::unique_ptr<RecoTauPiZero> combinedStrips(
351  new RecoTauPiZero(0,
352  totalP4,
353  Candidate::Point(0, 0, 0),
354  //111, 10001, true, RecoTauPiZero::kCombinatoricStrips));
355  111,
356  10001,
357  true,
359 
360  // Now loop over the strip members
361  for (auto const& gamma : first->daughterPtrVector()) {
362  combinedStrips->addDaughter(gamma);
363  }
364  for (auto const& gamma : second->daughterPtrVector()) {
365  combinedStrips->addDaughter(gamma);
366  }
367  // Update the vertex
368  if (combinedStrips->daughterPtr(0).isNonnull()) {
369  combinedStrips->setVertex(combinedStrips->daughterPtr(0)->vertex());
370  }
371 
372  // Add to our collection of combined strips
373  stripCombinations.push_back(std::move(combinedStrips));
374  }
375  }
376  // When done doing all the combinations, add the combined strips to the
377  // output.
378  output.transfer(output.end(), stripCombinations);
379  }
380 
381  // Compute correction to account for spread of photon energy in eta and phi
382  // in case charged pions make nuclear interactions or photons convert within the tracking detector
383  for (PiZeroVector::iterator strip = output.begin(); strip != output.end(); ++strip) {
384  double bendCorrEta = 0.;
385  double bendCorrPhi = 0.;
386  double energySum = 0.;
387  for (auto const& gamma : strip->daughterPtrVector()) {
388  bendCorrEta += (gamma->energy() * etaAssociationDistance_->Eval(gamma->pt()));
389  bendCorrPhi += (gamma->energy() * phiAssociationDistance_->Eval(gamma->pt()));
390  energySum += gamma->energy();
391  }
392  if (energySum > 1.e-2) {
393  bendCorrEta /= energySum;
394  bendCorrPhi /= energySum;
395  }
396  //std::cout << "stripPt = " << strip->pt() << ": bendCorrEta = " << bendCorrEta << ", bendCorrPhi = " << bendCorrPhi << std::endl;
397  strip->setBendCorrEta(bendCorrEta);
398  strip->setBendCorrPhi(bendCorrPhi);
399  }
400 
401  return output.release();
402  }
403  } // namespace tau
404 } // namespace reco
405 
reco::tau::RecoTauEventHolderPlugin::evt
const edm::Event * evt() const
Definition: RecoTauPluginsCommon.cc:16
reco::tau::RecoTauPiZeroStripPlugin3::minGammaEtStripAdd_
double minGammaEtStripAdd_
Definition: RecoTauPiZeroStripPlugin3.cc:72
reco::Jet
Base class for all types of Jets.
Definition: Jet.h:20
reco::TrackBase::ptError
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
Definition: TrackBase.h:754
pfMETsysShiftCorrections_cfi.parameter
parameter
Definition: pfMETsysShiftCorrections_cfi.py:118
configurableAnalysis::Candidate
char Candidate[]
Definition: modules.cc:20
reco::tau::RecoTauPiZeroStripPlugin3::maxStripBuildIterations_
int maxStripBuildIterations_
Definition: RecoTauPiZeroStripPlugin3.cc:81
metsig::tau
Definition: SignAlgoResolutions.h:49
PFCandidate.h
convertSQLitetoXML_cfg.output
output
Definition: convertSQLitetoXML_cfg.py:72
min
T min(T a, T b)
Definition: MathUtil.h:58
reco::deltaPhi
constexpr double deltaPhi(double phi1, double phi2)
Definition: deltaPhi.h:26
deltaPhi.h
pfMETCorrectionType0_cfi.formula
formula
Definition: pfMETCorrectionType0_cfi.py:46
edm
HLT enums.
Definition: AlignableModifier.h:19
digitizers_cfi.strip
strip
Definition: digitizers_cfi.py:19
reco::tau::RecoTauPiZeroStripPlugin3::qcuts_
std::unique_ptr< RecoTauQualityCuts > qcuts_
Definition: RecoTauPiZeroStripPlugin3.cc:69
PFJet.h
edm::LogPrint
Log< level::Warning, true > LogPrint
Definition: MessageLogger.h:130
reco::tau::RecoTauPiZeroStripPlugin3::CandPtrs
std::vector< reco::CandidatePtr > CandPtrs
Definition: RecoTauPiZeroStripPlugin3.cc:64
CustomPhysics_cfi.gamma
gamma
Definition: CustomPhysics_cfi.py:17
edm::second
U second(std::pair< T, U > const &p)
Definition: ParameterSet.cc:222
reco::tau::RecoTauPiZeroStripPlugin3::applyElecTrackQcuts_
bool applyElecTrackQcuts_
Definition: RecoTauPiZeroStripPlugin3.cc:70
reco::TrackBaseRef
edm::RefToBase< reco::Track > TrackBaseRef
persistent reference to a Track, using views
Definition: TrackFwd.h:35
reco::tau::RecoTauPiZeroStripPlugin3::combinatoricStripMassHypo_
double combinatoricStripMassHypo_
Definition: RecoTauPiZeroStripPlugin3.cc:86
reco::tau::RecoTauPiZeroStripPlugin3::phiAssociationDistance_
std::unique_ptr< const TFormula > phiAssociationDistance_
Definition: RecoTauPiZeroStripPlugin3.cc:78
reco::tau::RecoTauPiZeroStripPlugin3::etaAssociationDistance_
std::unique_ptr< const TFormula > etaAssociationDistance_
Definition: RecoTauPiZeroStripPlugin3.cc:77
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:45
RecoTauPiZeroPlugins.h
reco::tau::RecoTauPiZeroStripPlugin3::combineStrips_
bool combineStrips_
Definition: RecoTauPiZeroStripPlugin3.cc:84
RecoTauPiZero.h
dqmdumpme.first
first
Definition: dqmdumpme.py:55
RecoTauVertexAssociator.h
heavyIonCSV_trainingSettings.idx
idx
Definition: heavyIonCSV_trainingSettings.py:5
CastorDataFrameFilter_impl::energySum
double energySum(const DataFrame &df, int fs, int ls)
Definition: CastorDataFrameFilter.cc:22
reco::TrackBase::pt
double pt() const
track transverse momentum
Definition: TrackBase.h:637
pfElectronTranslator_cfi.PFCandidate
PFCandidate
Definition: pfElectronTranslator_cfi.py:6
MakerMacros.h
reco::RecoTauPiZero::kUndefined
Definition: RecoTauPiZero.h:11
reco::tau::RecoTauVertexAssociator
Definition: RecoTauVertexAssociator.h:50
Track.h
reco::tau::RecoTauPiZeroStripPlugin3::verbosity_
int verbosity_
Definition: RecoTauPiZeroStripPlugin3.cc:90
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
reco::tau::RecoTauPiZeroStripPlugin3::addCandsToStrip
void addCandsToStrip(RecoTauPiZero &, CandPtrs &, const std::vector< bool > &, std::set< size_t > &, bool &) const
Definition: RecoTauPiZeroStripPlugin3.cc:162
reco::tau::RecoTauPiZeroStripPlugin3::RecoTauPiZeroStripPlugin3
RecoTauPiZeroStripPlugin3(const edm::ParameterSet &, edm::ConsumesCollector &&iC)
Definition: RecoTauPiZeroStripPlugin3.cc:108
DQMScaleToClient_cfi.factor
factor
Definition: DQMScaleToClient_cfi.py:8
reco::TrackBase::charge
int charge() const
track electric charge
Definition: TrackBase.h:596
reco::TrackBase::dz
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
Definition: TrackBase.h:622
RecoTauCommonUtilities.h
reco::tau::RecoTauPiZeroStripPlugin3
Definition: RecoTauPiZeroStripPlugin3.cc:54
DEFINE_EDM_PLUGIN
#define DEFINE_EDM_PLUGIN(factory, type, name)
Definition: PluginFactory.h:124
reco::TrackBase::phi
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:649
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
Vertex.h
reco::tau::RecoTauPiZeroBuilderPlugin::PiZeroVector
boost::ptr_vector< RecoTauPiZero > PiZeroVector
Definition: RecoTauPiZeroPlugins.h:36
RecoTauQualityCuts.h
HLT_FULL_cff.cands
cands
Definition: HLT_FULL_cff.py:15205
reco::tau::RecoTauPiZeroStripPlugin3::minGammaEtStripSeed_
double minGammaEtStripSeed_
Definition: RecoTauPiZeroStripPlugin3.cc:71
CombinatoricGenerator.h
reco::tau::RecoTauVertexAssociator::associatedVertex
reco::VertexRef associatedVertex(const Jet &jet) const
Definition: RecoTauVertexAssociator.cc:377
edm::ParameterSet
Definition: ParameterSet.h:47
ParameterSet
Definition: Functions.h:16
edmplugin::PluginFactory
Definition: PluginFactory.h:34
reco::TrackBase::eta
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:652
cand
Definition: decayParser.h:32
AddFourMomenta.h
GsfTrack.h
reco::tau::RecoTauPiZeroStripPlugin3::p4Builder_
AddFourMomenta p4Builder_
Definition: RecoTauPiZeroStripPlugin3.cc:88
reco::tau::RecoTauPiZeroStripPlugin3::vertexAssociator_
RecoTauVertexAssociator vertexAssociator_
Definition: RecoTauPiZeroStripPlugin3.cc:67
reco::tau::RecoTauPiZeroStripPlugin3::inputParticleIds_
std::vector< int > inputParticleIds_
Definition: RecoTauPiZeroStripPlugin3.cc:76
reco::TrackBase::normalizedChi2
double normalizedChi2() const
chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
Definition: TrackBase.h:593
reco::tau::RecoTauVertexAssociator::setEvent
void setEvent(const edm::Event &evt)
Load the vertices from the event.
Definition: RecoTauVertexAssociator.cc:241
reco::tau::RecoTauPiZeroStripPlugin3::beginEvent
void beginEvent() override
Hook called at the beginning of the event.
Definition: RecoTauPiZeroStripPlugin3.cc:160
edm::Ptr< Candidate >
VertexFwd.h
getTrack
static const TrackGhostTrackState * getTrack(const BasicGhostTrackState *basic)
Definition: GhostTrackState.cc:49
reco::TrackBase::hitPattern
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
Definition: TrackBase.h:504
reco::tau::takeNElements
InputIterator takeNElements(const InputIterator &begin, const InputIterator &end, size_t N)
Definition: RecoTauCommonUtilities.h:104
reco::RecoTauPiZero
Definition: RecoTauPiZero.h:7
reco::tau::RecoTauPiZeroStripPlugin3::maxStrips_
int maxStrips_
Definition: RecoTauPiZeroStripPlugin3.cc:85
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
reco::tau::RecoTauPiZeroStripPlugin3::operator()
return_type operator()(const reco::Jet &) const override
Build a collection of piZeros from objects in the input jet.
Definition: RecoTauPiZeroStripPlugin3.cc:222
reco::HitPattern::numberOfValidTrackerHits
int numberOfValidTrackerHits() const
Definition: HitPattern.h:788
math::XYZTLorentzVector
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
metsig::jet
Definition: SignAlgoResolutions.h:47
reco::tau::RecoTauPiZeroStripPlugin3::updateStripAfterEachDaughter_
bool updateStripAfterEachDaughter_
Definition: RecoTauPiZeroStripPlugin3.cc:80
edm::RefToBase::isNonnull
bool isNonnull() const
Checks for non-null.
Definition: RefToBase.h:301
reco::tau::RecoTauPiZeroBuilderPlugin
Definition: RecoTauPiZeroPlugins.h:33
EgHLTOffHistBins_cfi.mass
mass
Definition: EgHLTOffHistBins_cfi.py:34
AddFourMomenta::set
void set(reco::Candidate &c) const
set up a candidate
Definition: AddFourMomenta.cc:6
edm::RefToBase< reco::Track >
reco::HitPattern::numberOfValidPixelHits
int numberOfValidPixelHits() const
Definition: HitPattern.h:800
AddFourMomenta
Definition: AddFourMomenta.h:18
reco::tau::pfCandidates
std::vector< CandidatePtr > pfCandidates(const Jet &jet, int particleId, bool sort=true)
Definition: RecoTauCommonUtilities.cc:59
reco::Candidate::LorentzVector
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Candidate.h:36
reco::Candidate::Point
math::XYZPoint Point
point in the space
Definition: Candidate.h:40
reco::TrackBase::dxy
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
Definition: TrackBase.h:608
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
PFCandidateFwd.h
reco::tau::RecoTauPiZeroStripPlugin3::~RecoTauPiZeroStripPlugin3
~RecoTauPiZeroStripPlugin3() override
Definition: RecoTauPiZeroStripPlugin3.cc:157
reco::RecoTauPiZero::kStrips
Definition: RecoTauPiZero.h:14
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
reco::tau::RecoTauPiZeroBuilderPlugin::return_type
std::unique_ptr< PiZeroVector > return_type
Definition: RecoTauPiZeroPlugins.h:39
reco::tau::RecoTauPiZeroStripPlugin3::minStripEt_
double minStripEt_
Definition: RecoTauPiZeroStripPlugin3.cc:74