|
ATLAS Offline Software
|
AlgTool for SCT_Clusterization. Input is from RDOs, assumed to be sorted. They are then scanned in order and neighbouring RDOs are grouped together.
More...
#include <SCT_ClusteringTool.h>
|
| SCT_ClusteringTool (const std::string &type, const std::string &name, const IInterface *parent) |
| Normal constructor for an AlgTool; 'properties' are also declared here. More...
|
|
virtual StatusCode | initialize () override |
| Retrieve the necessary services in initialize. More...
|
|
virtual | ~SCT_ClusteringTool ()=default |
| Defaul destructor. More...
|
|
SCT_ClusterCollection * | clusterize (const InDetRawDataCollection< SCT_RDORawData > &RDOs, const SCT_ID &idHelper, const InDet::SiDetectorElementStatus *sctDetElementStatus, SCTClusteringCache &cache, DataPool< SCT_Cluster > *dataItemsPool, const EventContext &ctx) const override |
| Clusterize method the SCT RDOs. This method is the main one of this class. More...
|
|
SCT_ClusterCollection * | fastClusterize (const InDetRawDataCollection< SCT_RDORawData > &RDOs, const SCT_ID &idHelper, const InDet::SiDetectorElementStatus *sctDetElementStatus, SCTClusteringCache &cache, DataPool< SCT_Cluster > *dataItemsPool, const EventContext &ctx) const |
| A new fast method originally implemented for ITk. More...
|
|
|
|
ToolHandle< IInDetConditionsTool > | m_conditionsTool |
|
ToolHandle< ClusterMakerTool > | m_clusterMaker |
|
ToolHandle< ISiLorentzAngleTool > | m_lorentzAngleTool |
|
|
IntegerProperty | m_errorStrategy {this, "errorStrategy", 1} |
|
BooleanProperty | m_checkBadChannels {this, "checkBadChannels", true} |
|
StringProperty | m_timeBinStr {this, "timeBins", ""} |
|
BooleanProperty | m_innermostBarrelX1X {this, "innermostBarrelX1X", false} |
|
BooleanProperty | m_innertwoBarrelX1X {this, "innertwoBarrelX1X", false} |
|
BooleanProperty | m_majority01X {this, "majority01X", false} |
|
BooleanProperty | m_useRowInformation {this, "useRowInformation", false} |
|
BooleanProperty | m_doFastClustering {this, "doFastClustering", true} |
|
|
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > | m_SCTDetEleCollKey |
|
SG::ReadHandleKey< InDet::SiDetectorElementStatus > | m_sctDetElStatus |
| Optional read handle to get status data to test whether a SCT detector element is good. More...
|
|
int | m_timeBinBits [3] {-1, -1, -1} |
| Time bin bits for timing requirement. More...
|
|
static void | addStripsToCluster (const Identifier &firstStripId, unsigned int nStrips, IdVec_t &clusterVector, const SCT_ID &idHelper) |
| Add strips to a cluster vector without checking for bad strips. More...
|
|
static DimensionAndPosition | clusterDimensions (int firstStrip, int lastStrip, const InDetDD::SiDetectorElement *element, const SCT_ID &idHelper) |
| Calculate the cluster position and width given the first and last strip numbers for this element. More...
|
|
static DimensionAndPosition | clusterDimensionsInclRow (int firstStrip, int lastStrip, int row, const InDetDD::SiDetectorElement *element, const InDetDD::SCT_ModuleSideDesign *design) |
| Calculate the cluster position and width given the first,last strip, and row numbers for this element for ITk. More...
|
|
void | addStripsToClusterWithChecks (const Identifier &firstStripId, unsigned int nStrips, IdVec_t &clusterVector, std::vector< IdVec_t > &idGroups, const SCT_ID &idHelper, const InDet::SiDetectorElementStatus *det_el_status, const EventContext &ctx) const |
| Add strips to a cluster vector checking for bad strips. More...
|
|
void | addStripsToClusterInclRows (const Identifier &firstStripId, unsigned int nStrips, IdVec_t &clusterVector, std::vector< IdVec_t > &idGroups, const SCT_ID &idHelper, const InDet::SiDetectorElementStatus *det_el_status, const EventContext &ctx) const |
| Add strips to a cluster vector including row variable for ITk. More...
|
|
IdVec_t | recluster (IdVec_t &clusterVector, std::vector< IdVec_t > &idGroups) const |
| Recluster the current vector, splitting on bad strips, and insert those new groups to the idGroups vector. More...
|
|
bool | isBad (const InDet::SiDetectorElementStatus *sctDetElStatus, const SCT_ID &sctID, const IdentifierHash &waferHash, const Identifier &stripId, const EventContext &ctx) const |
| In-class facade on the 'isGood' method for a strip identifier. More...
|
|
StatusCode | decodeTimeBins () |
| Convert time bin string to array of 3 bits. More...
|
|
StatusCode | decodeTimeBin (char timeBin, int &bit) const |
| Convert a single time bin char to an int, bit is modified. More...
|
|
AlgTool for SCT_Clusterization. Input is from RDOs, assumed to be sorted. They are then scanned in order and neighbouring RDOs are grouped together.
Definition at line 47 of file SCT_ClusteringTool.h.
◆ IdVec_t
◆ SCT_ClusteringTool()
InDet::SCT_ClusteringTool::SCT_ClusteringTool |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
parent |
|
) |
| |
Normal constructor for an AlgTool; 'properties' are also declared here.
Definition at line 55 of file SCT_ClusteringTool.cxx.
◆ ~SCT_ClusteringTool()
virtual InDet::SCT_ClusteringTool::~SCT_ClusteringTool |
( |
| ) |
|
|
virtualdefault |
◆ addStripsToCluster()
Add strips to a cluster vector without checking for bad strips.
Definition at line 174 of file SCT_ClusteringTool.cxx.
176 const unsigned int firstStripNumber(idHelper.
strip(firstStripId));
177 const unsigned int endStripNumber(firstStripNumber +
nStrips);
179 clusterVector.reserve(clusterVector.size() +
nStrips);
181 for (
unsigned int stripNumber(firstStripNumber); stripNumber not_eq endStripNumber; ++stripNumber) {
183 clusterVector.push_back(stripId);
◆ addStripsToClusterInclRows()
Add strips to a cluster vector including row variable for ITk.
Definition at line 233 of file SCT_ClusteringTool.cxx.
241 const unsigned int firstStripNumber(idHelper.
strip(firstStripId));
242 const unsigned int firstRowNumber(idHelper.
row(firstStripId));
243 const unsigned int endStripNumber(firstStripNumber +
nStrips);
247 clusterVector.reserve(clusterVector.size() +
nStrips);
249 unsigned int nBadStrips(0);
250 for (
unsigned int stripNumber(firstStripNumber); stripNumber not_eq endStripNumber; ++stripNumber) {
252 if (
isBad(det_el_status, idHelper, waferHash, stripId, ctx)) {
256 clusterVector.push_back(stripId);
260 if (clusterVector.size() == nBadStrips) {
261 clusterVector.
clear();
267 if (nBadStrips != 0) {
268 clusterVector=
recluster(clusterVector, idGroups);
◆ addStripsToClusterWithChecks()
Add strips to a cluster vector checking for bad strips.
Beware of corner cases: what if all strips are bad? the vector is empty? What if the last strip is bad and contiguous with the next group which is coming? What if its good and contiguous, but there are also some bad?
Definition at line 192 of file SCT_ClusteringTool.cxx.
200 const unsigned int firstStripNumber(idHelper.
strip(firstStripId));
201 const unsigned int endStripNumber(firstStripNumber +
nStrips);
205 clusterVector.reserve(clusterVector.size() +
nStrips);
208 unsigned int nBadStrips(0);
209 for (
unsigned int stripNumber(firstStripNumber); stripNumber not_eq endStripNumber; ++stripNumber) {
211 if (
isBad(det_el_status, idHelper, waferHash, stripId, ctx)) {
215 clusterVector.push_back(stripId);
219 if (clusterVector.size() == nBadStrips) {
220 clusterVector.
clear();
226 if (nBadStrips != 0) {
228 clusterVector=
recluster(clusterVector, idGroups);
◆ clusterDimensions()
Calculate the cluster position and width given the first and last strip numbers for this element.
Definition at line 765 of file SCT_ClusteringTool.cxx.
775 const double width((
static_cast<double>(
nStrips)/
static_cast<double>(
nStrips+1))*( lastStripPos.xPhi()-firstStripPos.xPhi()));
777 return SCT_ClusteringTool::DimensionAndPosition(centre,
width);
◆ clusterDimensionsInclRow()
Calculate the cluster position and width given the first,last strip, and row numbers for this element for ITk.
Definition at line 781 of file SCT_ClusteringTool.cxx.
786 const double stripPitch = design->
stripPitch();
793 return SCT_ClusteringTool::DimensionAndPosition(centre,
width);
◆ clusterize()
Clusterize method the SCT RDOs. This method is the main one of this class.
If clusters have been split due to bad strips, would require a whole lot of new logic to recalculate hitsInThirdTimeBin word - instead, just find when this is the case here, and set hitsInThirdTimeBin to zero later on
clusters had been split - recalculating HitsInThirdTimeBin too difficult to be worthwhile for this rare corner case..
Definition at line 306 of file SCT_ClusteringTool.cxx.
318 if (collection.empty()) {
324 std::vector<const SCT_RDORawData*> collectionCopy(collection.begin(), collection.end());
325 if (collection.size() not_eq 1)
std::sort(collectionCopy.begin(), collectionCopy.end(), strip_less_than());
329 cache.currentVector.clear();
330 cache.idGroups.clear();
331 cache.tbinGroups.clear();
334 unsigned int previousStrip(0);
338 const Identifier firstStripId(pRawData->identify());
339 const unsigned int nStrips(pRawData->getGroupSize());
340 const int thisStrip(idHelper.
strip(firstStripId));
345 if (not
adjacent(thisStrip, previousStrip) and not(cache.currentVector.empty())) {
348 cache.idGroups.push_back(cache.currentVector);
352 cache.idGroups.push_back(cache.currentVector);
354 cache.currentVector.clear();
357 cache.tbinGroups.push_back(hitsInThirdTimeBin);
358 hitsInThirdTimeBin =0;
363 bool passTiming(
true);
368 ATH_MSG_ERROR(
"Casting into SCT3_RawData failed. This is probably caused by use of an old RDO file.");
371 const int timeBin(pRawData3->getTimeBin());
372 std::bitset<3> timePattern(
static_cast<unsigned long>(timeBin));
378 if (passX1X and (not pass01X)) n11X++;
380 if ((
BEC==0) and (
layer==0) and passX1X) passTiming=
true;
381 else passTiming = pass01X;
383 if ((
BEC==0) and (
layer==0 or
layer==1) and passX1X) passTiming=
true;
384 else passTiming = pass01X;
397 for (
unsigned int iStrip=0; iStrip<
nStrips; iStrip++) {
398 if (stripCount < 16) hitsInThirdTimeBin |= (timePattern.test(0) << stripCount);
402 if (not cache.currentVector.empty()) {
404 previousStrip = idHelper.
strip(cache.currentVector.back());
409 if (not cache.currentVector.empty()) {
411 cache.idGroups.push_back(cache.currentVector);
412 cache.tbinGroups.push_back(hitsInThirdTimeBin);
413 hitsInThirdTimeBin=0;
418 const Identifier elementID(collection.identify());
423 if (not sctDetEleHandle.isValid() or sctDetEle==
nullptr) {
442 clusterCollection->setIdentifier(elementID);
443 clusterCollection->reserve(cache.idGroups.size());
455 const bool badStripInClusterOnThisModuleSide = (cache.idGroups.size() != cache.tbinGroups.size());
457 for (
IdVec_t& stripGroup: cache.idGroups) {
458 const int nStrips(stripGroup.size());
462 DimensionAndPosition clusterDim(dummyPos, 1.0);
465 const Amg::Vector2D localPos(clusterDim.centre.xPhi(), clusterDim.centre.xEta());
468 const Identifier clusterId(stripGroup.front());
469 if (!clusterId.is_valid())
ATH_MSG_VERBOSE(clusterId <<
" is invalid.");
472 const std::pair<InDetDD::SiLocalPosition, InDetDD::SiLocalPosition> ends(design->
endsOfStrip(clusterDim.centre));
473 const double stripLength(std::abs(ends.first.xEta()-ends.second.xEta()));
487 ? (
m_clusterMaker->sctCluster(clusterId, localPos, std::move(stripGroup),
489 : (
SCT_Cluster(clusterId, localPos, std::move(stripGroup), siWidth, element,
492 cluster->setHashAndIndex(clusterCollection->identifyHash(),
493 clusterCollection->size());
494 if (tbinIter != cache.tbinGroups.end()) {
495 cluster->setHitsInThirdTimeBin(*tbinIter);
499 if (badStripInClusterOnThisModuleSide) cluster->setHitsInThirdTimeBin(0);
500 clusterCollection->push_back(cluster);
503 return clusterCollection;
◆ decodeTimeBin()
StatusCode InDet::SCT_ClusteringTool::decodeTimeBin |
( |
char |
timeBin, |
|
|
int & |
bit |
|
) |
| const |
|
private |
Convert a single time bin char to an int, bit is modified.
Definition at line 82 of file SCT_ClusteringTool.cxx.
84 if (timeBin ==
'X') {bit = -1;
return StatusCode::SUCCESS;}
85 if (timeBin ==
'0') {bit = 0;
return StatusCode::SUCCESS;}
86 if (timeBin ==
'1') {bit = 1;
return StatusCode::SUCCESS;}
89 return StatusCode::FAILURE;
◆ decodeTimeBins()
StatusCode InDet::SCT_ClusteringTool::decodeTimeBins |
( |
| ) |
|
|
private |
Convert time bin string to array of 3 bits.
Definition at line 60 of file SCT_ClusteringTool.cxx.
69 return StatusCode::FAILURE;
79 return StatusCode::SUCCESS;
◆ fastClusterize()
A new fast method originally implemented for ITk.
Can be internally used in clusterize with m_doFastClustering=true.
Definition at line 506 of file SCT_ClusteringTool.cxx.
513 if (collection.empty())
return nullptr;
515 std::vector<const SCT_RDORawData*> collectionCopy(collection.begin(), collection.end());
517 if (collectionCopy.size() > 1)
std::sort(collectionCopy.begin(), collectionCopy.end(), strip_less_than());
519 cache.currentVector.clear();
520 cache.idGroups.clear();
521 cache.tbinGroups.clear();
523 unsigned int previousStrip = 0;
526 int previousRow = -1;
532 Identifier firstStripId = pRawData->identify();
535 unsigned int nStrips = pRawData->getGroupSize();
536 int thisStrip = idHelper.
strip(firstStripId);
542 if (not cache.currentVector.empty() and
548 cache.idGroups.push_back(cache.currentVector);
549 cache.currentVector.clear();
551 cache.tbinGroups.push_back(hitsInThirdTimeBin);
552 hitsInThirdTimeBin = 0;
561 ATH_MSG_ERROR(
"Casting into SCT3_RawData failed. This is probably caused by use of an old RDO file.");
566 std::bitset<3> timePattern(
static_cast<unsigned long>(timeBin));
568 bool passTiming =
true;
576 unsigned int nBadStrips(0);
577 unsigned int max_strip =
std::min(
static_cast<unsigned int>(thisStrip+
nStrips),
static_cast<unsigned int>(idHelper.
strip_max(waferId)+1) );
579 if (thisStrip+
nStrips > max_strip) {
581 <<
" !<= " << max_strip );
583 for (
unsigned int sn=thisStrip; sn < max_strip; ++sn) {
585 if (!
isBad(sctDetElStatus, idHelper, waferHash, stripId, ctx)) {
586 cache.currentVector.push_back(stripId);
588 cache.currentVector.push_back(badId);
591 if (stripCount < 16) {
592 hitsInThirdTimeBin = hitsInThirdTimeBin | (timePattern.test(0) << stripCount);
597 if (cache.currentVector.size() == nBadStrips) {
598 cache.currentVector.
clear();
599 }
else if (nBadStrips) {
600 cache.currentVector=
recluster(cache.currentVector, cache.idGroups);
604 if (not cache.currentVector.empty()) {
607 previousStrip = idHelper.
strip(cache.currentVector.back());
614 if (not cache.currentVector.empty()) {
615 cache.idGroups.push_back(cache.currentVector);
616 cache.tbinGroups.push_back(hitsInThirdTimeBin);
617 hitsInThirdTimeBin=0;
625 if (not sctDetEleHandle.isValid() or sctDetEle==
nullptr) {
636 if(design==
nullptr)
return nullptr;
640 clusterCollection->setIdentifier(elementID);
641 clusterCollection->reserve(cache.idGroups.size());
646 int clusterNumber = 0;
658 double iphipitch = 1./element->phiPitch();
661 bool badStripInClusterOnThisModuleSide = (cache.idGroups.size() != cache.tbinGroups.size());
668 COV11 = stripL*stripL*(1./12.);
671 for (; pGroup!=lastGroup; ++pGroup) {
673 double dnStrips =
static_cast<double>(
nStrips);
677 double width = stripPitch;
680 int row = idHelper.
row(clusterId);
684 centre = (centre+lastStripPos)*.5;
688 DimensionAndPosition clusterDim =
clusterDimensions(idHelper.
strip(pGroup->front()), idHelper.
strip(pGroup->back()), element, idHelper);
689 centre = clusterDim.centre;
690 width = clusterDim.width;
712 double V[4] = {
x*
x*(1./12.), 0., 0., COV11};
717 std::pair<InDetDD::SiLocalPosition, InDetDD::SiLocalPosition> ends(design->
endsOfStrip(centre));
718 stripL = std::abs(ends.first.xEta()-ends.second.xEta());
720 double w = element->phiPitch(localPos)*iphipitch;
721 double sn = element->sinStereoLocal(localPos);
724 double v0 = V[0]*
w*
w;
725 double v1 = stripL*stripL*(1./12.);
726 V[0] = cs2*
v0+sn2*v1;
727 V[1] = V[2] = sn*sqrt(cs2)*(
v0-v1);
728 V[3] = sn2*
v0+cs2*v1;
732 errorMatrix<<V[0],V[1],V[2],V[3];
739 (*cluster) =
SCT_Cluster{clusterId, locpos, std::move(*pGroup),
740 siWidth, element, std::move(errorMatrix)};
743 cluster =
new SCT_Cluster{clusterId, locpos, std::move(*pGroup),
744 siWidth, element, std::move(errorMatrix)};
747 cluster->setHashAndIndex(idHash, clusterNumber);
749 if (tbinIter != cache.tbinGroups.end()) {
750 cluster->setHitsInThirdTimeBin(*tbinIter);
756 if (badStripInClusterOnThisModuleSide) cluster->setHitsInThirdTimeBin(0);
758 clusterCollection->push_back(cluster);
761 return clusterCollection;
◆ initialize()
StatusCode InDet::SCT_ClusteringTool::initialize |
( |
| ) |
|
|
overridevirtual |
Retrieve the necessary services in initialize.
only one of m_majority01X, m_innermostBarrelX1X and m_innertwoBarrelX1X can be true - check if this is the case If none of them is true, m_timeBinStr is used.
m_sctDetElStatus.empty()
Definition at line 124 of file SCT_ClusteringTool.cxx.
128 ATH_MSG_DEBUG(
"Clustering has been asked to look at bad channel info");
145 int countTrueSettings(0);
149 if (countTrueSettings!=1) {
153 if (countTrueSettings==0) {
154 ATH_MSG_DEBUG(
"Timing requirement is not used for clustering");
156 ATH_MSG_FATAL(
"One and only one of m_majority01X, m_innermostBarrelX1X and m_innertwoBarrelX1X should be set to True!");
157 return StatusCode::FAILURE;
165 " is true and used for clustering");
171 return StatusCode::SUCCESS;
◆ isBad()
In-class facade on the 'isGood' method for a strip identifier.
Definition at line 203 of file SCT_ClusteringTool.h.
207 if (sctDetElStatus) {
208 const int strip_i{sctID.
strip(stripId)};
210 sctDetElStatus, sctDetElStatus->
isCellGood(waferHash.
value(), strip_i),
◆ recluster()
Recluster the current vector, splitting on bad strips, and insert those new groups to the idGroups vector.
recluster starts with a vector of Ids, some of which may be invalid due to them being bad strips, and a vector of these vectors.
The cluster vector referenced will be changed by this, as well as the idGroups
We recursively split the original clustervector, adding to idGroups as we go. It should eventually either return an empty cluster or a cluster of all good strips, to be inserted by the caller.
Definition at line 279 of file SCT_ClusteringTool.cxx.
284 const unsigned int numberOfBadStrips(
std::count(clusterVector.begin(), clusterVector.end(), invalidId));
287 if (numberOfBadStrips==0 or clusterVector.empty())
return clusterVector;
289 if (clusterVector.size() == numberOfBadStrips) {
290 clusterVector.clear();
291 return clusterVector;
299 if (pBadId != clusterVector.end()) clusterVector.erase(clusterVector.begin(), ++pBadId);
300 if (not subCluster.empty()) idGroups.push_back(subCluster);
301 return recluster(clusterVector, idGroups);
◆ testTimeBins()
bool InDet::SCT_ClusteringTool::testTimeBins |
( |
int |
timeBin | ) |
const |
|
private |
Definition at line 92 of file SCT_ClusteringTool.cxx.
97 const std::bitset<3> timePattern(
static_cast<unsigned long>(timeBin));
◆ testTimeBins01X()
bool InDet::SCT_ClusteringTool::testTimeBins01X |
( |
int |
timeBin | ) |
|
|
staticprivate |
Definition at line 101 of file SCT_ClusteringTool.cxx.
107 const std::bitset<3> timePattern(
static_cast<unsigned long>(timeBin));
108 if (timePattern.test(2)) pass=
false;
109 if (!timePattern.test(1)) pass=
false;
◆ testTimeBinsN()
bool InDet::SCT_ClusteringTool::testTimeBinsN |
( |
const std::bitset< 3 > & |
timePattern | ) |
const |
|
inlineprivate |
◆ testTimeBinsX1X()
bool InDet::SCT_ClusteringTool::testTimeBinsX1X |
( |
int |
timeBin | ) |
|
|
staticprivate |
Definition at line 113 of file SCT_ClusteringTool.cxx.
119 const std::bitset<3> timePattern(
static_cast<unsigned long>(timeBin));
120 if (!timePattern.test(1)) pass=
false;
◆ m_checkBadChannels
BooleanProperty InDet::SCT_ClusteringTool::m_checkBadChannels {this, "checkBadChannels", true} |
|
private |
◆ m_clusterMaker
Initial value:{this, "globalPosAlg",
"InDet::ClusterMakerTool"}
Definition at line 89 of file SCT_ClusteringTool.h.
◆ m_conditionsTool
Initial value:{
this, "conditionsTool",
"SCT_ConditionsSummaryTool/InDetSCT_ConditionsSummaryTool",
"Tool to retrieve SCT Conditions summary"}
Definition at line 85 of file SCT_ClusteringTool.h.
◆ m_doFastClustering
BooleanProperty InDet::SCT_ClusteringTool::m_doFastClustering {this, "doFastClustering", true} |
|
private |
◆ m_errorStrategy
IntegerProperty InDet::SCT_ClusteringTool::m_errorStrategy {this, "errorStrategy", 1} |
|
private |
◆ m_innermostBarrelX1X
BooleanProperty InDet::SCT_ClusteringTool::m_innermostBarrelX1X {this, "innermostBarrelX1X", false} |
|
private |
◆ m_innertwoBarrelX1X
BooleanProperty InDet::SCT_ClusteringTool::m_innertwoBarrelX1X {this, "innertwoBarrelX1X", false} |
|
private |
◆ m_lorentzAngleTool
Initial value:{
this, "LorentzAngleTool", "SiLorentzAngleTool/SCTLorentzAngleTool",
"Tool to retreive Lorentz angle of SCT"}
Definition at line 91 of file SCT_ClusteringTool.h.
◆ m_majority01X
BooleanProperty InDet::SCT_ClusteringTool::m_majority01X {this, "majority01X", false} |
|
private |
◆ m_SCTDetEleCollKey
Initial value:{this, "SCTDetEleCollKey",
"SCT_DetectorElementCollection",
"Key of SiDetectorElementCollection for SCT. "
"Necessary for alignment"}
Definition at line 115 of file SCT_ClusteringTool.h.
◆ m_sctDetElStatus
Initial value:{
this, "SCTDetElStatus", "", "Key of SiDetectorElementStatus for SCT"}
Optional read handle to get status data to test whether a SCT detector element is good.
If set to e.g. SCTDetectorElementStatus the event data will be used instead of the SCT conditions summary tool.
Definition at line 124 of file SCT_ClusteringTool.h.
◆ m_timeBinBits
int InDet::SCT_ClusteringTool::m_timeBinBits[3] {-1, -1, -1} |
|
private |
◆ m_timeBinStr
StringProperty InDet::SCT_ClusteringTool::m_timeBinStr {this, "timeBins", ""} |
|
private |
◆ m_useRowInformation
BooleanProperty InDet::SCT_ClusteringTool::m_useRowInformation {this, "useRowInformation", false} |
|
private |
The documentation for this class was generated from the following files:
JetConstituentVector::iterator iterator
virtual double stripPitch(const SiLocalPosition &chargePos) const =0
give the strip pitch (dependence on position needed for forward)
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
void rotate(double angler, GeoTrf::Vector2D &vector)
std::string find(const std::string &s)
return a remapped string
unsigned int value() const
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
Eigen::Matrix< double, 2, 1 > Vector2D
virtual double etaPitch() const =0
bool adjacent(unsigned int strip1, unsigned int strip2)
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
bool isCellGood(IdentifierHash hash, unsigned short cell_i) const
#define ATH_MSG_VERBOSE(x)
double xPhi() const
position along phi direction:
#define VALIDATE_STATUS_ARRAY(use_info, info_val, summary_val)
double xEta() const
position along eta direction:
int row(const Identifier &id) const
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
IdentifierHash wafer_hash(const Identifier &wafer_id) const
wafer hash from id - optimized
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
pointer nextElementPtr()
obtain the next available element in pool by pointer pool is resized if its limit has been reached On...
void clear()
Reset to invalid state.
int nStrips(const MuonGM::TgcReadoutElement &readoutEle, int layer)
int layer_disk(const Identifier &id) const
StatusCode initialize(bool used=true)
virtual int strip1Dim(int strip, int row) const override
only relevant for SCT.
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
#define ATH_MSG_WARNING(x)
int strip(const Identifier &id) const
int strip_max(const Identifier &id) const
Identifier wafer_id(int barrel_ec, int layer_disk, int phi_module, int eta_module, int side) const
For a single side of module.
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
Trk::PrepRawDataCollection< SCT_Cluster > SCT_ClusterCollection
virtual std::pair< SiLocalPosition, SiLocalPosition > endsOfStrip(const SiLocalPosition &position) const override=0
give the ends of strips
bool is_barrel(const Identifier &id) const
Test for barrel - WARNING: id MUST be sct id, otherwise answer is not accurate. Use SiliconID for gen...
Identifier strip_id(int barrel_ec, int layer_disk, int phi_module, int eta_module, int side, int strip) const
For an individual strip.