#include <RecoPixelVertexing/PixelTriplets/interface/CosmicHitTripletGeneratorFromLayerTriplet.h>
Definition at line 17 of file CosmicHitTripletGeneratorFromLayerTriplet.h.
CosmicHitTripletGeneratorFromLayerTriplet::CosmicHitTripletGeneratorFromLayerTriplet | ( | const LayerWithHits * | inner, | |
const LayerWithHits * | middle, | |||
const LayerWithHits * | outer, | |||
const edm::EventSetup & | iSetup | |||
) |
Definition at line 14 of file CosmicHitTripletGeneratorFromLayerTriplet.cc.
References edm::EventSetup::get(), and edm::ESHandle< T >::product().
Referenced by clone().
00018 : TTRHbuilder(0),trackerGeometry(0), 00019 //theLayerCache(*layerCache), 00020 theOuterLayer(outer),theMiddleLayer(middle), theInnerLayer(inner) 00021 { 00022 00023 edm::ESHandle<TrackerGeometry> tracker; 00024 iSetup.get<TrackerDigiGeometryRecord>().get(tracker); 00025 trackerGeometry = tracker.product(); 00026 }
virtual CosmicHitTripletGeneratorFromLayerTriplet::~CosmicHitTripletGeneratorFromLayerTriplet | ( | ) | [inline, virtual] |
virtual CosmicHitTripletGeneratorFromLayerTriplet* CosmicHitTripletGeneratorFromLayerTriplet::clone | ( | void | ) | const [inline, virtual] |
Definition at line 33 of file CosmicHitTripletGeneratorFromLayerTriplet.h.
References CosmicHitTripletGeneratorFromLayerTriplet().
00033 { 00034 return new CosmicHitTripletGeneratorFromLayerTriplet(*this); 00035 }
virtual void CosmicHitTripletGeneratorFromLayerTriplet::hitTriplets | ( | const TrackingRegion & | ar, | |
OrderedHitTriplets & | ap, | |||
const edm::Event & | ev, | |||
const edm::EventSetup & | iSetup | |||
) | [inline, virtual] |
Implements HitTripletGenerator.
Definition at line 31 of file CosmicHitTripletGeneratorFromLayerTriplet.h.
void CosmicHitTripletGeneratorFromLayerTriplet::hitTriplets | ( | const TrackingRegion & | ar, | |
OrderedHitTriplets & | ap, | |||
const edm::EventSetup & | iSetup | |||
) | [virtual] |
Reimplemented from HitTripletGenerator.
Definition at line 27 of file CosmicHitTripletGeneratorFromLayerTriplet.cc.
References funct::abs(), funct::cos(), LayerWithHits::layer(), ctfseeding::SeedingHit::phi(), ctfseeding::SeedingHit::r(), LayerWithHits::recHits(), funct::sin(), theInnerLayer, theMiddleLayer, theOuterLayer, and ctfseeding::SeedingHit::z().
00030 { 00031 00032 00033 if (theInnerLayer->recHits().empty()) return; 00034 if (theMiddleLayer->recHits().empty()) return; 00035 if (theOuterLayer->recHits().empty()) return; 00036 float radius1 =dynamic_cast<const BarrelDetLayer*>(theInnerLayer->layer())->specificSurface().radius(); 00037 float radius2 =dynamic_cast<const BarrelDetLayer*>(theMiddleLayer->layer())->specificSurface().radius(); 00038 float radius3 =dynamic_cast<const BarrelDetLayer*>(theOuterLayer->layer())->specificSurface().radius(); 00039 bool seedfromoverlaps=((std::abs(radius1-radius2)<0.1)|| (std::abs(radius3-radius2)<0.1))? true : false; 00040 std::vector<const TrackingRecHit*>::const_iterator ohh; 00041 std::vector<const TrackingRecHit*>::const_iterator mhh; 00042 std::vector<const TrackingRecHit*>::const_iterator ihh; 00043 00044 if(!seedfromoverlaps){ 00045 for(ohh=theOuterLayer->recHits().begin();ohh!=theOuterLayer->recHits().end();ohh++){ 00046 const TkHitPairsCachedHit * oh=new TkHitPairsCachedHit(*ohh,iSetup); 00047 for(mhh=theMiddleLayer->recHits().begin();mhh!=theMiddleLayer->recHits().end();mhh++){ 00048 const TkHitPairsCachedHit * mh=new TkHitPairsCachedHit(*mhh,iSetup); 00049 float z_diff =mh->z()-oh->z(); 00050 float midy=mh->r()*sin(mh->phi()); 00051 float outy=oh->r()*sin(oh->phi()); 00052 float midx=mh->r()*cos(mh->phi()); 00053 float outx=oh->r()*cos(oh->phi()); 00054 float dxdy=std::abs((outx-midx)/(outy-midy)); 00055 if((std::abs(z_diff)<30) && (outy*midy>0) &&(dxdy<2)) 00056 { 00057 for(ihh=theInnerLayer->recHits().begin();ihh!=theInnerLayer->recHits().end();ihh++){ 00058 const TkHitPairsCachedHit * ih=new TkHitPairsCachedHit(*ihh,iSetup); 00059 float z_diff =mh->z()-ih->z(); 00060 float inny=ih->r()*sin(ih->phi()); 00061 float innx=ih->r()*cos(ih->phi()); 00062 float dxdy=std::abs((innx-midx)/(inny-midy)); 00063 if ((std::abs(z_diff)<30) && (inny*midy>0) &&(dxdy<2)&&(!seedfromoverlaps)) 00064 { 00065 result.push_back( OrderedHitTriplet(*ih,*mh, *oh) ); 00066 } 00067 delete ih; 00068 } 00069 } 00070 delete mh; 00071 } 00072 delete oh; 00073 } 00074 } else { 00075 for(ohh=theOuterLayer->recHits().begin();ohh!=theOuterLayer->recHits().end();ohh++){ 00076 const TkHitPairsCachedHit * oh=new TkHitPairsCachedHit(*ohh,iSetup); 00077 for(mhh=theMiddleLayer->recHits().begin();mhh!=theMiddleLayer->recHits().end();mhh++){ 00078 const TkHitPairsCachedHit * mh=new TkHitPairsCachedHit(*mhh,iSetup); 00079 float z_diff =mh->z()-oh->z(); 00080 float midy=mh->r()*sin(mh->phi()); 00081 float outy=oh->r()*sin(oh->phi()); 00082 float midx=mh->r()*cos(mh->phi()); 00083 float outx=oh->r()*cos(oh->phi()); 00084 float dxdy=std::abs((outx-midx)/(outy-midy)); 00085 float DeltaR=oh->r()-mh->r(); 00086 if((std::abs(z_diff)<18) && (std::abs(oh->phi()-mh->phi())<0.05) &&(DeltaR<0)&&(dxdy<2)){ 00087 for(ihh=theInnerLayer->recHits().begin();ihh!=theInnerLayer->recHits().end();ihh++){ 00088 const TkHitPairsCachedHit * ih=new TkHitPairsCachedHit(*ihh,iSetup); 00089 float z_diff =mh->z()-ih->z(); 00090 float inny=ih->r()*sin(ih->phi()); 00091 float innx=ih->r()*cos(ih->phi()); 00092 float dxdy=std::abs((innx-midx)/(inny-midy)); 00093 if ((std::abs(z_diff)<30) && (inny*midy>0) &&(dxdy<2)) 00094 { 00095 result.push_back( OrderedHitTriplet(*ih,*mh,*oh)); 00096 } 00097 delete ih; 00098 } 00099 } 00100 delete mh; 00101 } 00102 delete oh; 00103 } 00104 } 00105 }
void CosmicHitTripletGeneratorFromLayerTriplet::init | ( | const HitPairGenerator & | pairs, | |
std::vector< const LayerWithHits * > | layers | |||
) | [inline] |
const LayerWithHits* CosmicHitTripletGeneratorFromLayerTriplet::innerLayer | ( | ) | const [inline] |
Definition at line 38 of file CosmicHitTripletGeneratorFromLayerTriplet.h.
References theInnerLayer.
00038 { return theInnerLayer; }
const LayerWithHits* CosmicHitTripletGeneratorFromLayerTriplet::middleLayer | ( | ) | const [inline] |
Definition at line 39 of file CosmicHitTripletGeneratorFromLayerTriplet.h.
References theMiddleLayer.
00039 { return theMiddleLayer; }
const LayerWithHits* CosmicHitTripletGeneratorFromLayerTriplet::outerLayer | ( | ) | const [inline] |
Definition at line 40 of file CosmicHitTripletGeneratorFromLayerTriplet.h.
References theOuterLayer.
00040 { return theOuterLayer; }
const DetLayer* CosmicHitTripletGeneratorFromLayerTriplet::innerlay [private] |
Definition at line 48 of file CosmicHitTripletGeneratorFromLayerTriplet.h.
const DetLayer* CosmicHitTripletGeneratorFromLayerTriplet::middlelay [private] |
Definition at line 50 of file CosmicHitTripletGeneratorFromLayerTriplet.h.
const DetLayer* CosmicHitTripletGeneratorFromLayerTriplet::outerlay [private] |
Definition at line 49 of file CosmicHitTripletGeneratorFromLayerTriplet.h.
const LayerWithHits* CosmicHitTripletGeneratorFromLayerTriplet::theInnerLayer [private] |
Definition at line 47 of file CosmicHitTripletGeneratorFromLayerTriplet.h.
Referenced by hitTriplets(), and innerLayer().
const LayerWithHits* CosmicHitTripletGeneratorFromLayerTriplet::theMiddleLayer [private] |
Definition at line 46 of file CosmicHitTripletGeneratorFromLayerTriplet.h.
Referenced by hitTriplets(), and middleLayer().
const LayerWithHits* CosmicHitTripletGeneratorFromLayerTriplet::theOuterLayer [private] |
Definition at line 45 of file CosmicHitTripletGeneratorFromLayerTriplet.h.
Referenced by hitTriplets(), and outerLayer().
Definition at line 44 of file CosmicHitTripletGeneratorFromLayerTriplet.h.
const TransientTrackingRecHitBuilder* CosmicHitTripletGeneratorFromLayerTriplet::TTRHbuilder [private] |
Definition at line 43 of file CosmicHitTripletGeneratorFromLayerTriplet.h.