ATLAS Offline Software
Loading...
Searching...
No Matches
InDet::MergedPixelsTool Class Referencefinal

#include <MergedPixelsTool.h>

Inheritance diagram for InDet::MergedPixelsTool:
Collaboration diagram for InDet::MergedPixelsTool:

Public Member Functions

 MergedPixelsTool (const std::string &type, const std::string &name, const IInterface *parent)
virtual ~MergedPixelsTool ()=default
virtual PixelClusterCollection * clusterize (const InDetRawDataCollection< PixelRDORawData > &RDOs, const PixelID &pixelID, DataPool< PixelCluster > *dataItemsPool, const EventContext &ctx) const override
PixelCluster makeCluster (const std::vector< Identifier > &group, const std::vector< int > &totgroup, const std::vector< int > &lvl1group, const InDetDD::SiDetectorElement *element, const PixelID &pixelID, int &clusterNumber, bool split, double splitProb1, double splitProb2, const PixelChargeCalibCondData *calibData, const PixelCalib::PixelOfflineCalibData *offlineCalibData, const EventContext &ctx) const
virtual StatusCode initialize () override
 Retrieve the necessary services in initialize.
virtual StatusCode finalize () override
 Statistics output.

Private Member Functions

 MergedPixelsTool ()
 MergedPixelsTool (const MergedPixelsTool &)
MergedPixelsTooloperator= (const MergedPixelsTool &)
void addClusterNumber (const int &r, const int &Ncluster, const std::vector< network > &connections, std::vector< UnpackedPixelRDO > &collectionID) const

Private Attributes

BooleanProperty m_addCorners {this, "AddCorners", true}
ToolHandle< ClusterMakerToolm_clusterMaker {this, "globalPosAlg", "InDet::ClusterMakerTool"}
ToolHandle< PixelRDOToolm_pixelRDOTool {this, "PixelRDOTool", "InDet::PixelRDOTool"}
SG::ReadCondHandleKey< PixelChargeCalibCondDatam_chargeDataKey {this, "PixelChargeCalibCondData", "PixelChargeCalibCondData", "Pixel charge calibration data"}
SG::ReadCondHandleKey< PixelCalib::PixelOfflineCalibDatam_clusterErrorKey {this, "PixelOfflineCalibData", "PixelOfflineCalibData", "Output key of pixel cluster"}
IntegerProperty m_posStrategy {this, "posStrategy", 0}
IntegerProperty m_errorStrategy {this, "errorStrategy", 1}
std::atomic_uint m_processedClusters {0}
 statistics output
std::atomic_bool m_printw {true}

Detailed Description

Definition at line 55 of file MergedPixelsTool.h.

Constructor & Destructor Documentation

◆ MergedPixelsTool() [1/3]

InDet::MergedPixelsTool::MergedPixelsTool ( const std::string & type,
const std::string & name,
const IInterface * parent )

Definition at line 35 of file MergedPixelsTool.cxx.

37 :
38 base_class(type, name, parent) {}

◆ ~MergedPixelsTool()

virtual InDet::MergedPixelsTool::~MergedPixelsTool ( )
virtualdefault

◆ MergedPixelsTool() [2/3]

InDet::MergedPixelsTool::MergedPixelsTool ( )
private

◆ MergedPixelsTool() [3/3]

InDet::MergedPixelsTool::MergedPixelsTool ( const MergedPixelsTool & )
private

Member Function Documentation

◆ addClusterNumber()

void InDet::MergedPixelsTool::addClusterNumber ( const int & r,
const int & Ncluster,
const std::vector< network > & connections,
std::vector< UnpackedPixelRDO > & collectionID ) const
private

Definition at line 458 of file MergedPixelsTool.cxx.

461 {
462 for(int i=0; i!=connections.at(r).NC; ++i) {
463 const int k = connections.at(r).CON.at(i);
464 if(collectionID.at(k).NCL < 0) {
465 collectionID.at(k).NCL = Ncluster;
466 addClusterNumber(k, Ncluster, connections, collectionID);
467 }
468 }
469 }
void addClusterNumber(const int &r, const int &Ncluster, const std::vector< network > &connections, std::vector< UnpackedPixelRDO > &collectionID) const
int r
Definition globals.cxx:22

◆ clusterize()

PixelClusterCollection * InDet::MergedPixelsTool::clusterize ( const InDetRawDataCollection< PixelRDORawData > & RDOs,
const PixelID & pixelID,
DataPool< PixelCluster > * dataItemsPool,
const EventContext & ctx ) const
overridevirtual

Definition at line 270 of file MergedPixelsTool.cxx.

274 {
275
276 const InDetDD::SiDetectorElement* element = m_pixelRDOTool->checkCollection(collection, ctx);
277 if (element == nullptr){
278 return nullptr;
279 }
280
281 std::vector<UnpackedPixelRDO> collectionID =
282 m_pixelRDOTool->getUnpackedPixelRDOs(collection, pixelID, element, ctx);
283
284 // Sort pixels in ascending columns order
285 //
286 if(collectionID.empty()) return nullptr;
287 if(collectionID.size() > 1) std::sort(collectionID.begin(),collectionID.end(),pixel_less);
288
289 // initialize the networks
290 //
291 std::vector<network> connections(collectionID.size());
292
293 // Network production
294 //
295 int collectionSize = collectionID.size();
296 // the maximum number of elements to save can be either 2 or 3
297 // m_addCorners == true requires saving the bottom (or top), the side and the corner connection for each pixel,
298 // otherwise you only save bottom (or top) and the side
299 int maxElements = m_addCorners ? 3 : 2;
300
301 // start looping on the pixels
302 // for each pixel you build the network connection accordingly to the 4- or 8-cells connections
303 for(int currentPixel = 0; currentPixel!=collectionSize-1; ++currentPixel) {
304 int NB = 0;
305 int row = collectionID.at(currentPixel).ROW;
306 int col = collectionID.at(currentPixel).COL;
307 //
308 auto & currentConnection = connections.at(currentPixel);
309 for(int otherPixel = currentPixel+1; otherPixel!=collectionSize; ++otherPixel) {
310 auto & otherConnection = connections.at(otherPixel);
311 int deltaCol = std::abs(collectionID.at(otherPixel).COL - col);
312 int deltaRow = std::abs(collectionID.at(otherPixel).ROW - row);
313 // break if you are too far way in columns, as these ones will be taken in the next iterations
314 if( deltaCol > 1) {
315 break;
316 }
317 // if you need the corners, you jump the next rows, as these ones will be taken in the next iterations
318 if ( m_addCorners and deltaRow > 1 ) {
319 continue;
320 }
321
322 // Two default cases are considered:
323 // 1) top/bottom connection (deltaCol=1 and deltaRow=0)
324 // 2) side connection (deltaCol=0 and deltaRow=1)
325 // In both cases the satisfied condition is:
326 // deltaRow+deltaCol = 1
327 //
328 // As an optional case (true by defaul) we save also add a corner connection:
329 // 3) corner connection (deltaCol=1 and deltaRow=1)
330
331 // this builds the single pixel connection and breaks if the max number of elements is reached:
332 if( (deltaCol+deltaRow) == 1 or (m_addCorners and deltaCol == 1 and deltaRow == 1) ) {
333 int NC1 = currentConnection.NC;
334 int NC2 = otherConnection.NC;
335 int maxPossible = currentConnection.CON.size() - 1; //both are the same
336 if ((NC1>maxPossible) or (NC2>maxPossible)){
337 std::string m="attempt to access connection array of dimension 8 at idx "+std::to_string(currentConnection.NC);
339 break;
340 } else {
341 currentConnection.CON.at(currentConnection.NC++) = otherPixel;
342 otherConnection.CON.at(otherConnection.NC++) = currentPixel ;
343 }
344 if(++NB==maxElements) {
345 break;
346 }
347 }
348 }
349 }
350
351 // Pixels clusterization
352 //
353 // Once the connections are built, the pixel clusterisation can start grouping together pixels
354 int Ncluster = 0;
355 for(int currentPixel=0; currentPixel!=collectionSize; ++currentPixel) {
356 if(collectionID.at(currentPixel).NCL < 0) {
357 collectionID.at(currentPixel).NCL = Ncluster;
358 addClusterNumber(currentPixel,Ncluster,connections,collectionID);
359 ++Ncluster;
360 }
361 }
362
363 // Clusters sort in Ncluster order
364 //
365 if(--collectionSize > 1) {
366 for(int i(1); i<collectionSize; ++i ) {
367 UnpackedPixelRDO U = collectionID.at(i+1);
368
369 int j(i);
370 while(collectionID.at(j).NCL > U.NCL) {
371 collectionID.at(j+1)=collectionID.at(j);
372 --j;
373 }
374 collectionID.at(j+1)=U;
375 }
376 }
377
378 // Make a new pixel cluster collection
379 //
380 const Identifier elementID = collection.identify();
381 const IdentifierHash idHash = collection.identifyHash();
382 PixelClusterCollection *clusterCollection = new PixelClusterCollection(idHash);
383 if(dataItemsPool){
384 clusterCollection->clear(SG::VIEW_ELEMENTS);
385 }
386 clusterCollection->setIdentifier(elementID);
387 clusterCollection->reserve(Ncluster);
388
389 std::vector<Identifier> DVid = {collectionID.at(0).ID };
390 std::vector<int> Totg = {collectionID.at(0).TOT};
391 std::vector<int> Lvl1 = {collectionID.at(0).LVL1};
392
393 int clusterNumber = 0;
394 int NCL0 = 0;
395
396 DVid.reserve(collectionID.back().NCL);
397 Totg.reserve(collectionID.back().NCL);
398 Lvl1.reserve(collectionID.back().NCL);
399
400 ++collectionSize;
401
402 //retrieve conddata
403 const PixelChargeCalibCondData *calibData = nullptr;
404 if (!m_chargeDataKey.empty()) {
405 SG::ReadCondHandle<PixelChargeCalibCondData> calibDataHandle(m_chargeDataKey, ctx);
406 calibData = *calibDataHandle;
407 }
408
409 const PixelCalib::PixelOfflineCalibData *offlineCalibData = nullptr;
410 if (!m_clusterErrorKey.empty()) {
411 SG::ReadCondHandle<PixelCalib::PixelOfflineCalibData> offlineCalibDataHandle(m_clusterErrorKey, ctx);
412 offlineCalibData = *offlineCalibDataHandle;
413 }
414
415 for(int i=1; i<=collectionSize; ++i) {
416 if(i!=collectionSize and collectionID.at(i).NCL==NCL0) {
417 DVid.push_back(collectionID.at(i).ID );
418 Totg.push_back(collectionID.at(i).TOT);
419 Lvl1.push_back(collectionID.at(i).LVL1);
420
421 } else {
422 // Cluster production
423 // no merging has been done;
425 PixelCluster* cluster = nullptr;
426 if (dataItemsPool) {
427 // data Item pool owns the element. The collection
428 // is view. Just move assign to it.
429 cluster = dataItemsPool->nextElementPtr();
430 (*cluster) =
431 makeCluster(DVid, Totg, Lvl1, element, pixelID, ++clusterNumber,
432 false, 0.0, 0.0, calibData, offlineCalibData,ctx);
433 } else {
434 // collection will own the element release
435 cluster = new PixelCluster();
436 (*cluster) =
437 makeCluster(DVid, Totg, Lvl1, element, pixelID, ++clusterNumber,
438 false, 0.0, 0.0, calibData, offlineCalibData,ctx);
439 }
440 // statistics output
441 cluster->setHashAndIndex(clusterCollection->identifyHash(),
442 clusterCollection->size());
443 clusterCollection->push_back(cluster);
444
445 // Preparation for next cluster
446 if (i!=collectionSize) {
447 NCL0 = collectionID.at(i).NCL ;
448 DVid.clear(); DVid = {collectionID.at(i).ID };
449 Totg.clear(); Totg = {collectionID.at(i).TOT};
450 Lvl1.clear(); Lvl1 = {collectionID.at(i).LVL1};
451 }
452 }
453 }
454
455 return clusterCollection;
456 }
#define ATH_MSG_WARNING(x)
pointer nextElementPtr()
obtain the next available element in pool by pointer pool is resized if its limit has been reached On...
std::atomic_uint m_processedClusters
statistics output
ToolHandle< PixelRDOTool > m_pixelRDOTool
PixelCluster makeCluster(const std::vector< Identifier > &group, const std::vector< int > &totgroup, const std::vector< int > &lvl1group, const InDetDD::SiDetectorElement *element, const PixelID &pixelID, int &clusterNumber, bool split, double splitProb1, double splitProb2, const PixelChargeCalibCondData *calibData, const PixelCalib::PixelOfflineCalibData *offlineCalibData, const EventContext &ctx) const
SG::ReadCondHandleKey< PixelCalib::PixelOfflineCalibData > m_clusterErrorKey
SG::ReadCondHandleKey< PixelChargeCalibCondData > m_chargeDataKey
row
Appending html table to final .html summary file.
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
PixelCluster_v1 PixelCluster
Define the version of the pixel cluster class.

◆ finalize()

StatusCode InDet::MergedPixelsTool::finalize ( )
overridevirtual

Statistics output.

Definition at line 52 of file MergedPixelsTool.cxx.

53 {
54
55 ATH_MSG_DEBUG("------------------- Clusterization Statistics ------------------------");
56 ATH_MSG_DEBUG("-- # Processed Pixel Clusters : " << m_processedClusters);
57 ATH_MSG_DEBUG("----------------------------------------------------------------------");
58 return StatusCode::SUCCESS;
59 }
#define ATH_MSG_DEBUG(x)

◆ initialize()

StatusCode InDet::MergedPixelsTool::initialize ( )
overridevirtual

Retrieve the necessary services in initialize.

Definition at line 41 of file MergedPixelsTool.cxx.

42 {
43 ATH_CHECK(m_clusterMaker.retrieve());
44 ATH_CHECK(m_pixelRDOTool.retrieve());
47
48 return StatusCode::SUCCESS;
49 }
#define ATH_CHECK
Evaluate an expression and check for errors.
ToolHandle< ClusterMakerTool > m_clusterMaker

◆ makeCluster()

PixelCluster InDet::MergedPixelsTool::makeCluster ( const std::vector< Identifier > & group,
const std::vector< int > & totgroup,
const std::vector< int > & lvl1group,
const InDetDD::SiDetectorElement * element,
const PixelID & pixelID,
int & clusterNumber,
bool split,
double splitProb1,
double splitProb2,
const PixelChargeCalibCondData * calibData,
const PixelCalib::PixelOfflineCalibData * offlineCalibData,
const EventContext & ctx ) const

Definition at line 74 of file MergedPixelsTool.cxx.

86 {
87 ATH_MSG_VERBOSE("makeCluster called, number " << clusterNumber);
88
89 const Identifier elementID = element->identify();
90 const InDetDD::PixelModuleDesign* design
91 (dynamic_cast<const InDetDD::PixelModuleDesign*>(&element->design()));
92 if (not design){
93 throw std::runtime_error( "Wrong design at MergedPixelsTool");
94 }
95 int rowMin = int(2*(design->width()/design->phiPitch()))+1;
96 int rowMax = 0;
97 int colMin = int(2*(design->length()/design->etaPitch()))+1;
98 int colMax = 0;
99 int qRowMin = 0; int qRowMax = 0;
100 int qColMin = 0; int qColMax = 0;
101 int lvl1min = 15; // lvl1 of a cluster is the minimum of the lvl1 of the hits
102
103 InDetDD::SiLocalPosition sumOfPositions(0,0,0);
104 std::vector<Identifier> DVid;
105 DVid.reserve( group.size() );
106 std::vector<Identifier>::const_iterator rdosBegin = group.begin();
107 std::vector<Identifier>::const_iterator rdosEnd = group.end();
108 std::vector<int>::const_iterator tot = totgroup.begin();
109 std::vector<int>::const_iterator lvl1= lvl1group.begin();
110
111 // Flag to tag clusters with any ganged pixel
112 bool hasGanged = false;
113 for (; rdosBegin!= rdosEnd; ++rdosBegin) {
114 // compute cluster lvl1
115
116 if ( (*lvl1) < lvl1min ) lvl1min=(*lvl1);
117 ++lvl1;
118 // process identifier
119 const Identifier rId = *rdosBegin;
120 const int row = pixelID.phi_index(rId);
121 const int col = pixelID.eta_index(rId);
122 // flag if cluster contains at least a ganged pixel
123
124 hasGanged = hasGanged ||
125 InDet::PixelRDOTool::isGanged(rId, element).has_value();
126 DVid.push_back(rId);
127 InDetDD::SiLocalPosition siLocalPosition
128 (design->positionFromColumnRow(col,row));
129 sumOfPositions += siLocalPosition;
130
131 // check overflow for IBL
132 int realtot = *tot;
133
134 if (row == rowMin) qRowMin += realtot;
135 if (row < rowMin) {
136 rowMin = row;
137 qRowMin = realtot;
138 }
139
140 if (row == rowMax) qRowMax += realtot;
141 if (row > rowMax) {
142 rowMax = row;
143 qRowMax = realtot;
144 }
145
146 if (col == colMin) qColMin += realtot;
147 if (col < colMin) {
148 colMin = col;
149 qColMin = realtot;
150 }
151
152 if (col == colMax) qColMax += realtot;
153 if (col > colMax) {
154 colMax = col;
155 qColMax = realtot;
156 }
157 ++tot;
158 }
159
160 const int numberOfPixels = group.size();
161 InDetDD::SiLocalPosition centroid(sumOfPositions/numberOfPixels);
162 const Identifier id = element->identifierOfPosition(centroid);
163
164 const int colWidth = colMax-colMin+1;
165 const int rowWidth = rowMax-rowMin+1;
166
167 // Compute eta for charge interpolation correction (if required)
168 // Two pixels may have tot=0 (very rarely, hopefully)
169 float etaRow = -1;
170 float etaCol = -1;
171 if(qRowMin+qRowMax > 0) etaRow = qRowMax/float(qRowMin+qRowMax);
172 if(qColMin+qColMax > 0) etaCol = qColMax/float(qColMin+qColMax);
173
174 double etaWidth = design->widthFromColumnRange(colMin, colMax);
175 double phiWidth = design->widthFromRowRange(rowMin, rowMax);
176 SiWidth siWidth(Amg::Vector2D(rowWidth,colWidth), Amg::Vector2D(phiWidth,etaWidth) );
177
178 // Charge interpolation. Very rough guess (one can do better with
179 // candidate track information later) TL
180 if(m_posStrategy == 1 && !hasGanged && etaRow>0 && etaCol > 0){
181 // width of the region of charge sharing
182 // For disks assume normal incidence: delta is small, due to diffusion
183 // of drifting charges in silicon
184 // For barrel, assume 10 deg. incidence in Rphi, in z compute from
185 // pseudorapidity
186 // this may be improved with better parameterization, but it is
187 // probably better to use candidate track information later in
188 // reconstruction. TL
189 // Values are made dependent on the sensor thickness to accomodate
190 // different sensors layout. AA
191 float deltax = 0;
192 float deltay = 0;
193 const float sensorThickness = element->thickness();
194 Amg::Vector3D globalPos = element->globalPosition(centroid);
195 InDetDD::SiLocalPosition totCorrection(0,0,0);
196 if(pixelID.is_barrel(elementID)) {
197 deltax = 30*micrometer*(sensorThickness/(250*micrometer));
198 deltay = sensorThickness*std::abs(globalPos.z())/globalPos.perp();
199 if(deltay > (design->etaPitch()) ) deltay = design->etaPitch();
200 } else {
201 deltax = 10*micrometer*std::sqrt(sensorThickness/(250*micrometer));
202 deltay = 10*micrometer*std::sqrt(sensorThickness/(250*micrometer));
203 }
204 InDetDD::SiLocalPosition pos1 = design->positionFromColumnRow(colMin,rowMin);
205 InDetDD::SiLocalPosition pos2 = design->positionFromColumnRow(colMax,rowMin);
206 InDetDD::SiLocalPosition pos3 = design->positionFromColumnRow(colMin,rowMax);
207 InDetDD::SiLocalPosition pos4 = design->positionFromColumnRow(colMax,rowMax);
208 centroid = 0.25*(pos1+pos2+pos3+pos4)+
209 InDetDD::SiLocalPosition(deltay*(etaCol-0.5),deltax*(etaRow-0.5),0.);
210 ATH_MSG_VERBOSE("Barrel cluster with global position r= " << globalPos.perp() << " and z = " << globalPos.z());
211 ATH_MSG_VERBOSE("deltax = " << deltax << " deltay = " << deltay);
212
213 }
214 if(m_posStrategy == 10 && !hasGanged && etaRow>0 && etaCol > 0){
215 // recFlag == 10 (CTB simulation)
216 // use parametrization studied on CTB data by I. Reisinger (Dortmund)
217 if (m_printw) {
218 ATH_MSG_ERROR("Detected position strategy = 10, this is an obsolete setting for CTB analysis and is not supported anymore since Athena 15.4.0");
219 ATH_MSG_ERROR("...reverting to default setting: position strategy = 0");
220 m_printw=false;
221 }
222 }
223 // Endcap SR1 Cosmics
224 if(m_posStrategy == 20 && !hasGanged && etaRow>0 && etaCol > 0){
225 ATH_MSG_VERBOSE("Endcap cosmics simulation");
226 const double deltax = 35*micrometer;
227 const double deltay = 35*micrometer;
228 InDetDD::SiLocalPosition pos1 =
229 design->positionFromColumnRow(colMin,rowMin);
230 InDetDD::SiLocalPosition pos2 =
231 design->positionFromColumnRow(colMax,rowMin);
232 InDetDD::SiLocalPosition pos3 =
233 design->positionFromColumnRow(colMin,rowMax);
234 InDetDD::SiLocalPosition pos4 =
235 design->positionFromColumnRow(colMax,rowMax);
236 centroid = 0.25*(pos1+pos2+pos3+pos4)+
237 InDetDD::SiLocalPosition(deltay*(etaCol-0.5),
238 deltax*(etaRow-0.5),0.);
239 }
240
241
242 Amg::Vector2D position(centroid.xPhi(),centroid.xEta());
243
244 ATH_MSG_VERBOSE("Cluster ID =" << id);
245 ATH_MSG_VERBOSE("Cluster width (eta x phi) = " << colWidth
246 << " x " << rowWidth);
247 ATH_MSG_VERBOSE("Cluster width (eta x phi) = " << etaWidth
248 << " x " << phiWidth);
249 ATH_MSG_VERBOSE("Cluster local position (eta,phi) = "
250 << (position)[0] << " "
251 << (position)[1]);
252
253 if (!m_clusterMaker) {
254 return PixelCluster(id, position, std::move(DVid), lvl1min,
255 std::vector<int>(totgroup), siWidth, element,
256 Amg::MatrixX{});
257 } else {
258 return m_clusterMaker->pixelCluster(
259 id, position, std::move(DVid), lvl1min, std::vector<int>(totgroup),
260 siWidth, element, hasGanged, m_errorStrategy, pixelID, split,
261 splitProb1, splitProb2, calibData, offlineCalibData,ctx);
262 }
263 }
#define ATH_MSG_ERROR(x)
#define ATH_MSG_VERBOSE(x)
virtual const SiDetectorDesign & design() const override final
access to the local description (inline):
HepGeom::Point3D< double > globalPosition(const HepGeom::Point3D< double > &localPos) const
transform a reconstruction local position into a global position (inline):
virtual Identifier identify() const override final
identifier of this detector element (inline)
Identifier identifierOfPosition(const Amg::Vector2D &localPos) const
Full identifier of the cell for a given position: assumes a raw local position (no Lorentz shift)
IntegerProperty m_errorStrategy
IntegerProperty m_posStrategy
static std::optional< Identifier > isGanged(const Identifier &rdoID, const InDetDD::SiDetectorElement *element)
int eta_index(const Identifier &id) const
Definition PixelID.h:645
int phi_index(const Identifier &id) const
Definition PixelID.h:639
bool is_barrel(const Identifier &id) const
Test for barrel - WARNING: id MUST be pixel id, otherwise answer is not accurate. Use SiliconID for g...
Definition PixelID.h:586
std::vector< std::string > split(const std::string &s, const std::string &t=":")
Definition hcg.cxx:177
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Eigen::Matrix< double, 2, 1 > Vector2D
Eigen::Matrix< double, 3, 1 > Vector3D

◆ operator=()

MergedPixelsTool & InDet::MergedPixelsTool::operator= ( const MergedPixelsTool & )
private

Member Data Documentation

◆ m_addCorners

BooleanProperty InDet::MergedPixelsTool::m_addCorners {this, "AddCorners", true}
private

Definition at line 118 of file MergedPixelsTool.h.

118{this, "AddCorners", true};

◆ m_chargeDataKey

SG::ReadCondHandleKey<PixelChargeCalibCondData> InDet::MergedPixelsTool::m_chargeDataKey {this, "PixelChargeCalibCondData", "PixelChargeCalibCondData", "Pixel charge calibration data"}
private

Definition at line 123 of file MergedPixelsTool.h.

123{this, "PixelChargeCalibCondData", "PixelChargeCalibCondData", "Pixel charge calibration data"};

◆ m_clusterErrorKey

SG::ReadCondHandleKey<PixelCalib::PixelOfflineCalibData> InDet::MergedPixelsTool::m_clusterErrorKey {this, "PixelOfflineCalibData", "PixelOfflineCalibData", "Output key of pixel cluster"}
private

Definition at line 124 of file MergedPixelsTool.h.

124{this, "PixelOfflineCalibData", "PixelOfflineCalibData", "Output key of pixel cluster"};

◆ m_clusterMaker

ToolHandle<ClusterMakerTool> InDet::MergedPixelsTool::m_clusterMaker {this, "globalPosAlg", "InDet::ClusterMakerTool"}
private

Definition at line 120 of file MergedPixelsTool.h.

120{this, "globalPosAlg", "InDet::ClusterMakerTool"};

◆ m_errorStrategy

IntegerProperty InDet::MergedPixelsTool::m_errorStrategy {this, "errorStrategy", 1}
private

Definition at line 128 of file MergedPixelsTool.h.

128{this, "errorStrategy", 1};

◆ m_pixelRDOTool

ToolHandle<PixelRDOTool> InDet::MergedPixelsTool::m_pixelRDOTool {this, "PixelRDOTool", "InDet::PixelRDOTool"}
private

Definition at line 121 of file MergedPixelsTool.h.

121{this, "PixelRDOTool", "InDet::PixelRDOTool"};

◆ m_posStrategy

IntegerProperty InDet::MergedPixelsTool::m_posStrategy {this, "posStrategy", 0}
private

Definition at line 127 of file MergedPixelsTool.h.

127{this, "posStrategy", 0};

◆ m_printw

std::atomic_bool InDet::MergedPixelsTool::m_printw {true}
mutableprivate

Definition at line 131 of file MergedPixelsTool.h.

131{true};

◆ m_processedClusters

std::atomic_uint InDet::MergedPixelsTool::m_processedClusters {0}
mutableprivate

statistics output

Definition at line 130 of file MergedPixelsTool.h.

130{0};

The documentation for this class was generated from the following files: