 |
ATLAS Offline Software
|
#include <PixelClusteringTool.h>
|
| PixelClusteringTool (const std::string &type, const std::string &name, const IInterface *parent) |
|
virtual StatusCode | clusterize (const EventContext &ctx, const RawDataCollection &RDOs, const InDet::SiDetectorElementStatus &pixelDetElStatus, const InDetDD::SiDetectorElement &element, Acts::Ccl::ClusteringData &data, std::vector< ClusterCollection > &collection) const override |
|
virtual StatusCode | makeClusters (const EventContext &ctx, typename IPixelClusteringTool::ClusterCollection &clusters, const InDetDD::SiDetectorElement &element, typename ClusterContainer::iterator itrContainer) const override |
|
virtual StatusCode | initialize () override |
|
|
ServiceHandle< InDetDD::IPixelReadoutManager > | m_pixelReadout |
|
ToolHandle< ISiLorentzAngleTool > | m_pixelLorentzAngleTool {this, "PixelLorentzAngleTool", "", "Tool to retreive Lorentz angle of Pixel"} |
|
SG::ReadCondHandleKey< PixelChargeCalibCondData > | m_chargeDataKey |
|
Gaudi::Property< bool > | m_addCorners {this, "AddCorners", true} |
|
Gaudi::Property< bool > | m_useWeightedPos {this, "UseWeightedPosition", false} |
|
Gaudi::Property< bool > | m_broadErrors {this, "UseBroadErrors", false} |
|
Gaudi::Property< bool > | m_checkGanged {this, "CheckGanged", false} |
|
const PixelID * | m_pixelID {nullptr} |
|
Definition at line 22 of file PixelClusteringTool.h.
◆ PixelClusteringTool()
ActsTrk::PixelClusteringTool::PixelClusteringTool |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
parent |
|
) |
| |
◆ clusterize()
Definition at line 226 of file PixelClusteringTool.cxx.
234 collection.emplace_back();
235 if ( not pixelDetElStatus.
isGood(idHash) ) {
239 return StatusCode::SUCCESS;
245 Acts::Ccl::createClusters<CellCollection, ClusterCollection, 2>
248 return StatusCode::SUCCESS;
◆ initialize()
StatusCode ActsTrk::PixelClusteringTool::initialize |
( |
| ) |
|
|
overridevirtual |
◆ isGanged()
◆ makeCluster()
Definition at line 62 of file PixelClusteringTool.cxx.
74 std::vector<float> chargeList;
75 if (calibData) chargeList.reserve(cluster.ids.size());
91 for (
size_t i = 0;
i < cluster.ids.size();
i++) {
103 int tot = cluster.tots.at(
i);
106 std::array<InDetDD::PixelDiodeTree::CellIndexType,2> diode_idx
115 return StatusCode::FAILURE;
129 chargeList.push_back(
charge);
136 rowmax_diode = si_param;
140 rowmin_diode = si_param;
144 colmax_diode = si_param;
148 colmin_diode = si_param;
157 pos_acc +=
charge * si_param.position();
160 pos_acc += si_param.position();
170 const int colWidth = colmax - colmin + 1;
171 const int rowWidth = rowmax - rowmin + 1;
173 double etaWidth = colmax_diode.xEtaMax() - colmin_diode.xEtaMin();
174 double phiWidth = rowmax_diode.xPhiMax() - rowmin_diode.xPhiMin();
182 double Ax[3] = {
T(0,0),
T(1,0),
T(2,0)};
183 double Ay[3] = {
T(0,1),
T(1,1),
T(2,1)};
184 double R [3] = {
T(0,3),
T(1,3),
T(2,3)};
187 Amg::Vector3D globalPos(M[0]*Ax[0]+M[1]*Ay[0]+R[0],M[0]*Ax[1]+M[1]*Ay[1]+R[1],M[0]*Ax[2]+M[1]*Ay[2]+R[2]);
190 float width0, width1;
198 width1 = etaWidth / colWidth;
203 Eigen::Matrix<float,2,1> localPosition(locpos.x(), locpos.y());
205 localCovariance(0, 0) = width0 * width0 / 12.0f;
206 localCovariance(1, 1) = width1 * width1 / 12.0f;
208 xaodcluster.setMeasurement<2>(moduleHash, localPosition, localCovariance);
209 xaodcluster.setIdentifier( cluster.ids.front() );
210 xaodcluster.setRDOlist(std::move(cluster.ids));
211 xaodcluster.globalPosition() = globalPos.cast<
float>();
213 xaodcluster.setToTlist(std::move(cluster.tots));
215 xaodcluster.setChargelist(std::move(chargeList));
216 xaodcluster.setLVL1A(cluster.lvl1min);
217 xaodcluster.setChannelsInPhiEta(rowWidth,colWidth);
218 xaodcluster.setWidthInEta(
static_cast<float>(etaWidth));
219 xaodcluster.setIsSplit(
false);
220 xaodcluster.setSplitProbabilities(0.0, 0.0);
222 return StatusCode::SUCCESS;
◆ makeClusters()
Definition at line 253 of file PixelClusteringTool.cxx.
264 calibData = calibDataHandle.
cptr();
268 return StatusCode::FAILURE;
280 for (
typename IPixelClusteringTool::Cluster&
cl :
clusters) {
292 return StatusCode::SUCCESS;
◆ unpackRDOs()
Definition at line 296 of file PixelClusteringTool.cxx.
303 CellCollection
cells;
307 for (
const auto *
const rdo : RDOs) {
309 std::array<InDetDD::PixelDiodeTree::CellIndexType,2> diode_idx
317 if (not pixelDetElStatus.isChipGood(idHash, fe)) {
321 const int lvl1 = rdo->getLVL1A();
322 const int tot = rdo->getToT();
331 std::optional<Identifier> gangedID =
isGanged(rdoID, element);
332 if (gangedID.has_value()) {
337 gangedID->get_compact());
◆ m_addCorners
Gaudi::Property<bool> ActsTrk::PixelClusteringTool::m_addCorners {this, "AddCorners", true} |
|
private |
◆ m_broadErrors
Gaudi::Property<bool> ActsTrk::PixelClusteringTool::m_broadErrors {this, "UseBroadErrors", false} |
|
private |
◆ m_chargeDataKey
Initial value:{this, "PixelChargeCalibCondData", "",
"Pixel charge calibration data"}
Definition at line 72 of file PixelClusteringTool.h.
◆ m_checkGanged
Gaudi::Property<bool> ActsTrk::PixelClusteringTool::m_checkGanged {this, "CheckGanged", false} |
|
private |
◆ m_pixelID
const PixelID* ActsTrk::PixelClusteringTool::m_pixelID {nullptr} |
|
private |
◆ m_pixelLorentzAngleTool
ToolHandle< ISiLorentzAngleTool > ActsTrk::PixelClusteringTool::m_pixelLorentzAngleTool {this, "PixelLorentzAngleTool", "", "Tool to retreive Lorentz angle of Pixel"} |
|
private |
◆ m_pixelReadout
Initial value:{this, "PixelReadoutManager", "InDetDD::ITk::PixelReadoutManager",
"Pixel readout manager" }
Definition at line 67 of file PixelClusteringTool.h.
◆ m_useWeightedPos
Gaudi::Property<bool> ActsTrk::PixelClusteringTool::m_useWeightedPos {this, "UseWeightedPosition", false} |
|
private |
The documentation for this class was generated from the following files:
def retrieve(aClass, aKey=None)
char data[hepevt_bytes_allocation_ATLAS]
int phi_index(const Identifier &id) const
SiCellId connectedCell(const SiCellId cellId, int number) const
Get the cell ids sharing the readout for this cell.
Eigen::Matrix< double, 2, 1 > Vector2D
int computeTotalToT(const SG::AuxElement &cluster)
Trk::Surface & surface()
Element Surface.
value_type get_compact() const
Get the compact id.
const std::string & key() const
Return the StoreGate ID for the referenced object.
bool empty() const
Test if the key is blank.
static unsigned int getFE(const PixelDiodeTree::DiodeProxy &diode_proxy)
PixelDiodeTree::DiodeProxy diodeProxyFromIdx(const std::array< PixelDiodeTree::IndexType, 2 > &idx) const
PixelDiodeTree::DiodeProxyWithPosition diodeProxyFromIdxCachePosition(const std::array< PixelDiodeTree::IndexType, 2 > &idx) const
virtual IdentifierHash identifyHash() const override final
identifier hash (inline)
static InDetDD::PixelDiodeType getDiodeType(const PixelDiodeTree::DiodeProxy &diode_proxy)
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
A diode proxy which caches the position of a diode.
virtual SiCellId cellIdFromIdentifier(const Identifier &identifier) const override final
SiCellId from Identifier.
int numberOfConnectedCells(const SiCellId cellId) const
Test if readout cell has more than one diode associated with it.
virtual Identifier identifierFromCellId(const SiCellId &cellId) const override final
Identifier <-> SiCellId (ie strip number or pixel eta_index,phi_index) Identifier from SiCellId (ie s...
Eigen::Affine3d Transform3D
int eta_index(const Identifier &id) const
CalibrationStrategy getCalibrationStrategy(unsigned int moduleHash) const
double R(const INavigable4Momentum *p1, const double v_eta, const double v_phi)
float computeTotalCharge(const SG::AuxElement &cluster)
bool isGood(IdentifierHash hash) const
double charge(const T &p)
StatusCode initialize(bool used=true)
Eigen::Matrix< double, 3, 1 > Vector3D
PixelReadoutTechnology getReadoutTechnology() const
Helper class to access parameters of a diode.
float getCharge(InDetDD::PixelDiodeType type, unsigned int moduleHash, unsigned int FE, float ToT) const
static constexpr std::array< PixelDiodeTree::CellIndexType, 2 > makeCellIndex(T local_x_idx, T local_y_idx)
Create a 2D cell index from the indices in local-x (phi, row) and local-y (eta, column) direction.
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
virtual const SiDetectorDesign & design() const override final
access to the local description (inline):
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]
const_pointer_type cptr()