ATLAS Offline Software
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
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. More...
 
virtual ~PixelClusterOnTrackTool ()=default
 
virtual StatusCode initialize () override
 AlgTool initialisation. More...
 
virtual InDet::PixelClusterOnTrackcorrect (const Trk::PrepRawData &, const Trk::TrackParameters &) const override
 produces a PixelClusterOnTrack (object factory!). More...
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Static Public Member Functions

static const InterfaceID & interfaceID ()
 The AlgTool InterfaceID. More...
 

Protected Member Functions

InDet::PixelClusterOnTrackcorrectDefault (const Trk::PrepRawData &, const Trk::TrackParameters &) const
 The correct method produces a PixelClusterOnTrack using the measured PixelCluster and the track prediction. More...
 
InDet::PixelClusterOnTrackcorrectNN (const Trk::PrepRawData &, const Trk::TrackParameters &) const
 
bool getErrorsDefaultAmbi (const InDet::PixelCluster *, const Trk::TrackParameters &, Amg::Vector2D &, Amg::MatrixX &) const
 
bool getErrorsTIDE_Ambi (const InDet::PixelCluster *, const Trk::TrackParameters &, Amg::Vector2D &, Amg::MatrixX &) const
 
InDet::PixelClusterOnTrackcorrect (const Trk::PrepRawData &, const Trk::TrackParameters &, const ITk::PixelClusterStrategy) const
 
const Trk::ClusterSplitProbabilityContainer::ProbabilityInfogetClusterSplittingProbability (const InDet::PixelCluster *pix) const
 
void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
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. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

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."}
 
int m_positionStrategy
 toolhandle for central error scaling flag storing if errors need scaling or should be kept nominal More...
 
std::atomic_int m_errorStrategy {2}
 
IntegerProperty m_errorStrategyProperty {this, "ErrorStrategy", 2, "Which calibration of cluster position errors"}
 
const PixelIDm_pixelid
 Flag controlling how module distortions are taken into account: More...
 
bool m_applyNNcorrection {false}
 Enable NN based calibration (do only if NN calibration is applied) More...
 
BooleanProperty m_applyNNcorrectionProperty {this, "applyNNcorrection", false}
 
ToolHandle< InDet::NnClusterizationFactorym_NnClusterizationFactory
 NN clusterizationi factory for NN based positions and errors. More...
 
bool m_doNotRecalibrateNN
 
bool m_noNNandBroadErrors
 
bool m_usingTIDE_Ambi
 Enable different treatment of cluster errors based on NN information (do only if TIDE ambi is run) More...
 
SG::ReadHandleKey< InDet::PixelGangedClusterAmbiguitiesm_splitClusterMapKey
 
SG::ReadHandleKey< Trk::ClusterSplitProbabilityContainerm_clusterSplitProbContainer {this, "ClusterSplitProbabilityName", "",""}
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Definition at line 59 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  m_pixelid(nullptr),
63  m_NnClusterizationFactory("InDet::NnClusterizationFactory/NnClusterizationFactory", this),
64  m_doNotRecalibrateNN(false),
65  m_noNNandBroadErrors(false),
66  m_usingTIDE_Ambi(false),
68  {
69  declareInterface<IRIO_OnTrackCreator>(this);
70 
71  declareProperty("PositionStrategy", m_positionStrategy = 1, "Which calibration of cluster positions");
72  declareProperty("NnClusterizationFactory", m_NnClusterizationFactory);
73  declareProperty("SplitClusterAmbiguityMap", m_splitClusterMapKey);//Remove Later
74  declareProperty("doNotRecalibrateNN", m_doNotRecalibrateNN);
75  declareProperty("m_noNNandBroadErrors", m_noNNandBroadErrors);
76  declareProperty("RunningTIDE_Ambi", m_usingTIDE_Ambi);
77 }

◆ ~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
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 119 of file ITkPixelClusterOnTrackTool.cxx.

120  {
121 
122  if (not m_applyNNcorrection){
123  return correctDefault(rio, trackPar);
124  }else {
125  if (m_errorStrategy == 0 || m_errorStrategy == 1) {
126  // version from Giacinto
127  if (m_noNNandBroadErrors) {
128  return nullptr;
129  }
130  // if we try broad errors, get Pixel Cluster to test if it is split
131  const InDet::PixelCluster *pix = nullptr;
133  pix = static_cast<const InDet::PixelCluster *>(&rio);
134  }
135  if (!pix) {
136  return nullptr;
137  }
139  if (splitProb.isSplit()) {
140  return correctNN(rio, trackPar);
141  } else {
142  return correctDefault(rio, trackPar);
143  }
144  } else {
145  return correctNN(rio, trackPar);
146  }
147  }
148 }

◆ correct() [2/2]

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

Definition at line 361 of file ITkPixelClusterOnTrackTool.cxx.

363  {
364  int initial_errorStrategy;
366 
367  switch (strategy) {
368  case PixelClusterStrategy::OUTLIER: // if cluster is outlier, increase errors
370  initial_errorStrategy = m_errorStrategy;
371  m_errorStrategy = 0; // error as size of cluster /sqrt(12)
372  newROT = correct(rio, trackPar);
373  m_errorStrategy = initial_errorStrategy;
374  return newROT;
375 
376  default:
377  return correct(rio, trackPar);
378  }
379 }

◆ correctDefault()

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

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

Definition at line 156 of file ITkPixelClusterOnTrackTool.cxx.

157  {
158  using CLHEP::micrometer;
159 
160 
161  const double TOPHAT_SIGMA = 1. / std::sqrt(12.);
162  const InDet::PixelCluster *pix = nullptr;
164  pix = static_cast<const InDet::PixelCluster *>(&rio);
165  }
166  else{
167  return nullptr;
168  }
169 
170  ATH_MSG_VERBOSE("Correct called with Error strategy " << m_errorStrategy);
171 
172  // PixelClusterOnTrack production
173  //
174  Trk::LocalParameters locpar;
175  Amg::Vector3D glob(pix->globalPosition());
176 
177 
178  // Get pointer to detector element
179  const InDetDD::SiDetectorElement *element = pix->detectorElement();
180  if (!element) {
181  return nullptr;
182  }
183  IdentifierHash iH = element->identifyHash();
184 
185  double errphi = -1;
186  double erreta = -1;
187 
188  if (pix->rdoList().empty()) {
189  ATH_MSG_WARNING("Pixel RDO-list size is 0, check integrity of pixel clusters! stop ROT creation.");
190  return nullptr;
191  } else {
192  const InDetDD::PixelModuleDesign *design =
193  dynamic_cast<const InDetDD::PixelModuleDesign *>(&element->design());
194 
195  // get candidate track angle in module local frame
196  const Amg::Vector3D& my_track = trackPar.momentum();
197  const Amg::Vector3D& my_normal = element->normal();
198  const Amg::Vector3D& my_phiax = element->phiAxis();
199  const Amg::Vector3D& my_etaax = element->etaAxis();
200  float trkphicomp = my_track.dot(my_phiax);
201  float trketacomp = my_track.dot(my_etaax);
202  float trknormcomp = my_track.dot(my_normal);
203  double bowphi = std::atan2(trkphicomp, trknormcomp);
204  double boweta = std::atan2(trketacomp, trknormcomp);
205 
206  float tanl = m_lorentzAngleTool->getTanLorentzAngle(iH);
207  int readoutside = element->design().readoutSide();
208 
209  // map the angles of inward-going tracks onto [-PI/2, PI/2]
210  if (bowphi > M_PI *0.5) {
211  bowphi -= M_PI;
212  }
213  if (bowphi < -M_PI *0.5) {
214  bowphi += M_PI;
215  }
216  // finally, subtract the Lorentz angle effect
217  // the readoutside term is needed because of a bug in old
218  // geometry versions (CSC-01-* and CSC-02-*)
219  double angle = std::atan(std::tan(bowphi) - readoutside * tanl);
220 
221  // settle the sign/pi periodicity issues
222  double thetaloc = -999.;
223  if (boweta > -0.5 * M_PI && boweta < M_PI / 2.) { //M_PI_2 in cmath
224  thetaloc = M_PI_2 - boweta;
225  }else if (boweta > M_PI_2 && boweta < M_PI) {
226  thetaloc = 1.5 * M_PI - boweta;
227  } else { // 3rd quadrant
228  thetaloc = -M_PI_2 - boweta;
229  }
230  double etaloc = -1 * log(tan(thetaloc * 0.5));
231 
232  // try to understand...
233  const Identifier element_id = element->identify();
234  int PixEtaModule = m_pixelid->eta_module(element_id);
235  int PixPhiModule = m_pixelid->phi_module(element_id);
236  double PixTrkPt = trackPar.pT();
237  double PixTrkEta = trackPar.eta();
238  ATH_MSG_VERBOSE("tanl = " << tanl << " readout side is " << readoutside <<
239  " module " << PixEtaModule << " " << PixPhiModule <<
240  " track pt, eta = " << PixTrkPt << " " << PixTrkEta <<
241  " track momentum phi, norm = " << trkphicomp << " " <<
242  trknormcomp << " bowphi = " << bowphi << " angle = " << angle);
243 
244  float omegaphi = pix->omegax();
245  float omegaeta = pix->omegay();
246  double localphi = -9999.;
247  double localeta = -9999.;
248 
249  const std::vector<Identifier> & rdos = pix->rdoList();
250  InDetDD::SiLocalPosition meanpos(0, 0, 0);
251  int rowmin = 9999;
252  int rowmax = -9999;
253  int colmin = 9999;
254  int colmax = -9999;
255  for (const auto & rId:rdos) {
256  const int row = m_pixelid->phi_index(rId);
257  const int col = m_pixelid->eta_index(rId);
258  rowmin = std::min(rowmin, row);
259  rowmax = std::max(rowmax,row);
260  colmin = std::min(colmin, col);
261  colmax = std::max(colmax, col);
262  meanpos += design->positionFromColumnRow(col, row);
263  }
264  meanpos = meanpos / rdos.size();
266  design->positionFromColumnRow(colmin, rowmin);
268  design->positionFromColumnRow(colmax, rowmin);
270  design->positionFromColumnRow(colmin, rowmax);
272  design->positionFromColumnRow(colmax, rowmax);
273 
274  InDetDD::SiLocalPosition centroid = 0.25 * (pos1 + pos2 + pos3 + pos4);
275  double shift = m_lorentzAngleTool->getLorentzShift(iH);
276  int nrows = rowmax - rowmin + 1;
277  int ncol = colmax - colmin + 1;
278 
279  // TOT interpolation for collision data
281 
282  if (m_positionStrategy > 0 && omegaphi > -0.5 && omegaeta > -0.5) {
283  localphi = centroid.xPhi() + shift;
284  localeta = centroid.xEta();
285 
286  std::pair<double,double> delta = offlineITkCalibDataHandle->getClusterErrorData()->getDelta(&element_id,nrows,angle,ncol,etaloc);
287  double delta_phi = nrows != 1 ? delta.first : 0.;
288  double delta_eta = ncol != 1 ? delta.second : 0.;
289  localphi += delta_phi*(omegaphi-0.5);
290  localeta += delta_eta*(omegaeta-0.5);
291  }
292  // digital
293  else {
294  localphi = meanpos.xPhi() + shift;
295  localeta = meanpos.xEta();
296  }
297 
298  const InDet::SiWidth& width = pix->width();
299 
300  // Error strategies
301 
302  // For very shallow tracks the cluster can easily break as
303  // the average charge per pixel is of the order of the threshold
304  // In this case, an error equal to the geometrical projection
305  // of the track path in silicon onto the module surface seems
306  // appropriate
307  if (std::abs(angle) > 1) {
308  errphi = 250 * micrometer * std::tan(std::abs(angle)) * TOPHAT_SIGMA;
309  erreta = width.z() > 250 * micrometer * std::tan(std::abs(boweta)) ?
310  width.z() * TOPHAT_SIGMA : 250 * micrometer * std::tan(std::abs(boweta)) * TOPHAT_SIGMA;
311  ATH_MSG_VERBOSE("Shallow track with tanl = " << tanl << " bowphi = " <<
312  bowphi << " angle = " << angle << " width.z = " << width.z() <<
313  " errphi = " << errphi << " erreta = " << erreta);
314  }else if (m_errorStrategy == 0) {
315  errphi = width.phiR() * TOPHAT_SIGMA;
316  erreta = width.z() * TOPHAT_SIGMA;
317  }else if (m_errorStrategy == 1) {
318  errphi = (width.phiR() / nrows) * TOPHAT_SIGMA;
319  erreta = (width.z() / ncol) * TOPHAT_SIGMA;
320  }else if (m_errorStrategy == 2) {
321  std::pair<double,double> delta_err = offlineITkCalibDataHandle->getClusterErrorData()->getDeltaError(&element_id);
322  errphi = nrows != 1 ? delta_err.first : (width.phiR()/nrows)*TOPHAT_SIGMA;
323  erreta = ncol != 1 ? delta_err.second : (width.z()/ncol)*TOPHAT_SIGMA;
324  }
325 
326  Amg::Vector2D locpos = Amg::Vector2D(localphi, localeta);
327  locpar = Trk::LocalParameters(locpos);
328  centroid = InDetDD::SiLocalPosition(localeta, localphi, 0.);
329  glob = element->globalPosition(centroid);
330  }
331 
332  // Error matrix production
333 
334  Amg::MatrixX cov = pix->localCovariance();
335 
336  // corrected phi error
337  if (errphi > 0) {
338  cov(0, 0) = errphi * errphi;
339  }
340  if (erreta > 0) {
341  cov(1, 1) = erreta * erreta;
342  }
343 
344  ATH_MSG_VERBOSE(" errphi = " << errphi << " erreta = " << erreta);
345 
346  // create new copy of error matrix
347  if (!m_pixelErrorScalingKey.key().empty()) {
349  cov = Trk::ErrorScalingCast<PixelRIO_OnTrackErrorScaling>(*error_scaling)
350  ->getScaledCovariance(std::move(cov), *m_pixelid,
351  element->identify());
352  }
353  bool isbroad = m_errorStrategy == 0;
354  return new InDet::PixelClusterOnTrack(pix, std::move(locpar),
355  std::move(cov),
356  iH, glob, pix->gangedPixel(), isbroad);
357 }

◆ correctNN()

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

Definition at line 383 of file ITkPixelClusterOnTrackTool.cxx.

385  {
386 
387  const InDet::PixelCluster *pixelPrepCluster = nullptr;
389  pixelPrepCluster = static_cast<const InDet::PixelCluster *>(&rio);
390  }
391 
392  if (pixelPrepCluster == nullptr) {
393  ATH_MSG_WARNING("This is not a pixel cluster, return 0.");
394  return nullptr;
395  }
396 
397  const InDetDD::SiDetectorElement *element = pixelPrepCluster->detectorElement();
398  if (!element) {
399  ATH_MSG_WARNING("Cannot access detector element. Aborting cluster correction...");
400  return nullptr;
401  }
402 
403  IdentifierHash iH = element->identifyHash();
404 
405  if (m_doNotRecalibrateNN) {
406  Amg::Vector3D glob(pixelPrepCluster->globalPosition());
407 
408  Amg::Vector2D locpos = pixelPrepCluster->localPosition();
410  Amg::MatrixX cov = pixelPrepCluster->localCovariance();
411 
412  return new InDet::PixelClusterOnTrack(pixelPrepCluster, std::move(locpar),
413  std::move(cov), iH, glob,
414  pixelPrepCluster->gangedPixel(), false);
415  }
416 
417 
418 
419  Amg::Vector2D finalposition;
420  Amg::MatrixX finalerrormatrix;
421 
422  if (m_usingTIDE_Ambi) {
423  if (!getErrorsTIDE_Ambi(pixelPrepCluster, trackPar, finalposition, finalerrormatrix)) {
424  return correctDefault(rio, trackPar);
425  }
426  }else {
427  if (!getErrorsDefaultAmbi(pixelPrepCluster, trackPar, finalposition, finalerrormatrix)) {
428  return correctDefault(rio, trackPar);
429  }
430  }
431 
432  ATH_MSG_DEBUG( " Old position x: " << pixelPrepCluster->localPosition()[0]
433  << " +/- " << std::sqrt(pixelPrepCluster->localCovariance()(0, 0))
434  << " y: " << pixelPrepCluster->localPosition()[1]
435  << " +/- " << std::sqrt(pixelPrepCluster->localCovariance()(1, 1)) <<"\n"
436  << " Final position x: " << finalposition[0]
437  << " +/- " << std::sqrt(finalerrormatrix(0, 0))
438  << " y: " << finalposition[1] << " +/- "
439  <<std::sqrt(finalerrormatrix(1, 1)) );
440 
441  Amg::MatrixX cov = finalerrormatrix;
442  // create new copy of error matrix
443  if (!m_pixelErrorScalingKey.key().empty()) {
445  cov = Trk::ErrorScalingCast<PixelRIO_OnTrackErrorScaling>(*error_scaling)
446  ->getScaledCovariance(std::move(cov), *m_pixelid,
447  element->identify());
448  }
449 
451  finalposition[0],
452  0);
453  Trk::LocalParameters locpar = Trk::LocalParameters(finalposition);
454 
455  const Amg::Vector3D &glob = element->globalPosition(centroid);
456 
457 
458  return new InDet::PixelClusterOnTrack(pixelPrepCluster,
459  std::move(locpar),
460  std::move(cov), iH,
461  glob,
462  pixelPrepCluster->gangedPixel(),
463  false);
464 }

◆ declareGaudiProperty() [1/4]

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

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

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

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

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

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

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

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

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

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

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ 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.

95 { return m_detStore; }

◆ evtStore() [1/2]

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.

85 { return m_evtStore; }

◆ evtStore() [2/2]

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

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

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ 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
inlineprotected

Definition at line 108 of file ITkPixelClusterOnTrackTool.h.

108  {
109  if (!pix || m_clusterSplitProbContainer.key().empty())
111 
114  if (!splitProbContainer.isValid()) {
115  ATH_MSG_FATAL("Failed to get cluster splitting probability container "
117  }
118  return splitProbContainer->splitProbability(pix);
119  }

◆ getErrorsDefaultAmbi()

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

Definition at line 467 of file ITkPixelClusterOnTrackTool.cxx.

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

◆ getErrorsTIDE_Ambi()

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

Definition at line 615 of file ITkPixelClusterOnTrackTool.cxx.

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

◆ initialize()

StatusCode ITk::PixelClusterOnTrackTool::initialize ( )
overridevirtual

AlgTool initialisation.

Definition at line 85 of file ITkPixelClusterOnTrackTool.cxx.

85  {
86 
87  ATH_MSG_DEBUG(name() << " initialize()");
88 
90  ATH_MSG_DEBUG("Error strategy is" << m_errorStrategy);
91 
93 
95 
97 
98  // get the error scaling tool
100  if (!m_pixelErrorScalingKey.key().empty()) ATH_MSG_DEBUG("Detected need for scaling Pixel errors.");
101 
102  ATH_CHECK (detStore()->retrieve(m_pixelid, "PixelID"));
103 
106  ATH_CHECK(m_NnClusterizationFactory.retrieve( DisableTool{!m_applyNNcorrection} ));
107 
108  ATH_CHECK(m_lorentzAngleTool.retrieve());
109  return StatusCode::SUCCESS;
110 }

◆ 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()

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

The AlgTool InterfaceID.

Definition at line 41 of file IRIO_OnTrackCreator.h.

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ 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();
383  PBASE::renounce (h);
384  }

◆ 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  {
365  handlesArray.renounce();
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 DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ 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) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

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 157 of file ITkPixelClusterOnTrackTool.h.

◆ m_applyNNcorrectionProperty

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

Definition at line 158 of file ITkPixelClusterOnTrackTool.h.

◆ m_clusterITkErrorKey

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

Definition at line 129 of file ITkPixelClusterOnTrackTool.h.

◆ m_clusterSplitProbContainer

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

Definition at line 169 of file ITkPixelClusterOnTrackTool.h.

◆ 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

bool ITk::PixelClusterOnTrackTool::m_doNotRecalibrateNN
private

Definition at line 163 of file ITkPixelClusterOnTrackTool.h.

◆ m_errorStrategy

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

Definition at line 137 of file ITkPixelClusterOnTrackTool.h.

◆ m_errorStrategyProperty

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

Definition at line 138 of file ITkPixelClusterOnTrackTool.h.

◆ 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 127 of file ITkPixelClusterOnTrackTool.h.

◆ m_NnClusterizationFactory

ToolHandle<InDet::NnClusterizationFactory> ITk::PixelClusterOnTrackTool::m_NnClusterizationFactory
private

NN clusterizationi factory for NN based positions and errors.

Definition at line 161 of file ITkPixelClusterOnTrackTool.h.

◆ m_noNNandBroadErrors

bool ITk::PixelClusterOnTrackTool::m_noNNandBroadErrors
private

Definition at line 164 of file ITkPixelClusterOnTrackTool.h.

◆ 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 131 of file ITkPixelClusterOnTrackTool.h.

◆ m_pixelid

const PixelID* ITk::PixelClusterOnTrackTool::m_pixelid
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 154 of file ITkPixelClusterOnTrackTool.h.

◆ m_positionStrategy

int ITk::PixelClusterOnTrackTool::m_positionStrategy
private

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

Definition at line 136 of file ITkPixelClusterOnTrackTool.h.

◆ m_splitClusterMapKey

SG::ReadHandleKey<InDet::PixelGangedClusterAmbiguities> ITk::PixelClusterOnTrackTool::m_splitClusterMapKey
private

Definition at line 167 of file ITkPixelClusterOnTrackTool.h.

◆ m_usingTIDE_Ambi

bool ITk::PixelClusterOnTrackTool::m_usingTIDE_Ambi
private

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

Definition at line 166 of file ITkPixelClusterOnTrackTool.h.

◆ 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:
ITk::PixelClusterOnTrackTool::m_NnClusterizationFactory
ToolHandle< InDet::NnClusterizationFactory > m_NnClusterizationFactory
NN clusterizationi factory for NN based positions and errors.
Definition: ITkPixelClusterOnTrackTool.h:161
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
xAOD::strategy
strategy
Definition: L2CombinedMuon_v1.cxx:107
query_example.row
row
Definition: query_example.py:24
Trk::LocalParameters
Definition: LocalParameters.h:98
python.SystemOfUnits.second
int second
Definition: SystemOfUnits.py:120
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
PixelID::phi_index
int phi_index(const Identifier &id) const
Definition: PixelID.h:658
Amg::MatrixX
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Definition: EventPrimitives.h:29
ITk::PixelClusterOnTrackTool::m_usingTIDE_Ambi
bool m_usingTIDE_Ambi
Enable different treatment of cluster errors based on NN information (do only if TIDE ambi is run)
Definition: ITkPixelClusterOnTrackTool.h:166
ITk::PixelClusterOnTrackTool::m_splitClusterMapKey
SG::ReadHandleKey< InDet::PixelGangedClusterAmbiguities > m_splitClusterMapKey
Definition: ITkPixelClusterOnTrackTool.h:167
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
max
#define max(a, b)
Definition: cfImp.cxx:41
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
InDetDD::PixelModuleDesign
Definition: PixelModuleDesign.h:48
Trk::ClusterSplitProbabilityContainer::ProbabilityInfo::isSplit
bool isSplit() const
Definition: ClusterSplitProbabilityContainer.h:27
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
index
Definition: index.py:1
Trk::ParametersBase::associatedSurface
virtual const Surface & associatedSurface() const override=0
Access to the Surface associated to the Parameters.
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
InDet::SiCluster::type
virtual bool type(Trk::PrepRawDataType type) const override
Interface method checking the type.
Trk::ClusterSplitProbabilityContainer::ProbabilityInfo
Definition: ClusterSplitProbabilityContainer.h:22
InDetDD::SolidStateDetectorElementBase::etaAxis
const Amg::Vector3D & etaAxis() const
Definition: SolidStateDetectorElementBase.cxx:88
Trk::PrepRawData::localCovariance
const Amg::MatrixX & localCovariance() const
return const ref to the error matrix
Trk::ParametersBase::surfaceType
constexpr virtual SurfaceType surfaceType() const override=0
Returns the Surface Type enum for the surface used to define the derived class.
plotBeamSpotVxVal.cov
cov
Definition: plotBeamSpotVxVal.py:201
ITk::PixelClusterOnTrackTool::getClusterSplittingProbability
const Trk::ClusterSplitProbabilityContainer::ProbabilityInfo & getClusterSplittingProbability(const InDet::PixelCluster *pix) const
Definition: ITkPixelClusterOnTrackTool.h:108
M_PI
#define M_PI
Definition: ActiveFraction.h:11
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
InDetDD::DetectorDesign::readoutSide
int readoutSide() const
ReadoutSide.
Definition: DetectorDesign.h:291
Trk::PrepRawData::type
virtual bool type(PrepRawDataType type) const =0
Interface method checking the type.
ITk::PixelClusterOnTrackTool::correct
virtual InDet::PixelClusterOnTrack * correct(const Trk::PrepRawData &, const Trk::TrackParameters &) const override
produces a PixelClusterOnTrack (object factory!).
Definition: ITkPixelClusterOnTrackTool.cxx:120
ITk::PixelClusterOnTrackTool::m_lorentzAngleTool
ToolHandle< ISiLorentzAngleTool > m_lorentzAngleTool
Definition: ITkPixelClusterOnTrackTool.h:127
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ITk::PixelClusterOnTrackTool::m_noNNandBroadErrors
bool m_noNNandBroadErrors
Definition: ITkPixelClusterOnTrackTool.h:164
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
ITk::PixelClusterOnTrackTool::getErrorsTIDE_Ambi
bool getErrorsTIDE_Ambi(const InDet::PixelCluster *, const Trk::TrackParameters &, Amg::Vector2D &, Amg::MatrixX &) const
Definition: ITkPixelClusterOnTrackTool.cxx:615
InDetDD::SolidStateDetectorElementBase::identifyHash
virtual IdentifierHash identifyHash() const override final
identifier hash (inline)
drawFromPickle.atan
atan
Definition: drawFromPickle.py:36
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
InDetDD::SiLocalPosition
Definition: SiLocalPosition.h:31
InDetDD::PixelModuleDesign::positionFromColumnRow
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...
Definition: PixelModuleDesign.cxx:219
ITk::PixelClusterOnTrackTool::m_clusterITkErrorKey
SG::ReadCondHandleKey< ITk::PixelOfflineCalibData > m_clusterITkErrorKey
Definition: ITkPixelClusterOnTrackTool.h:129
ITk::PixelClusterOnTrackTool::correctNN
InDet::PixelClusterOnTrack * correctNN(const Trk::PrepRawData &, const Trk::TrackParameters &) const
Definition: ITkPixelClusterOnTrackTool.cxx:384
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ITk::PixelClusterOnTrackTool::m_pixelid
const PixelID * m_pixelid
Flag controlling how module distortions are taken into account:
Definition: ITkPixelClusterOnTrackTool.h:154
ITk::PixelClusterOnTrackTool::m_positionStrategy
int m_positionStrategy
toolhandle for central error scaling flag storing if errors need scaling or should be kept nominal
Definition: ITkPixelClusterOnTrackTool.h:136
lumiFormat.i
int i
Definition: lumiFormat.py:92
ITk::PixelClusterOnTrackTool::getErrorsDefaultAmbi
bool getErrorsDefaultAmbi(const InDet::PixelCluster *, const Trk::TrackParameters &, Amg::Vector2D &, Amg::MatrixX &) const
Definition: ITkPixelClusterOnTrackTool.cxx:467
ITk::PixelClusterStrategy::SHARED
@ SHARED
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
beamspotman.n
n
Definition: beamspotman.py:731
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
angle
double angle(const GeoTrf::Vector2D &a, const GeoTrf::Vector2D &b)
Definition: TRTDetectorFactory_Full.cxx:73
ITk::PixelClusterOnTrackTool::correctDefault
InDet::PixelClusterOnTrack * correctDefault(const Trk::PrepRawData &, const Trk::TrackParameters &) const
The correct method produces a PixelClusterOnTrack using the measured PixelCluster and the track predi...
Definition: ITkPixelClusterOnTrackTool.cxx:157
ITk::PixelClusterOnTrackTool::m_errorStrategy
std::atomic_int m_errorStrategy
Definition: ITkPixelClusterOnTrackTool.h:137
ITk::PixelClusterOnTrackTool::m_pixelErrorScalingKey
SG::ReadCondHandleKey< RIO_OnTrackErrorScaling > m_pixelErrorScalingKey
Definition: ITkPixelClusterOnTrackTool.h:132
PixelID::eta_index
int eta_index(const Identifier &id) const
Definition: PixelID.h:664
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
ITk::PixelClusterOnTrackTool::m_clusterSplitProbContainer
SG::ReadHandleKey< Trk::ClusterSplitProbabilityContainer > m_clusterSplitProbContainer
Definition: ITkPixelClusterOnTrackTool.h:169
drawFromPickle.tan
tan
Definition: drawFromPickle.py:36
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
python.SystemOfUnits.micrometer
int micrometer
Definition: SystemOfUnits.py:71
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
Trk::ParametersBase::type
constexpr virtual ParametersType type() const override=0
Return the ParametersType enum.
InDetDD::SolidStateDetectorElementBase::normal
virtual const Amg::Vector3D & normal() const override final
Get reconstruction local normal axes in global frame.
InDet::SiCluster::detectorElement
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...
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
min
#define min(a, b)
Definition: cfImp.cxx:40
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
Trk::ParametersCommon::localPosition
Amg::Vector2D localPosition() const
Access method for the local coordinates, local parameter definitions differ for each surface type.
PixelID::eta_module
int eta_module(const Identifier &id) const
Definition: PixelID.h:651
Trk::ParametersBase::pT
double pT() const
Access method for transverse momentum.
InDet::SiCluster::gangedPixel
bool gangedPixel() const
return the flag of this cluster containing a gangedPixel
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
Trk::PrepRawDataType::PixelCluster
@ PixelCluster
Trk::PrepRawData::localPosition
const Amg::Vector2D & localPosition() const
return the local position reference
InDetDD::SiDetectorElement
Definition: SiDetectorElement.h:109
ITk::PixelClusterOnTrackTool::m_applyNNcorrection
bool m_applyNNcorrection
Enable NN based calibration (do only if NN calibration is applied)
Definition: ITkPixelClusterOnTrackTool.h:157
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
ITk::PixelClusterOnTrackTool::m_doNotRecalibrateNN
bool m_doNotRecalibrateNN
Definition: ITkPixelClusterOnTrackTool.h:163
query_example.col
col
Definition: query_example.py:7
Trk::ClusterSplitProbabilityContainer::ProbabilityInfo::isTooBigToBeSplit
bool isTooBigToBeSplit() const
Definition: ClusterSplitProbabilityContainer.h:26
InDet::PixelCluster
Definition: InnerDetector/InDetRecEvent/InDetPrepRawData/InDetPrepRawData/PixelCluster.h:49
ITk::PixelClusterOnTrackTool::m_applyNNcorrectionProperty
BooleanProperty m_applyNNcorrectionProperty
Definition: ITkPixelClusterOnTrackTool.h:158
Trk::AtaSurface
@ AtaSurface
Definition: ParametersCommon.h:29
Trk::ParametersBase::momentum
const Amg::Vector3D & momentum() const
Access method for the momentum.
InDet::SiCluster::globalPosition
const Amg::Vector3D & globalPosition() const
return global position reference
DeMoScan.index
string index
Definition: DeMoScan.py:362
a
TList * a
Definition: liststreamerinfos.cxx:10
h
Base_Fragment.width
width
Definition: Sherpa_i/share/common/Base_Fragment.py:59
InDet::PixelClusterOnTrack
Definition: PixelClusterOnTrack.h:51
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
ITk::PixelClusterOnTrackTool::m_errorStrategyProperty
IntegerProperty m_errorStrategyProperty
Definition: ITkPixelClusterOnTrackTool.h:138
InDetDD::SolidStateDetectorElementBase::globalPosition
HepGeom::Point3D< double > globalPosition(const HepGeom::Point3D< double > &localPos) const
transform a reconstruction local position into a global position (inline):
eFEXNTuple.delta_phi
def delta_phi(phi1, phi2)
Definition: eFEXNTuple.py:15
InDetDD::SolidStateDetectorElementBase::phiAxis
const Amg::Vector3D & phiAxis() const
Definition: SolidStateDetectorElementBase.cxx:74
DeMoScan.first
bool first
Definition: DeMoScan.py:534
ITk::PixelClusterStrategy::OUTLIER
@ OUTLIER
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
InDet::SiWidth
Definition: SiWidth.h:25
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
Trk::ParametersBase::eta
double eta() const
Access method for pseudorapidity - from momentum.
Trk::SurfaceType::Plane
@ Plane
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
IdentifierHash
Definition: IdentifierHash.h:38
pix
Definition: PixelMapping.cxx:16
InDetDD::SiDetectorElement::design
virtual const SiDetectorDesign & design() const override final
access to the local description (inline):
PixelID::phi_module
int phi_module(const Identifier &id) const
Definition: PixelID.h:644
Amg::distance
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
Definition: GeoPrimitivesHelpers.h:54
Trk::ClusterSplitProbabilityContainer::getNoSplitProbability
static const ProbabilityInfo & getNoSplitProbability()
Definition: ClusterSplitProbabilityContainer.h:33
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
InDet::SiCluster
Definition: InnerDetector/InDetRecEvent/InDetPrepRawData/InDetPrepRawData/SiCluster.h:40
InDetDD::SolidStateDetectorElementBase::identify
virtual Identifier identify() const override final
identifier of this detector element (inline)
NSWL1::centroid
Vertex centroid(const Polygon &p)
Definition: GeoUtils.cxx:59
fitman.k
k
Definition: fitman.py:528