CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_0/src/DataFormats/ParticleFlowReco/interface/PFBlockElementGsfTrack.h

Go to the documentation of this file.
00001 #ifndef __PFBlockElementGsfTrack__
00002 #define __PFBlockElementGsfTrack__
00003 
00004 #include <iostream>
00005 #include "DataFormats/Math/interface/Point3D.h"
00006 #include "DataFormats/ParticleFlowReco/interface/PFBlockElement.h"
00007 #include "DataFormats/ParticleFlowReco/interface/PFRecTrackFwd.h"
00008 #include "DataFormats/ParticleFlowReco/interface/GsfPFRecTrackFwd.h"
00009 #include "DataFormats/ParticleFlowReco/interface/GsfPFRecTrack.h"
00010 #include "DataFormats/Math/interface/LorentzVector.h"
00011 #include "DataFormats/TrackReco/interface/TrackFwd.h"
00012 
00013 namespace reco {
00014   
00018   class PFBlockElementGsfTrack : public PFBlockElement {
00019   public:
00020 
00021     PFBlockElementGsfTrack() {} 
00022 
00023     PFBlockElementGsfTrack(const GsfPFRecTrackRef& gsfref, 
00024                            const math::XYZTLorentzVector& Pin, 
00025                            const math::XYZTLorentzVector& Pout);
00026 
00027     PFBlockElement* clone() const { return new PFBlockElementGsfTrack(*this); }
00028     
00029     void Dump(std::ostream& out = std::cout, 
00030               const char* tab = " " ) const;
00031 
00033     virtual bool trackType(TrackType trType) const { 
00034       return (trackType_>>trType) & 1; 
00035     }
00036       
00038     virtual void setTrackType(TrackType trType, bool value) {
00039       if(value)  trackType_ = trackType_ | (1<<trType);
00040       else trackType_ = trackType_ ^ (1<<trType);
00041     }
00042     
00043     bool isSecondary() const { 
00044       return trackType(T_FROM_GAMMACONV); 
00045     }
00046 
00048     GsfPFRecTrackRef GsftrackRefPF() const {
00049       return GsftrackRefPF_;
00050     }
00051     
00053     reco::GsfTrackRef GsftrackRef() const {
00054       return GsftrackRef_;
00055     }
00056  
00057     
00058     
00059    
00061     const math::XYZPointF& positionAtECALEntrance() const {
00062       return positionAtECALEntrance_;
00063     }
00064     
00065 
00066 
00067     const GsfPFRecTrack & GsftrackPF() const { return *GsftrackRefPF_;}
00068   
00069     const math::XYZTLorentzVector& Pin() const    { return Pin_; }
00070     const math::XYZTLorentzVector& Pout() const    { return Pout_; }
00071   private:
00072     
00073 
00074 
00076     GsfPFRecTrackRef  GsftrackRefPF_;
00077     
00079     reco::GsfTrackRef GsftrackRef_;
00080     
00081     
00083     math::XYZTLorentzVector Pin_;
00084     math::XYZTLorentzVector Pout_;
00085     unsigned int  trackType_; 
00086  
00087 
00089     math::XYZPointF        positionAtECALEntrance_;
00090     
00091 
00092 
00093   };
00094 }
00095 
00096 #endif
00097