ATLAS Offline Software
Loading...
Searching...
No Matches
ITk::PixelClusterOnTrackTool Class Referencefinal

#include <ITkPixelClusterOnTrackTool.h>

Inheritance diagram for ITk::PixelClusterOnTrackTool:
Collaboration diagram for ITk::PixelClusterOnTrackTool:

Public Member Functions

 PixelClusterOnTrackTool (const std::string &, const std::string &, const IInterface *)
 AlgTool constructor.
virtual ~PixelClusterOnTrackTool ()=default
virtual StatusCode initialize () override
 AlgTool initialisation.
virtual InDet::PixelClusterOnTrackcorrect (const Trk::PrepRawData &, const Trk::TrackParameters &, const EventContext &ctx) const override
 produces a PixelClusterOnTrack (object factory!).
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Static Public Member Functions

static const InterfaceID & interfaceID ()
 The AlgTool InterfaceID.

Protected Member Functions

InDet::PixelClusterOnTrackcorrectDefault (const Trk::PrepRawData &, const Trk::TrackParameters &, const EventContext &) const
 The correct method produces a PixelClusterOnTrack using the measured PixelCluster and the track prediction.
InDet::PixelClusterOnTrackcorrectNN (const Trk::PrepRawData &, const Trk::TrackParameters &, const EventContext &) const
bool getErrorsDefaultAmbi (const InDet::PixelCluster *, const Trk::TrackParameters &, Amg::Vector2D &, Amg::MatrixX &, const EventContext &) const
bool getErrorsTIDE_Ambi (const InDet::PixelCluster *, const Trk::TrackParameters &, Amg::Vector2D &, Amg::MatrixX &, const EventContext &) const
InDet::PixelClusterOnTrackcorrect (const Trk::PrepRawData &, const Trk::TrackParameters &, const ITk::PixelClusterStrategy, const EventContext &) const
const Trk::ClusterSplitProbabilityContainer::ProbabilityInfogetClusterSplittingProbability (const InDet::PixelCluster *pix, const EventContext &ctx) const
void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

ToolHandle< ISiLorentzAngleToolm_lorentzAngleTool {this, "LorentzAngleTool", "SiLorentzAngleTool", "Tool to retreive Lorentz angle"}
SG::ReadCondHandleKey< ITk::PixelOfflineCalibDatam_clusterITkErrorKey {this, "ITkPixelOfflineCalibData", "ITkPixelOfflineCalibData", "Output key of ITk pixel cluster"}
SG::ReadCondHandleKey< RIO_OnTrackErrorScalingm_pixelErrorScalingKey {this,"PixelErrorScalingKey", "/Indet/TrkErrorScalingPixel", "Key for pixel error scaling conditions data."}
IntegerProperty m_positionStrategy
 toolhandle for central error scaling flag storing if errors need scaling or should be kept nominal
std::atomic_int m_errorStrategy {2}
IntegerProperty m_errorStrategyProperty
const PixelIDm_pixelid = nullptr
 Flag controlling how module distortions are taken into account:
bool m_applyNNcorrection {false}
 Enable NN based calibration (do only if NN calibration is applied).
BooleanProperty m_applyNNcorrectionProperty {this, "applyNNcorrection", false}
ToolHandle< InDet::NnClusterizationFactorym_NnClusterizationFactory
 NN clusterizationi factory for NN based positions and errors.
BooleanProperty m_doNotRecalibrateNN {this, "doNotRecalibrateNN", false}
BooleanProperty m_noNNandBroadErrors {this, "noNNandBroadErrors", false}
BooleanProperty m_usingTIDE_Ambi {this, "RunningTIDE_Ambi", false}
 Enable different treatment of cluster errors based on NN information (do only if TIDE ambi is run).
SG::ReadHandleKey< InDet::PixelGangedClusterAmbiguities > m_splitClusterMapKey {this, "SplitClusterAmbiguityMap", ""}
SG::ReadHandleKey< Trk::ClusterSplitProbabilityContainerm_clusterSplitProbContainer {this, "ClusterSplitProbabilityName", "",""}
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default).
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default).
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Definition at line 58 of file ITkPixelClusterOnTrackTool.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ PixelClusterOnTrackTool()

ITk::PixelClusterOnTrackTool::PixelClusterOnTrackTool ( const std::string & t,
const std::string & n,
const IInterface * p )

AlgTool constructor.

Definition at line 59 of file ITkPixelClusterOnTrackTool.cxx.

60 :
61 ::AthAlgTool(t, n, p)
62{
63 declareInterface<IRIO_OnTrackCreator>(this);
64}
AthAlgTool()
Default constructor:

◆ ~PixelClusterOnTrackTool()

virtual ITk::PixelClusterOnTrackTool::~PixelClusterOnTrackTool ( )
virtualdefault

Member Function Documentation

◆ correct() [1/2]

InDet::PixelClusterOnTrack * ITk::PixelClusterOnTrackTool::correct ( const Trk::PrepRawData & rio,
const Trk::TrackParameters & trackPar,
const EventContext & ctx ) const
overridevirtual

produces a PixelClusterOnTrack (object factory!).

Depending on job options it changes the pixel cluster position and error according to the parameters (in particular, the angle) of the intersecting track.

Implements Trk::IRIO_OnTrackCreator.

Definition at line 106 of file ITkPixelClusterOnTrackTool.cxx.

107 {
108
109 if (not m_applyNNcorrection){
110 return correctDefault(rio, trackPar, ctx);
111 }else {
112 if (m_errorStrategy == 0 || m_errorStrategy == 1) {
113 // version from Giacinto
115 return nullptr;
116 }
117 // if we try broad errors, get Pixel Cluster to test if it is split
118 const InDet::PixelCluster *pix = nullptr;
120 pix = static_cast<const InDet::PixelCluster *>(&rio);
121 }
122 if (!pix) {
123 return nullptr;
124 }
125 const Trk::ClusterSplitProbabilityContainer::ProbabilityInfo &splitProb = getClusterSplittingProbability(pix, ctx);
126 if (splitProb.isSplit()) {
127 return correctNN(rio, trackPar, ctx);
128 } else {
129 return correctDefault(rio, trackPar, ctx);
130 }
131 } else {
132 return correctNN(rio, trackPar, ctx);
133 }
134 }
135}
InDet::PixelClusterOnTrack * correctNN(const Trk::PrepRawData &, const Trk::TrackParameters &, const EventContext &) const
InDet::PixelClusterOnTrack * correctDefault(const Trk::PrepRawData &, const Trk::TrackParameters &, const EventContext &) const
The correct method produces a PixelClusterOnTrack using the measured PixelCluster and the track predi...
const Trk::ClusterSplitProbabilityContainer::ProbabilityInfo & getClusterSplittingProbability(const InDet::PixelCluster *pix, const EventContext &ctx) const
bool m_applyNNcorrection
Enable NN based calibration (do only if NN calibration is applied).
virtual bool type(PrepRawDataType type) const
Interface method checking the type.

◆ correct() [2/2]

InDet::PixelClusterOnTrack * ITk::PixelClusterOnTrackTool::correct ( const Trk::PrepRawData & rio,
const Trk::TrackParameters & trackPar,
const ITk::PixelClusterStrategy strategy,
const EventContext & ctx ) const
protected

Definition at line 348 of file ITkPixelClusterOnTrackTool.cxx.

350 {
351 int initial_errorStrategy;
352 InDet::PixelClusterOnTrack *newROT;
353
354 switch (strategy) {
355 case PixelClusterStrategy::OUTLIER: // if cluster is outlier, increase errors
357 initial_errorStrategy = m_errorStrategy;
358 m_errorStrategy = 0; // error as size of cluster /sqrt(12)
359 newROT = correct(rio, trackPar, ctx);
360 m_errorStrategy = initial_errorStrategy;
361 return newROT;
362
363 default:
364 return correct(rio, trackPar, ctx);
365 }
366}
virtual InDet::PixelClusterOnTrack * correct(const Trk::PrepRawData &, const Trk::TrackParameters &, const EventContext &ctx) const override
produces a PixelClusterOnTrack (object factory!).

◆ correctDefault()

InDet::PixelClusterOnTrack * ITk::PixelClusterOnTrackTool::correctDefault ( const Trk::PrepRawData & rio,
const Trk::TrackParameters & trackPar,
const EventContext & ctx ) const
protected

The correct method produces a PixelClusterOnTrack using the measured PixelCluster and the track prediction.

Definition at line 143 of file ITkPixelClusterOnTrackTool.cxx.

144 {
145 using CLHEP::micrometer;
146
147
148 const double TOPHAT_SIGMA = 1. / std::sqrt(12.);
149 const InDet::PixelCluster *pix = nullptr;
151 pix = static_cast<const InDet::PixelCluster *>(&rio);
152 }
153 else{
154 return nullptr;
155 }
156
157 ATH_MSG_VERBOSE("Correct called with Error strategy " << m_errorStrategy);
158
159 // PixelClusterOnTrack production
160 //
161 Trk::LocalParameters locpar;
162 Amg::Vector3D glob(pix->globalPosition());
163
164
165 // Get pointer to detector element
166 const InDetDD::SiDetectorElement *element = pix->detectorElement();
167 if (!element) {
168 return nullptr;
169 }
170 IdentifierHash idHash = element->identifyHash();
171
172 double errphi = -1;
173 double erreta = -1;
174
175 if (pix->rdoList().empty()) {
176 ATH_MSG_WARNING("Pixel RDO-list size is 0, check integrity of pixel clusters! stop ROT creation.");
177 return nullptr;
178 } else {
179 const InDetDD::PixelModuleDesign *design =
180 dynamic_cast<const InDetDD::PixelModuleDesign *>(&element->design());
181
182 // get candidate track angle in module local frame
183 const Amg::Vector3D& my_track = trackPar.momentum();
184 const Amg::Vector3D& my_normal = element->normal();
185 const Amg::Vector3D& my_phiax = element->phiAxis();
186 const Amg::Vector3D& my_etaax = element->etaAxis();
187 float trkphicomp = my_track.dot(my_phiax);
188 float trketacomp = my_track.dot(my_etaax);
189 float trknormcomp = my_track.dot(my_normal);
190 double bowphi = std::atan2(trkphicomp, trknormcomp);
191 double boweta = std::atan2(trketacomp, trknormcomp);
192
193 float tanl = m_lorentzAngleTool->getTanLorentzAngle(idHash, ctx);
194 int readoutside = element->design().readoutSide();
195
196 // map the angles of inward-going tracks onto [-PI/2, PI/2]
197 if (bowphi > M_PI *0.5) {
198 bowphi -= M_PI;
199 }
200 if (bowphi < -M_PI *0.5) {
201 bowphi += M_PI;
202 }
203 // finally, subtract the Lorentz angle effect
204 // the readoutside term is needed because of a bug in old
205 // geometry versions (CSC-01-* and CSC-02-*)
206 double angle = std::atan(std::tan(bowphi) - readoutside * tanl);
207
208 // settle the sign/pi periodicity issues
209 double thetaloc = -999.;
210 if (boweta > -0.5 * M_PI && boweta < M_PI / 2.) { //M_PI_2 in cmath
211 thetaloc = M_PI_2 - boweta;
212 }else if (boweta > M_PI_2 && boweta < M_PI) {
213 thetaloc = 1.5 * M_PI - boweta;
214 } else { // 3rd quadrant
215 thetaloc = -M_PI_2 - boweta;
216 }
217 double etaloc = -1 * log(tan(thetaloc * 0.5));
218
219 // try to understand...
220 const Identifier element_id = element->identify();
221 int PixEtaModule = m_pixelid->eta_module(element_id);
222 int PixPhiModule = m_pixelid->phi_module(element_id);
223 double PixTrkPt = trackPar.pT();
224 double PixTrkEta = trackPar.eta();
225 ATH_MSG_VERBOSE("tanl = " << tanl << " readout side is " << readoutside <<
226 " module " << PixEtaModule << " " << PixPhiModule <<
227 " track pt, eta = " << PixTrkPt << " " << PixTrkEta <<
228 " track momentum phi, norm = " << trkphicomp << " " <<
229 trknormcomp << " bowphi = " << bowphi << " angle = " << angle);
230
231 float omegaphi = pix->omegax();
232 float omegaeta = pix->omegay();
233 double localphi = -9999.;
234 double localeta = -9999.;
235
236 const std::vector<Identifier> & rdos = pix->rdoList();
237 InDetDD::SiLocalPosition meanpos(0, 0, 0);
238 int rowmin = 9999;
239 int rowmax = -9999;
240 int colmin = 9999;
241 int colmax = -9999;
242 for (const auto & rId:rdos) {
243 const int row = m_pixelid->phi_index(rId);
244 const int col = m_pixelid->eta_index(rId);
245 rowmin = std::min(rowmin, row);
246 rowmax = std::max(rowmax,row);
247 colmin = std::min(colmin, col);
248 colmax = std::max(colmax, col);
249 meanpos += design->positionFromColumnRow(col, row);
250 }
251 meanpos = meanpos / rdos.size();
252 InDetDD::SiLocalPosition pos1 =
253 design->positionFromColumnRow(colmin, rowmin);
254 InDetDD::SiLocalPosition pos2 =
255 design->positionFromColumnRow(colmax, rowmin);
256 InDetDD::SiLocalPosition pos3 =
257 design->positionFromColumnRow(colmin, rowmax);
258 InDetDD::SiLocalPosition pos4 =
259 design->positionFromColumnRow(colmax, rowmax);
260
261 InDetDD::SiLocalPosition centroid = 0.25 * (pos1 + pos2 + pos3 + pos4);
262 double shift = m_lorentzAngleTool->getLorentzShift(idHash, ctx);
263 int nrows = rowmax - rowmin + 1;
264 int ncol = colmax - colmin + 1;
265
266 // TOT interpolation for collision data
267 SG::ReadCondHandle<ITk::PixelOfflineCalibData> offlineITkCalibDataHandle(m_clusterITkErrorKey, ctx);
268
269 if (m_positionStrategy > 0 && omegaphi > -0.5 && omegaeta > -0.5) {
270 localphi = centroid.xPhi() + shift;
271 localeta = centroid.xEta();
272
273 std::pair<double,double> delta = offlineITkCalibDataHandle->getClusterErrorData()->getDelta(idHash,nrows,angle,ncol,etaloc);
274 double delta_phi = nrows != 1 ? delta.first : 0.;
275 double delta_eta = ncol != 1 ? delta.second : 0.;
276 localphi += delta_phi*(omegaphi-0.5);
277 localeta += delta_eta*(omegaeta-0.5);
278 }
279 // digital
280 else {
281 localphi = meanpos.xPhi() + shift;
282 localeta = meanpos.xEta();
283 }
284
285 const InDet::SiWidth& width = pix->width();
286
287 // Error strategies
288
289 // For very shallow tracks the cluster can easily break as
290 // the average charge per pixel is of the order of the threshold
291 // In this case, an error equal to the geometrical projection
292 // of the track path in silicon onto the module surface seems
293 // appropriate
294 if (std::abs(angle) > 1) {
295 errphi = 250 * micrometer * std::tan(std::abs(angle)) * TOPHAT_SIGMA;
296 erreta = width.z() > 250 * micrometer * std::tan(std::abs(boweta)) ?
297 width.z() * TOPHAT_SIGMA : 250 * micrometer * std::tan(std::abs(boweta)) * TOPHAT_SIGMA;
298 ATH_MSG_VERBOSE("Shallow track with tanl = " << tanl << " bowphi = " <<
299 bowphi << " angle = " << angle << " width.z = " << width.z() <<
300 " errphi = " << errphi << " erreta = " << erreta);
301 }else if (m_errorStrategy == 0) {
302 errphi = width.phiR() * TOPHAT_SIGMA;
303 erreta = width.z() * TOPHAT_SIGMA;
304 }else if (m_errorStrategy == 1) {
305 errphi = (width.phiR() / nrows) * TOPHAT_SIGMA;
306 erreta = (width.z() / ncol) * TOPHAT_SIGMA;
307 }else if (m_errorStrategy == 2) {
308 std::pair<double,double> delta_err = offlineITkCalibDataHandle->getClusterErrorData()->getDeltaError(idHash);
309 errphi = nrows != 1 ? delta_err.first : width.phiR()*TOPHAT_SIGMA;
310 erreta = ncol != 1 ? delta_err.second : width.z()*TOPHAT_SIGMA;
311 }
312
313 Amg::Vector2D locpos = Amg::Vector2D(localphi, localeta);
314 locpar = Trk::LocalParameters(locpos);
315 centroid = InDetDD::SiLocalPosition(localeta, localphi, 0.);
316 glob = element->globalPosition(centroid);
317 }
318
319 // Error matrix production
320
322
323 // corrected phi error
324 if (errphi > 0) {
325 cov(0, 0) = errphi * errphi;
326 }
327 if (erreta > 0) {
328 cov(1, 1) = erreta * erreta;
329 }
330
331 ATH_MSG_VERBOSE(" errphi = " << errphi << " erreta = " << erreta);
332
333 // create new copy of error matrix
334 if (!m_pixelErrorScalingKey.key().empty()) {
335 SG::ReadCondHandle<RIO_OnTrackErrorScaling> error_scaling( m_pixelErrorScalingKey, ctx );
337 ->getScaledCovariance(std::move(cov), *m_pixelid,
338 element->identify());
339 }
340 bool isbroad = m_errorStrategy == 0;
341 return new InDet::PixelClusterOnTrack(pix, std::move(locpar),
342 std::move(cov),
343 idHash, glob, pix->gangedPixel(), isbroad);
344}
#define M_PI
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
double angle(const GeoTrf::Vector2D &a, const GeoTrf::Vector2D &b)
const double width
IntegerProperty m_positionStrategy
toolhandle for central error scaling flag storing if errors need scaling or should be kept nominal
const PixelID * m_pixelid
Flag controlling how module distortions are taken into account:
SG::ReadCondHandleKey< ITk::PixelOfflineCalibData > m_clusterITkErrorKey
ToolHandle< ISiLorentzAngleTool > m_lorentzAngleTool
SG::ReadCondHandleKey< RIO_OnTrackErrorScaling > m_pixelErrorScalingKey
int readoutSide() const
ReadoutSide.
SiLocalPosition positionFromColumnRow(const int column, const int row) const
Given row and column index of a diode, return position of diode center ALTERNATIVE/PREFERED way is to...
virtual const SiDetectorDesign & design() const override final
access to the local description (inline):
double xPhi() const
position along phi direction:
double xEta() const
position along eta direction:
virtual const Amg::Vector3D & normal() const override final
Get reconstruction local normal axes in global frame.
virtual IdentifierHash identifyHash() const override final
identifier hash (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)
const Amg::Vector3D & globalPosition() const
return global position reference
bool gangedPixel() const
return the flag of this cluster containing a gangedPixel
const InDet::SiWidth & width() const
return width class reference
virtual const InDetDD::SiDetectorElement * detectorElement() const override final
return the detector element corresponding to this PRD The pointer will be zero if the det el is not d...
double eta() const
Access method for pseudorapidity - from momentum.
const Amg::Vector3D & momentum() const
Access method for the momentum.
double pT() const
Access method for transverse momentum.
const Amg::MatrixX & localCovariance() const
return const ref to the error matrix
const std::vector< Identifier > & rdoList() const
return the List of rdo identifiers (pointers)
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Eigen::Matrix< double, 2, 1 > Vector2D
Eigen::Matrix< double, 3, 1 > Vector3D
row
Appending html table to final .html summary file.
virtual void shift(size_t pos, ptrdiff_t offs) override
Shift the elements of the container.
const T_res * ErrorScalingCast(const T_src *src)
delta_phi(phi1, phi2)
Definition eFEXNTuple.py:14

◆ correctNN()

InDet::PixelClusterOnTrack * ITk::PixelClusterOnTrackTool::correctNN ( const Trk::PrepRawData & rio,
const Trk::TrackParameters & trackPar,
const EventContext & ctx ) const
protected

Definition at line 370 of file ITkPixelClusterOnTrackTool.cxx.

373 {
374
375 const InDet::PixelCluster *pixelPrepCluster = nullptr;
377 pixelPrepCluster = static_cast<const InDet::PixelCluster *>(&rio);
378 }
379
380 if (pixelPrepCluster == nullptr) {
381 ATH_MSG_WARNING("This is not a pixel cluster, return 0.");
382 return nullptr;
383 }
384
385 const InDetDD::SiDetectorElement *element = pixelPrepCluster->detectorElement();
386 if (!element) {
387 ATH_MSG_WARNING("Cannot access detector element. Aborting cluster correction...");
388 return nullptr;
389 }
390
391 IdentifierHash idHash = element->identifyHash();
392
394 Amg::Vector3D glob(pixelPrepCluster->globalPosition());
395
396 Amg::Vector2D locpos = pixelPrepCluster->localPosition();
397 Trk::LocalParameters locpar = Trk::LocalParameters(locpos);
398 Amg::MatrixX cov = pixelPrepCluster->localCovariance();
399
400 return new InDet::PixelClusterOnTrack(pixelPrepCluster, std::move(locpar),
401 std::move(cov), idHash, glob,
402 pixelPrepCluster->gangedPixel(), false);
403 }
404
405
406
407 Amg::Vector2D finalposition;
408 Amg::MatrixX finalerrormatrix;
409
410 if (m_usingTIDE_Ambi) {
411 if (!getErrorsTIDE_Ambi(pixelPrepCluster, trackPar, finalposition, finalerrormatrix, ctx)) {
412 return correctDefault(rio, trackPar, ctx);
413 }
414 }else {
415 if (!getErrorsDefaultAmbi(pixelPrepCluster, trackPar, finalposition, finalerrormatrix, ctx)) {
416 return correctDefault(rio, trackPar, ctx);
417 }
418 }
419
420 ATH_MSG_DEBUG( " Old position x: " << pixelPrepCluster->localPosition()[0]
421 << " +/- " << std::sqrt(pixelPrepCluster->localCovariance()(0, 0))
422 << " y: " << pixelPrepCluster->localPosition()[1]
423 << " +/- " << std::sqrt(pixelPrepCluster->localCovariance()(1, 1)) <<"\n"
424 << " Final position x: " << finalposition[0]
425 << " +/- " << std::sqrt(finalerrormatrix(0, 0))
426 << " y: " << finalposition[1] << " +/- "
427 <<std::sqrt(finalerrormatrix(1, 1)) );
428
429 Amg::MatrixX cov = finalerrormatrix;
430 // create new copy of error matrix
431 if (!m_pixelErrorScalingKey.key().empty()) {
432 SG::ReadCondHandle<RIO_OnTrackErrorScaling> error_scaling( m_pixelErrorScalingKey, ctx );
434 ->getScaledCovariance(std::move(cov), *m_pixelid,
435 element->identify());
436 }
437
438 InDetDD::SiLocalPosition centroid = InDetDD::SiLocalPosition(finalposition[1],
439 finalposition[0],
440 0);
441 Trk::LocalParameters locpar = Trk::LocalParameters(finalposition);
442
443 const Amg::Vector3D &glob = element->globalPosition(centroid);
444
445
446 return new InDet::PixelClusterOnTrack(pixelPrepCluster,
447 std::move(locpar),
448 std::move(cov), idHash,
449 glob,
450 pixelPrepCluster->gangedPixel(),
451 false);
452}
#define ATH_MSG_DEBUG(x)
BooleanProperty m_usingTIDE_Ambi
Enable different treatment of cluster errors based on NN information (do only if TIDE ambi is run).
bool getErrorsDefaultAmbi(const InDet::PixelCluster *, const Trk::TrackParameters &, Amg::Vector2D &, Amg::MatrixX &, const EventContext &) const
bool getErrorsTIDE_Ambi(const InDet::PixelCluster *, const Trk::TrackParameters &, Amg::Vector2D &, Amg::MatrixX &, const EventContext &) const
const Amg::Vector2D & localPosition() const
return the local position reference

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ getClusterSplittingProbability()

const Trk::ClusterSplitProbabilityContainer::ProbabilityInfo & ITk::PixelClusterOnTrackTool::getClusterSplittingProbability ( const InDet::PixelCluster * pix,
const EventContext & ctx ) const
inlineprotected

Definition at line 110 of file ITkPixelClusterOnTrackTool.h.

110 {
111 if (!pix || m_clusterSplitProbContainer.key().empty())
113
114 SG::ReadHandle<Trk::ClusterSplitProbabilityContainer> splitProbContainer(
116 if (!splitProbContainer.isValid()) {
117 ATH_MSG_FATAL("Failed to get cluster splitting probability container "
119 }
120 return splitProbContainer->splitProbability(pix);
121 }
#define ATH_MSG_FATAL(x)
SG::ReadHandleKey< Trk::ClusterSplitProbabilityContainer > m_clusterSplitProbContainer
static const ProbabilityInfo & getNoSplitProbability()

◆ getErrorsDefaultAmbi()

bool ITk::PixelClusterOnTrackTool::getErrorsDefaultAmbi ( const InDet::PixelCluster * pixelPrepCluster,
const Trk::TrackParameters & trackPar,
Amg::Vector2D & finalposition,
Amg::MatrixX & finalerrormatrix,
const EventContext & ctx ) const
protected

Definition at line 455 of file ITkPixelClusterOnTrackTool.cxx.

459 {
460 std::vector<Amg::Vector2D> vectorOfPositions;
461 int numberOfSubclusters = 1;
462 vectorOfPositions.push_back(pixelPrepCluster->localPosition());
463
465 SG::ReadHandle<InDet::PixelGangedClusterAmbiguities> splitClusterMap(m_splitClusterMapKey, ctx);
466 InDet::PixelGangedClusterAmbiguities::const_iterator mapBegin = splitClusterMap->begin();
467 InDet::PixelGangedClusterAmbiguities::const_iterator mapEnd = splitClusterMap->end();
468 for (InDet::PixelGangedClusterAmbiguities::const_iterator mapIter = mapBegin; mapIter != mapEnd; ++mapIter) {
469 const InDet::SiCluster *first = (*mapIter).first;
470 const InDet::SiCluster *second = (*mapIter).second;
471 if (first == pixelPrepCluster && second != pixelPrepCluster) {
472 ATH_MSG_DEBUG("Found additional split cluster in ambiguity map (+=1).");
473 numberOfSubclusters += 1;
474 const InDet::SiCluster *otherOne = second;
475 const InDet::PixelCluster *pixelAddCluster = nullptr;
477 pixelAddCluster = static_cast<const InDet::PixelCluster *>(otherOne);
478 }
479 if (pixelAddCluster == nullptr) {
480 ATH_MSG_WARNING("Pixel ambiguity map has empty pixel cluster. Please DEBUG!");
481 continue;
482 }
483 vectorOfPositions.push_back(pixelAddCluster->localPosition());
484
485 ATH_MSG_DEBUG( "Found one more pixel cluster. Position x: "
486 << pixelAddCluster->localPosition()[0] << "y: " << pixelAddCluster->localPosition()[1]);
487 }// find relevant element of map
488 }// iterate over map
489 }
490
491 // now you have numberOfSubclusters and the vectorOfPositions (Amg::Vector2D)
492
493 if (trackPar.surfaceType() != Trk::SurfaceType::Plane ||
494 trackPar.type() != Trk::AtaSurface) {
496 "Parameters are not at a plane ! Aborting cluster correction... ");
497 return false;
498 }
499
500 std::vector<Amg::Vector2D> allLocalPositions;
501 std::vector<Amg::MatrixX> allErrorMatrix;
502 allLocalPositions =
503 m_NnClusterizationFactory->estimatePositions(*pixelPrepCluster,
504 trackPar.associatedSurface(),
505 trackPar,
506 allErrorMatrix,
507 numberOfSubclusters);
508
509 if (allLocalPositions.empty()) {
510 ATH_MSG_DEBUG( " Cluster cannot be treated by NN. Giving back to default clusterization " );
511
512 return false;
513 }
514
515 if (allLocalPositions.size() != size_t(numberOfSubclusters)) {
516 ATH_MSG_WARNING( "Returned position vector size " << allLocalPositions.size() <<
517 " not according to expected number of subclusters: " << numberOfSubclusters << ". Abort cluster correction..." );
518 return false;
519 }
520
521
522 // GP: now the not so nice part of matching the new result with the old one...
523 // Takes the error into account to improve the matching
524
525 if (numberOfSubclusters == 1) {
526 finalposition = allLocalPositions[0];
527 finalerrormatrix = allErrorMatrix[0];
528 }
529
530 else if (numberOfSubclusters == 2) {
531 double distancesq1 =
532 square(vectorOfPositions[0][0] - allLocalPositions[0][0]) / allErrorMatrix[0](0, 0) +
533 square(vectorOfPositions[1][0] - allLocalPositions[1][0]) / allErrorMatrix[1](0, 0) +
534 square(vectorOfPositions[0][1] - allLocalPositions[0][1]) / allErrorMatrix[0](1, 1) +
535 square(vectorOfPositions[1][1] - allLocalPositions[1][1]) / allErrorMatrix[1](1, 1);
536
537 double distancesq2 =
538 square(vectorOfPositions[1][0] - allLocalPositions[0][0]) / allErrorMatrix[0](0, 0) +
539 square(vectorOfPositions[0][0] - allLocalPositions[1][0]) / allErrorMatrix[1](0, 0) +
540 square(vectorOfPositions[1][1] - allLocalPositions[0][1]) / allErrorMatrix[0](1, 1) +
541 square(vectorOfPositions[0][1] - allLocalPositions[1][1]) / allErrorMatrix[1](1, 1);
542
544 " Old pix (1) x: " << vectorOfPositions[0][0] << " y: " << vectorOfPositions[0][1] << "\n"
545 << " Old pix (2) x: " << vectorOfPositions[1][0] << " y: " << vectorOfPositions[1][1] << "\n"
546 << " Pix (1) x: " << allLocalPositions[0][0] << " +/- " << std::sqrt(allErrorMatrix[0](0, 0))
547 << " y: " << allLocalPositions[0][1] << " +/- " << std::sqrt(allErrorMatrix[0](1, 1)) <<"\n"
548 << " Pix (2) x: " << allLocalPositions[1][0] << " +/- " << std::sqrt(allErrorMatrix[1](0, 0))
549 << " y: " << allLocalPositions[1][1] << " +/- " << std::sqrt(allErrorMatrix[1](1, 1)) << "\n"
550 << " Old (1) new (1) dist: " << std::sqrt(distancesq1) << " Old (1) new (2) " << std::sqrt(distancesq2) );
551
552
553 if (distancesq1 < distancesq2) {
554 finalposition = allLocalPositions[0];
555 finalerrormatrix = allErrorMatrix[0];
556 }else {
557 finalposition = allLocalPositions[1];
558 finalerrormatrix = allErrorMatrix[1];
559 }
560 }
561
562
563 else if (numberOfSubclusters == 3) {
564 double distances[6];
565
566 distances[0] = distance(vectorOfPositions, allLocalPositions, allErrorMatrix, 0, 1, 2);
567 distances[1] = distance(vectorOfPositions, allLocalPositions, allErrorMatrix, 0, 2, 1);
568 distances[2] = distance(vectorOfPositions, allLocalPositions, allErrorMatrix, 1, 0, 2);
569 distances[3] = distance(vectorOfPositions, allLocalPositions, allErrorMatrix, 1, 2, 0);
570 distances[4] = distance(vectorOfPositions, allLocalPositions, allErrorMatrix, 2, 0, 1);
571 distances[5] = distance(vectorOfPositions, allLocalPositions, allErrorMatrix, 2, 1, 0);
572
573 int smallestDistanceIndex = -10;
574 double minDistance = 1e10;
575
576 for (int i = 0; i < 6; i++) {
577 ATH_MSG_VERBOSE(" distance n.: " << i << " distance is: " << distances[i]);
578
579 if (distances[i] < minDistance) {
580 minDistance = distances[i];
581 smallestDistanceIndex = i;
582 }
583 }
584
585 ATH_MSG_DEBUG(" The minimum distance is : " << minDistance << " for index: " << smallestDistanceIndex);
586
587 if (smallestDistanceIndex == 0 || smallestDistanceIndex == 1) {
588 finalposition = allLocalPositions[0];
589 finalerrormatrix = allErrorMatrix[0];
590 }
591 if (smallestDistanceIndex == 2 || smallestDistanceIndex == 4) {
592 finalposition = allLocalPositions[1];
593 finalerrormatrix = allErrorMatrix[1];
594 }
595 if (smallestDistanceIndex == 3 || smallestDistanceIndex == 5) {
596 finalposition = allLocalPositions[2];
597 finalerrormatrix = allErrorMatrix[2];
598 }
599 }
600 return true;
601}
SG::ReadHandleKey< InDet::PixelGangedClusterAmbiguities > m_splitClusterMapKey
ToolHandle< InDet::NnClusterizationFactory > m_NnClusterizationFactory
NN clusterizationi factory for NN based positions and errors.
virtual constexpr SurfaceType surfaceType() const override=0
Returns the Surface Type enum for the surface used to define the derived class.
virtual constexpr ParametersType type() const override=0
Return the ParametersType enum.
virtual const Surface & associatedSurface() const override=0
Access to the Surface associated to the Parameters.
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
bool first
Definition DeMoScan.py:534

◆ getErrorsTIDE_Ambi()

bool ITk::PixelClusterOnTrackTool::getErrorsTIDE_Ambi ( const InDet::PixelCluster * pixelPrepCluster,
const Trk::TrackParameters & trackPar,
Amg::Vector2D & finalposition,
Amg::MatrixX & finalerrormatrix,
const EventContext & ctx ) const
protected

Definition at line 604 of file ITkPixelClusterOnTrackTool.cxx.

608 {
609 const Trk::ClusterSplitProbabilityContainer::ProbabilityInfo &splitProb = getClusterSplittingProbability(pixelPrepCluster, ctx);
610 std::vector<Amg::Vector2D> vectorOfPositions;
611 int numberOfSubclusters = 1;
613 SG::ReadHandle<InDet::PixelGangedClusterAmbiguities> splitClusterMap(m_splitClusterMapKey, ctx);
614 numberOfSubclusters = 1 + splitClusterMap->count(pixelPrepCluster);
615
616 if (splitClusterMap->count(pixelPrepCluster) == 0 && splitProb.isSplit()) {
617 numberOfSubclusters = 2;
618 }
619 if (splitClusterMap->count(pixelPrepCluster) != 0 && !splitProb.isSplit()) {
620 numberOfSubclusters = 1;
621 }
622 }
623
624 // now you have numberOfSubclusters and the vectorOfPositions (Amg::Vector2D)
625 if (trackPar.surfaceType() != Trk::SurfaceType::Plane ||
626 trackPar.type() != Trk::AtaSurface) {
627 ATH_MSG_WARNING("Parameters are not at a plane surface ! Aborting cluster "
628 "correction... ");
629 return false;
630 }
631
632 std::vector<Amg::Vector2D> allLocalPositions;
633 std::vector<Amg::MatrixX> allErrorMatrix;
634 allLocalPositions = m_NnClusterizationFactory->estimatePositions(
635 *pixelPrepCluster,
636 trackPar.associatedSurface(),
637 trackPar,
638 allErrorMatrix,
639 numberOfSubclusters);
640
641 if (allLocalPositions.empty()) {
643 " Cluster cannot be treated by NN. Giving back to default clusterization, too big: " <<
644 splitProb.isTooBigToBeSplit());
645 return false;
646 }
647
648 if (allLocalPositions.size() != size_t(numberOfSubclusters)) {
650 "Returned position vector size " << allLocalPositions.size() << " not according to expected number of subclusters: " << numberOfSubclusters <<
651 ". Abort cluster correction...");
652 return false;
653 }
654
655 // AKM: now the not so nice part find the best match position option
656 // Takes the error into account to scale the importance of the measurement
657
658 if (numberOfSubclusters == 1) {
659 finalposition = allLocalPositions[0];
660 finalerrormatrix = allErrorMatrix[0];
661 return true;
662 }
663
664 // Get the track parameters local position
665 const Amg::Vector2D localpos = trackPar.localPosition();
666 // Use the track parameters cov to weight distcances
667 Amg::Vector2D localerr(0.01, 0.05);
668 if (trackPar.covariance()) {
669 localerr = Amg::Vector2D(std::sqrt((*trackPar.covariance())(0, 0)), std::sqrt((*trackPar.covariance())(1, 1)));
670 }
671
672 double minDistance(1e300);
673 int index(0);
674
675 for (unsigned int i(0); i < allLocalPositions.size(); ++i) {
676 double distance =
677 square(localpos[0] - allLocalPositions[i][0]) / localerr[0]
678 + square(localpos[1] - allLocalPositions[i][1]) / localerr[1];
679
680 if (distance < minDistance) {
681 index = i;
682 minDistance = distance;
683 }
684 }
685
686 finalposition = allLocalPositions[index];
687 finalerrormatrix = allErrorMatrix[index];
688 return true;
689}
Amg::Vector2D localPosition() const
Access method for the local coordinates, local parameter definitions differ for each surface type.
str index
Definition DeMoScan.py:362

◆ initialize()

StatusCode ITk::PixelClusterOnTrackTool::initialize ( )
overridevirtual

AlgTool initialisation.

Definition at line 72 of file ITkPixelClusterOnTrackTool.cxx.

72 {
73
74 ATH_MSG_DEBUG(name() << " initialize()");
75
77 ATH_MSG_DEBUG("Error strategy is" << m_errorStrategy);
78
80
81 ATH_CHECK(m_clusterITkErrorKey.initialize());
82
84
85 // get the error scaling tool
87 if (!m_pixelErrorScalingKey.key().empty()) ATH_MSG_DEBUG("Detected need for scaling Pixel errors.");
88
89 ATH_CHECK (detStore()->retrieve(m_pixelid, "PixelID"));
90
93 ATH_CHECK(m_NnClusterizationFactory.retrieve( DisableTool{!m_applyNNcorrection} ));
94
95 ATH_CHECK(m_lorentzAngleTool.retrieve());
96 return StatusCode::SUCCESS;
97}
#define ATH_CHECK
Evaluate an expression and check for errors.
const ServiceHandle< StoreGateSvc > & detStore() const

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ interfaceID()

const InterfaceID & Trk::IRIO_OnTrackCreator::interfaceID ( )
inlinestaticinherited

The AlgTool InterfaceID.

Definition at line 43 of file IRIO_OnTrackCreator.h.

◆ msg()

MsgStream & AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, and AthCheckedComponent<::AthAlgTool >.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_applyNNcorrection

bool ITk::PixelClusterOnTrackTool::m_applyNNcorrection {false}
private

Enable NN based calibration (do only if NN calibration is applied).

Definition at line 161 of file ITkPixelClusterOnTrackTool.h.

161{false};

◆ m_applyNNcorrectionProperty

BooleanProperty ITk::PixelClusterOnTrackTool::m_applyNNcorrectionProperty {this, "applyNNcorrection", false}
private

Definition at line 162 of file ITkPixelClusterOnTrackTool.h.

162{this, "applyNNcorrection", false};

◆ m_clusterITkErrorKey

SG::ReadCondHandleKey<ITk::PixelOfflineCalibData> ITk::PixelClusterOnTrackTool::m_clusterITkErrorKey {this, "ITkPixelOfflineCalibData", "ITkPixelOfflineCalibData", "Output key of ITk pixel cluster"}
private

Definition at line 131 of file ITkPixelClusterOnTrackTool.h.

131{this, "ITkPixelOfflineCalibData", "ITkPixelOfflineCalibData", "Output key of ITk pixel cluster"};

◆ m_clusterSplitProbContainer

SG::ReadHandleKey<Trk::ClusterSplitProbabilityContainer> ITk::PixelClusterOnTrackTool::m_clusterSplitProbContainer {this, "ClusterSplitProbabilityName", "",""}
private

Definition at line 176 of file ITkPixelClusterOnTrackTool.h.

177{this, "ClusterSplitProbabilityName", "",""};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default).

Definition at line 393 of file AthCommonDataStore.h.

◆ m_doNotRecalibrateNN

BooleanProperty ITk::PixelClusterOnTrackTool::m_doNotRecalibrateNN {this, "doNotRecalibrateNN", false}
private

Definition at line 169 of file ITkPixelClusterOnTrackTool.h.

169{this, "doNotRecalibrateNN", false};

◆ m_errorStrategy

std::atomic_int ITk::PixelClusterOnTrackTool::m_errorStrategy {2}
mutableprivate

Definition at line 140 of file ITkPixelClusterOnTrackTool.h.

140{2};

◆ m_errorStrategyProperty

IntegerProperty ITk::PixelClusterOnTrackTool::m_errorStrategyProperty
private
Initial value:
{this, "ErrorStrategy", 2,
"Which calibration of cluster position errors"}

Definition at line 141 of file ITkPixelClusterOnTrackTool.h.

141 {this, "ErrorStrategy", 2,
142 "Which calibration of cluster position errors"};

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default).

Definition at line 390 of file AthCommonDataStore.h.

◆ m_lorentzAngleTool

ToolHandle<ISiLorentzAngleTool> ITk::PixelClusterOnTrackTool::m_lorentzAngleTool {this, "LorentzAngleTool", "SiLorentzAngleTool", "Tool to retreive Lorentz angle"}
private

Definition at line 129 of file ITkPixelClusterOnTrackTool.h.

129{this, "LorentzAngleTool", "SiLorentzAngleTool", "Tool to retreive Lorentz angle"};

◆ m_NnClusterizationFactory

ToolHandle<InDet::NnClusterizationFactory> ITk::PixelClusterOnTrackTool::m_NnClusterizationFactory
private
Initial value:
{this, "NnClusterizationFactory",
"InDet::NnClusterizationFactory/NnClusterizationFactory"}

NN clusterizationi factory for NN based positions and errors.

Definition at line 165 of file ITkPixelClusterOnTrackTool.h.

166 {this, "NnClusterizationFactory",
167 "InDet::NnClusterizationFactory/NnClusterizationFactory"};

◆ m_noNNandBroadErrors

BooleanProperty ITk::PixelClusterOnTrackTool::m_noNNandBroadErrors {this, "noNNandBroadErrors", false}
private

Definition at line 170 of file ITkPixelClusterOnTrackTool.h.

170{this, "noNNandBroadErrors", false};

◆ m_pixelErrorScalingKey

SG::ReadCondHandleKey<RIO_OnTrackErrorScaling> ITk::PixelClusterOnTrackTool::m_pixelErrorScalingKey {this,"PixelErrorScalingKey", "/Indet/TrkErrorScalingPixel", "Key for pixel error scaling conditions data."}
private

Definition at line 133 of file ITkPixelClusterOnTrackTool.h.

134{this,"PixelErrorScalingKey", "/Indet/TrkErrorScalingPixel", "Key for pixel error scaling conditions data."};

◆ m_pixelid

const PixelID* ITk::PixelClusterOnTrackTool::m_pixelid = nullptr
private

Flag controlling how module distortions are taken into account:

case 0 -----> No distorsions implemented;

case 1 -----> Set curvature (in 1/meter) and twist (in radiant) equal for all modules;

case 2 -----> Read curvatures and twists from textfile containing Survey data;

case 3 -----> Set curvature and twist from Gaussian random generator with mean and RMS coming from Survey data;

case 4 -----> Read curvatures and twists from database (not ready yet); identifier-helper

Definition at line 158 of file ITkPixelClusterOnTrackTool.h.

◆ m_positionStrategy

IntegerProperty ITk::PixelClusterOnTrackTool::m_positionStrategy
private
Initial value:
{this, "PositionStrategy", 1,
"Which calibration of cluster positions"}

toolhandle for central error scaling flag storing if errors need scaling or should be kept nominal

Definition at line 138 of file ITkPixelClusterOnTrackTool.h.

138 {this, "PositionStrategy", 1,
139 "Which calibration of cluster positions"};

◆ m_splitClusterMapKey

SG::ReadHandleKey<InDet::PixelGangedClusterAmbiguities> ITk::PixelClusterOnTrackTool::m_splitClusterMapKey {this, "SplitClusterAmbiguityMap", ""}
private

Definition at line 173 of file ITkPixelClusterOnTrackTool.h.

174{this, "SplitClusterAmbiguityMap", ""};

◆ m_usingTIDE_Ambi

BooleanProperty ITk::PixelClusterOnTrackTool::m_usingTIDE_Ambi {this, "RunningTIDE_Ambi", false}
private

Enable different treatment of cluster errors based on NN information (do only if TIDE ambi is run).

Definition at line 172 of file ITkPixelClusterOnTrackTool.h.

172{this, "RunningTIDE_Ambi", false};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


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