CMS 3D CMS Logo

Public Types | Public Member Functions | Static Public Member Functions | Static Private Attributes

PFGeometry Class Reference

General CMS geometry parameters used during Particle Flow reconstruction or drawing. All methods and members are static. More...

#include <PFGeometry.h>

List of all members.

Public Types

enum  Layers_t {
  BeamPipe = 0, PS1 = 1, PS2 = 2, ECALBarrel = 3,
  ECALEndcap = 4, HCALBarrel = 5, HCALEndcap = 6, NPoints = 7
}
enum  Surface_t {
  BeamPipeWall = 0, PS1Wall = 1, PS2Wall = 2, ECALInnerWall = 3,
  HCALInnerWall = 4, HCALOuterWall = 5, NSurfPoints = 6
}

Public Member Functions

 PFGeometry ()
 constructor
virtual ~PFGeometry ()
 destructor

Static Public Member Functions

static const BoundCylinderbarrelBound (PFGeometry::Surface_t iSurf)
 return cylinder used to propagate to barrel
static const float innerRadius (PFGeometry::Layers_t layer)
 return inner radius of a given layer
static const float innerZ (PFGeometry::Layers_t layer)
 return inner position along z axis of a given layer
static const BoundPlanenegativeEndcapDisk (PFGeometry::Surface_t iSurf)
 return disk used to propagate to negative endcap
static const float outerRadius (PFGeometry::Layers_t layer)
 return outer radius of a given layer
static const float outerZ (PFGeometry::Layers_t layer)
 return outer position along z axis of a given layer
static const BoundPlanepositiveEndcapDisk (PFGeometry::Surface_t iSurf)
 return disk used to propagate to positive endcap
static float tanTh (PFGeometry::Surface_t iSurf)
 return tan(theta) of the cylinder corner

Static Private Attributes

static std::vector
< ReferenceCountingPointer
< BoundCylinder > > 
cylinder_
static std::vector< float > innerRadius_
static std::vector< float > innerZ_
static std::vector
< ReferenceCountingPointer
< BoundPlane > > 
negativeDisk_
static std::vector< float > outerRadius_
static std::vector< float > outerZ_
static std::vector
< ReferenceCountingPointer
< BoundPlane > > 
positiveDisk_
static std::vector< float > tanTh_

Detailed Description

General CMS geometry parameters used during Particle Flow reconstruction or drawing. All methods and members are static.

Author:
Renaud Bruneliere
Date:
August 2006

Definition at line 23 of file PFGeometry.h.


Member Enumeration Documentation

Enumerator:
BeamPipe 
PS1 
PS2 
ECALBarrel 
ECALEndcap 
HCALBarrel 
HCALEndcap 
NPoints 

Definition at line 25 of file PFGeometry.h.

               {
    BeamPipe = 0,
    PS1 = 1,
    PS2 = 2,
    ECALBarrel = 3,
    ECALEndcap = 4,
    HCALBarrel = 5,
    HCALEndcap = 6,
    NPoints = 7
  } Layers_t;
Enumerator:
BeamPipeWall 
PS1Wall 
PS2Wall 
ECALInnerWall 
HCALInnerWall 
HCALOuterWall 
NSurfPoints 

Definition at line 36 of file PFGeometry.h.


Constructor & Destructor Documentation

PFGeometry::PFGeometry ( )

constructor

Definition at line 16 of file PFGeometry.cc.

References BeamPipe, cylinder_, ECALBarrel, ECALEndcap, epsilon, HCALBarrel, HCALEndcap, innerRadius_, innerZ_, negativeDisk_, outerRadius_, outerZ_, positiveDisk_, PS1, PS2, and tanTh_.

{
  if (!innerRadius_.size()) {
    // All distances are in cm
    // BeamPipe
    innerRadius_.push_back(2.5);
    outerRadius_.push_back(2.5);
    innerZ_.push_back(0.);
    outerZ_.push_back(500.);
    // PS1
    innerRadius_.push_back(45.0);
    outerRadius_.push_back(125.0);
    innerZ_.push_back(303.16);
    outerZ_.push_back(303.16);
    // PS2
    innerRadius_.push_back(45.0);
    outerRadius_.push_back(125.0);
    innerZ_.push_back(307.13);
    outerZ_.push_back(307.13);
    // ECALBarrel
    innerRadius_.push_back(129.0);
    outerRadius_.push_back(175.0);
    innerZ_.push_back(0.);
    outerZ_.push_back(304.5);
    // ECALEndcap
    innerRadius_.push_back(31.6);
    outerRadius_.push_back(171.1);
    innerZ_.push_back(317.0);
    outerZ_.push_back(388.0);
    // HCALBarrel
    innerRadius_.push_back(183.0);
    outerRadius_.push_back(285.0);
    innerZ_.push_back(0.);
    outerZ_.push_back(433.2);
    // HCALEndcap
    innerRadius_.push_back(31.6); // !!! Do not use : Probably wrong !!!    
    outerRadius_.push_back(285.0); // !!! Do not use : Probably wrong !!! 
    innerZ_.push_back(388.0);
    outerZ_.push_back(560.0);

    // Define reference surfaces
    const float epsilon = 0.001; // should not matter at all
    Surface::RotationType rot;
    // BeamPipe
    cylinder_.push_back(new BoundCylinder(Surface::PositionType(0,0,0), rot, 
                                          SimpleCylinderBounds(innerRadius_[BeamPipe], innerRadius_[BeamPipe], -outerZ_[BeamPipe], outerZ_[BeamPipe])));
    negativeDisk_.push_back(new BoundPlane(Surface::PositionType(0,0,-outerZ_[BeamPipe]), rot, 
                                                    SimpleDiskBounds(0., innerRadius_[BeamPipe], -epsilon, epsilon)));
    positiveDisk_.push_back(new BoundPlane(Surface::PositionType(0,0,outerZ_[BeamPipe]), rot, 
                                                    SimpleDiskBounds(0., innerRadius_[BeamPipe], -epsilon, epsilon)));
    tanTh_.push_back(innerRadius_[BeamPipe]/outerZ_[BeamPipe]);
    // PS1Wall
    cylinder_.push_back(new BoundCylinder(Surface::PositionType(0,0,0), rot, 
                                          SimpleCylinderBounds(outerRadius_[PS1], outerRadius_[PS1], -outerZ_[PS1], outerZ_[PS1])));
    negativeDisk_.push_back(new BoundPlane(Surface::PositionType(0,0,-outerZ_[PS1]), rot, 
                                                    SimpleDiskBounds(0., outerRadius_[PS1], -epsilon, epsilon)));
    positiveDisk_.push_back(new BoundPlane(Surface::PositionType(0,0,outerZ_[PS1]), rot, 
                                                    SimpleDiskBounds(0., outerRadius_[PS1], -epsilon, epsilon)));
    tanTh_.push_back(outerRadius_[PS1]/outerZ_[PS1]);
    // PS2Wall
    cylinder_.push_back(new BoundCylinder(Surface::PositionType(0,0,0), rot, 
                                          SimpleCylinderBounds(outerRadius_[PS2], outerRadius_[PS2], -outerZ_[PS2], outerZ_[PS2])));
    negativeDisk_.push_back(new BoundPlane(Surface::PositionType(0,0,-outerZ_[PS2]), rot, 
                                                    SimpleDiskBounds(0., outerRadius_[PS2], -epsilon, epsilon)));
    positiveDisk_.push_back(new BoundPlane(Surface::PositionType(0,0,outerZ_[PS2]), rot, 
                                                    SimpleDiskBounds(0., outerRadius_[PS2], -epsilon, epsilon)));
    tanTh_.push_back(outerRadius_[PS2]/outerZ_[PS2]);
    // ECALInnerWall
    cylinder_.push_back(new BoundCylinder(Surface::PositionType(0,0,0), rot, 
                                          SimpleCylinderBounds(innerRadius_[ECALBarrel], innerRadius_[ECALBarrel], -innerZ_[ECALEndcap], innerZ_[ECALEndcap])));
    negativeDisk_.push_back(new BoundPlane(Surface::PositionType(0,0,-innerZ_[ECALEndcap]), rot, 
                                                    SimpleDiskBounds(0., innerRadius_[ECALBarrel], -epsilon, epsilon)));
    positiveDisk_.push_back(new BoundPlane(Surface::PositionType(0,0,innerZ_[ECALEndcap]), rot, 
                                                    SimpleDiskBounds(0., innerRadius_[ECALBarrel], -epsilon, epsilon)));
    tanTh_.push_back(innerRadius_[ECALBarrel]/innerZ_[ECALEndcap]);
    // HCALInnerWall
    cylinder_.push_back(new BoundCylinder(Surface::PositionType(0,0,0), rot, 
                                          SimpleCylinderBounds(innerRadius_[HCALBarrel], innerRadius_[HCALBarrel], -innerZ_[HCALEndcap], innerZ_[HCALEndcap])));
    negativeDisk_.push_back(new BoundPlane(Surface::PositionType(0,0,-innerZ_[HCALEndcap]), rot, 
                                                    SimpleDiskBounds(0., innerRadius_[HCALBarrel], -epsilon, epsilon)));
    positiveDisk_.push_back(new BoundPlane(Surface::PositionType(0,0,innerZ_[HCALEndcap]), rot, 
                                                    SimpleDiskBounds(0., innerRadius_[HCALBarrel], -epsilon, epsilon)));
    tanTh_.push_back(innerRadius_[HCALBarrel]/innerZ_[HCALEndcap]);
    // HCALOuterWall
    cylinder_.push_back(new BoundCylinder(Surface::PositionType(0,0,0), rot, 
                                          SimpleCylinderBounds(outerRadius_[HCALBarrel], outerRadius_[HCALBarrel], -outerZ_[HCALEndcap], outerZ_[HCALEndcap])));
    negativeDisk_.push_back(new BoundPlane(Surface::PositionType(0,0,-outerZ_[HCALEndcap]), rot, 
                                                    SimpleDiskBounds(0., outerRadius_[HCALBarrel], -epsilon, epsilon)));
    positiveDisk_.push_back(new BoundPlane(Surface::PositionType(0,0,outerZ_[HCALEndcap]), rot, 
                                                    SimpleDiskBounds(0., outerRadius_[HCALBarrel], -epsilon, epsilon)));
    tanTh_.push_back(outerRadius_[HCALBarrel]/outerZ_[HCALEndcap]);
  }
}
virtual PFGeometry::~PFGeometry ( ) [inline, virtual]

destructor

Definition at line 50 of file PFGeometry.h.

{ }

Member Function Documentation

static const BoundCylinder& PFGeometry::barrelBound ( PFGeometry::Surface_t  iSurf) [inline, static]

return cylinder used to propagate to barrel

Definition at line 69 of file PFGeometry.h.

References cylinder_.

  { return *(cylinder_[unsigned(iSurf)]); }
static const float PFGeometry::innerRadius ( PFGeometry::Layers_t  layer) [inline, static]

return inner radius of a given layer

Definition at line 53 of file PFGeometry.h.

References innerRadius_.

Referenced by DisplayManager::createCanvas(), and GoodSeedProducer::PSforTMVA().

    { return innerRadius_[layer]; }
static const float PFGeometry::innerZ ( PFGeometry::Layers_t  layer) [inline, static]

return inner position along z axis of a given layer

Definition at line 61 of file PFGeometry.h.

References innerZ_.

Referenced by DisplayManager::createCanvas().

    { return innerZ_[layer]; }
static const BoundPlane& PFGeometry::negativeEndcapDisk ( PFGeometry::Surface_t  iSurf) [inline, static]

return disk used to propagate to negative endcap

Definition at line 73 of file PFGeometry.h.

References negativeDisk_.

  { return *(negativeDisk_[unsigned(iSurf)]); }
static const float PFGeometry::outerRadius ( PFGeometry::Layers_t  layer) [inline, static]

return outer radius of a given layer

Definition at line 57 of file PFGeometry.h.

References outerRadius_.

Referenced by PFTrackTransformer::addPoints(), PFTrackTransformer::addPointsAndBrems(), and GoodSeedProducer::PSforTMVA().

    { return outerRadius_[layer]; }
static const float PFGeometry::outerZ ( PFGeometry::Layers_t  layer) [inline, static]

return outer position along z axis of a given layer

Definition at line 65 of file PFGeometry.h.

References outerZ_.

Referenced by PFTrackTransformer::addPoints(), and PFTrackTransformer::addPointsAndBrems().

    { return outerZ_[layer]; }
static const BoundPlane& PFGeometry::positiveEndcapDisk ( PFGeometry::Surface_t  iSurf) [inline, static]

return disk used to propagate to positive endcap

Definition at line 77 of file PFGeometry.h.

References positiveDisk_.

  { return *(positiveDisk_[unsigned(iSurf)]); }
static float PFGeometry::tanTh ( PFGeometry::Surface_t  iSurf) [inline, static]

return tan(theta) of the cylinder corner

Definition at line 81 of file PFGeometry.h.

References tanTh_.

  { return tanTh_[unsigned(iSurf)]; }

Member Data Documentation

std::vector< ReferenceCountingPointer< BoundCylinder > > PFGeometry::cylinder_ [static, private]

Definition at line 90 of file PFGeometry.h.

Referenced by barrelBound(), and PFGeometry().

std::vector< float > PFGeometry::innerRadius_ [static, private]

Definition at line 85 of file PFGeometry.h.

Referenced by innerRadius(), and PFGeometry().

std::vector< float > PFGeometry::innerZ_ [static, private]

Definition at line 87 of file PFGeometry.h.

Referenced by innerZ(), and PFGeometry().

std::vector< ReferenceCountingPointer< BoundPlane > > PFGeometry::negativeDisk_ [static, private]

Definition at line 91 of file PFGeometry.h.

Referenced by negativeEndcapDisk(), and PFGeometry().

std::vector< float > PFGeometry::outerRadius_ [static, private]

Definition at line 86 of file PFGeometry.h.

Referenced by outerRadius(), and PFGeometry().

std::vector< float > PFGeometry::outerZ_ [static, private]

Definition at line 88 of file PFGeometry.h.

Referenced by outerZ(), and PFGeometry().

std::vector< ReferenceCountingPointer< BoundPlane > > PFGeometry::positiveDisk_ [static, private]

Definition at line 92 of file PFGeometry.h.

Referenced by PFGeometry(), and positiveEndcapDisk().

std::vector< float > PFGeometry::tanTh_ [static, private]

Definition at line 93 of file PFGeometry.h.

Referenced by PFGeometry(), and tanTh().