CMS 3D CMS Logo

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

#include <BoundSpan.h>

Public Member Functions

 BoundSpan ()
 
void compute (Surface const &plane)
 
std::pair< float, float > const & phiSpan () const
 
std::pair< float, float > const & rSpan () const
 
std::pair< float, float > const & zSpan () const
 

Private Attributes

std::pair< float, float > m_phiSpan
 
std::pair< float, float > m_rSpan
 
std::pair< float, float > m_zSpan
 

Detailed Description

Definition at line 13 of file BoundSpan.h.

Constructor & Destructor Documentation

BoundSpan::BoundSpan ( )
inline

Definition at line 17 of file BoundSpan.h.

17  :
18  m_phiSpan( 0., 0.),
19  m_zSpan( 0., 0.),
20  m_rSpan( 0., 0.){}
std::pair< float, float > m_zSpan
Definition: BoundSpan.h:28
std::pair< float, float > m_rSpan
Definition: BoundSpan.h:29
std::pair< float, float > m_phiSpan
Definition: BoundSpan.h:27

Member Function Documentation

void BoundSpan::compute ( Surface const &  plane)

Definition at line 8 of file BoundSpan.cc.

References Surface::bounds(), i, m_phiSpan, m_zSpan, HLT_FULL_cff::parameters, Geom::phiLess(), phimax, phimin, Surface::toGlobal(), create_public_lumi_plots::width, z, SiStripMonitorClusterAlca_cfi::zmax, and SiStripMonitorClusterAlca_cfi::zmin.

Referenced by Bounds::computeSpan().

8  {
9  const TrapezoidalPlaneBounds* trapezoidalBounds( dynamic_cast<const TrapezoidalPlaneBounds*>(&(plane.bounds())));
10  const RectangularPlaneBounds* rectangularBounds( dynamic_cast<const RectangularPlaneBounds*>(&(plane.bounds())));
11 
12  Surface::GlobalPoint corners[8];
13 
14  if (trapezoidalBounds) {
15  std::array<const float, 4> const & parameters = (*trapezoidalBounds).parameters();
16 
17  float hbotedge = parameters[0];
18  float htopedge = parameters[1];
19  float hapothem = parameters[3];
20  float thickness = (*trapezoidalBounds).thickness();
21 
22  corners[0] = plane.toGlobal( LocalPoint( -htopedge, hapothem, thickness/2));
23  corners[1] = plane.toGlobal( LocalPoint( htopedge, hapothem, thickness/2));
24  corners[2] = plane.toGlobal( LocalPoint( hbotedge, -hapothem, thickness/2));
25  corners[3] = plane.toGlobal( LocalPoint( -hbotedge, -hapothem, thickness/2));
26  corners[4] = plane.toGlobal( LocalPoint( -htopedge, hapothem, -thickness/2));
27  corners[5] = plane.toGlobal( LocalPoint( htopedge, hapothem, -thickness/2));
28  corners[6] = plane.toGlobal( LocalPoint( hbotedge, -hapothem, -thickness/2));
29  corners[7] = plane.toGlobal( LocalPoint( -hbotedge, -hapothem, -thickness/2));
30 
31  }else if(rectangularBounds) {
32  float length = rectangularBounds->length();
33  float width = rectangularBounds->width();
34  float thickness = (*rectangularBounds).thickness();
35 
36  corners[0] = plane.toGlobal( LocalPoint( -width/2, -length/2, thickness/2));
37  corners[1] = plane.toGlobal( LocalPoint( -width/2, +length/2, thickness/2));
38  corners[2] = plane.toGlobal( LocalPoint( +width/2, -length/2, thickness/2));
39  corners[3] = plane.toGlobal( LocalPoint( +width/2, +length/2, thickness/2));
40  corners[4] = plane.toGlobal( LocalPoint( -width/2, -length/2, -thickness/2));
41  corners[5] = plane.toGlobal( LocalPoint( -width/2, +length/2, -thickness/2));
42  corners[6] = plane.toGlobal( LocalPoint( +width/2, -length/2, -thickness/2));
43  corners[7] = plane.toGlobal( LocalPoint( +width/2, +length/2, -thickness/2));
44  }else{
45 
46  }
47 
48  float phimin = corners[0].barePhi(); float phimax = phimin;
49  float zmin = corners[0].z(); float zmax = zmin;
50  for ( int i = 1; i < 8; i++ ) {
51  float cPhi = corners[i].barePhi();
52  if ( Geom::phiLess( cPhi, phimin)) { phimin = cPhi; }
53  if ( Geom::phiLess( phimax, cPhi)) { phimax = cPhi; }
54  float z = corners[i].z();
55  if ( z < zmin) zmin = z;
56  if ( z > zmax) zmax = z;
57  }
58  m_zSpan.first = zmin;
59  m_zSpan.second = zmax;
60  m_phiSpan.first = phimin;
61  m_phiSpan.second = phimax;
62 }
int i
Definition: DBlmapReader.cc:9
std::pair< float, float > m_zSpan
Definition: BoundSpan.h:28
bool phiLess(float phi1, float phi2)
Definition: VectorUtil.h:23
std::pair< float, float > m_phiSpan
Definition: BoundSpan.h:27
Local3DPoint LocalPoint
Definition: LocalPoint.h:11
std::pair<float,float> const& BoundSpan::phiSpan ( ) const
inline

Definition at line 22 of file BoundSpan.h.

References m_phiSpan.

Referenced by Bounds::phiSpan().

22 { return m_phiSpan; }
std::pair< float, float > m_phiSpan
Definition: BoundSpan.h:27
std::pair<float,float> const& BoundSpan::rSpan ( ) const
inline

Definition at line 24 of file BoundSpan.h.

References m_rSpan.

Referenced by Bounds::rSpan().

24 { return m_rSpan; }
std::pair< float, float > m_rSpan
Definition: BoundSpan.h:29
std::pair<float,float> const& BoundSpan::zSpan ( ) const
inline

Definition at line 23 of file BoundSpan.h.

References m_zSpan.

Referenced by Bounds::zSpan().

23 { return m_zSpan; }
std::pair< float, float > m_zSpan
Definition: BoundSpan.h:28

Member Data Documentation

std::pair<float,float> BoundSpan::m_phiSpan
private

Definition at line 27 of file BoundSpan.h.

Referenced by compute(), and phiSpan().

std::pair<float,float> BoundSpan::m_rSpan
private

Definition at line 29 of file BoundSpan.h.

Referenced by rSpan().

std::pair<float,float> BoundSpan::m_zSpan
private

Definition at line 28 of file BoundSpan.h.

Referenced by compute(), and zSpan().