CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Private Member Functions
TECLayer Class Reference

#include <TECLayer.h>

Inheritance diagram for TECLayer:
ForwardDetLayer GeometricSearchDetWithGroups DetLayer GeometricSearchDet GeometricSearchDet

Public Member Functions

virtual const std::vector
< const GeomDet * > & 
basicComponents () const
 
virtual const std::vector
< const GeometricSearchDet * > & 
components () const
 Returns basic components, if any. More...
 
void groupedCompatibleDetsV (const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result) const
 
virtual SubDetector subDetector () const
 The type of detector (PixelBarrel, PixelEndcap, TIB, TOB, TID, TEC, CSC, DT, RPCBarrel, RPCEndcap) More...
 
 TECLayer (std::vector< const TECPetal * > &innerPetals, std::vector< const TECPetal * > &outerPetals)
 
 ~TECLayer ()
 
- Public Member Functions inherited from ForwardDetLayer
virtual std::pair< bool,
TrajectoryStateOnSurface
compatible (const TrajectoryStateOnSurface &, const Propagator &, const MeasurementEstimator &) const
 
bool contains (const Local3DPoint &p) const
 
 ForwardDetLayer ()
 
virtual Location location () const
 Which part of the detector (barrel, endcap) More...
 
virtual const BoundDiskspecificSurface () const
 
virtual const BoundSurfacesurface () const
 The surface of the GeometricSearchDet. More...
 
virtual ~ForwardDetLayer ()
 
- Public Member Functions inherited from DetLayer
std::vector< const DetLayer * > compatibleLayers (NavigationDirection direction) const
 
std::vector< const DetLayer * > compatibleLayers (const FreeTrajectoryState &fts, PropagationDirection timeDirection) const
 
std::vector< const DetLayer * > compatibleLayers (const FreeTrajectoryState &fts, PropagationDirection timeDirection, int &counter) const
 
 DetLayer ()
 
NavigableLayernavigableLayer () const
 Return the NavigableLayer associated with this DetLayer. More...
 
virtual std::vector< const
DetLayer * > 
nextLayers (NavigationDirection direction) const
 
virtual std::vector< const
DetLayer * > 
nextLayers (const FreeTrajectoryState &fts, PropagationDirection timeDirection) const
 
virtual void setNavigableLayer (NavigableLayer *nlp)
 Set the NavigableLayer associated with this DetLayer. More...
 
virtual ~DetLayer ()
 
- Public Member Functions inherited from GeometricSearchDet
virtual std::vector< DetWithStatecompatibleDets (const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
 
 GeometricSearchDet ()
 
virtual std::vector< DetGroupgroupedCompatibleDets (const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
 
virtual const
Surface::PositionType
position () const
 Returns position of the surface. More...
 
virtual ~GeometricSearchDet ()
 
- Public Member Functions inherited from GeometricSearchDetWithGroups
void compatibleDetsV (const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetWithState > &result) const
 
bool hasGroups () const
 

Protected Types

typedef PeriodicBinFinderInPhi
< double > 
BinFinderPhi
 

Protected Member Functions

virtual BoundDiskcomputeDisk (std::vector< const GeometricSearchDet * > &petals) const
 
- Protected Member Functions inherited from ForwardDetLayer
virtual BoundDiskcomputeSurface ()
 
virtual void initialize ()
 
float rmax () const
 
float rmin () const
 
void setSurface (BoundDisk *cp)
 
float zmax () const
 
float zmin () const
 

Protected Attributes

BinFinderPhi theBackBinFinder
 
std::vector< const
GeometricSearchDet * > 
theBackComps
 
ReferenceCountingPointer
< BoundDisk
theBackDisk
 
std::vector< const GeomDet * > theBasicComps
 
std::vector< const
GeometricSearchDet * > 
theComps
 
BinFinderPhi theFrontBinFinder
 
std::vector< const
GeometricSearchDet * > 
theFrontComps
 
ReferenceCountingPointer
< BoundDisk
theFrontDisk
 
- Protected Attributes inherited from GeometricSearchDet
GeomDetCompatibilityChecker theCompatibilityChecker
 

Private Member Functions

bool addClosest (const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubLayerCrossing &crossing, std::vector< DetGroup > &result) const
 
SubLayerCrossings computeCrossings (const TrajectoryStateOnSurface &startingState, PropagationDirection propDir) const
 
bool overlap (const GlobalPoint &gpos, const GeometricSearchDet &petal, float window) const
 
void searchNeighbors (const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubLayerCrossing &crossing, float window, std::vector< DetGroup > &result, bool checkClosest) const
 
const std::vector< const
GeometricSearchDet * > & 
subLayer (int ind) const
 

Additional Inherited Members

- Public Types inherited from DetLayer
typedef
GeomDetEnumerators::Location 
Location
 
typedef
GeomDetEnumerators::SubDetector 
SubDetector
 
- Public Types inherited from GeometricSearchDet
typedef std::pair< const
GeomDet
*, TrajectoryStateOnSurface
DetWithState
 
typedef BoundSurface::PositionType PositionType
 
typedef BoundSurface::RotationType RotationType
 
typedef TrajectoryStateOnSurface TrajectoryState
 
- Public Types inherited from GeometricSearchDetWithGroups
typedef
GeometricSearchDet::DetWithState 
DetWithState
 

Detailed Description

A concrete implementation for TEC layer built out of TECPetals

Definition at line 16 of file TECLayer.h.

Member Typedef Documentation

Definition at line 77 of file TECLayer.h.

Constructor & Destructor Documentation

TECLayer::TECLayer ( std::vector< const TECPetal * > &  innerPetals,
std::vector< const TECPetal * > &  outerPetals 
)

Definition at line 21 of file TECLayer.cc.

References computeDisk(), BoundDisk::innerRadius(), LogDebug, BoundDisk::outerRadius(), PV3DBase< T, PVType, FrameType >::perp(), GeometricSearchDet::position(), ForwardDetLayer::setSurface(), ForwardDetLayer::specificSurface(), theBackBinFinder, theBackComps, theBackDisk, theBasicComps, theComps, theFrontBinFinder, theFrontComps, theFrontDisk, and PV3DBase< T, PVType, FrameType >::z().

22  :
23  theFrontComps(innerPetals.begin(),innerPetals.end()),
24  theBackComps(outerPetals.begin(),outerPetals.end())
25 {
26  theComps.assign(theFrontComps.begin(),theFrontComps.end());
27  theComps.insert(theComps.end(),theBackComps.begin(),theBackComps.end());
28 
29  for(vector<const GeometricSearchDet*>::const_iterator it=theComps.begin();
30  it!=theComps.end();it++){
31  theBasicComps.insert(theBasicComps.end(),
32  (**it).basicComponents().begin(),
33  (**it).basicComponents().end());
34  }
35 
36 
37  //This should be no necessary. TO BE CHECKED
38  //sort(theFrontPetals.begin(), theFrontPetals.end(), PetalLessPhi());
39  //sort(theBackPetals.begin(), theBackPetals.end(), PetalLessPhi());
40 
41  // building disk for front and back petals
45 
46  // set up the bin finders
47  theFrontBinFinder = BinFinderPhi(theFrontComps.front()->position().phi(),
48  theFrontComps.size());
49  theBackBinFinder = BinFinderPhi(theBackComps.front()->position().phi(),
50  theBackComps.size());
51 
52  //--------- DEBUG INFO --------------
53  LogDebug("TkDetLayers") << "DEBUG INFO for TECLayer" << "\n"
54  << "TECLayer z,perp, innerRadius, outerR: "
55  << this->position().z() << " , "
56  << this->position().perp() << " , "
57  << this->specificSurface().innerRadius() << " , "
58  << this->specificSurface().outerRadius() ;
59 
60 
61  for(vector<const GeometricSearchDet*>::const_iterator it=theFrontComps.begin();
62  it!=theFrontComps.end(); it++){
63  LogDebug("TkDetLayers") << "frontPetal phi,z,r: "
64  << (*it)->surface().position().phi() << " , "
65  << (*it)->surface().position().z() << " , "
66  << (*it)->surface().position().perp() ;
67  }
68 
69  for(vector<const GeometricSearchDet*>::const_iterator it=theBackComps.begin();
70  it!=theBackComps.end(); it++){
71  LogDebug("TkDetLayers") << "backPetal phi,z,r: "
72  << (*it)->surface().position().phi() << " , "
73  << (*it)->surface().position().z() << " , "
74  << (*it)->surface().position().perp() ;
75  }
76  //-----------------------------------
77 
78 
79 }
#define LogDebug(id)
T perp() const
Definition: PV3DBase.h:71
std::vector< const GeomDet * > theBasicComps
Definition: TECLayer.h:71
void setSurface(BoundDisk *cp)
ReferenceCountingPointer< BoundDisk > theFrontDisk
Definition: TECLayer.h:74
std::vector< const GeometricSearchDet * > theComps
Definition: TECLayer.h:68
ReferenceCountingPointer< BoundDisk > theBackDisk
Definition: TECLayer.h:75
std::vector< const GeometricSearchDet * > theFrontComps
Definition: TECLayer.h:69
T z() const
Definition: PV3DBase.h:63
std::vector< const GeometricSearchDet * > theBackComps
Definition: TECLayer.h:70
virtual const BoundDisk & specificSurface() const
BinFinderPhi theBackBinFinder
Definition: TECLayer.h:80
PeriodicBinFinderInPhi< double > BinFinderPhi
Definition: TECLayer.h:77
virtual const Surface::PositionType & position() const
Returns position of the surface.
BinFinderPhi theFrontBinFinder
Definition: TECLayer.h:79
virtual BoundDisk * computeDisk(std::vector< const GeometricSearchDet * > &petals) const
Definition: TECLayer.cc:265
float outerRadius() const
The outer radius of the disk.
Definition: BoundDisk.h:75
float innerRadius() const
The inner radius of the disk.
Definition: BoundDisk.h:72
TECLayer::~TECLayer ( )

Definition at line 83 of file TECLayer.cc.

References i, and theComps.

83  {
84  vector<const GeometricSearchDet*>::const_iterator i;
85  for (i=theComps.begin(); i!=theComps.end(); i++) {
86  delete *i;
87  }
88 }
int i
Definition: DBlmapReader.cc:9
std::vector< const GeometricSearchDet * > theComps
Definition: TECLayer.h:68

Member Function Documentation

bool TECLayer::addClosest ( const TrajectoryStateOnSurface tsos,
const Propagator prop,
const MeasurementEstimator est,
const SubLayerCrossing crossing,
std::vector< DetGroup > &  result 
) const
private

Definition at line 189 of file TECLayer.cc.

References CompatibleDetToGroupAdder::add(), SubLayerCrossing::closestDetIndex(), LogDebug, subLayer(), and SubLayerCrossing::subLayerIndex().

Referenced by groupedCompatibleDetsV().

194 {
195  const vector<const GeometricSearchDet*>& sub( subLayer( crossing.subLayerIndex()));
196  const GeometricSearchDet* det(sub[crossing.closestDetIndex()]);
197 
198  LogDebug("TkDetLayers")
199  << "in TECLayer, adding petal at r,z,phi: ("
200  << det->position().perp() << ","
201  << det->position().z() << ","
202  << det->position().phi() << ")" << endl;
203 
204  return CompatibleDetToGroupAdder().add( *det, tsos, prop, est, result);
205 }
#define LogDebug(id)
int closestDetIndex() const
int subLayerIndex() const
tuple result
Definition: query.py:137
const std::vector< const GeometricSearchDet * > & subLayer(int ind) const
Definition: TECLayer.h:60
static bool add(const GeometricSearchDet &det, const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result)
virtual const std::vector<const GeomDet*>& TECLayer::basicComponents ( ) const
inlinevirtual

Implements GeometricSearchDet.

Definition at line 24 of file TECLayer.h.

References theBasicComps.

24 {return theBasicComps;}
std::vector< const GeomDet * > theBasicComps
Definition: TECLayer.h:71
virtual const std::vector<const GeometricSearchDet*>& TECLayer::components ( ) const
inlinevirtual

Returns basic components, if any.

Returns direct components, if any

Implements GeometricSearchDet.

Definition at line 26 of file TECLayer.h.

References theComps.

26 {return theComps;}
std::vector< const GeometricSearchDet * > theComps
Definition: TECLayer.h:68
SubLayerCrossings TECLayer::computeCrossings ( const TrajectoryStateOnSurface startingState,
PropagationDirection  propDir 
) const
private

Definition at line 132 of file TECLayer.cc.

References abs, PeriodicBinFinderInPhi< T >::binIndex(), Geom::deltaPhi(), TrajectoryStateOnSurface::globalMomentum(), TrajectoryStateOnSurface::globalPosition(), LogDebug, GloballyPositioned< T >::phi(), rho, ForwardDetLayer::surface(), theBackBinFinder, theBackComps, theBackDisk, theFrontBinFinder, theFrontComps, theFrontDisk, and TrajectoryStateOnSurface::transverseCurvature().

Referenced by groupedCompatibleDetsV().

134 {
135  double rho( startingState.transverseCurvature());
136 
137  HelixPlaneCrossing::PositionType startPos( startingState.globalPosition() );
138  HelixPlaneCrossing::DirectionType startDir( startingState.globalMomentum() );
139  HelixForwardPlaneCrossing crossing(startPos,startDir,rho,propDir);
140 
141  pair<bool,double> frontPath = crossing.pathLength( *theFrontDisk);
142  if (!frontPath.first) SubLayerCrossings();
143 
144 
145  GlobalPoint gFrontPoint(crossing.position(frontPath.second));
146  LogDebug("TkDetLayers")
147  << "in TECLayer,front crossing point: r,z,phi: ("
148  << gFrontPoint.perp() << ","
149  << gFrontPoint.z() << ","
150  << gFrontPoint.phi() << ")" << endl;
151 
152 
153  int frontIndex = theFrontBinFinder.binIndex(gFrontPoint.barePhi());
154  SubLayerCrossing frontSLC( 0, frontIndex, gFrontPoint);
155 
156 
157 
158  pair<bool,double> backPath = crossing.pathLength( *theBackDisk);
159  if (!backPath.first) SubLayerCrossings();
160 
161 
162  GlobalPoint gBackPoint( crossing.position(backPath.second));
163  LogDebug("TkDetLayers")
164  << "in TECLayer,back crossing point: r,z,phi: ("
165  << gBackPoint.perp() << ","
166  << gFrontPoint.z() << ","
167  << gBackPoint.phi() << ")" << endl;
168 
169 
170  int backIndex = theBackBinFinder.binIndex(gBackPoint.barePhi());
171  SubLayerCrossing backSLC( 1, backIndex, gBackPoint);
172 
173 
174  // 0ss: frontDisk has index=0, backDisk has index=1
175  float frontDist = std::abs(Geom::deltaPhi( double(gFrontPoint.barePhi()),
176  double(theFrontComps[frontIndex]->surface().phi())));
177  float backDist = std::abs(Geom::deltaPhi( double(gBackPoint.barePhi()),
178  double(theBackComps[backIndex]->surface().phi())));
179 
180 
181  if (frontDist < backDist) {
182  return SubLayerCrossings( frontSLC, backSLC, 0);
183  }
184  else {
185  return SubLayerCrossings( backSLC, frontSLC, 1);
186  }
187 }
#define LogDebug(id)
double deltaPhi(float phi1, float phi2)
Definition: VectorUtil.h:30
virtual const BoundSurface & surface() const
The surface of the GeometricSearchDet.
Definition: DDAxes.h:10
#define abs(x)
Definition: mlp_lapack.h:159
GlobalPoint globalPosition() const
ReferenceCountingPointer< BoundDisk > theFrontDisk
Definition: TECLayer.h:74
virtual int binIndex(T phi) const
returns an index in the valid range for the bin that contains phi
ReferenceCountingPointer< BoundDisk > theBackDisk
Definition: TECLayer.h:75
std::vector< const GeometricSearchDet * > theFrontComps
Definition: TECLayer.h:69
std::vector< const GeometricSearchDet * > theBackComps
Definition: TECLayer.h:70
BinFinderPhi theBackBinFinder
Definition: TECLayer.h:80
BinFinderPhi theFrontBinFinder
Definition: TECLayer.h:79
GlobalVector globalMomentum() const
BoundDisk * TECLayer::computeDisk ( std::vector< const GeometricSearchDet * > &  petals) const
protectedvirtual

Definition at line 265 of file TECLayer.cc.

References i, BoundDiskSector::innerRadius(), max(), min, BoundDiskSector::outerRadius(), pos, ForwardDetLayer::rmax(), ForwardDetLayer::rmin(), makeMuonMisalignmentScenario::rot, ForwardDetLayer::zmax(), ForwardDetLayer::zmin(), and zPos.

Referenced by TECLayer().

266 {
267  // Attention: it is assumed that the petals do belong to one layer, and are all
268  // of the same rmin/rmax extension !!
269 
270  const BoundDiskSector& diskSector = static_cast<const BoundDiskSector&>(petals.front()->surface());
271 
272  float rmin = diskSector.innerRadius();
273  float rmax = diskSector.outerRadius();
274 
275  float theZmax(petals.front()->position().z());
276  float theZmin(theZmax);
277  for ( vector<const GeometricSearchDet*>::const_iterator i = petals.begin(); i != petals.end(); i++ ) {
278  float zmin = (**i).position().z() - (**i).surface().bounds().thickness()/2.;
279  float zmax = (**i).position().z() + (**i).surface().bounds().thickness()/2.;
280  theZmax = max( theZmax, zmax);
281  theZmin = min( theZmin, zmin);
282  }
283 
284  float zPos = (theZmax+theZmin)/2.;
285  PositionType pos(0.,0.,zPos);
287 
288  return new BoundDisk( pos, rot,SimpleDiskBounds(rmin, rmax,
289  theZmin-zPos, theZmax-zPos));
290 }
BoundSurface::RotationType RotationType
int i
Definition: DBlmapReader.cc:9
BoundSurface::PositionType PositionType
float innerRadius() const
double zPos
float rmin() const
#define min(a, b)
Definition: mlp_lapack.h:161
float zmin() const
const T & max(const T &a, const T &b)
float outerRadius() const
float zmax() const
float rmax() const
void TECLayer::groupedCompatibleDetsV ( const TrajectoryStateOnSurface tsos,
const Propagator prop,
const MeasurementEstimator est,
std::vector< DetGroup > &  result 
) const
virtual

Reimplemented from GeometricSearchDet.

Definition at line 92 of file TECLayer.cc.

References addClosest(), SubLayerCrossings::closest(), SubLayerCrossings::closestIndex(), computeCrossings(), tkDetUtil::computeWindowSize(), LayerCrossingSide::endcapSide(), SubLayerCrossings::isValid(), LogDebug, DetGroupMerger::orderAndMergeTwoLevels(), SubLayerCrossings::other(), Propagator::propagationDirection(), and searchNeighbors().

95  {
96  SubLayerCrossings crossings;
97  crossings = computeCrossings( tsos, prop.propagationDirection());
98  if(! crossings.isValid()) return;
99 
100  vector<DetGroup> closestResult;
101  addClosest( tsos, prop, est, crossings.closest(), closestResult);
102  LogDebug("TkDetLayers") << "in TECLayer, closestResult.size(): " << closestResult.size();
103 
104  // this differs from other groupedCompatibleDets logic, which DON'T check next in such cases!!!
105  if(closestResult.empty()){
106  vector<DetGroup> nextResult;
107  addClosest( tsos, prop, est, crossings.other(), nextResult);
108  LogDebug("TkDetLayers") << "in TECLayer, nextResult.size(): " << nextResult.size();
109  if(nextResult.empty()) return;
110 
111 
112  DetGroupElement nextGel( nextResult.front().front());
113  int crossingSide = LayerCrossingSide().endcapSide( nextGel.trajectoryState(), prop);
114  DetGroupMerger::orderAndMergeTwoLevels( closestResult, nextResult, result,
115  crossings.closestIndex(), crossingSide);
116  }
117  else {
118  DetGroupElement closestGel( closestResult.front().front());
119  float phiWindow = tkDetUtil::computeWindowSize( closestGel.det(), closestGel.trajectoryState(), est);
120  searchNeighbors( tsos, prop, est, crossings.closest(), phiWindow,
121  closestResult, false);
122  vector<DetGroup> nextResult;
123  searchNeighbors( tsos, prop, est, crossings.other(), phiWindow,
124  nextResult, true);
125 
126  int crossingSide = LayerCrossingSide().endcapSide( closestGel.trajectoryState(), prop);
127  DetGroupMerger::orderAndMergeTwoLevels( closestResult, nextResult, result,
128  crossings.closestIndex(), crossingSide);
129  }
130 }
#define LogDebug(id)
static void orderAndMergeTwoLevels(const std::vector< DetGroup > &one, const std::vector< DetGroup > &two, std::vector< DetGroup > &result, int firstIndex, int firstCrossed)
virtual PropagationDirection propagationDirection() const
Definition: Propagator.h:143
int closestIndex() const
void searchNeighbors(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubLayerCrossing &crossing, float window, std::vector< DetGroup > &result, bool checkClosest) const
Definition: TECLayer.cc:207
float computeWindowSize(const GeomDet *det, const TrajectoryStateOnSurface &tsos, const MeasurementEstimator &est)
Definition: TkDetUtil.cc:31
int endcapSide(const TrajectoryStateOnSurface &startingState, const Propagator &prop) const
bool addClosest(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubLayerCrossing &crossing, std::vector< DetGroup > &result) const
Definition: TECLayer.cc:189
tuple result
Definition: query.py:137
const SubLayerCrossing & other() const
SubLayerCrossings computeCrossings(const TrajectoryStateOnSurface &startingState, PropagationDirection propDir) const
Definition: TECLayer.cc:132
const SubLayerCrossing & closest() const
bool TECLayer::overlap ( const GlobalPoint gpos,
const GeometricSearchDet petal,
float  window 
) const
private

Definition at line 250 of file TECLayer.cc.

References PV3DBase< T, PVType, FrameType >::barePhi(), phi, GloballyPositioned< T >::phi(), BoundDiskSector::phiExtension(), rangesIntersect(), and GeometricSearchDet::surface().

Referenced by searchNeighbors().

251 {
252  float phi = gpos.barePhi();
253  const BoundDiskSector& diskSector = static_cast<const BoundDiskSector&>(gsdet.surface());
254  pair<float,float> phiRange(phi-phiWin,phi+phiWin);
255  pair<float,float> petalPhiRange(diskSector.phi() - 0.5*diskSector.phiExtension(),
256  diskSector.phi() + 0.5*diskSector.phiExtension());
257 
258 
259  return rangesIntersect(phiRange, petalPhiRange, PhiLess());
260 }
T barePhi() const
Definition: PV3DBase.h:67
bool rangesIntersect(const Range &a, const Range &b)
float phiExtension() const
Definition: DDAxes.h:10
void TECLayer::searchNeighbors ( const TrajectoryStateOnSurface tsos,
const Propagator prop,
const MeasurementEstimator est,
const SubLayerCrossing crossing,
float  window,
std::vector< DetGroup > &  result,
bool  checkClosest 
) const
private

Definition at line 207 of file TECLayer.cc.

References Clusterizer1DCommons::add(), PeriodicBinFinderInPhi< T >::binIndex(), SubLayerCrossing::closestDetIndex(), overlap(), PV3DBase< T, PVType, FrameType >::phi(), SubLayerCrossing::position(), subLayer(), SubLayerCrossing::subLayerIndex(), theBackBinFinder, and theFrontBinFinder.

Referenced by groupedCompatibleDetsV().

214 {
215  GlobalPoint gCrossingPos = crossing.position();
216 
217  const vector<const GeometricSearchDet*>& sLayer( subLayer( crossing.subLayerIndex()));
218 
219  int closestIndex = crossing.closestDetIndex();
220  int negStartIndex = closestIndex-1;
221  int posStartIndex = closestIndex+1;
222 
223  if (checkClosest) { // must decide if the closest is on the neg or pos side
224  if ( PhiLess()( gCrossingPos.phi(), sLayer[closestIndex]->position().phi())) {
225  posStartIndex = closestIndex;
226  }
227  else {
228  negStartIndex = closestIndex;
229  }
230  }
231 
232  const BinFinderPhi& binFinder = (crossing.subLayerIndex()==0 ? theFrontBinFinder : theBackBinFinder);
233 
234  typedef CompatibleDetToGroupAdder Adder;
235  int half = sLayer.size()/2; // to check if dets are called twice....
236  for (int idet=negStartIndex; idet >= negStartIndex - half; idet--) {
237  const GeometricSearchDet & neighborPetal = *sLayer[binFinder.binIndex(idet)];
238  if (!overlap( gCrossingPos, neighborPetal, window)) break;
239  if (!Adder::add( neighborPetal, tsos, prop, est, result)) break;
240  // maybe also add shallow crossing angle test here???
241  }
242  for (int idet=posStartIndex; idet < posStartIndex + half; idet++) {
243  const GeometricSearchDet & neighborPetal = *sLayer[binFinder.binIndex(idet)];
244  if (!overlap( gCrossingPos, neighborPetal, window)) break;
245  if (!Adder::add( neighborPetal, tsos, prop, est, result)) break;
246  // maybe also add shallow crossing angle test here???
247  }
248 }
def window
Definition: svgfig.py:642
int closestDetIndex() const
Geom::Phi< T > phi() const
Definition: PV3DBase.h:68
void add(const std::vector< const T * > &source, std::vector< const T * > &dest)
const GlobalPoint & position() const
int subLayerIndex() const
tuple result
Definition: query.py:137
BinFinderPhi theBackBinFinder
Definition: TECLayer.h:80
PeriodicBinFinderInPhi< double > BinFinderPhi
Definition: TECLayer.h:77
const std::vector< const GeometricSearchDet * > & subLayer(int ind) const
Definition: TECLayer.h:60
BinFinderPhi theFrontBinFinder
Definition: TECLayer.h:79
bool overlap(const GlobalPoint &gpos, const GeometricSearchDet &petal, float window) const
Definition: TECLayer.cc:250
virtual SubDetector TECLayer::subDetector ( ) const
inlinevirtual

The type of detector (PixelBarrel, PixelEndcap, TIB, TOB, TID, TEC, CSC, DT, RPCBarrel, RPCEndcap)

Implements DetLayer.

Definition at line 34 of file TECLayer.h.

References GeomDetEnumerators::TEC.

const std::vector<const GeometricSearchDet*>& TECLayer::subLayer ( int  ind) const
inlineprivate

Definition at line 60 of file TECLayer.h.

References theBackComps, and theFrontComps.

Referenced by addClosest(), and searchNeighbors().

60  {
61  return (ind==0 ? theFrontComps : theBackComps);
62  }
std::vector< const GeometricSearchDet * > theFrontComps
Definition: TECLayer.h:69
std::vector< const GeometricSearchDet * > theBackComps
Definition: TECLayer.h:70

Member Data Documentation

BinFinderPhi TECLayer::theBackBinFinder
protected

Definition at line 80 of file TECLayer.h.

Referenced by computeCrossings(), searchNeighbors(), and TECLayer().

std::vector<const GeometricSearchDet*> TECLayer::theBackComps
protected

Definition at line 70 of file TECLayer.h.

Referenced by computeCrossings(), subLayer(), and TECLayer().

ReferenceCountingPointer<BoundDisk> TECLayer::theBackDisk
protected

Definition at line 75 of file TECLayer.h.

Referenced by computeCrossings(), and TECLayer().

std::vector<const GeomDet*> TECLayer::theBasicComps
protected

Definition at line 71 of file TECLayer.h.

Referenced by basicComponents(), and TECLayer().

std::vector<const GeometricSearchDet*> TECLayer::theComps
protected

Definition at line 68 of file TECLayer.h.

Referenced by components(), TECLayer(), and ~TECLayer().

BinFinderPhi TECLayer::theFrontBinFinder
protected

Definition at line 79 of file TECLayer.h.

Referenced by computeCrossings(), searchNeighbors(), and TECLayer().

std::vector<const GeometricSearchDet*> TECLayer::theFrontComps
protected

Definition at line 69 of file TECLayer.h.

Referenced by computeCrossings(), subLayer(), and TECLayer().

ReferenceCountingPointer<BoundDisk> TECLayer::theFrontDisk
protected

Definition at line 74 of file TECLayer.h.

Referenced by computeCrossings(), and TECLayer().