Loading [MathJax]/extensions/tex2jax.js
 |
ATLAS Offline Software
|
Go to the documentation of this file.
7 #include <Acts/Clusterization/Clusterization.hpp>
14 #include <unordered_set>
31 static inline void clusterAddCell(PixelClusteringTool::Cluster&
cl,
34 cl.ids.push_back(
cell.ID.get_compact());
35 cl.tots.push_back(
cell.TOT);
36 if (
cell.LVL1 <
cl.lvl1min)
50 return StatusCode::SUCCESS;
54 const std::string&
type,
const std::string&
name,
const IInterface*
parent)
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 ||
104 int tot = cluster.tots.at(
i);
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));
222 xaodcluster.
setToTlist(std::move(cluster.tots));
225 xaodcluster.
setLVL1A(cluster.lvl1min);
233 return StatusCode::SUCCESS;
240 const EventContext& ctx,
241 ClusterContainer& container)
const
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;
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
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
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.
const std::string & key() const
Return the StoreGate ID for the referenced object.
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)
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.
::StatusCode StatusCode
StatusCode definition for legacy code.
int numberOfCircuits() const
Total number of circuits:
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
CalibrationStrategy getCalibrationStrategy(unsigned int moduleHash) 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()) ]
virtual Identifier identify() const override final
identifier of this detector element (inline)
const_pointer_type cptr()