CMS 3D CMS Logo

CosmicHitTripletGeneratorFromLayerTriplet Class Reference

#include <RecoPixelVertexing/PixelTriplets/interface/CosmicHitTripletGeneratorFromLayerTriplet.h>

Inheritance diagram for CosmicHitTripletGeneratorFromLayerTriplet:

HitTripletGenerator OrderedHitsGenerator

List of all members.

Public Member Functions

virtual
CosmicHitTripletGeneratorFromLayerTriplet
clone () const
 CosmicHitTripletGeneratorFromLayerTriplet (const LayerWithHits *inner, const LayerWithHits *middle, const LayerWithHits *outer, const edm::EventSetup &iSetup)
virtual void hitTriplets (const TrackingRegion &ar, OrderedHitTriplets &ap, const edm::Event &ev, const edm::EventSetup &iSetup)
virtual void hitTriplets (const TrackingRegion &ar, OrderedHitTriplets &ap, const edm::EventSetup &iSetup)
void init (const HitPairGenerator &pairs, std::vector< const LayerWithHits * > layers)
const LayerWithHitsinnerLayer () const
const LayerWithHitsmiddleLayer () const
const LayerWithHitsouterLayer () const
virtual ~CosmicHitTripletGeneratorFromLayerTriplet ()

Private Attributes

const DetLayerinnerlay
const DetLayermiddlelay
const DetLayerouterlay
const LayerWithHitstheInnerLayer
const LayerWithHitstheMiddleLayer
const LayerWithHitstheOuterLayer
const TrackerGeometrytrackerGeometry
const
TransientTrackingRecHitBuilder
TTRHbuilder


Detailed Description

Definition at line 17 of file CosmicHitTripletGeneratorFromLayerTriplet.h.


Constructor & Destructor Documentation

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]

Definition at line 27 of file CosmicHitTripletGeneratorFromLayerTriplet.h.

00027 { }


Member Function Documentation

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.

00031 {}

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]

Definition at line 36 of file CosmicHitTripletGeneratorFromLayerTriplet.h.

00037                                                      {}

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; }


Member Data Documentation

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().

const TrackerGeometry* CosmicHitTripletGeneratorFromLayerTriplet::trackerGeometry [private]

Definition at line 44 of file CosmicHitTripletGeneratorFromLayerTriplet.h.

const TransientTrackingRecHitBuilder* CosmicHitTripletGeneratorFromLayerTriplet::TTRHbuilder [private]

Definition at line 43 of file CosmicHitTripletGeneratorFromLayerTriplet.h.


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:16:51 2009 for CMSSW by  doxygen 1.5.4