File indexing completed on 2024-04-06 12:24:08
0001 #ifndef PhysicsTools_RecoUtils_CheckHitPattern_H
0002 #define PhysicsTools_RecoUtils_CheckHitPattern_H
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #include "DataFormats/TrackReco/interface/Track.h"
0013 #include "RecoVertex/VertexPrimitives/interface/VertexState.h"
0014 #include "TrackingTools/TransientTrack/interface/TransientTrackBuilder.h"
0015 #include "DataFormats/TrackReco/interface/HitPattern.h"
0016 #include <utility>
0017 #include <map>
0018
0019 class DetId;
0020
0021 class TrackerTopology;
0022 class TrackerGeometry;
0023
0024 class CheckHitPattern {
0025 public:
0026 struct Result {
0027
0028 unsigned int hitsInFrontOfVert;
0029
0030 unsigned int missHitsAfterVert;
0031 };
0032
0033
0034
0035 Result operator()(const reco::Track& track, const VertexState& vert) const;
0036
0037
0038 static void print(const reco::Track& track);
0039
0040
0041 void init(const TrackerTopology* tTopo, const TrackerGeometry& geom, const TransientTrackBuilder& builder);
0042
0043
0044
0045 typedef std::pair<uint32_t, uint32_t> DetInfo;
0046 static DetInfo interpretDetId(DetId detId, const TrackerTopology* tTopo);
0047
0048
0049 static bool barrel(uint32_t subDet);
0050
0051 static void print(const reco::HitPattern::HitCategory category, const reco::HitPattern& hp);
0052
0053 private:
0054
0055 bool geomInitDone_ = false;
0056
0057
0058
0059 typedef std::map<DetInfo, std::pair<double, double> > RZrangeMap;
0060 RZrangeMap rangeRorZ_;
0061
0062
0063 const TransientTrackBuilder* trkTool_ = nullptr;
0064 };
0065
0066 #endif