CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
PFBlockElementGsfTrack.h
Go to the documentation of this file.
1 #ifndef __PFBlockElementGsfTrack__
2 #define __PFBlockElementGsfTrack__
3 
4 #include <iostream>
12 
13 namespace reco {
14 
18  class PFBlockElementGsfTrack final : public PFBlockElement {
19  public:
21 
25 
26  PFBlockElement* clone() const override { return new PFBlockElementGsfTrack(*this); }
27 
28  void Dump(std::ostream& out = std::cout, const char* tab = " ") const override;
29 
31  bool trackType(TrackType trType) const override { return (trackType_ >> trType) & 1; }
32 
34  void setTrackType(TrackType trType, bool value) override {
35  if (value)
36  trackType_ = trackType_ | (1 << trType);
37  else
38  trackType_ = trackType_ ^ (1 << trType);
39  }
40 
41  static constexpr unsigned int kSecondaryMask = 1 << T_FROM_GAMMACONV;
42 
43  bool isSecondary() const override { return trackType_ & kSecondaryMask; }
44 
46  const GsfPFRecTrackRef& GsftrackRefPF() const { return GsftrackRefPF_; }
47 
49  const reco::GsfTrackRef& GsftrackRef() const { return GsftrackRef_; }
50 
53 
54  const GsfPFRecTrack& GsftrackPF() const { return *GsftrackRefPF_; }
55 
56  const math::XYZTLorentzVector& Pin() const { return Pin_; }
57  const math::XYZTLorentzVector& Pout() const { return Pout_; }
58 
59  private:
62 
65 
69  unsigned int trackType_;
70 
73  };
74 } // namespace reco
75 
76 #endif
const math::XYZTLorentzVector & Pout() const
Abstract base class for a PFBlock element (track, cluster...)
const reco::GsfTrackRef & GsftrackRef() const
const math::XYZPointF & positionAtECALEntrance() const
const GsfPFRecTrackRef & GsftrackRefPF() const
const math::XYZTLorentzVector & Pin() const
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< float > > XYZPointF
point in space with cartesian internal representation
Definition: Point3D.h:10
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
const GsfPFRecTrack & GsftrackPF() const
void Dump(std::ostream &out=std::cout, const char *tab=" ") const override
print the object inside the element
bool trackType(TrackType trType) const override
math::XYZPointF positionAtECALEntrance_
position at ECAL entrance
reco::GsfTrackRef GsftrackRef_
reference to the corresponding GSF track
static constexpr unsigned int kSecondaryMask
math::XYZTLorentzVector Pin_
The CorrespondingKFTrackRef is needeed.
PFBlockElement * clone() const override
necessary to have the edm::OwnVector&lt;PFBlockElement&gt; working
void setTrackType(TrackType trType, bool value) override
the trackType
tuple cout
Definition: gather_cfg.py:144
GsfPFRecTrackRef GsftrackRefPF_
reference to the corresponding GSF track (transient)