Go to the documentation of this file.00001 #ifndef RoadSearchSeedFinderAlgorithm_h
00002 #define RoadSearchSeedFinderAlgorithm_h
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <string>
00023 #include <sstream>
00024
00025 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00026 #include "FWCore/Framework/interface/EventSetup.h"
00027 #include "DataFormats/Common/interface/Handle.h"
00028
00029 #include "DataFormats/TrackerRecHit2D/interface/SiStripMatchedRecHit2DCollection.h"
00030 #include "DataFormats/TrackerRecHit2D/interface/SiStripRecHit2DCollection.h"
00031 #include "DataFormats/RoadSearchSeed/interface/RoadSearchSeedCollection.h"
00032
00033 #include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h"
00034
00035 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
00036
00037 #include "MagneticField/Engine/interface/MagneticField.h"
00038
00039 #include "RecoTracker/RoadMapRecord/interface/Roads.h"
00040
00041 #include "TrackingTools/RoadSearchHitAccess/interface/DetHitAccess.h"
00042
00043 #include "RecoTracker/RoadSearchSeedFinder/interface/RoadSearchCircleSeed.h"
00044
00045 class RoadSearchSeedFinderAlgorithm
00046 {
00047 public:
00048
00049 RoadSearchSeedFinderAlgorithm(const edm::ParameterSet& conf);
00050 ~RoadSearchSeedFinderAlgorithm();
00051
00052
00053 void run(const SiStripRecHit2DCollection* rphiRecHits,
00054 const SiStripRecHit2DCollection* stereoRecHits,
00055 const SiStripMatchedRecHit2DCollection* matchedRecHits,
00056 const SiPixelRecHitCollection* pixelRecHits,
00057 const edm::EventSetup& es,
00058 RoadSearchSeedCollection &output);
00059
00060 bool mergeCircleSeeds(std::vector<RoadSearchCircleSeed> &circleSeeds);
00061
00062 bool calculateCircleSeedsFromHits(std::vector<RoadSearchCircleSeed> &circleSeeds,
00063 const Roads::RoadSeed *seed,
00064 const Roads::RoadSet *set,
00065 GlobalPoint ring1GlobalPoint,
00066 TrackingRecHit *ring1RecHit,
00067 std::vector<TrackingRecHit*> ring2RecHits,
00068 std::vector<TrackingRecHit*> ring3RecHits);
00069
00070 bool calculateCircleSeedsFromHits(std::vector<RoadSearchCircleSeed> &circleSeeds,
00071 const Roads::RoadSeed *seed,
00072 const Roads::RoadSet *set,
00073 GlobalPoint ring1GlobalPoint,
00074 TrackingRecHit *ring1RecHit,
00075 std::vector<TrackingRecHit*> ring2RecHits);
00076
00077 bool calculateCircleSeedsFromRingsOneInnerTwoOuter(std::vector<RoadSearchCircleSeed> &circleSeeds,
00078 const Roads::RoadSeed *seed,
00079 const Roads::RoadSet *set,
00080 const Ring* ring1,
00081 const Ring* ring2,
00082 const Ring* ring3);
00083
00084 bool calculateCircleSeedsFromRingsTwoInnerOneOuter(std::vector<RoadSearchCircleSeed> &circleSeeds,
00085 const Roads::RoadSeed *seed,
00086 const Roads::RoadSet *set,
00087 const Ring* ring1,
00088 const Ring* ring2,
00089 const Ring* ring3);
00090 bool calculateCircleSeedsFromRingsOneInnerOneOuter(std::vector<RoadSearchCircleSeed> &circleSeeds,
00091 const Roads::RoadSeed *seed,
00092 const Roads::RoadSet *set,
00093 const Ring* ring1,
00094 const Ring* ring2);
00095
00096 bool ringsOnSameLayer(const Ring *ring1,
00097 const Ring* ring2);
00098 bool detIdsOnSameLayer(DetId id1,
00099 DetId id2);
00100
00101 unsigned int ClusterCounter(const edmNew::DetSetVector<SiStripCluster>* clusters);
00102
00103 private:
00104
00105 double minPt_;
00106 double maxBarrelImpactParameter_;
00107 double maxEndcapImpactParameter_;
00108 double phiRangeDetIdLookup_;
00109
00110 double mergeSeedsCenterCut_;
00111 double mergeSeedsRadiusCut_;
00112 double mergeSeedsCenterCut_A_;
00113 double mergeSeedsRadiusCut_A_;
00114 double mergeSeedsCenterCut_B_;
00115 double mergeSeedsRadiusCut_B_;
00116 double mergeSeedsCenterCut_C_;
00117 double mergeSeedsRadiusCut_C_;
00118 unsigned int mergeSeedsDifferentHitsCut_;
00119
00120 int maxNumberOfSeeds_;
00121
00122 DetHitAccess innerSeedHitVector_;
00123 DetHitAccess outerSeedHitVector_;
00124
00125 DetHitAccess::accessMode innerSeedHitAccessMode_;
00126 bool innerSeedHitAccessUseRPhi_;
00127 bool innerSeedHitAccessUseStereo_;
00128
00129 DetHitAccess::accessMode outerSeedHitAccessMode_;
00130 bool outerSeedHitAccessUseRPhi_;
00131 bool outerSeedHitAccessUseStereo_;
00132
00133 const TrackerGeometry *tracker_;
00134 const Roads *roads_;
00135 const MagneticField *magnet_;
00136
00137 std::ostringstream output_;
00138
00139 double beamSpotZMagneticField_;
00140 double minRadius_;
00141
00142 std::vector<unsigned int> usedSeedRingCombinations_;
00143
00144 std::string mode_;
00145
00146 std::string roadsLabel_;
00147
00148
00149 bool allPositiveOnly;
00150 bool allNegativeOnly;
00151
00152
00153 };
00154
00155 #endif