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 auto residualGroup =
getGroup(
"Residuals");
155
156
157 bool hasBeenCalledThisEvent=false;
159 int nTracks = 0;
160
162 auto mu_m = Monitored::Scalar<float>("mu_m", 0.0);
163 if (!hasBeenCalledThisEvent){
166 hasBeenCalledThisEvent=true;
167 }
168 else
170
172 fill(
"residualGroup", mu_m);
173 }
174
175
177 if (not tracks.isValid()) {
179 return StatusCode::RECOVERABLE;
180 }
181
182
183 ATH_MSG_DEBUG (
"IDAlignMonResidual: Start loop on tracks. Number of tracks " << tracks->size());
184 for (const Trk::Track* trksItr: *tracks) {
185
186
187 if ( !trksItr || trksItr->perigeeParameters() == nullptr ) {
188 ATH_MSG_DEBUG(
"InDetAlignmentMonitoringRun3: NULL track pointer in collection" );
189 continue;
190 }
191
192
194 continue;
195
196 nTracks++;
197
198
200 ATH_MSG_DEBUG(
"Not all TSOS contain track parameters - will be missing residuals/pulls");
201 }
202 else
203 ATH_MSG_DEBUG(
"All TSOS of track " << nTracks <<
"/" << tracks->size() <<
" contain track parameters - Good!");
204
205
206
207 ATH_MSG_DEBUG(
"** IDAlignMonResiduals::fillHistograms() ** track: " << nTracks <<
" has " << trksItr->trackStateOnSurfaces()->size() <<
" TrkSurfaces");
208
210 int nTSOS = -1;
211
212 const Trk::Perigee* measPer = trksItr->perigeeParameters();
214 float trkpt = -999;
215 trkpt = measPer->
pT()/1000.;
217
218
219 for (const Trk::TrackStateOnSurface* tsos : *trksItr->trackStateOnSurfaces()) {
220
221 ++nTSOS;
222
223 if (tsos == nullptr) {
225 continue;
226 }
227
228
229 ATH_MSG_DEBUG(
" --> testing if hit " << nTSOS <<
"/" << trksItr->trackStateOnSurfaces()->size() <<
" is a track measurement");
231 ATH_MSG_DEBUG(
"Skipping TSOS " << nTSOS <<
" because it is an outlier (or the first TSOS on the track)");
232 continue;
233 }
234
235 const Trk::MeasurementBase* mesh =tsos->measurementOnTrack();
236 ATH_MSG_DEBUG(
" --> Defined hit measurementOnTrack() for hit: " << nTSOS <<
"/" << trksItr->trackStateOnSurfaces()->size() <<
" of track " << nTracks);
237
238
239 const Trk::RIO_OnTrack* hit = dynamic_cast <const Trk::RIO_OnTrack*>(mesh);
240 ATH_MSG_DEBUG(
" --> Going to retrieve the Trk::RIO_OnTrack for hit " << nTSOS);
241 if (hit== nullptr) {
242
244 continue;
245 }
246
247 ATH_MSG_DEBUG(
" --> Going to retrieve the track parameters of this TSOS: " << nTSOS);
249 if(trackParameter==nullptr) {
250
251 ATH_MSG_DEBUG(
" Skipping TSOS " << nTSOS <<
" because it does not have TrackParameters");
252 continue;
253 }
254
255 const AmgSymMatrix(5)* TrackParCovariance = trackParameter ? trackParameter->covariance() :
nullptr;
256
257 if(TrackParCovariance==nullptr) {
258
259
260 ATH_MSG_DEBUG(
"Skipping TSOS " << nTSOS <<
" because does not have MeasuredTrackParameters");
261 continue;
262 }
263
265 " --> going to define residuals and everything of TSOS #" << nTSOS << "/" <<
266 trksItr->trackStateOnSurfaces()->size());
267
268 float residualX = 9999.0;
269 float residualY = 9999.0;
270 float pullX = 9999.0;
271 float pullY = 9999.0;
272 float biasedResidualX = 9999.0;
273 float biasedResidualY = 9999.0;
274 int detType = 99;
275 int barrelEC = 99;
276 int layerDisk = 99;
277 int barrel_ec = 99;
278 int layer_or_wheel = 99;
279 int sctSide = 99;
280 int modEta = 9999;
281 int modPhi = 9999;
282
283 const Identifier & hitId = hit->
identify();
285 else if (
m_idHelper->is_sct(hitId)) detType = 1;
286 else if (
m_idHelper->is_pixel(hitId)) detType = 0;
287 else detType = 99;
288
289
290 if ( detType == 99) {
291 ATH_MSG_DEBUG(
" --> Hit " << nTSOS <<
" with detector type " << detType <<
" is not an Inner Detector hit -> skip this hit");
292 continue;
293 }
294
295
296 if (detType == 2) {
297 ATH_MSG_DEBUG(
"** IDAlignMonResidualsAlg::fillHistograms() ** Hit is from the TRT, finding residuals... ");
300
301 if (!trackParameter) {
302 ATH_MSG_WARNING(
"No TrackParameters associated with TRT TrkSurface " << nTSOS);
303 continue;
304 }
306 float trketa = tsos->trackParameters()->eta();
307 float pullR = -9.9;
308
309 const Identifier&
id =
m_trtID->layer_id(hitId);
310 barrel_ec =
m_trtID->barrel_ec(
id);
311 layer_or_wheel =
m_trtID->layer_or_wheel(
id);
312 int phi_module =
m_trtID->phi_module(
id);
313
314
315 ATH_MSG_DEBUG(
"Found Trk::TrackParameters for hit " << nTSOS <<
" --> TRT hit (detType= " << detType <<
")" );
316
317
318
320
321 if (!trackParameterUnbiased) {
322 ATH_MSG_WARNING(
"Cannot define unbiased parameters for hit, skipping it.");
323 continue;
324 }
325 ATH_MSG_DEBUG(
" --> TRT UnBiased TrackParameters of hit " << nTSOS <<
" FOUND");
326
327 float predictR = trackParameterUnbiased->parameters()[
Trk::locR];
328
329 const Trk::MeasurementBase* mesh = tsos->measurementOnTrack();
330 std::optional<Trk::ResidualPull> residualPull =
332 trackParameterUnbiased.get(),
334
335 if (residualPull) {
337 }
338 else {
339 ATH_MSG_DEBUG(
" no covariance of the track parameters given, can not calculate pull!");
340 }
341
342
343
344 float residualR = hitR - predictR;
345
346 const InDet::TRT_DriftCircleOnTrack* trtCircle =
347 dynamic_cast<const InDet::TRT_DriftCircleOnTrack*>(tsos->measurementOnTrack());
348
349 if (trtCircle != nullptr) {
350 ATH_MSG_DEBUG(
" fillHistograms() ** filling TRT histograms for hit/tsos #" << nTSOS
351 << " Barrel/EndCap: " << barrel_ec
352 << " layer/wheel: " << layer_or_wheel
353 << " phi: " << phi_module
354 << " Residual: " << residualR);
357 , layer_or_wheel
358 , phi_module
359 , predictR
360 , hitR
361 , residualR
362 , pullR
363 , isTubeHit
364 , trketa
365 , qpT);
366 }
367 }
368
369 else {
371 ATH_MSG_DEBUG(
"applying hit quality cuts to Silicon hit...");
373 if(hit==nullptr) {
375 continue;
376 }
378 }
379 else ATH_MSG_DEBUG(
"hit quality cuts NOT APPLIED to Silicon hit.");
380
381
382 if (detType==0){
383 const Identifier&
id =
m_pixelID->wafer_id(hitId);
388 }
389 else {
390 const Identifier&
id =
m_sctID->wafer_id(hitId);
391 barrelEC =
m_sctID->barrel_ec(
id);
392 layerDisk =
m_sctID->layer_disk(
id);
393 modEta =
m_sctID->eta_module(
id);
394 modPhi =
m_sctID->phi_module(
id);
396 }
397
398
399 if(trackParameter){
400
401 ATH_MSG_DEBUG(
"Found Trk::TrackParameters " << trackParameter);
402
403 double unbiasedResXY[4] = {9999.0,9999.0,9999.0,9999.0};
404 double biasedResXY[4] = {9999.0,9999.0,9999.0,9999.0};
405
406
409 if (
sc.isFailure()) {
410 ATH_MSG_DEBUG(
"Problem in determining unbiased residuals! Hit is skipped.");
411 auto detType_m = Monitored::Scalar<int>( "m_detType", detType);
412 fill(residualGroup, detType_m);
413 continue;
414 }
415 else
417
418 residualX = (
float)unbiasedResXY[0];
419 residualY = (
float)unbiasedResXY[1];
420 pullX = (
float)unbiasedResXY[2];
421 pullY = (
float)unbiasedResXY[3];
422
423
425 if (
sc.isFailure()) {
426 ATH_MSG_DEBUG(
"Problem in determining biased residuals! Hit is skipped.");
427 continue;
428 }
429 else
431
432 biasedResidualX = (
float)biasedResXY[0];
433 biasedResidualY = (
float)biasedResXY[1];
434
435 }
436 else {
437 ATH_MSG_DEBUG(
"No TrackParameters associated with Si TrkSurface "<< nTSOS <<
" - Hit is probably an outlier");
438 }
439 }
440
441
442
443
444
445
446
447
448 auto si_residualx_m = Monitored::Scalar<float>( "m_si_residualx", 0.0);
449 auto si_b_residualx_m = Monitored::Scalar<float>( "m_si_b_residualx", 0.0);
450 auto si_barrel_resX_m = Monitored::Scalar<float>( "m_si_barrel_resX", 0.0);
451 auto si_barrel_resY_m = Monitored::Scalar<float>( "m_si_barrel_resY", 0.0);
452 auto si_barrel_pullX_m = Monitored::Scalar<float>( "m_si_barrel_pullX", 0.0);
453 auto si_barrel_pullY_m = Monitored::Scalar<float>( "m_si_barrel_pullY", 0.0);
454 auto si_eca_resX_m = Monitored::Scalar<float>( "m_si_eca_resX", 0.0);
455 auto si_eca_resY_m = Monitored::Scalar<float>( "m_si_eca_resY", 0.0);
456 auto si_eca_pullX_m = Monitored::Scalar<float>( "m_si_eca_pullX", 0.0);
457 auto si_eca_pullY_m = Monitored::Scalar<float>( "m_si_eca_pullY", 0.0);
458 auto si_ecc_resX_m = Monitored::Scalar<float>( "m_si_ecc_resX", 0.0);
459 auto si_ecc_resY_m = Monitored::Scalar<float>( "m_si_ecc_resY", 0.0);
460 auto si_ecc_pullX_m = Monitored::Scalar<float>( "m_si_ecc_pullX", 0.0);
461 auto si_ecc_pullY_m = Monitored::Scalar<float>( "m_si_ecc_pullY", 0.0);
462 auto residualX_m = Monitored::Scalar<float>( "m_residualX", residualX);
463 auto residualY_m = Monitored::Scalar<float>( "m_residualY", residualY);
464 auto modEta_m = Monitored::Scalar<int>( "m_modEta", modEta );
465 auto modPhi_m = Monitored::Scalar<int>( "m_modPhi", modPhi );
467 auto lb_m = Monitored::Scalar<int>(
"m_lb",
lb );
468 auto layerDisk_m = Monitored::Scalar<float>("m_layerDisk", layerDisk);
469 auto layerDisk_si_m = Monitored::Scalar<float>("m_layerDisk_si", 0);
470
471 if (detType==0) {
472 ATH_MSG_DEBUG(
" This is a PIXEL hit " << hitId <<
" - filling histograms");
473
474 si_residualx_m = residualX;
475 fill(residualGroup, si_residualx_m);
476
477 if(barrelEC==0){
478 int ModEtaShift[4] = {12, 38, 60, 82};
479 int ModPhiShift[4] = {0, 24, 56, 104};
480
481
482 si_b_residualx_m = residualX;
483 fill(residualGroup, si_b_residualx_m);
484
485 layerDisk_si_m = layerDisk;
486 si_barrel_resX_m = residualX;
487 si_barrel_resY_m = residualY;
488 si_barrel_pullX_m = pullX;
489 si_barrel_pullY_m = pullY;
490 fill(residualGroup, layerDisk_si_m, si_barrel_resX_m, si_barrel_resY_m, si_barrel_pullX_m, si_barrel_pullY_m);
491
492
493 auto pix_b_residualx_m = Monitored::Scalar<float>( "m_pix_b_residualx", residualX);
494 auto pix_b_biased_residualx_m = Monitored::Scalar<float>( "m_pix_b_biased_residualx", biasedResidualX);
495 auto pix_b_residualy_m = Monitored::Scalar<float>( "m_pix_b_residualy", residualY);
496 auto pix_b_biased_residualy_m = Monitored::Scalar<float>( "m_pix_b_biased_residualy", biasedResidualY);
497 fill(residualGroup, pix_b_residualx_m, pix_b_biased_residualx_m, pix_b_residualy_m, pix_b_biased_residualy_m);
498 auto pix_b_residualsx_m = Monitored::Scalar<float>("m_pix_residualsx", residualX);
501 auto pix_b_residualsy_m = Monitored::Scalar<float>("m_pix_residualsy", residualY);
504 auto pix_b_pullsx_m = Monitored::Scalar<float>("m_pix_pullsx", pullX);
506 auto pix_b_pullsy_m = Monitored::Scalar<float>("m_pix_pullsy", pullY);
508
509
514
515 auto residualX_barrel_m = Monitored::Scalar<float>( "m_residualX_barrel", residualX);
516 auto residualY_barrel_m = Monitored::Scalar<float>( "m_residualY_barrel", residualY);
517 auto modPhiShift_barrel_m = Monitored::Scalar<int>( "m_modPhiShift_barrel", modPhi + ModPhiShift[layerDisk] );
518 auto modEtaShift_barrel_m = Monitored::Scalar<int>( "m_modEtaShift_barrel", modEta + ModEtaShift[layerDisk] );
519 fill(residualGroup, modPhiShift_barrel_m, residualX_barrel_m, residualY_barrel_m);
520 fill(residualGroup, modEtaShift_barrel_m, residualX_barrel_m, residualY_barrel_m);
521 }
522 else if(barrelEC==2){
523 int ModPhiShift[3] = {0, 55, 110};
524
525
526 layerDisk_si_m = layerDisk;
527 si_eca_resX_m = residualX;
528 si_eca_resY_m = residualY;
529 si_eca_pullX_m = pullX;
530 si_eca_pullY_m = pullY;
531 fill(residualGroup, layerDisk_si_m, si_eca_resX_m, si_eca_resY_m, si_eca_pullX_m, si_eca_pullY_m);
532
533
534 auto pix_eca_residualx_m = Monitored::Scalar<float>( "m_pix_eca_residualx", residualX);
535 auto pix_ec_residualx_m = Monitored::Scalar<float>( "m_pix_ec_residualx", residualX);
537 auto pix_eca_residualy_m = Monitored::Scalar<float>( "m_pix_eca_residualy", residualY);
538 auto pix_ec_residualy_m = Monitored::Scalar<float>( "m_pix_ec_residualy", residualY);
539 fill(residualGroup, pix_eca_residualx_m, pix_eca_residualy_m);
541 auto pix_eca_pullx_m = Monitored::Scalar<float>( "m_pix_eca_pullx", pullX);
542 auto pix_eca_pully_m = Monitored::Scalar<float>( "m_pix_eca_pully", pullY);
543 fill(residualGroup, pix_eca_pullx_m, pix_eca_pully_m);
544
545
546 auto residualX_eca_m = Monitored::Scalar<float>( "m_residualX_eca", residualX );
547 auto residualY_eca_m = Monitored::Scalar<float>( "m_residualY_eca", residualY );
548 auto modPhiShift_eca_m = Monitored::Scalar<int>( "m_modPhiShift_eca", modPhi + ModPhiShift[layerDisk]);
551 fill(residualGroup, modPhiShift_eca_m, residualX_eca_m, residualY_eca_m);
552 }
553 else if(barrelEC==-2){
554 int ModPhiShift[3] = {0, 55, 110};
555
556
557 layerDisk_si_m = layerDisk;
558 si_ecc_resX_m = residualX;
559 si_ecc_resY_m = residualY;
560 si_ecc_pullX_m = pullX;
561 si_ecc_pullY_m = pullY;
562 fill(residualGroup, layerDisk_si_m, si_ecc_resX_m, si_ecc_resY_m, si_ecc_pullX_m, si_ecc_pullY_m);
563
564
565 auto pix_ecc_residualx_m = Monitored::Scalar<float>( "m_pix_ecc_residualx", residualX);
566 auto pix_ec_residualx_m = Monitored::Scalar<float>( "m_pix_ec_residualx", residualX);
568 auto pix_ecc_residualy_m = Monitored::Scalar<float>( "m_pix_ecc_residualy", residualY);
569 auto pix_ec_residualy_m = Monitored::Scalar<float>( "m_pix_ec_residualy", residualY);
570 fill(residualGroup, pix_ecc_residualx_m, pix_ecc_residualy_m);
572 auto pix_ecc_pullx_m = Monitored::Scalar<float>( "m_pix_ecc_pullx", pullX);
573 auto pix_ecc_pully_m = Monitored::Scalar<float>( "m_pix_ecc_pully", pullY);
574 fill(residualGroup, pix_ecc_pullx_m, pix_ecc_pully_m);
575
576
577 auto residualX_ecc_m = Monitored::Scalar<float>( "m_residualX_ecc", residualX);
578 auto residualY_ecc_m = Monitored::Scalar<float>( "m_residualY_ecc", residualY);
579 auto modPhiShift_ecc_m = Monitored::Scalar<int>( "m_modPhiShift_ecc", modPhi + ModPhiShift[layerDisk] );
582 fill(residualGroup, modPhiShift_ecc_m, residualX_ecc_m, residualY_ecc_m);
583 }
584 }
585 else if (detType==1) {
586 si_residualx_m = residualX;
587 fill(residualGroup, si_residualx_m);
588
589 ATH_MSG_DEBUG(
" This is a SCT hit " << hitId <<
" - filling histograms");
590
591 if(barrelEC==0){
592 int ModPhiShift[4] = {0, 42, 92, 150};
593 int ModEtaShift[4] = {12, 34, 54, 78};
594
595
596 si_b_residualx_m = residualX;
597 fill(residualGroup, si_b_residualx_m);
598
599 layerDisk_si_m = 4 + 2 * layerDisk + sctSide;
600 si_barrel_resX_m = residualX;
601 si_barrel_pullX_m = pullX;
602 fill(residualGroup, layerDisk_si_m, si_barrel_resX_m, si_barrel_pullX_m);
603
604
605 auto sct_b_residualx_m = Monitored::Scalar<float>( "m_sct_b_residualx", residualX);
606 fill(residualGroup, sct_b_residualx_m);
607 auto sct_b_biased_residualx_m = Monitored::Scalar<float>( "m_sct_b_biased_residualx", biasedResidualX);
608 auto sct_b_residualsx_m = Monitored::Scalar<float>("m_sct_residualsx", residualX);
611 auto sct_b_pullsx_m = Monitored::Scalar<float>("m_sct_pullsx", pullX);
613 if (sctSide == 0) {
615 } else {
617 }
618
619
622
623 auto residualX_sct_barrel_m = Monitored::Scalar<float>( "m_residualX_sct_barrel", residualX);
624 auto modPhiShift_sct_barrel_m = Monitored::Scalar<int>( "m_modPhiShift_sct_barrel", modPhi + ModPhiShift[layerDisk] );
625 auto modEtaShift_sct_barrel_m = Monitored::Scalar<int>( "m_modEtaShift_sct_barrel", modEta + ModEtaShift[layerDisk] );
626 fill(residualGroup, modPhiShift_sct_barrel_m, modEtaShift_sct_barrel_m, residualX_sct_barrel_m);
627 }
628
629 else if(barrelEC==2){
630 int Nmods = 52;
631 int gap_sct = 10;
632
633
634 layerDisk_si_m = 3 + 2 * layerDisk + sctSide;
635 si_eca_resX_m = residualX;
636 si_eca_pullX_m = pullX;
637 fill(residualGroup, layerDisk_si_m, si_eca_resX_m, si_eca_pullX_m);
638
639
640 auto sct_eca_residualx_m = Monitored::Scalar<float>( "m_sct_eca_residualx", residualX);
642 auto sct_eca_pullx_m = Monitored::Scalar<float>( "m_sct_eca_pullx", pullX);
643 fill(residualGroup, sct_eca_residualx_m, sct_eca_pullx_m);
644 if (sctSide == 0) {
646 } else {
648 }
649
650
651 auto residualX_sct_eca_m = Monitored::Scalar<float>( "m_residualX_sct_eca", residualX);
652 auto modPhiShift_sct_eca_m = Monitored::Scalar<int>( "m_modPhiShift_sct_eca", modPhi + layerDisk * (gap_sct + Nmods) );
653 fill(residualGroup, modPhiShift_sct_eca_m, residualX_sct_eca_m);
654 }
655
656 else if(barrelEC==-2){
657 int Nmods = 52;
658 int gap_sct = 10;
659
660
661 layerDisk_si_m = 3 + 2 * layerDisk + sctSide;
662 si_ecc_resX_m = residualX;
663 si_ecc_pullX_m = pullX;
664 fill(residualGroup, layerDisk_si_m, si_ecc_resX_m, si_ecc_pullX_m);
665
666
667 auto sct_ecc_residualx_m = Monitored::Scalar<float>( "m_sct_ecc_residualx", residualX);
669 auto sct_ecc_pullx_m = Monitored::Scalar<float>( "m_sct_ecc_pullx", pullX);
670 fill(residualGroup, sct_ecc_residualx_m, sct_ecc_pullx_m);
671 if (sctSide == 0) {
673 } else {
675 }
676
677
678 auto residualX_sct_ecc_m = Monitored::Scalar<float>( "m_residualX_sct_ecc", residualX);
679 auto modPhiShift_sct_ecc_m = Monitored::Scalar<int>( "m_modPhiShift_sct_ecc", modPhi + layerDisk * (gap_sct + Nmods) );
680 fill(residualGroup, modPhiShift_sct_ecc_m, residualX_sct_ecc_m);
681 }
682 }
684
685 }
686 }
687
689
690 return StatusCode::SUCCESS;
691}
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=Gaudi::Hive::currentContext()) 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