|
ATLAS Offline Software
|
This class creates the Surfaces needed to perform track extrapolation.
More...
#include <CaloSurfaceBuilder.h>
|
| CaloSurfaceBuilder (const std::string &type, const std::string &name, const IInterface *parent) |
|
virtual | ~CaloSurfaceBuilder () |
|
virtual StatusCode | initialize () override final |
|
virtual StatusCode | finalize () override final |
|
virtual CaloDepthTool * | getCaloDepth () override final |
|
virtual Trk::Surface * | CreateUserSurface (const CaloCell_ID::CaloSample sample, const double offset, const double etaCaloLocal, const CaloDetDescrManager *calo_dd) const override final |
| overwrite DD radius/z by CaloDepth radius, and an offset can be added More...
|
|
virtual Trk::Surface * | CreateLastSurface (const CaloCell_ID::CaloSample sample, const double offset, const double etaCaloLocal, const CaloDetDescrManager *calo_dd) const override final |
| end of the sample for the last layers of the Calo More...
|
|
virtual bool | get_cylinder_surface (CaloCell_ID::CaloSample sample, int side, Amg::Transform3D &htrans, double &radius, double &hphi, double &hlength, double &depth, const CaloDetDescrManager *calo_dd) const override final |
| These methods provide the default parameters used by the CaloTrackingGeometry and Surface Builders, clients should not need to use them. More...
|
|
virtual bool | get_disk_surface (CaloCell_ID::CaloSample sample, int side, Amg::Transform3D &htrans, double &z, double &rmin, double &rmax, double &hphisec, double &depth, const CaloDetDescrManager *calo_dd) const override final |
|
virtual bool | get_cylinder_surface (CaloSubdetNames::ALIGNVOL alvol, Amg::Transform3D &htrans, double &hphi, std::vector< double > &radius, std::vector< double > &depth, std::vector< double > &hlength) const override final |
|
virtual bool | get_disk_surface (CaloSubdetNames::ALIGNVOL alvol, Amg::Transform3D &htrans, double &hphi, std::vector< double > &z, std::vector< double > &depth, std::vector< double > &rmin, std::vector< double > &rmax) const override final |
|
virtual std::vector< std::pair< const Trk::Surface *, const Trk::Surface * > > | entrySurfaces (const CaloDetDescrManager *calo_dd) const override final |
|
virtual std::vector< std::pair< const Trk::Surface *, const Trk::Surface * > > | exitSurfaces (const CaloDetDescrManager *calo_dd) const override final |
|
This class creates the Surfaces needed to perform track extrapolation.
All numbers are provided by the CaloDetDescr tools
Definition at line 56 of file CaloSurfaceBuilder.h.
◆ CaloSurfaceBuilder()
CaloSurfaceBuilder::CaloSurfaceBuilder |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
parent |
|
) |
| |
◆ ~CaloSurfaceBuilder()
CaloSurfaceBuilder::~CaloSurfaceBuilder |
( |
| ) |
|
|
virtualdefault |
◆ CreateLastSurface()
end of the sample for the last layers of the Calo
Definition at line 248 of file CaloSurfaceBuilder.cxx.
276 if (etaCaloLocal < 0)
310 std::vector<TileDetDescriptor*>::const_iterator Tile_first =
329 if (hphi < 0.9 *
M_PI) {
344 std::vector<TileDetDescriptor*>::const_iterator Tile_first =
347 zend = TileGap_descr->
zcenter(2) + .5 * TileGap_descr->
dz(2);
354 zend =
descr->calo_z_max();
368 if (hphi < 0.9 *
M_PI) {
375 "This sample is not a 'LAST' surface... returning dummy surface");
◆ CreateUserSurface()
overwrite DD radius/z by CaloDepth radius, and an offset can be added
Definition at line 123 of file CaloSurfaceBuilder.cxx.
158 if (etaCaloLocal < 0)
206 double betterrad = 0;
215 if (hphi < 0.9 *
M_PI) {
237 if (hphi < 0.9 *
M_PI) {
◆ entrySurfaces()
|
inlinefinaloverridevirtual |
◆ exitSurfaces()
|
inlinefinaloverridevirtual |
◆ fill_tg_surfaces()
Definition at line 588 of file CaloSurfaceBuilder.cxx.
594 float etaRef = (
sample < 4 || std::abs(
sample - 13) < 2) ? 1. : 2.;
601 m_layerEntries.emplace_back(spos, sneg);
609 std::vector<float>
offset(neta);
611 for (
unsigned int ie = 0;
ie < neta;
ie++) {
637 for (
unsigned int ie = 0;
ie < neta;
ie++) {
662 for (
unsigned int ie = 0;
ie < neta;
ie++) {
688 for (
unsigned int ie = 0;
ie < neta;
ie++) {
715 for (
unsigned int ie = 0;
ie < neta;
ie++) {
742 for (
unsigned int ie = 0;
ie < neta;
ie++) {
768 for (
unsigned int ie = 0;
ie < neta;
ie++) {
795 for (
unsigned int ie = 0;
ie < neta;
ie++) {
816 sample + 1 <
static_cast<int>(m_layerEntries.size());
818 m_layerExits.push_back(m_layerEntries[
sample + 1]);
833 std::pair<const Trk::Surface*, const Trk::Surface*>(lpos, lneg);
844 std::pair<const Trk::Surface*, const Trk::Surface*>(lpos, lneg);
855 std::pair<const Trk::Surface*, const Trk::Surface*>(lpos, lneg);
866 std::pair<const Trk::Surface*, const Trk::Surface*>(lpos, lneg);
877 std::pair<const Trk::Surface*, const Trk::Surface*>(lpos, lneg);
◆ finalize()
StatusCode CaloSurfaceBuilder::finalize |
( |
| ) |
|
|
finaloverridevirtual |
Definition at line 97 of file CaloSurfaceBuilder.cxx.
100 for (
auto & layerEntry : m_layerEntries) {
101 delete layerEntry.first;
102 delete layerEntry.second;
105 if (!m_layerExits.empty()) {
◆ get_cylinder_surface() [1/2]
These methods provide the default parameters used by the CaloTrackingGeometry and Surface Builders, clients should not need to use them.
Definition at line 391 of file CaloSurfaceBuilder.cxx.
423 if (reg->getSampling(0) ==
sample && reg->calo_sign() *
side > 0) {
444 ATH_MSG_ERROR(
" get_cylinder_surface Not Cylindrical Tile found!!! ");
450 if (reg->getSampling(0) ==
sample && reg->calo_sign() *
side > 0) {
454 hphi = .5 * reg->dphi() * reg->n_phi();
◆ get_cylinder_surface() [2/2]
bool CaloSurfaceBuilder::get_cylinder_surface |
( |
CaloSubdetNames::ALIGNVOL |
alvol, |
|
|
Amg::Transform3D & |
htrans, |
|
|
double & |
hphi, |
|
|
std::vector< double > & |
radius, |
|
|
std::vector< double > & |
depth, |
|
|
std::vector< double > & |
hlength |
|
) |
| const |
|
finaloverridevirtual |
◆ get_disk_surface() [1/2]
Definition at line 464 of file CaloSurfaceBuilder.cxx.
500 if (reg->getSampling(0) ==
sample && reg->calo_sign() *
side > 0) {
501 result = reg->get_disk_surface(htrans, zow, ri, ra, hphisec,
depth);
502 if (!reg->is_lar_em_endcap_inner())
513 if (reg->getSampling(0) ==
sample && reg->calo_sign() *
side > 0) {
514 result = reg->get_disk_surface(htrans, zow, ri, ra, hphisec,
depth);
515 if (!reg->is_lar_em_endcap_inner())
529 htrans = (htrans) *
vec;
◆ get_disk_surface() [2/2]
bool CaloSurfaceBuilder::get_disk_surface |
( |
CaloSubdetNames::ALIGNVOL |
alvol, |
|
|
Amg::Transform3D & |
htrans, |
|
|
double & |
hphi, |
|
|
std::vector< double > & |
z, |
|
|
std::vector< double > & |
depth, |
|
|
std::vector< double > & |
rmin, |
|
|
std::vector< double > & |
rmax |
|
) |
| const |
|
finaloverridevirtual |
◆ getCaloDepth()
◆ initialize()
StatusCode CaloSurfaceBuilder::initialize |
( |
| ) |
|
|
finaloverridevirtual |
Definition at line 71 of file CaloSurfaceBuilder.cxx.
75 return StatusCode::FAILURE;
80 return StatusCode::FAILURE;
85 return StatusCode::FAILURE;
89 ATH_MSG_FATAL(
"Could not find TileDetDescrManager in DetStore");
90 return StatusCode::FAILURE;
93 return StatusCode::SUCCESS;
◆ ATLAS_THREAD_SAFE [1/3]
◆ ATLAS_THREAD_SAFE [2/3]
◆ ATLAS_THREAD_SAFE [3/3]
std::once_flag m_fillOnce CaloSurfaceBuilder::ATLAS_THREAD_SAFE |
|
mutableprivate |
◆ m_calodepth
Initial value:{ this,
"CaloDepthTool",
"CaloDepthTool/CaloDepthTool",
"CaloDepthTool to be used" }
Definition at line 155 of file CaloSurfaceBuilder.h.
◆ m_lar_mat
◆ m_lar_simplegeom
◆ m_tile_dd
The documentation for this class was generated from the following files:
def retrieve(aClass, aKey=None)
tile_descr_const_iterator tile_descriptors_begin() const
ToolHandle< ICaloRecoMaterialTool > m_lar_mat
@ depth
pointing depth of the shower as calculated in egammaqgcld
ToolHandle< ICaloRecoSimpleGeomTool > m_lar_simplegeom
void setOwner(SurfaceOwner x)
set Ownership
Scalar eta() const
pseudorapidity method
ToolHandle< CaloDepthTool > m_calodepth
std::vector< size_t > vec
const Amg::Vector3D & center() const
Returns the center position of the Surface.
virtual Trk::Surface * CreateUserSurface(const CaloCell_ID::CaloSample sample, const double offset, const double etaCaloLocal, const CaloDetDescrManager *calo_dd) const override final
overwrite DD radius/z by CaloDepth radius, and an offset can be added
float dz(unsigned int samp) const
const std::string & lar_geometry() const
get lar geometry label, distinguish between full atlas and TB
float dr(unsigned int samp) const
virtual Trk::Surface * CreateLastSurface(const CaloCell_ID::CaloSample sample, const double offset, const double etaCaloLocal, const CaloDetDescrManager *calo_dd) const override final
end of the sample for the last layers of the Calo
typename vecDetail::vec_typedef< T, N >::type vec
Define a nice alias for the vectorized type.
float rcenter(unsigned int samp) const
CaloSampling::CaloSample CaloSample
float zcenter(unsigned int samp) const
::StatusCode StatusCode
StatusCode definition for legacy code.
Eigen::Affine3d Transform3D
virtual const SurfaceBounds & bounds() const =0
Surface Bounds method.
calo_descr_range calo_descriptors_range() const
Range over descriptors.
virtual bool get_cylinder_surface(CaloCell_ID::CaloSample sample, int side, Amg::Transform3D &htrans, double &radius, double &hphi, double &hlength, double &depth, const CaloDetDescrManager *calo_dd) const override final
These methods provide the default parameters used by the CaloTrackingGeometry and Surface Builders,...
This is a base class for LAr and Tile Descriptors The primary goal is to speed up loops over all the ...
const TileDetDescrManager * m_tile_dd
Eigen::Translation< double, 3 > Translation3D
virtual bool get_disk_surface(CaloCell_ID::CaloSample sample, int side, Amg::Transform3D &htrans, double &z, double &rmin, double &rmax, double &hphisec, double &depth, const CaloDetDescrManager *calo_dd) const override final
calo_descr_range tile_descriptors_range() const
Range over tile descriptors.
void fill_tg_surfaces(const CaloDetDescrManager *calo_dd) const
virtual double r() const =0
Interface method for the maximal extension or the radius.