|
ATLAS Offline Software
|
Go to the documentation of this file.
7 #include <Acts/Clusterization/Clusterization.hpp>
15 #include <unordered_set>
25 cl.tots.push_back(
cell.TOT);
26 if (
cell.LVL1 <
cl.lvl1min)
40 return StatusCode::SUCCESS;
44 const std::string&
type,
const std::string&
name,
const IInterface*
parent)
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 ||
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) {
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);
219 return StatusCode::SUCCESS;
226 const EventContext& ctx,
227 ClusterContainer& container)
const
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;
Identifier identifierOfPosition(const Amg::Vector2D &localPos) const
Full identifier of the cell for a given position: assumes a raw local position (no Lorentz shift)
void setTotalCharge(float totalCharge)
Sets the total charge.
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
const Amg::Vector2D & widthPhiRZ() const
void clusterAddCell(PixelClusteringTool::Cluster &cl, const PixelClusteringTool::Cell &cell)
int computeTotalToT(const SG::AuxElement &cluster)
Trk::Surface & surface()
Element Surface.
value_type get_compact() const
Get the compact id.
void setRDOlist(const std::vector< Identifier > &rdolist)
Sets the list of identifiers of the channels building the cluster.
void setChargelist(const std::vector< float > &charges)
Sets the list of charges of the channels building the cluster.
void setIsSplit(bool isSplit)
Sets if the cluster is split or not.
void setWidthInEta(float widthInEta)
Sets the width of the cluster in eta (y) direction.
bool empty() const
Test if the key is blank.
void setTotalToT(int totalToT)
Sets the total ToT.
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.
void setSplitProbabilities(float prob1, float prob2)
Sets the splitting probabilities for the cluster.
void setIdentifier(const DetectorIdentType measId)
Sets the full Identifier of the measurement.
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
::StatusCode StatusCode
StatusCode definition for legacy code.
Eigen::Affine3d Transform3D
virtual SiLocalPosition localPositionOfCell(const SiCellId &cellId) const
readout or diode id -> position.
void setToTlist(const std::vector< int > &tots)
Sets the list of ToT of the channels building the cluster.
int eta_index(const Identifier &id) const
void setLVL1A(int lvl1a)
Sets the LVL1 accept.
float computeTotalCharge(const SG::AuxElement &cluster)
ConstVectorMap< 3 > globalPosition() const
Returns the global position of the pixel cluster.
double charge(const T &p)
void setOmegas(float omegax, float omegay)
Sets omegax and omegay, i.e.
StatusCode initialize(bool used=true)
Eigen::Matrix< double, 3, 1 > Vector3D
PixelReadoutTechnology getReadoutTechnology() const
void setMeasurement(const DetectorIDHashType idHash, MeasVector< N > locPos, MeasMatrix< N > locCov)
Sets IdentifierHash, local position and local covariance of the measurement.
void setChannelsInPhiEta(int channelsInPhi, int channelsInEta)
Sets the dimensions of the cluster in numbers of channels in phi (x) and eta (y) directions.
const Amg::Vector2D & colRow() const
float getCharge(InDetDD::PixelDiodeType type, unsigned int moduleHash, unsigned int FE, float ToT) const
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
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()