ATLAS Offline Software
Loading...
Searching...
No Matches
TRTStrawEfficiency.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5// TRTStrawEfficiency.cxx
6// author: Ryan D. Reece <ryan.reece@cern.ch>
7// created: Nov 2009
8
9#ifdef CPU_PROFILER
10#include <google/profiler.h>
11#endif
12
15
18#include "Identifier/Identifier.h"
23#include "GaudiKernel/ITHistSvc.h"
27
28#include <cmath> // for fabs
29#include <vector>
30#include <string>
31
32#include "TTree.h"
33
34TRTStrawEfficiency::TRTStrawEfficiency(const std::string& name, ISvcLocator* pSvcLocator) : AthAlgorithm(name, pSvcLocator) {}
35
36
37//____________________________________________________________________________
39
40 // retrieve TRTTrackHoleSearchTool
41 ATH_CHECK(m_trt_hole_finder.retrieve());
42
43 // retrieve TRT_ID
44 ATH_CHECK(detStore()->retrieve(m_TRT_ID, "TRT_ID"));
45
47
48 // retrieve the Trk::KalmanUpdator to calculate unbiased track states
49 ATH_CHECK(m_updator.retrieve());
50
51 // retrieve THistSvc
52 ATH_CHECK(m_hist_svc.retrieve());
53
54 // retrieve TrigDecisionTool
55 if (!m_required_trigger.empty()) {
56 ATH_CHECK(m_trigDec.retrieve());
57 }
58
59 // ntuple
60 m_tree = new TTree(m_tree_name.value().c_str(), m_tree_name.value().c_str());
61 ATH_CHECK(m_hist_svc->regTree(std::string("/") + m_stream_name + std::string("/") + m_tree_name, m_tree));
62
63 // Read handles
64 ATH_CHECK(m_tracksKey.initialize());
65 ATH_CHECK(m_eventInfoKey.initialize());
66 ATH_CHECK(m_vertexContainerKey.initialize());
67
69
70#ifdef CPU_PROFILER
71 std::string profile_file = "cpu.prof";
72 ATH_MSG_ALWAYS( "ProfilerStart(" << profile_file << ")" );
73 ProfilerStart(profile_file.c_str());
74#endif
75
76 return StatusCode::SUCCESS;
77}
78
79
80//____________________________________________________________________________
82 ATH_MSG_DEBUG( "TRTStrawEfficiency::execute() event: " << m_num_events );
83
84 // ATH_MSG_DEUBG( "getListOfTriggers: " << m_trigDec->getListOfTriggers() );
85
86 // require trigger
87 if ( !m_required_trigger.empty() ) {
88 if ( !m_trigDec->isPassed(m_required_trigger) ) {
89 // skip event
90 ATH_MSG_DEBUG( " trigger: " << m_required_trigger << " failed. Skipping event.");
91 return StatusCode::SUCCESS;
92 } else {
93 ATH_MSG_DEBUG( " trigger: " << m_required_trigger << " passed.");
94 }
95 }
96
97 // retrieve tracks
99 if (!tracks.isValid()) {
100 ATH_MSG_FATAL( "Failed to retrieve " << m_tracksKey.key() );
101 return StatusCode::FAILURE;
102 }
103
104 // retrieve event info
106 if (!event_info.isValid()) {
107 ATH_MSG_FATAL( "Failed to retrieve " << m_eventInfoKey.key() );
108 return StatusCode::FAILURE;
109 }
110
111 m_event_number = event_info->eventNumber();
112 m_run_number = event_info->runNumber();
113 m_lumi_block = event_info->lumiBlock();
114
115 ATH_MSG_DEBUG( "run_number = " << m_run_number << ", lumi_block = " << m_lumi_block << ", event_number = " << m_event_number );
116
117 // loop over tracks
118 ATH_MSG_DEBUG( "This event has " << tracks->size() << " tracks." );
119 for (const auto *track : *tracks) {
120 m_num_tracks++;
121
122 // clear branches
124
125 // get perigee
126 const Trk::Perigee* perigee = track->perigeeParameters();
127 if (perigee) {
128 m_track_pt = perigee->pT();
129 m_track_eta = perigee->eta();
130 m_track_phi = perigee->parameters()[Trk::phi0];
131 m_track_d0 = perigee->parameters()[Trk::d0];
132 m_track_z0 = perigee->parameters()[Trk::z0];
133 ATH_MSG_DEBUG( " This track has perigee parameters:\n"
134 << " pT = " << m_track_pt/CLHEP::GeV << " CLHEP::GeV" << "\n"
135 << " eta = " << m_track_eta << "\n"
136 << " phi0 = " << m_track_phi << "\n"
137 << " d0 = " << m_track_d0 << "\n"
138 << " z0 = " << m_track_z0 << "\n"
139 << " theta = " << perigee->parameters()[Trk::theta] << "\n"
140 << " qOverP = " << perigee->parameters()[Trk::qOverP] );
141 } else {
142 ATH_MSG_ERROR( " This track has null perigeeParameters." );
143 continue;
144 }
145
146 // get TrackStateOnSurfaces
147 const Trk::TrackStates* track_states = track->trackStateOnSurfaces();
148 if (track_states) {
149 ATH_MSG_DEBUG( " This track has " << track_states->size() << " track states on surface." );
150 } else {
151 ATH_MSG_ERROR( " This track has null track states on surface." );
152 continue;
153 }
154
155 // count hits
156 for (const auto *trackState : *track_states) {
157 if (trackState->type(Trk::TrackStateOnSurface::Measurement)) {
158 if (dynamic_cast<const InDet::TRT_DriftCircleOnTrack*> (trackState->measurementOnTrack())) m_n_trt_hits++;
159 else if (dynamic_cast<const InDet::SCT_ClusterOnTrack*> (trackState->measurementOnTrack())) m_n_sct_hits++;
160 else if (dynamic_cast<const InDet::PixelClusterOnTrack*> (trackState->measurementOnTrack())) m_n_pixel_hits++;
161 }
162 }
163
164 ATH_MSG_DEBUG( " This track has\n"
165 << " # Pixel hits = " << m_n_pixel_hits << "\n"
166 << " # SCT hits = " << m_n_sct_hits << "\n"
167 << " # TRT hits = " << m_n_trt_hits );
168
169 // preselect tracks
170 bool passed_track_preselection =
171 ( fabs(perigee->parameters()[Trk::d0]) < m_max_abs_d0 )&&
172 ( fabs(perigee->parameters()[Trk::z0]) < m_max_abs_z0 )&&
173 ( 1/fabs(perigee->parameters()[Trk::qOverP]) > m_min_p )&& // added by dan
174 ( perigee->pT() > m_min_pT )&&
175 ( fabs(perigee->eta()) < m_max_abs_eta )&&
179
180 if (!passed_track_preselection) {
181 ATH_MSG_DEBUG( " This track failed preselection." );
182 continue;
183 }
184
185 ATH_MSG_DEBUG( " This track passed preselection." );
187
188 for (const auto *trackState : *track_states ) {
189 if (trackState->type(Trk::TrackStateOnSurface::Measurement)) {
190 fill_hit_data(*trackState);
191 }
192 }
193
194 const Trk::TrackStates* holes = m_trt_hole_finder->getHolesOnTrack(*track);
195 if (!holes) {
196 ATH_MSG_WARNING( " TRTTrackHoleSearchTool returned null results." );
197 continue;
198 } else {
199 m_n_pixel_holes = 0;
200 m_n_sct_holes = 0;
201 m_n_trt_holes = 0;
202 for (const auto *hole : *holes) {
203 if (hole->type(Trk::TrackStateOnSurface::Hole)) {
204 int hole_det = fill_hole_data(*hole);
205 switch (hole_det) {
206 case 1:
208 break;
209 case 2:
211 break;
212 case 3:
214 break;
215 default:
216 ATH_MSG_ERROR("fill_hole_data returned an invalid det type: " << hole_det);
217 }
218 } else {
219 ATH_MSG_WARNING(" hole finder returned a TrackStateOnSurface not of type Hole.");
220 }
221 }
222 delete holes;
223 }
224
225 //------- added by dan -------
226
228
229 if (!vxContainer.isValid()) {
230 ATH_MSG_ERROR(" Failed to retrieve VxContainer: " << m_vertexContainerKey.key());
231 return StatusCode::FAILURE;
232 }
233 m_n_primary_vertex = vxContainer->size() - 1;
234 //-----------------------------
235
236
237 m_tree->Fill();
238
239 ATH_MSG_DEBUG( " This track has\n"
240 << " # Pixel holes = " << m_n_pixel_holes << "\n"
241 << " # SCT holes = " << m_n_sct_holes << "\n"
242 << " # TRT holes = " << m_n_trt_holes );
243
244 } // end loop over tracks
245
246 m_num_events++;
247 return StatusCode::SUCCESS;
248}
249
250
251//____________________________________________________________________________
253 ATH_MSG_DEBUG( "# tracks = " << m_num_tracks );
254 ATH_MSG_DEBUG( "# preselected tracks = " << m_num_preselected_tracks );
255
256#ifdef ANP_CPU_PROFILER
257 ATH_MSG_ALWAYS("ProfilerStop.");
258 ProfilerStop();
259#endif
260
261 return StatusCode::SUCCESS;
262}
263
264
265//----------------------------------------------------------------------------
266// private methods
267//----------------------------------------------------------------------------
268
269//____________________________________________________________________________
271 m_tree->Branch("event_number", &m_event_number, "event_number/i");
272 m_tree->Branch("run_number", &m_run_number, "run_number/i");
273 m_tree->Branch("lumi_block", &m_lumi_block, "lumi_block/i");
274 m_tree->Branch("track_pt", &m_track_pt, "track_pt/F");
275 m_tree->Branch("track_eta", &m_track_eta, "track_eta/F");
276 m_tree->Branch("track_phi", &m_track_phi, "track_phi/F");
277 m_tree->Branch("track_d0", &m_track_d0, "track_d0/F");
278 m_tree->Branch("track_z0", &m_track_z0, "track_z0/F");
279 m_tree->Branch("n_pixel_hits", &m_n_pixel_hits, "n_pixel_hits/I");
280 m_tree->Branch("n_sct_hits", &m_n_sct_hits, "n_sct_hits/I");
281 m_tree->Branch("n_trt_hits", &m_n_trt_hits, "n_trt_hits/I");
282 m_tree->Branch("hit_bec", &m_hit_bec);
283 m_tree->Branch("hit_phi", &m_hit_phi);
284 m_tree->Branch("hit_layer", &m_hit_layer);
285 m_tree->Branch("hit_strawlayer", &m_hit_strawlayer);
286 m_tree->Branch("hit_straw", &m_hit_straw);
287 m_tree->Branch("hit_chip", &m_hit_chip);
288 m_tree->Branch("hit_pad", &m_hit_pad);
289 m_tree->Branch("hit_x", &m_hit_x);
290 m_tree->Branch("hit_y", &m_hit_y);
291 m_tree->Branch("hit_z", &m_hit_z);
292 m_tree->Branch("hit_center_x", &m_hit_center_x);
293 m_tree->Branch("hit_center_y", &m_hit_center_y);
294 m_tree->Branch("hit_center_z", &m_hit_center_z);
295 m_tree->Branch("hit_R", &m_hit_R);
296 m_tree->Branch("hit_locR", &m_hit_locR);
297 m_tree->Branch("hit_HL", &m_hit_HL);
298 m_tree->Branch("hit_det", &m_hit_det);
299 m_tree->Branch("hit_ub_locR", &m_hit_ub_locR);
300 m_tree->Branch("hit_ub_x", &m_hit_ub_x);
301 m_tree->Branch("hit_ub_y", &m_hit_ub_y);
302 m_tree->Branch("hit_ub_z", &m_hit_ub_z);
303 m_tree->Branch("n_pixel_holes", &m_n_pixel_holes, "n_pixel_holes/I");
304 m_tree->Branch("n_sct_holes", &m_n_sct_holes, "n_sct_holes/I");
305 m_tree->Branch("n_trt_holes", &m_n_trt_holes, "n_trt_holes/I");
306 m_tree->Branch("hole_bec", &m_hole_bec);
307 m_tree->Branch("hole_phi", &m_hole_phi);
308 m_tree->Branch("hole_layer", &m_hole_layer);
309 m_tree->Branch("hole_strawlayer", &m_hole_strawlayer);
310 m_tree->Branch("hole_straw", &m_hole_straw);
311 m_tree->Branch("hole_chip", &m_hole_chip);
312 m_tree->Branch("hole_pad", &m_hole_pad);
313 m_tree->Branch("hole_x", &m_hole_x);
314 m_tree->Branch("hole_y", &m_hole_y);
315 m_tree->Branch("hole_z", &m_hole_z);
316 m_tree->Branch("hole_center_x", &m_hole_center_x);
317 m_tree->Branch("hole_center_y", &m_hole_center_y);
318 m_tree->Branch("hole_center_z", &m_hole_center_z);
319 m_tree->Branch("hole_locR", &m_hole_locR);
320 m_tree->Branch("hole_locR_error", &m_hole_locR_error);
321 m_tree->Branch("hole_det", &m_hole_det);
322
323 // ---- branches added by dan ------
324 m_tree->Branch("n_primary_vertex", &m_n_primary_vertex, "n_primary_vertex/I");
325 m_tree->Branch("hit_tube_hit", &m_hit_tube_hit);
326 m_tree->Branch("n_tube_hits", &m_n_tube_hits, "n_tube_hits/I");
327 // -------------------------------
328}
329
330
331//____________________________________________________________________________
333 m_event_number = 0;
334 m_run_number = 0;
335 m_lumi_block = 0;
336 m_track_pt = 0.0;
337 m_track_eta = 0.0;
338 m_track_phi = 0.0;
339 m_track_d0 = 0.0;
340 m_track_z0 = 0.0;
341 m_n_pixel_hits = 0;
342 m_n_sct_hits = 0;
343 m_n_trt_hits = 0;
344 m_hit_bec.clear();
345 m_hit_phi.clear();
346 m_hit_layer.clear();
347 m_hit_strawlayer.clear();
348 m_hit_straw.clear();
349 m_hit_chip.clear();
350 m_hit_pad.clear();
351 m_hit_x.clear();
352 m_hit_y.clear();
353 m_hit_z.clear();
354 m_hit_center_x.clear();
355 m_hit_center_y.clear();
356 m_hit_center_z.clear();
357 m_hit_R.clear();
358 m_hit_locR.clear();
359 m_hit_HL.clear();
360 m_hit_det.clear();
361 m_hit_ub_locR.clear();
362 m_hit_ub_x.clear();
363 m_hit_ub_y.clear();
364 m_hit_ub_z.clear();
365 m_n_pixel_holes = 0;
366 m_n_sct_holes = 0;
367 m_n_trt_holes = 0;
368 m_hole_bec.clear();
369 m_hole_phi.clear();
370 m_hole_layer.clear();
371 m_hole_strawlayer.clear();
372 m_hole_straw.clear();
373 m_hole_chip.clear();
374 m_hole_pad.clear();
375 m_hole_x.clear();
376 m_hole_y.clear();
377 m_hole_z.clear();
378 m_hole_center_x.clear();
379 m_hole_center_y.clear();
380 m_hole_center_z.clear();
381 m_hole_locR.clear();
382 m_hole_locR_error.clear();
383 m_hole_det.clear();
384
385 m_n_primary_vertex = 0; // added by dan
386 m_hit_tube_hit.clear(); // added by dan
387 m_n_tube_hits = 0; // added by dan
388}
389
390
391//____________________________________________________________________________
393 const Trk::TrackParameters* track_parameters = hit.trackParameters();
394 if (!track_parameters) {
395 ATH_MSG_ERROR("fill_hit_data(hit): null track_parameters");
396 return 0;
397 }
398
399 m_hit_x.push_back( track_parameters->position().x() );
400 m_hit_y.push_back( track_parameters->position().y() );
401 m_hit_z.push_back( track_parameters->position().z() );
402
403 m_hit_center_x.push_back( track_parameters->associatedSurface().center().x() );
404 m_hit_center_y.push_back( track_parameters->associatedSurface().center().y() );
405 m_hit_center_z.push_back( track_parameters->associatedSurface().center().z() );
406
408
409 int det = 0;
410 if(m_TRT_ID->is_pixel(id)) {
411 det = 1;
412 } else if(m_TRT_ID->is_sct(id)) {
413 det = 2;
414 } else if(m_TRT_ID->is_trt(id)) {
415 det = 3;
416 }
417 m_hit_det.push_back( det );
418
419 m_hit_bec.push_back( det == 3 ? m_TRT_ID->barrel_ec(id) : 0 );
420 m_hit_phi.push_back( det == 3 ? m_TRT_ID->phi_module(id) : -1 );
421 m_hit_layer.push_back( det == 3 ? m_TRT_ID->layer_or_wheel(id) : -1 );
422 m_hit_strawlayer.push_back( det == 3 ? m_TRT_ID->straw_layer(id) : -1 );
423 m_hit_straw.push_back( det == 3 ? m_TRT_ID->straw(id) : -1 );
424
425 int chip = -1;
426 if(det == 3) {
427 m_TRTStrawNeighbourSvc->getChip(id, chip);
428 }
429 m_hit_chip.push_back(chip);
430
431 int pad = -1;
432 if(det == 3) {
433 m_TRTStrawNeighbourSvc->getPad(id, pad);
434 }
435 m_hit_pad.push_back(pad);
436
437 m_hit_locR.push_back( det == 3 ? track_parameters->parameters()[Trk::locR] : -1 );
438
439 const Trk::MeasurementBase* measurement = hit.measurementOnTrack();
440 const InDet::TRT_DriftCircleOnTrack* trtcircle = nullptr;
441 if(measurement) {
442 trtcircle = dynamic_cast<const InDet::TRT_DriftCircleOnTrack*> (measurement);
443 } else {
444 ATH_MSG_ERROR("fill_hit_data(hit): null measurement");
445 }
446
447 if(!trtcircle) {
448 ATH_MSG_DEBUG("fill_hit_data(hit): null trtcircle");
449 }
450
451 m_hit_R.push_back( (det == 3)&&(trtcircle != nullptr) ? trtcircle->localParameters()[Trk::driftRadius] : -1 );
452 m_hit_HL.push_back( (det == 3)&&(trtcircle != nullptr) ? trtcircle->highLevel() : -1 );
453
454 // unbiased trk parameters
455 std::unique_ptr<Trk::TrackParameters> unbiased_track_parameters =
456 m_updator->removeFromState(
457 *(hit.trackParameters()),
460
461 m_hit_ub_locR.push_back( det == 3 && unbiased_track_parameters ? unbiased_track_parameters->parameters()[Trk::locR] : -1 );
462 m_hit_ub_x.push_back( unbiased_track_parameters ? unbiased_track_parameters->position().x() : -1 );
463 m_hit_ub_y.push_back( unbiased_track_parameters ? unbiased_track_parameters->position().y() : -1 );
464 m_hit_ub_z.push_back( unbiased_track_parameters ? unbiased_track_parameters->position().z() : -1 );
465
466 // ------- added by dan -------
467 int is_tube_hit = -1;
468 if (measurement && (det == 3) ) {
469 is_tube_hit = ((measurement->localCovariance())(Trk::locX,Trk::locX) > 1.0)? 1 : 0;
470 if (is_tube_hit) m_n_tube_hits++;
471 }
472
473 m_hit_tube_hit.push_back( (det == 3)&&(measurement != nullptr) ? is_tube_hit : -1);
474
475 // ----------------------------
476
477
478 return det;
479}
480
481
482//____________________________________________________________________________
484 const Trk::TrackParameters* track_parameters = hole.trackParameters();
485 if (!track_parameters) {
486 ATH_MSG_ERROR("fill_hole_data(hole): null track_parameters");
487 return 0;
488 }
489
490 m_hole_x.push_back( track_parameters->position().x() );
491 m_hole_y.push_back( track_parameters->position().y() );
492 m_hole_z.push_back( track_parameters->position().z() );
493
494 m_hole_center_x.push_back( track_parameters->associatedSurface().center().x() );
495 m_hole_center_y.push_back( track_parameters->associatedSurface().center().y() );
496 m_hole_center_z.push_back( track_parameters->associatedSurface().center().z() );
497
499
500 int det = 0;
501 if(m_TRT_ID->is_pixel(id)) {
502 det = 1;
503 } else if(m_TRT_ID->is_sct(id)) {
504 det = 2;
505 } else if(m_TRT_ID->is_trt(id)) {
506 det = 3;
507 }
508 m_hole_det.push_back( det );
509
510 m_hole_bec.push_back( det == 3 ? m_TRT_ID->barrel_ec(id) : -1 );
511 m_hole_phi.push_back( det == 3 ? m_TRT_ID->phi_module(id) : -1 );
512 m_hole_layer.push_back( det == 3 ? m_TRT_ID->layer_or_wheel(id) : -1 );
513 m_hole_strawlayer.push_back( det == 3 ? m_TRT_ID->straw_layer(id) : -1 );
514 m_hole_straw.push_back( det == 3 ? m_TRT_ID->straw(id) : -1 );
515
516 int chip = -1;
517 if (det == 3) {
518 m_TRTStrawNeighbourSvc->getChip(id, chip);
519 }
520 m_hole_chip.push_back(chip);
521
522 int pad = -1;
523 if (det == 3) {
524 m_TRTStrawNeighbourSvc->getPad(id, pad);
525 }
526 m_hole_pad.push_back(pad);
527
528 float locR = track_parameters->parameters()[Trk::locR];
529 m_hole_locR.push_back( det == 3 ? locR : -1 );
530
531 float locR_error = 0.0;
532 //const Trk::MeasuredTrackParameters* meas = dynamic_cast< const Trk::MeasuredTrackParameters* >(track_parameters);
533 //if(meas)
534 //{
535
536 const AmgSymMatrix(5)* merr = track_parameters->covariance();
537 if(merr){
538 locR_error = Amg::error(*merr,Trk::locR);
539 } else {
540 ATH_MSG_ERROR("Track parameters have no covariance attached.");
541 }
542 m_hole_locR_error.push_back( det == 3 ? locR_error : 0.0 );
543
544 /*
545 ATH_MSG_DEBUG("hole trk x = " << track_parameters->position().x() <<
546 ", surf x = " << track_parameters->associatedSurface()->center().x());
547 ATH_MSG_DEBUG("hole trk y = " << track_parameters->position().y() <<
548 ", surf y = " << track_parameters->associatedSurface()->center().y());
549 ATH_MSG_DEBUG("hole trk z = " << track_parameters->position().z() <<
550 ", surf z = " << track_parameters->associatedSurface()->center().z());
551 */
552
553 return det;
554}
555
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_FATAL(x)
#define ATH_MSG_ALWAYS(x)
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
#define AmgSymMatrix(dim)
Abstract interface to information on straws electronic grouping.
Handle class for reading from StoreGate.
This is an Identifier helper class for the TRT subdetector.
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
const ServiceHandle< StoreGateSvc > & detStore() const
size_type size() const noexcept
Returns the number of elements in the collection.
Specific class to represent the pixel measurements.
Specific class to represent the SCT measurements.
Represents 'corrected' measurements from the TRT (for example, corrected for wire sag).
bool highLevel() const
returns true if the high level threshold was passed
virtual bool isValid() override final
Can the handle be successfully dereferenced?
SG::ReadHandleKey< xAOD::VertexContainer > m_vertexContainerKey
std::vector< float > m_hit_ub_z
std::vector< int > m_hit_pad
std::vector< float > m_hit_z
std::vector< int > m_hit_straw
StringProperty m_stream_name
unsigned int m_event_number
ServiceHandle< ITRT_StrawNeighbourSvc > m_TRTStrawNeighbourSvc
IntegerProperty m_min_trt_hits
std::vector< float > m_hole_center_x
std::vector< float > m_hole_center_y
std::vector< int > m_hit_det
std::vector< float > m_hole_z
std::vector< float > m_hole_x
std::vector< float > m_hit_ub_y
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
int fill_hole_data(const Trk::TrackStateOnSurface &hole)
FloatProperty m_max_abs_d0
std::vector< int > m_hit_bec
IntegerProperty m_min_sct_hits
std::vector< float > m_hole_locR
StringProperty m_required_trigger
std::vector< int > m_hit_HL
std::vector< float > m_hit_center_y
std::vector< int > m_hole_strawlayer
std::vector< float > m_hit_y
std::vector< float > m_hole_locR_error
ServiceHandle< ITHistSvc > m_hist_svc
std::vector< float > m_hit_center_x
StringProperty m_tree_name
std::vector< int > m_hit_layer
std::vector< int > m_hit_phi
std::vector< float > m_hit_R
FloatProperty m_max_abs_z0
std::vector< int > m_hole_det
std::vector< int > m_hit_strawlayer
std::vector< float > m_hit_locR
IntegerProperty m_min_pixel_hits
std::vector< int > m_hole_chip
std::vector< int > m_hole_phi
int fill_hit_data(const Trk::TrackStateOnSurface &hit)
PublicToolHandle< Trk::IUpdator > m_updator
TRTStrawEfficiency(const std::string &name, ISvcLocator *pSvcLocator)
std::vector< int > m_hole_layer
const TRT_ID * m_TRT_ID
std::vector< int > m_hit_tube_hit
std::vector< float > m_hole_center_z
ToolHandle< Trk::ITrackHoleSearchTool > m_trt_hole_finder
FloatProperty m_max_abs_eta
unsigned int m_num_preselected_tracks
PublicToolHandle< Trig::ITrigDecisionTool > m_trigDec
std::vector< int > m_hole_straw
std::vector< float > m_hole_y
std::vector< int > m_hit_chip
SG::ReadHandleKey< TrackCollection > m_tracksKey
std::vector< int > m_hole_pad
std::vector< float > m_hit_x
std::vector< float > m_hit_ub_locR
std::vector< float > m_hit_center_z
std::vector< int > m_hole_bec
std::vector< float > m_hit_ub_x
This class is the pure abstract base class for all fittable tracking measurements.
const LocalParameters & localParameters() const
Interface method to get the LocalParameters.
const Amg::MatrixX & localCovariance() const
Interface method to get the localError.
double eta() const
Access method for pseudorapidity - from momentum.
const Amg::Vector3D & position() const
Access method for the position.
virtual const Surface & associatedSurface() const override=0
Access to the Surface associated to the Parameters.
double pT() const
Access method for transverse momentum.
Identifier associatedDetectorElementIdentifier() const
return Identifier of the associated Detector Element
const Amg::Vector3D & center() const
Returns the center position of the Surface.
represents the track state (measurement, material, fit parameters and quality) at a surface.
const MeasurementBase * measurementOnTrack() const
returns MeasurementBase const overload
const TrackParameters * trackParameters() const
return ptr to trackparameters const overload
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
@ Hole
A hole on the track - this is defined in the following way.
double error(const Amg::MatrixX &mat, int index)
return diagonal error of the matrix caller should ensure the matrix is symmetric and the index is in ...
DataVector< const Trk::TrackStateOnSurface > TrackStates
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
@ driftRadius
trt, straws
Definition ParamDefs.h:53
@ locX
Definition ParamDefs.h:37
@ locR
Definition ParamDefs.h:44
@ phi0
Definition ParamDefs.h:65
@ theta
Definition ParamDefs.h:66
@ qOverP
perigee
Definition ParamDefs.h:67
@ d0
Definition ParamDefs.h:63
@ z0
Definition ParamDefs.h:64
ParametersBase< TrackParametersDim, Charged > TrackParameters