00001 #include "RecoTracker/TkSeedGenerator/interface/SeedGeneratorFromRegionHits.h" 00002 00003 #include "FWCore/Framework/interface/Event.h" 00004 #include "FWCore/Framework/interface/EventSetup.h" 00005 #include "FWCore/Framework/interface/ESHandle.h" 00006 00007 #include "RecoTracker/TkTrackingRegions/interface/OrderedHitsGenerator.h" 00008 #include "RecoTracker/TkTrackingRegions/interface/TrackingRegion.h" 00009 #include "RecoTracker/TkSeedingLayers/interface/SeedComparitor.h" 00010 00011 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00012 00013 #include "RecoTracker/TkSeedGenerator/interface/SeedFromConsecutiveHits.h" 00014 00015 #include <vector> 00016 00017 #include "MagneticField/Engine/interface/MagneticField.h" 00018 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h" 00019 00020 template <class T> T sqr( T t) {return t*t;} 00021 00022 SeedGeneratorFromRegionHits::SeedGeneratorFromRegionHits( 00023 OrderedHitsGenerator *ohg, const edm::ParameterSet & cfg, 00024 SeedComparitor * asc) 00025 : theHitsGenerator(ohg), theConfig(cfg), theComparitor(asc), 00026 theBOFFMomentum(cfg.existsAs<double>("SeedMomentumForBOFF") ? cfg.getParameter<double>("SeedMomentumForBOFF") : -1.0) 00027 { } 00028 00029 SeedGeneratorFromRegionHits::~SeedGeneratorFromRegionHits() 00030 { 00031 delete theHitsGenerator; 00032 delete theComparitor; 00033 } 00034 00035 void SeedGeneratorFromRegionHits::run(TrajectorySeedCollection & seedCollection, 00036 const TrackingRegion & region, const edm::Event& ev, const edm::EventSetup& es) 00037 { 00038 00039 const OrderedSeedingHits & hitss = theHitsGenerator->run(region, ev, es); 00040 00041 00042 GlobalError vtxerr( sqr(region.originRBound()), 0, sqr(region.originRBound()), 00043 0, 0, sqr(region.originZBound())); 00044 00045 unsigned int nHitss = hitss.size(); 00046 for (unsigned int iHits = 0; iHits < nHitss; ++iHits) { 00047 const SeedingHitSet & hits = hitss[iHits]; 00048 if (!theComparitor || theComparitor->compatible( hits, es) ) { 00049 SeedFromConsecutiveHits seedfromhits( hits, region.origin(), vtxerr, es, theBOFFMomentum); 00050 if(seedfromhits.isValid()) { 00051 seedCollection.push_back( seedfromhits.TrajSeed() ); 00052 } 00053 } 00054 } 00055 }