CMS 3D CMS Logo

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
reco::PFBlockElementGsfTrack::GsftrackRef
const reco::GsfTrackRef & GsftrackRef() const
Definition: PFBlockElementGsfTrack.h:49
reco::PFBlockElementGsfTrack::trackType
bool trackType(TrackType trType) const override
Definition: PFBlockElementGsfTrack.h:31
reco::PFBlockElementGsfTrack::GsftrackRefPF_
GsfPFRecTrackRef GsftrackRefPF_
reference to the corresponding GSF track (transient)
Definition: PFBlockElementGsfTrack.h:61
reco::PFBlockElementGsfTrack::GsftrackPF
const GsfPFRecTrack & GsftrackPF() const
Definition: PFBlockElementGsfTrack.h:54
gather_cfg.cout
cout
Definition: gather_cfg.py:144
reco::PFBlockElementGsfTrack::Pin_
math::XYZTLorentzVector Pin_
The CorrespondingKFTrackRef is needeed.
Definition: PFBlockElementGsfTrack.h:67
reco::PFBlockElementGsfTrack::GsftrackRef_
reco::GsfTrackRef GsftrackRef_
reference to the corresponding GSF track
Definition: PFBlockElementGsfTrack.h:64
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:46
reco::PFBlockElementGsfTrack::kSecondaryMask
static constexpr unsigned int kSecondaryMask
Definition: PFBlockElementGsfTrack.h:41
reco::PFBlockElementGsfTrack::Pout_
math::XYZTLorentzVector Pout_
Definition: PFBlockElementGsfTrack.h:68
reco::PFBlockElementGsfTrack::Pout
const math::XYZTLorentzVector & Pout() const
Definition: PFBlockElementGsfTrack.h:57
reco::GsfPFRecTrack
Definition: GsfPFRecTrack.h:24
edm::Ref< GsfPFRecTrackCollection >
reco::PFBlockElementGsfTrack::positionAtECALEntrance
const math::XYZPointF & positionAtECALEntrance() const
Definition: PFBlockElementGsfTrack.h:52
TrackFwd.h
PFBlockElement.h
reco::PFBlockElementGsfTrack::trackType_
unsigned int trackType_
Definition: PFBlockElementGsfTrack.h:69
reco::PFBlockElement::TrackType
TrackType
Definition: PFBlockElement.h:47
reco::PFBlockElementGsfTrack::PFBlockElementGsfTrack
PFBlockElementGsfTrack()
Definition: PFBlockElementGsfTrack.h:20
LorentzVector.h
value
Definition: value.py:1
reco::PFBlockElement::T_FROM_GAMMACONV
Definition: PFBlockElement.h:47
reco::PFBlockElementGsfTrack::clone
PFBlockElement * clone() const override
necessary to have the edm::OwnVector<PFBlockElement> working
Definition: PFBlockElementGsfTrack.h:26
reco::PFBlockElementGsfTrack::isSecondary
bool isSecondary() const override
Definition: PFBlockElementGsfTrack.h:43
reco::PFBlockElementGsfTrack::setTrackType
void setTrackType(TrackType trType, bool value) override
\set the trackType
Definition: PFBlockElementGsfTrack.h:34
reco::PFBlockElement
Abstract base class for a PFBlock element (track, cluster...)
Definition: PFBlockElement.h:26
reco::PFBlockElementGsfTrack
Track Element.
Definition: PFBlockElementGsfTrack.h:18
reco::PFBlockElementGsfTrack::positionAtECALEntrance_
math::XYZPointF positionAtECALEntrance_
position at ECAL entrance
Definition: PFBlockElementGsfTrack.h:72
math::XYZTLorentzVector
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
Point3D.h
reco::PFBlockElementGsfTrack::GsftrackRefPF
const GsfPFRecTrackRef & GsftrackRefPF() const
Definition: PFBlockElementGsfTrack.h:46
PFRecTrackFwd.h
MillePedeFileConverter_cfg.out
out
Definition: MillePedeFileConverter_cfg.py:31
GsfPFRecTrackFwd.h
reco::PFBlockElementGsfTrack::Dump
void Dump(std::ostream &out=std::cout, const char *tab=" ") const override
print the object inside the element
Definition: PFBlockElementGsfTrack.cc:30
reco::PFBlockElementGsfTrack::Pin
const math::XYZTLorentzVector & Pin() const
Definition: PFBlockElementGsfTrack.h:56
GsfPFRecTrack.h
math::XYZPointF
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< float > > XYZPointF
point in space with cartesian internal representation
Definition: Point3D.h:10