Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 11:57:21

0001 #ifndef Alignment_ReferenceTrajectories_TwoBodyDecayTrajectory_h
0002 #define Alignment_ReferenceTrajectories_TwoBodyDecayTrajectory_h
0003 
0004 #include "Alignment/ReferenceTrajectories/interface/ReferenceTrajectory.h"
0005 #include "Alignment/ReferenceTrajectories/interface/TwoBodyDecayTrajectoryState.h"
0006 
0007 /**
0008    by Edmund Widl, see CMS NOTE-2007/032.
0009  */
0010 
0011 namespace reco {
0012   class BeamSpot;
0013 }
0014 
0015 class TwoBodyDecayTrajectory : public ReferenceTrajectoryBase {
0016 public:
0017   typedef TransientTrackingRecHit::ConstRecHitContainer ConstRecHitContainer;
0018   typedef std::pair<ConstRecHitContainer, ConstRecHitContainer> ConstRecHitCollection;
0019 
0020   TwoBodyDecayTrajectory(const TwoBodyDecayTrajectoryState& tsos,
0021                          const ConstRecHitCollection& recHits,
0022                          const MagneticField* magField,
0023                          const reco::BeamSpot& beamSpot,
0024                          const ReferenceTrajectoryBase::Config& config);
0025 
0026   TwoBodyDecayTrajectory(void);
0027 
0028   ~TwoBodyDecayTrajectory(void) override {}
0029 
0030   TwoBodyDecayTrajectory* clone(void) const override { return new TwoBodyDecayTrajectory(*this); }
0031 
0032   /**Number of RecHits belonging to the first and second track.
0033    */
0034   inline const std::pair<int, int> numberOfRecHits(void) { return theNumberOfRecHits; }
0035 
0036 private:
0037   bool construct(const TwoBodyDecayTrajectoryState& state,
0038                  const ConstRecHitCollection& recHits,
0039                  const MagneticField* field,
0040                  const reco::BeamSpot& beamSpot);
0041 
0042   void constructTsosVecWithErrors(const ReferenceTrajectory& traj1,
0043                                   const ReferenceTrajectory& traj2,
0044                                   const MagneticField* field);
0045 
0046   void constructSingleTsosWithErrors(const TrajectoryStateOnSurface& tsos, int iTsos, const MagneticField* field);
0047 
0048   const MaterialEffects materialEffects_;
0049   const PropagationDirection propDir_;
0050   const bool useRefittedState_;
0051   const bool constructTsosWithErrors_;
0052 
0053   std::pair<int, int> theNumberOfRecHits;
0054 };
0055 
0056 #endif