|
ATLAS Offline Software
|
◆ DDHelper() [1/2]
CaloClusterCorr::DDHelper::DDHelper |
( |
| ) |
|
|
delete |
delte default Constructor
◆ DDHelper() [2/2]
Constructor with CaloDetDescManger as parameter.
Constructor.
- Parameters
-
dd_man | The detector descriptor manager. |
Definition at line 140 of file CaloClusterCorrectionCommon.cxx.
◆ dd_inner_strip_fixup()
Work around innermost strip problem.
- Parameters
-
region | A region code, as defined in the header. |
dd_man | Detector descriptor manager. |
eta | The \(\eta\) coordinate to find. |
phi | The \(\phi\) coordinate to find. |
dummy_elts | Vector of dummy elements for the innermost strip. |
The innermost strip in sampling 1 in the barrel is disconnected. However, CaloDetDescr doesn't really know about that. If you ask for a cell in that region, it will instead return you a cell for some completely different calorimeter region! We call this in the case that we're unable to find a good det descr element. Here we check to see if we're actually asking for a location in this innermost strip. If so, then we cons up a new dummy element and return that.
Definition at line 307 of file CaloClusterCorrectionCommon.cxx.
316 if (!
descr)
return nullptr;
317 int ieta =
descr->eta_channel (
eta);
320 int iphi =
descr->phi_channel (
phi);
321 if (iphi < 0)
return nullptr;
322 unsigned int index = iphi;
◆ dd_try_gap()
◆ find_dd_elt()
Find the detector descriptor element for a given position, correcting for DD edge bugs.
- Parameters
-
region | A region code, as defined in the header. |
cluster | The cluster being corrected. |
eta | The \(\eta\) coordinate to find. |
phi | The \(\phi\) coordinate to find. |
Looks up the DD element containing eta
, phi
in the region specified by region
. Returns 0 if there's no such cell.
Sometimes when you look up a position near the edge of a cell, DD can erroneously return an adjacent cell. This routine attempts to work around this bug. After we get an element, we test to see if it in fact contains the position requested. If not, we shift the request by half a cell and try again.
Definition at line 165 of file CaloClusterCorrectionCommon.cxx.
198 float deta = elt->
deta();
199 float dphi = elt->
dphi();
203 if (
eta > elt->
eta() + deta/2)
205 else if (eta < elt->
eta() - deta/2)
211 if (
phi > elt->
phi() + dphi/2)
213 else if (phi < elt->
phi() - dphi/2)
218 if (
good != 2 &&
n == 1) {
◆ find_dd_elt1()
Find the detector descriptor element for a given position.
- Parameters
-
region | A region code, as defined in the header. |
cluster | The cluster being corrected. |
eta | The \(\eta\) coordinate to find. |
phi | The \(\phi\) coordinate to find. |
Looks up the DD element containing eta
, phi
in the region specified by region
. Returns 0 if there's no such cell.
Definition at line 239 of file CaloClusterCorrectionCommon.cxx.
270 if (elt_b ==
nullptr)
272 else if (elt_e ==
nullptr)
◆ make_dummy_elts()
Construct dummy DDEs used to work around innermost strip problem.
Definition at line 357 of file CaloClusterCorrectionCommon.cxx.
362 int nphi =
descr->n_phi();
364 for (
int etasgn = 1; etasgn >= -1; etasgn -= 2) {
365 for (
int iphi = 0; iphi < nphi; iphi++) {
374 if (cellid_mgr->
cell_id (cellIdHash2) != cellId2)
379 auto elt = std::make_unique<DummyDetDescrElement>
380 (
descr->subcalo_hash(),
386 elt->set_cylindric_size (elt2->
deta(),
389 elt->set_cylindric (elt2->
eta() - etasgn * elt2->
deta(),
392 elt->set_cylindric_raw (elt2->
eta_raw() - etasgn * elt2->
deta(),
397 if (etasgn < 0)
index += nphi;
◆ m_dummy_elts
The documentation for this class was generated from the following file:
float deta() const
cell deta
const CaloDetDescrElement * dd_inner_strip_fixup(const CaloDetDescrManager *dd_man, int region, float eta, float phi) const
Work around innermost strip problem.
double eSample(sampling_type sampling) const
Retrieve energy in a given sampling.
IdentifierHash calo_cell_hash(const Identifier cellId) const
create hash id from 'global' cell id
Scalar phi() const
phi method
Scalar eta() const
pseudorapidity method
This class groups all DetDescr information related to a CaloCell. Provides a generic interface for al...
const CaloDetDescrElement * get_element(const Identifier &cellId) const
get element by its identifier
static const CaloDetDescrElement * dd_try_gap(const CaloDetDescrManager *dd_man, int region, const CaloCluster *cluster, float eta, float phi)
float eta_raw() const
cell eta_raw
static const CaloDetDescrElement * find_dd_elt1(const CaloDetDescrManager *dd_mgr, int region, const CaloCluster *cluster, float eta, float phi)
Find the detector descriptor element for a given position.
void make_dummy_elts(const CaloDetDescrManager *dd_man)
Construct dummy DDEs used to work around innermost strip problem.
Helper class for offline cell identifiers.
static double fix(double phi)
Identifier cell_id(const int subCalo, const int barec_or_posneg, const int sampling_or_fcalmodule, const int region_or_dummy, const int eta, const int phi) const
Make a cell (== channel) ID from constituting fields and subCalo index; for (Mini)FCAL,...
std::vector< std::unique_ptr< const CaloDetDescrElement > > m_dummy_elts
Collection of dummy elements.
float r_raw() const
cell r_raw
float dphi() const
cell dphi
This is a base class for LAr and Tile Descriptors The primary goal is to speed up loops over all the ...
const CaloCell_ID * getCaloCell_ID() const
get calo cell ID helper
float eta() const
cell eta
float phi() const
cell phi
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
float phi_raw() const
cell phi_raw
const CaloDetDescriptor * get_descriptor(const Identifier ®ionId) const
get descriptor by region identifier