File indexing completed on 2023-03-17 10:40:37
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
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
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