ATLAS Offline Software
TRTStrawEfficiency.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 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 
16 //#include "TrkParameters/Perigee.h"
18 //#include "TrkParameters/MeasuredTrackParameters.h"
20 #include "CLHEP/Units/SystemOfUnits.h"
21 #include "Identifier/Identifier.h"
22 #include "InDetIdentifier/TRT_ID.h"
26 #include "GaudiKernel/ITHistSvc.h"
29 #include "StoreGate/ReadHandle.h"
30 
31 #include <cmath> // for fabs
32 #include <vector>
33 #include <string>
34 
35 #include "TTree.h"
36 
37 TRTStrawEfficiency::TRTStrawEfficiency(const std::string& name, ISvcLocator* pSvcLocator)
38  : AthAlgorithm(name, pSvcLocator),
39  m_trt_hole_finder("TRTTrackHoleSearchTool"),
40  m_hist_svc("THistSvc", name),
41  m_TRTStrawNeighbourSvc("TRT_StrawNeighbourSvc", name),
42  m_tree(nullptr),
43  m_TRT_ID(nullptr),
44  m_num_events(0),
45  m_num_tracks(0),
46  m_num_preselected_tracks(0),
47  m_event_number(0),
48  m_run_number(0),
49  m_lumi_block(0),
50  m_track_pt(0.),
51  m_track_eta(0.),
52  m_track_phi(0.),
53  m_track_d0(0.),
54  m_track_z0(0.),
55  m_n_pixel_hits(0),
56  m_n_sct_hits(0),
57  m_n_trt_hits(0),
58  m_n_pixel_holes(0),
59  m_n_sct_holes(0),
60  m_n_trt_holes(0),
61  m_n_primary_vertex(0),
62  m_n_tube_hits(0)
63 {
64  declareProperty("trt_hole_finder", m_trt_hole_finder);
65  declareProperty("max_abs_d0", m_max_abs_d0 = 600*CLHEP::mm );
66  declareProperty("max_abs_z0", m_max_abs_z0 = 600*CLHEP::mm );
67  declareProperty("min_pT", m_min_pT = 1.0*CLHEP::GeV );
68  declareProperty("min_p", m_min_p = 2.0*CLHEP::GeV ); // added by dan
69  declareProperty("max_abs_eta", m_max_abs_eta = 2.5 );
70  declareProperty("min_pixel_hits", m_min_pixel_hits = 0 );
71  declareProperty("min_sct_hits", m_min_sct_hits = 2 );
72  declareProperty("min_trt_hits", m_min_trt_hits = 15 );
73  declareProperty("hist_svc", m_hist_svc );
74  declareProperty("straw_neighbour_svc", m_TRTStrawNeighbourSvc );
75  declareProperty("tree_name", m_tree_name = "trt_eff" );
76  declareProperty("stream_name", m_stream_name = "TRTEffStream" );
77  declareProperty("required_trigger", m_required_trigger = "" );
78 }
79 
80 
81 //____________________________________________________________________________
83 
84  // retrieve TRTTrackHoleSearchTool
85  ATH_CHECK(m_trt_hole_finder.retrieve());
86 
87  // retrieve TRT_ID
88  ATH_CHECK(detStore()->retrieve(m_TRT_ID, "TRT_ID"));
89 
91 
92  // retrieve the Trk::KalmanUpdator to calculate unbiased track states
93  ATH_CHECK(m_updator.retrieve());
94 
95  // retrieve THistSvc
96  ATH_CHECK(m_hist_svc.retrieve());
97 
98  // retrieve TrigDecisionTool
99  if (!m_required_trigger.empty()) {
100  ATH_CHECK(m_trigDec.retrieve());
101  }
102 
103  // ntuple
104  m_tree = new TTree(m_tree_name.c_str(), m_tree_name.c_str());
105  ATH_CHECK(m_hist_svc->regTree(std::string("/") + m_stream_name + std::string("/") + m_tree_name, m_tree));
106 
107  // Read handles
108  ATH_CHECK(m_tracksKey.initialize());
110  ATH_CHECK(m_vertexContainerKey.initialize());
111 
112  make_branches();
113 
114 #ifdef CPU_PROFILER
115  std::string profile_file = "cpu.prof";
116  ATH_MSG_ALWAYS( "ProfilerStart(" << profile_file << ")" );
117  ProfilerStart(profile_file.c_str());
118 #endif
119 
120  return StatusCode::SUCCESS;
121 }
122 
123 
124 //____________________________________________________________________________
126  ATH_MSG_DEBUG( "TRTStrawEfficiency::execute() event: " << m_num_events );
127 
128  // ATH_MSG_DEUBG( "getListOfTriggers: " << m_trigDec->getListOfTriggers() );
129 
130  // require trigger
131  if ( !m_required_trigger.empty() ) {
132  if ( !m_trigDec->isPassed(m_required_trigger) ) {
133  // skip event
134  ATH_MSG_DEBUG( " trigger: " << m_required_trigger << " failed. Skipping event.");
135  return StatusCode::SUCCESS;
136  } else {
137  ATH_MSG_DEBUG( " trigger: " << m_required_trigger << " passed.");
138  }
139  }
140 
141  // retrive tracks
143  if (!tracks.isValid()) {
144  ATH_MSG_FATAL( "Failed to retrieve " << m_tracksKey.key() );
145  return StatusCode::FAILURE;
146  }
147 
148  // retrieve event info
150  if (!event_info.isValid()) {
151  ATH_MSG_FATAL( "Failed to retrieve " << m_eventInfoKey.key() );
152  return StatusCode::FAILURE;
153  }
154 
155  m_event_number = event_info->eventNumber();
156  m_run_number = event_info->runNumber();
157  m_lumi_block = event_info->lumiBlock();
158 
159  ATH_MSG_DEBUG( "run_number = " << m_run_number << ", lumi_block = " << m_lumi_block << ", event_number = " << m_event_number );
160 
161  // loop over tracks
162  ATH_MSG_DEBUG( "This event has " << tracks->size() << " tracks." );
163  for (const auto *track : *tracks) {
164  m_num_tracks++;
165 
166  // clear branches
167  clear_branches();
168 
169  // get perigee
170  const Trk::Perigee* perigee = track->perigeeParameters();
171  if (perigee) {
172  m_track_pt = perigee->pT();
173  m_track_eta = perigee->eta();
174  m_track_phi = perigee->parameters()[Trk::phi0];
175  m_track_d0 = perigee->parameters()[Trk::d0];
176  m_track_z0 = perigee->parameters()[Trk::z0];
177  ATH_MSG_DEBUG( " This track has perigee parameters:\n"
178  << " pT = " << m_track_pt/CLHEP::GeV << " CLHEP::GeV" << "\n"
179  << " eta = " << m_track_eta << "\n"
180  << " phi0 = " << m_track_phi << "\n"
181  << " d0 = " << m_track_d0 << "\n"
182  << " z0 = " << m_track_z0 << "\n"
183  << " theta = " << perigee->parameters()[Trk::theta] << "\n"
184  << " qOverP = " << perigee->parameters()[Trk::qOverP] );
185  } else {
186  ATH_MSG_ERROR( " This track has null perigeeParameters." );
187  continue;
188  }
189 
190  // get TrackStateOnSurfaces
191  const Trk::TrackStates* track_states = track->trackStateOnSurfaces();
192  if (track_states) {
193  ATH_MSG_DEBUG( " This track has " << track_states->size() << " track states on surface." );
194  } else {
195  ATH_MSG_ERROR( " This track has null track states on surface." );
196  continue;
197  }
198 
199  // count hits
200  for (const auto *trackState : *track_states) {
201  if (trackState->type(Trk::TrackStateOnSurface::Measurement)) {
202  if (dynamic_cast<const InDet::TRT_DriftCircleOnTrack*> (trackState->measurementOnTrack())) m_n_trt_hits++;
203  else if (dynamic_cast<const InDet::SCT_ClusterOnTrack*> (trackState->measurementOnTrack())) m_n_sct_hits++;
204  else if (dynamic_cast<const InDet::PixelClusterOnTrack*> (trackState->measurementOnTrack())) m_n_pixel_hits++;
205  }
206  }
207 
208  ATH_MSG_DEBUG( " This track has\n"
209  << " # Pixel hits = " << m_n_pixel_hits << "\n"
210  << " # SCT hits = " << m_n_sct_hits << "\n"
211  << " # TRT hits = " << m_n_trt_hits );
212 
213  // preselect tracks
214  bool passed_track_preselection =
215  ( fabs(perigee->parameters()[Trk::d0]) < m_max_abs_d0 )&&
216  ( fabs(perigee->parameters()[Trk::z0]) < m_max_abs_z0 )&&
217  ( 1/fabs(perigee->parameters()[Trk::qOverP]) > m_min_p )&& // added by dan
218  ( perigee->pT() > m_min_pT )&&
219  ( fabs(perigee->eta()) < m_max_abs_eta )&&
223 
224  if (!passed_track_preselection) {
225  ATH_MSG_DEBUG( " This track failed preselection." );
226  continue;
227  }
228 
229  ATH_MSG_DEBUG( " This track passed preselection." );
231 
232  for (const auto *trackState : *track_states ) {
233  if (trackState->type(Trk::TrackStateOnSurface::Measurement)) {
234  fill_hit_data(*trackState);
235  }
236  }
237 
238  const Trk::TrackStates* holes = m_trt_hole_finder->getHolesOnTrack(*track);
239  if (!holes) {
240  ATH_MSG_WARNING( " TRTTrackHoleSearchTool returned null results." );
241  continue;
242  } else {
243  m_n_pixel_holes = 0;
244  m_n_sct_holes = 0;
245  m_n_trt_holes = 0;
246  for (const auto *hole : *holes) {
248  int hole_det = fill_hole_data(*hole);
249  switch (hole_det) {
250  case 1:
251  m_n_pixel_holes++;
252  break;
253  case 2:
254  m_n_sct_holes++;
255  break;
256  case 3:
257  m_n_trt_holes++;
258  break;
259  default:
260  ATH_MSG_ERROR("fill_hole_data returned an invalid det type: " << hole_det);
261  }
262  } else {
263  ATH_MSG_WARNING(" hole finder returned a TrackStateOnSurface not of type Hole.");
264  }
265  }
266  delete holes;
267  }
268 
269  //------- added by dan -------
270 
272 
273  if (!vxContainer.isValid()) {
274  ATH_MSG_ERROR(" Failed to retrieve VxContainer: " << m_vertexContainerKey.key());
275  return StatusCode::FAILURE;
276  }
277  m_n_primary_vertex = vxContainer->size() - 1;
278  //-----------------------------
279 
280 
281  m_tree->Fill();
282 
283  ATH_MSG_DEBUG( " This track has\n"
284  << " # Pixel holes = " << m_n_pixel_holes << "\n"
285  << " # SCT holes = " << m_n_sct_holes << "\n"
286  << " # TRT holes = " << m_n_trt_holes );
287 
288  } // end loop over tracks
289 
290  m_num_events++;
291  return StatusCode::SUCCESS;
292 }
293 
294 
295 //____________________________________________________________________________
297  ATH_MSG_DEBUG( "# tracks = " << m_num_tracks );
298  ATH_MSG_DEBUG( "# preselected tracks = " << m_num_preselected_tracks );
299 
300 #ifdef ANP_CPU_PROFILER
301  ATH_MSG_ALWAYS("ProfilerStop.");
302  ProfilerStop();
303 #endif
304 
305  return StatusCode::SUCCESS;
306 }
307 
308 
309 //----------------------------------------------------------------------------
310 // private methods
311 //----------------------------------------------------------------------------
312 
313 //____________________________________________________________________________
315  m_tree->Branch("event_number", &m_event_number, "event_number/i");
316  m_tree->Branch("run_number", &m_run_number, "run_number/i");
317  m_tree->Branch("lumi_block", &m_lumi_block, "lumi_block/i");
318  m_tree->Branch("track_pt", &m_track_pt, "track_pt/F");
319  m_tree->Branch("track_eta", &m_track_eta, "track_eta/F");
320  m_tree->Branch("track_phi", &m_track_phi, "track_phi/F");
321  m_tree->Branch("track_d0", &m_track_d0, "track_d0/F");
322  m_tree->Branch("track_z0", &m_track_z0, "track_z0/F");
323  m_tree->Branch("n_pixel_hits", &m_n_pixel_hits, "n_pixel_hits/I");
324  m_tree->Branch("n_sct_hits", &m_n_sct_hits, "n_sct_hits/I");
325  m_tree->Branch("n_trt_hits", &m_n_trt_hits, "n_trt_hits/I");
326  m_tree->Branch("hit_bec", &m_hit_bec);
327  m_tree->Branch("hit_phi", &m_hit_phi);
328  m_tree->Branch("hit_layer", &m_hit_layer);
329  m_tree->Branch("hit_strawlayer", &m_hit_strawlayer);
330  m_tree->Branch("hit_straw", &m_hit_straw);
331  m_tree->Branch("hit_chip", &m_hit_chip);
332  m_tree->Branch("hit_pad", &m_hit_pad);
333  m_tree->Branch("hit_x", &m_hit_x);
334  m_tree->Branch("hit_y", &m_hit_y);
335  m_tree->Branch("hit_z", &m_hit_z);
336  m_tree->Branch("hit_center_x", &m_hit_center_x);
337  m_tree->Branch("hit_center_y", &m_hit_center_y);
338  m_tree->Branch("hit_center_z", &m_hit_center_z);
339  m_tree->Branch("hit_R", &m_hit_R);
340  m_tree->Branch("hit_locR", &m_hit_locR);
341  m_tree->Branch("hit_HL", &m_hit_HL);
342  m_tree->Branch("hit_det", &m_hit_det);
343  m_tree->Branch("hit_ub_locR", &m_hit_ub_locR);
344  m_tree->Branch("hit_ub_x", &m_hit_ub_x);
345  m_tree->Branch("hit_ub_y", &m_hit_ub_y);
346  m_tree->Branch("hit_ub_z", &m_hit_ub_z);
347  m_tree->Branch("n_pixel_holes", &m_n_pixel_holes, "n_pixel_holes/I");
348  m_tree->Branch("n_sct_holes", &m_n_sct_holes, "n_sct_holes/I");
349  m_tree->Branch("n_trt_holes", &m_n_trt_holes, "n_trt_holes/I");
350  m_tree->Branch("hole_bec", &m_hole_bec);
351  m_tree->Branch("hole_phi", &m_hole_phi);
352  m_tree->Branch("hole_layer", &m_hole_layer);
353  m_tree->Branch("hole_strawlayer", &m_hole_strawlayer);
354  m_tree->Branch("hole_straw", &m_hole_straw);
355  m_tree->Branch("hole_chip", &m_hole_chip);
356  m_tree->Branch("hole_pad", &m_hole_pad);
357  m_tree->Branch("hole_x", &m_hole_x);
358  m_tree->Branch("hole_y", &m_hole_y);
359  m_tree->Branch("hole_z", &m_hole_z);
360  m_tree->Branch("hole_center_x", &m_hole_center_x);
361  m_tree->Branch("hole_center_y", &m_hole_center_y);
362  m_tree->Branch("hole_center_z", &m_hole_center_z);
363  m_tree->Branch("hole_locR", &m_hole_locR);
364  m_tree->Branch("hole_locR_error", &m_hole_locR_error);
365  m_tree->Branch("hole_det", &m_hole_det);
366 
367  // ---- branches added by dan ------
368  m_tree->Branch("n_primary_vertex", &m_n_primary_vertex, "n_primary_vertex/I");
369  m_tree->Branch("hit_tube_hit", &m_hit_tube_hit);
370  m_tree->Branch("n_tube_hits", &m_n_tube_hits, "n_tube_hits/I");
371  // -------------------------------
372 }
373 
374 
375 //____________________________________________________________________________
377  m_event_number = 0;
378  m_run_number = 0;
379  m_lumi_block = 0;
380  m_track_pt = 0.0;
381  m_track_eta = 0.0;
382  m_track_phi = 0.0;
383  m_track_d0 = 0.0;
384  m_track_z0 = 0.0;
385  m_n_pixel_hits = 0;
386  m_n_sct_hits = 0;
387  m_n_trt_hits = 0;
388  m_hit_bec.clear();
389  m_hit_phi.clear();
390  m_hit_layer.clear();
391  m_hit_strawlayer.clear();
392  m_hit_straw.clear();
393  m_hit_chip.clear();
394  m_hit_pad.clear();
395  m_hit_x.clear();
396  m_hit_y.clear();
397  m_hit_z.clear();
398  m_hit_center_x.clear();
399  m_hit_center_y.clear();
400  m_hit_center_z.clear();
401  m_hit_R.clear();
402  m_hit_locR.clear();
403  m_hit_HL.clear();
404  m_hit_det.clear();
405  m_hit_ub_locR.clear();
406  m_hit_ub_x.clear();
407  m_hit_ub_y.clear();
408  m_hit_ub_z.clear();
409  m_n_pixel_holes = 0;
410  m_n_sct_holes = 0;
411  m_n_trt_holes = 0;
412  m_hole_bec.clear();
413  m_hole_phi.clear();
414  m_hole_layer.clear();
415  m_hole_strawlayer.clear();
416  m_hole_straw.clear();
417  m_hole_chip.clear();
418  m_hole_pad.clear();
419  m_hole_x.clear();
420  m_hole_y.clear();
421  m_hole_z.clear();
422  m_hole_center_x.clear();
423  m_hole_center_y.clear();
424  m_hole_center_z.clear();
425  m_hole_locR.clear();
426  m_hole_locR_error.clear();
427  m_hole_det.clear();
428 
429  m_n_primary_vertex = 0; // added by dan
430  m_hit_tube_hit.clear(); // added by dan
431  m_n_tube_hits = 0; // added by dan
432 }
433 
434 
435 //____________________________________________________________________________
437  const Trk::TrackParameters* track_parameters = hit.trackParameters();
438  if (!track_parameters) {
439  ATH_MSG_ERROR("fill_hit_data(hit): null track_parameters");
440  return 0;
441  }
442 
443  m_hit_x.push_back( track_parameters->position().x() );
444  m_hit_y.push_back( track_parameters->position().y() );
445  m_hit_z.push_back( track_parameters->position().z() );
446 
447  m_hit_center_x.push_back( track_parameters->associatedSurface().center().x() );
448  m_hit_center_y.push_back( track_parameters->associatedSurface().center().y() );
449  m_hit_center_z.push_back( track_parameters->associatedSurface().center().z() );
450 
452 
453  int det = 0;
454  if(m_TRT_ID->is_pixel(id)) {
455  det = 1;
456  } else if(m_TRT_ID->is_sct(id)) {
457  det = 2;
458  } else if(m_TRT_ID->is_trt(id)) {
459  det = 3;
460  }
461  m_hit_det.push_back( det );
462 
463  m_hit_bec.push_back( det == 3 ? m_TRT_ID->barrel_ec(id) : 0 );
464  m_hit_phi.push_back( det == 3 ? m_TRT_ID->phi_module(id) : -1 );
465  m_hit_layer.push_back( det == 3 ? m_TRT_ID->layer_or_wheel(id) : -1 );
466  m_hit_strawlayer.push_back( det == 3 ? m_TRT_ID->straw_layer(id) : -1 );
467  m_hit_straw.push_back( det == 3 ? m_TRT_ID->straw(id) : -1 );
468 
469  int chip = -1;
470  if(det == 3) {
471  m_TRTStrawNeighbourSvc->getChip(id, chip);
472  }
473  m_hit_chip.push_back(chip);
474 
475  int pad = -1;
476  if(det == 3) {
477  m_TRTStrawNeighbourSvc->getPad(id, pad);
478  }
479  m_hit_pad.push_back(pad);
480 
481  m_hit_locR.push_back( det == 3 ? track_parameters->parameters()[Trk::locR] : -1 );
482 
483  const Trk::MeasurementBase* measurement = hit.measurementOnTrack();
484  const InDet::TRT_DriftCircleOnTrack* trtcircle = nullptr;
485  if(measurement) {
486  trtcircle = dynamic_cast<const InDet::TRT_DriftCircleOnTrack*> (measurement);
487  } else {
488  ATH_MSG_ERROR("fill_hit_data(hit): null measurement");
489  }
490 
491  if(!trtcircle) {
492  ATH_MSG_DEBUG("fill_hit_data(hit): null trtcircle");
493  }
494 
495  m_hit_R.push_back( (det == 3)&&(trtcircle != nullptr) ? trtcircle->localParameters()[Trk::driftRadius] : -1 );
496  m_hit_HL.push_back( (det == 3)&&(trtcircle != nullptr) ? trtcircle->highLevel() : -1 );
497 
498  // unbiased trk parameters
499  std::unique_ptr<Trk::TrackParameters> unbiased_track_parameters =
500  m_updator->removeFromState(
501  *(hit.trackParameters()),
504 
505  m_hit_ub_locR.push_back( det == 3 && unbiased_track_parameters ? unbiased_track_parameters->parameters()[Trk::locR] : -1 );
506  m_hit_ub_x.push_back( unbiased_track_parameters ? unbiased_track_parameters->position().x() : -1 );
507  m_hit_ub_y.push_back( unbiased_track_parameters ? unbiased_track_parameters->position().y() : -1 );
508  m_hit_ub_z.push_back( unbiased_track_parameters ? unbiased_track_parameters->position().z() : -1 );
509 
510  // ------- added by dan -------
511  int is_tube_hit = -1;
512  if (measurement && (det == 3) ) {
513  is_tube_hit = ((measurement->localCovariance())(Trk::locX,Trk::locX) > 1.0)? 1 : 0;
514  if (is_tube_hit) m_n_tube_hits++;
515  }
516 
517  m_hit_tube_hit.push_back( (det == 3)&&(measurement != nullptr) ? is_tube_hit : -1);
518 
519  // ----------------------------
520 
521 
522  return det;
523 }
524 
525 
526 //____________________________________________________________________________
528  const Trk::TrackParameters* track_parameters = hole.trackParameters();
529  if (!track_parameters) {
530  ATH_MSG_ERROR("fill_hole_data(hole): null track_parameters");
531  return 0;
532  }
533 
534  m_hole_x.push_back( track_parameters->position().x() );
535  m_hole_y.push_back( track_parameters->position().y() );
536  m_hole_z.push_back( track_parameters->position().z() );
537 
538  m_hole_center_x.push_back( track_parameters->associatedSurface().center().x() );
539  m_hole_center_y.push_back( track_parameters->associatedSurface().center().y() );
540  m_hole_center_z.push_back( track_parameters->associatedSurface().center().z() );
541 
543 
544  int det = 0;
545  if(m_TRT_ID->is_pixel(id)) {
546  det = 1;
547  } else if(m_TRT_ID->is_sct(id)) {
548  det = 2;
549  } else if(m_TRT_ID->is_trt(id)) {
550  det = 3;
551  }
552  m_hole_det.push_back( det );
553 
554  m_hole_bec.push_back( det == 3 ? m_TRT_ID->barrel_ec(id) : -1 );
555  m_hole_phi.push_back( det == 3 ? m_TRT_ID->phi_module(id) : -1 );
556  m_hole_layer.push_back( det == 3 ? m_TRT_ID->layer_or_wheel(id) : -1 );
557  m_hole_strawlayer.push_back( det == 3 ? m_TRT_ID->straw_layer(id) : -1 );
558  m_hole_straw.push_back( det == 3 ? m_TRT_ID->straw(id) : -1 );
559 
560  int chip = -1;
561  if (det == 3) {
562  m_TRTStrawNeighbourSvc->getChip(id, chip);
563  }
564  m_hole_chip.push_back(chip);
565 
566  int pad = -1;
567  if (det == 3) {
568  m_TRTStrawNeighbourSvc->getPad(id, pad);
569  }
570  m_hole_pad.push_back(pad);
571 
572  float locR = track_parameters->parameters()[Trk::locR];
573  m_hole_locR.push_back( det == 3 ? locR : -1 );
574 
575  float locR_error = 0.0;
576  //const Trk::MeasuredTrackParameters* meas = dynamic_cast< const Trk::MeasuredTrackParameters* >(track_parameters);
577  //if(meas)
578  //{
579 
580  const AmgSymMatrix(5)* merr = track_parameters->covariance();
581  if(merr){
582  locR_error = Amg::error(*merr,Trk::locR);
583  } else {
584  ATH_MSG_ERROR("Track parameters have no covariance attached.");
585  }
586  m_hole_locR_error.push_back( det == 3 ? locR_error : 0.0 );
587 
588  /*
589  ATH_MSG_DEBUG("hole trk x = " << track_parameters->position().x() <<
590  ", surf x = " << track_parameters->associatedSurface()->center().x());
591  ATH_MSG_DEBUG("hole trk y = " << track_parameters->position().y() <<
592  ", surf y = " << track_parameters->associatedSurface()->center().y());
593  ATH_MSG_DEBUG("hole trk z = " << track_parameters->position().z() <<
594  ", surf z = " << track_parameters->associatedSurface()->center().z());
595  */
596 
597  return det;
598 }
599 
TRTStrawEfficiency::m_max_abs_d0
float m_max_abs_d0
Definition: TRTStrawEfficiency.h:53
TRTStrawEfficiency::m_track_phi
float m_track_phi
Definition: TRTStrawEfficiency.h:91
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
TRTStrawEfficiency::m_min_pixel_hits
int m_min_pixel_hits
Definition: TRTStrawEfficiency.h:58
AtlasDetectorID::is_pixel
bool is_pixel(Identifier id) const
Definition: AtlasDetectorID.h:760
TRTStrawEfficiency::m_min_p
float m_min_p
Definition: TRTStrawEfficiency.h:56
TRTStrawEfficiency::m_min_trt_hits
int m_min_trt_hits
Definition: TRTStrawEfficiency.h:60
Trk::TrackStateOnSurface::trackParameters
const TrackParameters * trackParameters() const
return ptr to trackparameters const overload
SCT_ClusterOnTrack.h
TRTStrawEfficiency::m_updator
PublicToolHandle< Trk::IUpdator > m_updator
Definition: TRTStrawEfficiency.h:72
TRTStrawEfficiency::m_n_sct_hits
int m_n_sct_hits
Definition: TRTStrawEfficiency.h:95
TRTStrawEfficiency::m_max_abs_z0
float m_max_abs_z0
Definition: TRTStrawEfficiency.h:54
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
TrackParameters.h
TRTStrawEfficiency::m_hole_pad
std::vector< int > m_hole_pad
Definition: TRTStrawEfficiency.h:127
TRTStrawEfficiency::m_hit_center_x
std::vector< float > m_hit_center_x
Definition: TRTStrawEfficiency.h:107
Trk::locX
@ locX
Definition: ParamDefs.h:43
xAOD::EventInfo_v1::eventNumber
uint64_t eventNumber() const
The current event's event number.
TRTStrawEfficiency::m_hit_ub_z
std::vector< float > m_hit_ub_z
Definition: TRTStrawEfficiency.h:117
AtlasDetectorID::is_sct
bool is_sct(Identifier id) const
Definition: AtlasDetectorID.h:770
Trk::ParametersBase::position
const Amg::Vector3D & position() const
Access method for the position.
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
TRTStrawEfficiency::m_hit_bec
std::vector< int > m_hit_bec
Definition: TRTStrawEfficiency.h:97
Trk::ParametersBase::associatedSurface
virtual const Surface & associatedSurface() const override=0
Access to the Surface associated to the Parameters.
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
InDetDD::holes
@ holes
Definition: InDetDD_Defs.h:17
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
TRTStrawEfficiency::m_n_pixel_holes
int m_n_pixel_holes
Definition: TRTStrawEfficiency.h:118
TRTStrawEfficiency::m_hole_z
std::vector< float > m_hole_z
Definition: TRTStrawEfficiency.h:130
EventPrimitivesHelpers.h
Trk::Surface::associatedDetectorElementIdentifier
Identifier associatedDetectorElementIdentifier() const
return Identifier of the associated Detector Element
TRTStrawEfficiency::m_hist_svc
ServiceHandle< ITHistSvc > m_hist_svc
Definition: TRTStrawEfficiency.h:61
TRT_ID.h
This is an Identifier helper class for the TRT subdetector. This class is a factory for creating comp...
TRTStrawEfficiency::m_hit_phi
std::vector< int > m_hit_phi
Definition: TRTStrawEfficiency.h:98
TRTStrawEfficiency::m_num_preselected_tracks
unsigned int m_num_preselected_tracks
Definition: TRTStrawEfficiency.h:83
TRTStrawEfficiency::m_hit_layer
std::vector< int > m_hit_layer
Definition: TRTStrawEfficiency.h:99
TRTStrawEfficiency::m_hit_chip
std::vector< int > m_hit_chip
Definition: TRTStrawEfficiency.h:102
TRTStrawEfficiency::m_event_number
unsigned int m_event_number
Definition: TRTStrawEfficiency.h:86
TRTStrawEfficiency::make_branches
void make_branches()
Definition: TRTStrawEfficiency.cxx:314
Trk::z0
@ z0
Definition: ParamDefs.h:70
Trk::TrackStateOnSurface::measurementOnTrack
const MeasurementBase * measurementOnTrack() const
returns MeasurementBase const overload
InDet::TRT_DriftCircleOnTrack::highLevel
bool highLevel() const
returns true if the high level threshold was passed
Definition: TRT_DriftCircleOnTrack.h:234
TRTStrawEfficiency::initialize
StatusCode initialize()
Definition: TRTStrawEfficiency.cxx:82
Trk::locR
@ locR
Definition: ParamDefs.h:50
TRTStrawEfficiency::m_n_pixel_hits
int m_n_pixel_hits
Definition: TRTStrawEfficiency.h:94
AtlasDetectorID::is_trt
bool is_trt(Identifier id) const
Definition: AtlasDetectorID.h:782
TRTStrawEfficiency::m_track_d0
float m_track_d0
Definition: TRTStrawEfficiency.h:92
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
TRTStrawEfficiency::m_hole_chip
std::vector< int > m_hole_chip
Definition: TRTStrawEfficiency.h:126
Trk::Surface::center
const Amg::Vector3D & center() const
Returns the center position of the Surface.
TRTStrawEfficiency::m_min_sct_hits
int m_min_sct_hits
Definition: TRTStrawEfficiency.h:59
InDet::TRT_DriftCircleOnTrack
Definition: TRT_DriftCircleOnTrack.h:53
TRTStrawEfficiency::m_trigDec
PublicToolHandle< Trig::ITrigDecisionTool > m_trigDec
Definition: TRTStrawEfficiency.h:74
TRTStrawEfficiency::m_TRTStrawNeighbourSvc
ServiceHandle< ITRT_StrawNeighbourSvc > m_TRTStrawNeighbourSvc
Definition: TRTStrawEfficiency.h:62
TRTStrawEfficiency::m_TRT_ID
const TRT_ID * m_TRT_ID
Definition: TRTStrawEfficiency.h:70
TRTStrawEfficiency::m_n_trt_hits
int m_n_trt_hits
Definition: TRTStrawEfficiency.h:96
TRTStrawEfficiency::m_hole_straw
std::vector< int > m_hole_straw
Definition: TRTStrawEfficiency.h:125
AmgSymMatrix
#define AmgSymMatrix(dim)
Definition: EventPrimitives.h:52
xAOD::EventInfo_v1::runNumber
uint32_t runNumber() const
The current event's run number.
TRTStrawEfficiency::m_hole_det
std::vector< int > m_hole_det
Definition: TRTStrawEfficiency.h:136
TRTStrawEfficiency::m_hole_locR
std::vector< float > m_hole_locR
Definition: TRTStrawEfficiency.h:134
AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
TRTStrawEfficiency::execute
StatusCode execute()
Definition: TRTStrawEfficiency.cxx:125
TRTStrawEfficiency::m_hit_locR
std::vector< float > m_hit_locR
Definition: TRTStrawEfficiency.h:111
TRTStrawEfficiency::m_hit_HL
std::vector< int > m_hit_HL
Definition: TRTStrawEfficiency.h:112
TRTStrawEfficiency::m_n_primary_vertex
int m_n_primary_vertex
Definition: TRTStrawEfficiency.h:140
TRTStrawEfficiency::m_hole_center_x
std::vector< float > m_hole_center_x
Definition: TRTStrawEfficiency.h:131
TRTStrawEfficiency::m_hit_center_y
std::vector< float > m_hit_center_y
Definition: TRTStrawEfficiency.h:108
TRTStrawEfficiency::m_vertexContainerKey
SG::ReadHandleKey< xAOD::VertexContainer > m_vertexContainerKey
Definition: TRTStrawEfficiency.h:79
TRTStrawEfficiency::m_hit_R
std::vector< float > m_hit_R
Definition: TRTStrawEfficiency.h:110
TRTTrackHoleSearchTool.h
TRTStrawEfficiency::m_tree
TTree * m_tree
Definition: TRTStrawEfficiency.h:69
TRTStrawEfficiency::m_hole_layer
std::vector< int > m_hole_layer
Definition: TRTStrawEfficiency.h:123
TRTStrawEfficiency::m_track_pt
float m_track_pt
Definition: TRTStrawEfficiency.h:89
TRTStrawEfficiency::m_hole_center_y
std::vector< float > m_hole_center_y
Definition: TRTStrawEfficiency.h:132
TRTStrawEfficiency::m_required_trigger
std::string m_required_trigger
Definition: TRTStrawEfficiency.h:65
TRT_ID::straw
int straw(const Identifier &id) const
Definition: TRT_ID.h:902
TRTStrawEfficiency::m_hole_y
std::vector< float > m_hole_y
Definition: TRTStrawEfficiency.h:129
TRTStrawEfficiency::m_hit_ub_locR
std::vector< float > m_hit_ub_locR
Definition: TRTStrawEfficiency.h:114
TRTStrawEfficiency::m_stream_name
std::string m_stream_name
Definition: TRTStrawEfficiency.h:64
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
Trk::TrackStateOnSurface::Hole
@ Hole
A hole on the track - this is defined in the following way.
Definition: TrackStateOnSurface.h:128
TRTStrawEfficiency::m_hit_pad
std::vector< int > m_hit_pad
Definition: TRTStrawEfficiency.h:103
TRTStrawEfficiency::m_trt_hole_finder
ToolHandle< Trk::ITrackHoleSearchTool > m_trt_hole_finder
Definition: TRTStrawEfficiency.h:52
TRTStrawEfficiency::m_num_tracks
unsigned int m_num_tracks
Definition: TRTStrawEfficiency.h:82
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
Trk::theta
@ theta
Definition: ParamDefs.h:72
TRTStrawEfficiency::m_n_sct_holes
int m_n_sct_holes
Definition: TRTStrawEfficiency.h:119
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
TRTStrawEfficiency::m_hit_center_z
std::vector< float > m_hit_center_z
Definition: TRTStrawEfficiency.h:109
Trk::driftRadius
@ driftRadius
trt, straws
Definition: ParamDefs.h:59
TRTStrawEfficiency::m_hit_x
std::vector< float > m_hit_x
Definition: TRTStrawEfficiency.h:104
TRTStrawEfficiency::m_hole_x
std::vector< float > m_hole_x
Definition: TRTStrawEfficiency.h:128
WritePulseShapeToCool.det
det
Definition: WritePulseShapeToCool.py:204
TRTStrawEfficiency::m_eventInfoKey
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
Definition: TRTStrawEfficiency.h:78
TRTStrawEfficiency::m_hit_strawlayer
std::vector< int > m_hit_strawlayer
Definition: TRTStrawEfficiency.h:100
TRTStrawEfficiency::m_tracksKey
SG::ReadHandleKey< TrackCollection > m_tracksKey
Definition: TRTStrawEfficiency.h:77
ATH_MSG_ALWAYS
#define ATH_MSG_ALWAYS(x)
Definition: AthMsgStreamMacros.h:35
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
TRTStrawEfficiency::m_min_pT
float m_min_pT
Definition: TRTStrawEfficiency.h:55
Trk::ParametersBase
Definition: ParametersBase.h:55
TRT_DriftCircleOnTrack.h
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
TRT_ID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: TRT_ID.h:866
TRT_ID::straw_layer
int straw_layer(const Identifier &id) const
Definition: TRT_ID.h:893
DataVector< const Trk::TrackStateOnSurface >
TRT_ID::layer_or_wheel
int layer_or_wheel(const Identifier &id) const
Definition: TRT_ID.h:884
xAOD::EventInfo_v1::lumiBlock
uint32_t lumiBlock() const
The current event's luminosity block number.
AthAlgorithm
Definition: AthAlgorithm.h:47
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
TRTStrawEfficiency::fill_hit_data
int fill_hit_data(const Trk::TrackStateOnSurface &hit)
Definition: TRTStrawEfficiency.cxx:436
Trk::MeasurementBase::localCovariance
const Amg::MatrixX & localCovariance() const
Interface method to get the localError.
Definition: MeasurementBase.h:138
TRTStrawEfficiency::m_track_z0
float m_track_z0
Definition: TRTStrawEfficiency.h:93
Trk::MeasurementBase
Definition: MeasurementBase.h:58
Trk::TrackStateOnSurface
represents the track state (measurement, material, fit parameters and quality) at a surface.
Definition: TrackStateOnSurface.h:71
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
Trk::d0
@ d0
Definition: ParamDefs.h:69
TRTStrawEfficiency::m_hit_tube_hit
std::vector< int > m_hit_tube_hit
Definition: TRTStrawEfficiency.h:139
Amg::error
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 ...
Definition: EventPrimitivesHelpers.h:40
TRTStrawEfficiency::fill_hole_data
int fill_hole_data(const Trk::TrackStateOnSurface &hole)
Definition: TRTStrawEfficiency.cxx:527
TRTStrawEfficiency::m_hole_phi
std::vector< int > m_hole_phi
Definition: TRTStrawEfficiency.h:122
TRT_ID::phi_module
int phi_module(const Identifier &id) const
Definition: TRT_ID.h:875
TRTStrawEfficiency::m_n_tube_hits
int m_n_tube_hits
Definition: TRTStrawEfficiency.h:141
Trk::MeasurementBase::localParameters
const LocalParameters & localParameters() const
Interface method to get the LocalParameters.
Definition: MeasurementBase.h:132
ITRT_StrawNeighbourSvc.h
Abstract interface to information on straws electronic grouping.
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
TRTStrawEfficiency::m_max_abs_eta
float m_max_abs_eta
Definition: TRTStrawEfficiency.h:57
TRTStrawEfficiency::m_run_number
unsigned int m_run_number
Definition: TRTStrawEfficiency.h:87
TRTStrawEfficiency::m_hit_det
std::vector< int > m_hit_det
Definition: TRTStrawEfficiency.h:113
TRTStrawEfficiency.h
TRTStrawEfficiency::m_hit_ub_x
std::vector< float > m_hit_ub_x
Definition: TRTStrawEfficiency.h:115
InDet::PixelClusterOnTrack
Definition: PixelClusterOnTrack.h:51
TRTStrawEfficiency::m_n_trt_holes
int m_n_trt_holes
Definition: TRTStrawEfficiency.h:120
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Trk::qOverP
@ qOverP
perigee
Definition: ParamDefs.h:73
TRTStrawEfficiency::m_hit_ub_y
std::vector< float > m_hit_ub_y
Definition: TRTStrawEfficiency.h:116
TRTStrawEfficiency::m_hole_bec
std::vector< int > m_hole_bec
Definition: TRTStrawEfficiency.h:121
TRTStrawEfficiency::m_hole_center_z
std::vector< float > m_hole_center_z
Definition: TRTStrawEfficiency.h:133
TRTStrawEfficiency::m_lumi_block
unsigned int m_lumi_block
Definition: TRTStrawEfficiency.h:88
Trk::hole
@ hole
Definition: MeasurementType.h:36
TRTStrawEfficiency::m_tree_name
std::string m_tree_name
Definition: TRTStrawEfficiency.h:63
TRTStrawEfficiency::m_hole_strawlayer
std::vector< int > m_hole_strawlayer
Definition: TRTStrawEfficiency.h:124
TRTStrawEfficiency::TRTStrawEfficiency
TRTStrawEfficiency(const std::string &name, ISvcLocator *pSvcLocator)
Definition: TRTStrawEfficiency.cxx:37
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
TRTStrawEfficiency::m_num_events
unsigned int m_num_events
Definition: TRTStrawEfficiency.h:81
ReadHandle.h
Handle class for reading from StoreGate.
PixelClusterOnTrack.h
TRTStrawEfficiency::clear_branches
void clear_branches()
Definition: TRTStrawEfficiency.cxx:376
TRTStrawEfficiency::m_hole_locR_error
std::vector< float > m_hole_locR_error
Definition: TRTStrawEfficiency.h:135
GeV
#define GeV
Definition: CaloTransverseBalanceVecMon.cxx:30
TRTStrawEfficiency::m_track_eta
float m_track_eta
Definition: TRTStrawEfficiency.h:90
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
TRTStrawEfficiency::finalize
StatusCode finalize()
Definition: TRTStrawEfficiency.cxx:296
TRTStrawEfficiency::m_hit_z
std::vector< float > m_hit_z
Definition: TRTStrawEfficiency.h:106
Trk::phi0
@ phi0
Definition: ParamDefs.h:71
Trk::TrackStateOnSurface::Measurement
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
Definition: TrackStateOnSurface.h:101
TrackStateOnSurface.h
TRTStrawEfficiency::m_hit_straw
std::vector< int > m_hit_straw
Definition: TRTStrawEfficiency.h:101
InDet::SCT_ClusterOnTrack
Definition: SCT_ClusterOnTrack.h:44
TRTStrawEfficiency::m_hit_y
std::vector< float > m_hit_y
Definition: TRTStrawEfficiency.h:105