CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
RectangularEtaPhiTrackingRegion.h
Go to the documentation of this file.
1 #ifndef RectangularEtaPhiTrackingRegion_H
2 #define RectangularEtaPhiTrackingRegion_H
3 
13 //#include "CommonDet/TrajectoryParametrization/interface/GlobalTrajectoryParameters.h"
17 class OuterEstimator;
18 class BarrelDetLayer;
19 class ForwardDetLayer;
20 
22 public:
23 
25 
52  const GlobalPoint & vertexPos,
53  float ptMin, float rVertex, float zVertex,
54  float deltaEta, float deltaPhi,
55  float whereToUseMeasurementTracker = 0.,
56  bool precise = true,
58  bool etaPhiRegion=false)
59  : TrackingRegionBase( dir, vertexPos, Range( -1/ptMin, 1/ptMin), rVertex, zVertex),
60  thePhiMargin(std::abs(deltaPhi),std::abs(deltaPhi)),
61  theMeasurementTrackerUsage(whereToUseMeasurementTracker), thePrecise(precise),
62  theUseEtaPhi(etaPhiRegion), theMeasurementTrackerName(measurementTrackerName)
63  { initEtaRange(dir, Margin( std::abs(deltaEta),std::abs(deltaEta))); }
64 
72  const GlobalPoint & vertexPos,
73  float ptMin, float rVertex, float zVertex,
74  Margin etaMargin,
75  Margin phiMargin,
76  float whereToUseMeasurementTracker = 0.,
77  bool precise = true,
79  bool etaPhiRegion=false)
80  : TrackingRegionBase( dir, vertexPos, Range( -1/ptMin, 1/ptMin), rVertex, zVertex),
81  thePhiMargin( phiMargin), theMeasurementTrackerUsage(whereToUseMeasurementTracker),
82  thePrecise(precise),theUseEtaPhi(etaPhiRegion),
83  theMeasurementTrackerName(measurementTrackerName)
84  { initEtaRange(dir, etaMargin); }
85 
91  const GlobalPoint & vertexPos,
92  Range invPtRange,
93  float rVertex, float zVertex,
94  Margin etaMargin,
95  Margin phiMargin,
96  float whereToUseMeasurementTracker = 0.,
97  bool precise = true,
99  bool etaPhiRegion=false)
100  : TrackingRegionBase( dir, vertexPos, invPtRange, rVertex, zVertex),
101  thePhiMargin( phiMargin), theMeasurementTrackerUsage(whereToUseMeasurementTracker), thePrecise(precise),theUseEtaPhi(etaPhiRegion),
102  theMeasurementTrackerName(measurementTrackerName)
103  { initEtaRange(dir, etaMargin); }
104 
105 
107  const Range & etaRange() const { return theEtaRange; }
108 
111  const Margin & phiMargin() const { return thePhiMargin; }
112 
114  bool isPrecise() const { return thePrecise; }
115 
116  virtual TrackingRegion::Hits hits(
117  const edm::Event& ev,
118  const edm::EventSetup& es,
119  const ctfseeding::SeedingLayer* layer) const;
120 
121  virtual TrackingRegion::Hits hits(
122  const edm::Event& ev,
123  const edm::EventSetup& es,
124  const SeedingLayerSetsHits::SeedingLayer& layer) const override;
125 
126  virtual HitRZCompatibility * checkRZ(const DetLayer* layer,
127  const Hit & outerHit,
128  const edm::EventSetup& iSetup,
129  const DetLayer* outerlayer=0,
130  float lr=0, float gz=0, float dr=0, float dz=0) const
131  { return checkRZOld(layer,outerHit->hit(),iSetup); }
132 
134  return new RectangularEtaPhiTrackingRegion(*this);
135  }
136 
137  virtual std::string name() const { return "RectangularEtaPhiTrackingRegion"; }
138  virtual std::string print() const;
139 
140 private:
141  template <typename T, typename F>
142  TrackingRegion::Hits hits_(
143  const edm::Event& ev,
144  const edm::EventSetup& es,
145  const T& layer,
146  F hitGetter) const;
147 
148  HitRZCompatibility* checkRZOld(
149  const DetLayer* layer,
150  const TrackingRecHit* outerHit,
151  const edm::EventSetup& iSetup) const;
152 
153  OuterEstimator * estimator(const BarrelDetLayer* layer,const edm::EventSetup& iSetup) const dso_internal;
154  OuterEstimator * estimator(const ForwardDetLayer* layer,const edm::EventSetup& iSetup) const dso_internal;
155 
156  OuterHitPhiPrediction phiWindow(const edm::EventSetup& iSetup) const dso_internal;
157  HitRZConstraint rzConstraint() const dso_internal;
158 
159  void initEtaRange( const GlobalVector & dir, const Margin& margin);
160 
161 private:
162 
163  Range theEtaRange;
164  Range theLambdaRange;
165  Margin thePhiMargin;
166  float theMeanLambda;
167  float theMeasurementTrackerUsage;
168  bool thePrecise;
169  bool theUseEtaPhi;
170  std::string theMeasurementTrackerName;
171 };
172 
173 #endif
RectangularEtaPhiTrackingRegion(const GlobalVector &dir, const GlobalPoint &vertexPos, float ptMin, float rVertex, float zVertex, Margin etaMargin, Margin phiMargin, float whereToUseMeasurementTracker=0., bool precise=true, const std::string &measurementTrackerName="", bool etaPhiRegion=false)
const Margin & phiMargin() const
GloballyPositioned< float >::GlobalPoint GlobalPoint
Definition: MagVolume.h:20
std::string print(const Track &, edm::Verbosity=edm::Concise)
Track print utility.
Definition: print.cc:8
virtual RectangularEtaPhiTrackingRegion * clone() const
TkTrackingRegionsMargin< float > Margin
virtual std::string name() const
RectangularEtaPhiTrackingRegion(const GlobalVector &dir, const GlobalPoint &vertexPos, Range invPtRange, float rVertex, float zVertex, Margin etaMargin, Margin phiMargin, float whereToUseMeasurementTracker=0., bool precise=true, const std::string &measurementTrackerName="", bool etaPhiRegion=false)
bool isPrecise() const
is precise error calculation switched on
Double_t margin
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
#define dso_internal
Definition: Visibility.h:13
std::vector< Hit > Hits
string const
Definition: compareJSON.py:14
GloballyPositioned< float >::GlobalVector GlobalVector
Definition: MagVolume.h:21
#define private
Definition: FWFileEntry.h:17
std::pair< ContainerIterator, ContainerIterator > Range
RectangularEtaPhiTrackingRegion(const GlobalVector &dir, const GlobalPoint &vertexPos, float ptMin, float rVertex, float zVertex, float deltaEta, float deltaPhi, float whereToUseMeasurementTracker=0., bool precise=true, const std::string &measurementTrackerName="", bool etaPhiRegion=false)
dbl *** dir
Definition: mlp_gen.cc:35
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
Definition: blowfish.cc:281
long double T
virtual HitRZCompatibility * checkRZ(const DetLayer *layer, const Hit &outerHit, const edm::EventSetup &iSetup, const DetLayer *outerlayer=0, float lr=0, float gz=0, float dr=0, float dz=0) const
const Range & etaRange() const
allowed eta range [eta_min, eta_max] interval
Unlimited (trivial) bounds.