|
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 47 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 224 of file PixelClusteringTool.cxx.
230 if (element ==
nullptr)
231 return StatusCode::FAILURE;
233 std::vector<InDet::UnpackedPixelRDO>
cells =
234 m_pixelRDOTool->getUnpackedPixelRDOs(RDOs, pixelID, element, ctx);
237 Acts::Ccl::createClusters<CellCollection, ClusterCollection, 2>
240 std::size_t previousSizeContainer = container.
size();
242 std::vector<xAOD::PixelCluster*> toAddCollection;
243 toAddCollection.reserve(
clusters.size());
246 container.
insert(container.
end(), toAddCollection.begin(), toAddCollection.end());
253 return StatusCode::SUCCESS;
◆ initialize()
StatusCode ActsTrk::PixelClusteringTool::initialize |
( |
| ) |
|
|
overridevirtual |
◆ makeCluster()
Definition at line 49 of file PixelClusteringTool.cxx.
58 calibData = calibDataHandle.cptr();
67 std::vector<float> chargeList;
68 if (calibData) chargeList.reserve(cluster.ids.size());
80 bool hasGanged =
false;
82 for (
size_t i = 0;
i < cluster.ids.size();
i++) {
84 hasGanged = hasGanged ||
87 int tot = cluster.tots.at(
i);
100 charge = tot/8.0*(8000.0-1200.0)+1200.0;
102 chargeList.push_back(
charge);
109 }
else if (
row == rowmax) {
116 }
else if (
row == rowmin) {
124 }
else if (
col == colmax) {
131 }
else if (
col == colmin) {
139 pos_acc += tot *
pos;
154 if(qRowMin + qRowMax > 0) omegax = qRowMax/(qRowMin + qRowMax);
155 if(qColMin + qColMax > 0) omegay = qColMax/(qColMin + qColMax);
158 const int colWidth = colmax - colmin + 1;
159 const int rowWidth = rowmax - rowmin + 1;
170 double Ax[3] = {
T(0,0),
T(1,0),
T(2,0)};
171 double Ay[3] = {
T(0,1),
T(1,1),
T(2,1)};
172 double R [3] = {
T(0,3),
T(1,3),
T(2,3)};
175 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]);
178 float width0, width1;
181 width0 = siWidth.phiR();
182 width1 = siWidth.z();
185 width0 = siWidth.phiR() / siWidth.colRow().x();
186 width1 = siWidth.z() / siWidth.colRow().y();
190 errorMatrix.setIdentity();
192 errorMatrix.fillSymmetric(0,0, width0 * width0 / 12.0);
193 errorMatrix.fillSymmetric(1,1, width1 * width1 / 12.0);
198 Eigen::Matrix<float,2,1> localPosition(locpos.x(), locpos.y());
200 localCovariance(0, 0) = errorMatrix(0, 0);
201 localCovariance(1, 1) = errorMatrix(1, 1);
203 xaodcluster.setMeasurement<2>(idHash, localPosition, localCovariance);
205 xaodcluster.setRDOlist(cluster.ids);
206 xaodcluster.globalPosition() = globalPos.cast<
float>();
207 xaodcluster.setToTlist(cluster.tots);
209 xaodcluster.setChargelist(chargeList);
211 xaodcluster.setLVL1A(cluster.lvl1min);
212 xaodcluster.setChannelsInPhiEta(siWidth.colRow()[0],
213 siWidth.colRow()[1]);
214 xaodcluster.setWidthInEta(
static_cast<float>(siWidth.widthPhiRZ()[1]));
215 xaodcluster.setOmegas(omegax, omegay);
216 xaodcluster.setIsSplit(
false);
217 xaodcluster.setSplitProbabilities(0.0, 0.0);
219 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 91 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 85 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
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
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.
bool empty() const
Test if the key is blank.
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.
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.
IdentifierHash wafer_hash(Identifier wafer_id) const
wafer hash from id
Eigen::Affine3d Transform3D
virtual SiLocalPosition localPositionOfCell(const SiCellId &cellId) const
readout or diode id -> position.
int eta_index(const Identifier &id) 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.