User will overwrite this function. Histogram booking is no longer done in C++. This function is called in execute once the filters are all passed.
148{
149 using namespace Monitored;
150
152
153
154 const auto & residualGroup =
getGroup(
"Residuals");
155
156
158 int nTracks = 0;
159
160
162 auto mu_m = Monitored::Scalar<float>("mu_m", 0.0);
164
166 fill(
"residualGroup", mu_m);
167 }
168
169
171 if (not tracks.isValid()) {
173 return StatusCode::RECOVERABLE;
174 }
175
176
177 ATH_MSG_DEBUG (
"IDAlignMonResidual: Start loop on tracks. Number of tracks " << tracks->size());
178 for (const Trk::Track* trksItr: *tracks) {
179
180
181 if ( !trksItr || trksItr->perigeeParameters() == nullptr ) {
182 ATH_MSG_DEBUG(
"InDetAlignmentMonitoringRun3: NULL track pointer in collection" );
183 continue;
184 }
185
186
188 continue;
189
190 nTracks++;
191
192
194 ATH_MSG_DEBUG(
"Not all TSOS contain track parameters - will be missing residuals/pulls");
195 }
196 else
197 ATH_MSG_DEBUG(
"All TSOS of track " << nTracks <<
"/" << tracks->size() <<
" contain track parameters - Good!");
198
199
200
201 ATH_MSG_DEBUG(
"** IDAlignMonResiduals::fillHistograms() ** track: " << nTracks <<
" has " << trksItr->trackStateOnSurfaces()->size() <<
" TrkSurfaces");
202
204 int nTSOS = -1;
205
206 const Trk::Perigee* measPer = trksItr->perigeeParameters();
208 float trkpt = -999;
209 trkpt = measPer->
pT()/1000.;
211
212
213 for (const Trk::TrackStateOnSurface* tsos : *trksItr->trackStateOnSurfaces()) {
214
215 ++nTSOS;
216
217 if (tsos == nullptr) {
219 continue;
220 }
221
222
223 ATH_MSG_DEBUG(
" --> testing if hit " << nTSOS <<
"/" << trksItr->trackStateOnSurfaces()->size() <<
" is a track measurement");
225 ATH_MSG_DEBUG(
"Skipping TSOS " << nTSOS <<
" because it is an outlier (or the first TSOS on the track)");
226 continue;
227 }
228
229 const Trk::MeasurementBase* mesh =tsos->measurementOnTrack();
230 ATH_MSG_DEBUG(
" --> Defined hit measurementOnTrack() for hit: " << nTSOS <<
"/" << trksItr->trackStateOnSurfaces()->size() <<
" of track " << nTracks);
231
232
233 const Trk::RIO_OnTrack* hit = dynamic_cast <const Trk::RIO_OnTrack*>(mesh);
234 ATH_MSG_DEBUG(
" --> Going to retrieve the Trk::RIO_OnTrack for hit " << nTSOS);
235 if (hit== nullptr) {
236
238 continue;
239 }
240
241 ATH_MSG_DEBUG(
" --> Going to retrieve the track parameters of this TSOS: " << nTSOS);
243 if(trackParameter==nullptr) {
244
245 ATH_MSG_DEBUG(
" Skipping TSOS " << nTSOS <<
" because it does not have TrackParameters");
246 continue;
247 }
248
249 const AmgSymMatrix(5)* TrackParCovariance = trackParameter->covariance();
250
251 if(TrackParCovariance==nullptr) {
252
253
254 ATH_MSG_DEBUG(
"Skipping TSOS " << nTSOS <<
" because does not have MeasuredTrackParameters");
255 continue;
256 }
257
259 " --> going to define residuals and everything of TSOS #" << nTSOS << "/" <<
260 trksItr->trackStateOnSurfaces()->size());
261
262 float residualX = 9999.0;
263 float residualY = 9999.0;
264 float pullX = 9999.0;
265 float pullY = 9999.0;
266 float biasedResidualX = 9999.0;
267 float biasedResidualY = 9999.0;
268 int detType = 99;
269 int barrelEC = 99;
270 int layerDisk = 99;
271 int barrel_ec = 99;
272 int layer_or_wheel = 99;
273 int sctSide = 99;
274 int modEta = 9999;
275 int modPhi = 9999;
276
277 const Identifier & hitId = hit->
identify();
279 else if (
m_idHelper->is_sct(hitId)) detType = 1;
280 else if (
m_idHelper->is_pixel(hitId)) detType = 0;
281 else detType = 99;
282
283
284 if ( detType == 99) {
285 ATH_MSG_DEBUG(
" --> Hit " << nTSOS <<
" with detector type " << detType <<
" is not an Inner Detector hit -> skip this hit");
286 continue;
287 }
288
289
290 if (detType == 2) {
291 ATH_MSG_DEBUG(
"** IDAlignMonResidualsAlg::fillHistograms() ** Hit is from the TRT, finding residuals... ");
294
295 if (!trackParameter) {
296 ATH_MSG_WARNING(
"No TrackParameters associated with TRT TrkSurface " << nTSOS);
297 continue;
298 }
300 float trketa = tsos->trackParameters()->eta();
301 float pullR = -9.9;
302
303 const Identifier&
id =
m_trtID->layer_id(hitId);
304 barrel_ec =
m_trtID->barrel_ec(
id);
305 layer_or_wheel =
m_trtID->layer_or_wheel(
id);
306 int phi_module =
m_trtID->phi_module(
id);
307
308
309 ATH_MSG_DEBUG(
"Found Trk::TrackParameters for hit " << nTSOS <<
" --> TRT hit (detType= " << detType <<
")" );
310
311
312
314
315 if (!trackParameterUnbiased) {
316 ATH_MSG_WARNING(
"Cannot define unbiased parameters for hit, skipping it.");
317 continue;
318 }
319 ATH_MSG_DEBUG(
" --> TRT UnBiased TrackParameters of hit " << nTSOS <<
" FOUND");
320
321 float predictR = trackParameterUnbiased->parameters()[
Trk::locR];
322
323 const Trk::MeasurementBase* mesh = tsos->measurementOnTrack();
324 std::optional<Trk::ResidualPull> residualPull =
326 trackParameterUnbiased.get(),
328
329 if (residualPull) {
331 }
332 else {
333 ATH_MSG_DEBUG(
" no covariance of the track parameters given, can not calculate pull!");
334 }
335
336
337
338 float residualR = hitR - predictR;
339
340 const InDet::TRT_DriftCircleOnTrack* trtCircle =
341 dynamic_cast<const InDet::TRT_DriftCircleOnTrack*>(tsos->measurementOnTrack());
342
343 if (trtCircle != nullptr) {
344 ATH_MSG_DEBUG(
" fillHistograms() ** filling TRT histograms for hit/tsos #" << nTSOS
345 << " Barrel/EndCap: " << barrel_ec
346 << " layer/wheel: " << layer_or_wheel
347 << " phi: " << phi_module
348 << " Residual: " << residualR);
351 , layer_or_wheel
352 , phi_module
353 , predictR
354 , hitR
355 , residualR
356 , pullR
357 , isTubeHit
358 , trketa
359 , qpT);
360 }
361 }
362
363 else {
365 ATH_MSG_DEBUG(
"applying hit quality cuts to Silicon hit...");
367 if(hit==nullptr) {
369 continue;
370 }
372 }
373 else ATH_MSG_DEBUG(
"hit quality cuts NOT APPLIED to Silicon hit.");
374
375
376 if (detType==0){
377 const Identifier&
id =
m_pixelID->wafer_id(hitId);
382 }
383 else {
384 const Identifier&
id =
m_sctID->wafer_id(hitId);
385 barrelEC =
m_sctID->barrel_ec(
id);
386 layerDisk =
m_sctID->layer_disk(
id);
387 modEta =
m_sctID->eta_module(
id);
388 modPhi =
m_sctID->phi_module(
id);
390 }
391
392
393 if(trackParameter){
394
395 ATH_MSG_DEBUG(
"Found Trk::TrackParameters " << trackParameter);
396
397 double unbiasedResXY[4] = {9999.0,9999.0,9999.0,9999.0};
398 double biasedResXY[4] = {9999.0,9999.0,9999.0,9999.0};
399
400
403 if (
sc.isFailure()) {
404 ATH_MSG_DEBUG(
"Problem in determining unbiased residuals! Hit is skipped.");
405 auto detType_m = Monitored::Scalar<int>( "m_detType", detType);
406 fill(residualGroup, detType_m);
407 continue;
408 }
409 else
411
412 residualX = (
float)unbiasedResXY[0];
413 residualY = (
float)unbiasedResXY[1];
414 pullX = (
float)unbiasedResXY[2];
415 pullY = (
float)unbiasedResXY[3];
416
417
419 if (
sc.isFailure()) {
420 ATH_MSG_DEBUG(
"Problem in determining biased residuals! Hit is skipped.");
421 continue;
422 }
423 else
425
426 biasedResidualX = (
float)biasedResXY[0];
427 biasedResidualY = (
float)biasedResXY[1];
428
429 }
430 else {
431 ATH_MSG_DEBUG(
"No TrackParameters associated with Si TrkSurface "<< nTSOS <<
" - Hit is probably an outlier");
432 }
433 }
434
435
436
437
438
439
440
441
442 auto si_residualx_m = Monitored::Scalar<float>( "m_si_residualx", 0.0);
443 auto si_b_residualx_m = Monitored::Scalar<float>( "m_si_b_residualx", 0.0);
444 auto si_barrel_resX_m = Monitored::Scalar<float>( "m_si_barrel_resX", 0.0);
445 auto si_barrel_resY_m = Monitored::Scalar<float>( "m_si_barrel_resY", 0.0);
446 auto si_barrel_pullX_m = Monitored::Scalar<float>( "m_si_barrel_pullX", 0.0);
447 auto si_barrel_pullY_m = Monitored::Scalar<float>( "m_si_barrel_pullY", 0.0);
448 auto si_eca_resX_m = Monitored::Scalar<float>( "m_si_eca_resX", 0.0);
449 auto si_eca_resY_m = Monitored::Scalar<float>( "m_si_eca_resY", 0.0);
450 auto si_eca_pullX_m = Monitored::Scalar<float>( "m_si_eca_pullX", 0.0);
451 auto si_eca_pullY_m = Monitored::Scalar<float>( "m_si_eca_pullY", 0.0);
452 auto si_ecc_resX_m = Monitored::Scalar<float>( "m_si_ecc_resX", 0.0);
453 auto si_ecc_resY_m = Monitored::Scalar<float>( "m_si_ecc_resY", 0.0);
454 auto si_ecc_pullX_m = Monitored::Scalar<float>( "m_si_ecc_pullX", 0.0);
455 auto si_ecc_pullY_m = Monitored::Scalar<float>( "m_si_ecc_pullY", 0.0);
456 auto residualX_m = Monitored::Scalar<float>( "m_residualX", residualX);
457 auto residualY_m = Monitored::Scalar<float>( "m_residualY", residualY);
458 auto modEta_m = Monitored::Scalar<int>( "m_modEta", modEta );
459 auto modPhi_m = Monitored::Scalar<int>( "m_modPhi", modPhi );
461 auto lb_m = Monitored::Scalar<int>(
"m_lb",
lb );
462 auto layerDisk_m = Monitored::Scalar<float>("m_layerDisk", layerDisk);
463 auto layerDisk_si_m = Monitored::Scalar<float>("m_layerDisk_si", 0);
464
465 if (detType==0) {
466 ATH_MSG_DEBUG(
" This is a PIXEL hit " << hitId <<
" - filling histograms");
467
468 si_residualx_m = residualX;
469 fill(residualGroup, si_residualx_m);
470
471 if(barrelEC==0){
472 int ModEtaShift[4] = {12, 38, 60, 82};
473 int ModPhiShift[4] = {0, 24, 56, 104};
474
475
476 si_b_residualx_m = residualX;
477 fill(residualGroup, si_b_residualx_m);
478
479 layerDisk_si_m = layerDisk;
480 si_barrel_resX_m = residualX;
481 si_barrel_resY_m = residualY;
482 si_barrel_pullX_m = pullX;
483 si_barrel_pullY_m = pullY;
484 fill(residualGroup, layerDisk_si_m, si_barrel_resX_m, si_barrel_resY_m, si_barrel_pullX_m, si_barrel_pullY_m);
485
486
487 auto pix_b_residualx_m = Monitored::Scalar<float>( "m_pix_b_residualx", residualX);
488 auto pix_b_biased_residualx_m = Monitored::Scalar<float>( "m_pix_b_biased_residualx", biasedResidualX);
489 auto pix_b_residualy_m = Monitored::Scalar<float>( "m_pix_b_residualy", residualY);
490 auto pix_b_biased_residualy_m = Monitored::Scalar<float>( "m_pix_b_biased_residualy", biasedResidualY);
491 fill(residualGroup, pix_b_residualx_m, pix_b_biased_residualx_m, pix_b_residualy_m, pix_b_biased_residualy_m);
492 auto pix_b_residualsx_m = Monitored::Scalar<float>("m_pix_residualsx", residualX);
495 auto pix_b_residualsy_m = Monitored::Scalar<float>("m_pix_residualsy", residualY);
498 auto pix_b_pullsx_m = Monitored::Scalar<float>("m_pix_pullsx", pullX);
500 auto pix_b_pullsy_m = Monitored::Scalar<float>("m_pix_pullsy", pullY);
502
503
508
509 auto residualX_barrel_m = Monitored::Scalar<float>( "m_residualX_barrel", residualX);
510 auto residualY_barrel_m = Monitored::Scalar<float>( "m_residualY_barrel", residualY);
511 auto modPhiShift_barrel_m = Monitored::Scalar<int>( "m_modPhiShift_barrel", modPhi + ModPhiShift[layerDisk] );
512 auto modEtaShift_barrel_m = Monitored::Scalar<int>( "m_modEtaShift_barrel", modEta + ModEtaShift[layerDisk] );
513 fill(residualGroup, modPhiShift_barrel_m, residualX_barrel_m, residualY_barrel_m);
514 fill(residualGroup, modEtaShift_barrel_m, residualX_barrel_m, residualY_barrel_m);
515 }
516 else if(barrelEC==2){
517 int ModPhiShift[3] = {0, 55, 110};
518
519
520 layerDisk_si_m = layerDisk;
521 si_eca_resX_m = residualX;
522 si_eca_resY_m = residualY;
523 si_eca_pullX_m = pullX;
524 si_eca_pullY_m = pullY;
525 fill(residualGroup, layerDisk_si_m, si_eca_resX_m, si_eca_resY_m, si_eca_pullX_m, si_eca_pullY_m);
526
527
528 auto pix_eca_residualx_m = Monitored::Scalar<float>( "m_pix_eca_residualx", residualX);
529 auto pix_ec_residualx_m = Monitored::Scalar<float>( "m_pix_ec_residualx", residualX);
531 auto pix_eca_residualy_m = Monitored::Scalar<float>( "m_pix_eca_residualy", residualY);
532 auto pix_ec_residualy_m = Monitored::Scalar<float>( "m_pix_ec_residualy", residualY);
533 fill(residualGroup, pix_eca_residualx_m, pix_eca_residualy_m);
535 auto pix_eca_pullx_m = Monitored::Scalar<float>( "m_pix_eca_pullx", pullX);
536 auto pix_eca_pully_m = Monitored::Scalar<float>( "m_pix_eca_pully", pullY);
537 fill(residualGroup, pix_eca_pullx_m, pix_eca_pully_m);
538
539
540 auto residualX_eca_m = Monitored::Scalar<float>( "m_residualX_eca", residualX );
541 auto residualY_eca_m = Monitored::Scalar<float>( "m_residualY_eca", residualY );
542 auto modPhiShift_eca_m = Monitored::Scalar<int>( "m_modPhiShift_eca", modPhi + ModPhiShift[layerDisk]);
545 fill(residualGroup, modPhiShift_eca_m, residualX_eca_m, residualY_eca_m);
546 }
547 else if(barrelEC==-2){
548 int ModPhiShift[3] = {0, 55, 110};
549
550
551 layerDisk_si_m = layerDisk;
552 si_ecc_resX_m = residualX;
553 si_ecc_resY_m = residualY;
554 si_ecc_pullX_m = pullX;
555 si_ecc_pullY_m = pullY;
556 fill(residualGroup, layerDisk_si_m, si_ecc_resX_m, si_ecc_resY_m, si_ecc_pullX_m, si_ecc_pullY_m);
557
558
559 auto pix_ecc_residualx_m = Monitored::Scalar<float>( "m_pix_ecc_residualx", residualX);
560 auto pix_ec_residualx_m = Monitored::Scalar<float>( "m_pix_ec_residualx", residualX);
562 auto pix_ecc_residualy_m = Monitored::Scalar<float>( "m_pix_ecc_residualy", residualY);
563 auto pix_ec_residualy_m = Monitored::Scalar<float>( "m_pix_ec_residualy", residualY);
564 fill(residualGroup, pix_ecc_residualx_m, pix_ecc_residualy_m);
566 auto pix_ecc_pullx_m = Monitored::Scalar<float>( "m_pix_ecc_pullx", pullX);
567 auto pix_ecc_pully_m = Monitored::Scalar<float>( "m_pix_ecc_pully", pullY);
568 fill(residualGroup, pix_ecc_pullx_m, pix_ecc_pully_m);
569
570
571 auto residualX_ecc_m = Monitored::Scalar<float>( "m_residualX_ecc", residualX);
572 auto residualY_ecc_m = Monitored::Scalar<float>( "m_residualY_ecc", residualY);
573 auto modPhiShift_ecc_m = Monitored::Scalar<int>( "m_modPhiShift_ecc", modPhi + ModPhiShift[layerDisk] );
576 fill(residualGroup, modPhiShift_ecc_m, residualX_ecc_m, residualY_ecc_m);
577 }
578 }
579 else if (detType==1) {
580 si_residualx_m = residualX;
581 fill(residualGroup, si_residualx_m);
582
583 ATH_MSG_DEBUG(
" This is a SCT hit " << hitId <<
" - filling histograms");
584
585 if(barrelEC==0){
586 int ModPhiShift[4] = {0, 42, 92, 150};
587 int ModEtaShift[4] = {12, 34, 54, 78};
588
589
590 si_b_residualx_m = residualX;
591 fill(residualGroup, si_b_residualx_m);
592
593 layerDisk_si_m = 4 + 2 * layerDisk + sctSide;
594 si_barrel_resX_m = residualX;
595 si_barrel_pullX_m = pullX;
596 fill(residualGroup, layerDisk_si_m, si_barrel_resX_m, si_barrel_pullX_m);
597
598
599 auto sct_b_residualx_m = Monitored::Scalar<float>( "m_sct_b_residualx", residualX);
600 fill(residualGroup, sct_b_residualx_m);
601 auto sct_b_biased_residualx_m = Monitored::Scalar<float>( "m_sct_b_biased_residualx", biasedResidualX);
602 auto sct_b_residualsx_m = Monitored::Scalar<float>("m_sct_residualsx", residualX);
605 auto sct_b_pullsx_m = Monitored::Scalar<float>("m_sct_pullsx", pullX);
607 if (sctSide == 0) {
609 } else {
611 }
612
613
616
617 auto residualX_sct_barrel_m = Monitored::Scalar<float>( "m_residualX_sct_barrel", residualX);
618 auto modPhiShift_sct_barrel_m = Monitored::Scalar<int>( "m_modPhiShift_sct_barrel", modPhi + ModPhiShift[layerDisk] );
619 auto modEtaShift_sct_barrel_m = Monitored::Scalar<int>( "m_modEtaShift_sct_barrel", modEta + ModEtaShift[layerDisk] );
620 fill(residualGroup, modPhiShift_sct_barrel_m, modEtaShift_sct_barrel_m, residualX_sct_barrel_m);
621 }
622
623 else if(barrelEC==2){
624 int Nmods = 52;
625 int gap_sct = 10;
626
627
628 layerDisk_si_m = 3 + 2 * layerDisk + sctSide;
629 si_eca_resX_m = residualX;
630 si_eca_pullX_m = pullX;
631 fill(residualGroup, layerDisk_si_m, si_eca_resX_m, si_eca_pullX_m);
632
633
634 auto sct_eca_residualx_m = Monitored::Scalar<float>( "m_sct_eca_residualx", residualX);
636 auto sct_eca_pullx_m = Monitored::Scalar<float>( "m_sct_eca_pullx", pullX);
637 fill(residualGroup, sct_eca_residualx_m, sct_eca_pullx_m);
638 if (sctSide == 0) {
640 } else {
642 }
643
644
645 auto residualX_sct_eca_m = Monitored::Scalar<float>( "m_residualX_sct_eca", residualX);
646 auto modPhiShift_sct_eca_m = Monitored::Scalar<int>( "m_modPhiShift_sct_eca", modPhi + layerDisk * (gap_sct + Nmods) );
647 fill(residualGroup, modPhiShift_sct_eca_m, residualX_sct_eca_m);
648 }
649
650 else if(barrelEC==-2){
651 int Nmods = 52;
652 int gap_sct = 10;
653
654
655 layerDisk_si_m = 3 + 2 * layerDisk + sctSide;
656 si_ecc_resX_m = residualX;
657 si_ecc_pullX_m = pullX;
658 fill(residualGroup, layerDisk_si_m, si_ecc_resX_m, si_ecc_pullX_m);
659
660
661 auto sct_ecc_residualx_m = Monitored::Scalar<float>( "m_sct_ecc_residualx", residualX);
663 auto sct_ecc_pullx_m = Monitored::Scalar<float>( "m_sct_ecc_pullx", pullX);
664 fill(residualGroup, sct_ecc_residualx_m, sct_ecc_pullx_m);
665 if (sctSide == 0) {
667 } else {
669 }
670
671
672 auto residualX_sct_ecc_m = Monitored::Scalar<float>( "m_residualX_sct_ecc", residualX);
673 auto modPhiShift_sct_ecc_m = Monitored::Scalar<int>( "m_modPhiShift_sct_ecc", modPhi + layerDisk * (gap_sct + Nmods) );
674 fill(residualGroup, modPhiShift_sct_ecc_m, residualX_sct_ecc_m);
675 }
676 }
678
679 }
680 }
681
683
684 return StatusCode::SUCCESS;
685}
double charge(const T &p)
#define AmgSymMatrix(dim)
static const uint32_t nHits
const ToolHandle< GenericMonitoringTool > & getGroup(const std::string &name) const
Get a specific monitoring tool from the tool handle array.
SG::ReadHandle< xAOD::EventInfo > GetEventInfo(const EventContext &) const
Return a ReadHandle for an EventInfo object (get run/event numbers, etc.).
ToolHandleArray< GenericMonitoringTool > m_tools
Array of Generic Monitoring Tools.
StatusCode getSiResiduals(const Trk::Track *, const Trk::TrackStateOnSurface *, bool, double *) const
void fillTRTHistograms(int barrel_ec, int layer_or_wheel, int phi_module, float predictR, float hitR, float residualR, float pullR, bool isTubeHit, float trketa, float qpT) const
std::vector< int > m_sct_s1_ResidualX_2DProf
std::vector< int > m_pixResidualYvsEta
std::vector< int > m_pixResidualYvsPhi
std::vector< int > m_pixECResidualY_2DProf
std::vector< int > m_sctPullX
std::vector< int > m_sctECC_s0_ResidualX_2DProf
std::vector< int > m_pixResidualX_2DProf
std::vector< int > m_sctECC_s1_ResidualX_2DProf
std::vector< int > m_sctResidualXvsEta
std::vector< int > m_sctResidualXvsPhi
std::vector< int > m_pixResidualX
std::vector< int > m_pixResidualY_2DProf
std::vector< int > m_pixResidualXvsPhi
std::vector< int > m_sctECA_s0_ResidualX_2DProf
std::vector< int > m_pixPullY
bool trackRequiresRefit(const Trk::Track *) const
std::vector< int > m_pixResidualY
const AtlasDetectorID * m_idHelper
std::vector< int > m_pixECCResidualX
std::vector< int > m_pixResidualXvsEta
const PixelID * m_pixelID
std::unique_ptr< Trk::TrackParameters > getUnbiasedTrackParameters(const Trk::Track *, const Trk::TrackStateOnSurface *) const
std::vector< int > m_sctECA_s1_ResidualX_2DProf
std::vector< int > m_sct_s0_ResidualX_2DProf
std::vector< int > m_pixECAResidualX
std::vector< int > m_pixECCResidualY
std::vector< int > m_sctECCResidualX_2DProf
std::vector< int > m_pixECAResidualY
std::vector< int > m_sctECAResidualX_2DProf
std::vector< int > m_pixECResidualX_2DProf
std::vector< int > m_sctResidualX_2DProf
std::vector< int > m_pixPullX
std::vector< int > m_sctResidualX
SG::ReadHandleKey< TrackCollection > m_tracksName
const LocalParameters & localParameters() const
Interface method to get the LocalParameters.
const Amg::MatrixX & localCovariance() const
Interface method to get the localError.
double charge() const
Returns the charge.
double pT() const
Access method for transverse momentum.
Identifier identify() const
return the identifier -extends MeasurementBase
@ Unbiased
RP with track state that has measurement not included.
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
void fill(const ToolHandle< GenericMonitoringTool > &groupHandle, std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > &&variables) const
Fills a vector of variables to a group by reference.
virtual float lbAverageInteractionsPerCrossing(const EventContext &ctx) const
Calculate the average mu, i.e.
::StatusCode StatusCode
StatusCode definition for legacy code.
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
ParametersBase< TrackParametersDim, Charged > TrackParameters