File indexing completed on 2024-04-06 12:15:33
0001 #ifndef HeavyFlavorAnalysis_RecoDecay_BPHDecayVertex_h
0002 #define HeavyFlavorAnalysis_RecoDecay_BPHDecayVertex_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 #include "HeavyFlavorAnalysis/RecoDecay/interface/BPHDecayMomentum.h"
0016
0017 class BPHEventSetupWrapper;
0018
0019 namespace edm {
0020 class EventSetup;
0021 }
0022
0023 namespace reco {
0024 class TransientTrack;
0025 class Vertex;
0026 }
0027
0028
0029
0030
0031 #include "DataFormats/VertexReco/interface/Vertex.h"
0032 #include "RecoVertex/VertexPrimitives/interface/VertexFitter.h"
0033
0034
0035
0036
0037 #include <vector>
0038 #include <map>
0039 #include <string>
0040
0041
0042
0043
0044
0045 class BPHDecayVertex : public virtual BPHDecayMomentum {
0046 public:
0047
0048
0049
0050
0051 BPHDecayVertex(const BPHDecayVertex& x) = delete;
0052 BPHDecayVertex& operator=(const BPHDecayVertex& x) = delete;
0053
0054
0055
0056 ~BPHDecayVertex() override;
0057
0058
0059
0060
0061
0062 virtual bool validTracks() const;
0063 virtual bool validVertex() const;
0064
0065
0066 virtual const reco::Vertex& vertex(VertexFitter<5>* fitter = nullptr,
0067 const reco::BeamSpot* bs = nullptr,
0068 const GlobalPoint* priorPos = nullptr,
0069 const GlobalError* priorError = nullptr) const;
0070
0071
0072 const std::vector<const reco::Track*>& tracks() const;
0073
0074
0075 const reco::Track* getTrack(const reco::Candidate* cand) const;
0076
0077
0078 char getTMode(const reco::Candidate* cand) const;
0079
0080
0081 const std::vector<reco::TransientTrack>& transientTracks() const;
0082
0083
0084 reco::TransientTrack* getTransientTrack(const reco::Candidate* cand) const;
0085
0086
0087 const BPHEventSetupWrapper* getEventSetup() const;
0088
0089
0090 const std::string& getTrackSearchList(const reco::Candidate* cand) const;
0091
0092 protected:
0093
0094 BPHDecayVertex(const BPHEventSetupWrapper* es, int daugNum = 2, int compNum = 2);
0095
0096 BPHDecayVertex(const BPHDecayVertex* ptr, const BPHEventSetupWrapper* es);
0097
0098
0099
0100 virtual void addV(const std::string& name, const reco::Candidate* daug, const std::string& searchList, double mass);
0101
0102 virtual void addV(const std::string& name, const BPHRecoConstCandPtr& comp);
0103
0104
0105 void setNotUpdated() const override;
0106
0107 private:
0108
0109 const BPHEventSetupWrapper* evSetup;
0110
0111
0112 std::map<const reco::Candidate*, std::string> searchMap;
0113
0114
0115 mutable bool oldTracks;
0116 mutable bool oldTTracks;
0117 mutable bool oldVertex;
0118 mutable bool validTks;
0119 mutable std::vector<const reco::Track*> rTracks;
0120 mutable std::vector<reco::TransientTrack> trTracks;
0121 mutable std::map<const reco::Candidate*, const reco::Track*> tkMap;
0122 mutable std::map<const reco::Candidate*, char> tmMap;
0123 mutable std::map<const reco::Candidate*, reco::TransientTrack*> ttMap;
0124 mutable reco::Vertex fittedVertex;
0125 mutable VertexFitter<5>* savedFitter;
0126 mutable const reco::BeamSpot* savedBS;
0127 mutable const GlobalPoint* savedPP;
0128 mutable const GlobalError* savedPE;
0129
0130
0131 virtual void fTracks() const;
0132 virtual void fTTracks() const;
0133 virtual void fitVertex(VertexFitter<5>* fitter,
0134 const reco::BeamSpot* bs,
0135 const GlobalPoint* priorPos,
0136 const GlobalError* priorError) const;
0137 };
0138
0139 #endif