Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2022-03-31 23:46:30

0001 #ifndef RecoParticleFlow_PFTracking_PFTrackTransformer_H
0002 #define RecoParticleFlow_PFTracking_PFTrackTransformer_H
0003 
0004 #include "RecoParticleFlow/PFTracking/interface/PFGeometry.h"
0005 #include "DataFormats/GeometrySurface/interface/Surface.h"
0006 #include "FWCore/Framework/interface/Frameworkfwd.h"
0007 #include "FWCore/Framework/interface/EventSetup.h"
0008 #include "FWCore/Framework/interface/Event.h"
0009 #include "FWCore/Framework/interface/MakerMacros.h"
0010 #include "DataFormats/ParticleFlowReco/interface/PFRecTrack.h"
0011 #include "DataFormats/ParticleFlowReco/interface/GsfPFRecTrack.h"
0012 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0013 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h"
0014 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0015 #include "DataFormats/GeometryVector/interface/GlobalVector.h"
0016 #include "DataFormats/Math/interface/Vector3D.h"
0017 #include "TrackingTools/GsfTools/interface/MultiTrajectoryStateTransform.h"
0018 #include "TrackingTools/GsfTools/interface/MultiTrajectoryStateMode.h"
0019 
0020 /// \brief Abstract
0021 /*!
0022 \author Michele Pioppi
0023 \date January 2007
0024 
0025  PFTrackTransformer is the class used to transform 
0026  pairs tracks-trajectories in pfrectracks that can be 
0027  used in the PFlow FW.
0028  Other utilities: 
0029  Get TSOS on surface defined in PFGEometry 
0030  Evaluate the surface corresponding to the maximum shower
0031 */
0032 
0033 class Trajectory;
0034 class PFTrackTransformer {
0035 public:
0036   PFTrackTransformer(const math::XYZVector&);
0037   ~PFTrackTransformer();
0038 
0039   /// Add points to a PFTrack. return false if a TSOS is invalid
0040   bool addPoints(reco::PFRecTrack& pftrack,
0041                  const reco::Track& track,
0042                  const Trajectory& traj,
0043                  bool msgwarning = true) const;
0044 
0045   bool addPointsAndBrems(reco::GsfPFRecTrack& pftrack,
0046                          const reco::Track& track,
0047                          const Trajectory& traj,
0048                          const bool& GetMode) const;
0049 
0050   bool addPointsAndBrems(reco::GsfPFRecTrack& pftrack,
0051                          const reco::GsfTrack& track,
0052                          const MultiTrajectoryStateTransform& mtjstate) const;
0053 
0054   void OnlyProp() { onlyprop_ = true; }
0055   bool onlyprop_;
0056 
0057 private:
0058   ///B field
0059   math::XYZVector B_;
0060   PFGeometry pfGeometry_;
0061   static constexpr double cos2ThetaV_Endcap_HiEnd_ = 0.99014;
0062 };
0063 
0064 #endif