 |
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} |
| |
| Gaudi::Property< bool > | m_isITk {this, "isITk", true, "True if running in ITk"} |
| |
| 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 248 of file PixelClusteringTool.cxx.
256 collection.emplace_back();
257 if ( not pixelDetElStatus.
isGood(idHash) ) {
261 return StatusCode::SUCCESS;
267 Acts::Ccl::createClusters<CellCollection, ClusterCollection, 2>
270 return StatusCode::SUCCESS;
◆ initialize()
| StatusCode ActsTrk::PixelClusteringTool::initialize |
( |
| ) |
|
|
overridevirtual |
◆ isGanged()
◆ makeCluster()
Definition at line 70 of file PixelClusteringTool.cxx.
82 std::vector<float> chargeList;
83 if (calibData) chargeList.reserve(cluster.ids.size());
99 for (
size_t i = 0;
i < cluster.ids.size();
i++) {
111 int tot = cluster.tots.at(
i);
114 std::array<InDetDD::PixelDiodeTree::CellIndexType,2> diode_idx
123 return StatusCode::FAILURE;
137 chargeList.push_back(
charge);
150 chargeList.push_back(
charge);
158 rowmax_diode = si_param;
162 rowmin_diode = si_param;
166 colmax_diode = si_param;
170 colmin_diode = si_param;
179 pos_acc +=
charge * si_param.position();
182 pos_acc += si_param.position();
192 const int colWidth = colmax - colmin + 1;
193 const int rowWidth = rowmax - rowmin + 1;
195 double etaWidth = colmax_diode.xEtaMax() - colmin_diode.xEtaMin();
196 double phiWidth = rowmax_diode.xPhiMax() - rowmin_diode.xPhiMin();
204 double Ax[3] = {
T(0,0),
T(1,0),
T(2,0)};
205 double Ay[3] = {
T(0,1),
T(1,1),
T(2,1)};
206 double R [3] = {
T(0,3),
T(1,3),
T(2,3)};
209 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]);
212 float width0, width1;
220 width1 = etaWidth / colWidth;
225 Eigen::Matrix<float,2,1> localPosition(locpos.x(), locpos.y());
227 localCovariance(0, 0) = width0 * width0 / 12.0f;
228 localCovariance(1, 1) = width1 * width1 / 12.0f;
230 xaodcluster.setMeasurement<2>(moduleHash, localPosition, localCovariance);
231 xaodcluster.setIdentifier( cluster.ids.front() );
232 xaodcluster.setRDOlist(std::move(cluster.ids));
233 xaodcluster.globalPosition() = globalPos.cast<
float>();
235 xaodcluster.setToTlist(std::move(cluster.tots));
237 xaodcluster.setChargelist(std::move(chargeList));
238 xaodcluster.setLVL1A(cluster.lvl1min);
239 xaodcluster.setChannelsInPhiEta(rowWidth,colWidth);
240 xaodcluster.setWidthInEta(
static_cast<float>(etaWidth));
241 xaodcluster.setIsSplit(
false);
242 xaodcluster.setSplitProbabilities(0.0, 0.0);
244 return StatusCode::SUCCESS;
◆ makeClusters()
Definition at line 275 of file PixelClusteringTool.cxx.
286 calibData = calibDataHandle.
cptr();
290 return StatusCode::FAILURE;
302 for (
typename IPixelClusteringTool::Cluster&
cl :
clusters) {
314 return StatusCode::SUCCESS;
◆ unpackRDOs()
Definition at line 318 of file PixelClusteringTool.cxx.
325 CellCollection
cells;
329 for (
const auto *
const rdo : RDOs) {
331 std::array<InDetDD::PixelDiodeTree::CellIndexType,2> diode_idx
339 if (not pixelDetElStatus.isChipGood(idHash, fe)) {
343 const int lvl1 = rdo->getLVL1A();
344 const int tot = rdo->getToT();
353 std::optional<Identifier> gangedID =
isGanged(rdoID, element);
354 if (gangedID.has_value()) {
359 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_isITk
| Gaudi::Property<bool> ActsTrk::PixelClusteringTool::m_isITk {this, "isITk", true, "True if running in ITk"} |
|
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)
Identifier wafer_id(int barrel_ec, int layer_disk, int phi_module, int eta_module) const
For a single crystal.
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.
IdentifierHash wafer_hash(Identifier wafer_id) const
wafer hash from id
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()