Loading [MathJax]/extensions/tex2jax.js
 |
ATLAS Offline Software
|
#include <PixelClusteringTool.h>
|
ServiceHandle< InDetDD::IPixelReadoutManager > | m_pixelReadout |
|
ToolHandle< InDet::PixelRDOTool > | m_pixelRDOTool {this, "PixelRDOTool", "", "The Pixel RDO tool"} |
|
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", true} |
|
Gaudi::Property< bool > | m_broadErrors {this, "UseBroadErrors", false} |
|
Definition at line 23 of file PixelClusteringTool.h.
◆ Cell
◆ CellCollection
◆ ClusterCollection
◆ PixelClusteringTool()
ActsTrk::PixelClusteringTool::PixelClusteringTool |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
parent |
|
) |
| |
◆ clusterize()
Definition at line 238 of file PixelClusteringTool.cxx.
246 if (element ==
nullptr) {
248 return StatusCode::SUCCESS;
255 calibData = calibDataHandle.cptr();
259 return StatusCode::FAILURE;
264 std::vector<InDet::UnpackedPixelRDO>
cells =
265 m_pixelRDOTool->getUnpackedPixelRDOs(RDOs, pixelID, element, ctx);
276 Acts::Ccl::createClusters<CellCollection, ClusterCollection, 2>
280 std::size_t previousSizeContainer = container.
size();
282 std::vector<xAOD::PixelCluster*> toAddCollection;
283 toAddCollection.reserve(
clusters.size());
286 container.
insert(container.
end(), toAddCollection.begin(), toAddCollection.end());
298 *container[previousSizeContainer+
i]));
301 return StatusCode::SUCCESS;
◆ initialize()
StatusCode ActsTrk::PixelClusteringTool::initialize |
( |
| ) |
|
|
overridevirtual |
◆ makeCluster()
Definition at line 59 of file PixelClusteringTool.cxx.
72 std::vector<float> chargeList;
73 if (calibData) chargeList.reserve(
cluster.ids.size());
85 bool hasGanged =
false;
93 for (
size_t i = 0;
i <
cluster.ids.size();
i++) {
100 hasGanged = hasGanged ||
112 int feValue = multiChip ?
m_pixelReadout->getFE(
id, moduleID, element) : 0;
121 charge = tot/8.0*(8000.0-1200.0)+1200.0;
123 chargeList.push_back(
charge);
130 }
else if (
row == rowmax) {
137 }
else if (
row == rowmin) {
145 }
else if (
col == colmax) {
152 }
else if (
col == colmin) {
160 pos_acc += tot *
pos;
175 if(qRowMin + qRowMax > 0) omegax = qRowMax/(qRowMin + qRowMax);
176 if(qColMin + qColMax > 0) omegay = qColMax/(qColMin + qColMax);
179 const int colWidth = colmax - colmin + 1;
180 const int rowWidth = rowmax - rowmin + 1;
191 double Ax[3] = {
T(0,0),
T(1,0),
T(2,0)};
192 double Ay[3] = {
T(0,1),
T(1,1),
T(2,1)};
193 double R [3] = {
T(0,3),
T(1,3),
T(2,3)};
196 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]);
199 float width0, width1;
202 width0 = siWidth.phiR();
203 width1 = siWidth.z();
206 width0 = siWidth.phiR() / siWidth.colRow().x();
207 width1 = siWidth.z() / siWidth.colRow().y();
212 Eigen::Matrix<float,2,1> localPosition(locpos.x(), locpos.y());
214 localCovariance(0, 0) = width0 * width0 / 12.0;
215 localCovariance(1, 1) = width1 * width1 / 12.0;
217 xaodcluster.setMeasurement<2>(moduleHash, localPosition, localCovariance);
219 xaodcluster.setRDOlist(std::move(
cluster.ids));
220 xaodcluster.globalPosition() = globalPos.cast<
float>();
222 xaodcluster.setToTlist(std::move(
cluster.tots));
224 xaodcluster.setChargelist(std::move(chargeList));
225 xaodcluster.setLVL1A(
cluster.lvl1min);
226 xaodcluster.setChannelsInPhiEta(siWidth.colRow()[0],
227 siWidth.colRow()[1]);
228 xaodcluster.setWidthInEta(
static_cast<float>(siWidth.widthPhiRZ()[1]));
229 xaodcluster.setOmegas(omegax, omegay);
230 xaodcluster.setIsSplit(
false);
231 xaodcluster.setSplitProbabilities(0.0, 0.0);
233 return StatusCode::SUCCESS;
◆ 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", "ITkPixelChargeCalibCondData",
"Pixel charge calibration data"}
Definition at line 69 of file PixelClusteringTool.h.
◆ m_pixelLorentzAngleTool
ToolHandle< ISiLorentzAngleTool > ActsTrk::PixelClusteringTool::m_pixelLorentzAngleTool {this, "PixelLorentzAngleTool", "", "Tool to retreive Lorentz angle of Pixel"} |
|
private |
◆ m_pixelRDOTool
ToolHandle< InDet::PixelRDOTool > ActsTrk::PixelClusteringTool::m_pixelRDOTool {this, "PixelRDOTool", "", "The Pixel RDO tool"} |
|
private |
◆ m_pixelReadout
Initial value:{this, "PixelReadoutManager", "ITkPixelReadoutManager",
"Pixel readout manager" }
Definition at line 63 of file PixelClusteringTool.h.
◆ m_useWeightedPos
Gaudi::Property<bool> ActsTrk::PixelClusteringTool::m_useWeightedPos {this, "UseWeightedPosition", true} |
|
private |
The documentation for this class was generated from the following files:
Identifier identifierOfPosition(const Amg::Vector2D &localPos) const
Full identifier of the cell for a given position: assumes a raw local position (no Lorentz shift)
int phi_index(const Identifier &id) const
double widthFromRowRange(const int rowMin, const int rowMax) const
Method to calculate phi width from a row range.
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.
virtual IdentifierHash identifyHash() const override final
identifier hash (inline)
virtual SiCellId cellIdFromIdentifier(const Identifier &identifier) const override final
SiCellId from Identifier.
double widthFromColumnRange(const int colMin, const int colMax) const
Method to calculate eta width from a column range.
int numberOfCircuits() const
Total number of circuits:
Eigen::Affine3d Transform3D
virtual SiLocalPosition localPositionOfCell(const SiCellId &cellId) const
readout or diode id -> position.
int eta_index(const Identifier &id) const
CalibrationStrategy getCalibrationStrategy(unsigned int moduleHash) const
iterator insert(iterator position, value_type pElem)
Add a new element to the collection.
double R(const INavigable4Momentum *p1, const double v_eta, const double v_phi)
float computeTotalCharge(const SG::AuxElement &cluster)
double charge(const T &p)
StatusCode initialize(bool used=true)
Eigen::Matrix< double, 3, 1 > Vector3D
PixelReadoutTechnology getReadoutTechnology() const
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
float getCharge(InDetDD::PixelDiodeType type, unsigned int moduleHash, unsigned int FE, float ToT) const
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.
size_type size() const noexcept
Returns the number of elements in the collection.
virtual Identifier identify() const override final
identifier of this detector element (inline)