File indexing completed on 2023-03-17 11:19:19
0001 #ifndef DTSegment_DTCombinatorialPatternReco4D_h
0002 #define DTSegment_DTCombinatorialPatternReco4D_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #include "RecoLocalMuon/DTSegment/src/DTRecSegment4DBaseAlgo.h"
0015
0016 class DTRecSegment2DBaseAlgo;
0017
0018
0019 namespace edm {
0020 class ParameterSet;
0021 class EventSetup;
0022 }
0023 class DTSegmentUpdator;
0024 class MuonGeometryRecord;
0025
0026
0027
0028 #include <vector>
0029
0030
0031 #include "Geometry/DTGeometry/interface/DTGeometry.h"
0032 #include "FWCore/Framework/interface/ESHandle.h"
0033 #include "FWCore/Utilities/interface/ESGetToken.h"
0034 #include "FWCore/Framework/interface/FrameworkfwdMostUsed.h"
0035
0036
0037 class DTSegmentCand;
0038 class DTCombinatorialPatternReco;
0039 class DTHitPairForFit;
0040
0041
0042
0043 class DTCombinatorialPatternReco4D : public DTRecSegment4DBaseAlgo {
0044 public:
0045
0046 DTCombinatorialPatternReco4D(const edm::ParameterSet& pset, edm::ConsumesCollector);
0047
0048
0049 ~DTCombinatorialPatternReco4D() override;
0050
0051
0052 edm::OwnVector<DTRecSegment4D> reconstruct() override;
0053
0054 std::string algoName() const override { return theAlgoName; }
0055
0056 void setES(const edm::EventSetup& setup) override;
0057 void setDTRecHit1DContainer(edm::Handle<DTRecHitCollection> all1DHits) override;
0058 void setDTRecSegment2DContainer(edm::Handle<DTRecSegment2DCollection> all2DSegments) override;
0059 void setChamber(const DTChamberId& chId) override;
0060 bool wants2DSegments() override { return !allDTRecHits; }
0061
0062 protected:
0063 private:
0064 std::vector<DTSegmentCand*> buildPhiSuperSegmentsCandidates(
0065 std::vector<std::shared_ptr<DTHitPairForFit>>& pairPhiOwned);
0066 DTRecSegment4D* segmentSpecialZed(const DTRecSegment4D* seg);
0067
0068 std::string theAlgoName;
0069
0070 bool debug;
0071
0072
0073
0074 edm::ESHandle<DTGeometry> theDTGeometry;
0075 edm::ESGetToken<DTGeometry, MuonGeometryRecord> theDTGeometryToken;
0076
0077
0078
0079 DTCombinatorialPatternReco* the2DAlgo;
0080
0081
0082 DTSegmentUpdator* theUpdator;
0083
0084 const DTChamber* theChamber;
0085
0086
0087 bool allDTRecHits;
0088 bool applyT0corr;
0089 bool computeT0corr;
0090
0091
0092 std::vector<DTSLRecSegment2D> theSegments2DTheta;
0093 std::vector<DTRecHit1DPair> theHitsFromPhi1;
0094 std::vector<DTRecHit1DPair> theHitsFromTheta;
0095 std::vector<DTRecHit1DPair> theHitsFromPhi2;
0096 };
0097 #endif