 |
ATLAS Offline Software
|
Go to the documentation of this file.
11 #include "Gaudi/Property.h"
12 #include "GaudiKernel/Bootstrap.h"
13 #include "GaudiKernel/IMessageSvc.h"
14 #include "GaudiKernel/IService.h"
15 #include "GaudiKernel/ISvcLocator.h"
16 #include "GaudiKernel/IToolSvc.h"
17 #include "GaudiKernel/MsgStream.h"
18 #include "GaudiKernel/SystemOfUnits.h"
35 #include "CaloDetDescr/CaloDetDescrElement.h"
57 const std::string&
name,
61 , m_lar_mat(
"LArRecoMaterialTool")
62 , m_lar_simplegeom(
"LArRecoSimpleGeomTool")
64 declareProperty(
"LArRecoMaterialTool",
m_lar_mat);
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;
100 for (
auto & layerEntry : m_layerEntries) {
101 delete layerEntry.first;
102 delete layerEntry.second;
105 if (!m_layerExits.empty()) {
125 const double etaCaloLocal,
158 if (etaCaloLocal < 0)
206 double betterrad = 0;
215 if (hphi < 0.9 *
M_PI) {
237 if (hphi < 0.9 *
M_PI) {
250 const double etaCaloLocal,
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");
385 return &(*m_calodepth);
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();
502 if (reg->getSampling(0) ==
sample && reg->calo_sign() *
side > 0) {
503 result = reg->get_disk_surface(htrans, zow, ri, ra, hphisec,
depth);
504 if (!reg->is_lar_em_endcap_inner())
515 if (reg->getSampling(0) ==
sample && reg->calo_sign() *
side > 0) {
516 result = reg->get_disk_surface(htrans, zow, ri, ra, hphisec,
depth);
517 if (!reg->is_lar_em_endcap_inner())
531 htrans = (htrans) *
vec;
539 std::vector<double>&
radius,
540 std::vector<double>&
depth,
541 std::vector<double>& hlength)
const
555 htrans = (htrans) *
vec;
562 htrans = (htrans) *
vec;
573 std::vector<double>&
z,
574 std::vector<double>&
depth,
575 std::vector<double>& rmin,
576 std::vector<double>& rmax)
const
579 alvol, htrans, hphi,
z,
depth, rmin, rmax);
596 float etaRef = (
sample < 4 || std::abs(
sample - 13) < 2) ? 1. : 2.;
603 m_layerEntries.emplace_back(spos, sneg);
611 std::vector<float>
offset(neta);
613 for (
unsigned int ie = 0;
ie < neta;
ie++) {
639 for (
unsigned int ie = 0;
ie < neta;
ie++) {
664 for (
unsigned int ie = 0;
ie < neta;
ie++) {
690 for (
unsigned int ie = 0;
ie < neta;
ie++) {
717 for (
unsigned int ie = 0;
ie < neta;
ie++) {
744 for (
unsigned int ie = 0;
ie < neta;
ie++) {
770 for (
unsigned int ie = 0;
ie < neta;
ie++) {
797 for (
unsigned int ie = 0;
ie < neta;
ie++) {
818 sample + 1 <
static_cast<int>(m_layerEntries.size());
820 m_layerExits.push_back(m_layerEntries[
sample + 1]);
835 std::pair<const Trk::Surface*, const Trk::Surface*>(lpos, lneg);
846 std::pair<const Trk::Surface*, const Trk::Surface*>(lpos, lneg);
857 std::pair<const Trk::Surface*, const Trk::Surface*>(lpos, lneg);
868 std::pair<const Trk::Surface*, const Trk::Surface*>(lpos, lneg);
879 std::pair<const Trk::Surface*, const Trk::Surface*>(lpos, lneg);
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
virtual ~CaloSurfaceBuilder()
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
Definition of CaloDetDescrManager.
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.
Definition of CaloDetDescriptor.
float rcenter(unsigned int samp) const
CaloSampling::CaloSample CaloSample
virtual CaloDepthTool * getCaloDepth() override final
float zcenter(unsigned int samp) const
::StatusCode StatusCode
StatusCode definition for legacy code.
Eigen::Affine3d Transform3D
virtual StatusCode initialize() override final
CaloSurfaceBuilder(const std::string &type, const std::string &name, const IInterface *parent)
virtual const SurfaceBounds & bounds() const =0
Surface Bounds method.
virtual StatusCode finalize() override final
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 class provides the client interface for accessing the detector description information common to...
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
ALIGNVOL
LAr Alignable volumes.
virtual double r() const =0
Interface method for the maximal extension or the radius.