CMS 3D CMS Logo

RectangularEtaPhiTrackingRegion.h

Go to the documentation of this file.
00001 #ifndef RectangularEtaPhiTrackingRegion_H
00002 #define RectangularEtaPhiTrackingRegion_H
00003 
00011 #include "RecoTracker/TkTrackingRegions/interface/TrackingRegionBase.h"
00012 #include "RecoTracker/TkTrackingRegions/interface/TkTrackingRegionsMargin.h"
00013 //#include "CommonDet/TrajectoryParametrization/interface/GlobalTrajectoryParameters.h"
00014 #include "RecoTracker/TkTrackingRegions/interface/HitRZConstraint.h"
00015 #include "RecoTracker/TkTrackingRegions/interface/OuterHitPhiPrediction.h"
00016 #include "FWCore/Framework/interface/EventSetup.h"
00017 class OuterEstimator;
00018 class BarrelDetLayer;
00019 class ForwardDetLayer;
00020 
00021 class RectangularEtaPhiTrackingRegion : public TrackingRegionBase {
00022 public:
00023 
00024   typedef TkTrackingRegionsMargin<float> Margin;
00025 
00027  RectangularEtaPhiTrackingRegion() { }
00028 
00053   RectangularEtaPhiTrackingRegion( const GlobalVector & dir, 
00054                                    const GlobalPoint & vertexPos,
00055                                    float ptMin, float rVertex, float zVertex,
00056                                    float deltaEta, float deltaPhi,
00057                                    float dummy = 0.,
00058                                    bool precise = true) 
00059     : TrackingRegionBase( dir, vertexPos, Range( -1/ptMin, 1/ptMin), 
00060                           rVertex, zVertex),
00061    thePhiMargin( Margin( fabs(deltaPhi),fabs(deltaPhi))),
00062    theTemporaryFix(dummy), thePrecise(precise)
00063    { initEtaRange(dir, Margin( fabs(deltaEta),fabs(deltaEta))); }
00064  
00071   RectangularEtaPhiTrackingRegion( const GlobalVector & dir, 
00072                                        const GlobalPoint & vertexPos,
00073                                    float ptMin, float rVertex, float zVertex,
00074                                    Margin etaMargin,
00075                                    Margin phiMargin,
00076                                    float dummy = 0., bool precise = true) 
00077     : TrackingRegionBase( dir, vertexPos, Range( -1/ptMin, 1/ptMin), 
00078       rVertex, zVertex), thePhiMargin( phiMargin), theTemporaryFix(dummy), thePrecise(precise)
00079     { initEtaRange(dir, etaMargin); }
00080 
00085   RectangularEtaPhiTrackingRegion( const GlobalVector & dir, 
00086                                        const GlobalPoint & vertexPos,
00087                                    Range invPtRange, 
00088                                    float rVertex, float zVertex,
00089                                    Margin etaMargin,
00090                                    Margin phiMargin,
00091                                    float dummy = 0.,
00092                                    bool precise = true) 
00093     : TrackingRegionBase( dir, vertexPos, invPtRange, rVertex, zVertex),
00094       thePhiMargin( phiMargin), theTemporaryFix(dummy), thePrecise(precise)
00095     { initEtaRange(dir, etaMargin); }
00096 
00097 
00099   const Range & etaRange() const { return theEtaRange; }
00100 
00103   const Margin & phiMargin() const { return thePhiMargin; }
00104 
00106   bool  isPrecise() const { return thePrecise; }
00107 
00108   virtual std::vector<ctfseeding::SeedingHit> hits(
00109       const edm::Event& ev,  
00110       const edm::EventSetup& es, 
00111       const ctfseeding::SeedingLayer* layer) const;
00112 
00113   virtual HitRZCompatibility* checkRZ(
00114       const DetLayer* layer, 
00115       const TrackingRecHit*  outerHit,
00116       const edm::EventSetup& iSetup) const;
00117 
00118   virtual RectangularEtaPhiTrackingRegion* clone() const { 
00119     return new RectangularEtaPhiTrackingRegion(*this);
00120   }
00121 
00122   virtual std::string name() const { return "RectangularEtaPhiTrackingRegion"; }
00123   virtual std::string print() const;
00124 
00125 private:
00126 
00127   OuterEstimator * estimator(const BarrelDetLayer* layer,const edm::EventSetup& iSetup) const;
00128   OuterEstimator * estimator(const ForwardDetLayer* layer,const edm::EventSetup& iSetup) const;
00129 
00130   OuterHitPhiPrediction phiWindow(const edm::EventSetup& iSetup) const;
00131   HitRZConstraint rzConstraint() const;
00132 
00133   void  initEtaRange( const GlobalVector & dir, const Margin& margin);
00134 
00135 private:
00136 
00137   Range theEtaRange;
00138   Margin thePhiMargin;
00139   double theTemporaryFix;
00140   bool thePrecise;
00141 
00142 };
00143 
00144 #endif

Generated on Tue Jun 9 17:45:59 2009 for CMSSW by  doxygen 1.5.4