|
ATLAS Offline Software
|
Go to the documentation of this file.
13 #include "CaloGeoHelpers/CaloSampling.h"
41 const std::string&
name,
42 const ::IInterface*
parent)
47 declareInterface<ICaloRingsBuilder>(
this);
50 "Eta Axes can be divide in two.");
52 "Phi Axes can be divide in two.");
69 for (
size_t rsConfIdx = 0; rsConfIdx <
m_nRingSets; ++rsConfIdx) {
71 const auto rsNLayers =
m_nLayers[rsConfIdx];
73 auto end_itr = itr + rsNLayers;
78 const auto& caloSampleItr =
reinterpret_cast<
81 const auto& caloSampleEndItr =
reinterpret_cast<
85 std::vector<CaloSampling::CaloSample> rsLayers( caloSampleItr ,
108 }
catch (
const std::runtime_error &
e) {
109 ATH_MSG_ERROR(
"Could not add collection bounderies due to: " <<
e.what() );
111 std::ostringstream
str;
114 return StatusCode::FAILURE;
119 std::ostringstream
str;
127 return StatusCode::SUCCESS;
133 return StatusCode::SUCCESS;
147 return StatusCode::FAILURE;
156 const auto nRings =
rawConf.nRings;
166 unsigned int ringNumber(0);
186 ringNumber =
static_cast<unsigned int>(std::floor(deltaGreater + .5));
192 ringNumber = (ringNumber * 4) - 3;
195 ringNumber = (ringNumber * 4) - 2;
198 else if (etaPositive){
199 ringNumber = (ringNumber * 4) - 1;
202 ringNumber = (ringNumber * 4);
206 ringNumber = (etaPositive)?(ringNumber * 2):
207 ((ringNumber * 2) - 1);
210 ringNumber = (phiPositive)?(ringNumber * 2):
211 ((ringNumber * 2) - 1);
215 if ( ringNumber < nRings ){
217 rs->
at(ringNumber) +=
cell->energy()/cosh(
cell->eta());
219 rs->
at(ringNumber) +=
cell->energy();
225 return StatusCode::SUCCESS;
JetConstituentVector::iterator iterator
SG::ReadCondHandleKey< CaloDetDescrManager > m_caloMgrKey
static void print(const RawConf &raw, std::ostream &stream)
Prints rawConf.
Gaudi::Property< std::vector< float > > m_etaWidth
Width of the ring in eta.
~CaloAsymRingsBuilder()
Destructor.
Gaudi::Property< float > m_cellMaxDPhiDist
Maximum cell distance in phi to seed.
bool m_doPhiAxesDivision
This can be set True to divide in two the phi axes.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
setSAddress setEtaMS setDirPhiMS setDirZMS setBarrelRadius setEndcapAlpha setEndcapRadius setInterceptInner setEtaMap setEtaBin setIsTgcFailure setDeltaPt deltaPhi
bool m_doEtaAxesDivision
This can be set True to divide in two the eta axes.
CaloAsymRingsBuilder(const std::string &type, const std::string &name, const IInterface *parent)
Default constructor.
SG::WriteHandleKey< xAOD::RingSetContainer > m_rsContName
Name of RingSetContainer on Event StoreGate.
const xAOD::RingSetConf::RawConfCollection & rawConf() override
Extra methods:
float & at(const unsigned int i)
Get/set ring Et at ith position.
Gaudi::Property< std::vector< float > > m_phiWidth
Width of the ring in phi.
Class holding a set of rings.
SG::ReadHandleKey< CaloCellContainer > m_cellsContName
Name of CaloCellContainer.
const std::string & key() const
Return the StoreGate ID for the referenced object.
static Ringer::CalJointLayer whichLayer(const std::vector< CaloSampling::CaloSample > &layers)
virtual StatusCode initialize() override
Tool main methods:
virtual StatusCode buildRingSet(const xAOD::RingSetConf::RawConf &rawConf, const AtlasGeoPoint &seed, xAOD::RingSet *rs) override
main method where the RingSets are built.
Gaudi::Property< std::vector< int > > m_layers
Calorimeter layers in each ringset.
double deltaEta(const I4Momentum &p1, const I4Momentum &p2)
Computes efficiently .
::StatusCode StatusCode
StatusCode definition for legacy code.
Gaudi::Property< std::vector< unsigned int > > m_nLayers
Number of calorimeter layers in each ringset.
Gaudi::Property< float > m_cellMaxDEtaDist
Maximum cell distance in eta to seed.
static void addRawConfColBounderies(RawConfCollection &clRingsConf)
Add to RawConfCollection its JointLayer/JointSection bounderies.
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
bool m_doTransverseEnergy
virtual bool isValid() override final
Can the handle be successfully dereferenced?
virtual StatusCode finalize() override
finalize method
Helpers for checking error return status codes and reporting errors.
StatusCode initialize(bool used=true)
size_t m_nRingSets
hold the number of RingSets we are building for each CaloRings
const_pointer_type ptr()
Dereference the pointer.
xAOD::RingSetConf::RawConfCollection m_rsRawConfCol
holds each RingSet configuration (filled at initialize)
This class provides the client interface for accessing the detector description information common to...
Data object for each calorimeter readout cell.
SG::WriteHandleKey< xAOD::CaloRingsContainer > m_crContName
Tool props (python configurables):
Gaudi::Property< std::vector< unsigned int > > m_nRings
Number of rings in a ringset.
static Ringer::CalJointSection whichSection(const std::vector< CaloSampling::CaloSample > &layers)
static double diff(double phi1, double phi2)
simple phi1 - phi2 calculation, but result is fixed to respect range.
Namespace dedicated for Ringer utilities.