Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
/*!
\page DataFormats_Candidate Package DataFormats/Candidate
<center>
<small>
<a href=http://cmsdoc.cern.ch/swdev/viewcvs/viewcvs.cgi/CMSSW/DataFormats/Candidate/?cvsroot=CMSSW>CVS head for this package</a> - 
<a href=http://cmsdoc.cern.ch/swdev/viewcvs/viewcvs.cgi/CMSSW/DataFormats/Candidate/.admin/developers?rev=HEAD&cvsroot=CMSSW&content-type=text/vnd.viewcvs-markup>Administrative privileges</a>
</small>
</center>

\section desc Description
Classes defining particle candidate. The class reco::Candidate is 
intended to be a common class for many Physics Analysis tools.

\subsection interface Public interface
- reco::Particle: a reconstructed particle with momentum 4-vector, a vertex and an electric charge. 
- reco::Candidate: a generic reconstructed particle candidates. It adds
  to reco::Particle interface for navigation among constituents.
  Utilities to extract components from a reco::Candidate avoiding explicit <tt>dynamic_cast</tt>
  are provided. A tag struct can be used as optional second template parameter to
  disambiguate between more components in a Candidate of the same type.
  The following example shows how to extract references to a reco::Track or reco::Muon.
  The following syntaxes are all equivalent:
\htmlonly
<pre>
  const Candidate & cand = ...;
  TrackRef track1 = c.get&lt;TrackRef&gt;( c );
  TrackRef track2 = get&lt;TrackRef&gt;( c );
  TrackRef track3 = component&lt;TrackRef&gt;::get( c );
</pre>
\endhtmlonly
  It is possible to access different types of components, 
  but you have to get sure to <tt>#include</tt> the 
  header files of the concrete candidate subclass in order
  to define the proper template specialization.
\htmlonly
<pre>
  const Candidate & c = ...;
  TrackRef track = c.get&lt;TrackRef&gt;();
  SuperClusterRef cluster = c.get&lt;SuperClusterRef&gt;();

  const Candidate & g = ...;
  const HepMC::GenParticle * gen = g.get&lt;const HepMC::GenParticle *&gt;();
</pre>
\endhtmlonly
  In case of multiple components of the same type, it is possible to specify an extra
  "tag" to disentangle the ambiguity. For instance:
\htmlonly
<pre>
  const Candidate & muon = ...;
  // tracker fit: default
  TrackRef trackerFit = muon.get&lt;TrackRef&gt;();
  // stand alone muon fit
  TrackRef standAloneMuFit = muon.get&lt;TrackRef, StandAloneMuonTag&gt;();
  // combined muon + tracker fit
  TrackRef combinedFit = muon.get&lt;TrackRef, CombinedMuonTag&gt;();
</pre>
\endhtmlonly
- reco::LeafCandidate: a reco::Candidate with no component nor daughters. 
Suitable to store just 4-vector, vertex and electric charge.
- reco::CompositeCandidate: a composite reco::Candidate where the daughters
are owned by the composite candidate.
- reco::CompositeRefCandidate: a composite reco::Candidate where the daughters
have persistent references (edm::RefVector <b><...></b>) to reco::Candidate stored in 
a separate collection.
- reco::CompositeRefBaseCandidate: a composite reco::Candidate  where the daughters
have persistent references (edm::RefToBase <b><...></b>) to reco::Candidate stored in 
a separate collection of concrete types.
- reco::ShallowCloneCandidate: a candidate with a reference to a "master clone". All
methods, except the kinematics, that is copied, are delegated to the master clone.
- OverlapChecker: utility to check overlap between two candidates, 
  looking for a common component recursively along daughters.


\subsection typedefs 
- reco::CandidateCollection: collection of reco::Candidate objects
- reco::CandidateRef: persistent reference to a reco::Candidate object
- reco::CandidateBaseRef: persistent reference to a reco::Candidate object as base class
- reco::CandidateRefProd: reference to a reco::Candidate collection
- reco::CandidateRefVector: vector of references to reco::Candidate objects in the same collection
- reco::candidate_iterator: iterator over a vector of references to reco::Candidate objects in the same collection
- reco::CandMatchMap: one-to-one candidate association map by reference

\subsection modules Modules
None.

\subsection tests Unit tests and examples
- <b>testParticle</b>: test reco::Particle class
- <b>testCompositeCandidate</b>: test reco::CompositeCandidate class
- <b>testSetup</b>: test reco::Setup mechanism

\section status Status and planned development
Complete.

<hr>
Last updated: @DATE@ L. Lista
*/