ATLAS Offline Software
TRT_TrackExtensionToolCosmics.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // Implementation file for class InDet::TRT_TrackExtensionToolCosmics
8 // (c) ATLAS Detector software
11 
12 
13 
14 
20 //
22  #include "InDetIdentifier/TRT_ID.h"
23 #include <iostream>
24 #include <utility>
25 #include <cmath>
26 
28 // Constructor
30 
32 (const std::string& t,const std::string& n,const IInterface* p)
33  : AthAlgTool(t,n,p),
34  m_roadwidth (10.),
35  m_roadwidth_locz (10.)
36 {
37 
38  declareInterface<ITRT_TrackExtensionTool>(this);
39 
40  declareProperty("RoadWidth" ,m_roadwidth );
41  declareProperty("BoundaryLocZTolerance",m_roadwidth_locz );
42  declareProperty("SearchNeighbour" ,m_searchNeighbour=false);
43 
44  }
45 
47 // Destructor
49 
51 = default;
52 
54 // Initialisation
56 
58 {
60 
61  // Get tTools servise
62  //
63  IToolSvc* toolSvc;
64  if ((sc=service("ToolSvc", toolSvc)).isFailure()) {
65  ATH_MSG_FATAL("Tool service not found !");
66  return StatusCode::FAILURE;
67  }
68 
69  // Get RIO_OnTrack creator without drift time information
70  //
71  if(m_riontrackN.retrieve().isFailure()) {
72  ATH_MSG_FATAL("Failed to retrieve tool "<< m_riontrackN);
73  return StatusCode::FAILURE;
74  }
75  ATH_MSG_DEBUG("Retrieved tool " << m_riontrackN);
76 
77  ATH_CHECK( m_extrapolator.retrieve() );
78 
79  if ((detStore()->retrieve(m_trtid)).isFailure()) {
80  ATH_MSG_FATAL("Problem retrieving TRTID helper");
81  return StatusCode::FAILURE;
82  }
83 
84  // Get output print level
85  //
86  m_outputlevel = msg().level()-MSG::DEBUG;
87  if(m_outputlevel<=0) {
88  m_nprint=0; msg(MSG::DEBUG)<<(*this)<<endmsg;
89  }
90 
91 
92  //Initialize container
94 
95  return sc;
96 
97 
98 
99 
100 }
101 
103 // Finalize
105 
107 {
109 
110  return sc;
111 }
112 
114 // Dumps relevant information into the MsgStream
116 
117 MsgStream& InDet::TRT_TrackExtensionToolCosmics::dump( MsgStream& out ) const
118 {
119  out<<std::endl;
120  if(m_nprint) return dumpEvent(out);
121  return dumpConditions(out);
122 }
123 
124 
126 // Dumps conditions information into the MsgStream
128 
130 {
131 
132  return out;
133 }
134 
136 // Dumps event information into the ostream
138 
140 {
141  return out;
142 }
143 
145 // Dumps relevant information into the ostream
147 
148 std::ostream& InDet::TRT_TrackExtensionToolCosmics::dump( std::ostream& out ) const
149 {
150  return out;
151 }
152 
154 // Overload of << operator MsgStream
156 
157 MsgStream& InDet::operator <<
158  (MsgStream& sl,const InDet::TRT_TrackExtensionToolCosmics& se)
159 {
160  return se.dump(sl);
161 }
162 
164 // Overload of << operator std::ostream
166 
167 std::ostream& InDet::operator <<
168  (std::ostream& sl,const InDet::TRT_TrackExtensionToolCosmics& se)
169 {
170  return se.dump(sl);
171 }
172 
174 // Track extension initiation
176 
177 std::unique_ptr<InDet::ITRT_TrackExtensionTool::IEventData>
179 {
180  //create the boundary surfaces
181  //
183  if(not trtcontainer.isValid() && m_outputlevel<=0) {
184  std::stringstream msg;
185  msg << "Missing TRT_DriftCircleContainer " << m_trtname.key();
186  throw std::runtime_error( msg.str() );
187  }
188 
189  std::unique_ptr<EventData> event_data(new EventData(trtcontainer.cptr()));
190 
191  Amg::RotationMatrix3D r; r.setIdentity();
193  event_data->m_trtcylinder= new Trk::CylinderSurface(t,1150.,3000.);
195  event_data->m_trtdiscA = new Trk::DiscSurface (transf,1.,1200.);
196  transf = Amg::Transform3D(r * Amg::Translation3D(Amg::Vector3D(0.,0.,-3000)));
197  event_data->m_trtdiscC = new Trk::DiscSurface (transf,1.,1200.);
198 
199  return std::unique_ptr<InDet::ITRT_TrackExtensionTool::IEventData>(event_data.release());
200 
201 }
202 
204 // Main methods for track extension to TRT
206 
207 std::vector<const Trk::MeasurementBase*>&
209  const Trk::Track& Tr,
212 {
215 
216  event_data.m_measurement.clear();
217 
218  if(not event_data.m_trtcontainer) return event_data.m_measurement;
219 
220  const Trk::TrackStates*
221  tsos = Tr.trackStateOnSurfaces();
222 
223  const Trk::TrackParameters*
224  par = (*(tsos->rbegin()))->trackParameters(); if(!par ) return event_data.m_measurement;
225  const Trk::TrackParameters*
226  parb = (*(tsos->begin()))->trackParameters();
227 
228 
229  if(parb && par!=parb) {
230 
231  const Amg::Vector3D& g1 = par ->position();
232  const Amg::Vector3D& g2 = parb->position();
233  if((g2.x()*g2.x()+g2.y()*g2.y()) > (g1.x()*g1.x()+g1.y()*g1.y())) par=parb;
234  }
235 
236  if(Tr.perigeeParameters()) {
237  return extendTrack(ctx, Tr.perigeeParameters(),event_data, used);
238  }
239  event_data.m_measurement.clear();
240  return event_data.m_measurement;
241 }
242 
244 // Main methods for track extension to TRT
246 void InDet::TRT_TrackExtensionToolCosmics::analyze_tpars(const std::vector<const Trk::TrackParameters* >* tpars,
248 {
249  msg(MSG::DEBUG)<<"Number of tpars: "<<tpars->size()<<endmsg;
250 
251  double lastz=-99999;
252  std::vector< const Trk::TrackParameters* >::const_iterator parameterIter = tpars->begin();
253  for ( ; parameterIter != tpars->end(); ++parameterIter) {
254  msg(MSG::DEBUG)<< "par pos: " << (**parameterIter).position() <<endmsg;
255 
256  if ( (*parameterIter)->associatedSurface().associatedDetectorElementIdentifier()==0 ) {
257  msg(MSG::DEBUG)<<"No DE identifier!!!"<<endmsg;
258  continue;
259  }
260 
261  const Identifier& DCId = (*parameterIter)->associatedSurface().associatedDetectorElementIdentifier();
262  if ( m_trtid->is_trt( DCId ) ) {
263 
264  IdentifierHash detElements[3];
265  detElements[1]=(*parameterIter)->associatedSurface().associatedDetectorElement()->identifyHash();
266  if(m_searchNeighbour){
267  //fill entry 0 and 2 with the neighbours (different in phi but identical in layer)
268  int bec=m_trtid->barrel_ec(DCId);
269  int phi_mod=m_trtid->phi_module(DCId);
270  int layer_or_wheel=m_trtid->layer_or_wheel(DCId);
271  int slay=m_trtid->straw_layer(DCId);
272 
273  phi_mod-=1;
274  if(phi_mod<0) phi_mod=31;
275 
276  Identifier temp=m_trtid->straw_id(bec,phi_mod,layer_or_wheel,slay,0);
277  detElements[0]=m_trtid->straw_layer_hash(temp);
278 
279  phi_mod+=2;
280  if(phi_mod>31) phi_mod=0;
281  temp=m_trtid->straw_id(bec,phi_mod,layer_or_wheel,slay,0);
282  detElements[2]=m_trtid->straw_layer_hash(temp);
283  }
284  double maxdist=m_roadwidth;
285  const InDet::TRT_DriftCircle *circ=nullptr;
286 
287  for(int i=-1;i<2;i++) {
288  if(m_searchNeighbour || i==0){
289 
290  //check if this PRD exists
291  // get the driftCircleCollection belonging to this id
292  const InDet::TRT_DriftCircleCollection *container = event_data.m_trtcontainer->indexFindPtr(detElements[i+1]);
293 
294  if(container==nullptr) {
295  msg(MSG::DEBUG)<<"for the current detectorElement no DriftCircleContainer seems to exist: "<<m_trtid->show_to_string(m_trtid->layer_id(detElements[i+1]))<<endmsg;
296  continue;
297  }
298 
299  msg(MSG::DEBUG)<< "There are " << container->size() << " entries in the TRT_DriftCircleCollection "<<m_trtid->show_to_string(m_trtid->layer_id(detElements[i+1])) <<endmsg;
300 
301  //take the closest one in case it satisfies some default cuts
302  InDet::TRT_DriftCircleCollection::const_iterator driftCircleIterator = container->begin();
303  for (; driftCircleIterator != container->end(); ++driftCircleIterator) {
304 
305  //get the associated surface of the driftcircle
306  const Trk::Surface &dc_surface=(*driftCircleIterator)->detectorElement()->surface((*driftCircleIterator)->identify());
307 
308  //get the local position of the track prediction in the frame of the driftcircle
309  std::optional<Amg::Vector2D> lpos=dc_surface.globalToLocal((*parameterIter)->position());
310 
311  double distance=m_roadwidth+1;
312  if(lpos){
313  distance = std::abs(lpos->x());
314  msg(MSG::DEBUG)<<"Hit "<<m_trtid->show_to_string((*driftCircleIterator)->identify())<<" has a distance of "<<distance<<endmsg;
315 
316  double dist_locz=std::abs(lpos->y());
317  if(distance<m_roadwidth+1){
318  if(!dc_surface.insideBounds(*lpos,m_roadwidth,m_roadwidth_locz)){
319  msg(MSG::DEBUG)<<"Hit not inside surface bounds! "<<distance<<" , "<<dist_locz<<endmsg;
320  msg(MSG::DEBUG)<<"\trejecting hit"<<endmsg;
322  }
323  }
324 
325  }
326 
327  if(distance<maxdist){
328  maxdist=distance;
329  circ=(*driftCircleIterator);
330  }
331  }
332  }
333  }
334  msg(MSG::DEBUG)<<"Maximal distance: "<<maxdist<<endmsg;
335  if(circ){
336  msg(MSG::DEBUG)<<"Found Driftcircle! Adding it to list ..."<<m_trtid->show_to_string(circ->identify())<<endmsg;
337  if (lastz<-9999) lastz=(**parameterIter).position().z();
338  if (std::abs(lastz-(**parameterIter).position().z())>500.) return;
339  lastz=(**parameterIter).position().z();
340  const Trk::StraightLineSurface *slsurf=dynamic_cast<const Trk::StraightLineSurface *>(&circ->detectorElement()->surface(circ->identify())); if(!slsurf) continue;
341  Trk::AtaStraightLine atasl((**parameterIter).position(),(**parameterIter).parameters()[Trk::phi],(**parameterIter).parameters()[Trk::theta],(**parameterIter).parameters()[Trk::qOverP],*slsurf);
342  const Trk::MeasurementBase *newmeas=m_riontrackN->correct(*circ,atasl);
343  event_data.m_measurement.push_back(newmeas);
344 
345  }
346  }
347  }
348 }
349 
350 namespace InDet{
352  public:
353  explicit tp_sort_cosmics(double theta){m_theta=theta;}
354  bool operator()(const Trk::TrackParameters *par1,const Trk::TrackParameters *par2) const{
355  if (m_theta>M_PI_2) return (par1->position().z()>par2->position().z());
356  else return (par1->position().z()<par2->position().z());
357  }
358  private:
359  double m_theta;
360  };
361 }
362 
364 // Main methods for track extension to TRT
366 
367 std::vector<const Trk::MeasurementBase*>&
369  const Trk::TrackParameters * par,
372 {
375 
376  event_data.m_measurement.clear();
377 
378  std::vector<Identifier> vecID;
379  std::vector<const Trk::TrackParameters*> vecTP;
380 
381 
382 
383  std::vector<const Trk::TrackParameters* >* tpars_down=nullptr;
384  std::vector<const Trk::TrackParameters* >* tpars_up=nullptr;
385  const Trk::Perigee *per=dynamic_cast<const Trk::Perigee *>(par);
386  if (!per) {
387  msg(MSG::FATAL)<<"Track perigee not found!"<<endmsg;
388  return event_data.m_measurement;
389  }
390 
391  if (!event_data.m_trtcontainer) {
392  return event_data.m_measurement;
393  }
394 
395  InDet::TRT_DriftCircleContainer::const_iterator
396  w = event_data.m_trtcontainer->begin(),we = event_data.m_trtcontainer->end();
397  for(; w!=we; ++w) {
398  if ((**w).empty()) continue;
399  const Trk::Surface &surf=(**(**w).begin()).detectorElement()->surface();
400  Amg::Vector3D pos=intersect(&surf,per);
401  Amg::Vector3D locintersec = (surf.transform().inverse())*pos;
402  Amg::Vector2D locpos(locintersec.x(), locintersec.y());
403  if (pos.perp()<500. || !surf.insideBounds(locpos,50.,50.)) continue;
404 
405  Amg::Vector3D pos2=surf.transform()*Amg::Vector3D(locintersec.x(),locintersec.y(),0);
406 
407  const Trk::PlaneSurface *plsurf=dynamic_cast<const Trk::PlaneSurface *>(&surf);
408  const Trk::DiscSurface *discsurf=dynamic_cast<const Trk::DiscSurface *>(&surf);
409  Trk::TrackParameters *newpar=nullptr;
410  if (plsurf) newpar=new Trk::AtaPlane(pos2,per->parameters()[Trk::phi],per->parameters()[Trk::theta],per->parameters()[Trk::qOverP],*plsurf);
411  else newpar=new Trk::AtaDisc(pos2,per->parameters()[Trk::phi],per->parameters()[Trk::theta],per->parameters()[Trk::qOverP],*discsurf);
412  vecTP.push_back(newpar);
413  }
414  tpars_down=new std::vector<const Trk::TrackParameters* >;
415  tpars_up=new std::vector<const Trk::TrackParameters* >;
416 
417  if(!tpars_down || !tpars_up) return event_data.m_measurement;
418 
419  tp_sort_cosmics sorter(per->parameters()[Trk::theta]);
420  std::sort(vecTP.begin(),vecTP.end(),sorter);
421  for (const auto *tmppar : vecTP){
422  if ((per->parameters()[Trk::theta]>M_PI/2 && per->position().z()<tmppar->position().z()) || (per->parameters()[Trk::theta]<M_PI/2 && per->position().z()>tmppar->position().z())) tpars_up->push_back(tmppar);
423  else tpars_down->push_back(tmppar);
424 
425  }
426  if (!tpars_up->empty()) std::reverse(tpars_up->begin(),tpars_up->end());
427 
428 
429  if(tpars_down){
430  analyze_tpars(tpars_down,event_data);
431  }
432  if(tpars_up){
433  analyze_tpars(tpars_up, event_data);
434  }
435 
436  //clean up
437  if(tpars_up){
438  std::vector< const Trk::TrackParameters* >::const_iterator parameterIter= tpars_up->begin();
439  for ( ; parameterIter != tpars_up->end(); ++parameterIter) {
440  delete *parameterIter;
441  }
442  delete tpars_up;
443  }
444 
445  if(tpars_down){
446  std::vector< const Trk::TrackParameters* >::const_iterator parameterIter = tpars_down->begin();
447  for ( ; parameterIter != tpars_down->end(); ++parameterIter) {
448  delete *parameterIter;
449  }
450  delete tpars_down;
451  }
452 
453  msg(MSG::DEBUG)<<"Found "<<event_data.m_measurement.size()<<" driftcircles"<<endmsg;
454 
455  return event_data.m_measurement;
456 }
457 
459 // Main methods for segment findinf in TRT
461 
464  const Trk::TrackParameters *,
467 {
468  return nullptr;
469 }
470 
471 
476 {
477 
478  const EventContext& ctx = Gaudi::Hive::currentContext();
479  const Trk::TrackParameters* test=m_extrapolator->extrapolateDirectly(ctx,
480  par,
481  *event_data.m_trtcylinder,
482  dir,true,Trk::muon).release();
483  if(test){
484  delete test;
485  return event_data.m_trtcylinder;
486  }
487 
488  test=m_extrapolator->extrapolateDirectly(ctx,
489  par,
490  *event_data.m_trtdiscA,dir,true,Trk::muon).release();
491  if(test){
492  delete test;
493  return event_data.m_trtdiscA;
494  }
495 
496  test=m_extrapolator->extrapolateDirectly(ctx,
497  par,
498  *event_data.m_trtdiscC,dir,true,Trk::muon).release();
499  if(test){
500  delete test;
501  return event_data.m_trtdiscC;
502  }
503 
504  return nullptr;
505 }
506 
508  // Calculate intersection of helix with silicon module. Assume barrel modules parallel to z-axis, endcap modules perpendicular to z-axis
509 
510  double sinTheta = std::sin(per->parameters()[3]);
511  double r= (std::abs(per->parameters()[Trk::qOverP]) > 1e-10) ? -sinTheta/(per->parameters()[Trk::qOverP]*0.6) : 1e6;
512  double xc=per->position().x()-r*std::sin(per->parameters()[2]);
513  double yc=per->position().y()+r*std::cos(per->parameters()[2]);
514  double phi0=std::atan2(per->position().y()-yc,per->position().x()-xc);
515  double theta=per->parameters()[Trk::theta];
516  double z0=per->position().z();
517 
518  if (std::abs(surf->normal().z())>0.5){ // endcap module
519  double delta_s=(surf->center().z()-z0)/cos(theta);
520  double delta_phi=delta_s*std::sin(theta)/r;
521  double x=xc+std::abs(r)*std::cos(phi0+delta_phi);
522  double y=yc+std::abs(r)*std::sin(phi0+delta_phi);
523  return Amg::Vector3D(x,y,surf->center().z());
524 
525 
526 
527  }
528  else { // barrel module
529  double x1=surf->center().x();
530  double y1=surf->center().y();
531  double x2=x1+surf->transform()(0,0);
532  double y2=y1+surf->transform()(1,0);
533  double a=(x2-x1)*(x2-x1)+(y2-y1)*(y2-y1);
534  double b=2*( (x2 - x1)*(x1 - xc) + (y2 - y1)*(y1 - yc));
535  double c=xc*xc + yc*yc + x1*x1 + y1*y1 - 2*(xc*x1 + yc*y1) - r*r;
536  double discr=b*b-4*a*c;
537  if (discr<0) return Amg::Vector3D(0,0,0);
538  double u1=(-b-std::sqrt(discr))/(2*a);
539  double u2=(-b+std::sqrt(discr))/(2*a);
540  double u=(std::abs(u1)<std::abs(u2)) ? u1 : u2;
541  double x=x1+u*(x2-x1);
542  double y=y1+u*(y2-y1);
543  double phi=std::atan2(y-yc,x-xc);
544  double delta_phi=phi-phi0;
545  if (std::abs(std::abs(delta_phi)-2*M_PI)<std::abs(delta_phi)){
546  if (delta_phi<0) delta_phi+=2*M_PI;
547  else delta_phi-=2*M_PI;
548 
549  }
550  double delta_z=r*delta_phi/std::tan(theta);
551 
552  double z=z0+delta_z;
553  return Amg::Vector3D(x,y,z);
554  }
555 }
556 
558 // Methods for track extension to TRT for pixles+sct tracks
559 // and new track production
561 
562 Trk::Track*
564  const Trk::Track&,
567 {
568  return nullptr;
569 }
570 
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
used
InDet::TRT_TrackExtensionToolCosmics::m_trtname
SG::ReadHandleKey< TRT_DriftCircleContainer > m_trtname
Definition: TRT_TrackExtensionToolCosmics.h:122
beamspotman.r
def r
Definition: beamspotman.py:676
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
TRT_ID::layer_id
Identifier layer_id(int barrel_ec, int phi_module, int layer_or_wheel, int straw_layer) const
For an individual straw layer.
Definition: TRT_ID.h:500
python.tests.PyTestsLib.finalize
def finalize(self)
_info( "content of StoreGate..." ) self.sg.dump()
Definition: PyTestsLib.py:53
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
InDet::TRT_TrackExtensionToolCosmics::EventData
Definition: TRT_TrackExtensionToolCosmics.h:126
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
python.Constants.FATAL
int FATAL
Definition: Control/AthenaCommon/python/Constants.py:19
InDet::TRT_TrackExtensionToolCosmics::findSegment
virtual Trk::TrackSegment * findSegment(const EventContext &ctx, const Trk::TrackParameters *, InDet::ITRT_TrackExtensionTool::IEventData &virt_event_data, InDet::TRT_DetElementLink_xk::TRT_DetElemUsedMap &used) const override
Definition: TRT_TrackExtensionToolCosmics.cxx:463
SG::ReadHandle::cptr
const_pointer_type cptr()
Dereference the pointer.
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
InDet::TRT_TrackExtensionToolCosmics::EventData::m_trtcylinder
Trk::Surface * m_trtcylinder
Definition: TRT_TrackExtensionToolCosmics.h:139
ParticleGun_SamplingFraction.bec
int bec
Definition: ParticleGun_SamplingFraction.py:89
Trk::ParametersBase::position
const Amg::Vector3D & position() const
Access method for the position.
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
Trk::Track::trackStateOnSurfaces
const Trk::TrackStates * trackStateOnSurfaces() const
return a pointer to a const DataVector of const TrackStateOnSurfaces.
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
InDet
DUMMY Primary Vertex Finder.
Definition: VP1ErrorUtils.h:36
initialize
void initialize()
Definition: run_EoverP.cxx:894
InDet::TRT_TrackExtensionToolCosmics::EventData::m_measurement
std::vector< const Trk::MeasurementBase * > m_measurement
Definition: TRT_TrackExtensionToolCosmics.h:143
IRIO_OnTrackCreator.h
InDetAccessor::phi0
@ phi0
Definition: InDetAccessor.h:33
plotBeamSpotCompare.x2
x2
Definition: plotBeamSpotCompare.py:218
theta
Scalar theta() const
theta method
Definition: AmgMatrixBasePlugin.h:71
InDet::TRT_DriftCircle::detectorElement
virtual const InDetDD::TRT_BaseElement * detectorElement() const override final
return the detector element corresponding to this PRD
InDet::TRT_TrackExtensionToolCosmics::analyze_tpars
void analyze_tpars(const std::vector< const Trk::TrackParameters * > *tpars, InDet::TRT_TrackExtensionToolCosmics::EventData &event_data) const
Definition: TRT_TrackExtensionToolCosmics.cxx:246
TRT_ID.h
This is an Identifier helper class for the TRT subdetector. This class is a factory for creating comp...
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
M_PI
#define M_PI
Definition: ActiveFraction.h:11
InDet::TRT_TrackExtensionToolCosmics::EventData::m_trtdiscA
Trk::Surface * m_trtdiscA
Definition: TRT_TrackExtensionToolCosmics.h:140
InDet::tp_sort_cosmics::tp_sort_cosmics
tp_sort_cosmics(double theta)
Definition: TRT_TrackExtensionToolCosmics.cxx:353
PropDirection.h
TRT_TrackExtensionToolCosmics.h
Trk::DiscSurface
Definition: DiscSurface.h:54
postInclude.sorter
sorter
Definition: postInclude.SortInput.py:23
TrigInDetValidation_Base.test
test
Definition: TrigInDetValidation_Base.py:144
AtlasDetectorID::is_trt
bool is_trt(Identifier id) const
Definition: AtlasDetectorID.h:782
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
Trk::TrackSegment
Definition: TrackSegment.h:56
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
Trk::AtaDisc
ParametersT< 5, Charged, DiscSurface > AtaDisc
Definition: Tracking/TrkEvent/TrkParameters/TrkParameters/TrackParameters.h:28
Trk::Surface::center
const Amg::Vector3D & center() const
Returns the center position of the Surface.
keylayer_zslicemap.se
se
Definition: keylayer_zslicemap.py:194
x
#define x
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:83
InDet::TRT_DriftCircle
Definition: TRT_DriftCircle.h:32
makeTRTBarrelCans.y1
tuple y1
Definition: makeTRTBarrelCans.py:15
InDet::TRT_TrackExtensionToolCosmics::m_nprint
int m_nprint
Definition: TRT_TrackExtensionToolCosmics.h:117
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
DeMoUpdate.reverse
reverse
Definition: DeMoUpdate.py:563
InDet::TRT_TrackExtensionToolCosmics::extendTrack
virtual std::vector< const Trk::MeasurementBase * > & extendTrack(const EventContext &ctx, const Trk::Track &, InDet::ITRT_TrackExtensionTool::IEventData &virt_event_data, InDet::TRT_DetElementLink_xk::TRT_DetElemUsedMap &used) const override
Definition: TRT_TrackExtensionToolCosmics.cxx:208
InDet::TRT_TrackExtensionToolCosmics::TRT_TrackExtensionToolCosmics
TRT_TrackExtensionToolCosmics(const std::string &, const std::string &, const IInterface *)
Definition: TRT_TrackExtensionToolCosmics.cxx:32
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
InDet::TRT_TrackExtensionToolCosmics::m_extrapolator
PublicToolHandle< Trk::IExtrapolator > m_extrapolator
Definition: TRT_TrackExtensionToolCosmics.h:112
InDet::TRT_TrackExtensionToolCosmics::newTrack
virtual Trk::Track * newTrack(const EventContext &ctx, const Trk::Track &, InDet::ITRT_TrackExtensionTool::IEventData &virt_event_data, InDet::TRT_DetElementLink_xk::TRT_DetElemUsedMap &used) const override
Definition: TRT_TrackExtensionToolCosmics.cxx:563
InDet::TRT_TrackExtensionToolCosmics::findBoundarySurface
Trk::Surface * findBoundarySurface(const Trk::TrackParameters &par, Trk::PropDirection dir, InDet::TRT_TrackExtensionToolCosmics::EventData &event_data) const
Definition: TRT_TrackExtensionToolCosmics.cxx:473
InDet::TRT_TrackExtensionToolCosmics::m_riontrackN
ToolHandle< Trk::IRIO_OnTrackCreator > m_riontrackN
Definition: TRT_TrackExtensionToolCosmics.h:114
fitman.g1
g1
Definition: fitman.py:619
InDet::TRT_TrackExtensionToolCosmics::dump
virtual MsgStream & dump(MsgStream &out) const override
Definition: TRT_TrackExtensionToolCosmics.cxx:117
lumiFormat.i
int i
Definition: lumiFormat.py:92
z
#define z
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
beamspotman.n
n
Definition: beamspotman.py:731
Trk::theta
@ theta
Definition: ParamDefs.h:72
InDet::TRT_TrackExtensionToolCosmics::m_trtid
const TRT_ID * m_trtid
Definition: TRT_TrackExtensionToolCosmics.h:149
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
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
Trk::CylinderSurface
Definition: CylinderSurface.h:55
makeTRTBarrelCans.y2
tuple y2
Definition: makeTRTBarrelCans.py:18
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
InDet::TRT_TrackExtensionToolCosmics::EventData::m_trtdiscC
Trk::Surface * m_trtdiscC
Definition: TRT_TrackExtensionToolCosmics.h:141
CylinderSurface.h
Trk::Surface::normal
virtual const Amg::Vector3D & normal() const
Returns the normal vector of the Surface (i.e.
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
drawFromPickle.tan
tan
Definition: drawFromPickle.py:36
Trk::ParametersBase
Definition: ParametersBase.h:55
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::Track::z0
@ z0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:63
TRT_ID::straw_layer
int straw_layer(const Identifier &id) const
Definition: TRT_ID.h:893
Trk::muon
@ muon
Definition: ParticleHypothesis.h:28
DataVector< const Trk::TrackStateOnSurface >
TRT_ID::layer_or_wheel
int layer_or_wheel(const Identifier &id) const
Definition: TRT_ID.h:884
DataVector::rbegin
const_reverse_iterator rbegin() const noexcept
Return a const_reverse_iterator pointing past the end of the collection.
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
beamspotman.dir
string dir
Definition: beamspotman.py:623
Trk::MeasurementBase
Definition: MeasurementBase.h:58
Trk::PrepRawData::identify
Identifier identify() const
return the identifier
InDet::tp_sort_cosmics::operator()
bool operator()(const Trk::TrackParameters *par1, const Trk::TrackParameters *par2) const
Definition: TRT_TrackExtensionToolCosmics.cxx:354
InDet::TRT_TrackExtensionToolCosmics::m_searchNeighbour
bool m_searchNeighbour
Definition: TRT_TrackExtensionToolCosmics.h:120
Trk::Track::perigeeParameters
const Perigee * perigeeParameters() const
return Perigee.
Definition: Tracking/TrkEvent/TrkTrack/src/Track.cxx:163
InDet::TRT_TrackExtensionToolCosmics::dumpConditions
static MsgStream & dumpConditions(MsgStream &out)
Definition: TRT_TrackExtensionToolCosmics.cxx:129
fitman.g2
g2
Definition: fitman.py:624
InDet::TRT_TrackExtensionToolCosmics::intersect
static Amg::Vector3D intersect(const Trk::Surface *surf, const Trk::Perigee *per)
Definition: TRT_TrackExtensionToolCosmics.cxx:507
createCoolChannelIdFile.par
par
Definition: createCoolChannelIdFile.py:29
RIO_OnTrack.h
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
InDet::TRT_DriftCircleCollection
Trk::PrepRawDataCollection< TRT_DriftCircle > TRT_DriftCircleCollection
Definition: TRT_DriftCircleCollection.h:26
InDet::TRT_TrackExtensionToolCosmics::EventData::m_trtcontainer
const TRT_DriftCircleContainer * m_trtcontainer
Definition: TRT_TrackExtensionToolCosmics.h:138
Trk::Surface::insideBounds
virtual bool insideBounds(const Amg::Vector2D &locpos, double tol1=0., double tol2=0.) const =0
virtual methods to be overwritten by the inherited surfaces
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
TRT_ID::phi_module
int phi_module(const Identifier &id) const
Definition: TRT_ID.h:875
InDet::TRT_TrackExtensionToolCosmics::~TRT_TrackExtensionToolCosmics
virtual ~TRT_TrackExtensionToolCosmics()
InDet::TRT_TrackExtensionToolCosmics::initialize
virtual StatusCode initialize() override
Definition: TRT_TrackExtensionToolCosmics.cxx:57
InDet::ITRT_TrackExtensionTool::IEventData
Definition: ITRT_TrackExtensionTool.h:43
InDet::TRT_TrackExtensionToolCosmics
Definition: TRT_TrackExtensionToolCosmics.h:51
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
InDet::TRT_TrackExtensionToolCosmics::m_outputlevel
int m_outputlevel
Definition: TRT_TrackExtensionToolCosmics.h:116
Trk::AtaPlane
ParametersT< 5, Charged, PlaneSurface > AtaPlane
Definition: Tracking/TrkEvent/TrkParameters/TrkParameters/TrackParameters.h:30
InDet::TRT_TrackExtensionToolCosmics::finalize
virtual StatusCode finalize() override
Definition: TRT_TrackExtensionToolCosmics.cxx:106
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
a
TList * a
Definition: liststreamerinfos.cxx:10
y
#define y
Trk::Surface::globalToLocal
virtual bool globalToLocal(const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const =0
Specified by each surface type: GlobalToLocal method without dynamic memory allocation - boolean chec...
AtlasDetectorID::show_to_string
std::string show_to_string(Identifier id, const IdContext *context=0, char sep='.') const
or provide the printout in string form
Definition: AtlasDetectorID.cxx:574
Trk::PlaneSurface
Definition: PlaneSurface.h:64
Amg::RotationMatrix3D
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
Definition: GeoPrimitives.h:49
eFEXNTuple.delta_phi
def delta_phi(phi1, phi2)
Definition: eFEXNTuple.py:15
InDet::TRT_TrackExtensionToolCosmics::m_roadwidth
double m_roadwidth
Definition: TRT_TrackExtensionToolCosmics.h:118
DEBUG
#define DEBUG
Definition: page_access.h:11
InDet::tp_sort_cosmics::m_theta
double m_theta
Definition: TRT_TrackExtensionToolCosmics.cxx:359
Amg::Translation3D
Eigen::Translation< double, 3 > Translation3D
Definition: GeoPrimitives.h:44
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
Trk::qOverP
@ qOverP
perigee
Definition: ParamDefs.h:73
DiscSurface.h
InDet::TRT_TrackExtensionToolCosmics::newEvent
virtual std::unique_ptr< InDet::ITRT_TrackExtensionTool::IEventData > newEvent(const EventContext &ctx) const override
Definition: TRT_TrackExtensionToolCosmics.cxx:178
Trk::phi
@ phi
Definition: ParamDefs.h:81
InDet::EventData
SiSpacePointsSeedMakerEventData EventData
Definition: SiSpacePointsSeedMaker_ATLxk.h:46
Trk::EventDataBase< EventData, InDet::ITRT_TrackExtensionTool::IEventData >::getPrivateEventData
static EventData & getPrivateEventData(InDet::ITRT_TrackExtensionTool::IEventData &virt_event_data)
Definition: EventDataBase.h:19
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
AthAlgTool
Definition: AthAlgTool.h:26
IdentifierHash
Definition: IdentifierHash.h:38
python.IoTestsLib.w
def w
Definition: IoTestsLib.py:200
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
Amg::distance
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
Definition: GeoPrimitivesHelpers.h:54
InDet::tp_sort_cosmics
Definition: TRT_TrackExtensionToolCosmics.cxx:351
Trk::Surface::transform
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
python.compressB64.c
def c
Definition: compressB64.py:93
InDetDD::TRT_BaseElement::surface
virtual const Trk::Surface & surface() const override final
Element Surface: access to the Surface (straw layer)
InDet::TRT_TrackExtensionToolCosmics::dumpEvent
static MsgStream & dumpEvent(MsgStream &out)
Definition: TRT_TrackExtensionToolCosmics.cxx:139
InDet::TRT_TrackExtensionToolCosmics::m_roadwidth_locz
double m_roadwidth_locz
Definition: TRT_TrackExtensionToolCosmics.h:119
Trk::StraightLineSurface
Definition: StraightLineSurface.h:51
TRT_ID::straw_layer_hash
IdentifierHash straw_layer_hash(Identifier straw_layer_id) const
straw_layer hash from id - optimized
Definition: TRT_ID.h:750
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32
TRT_ID::straw_id
Identifier straw_id(int barrel_ec, int phi_module, int layer_or_wheel, int straw_layer, int straw) const
Three ways of getting id for a single straw:
Definition: TRT_ID.h:581