ATLAS Offline Software
CETmaterial.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 // CETmaterial.cxx, (c) ATLAS Detector software
8 
9 #include <fstream>
10 
11 // Tracking
12 #include "TrkExAlgs/CETmaterial.h"
21 #include "GaudiKernel/SystemOfUnits.h"
23 
24 //================ Constructor =================================================
25 
26 Trk::CETmaterial::CETmaterial(const std::string& name, ISvcLocator* pSvcLocator)
27  :
28  AthAlgorithm(name,pSvcLocator),
29  m_extrapolator("Trk::Extrapolator/AtlasExtrapolator"),
30  m_extraprec("Trk::Extrapolator/MuonExtrapolator"),
31  m_gaussDist(nullptr),
32  m_flatDist(nullptr),
33  m_sigmaD0(17.*Gaudi::Units::micrometer),
34  m_minZ0(0.),
35  m_maxZ0(0.),
36  m_minEta(-3.),
37  m_maxEta(3.),
38  m_minTheta(0.),
39  m_maxTheta(M_PI),
40  m_minPhi(-M_PI),
41  m_maxPhi( M_PI),
42  m_minP(50000*Gaudi::Units::GeV),
43  m_maxP(50000*Gaudi::Units::GeV),
44  m_charge(1.),
45  m_numScan(10),
46  m_checkStepWise(false),
47  m_printMaterial(false),
48  m_printActive(false),
49  m_matTotFile("material.txt"),
50  m_matScanFile("material_scan.txt"),
51  m_matActiveFile("mat_active.txt"),
52  m_matCompFile("material_comp.txt"),
53  m_backward(false),
54  m_domsentry(false),
55  m_doprecision(false),
56  m_th(0.),
57  m_ph(0.),
58  m_id(0),
59  m_matSaved(0.),
60  m_next(nullptr),
61  m_err(nullptr),
62  m_outerBoundary(nullptr),
63  m_trackingGeometry(nullptr),
64  m_msentry(nullptr),
65  m_particleType(Trk::muon),
66  m_chronoStatSvc( "ChronoStatSvc", name )
67 {
68  // used algorithms and alg tools
69  declareProperty("Extrapolator" , m_extrapolator);
70  declareProperty("ExtraExtrapolator" , m_extraprec);
71 
72  // algorithm steering
73  declareProperty("StartPerigeeSigmaD0" , m_sigmaD0);
74  declareProperty("StartPerigeeMinZ0" , m_minZ0);
75  declareProperty("StartPerigeeMaxZ0" , m_maxZ0);
76  declareProperty("StartPerigeeMinEta" , m_minEta);
77  declareProperty("StartPerigeeMaxEta" , m_maxEta);
78  declareProperty("StartPerigeeMinTheta" , m_minTheta);
79  declareProperty("StartPerigeeMaxTheta" , m_maxTheta);
80  declareProperty("StartPerigeeMinPhi" , m_minPhi);
81  declareProperty("StartPerigeeMaxPhi" , m_maxPhi);
82  declareProperty("StartPerigeeMinP" , m_minP);
83  declareProperty("StartPerigeeMaxP" , m_maxP);
84  declareProperty("StartPerigeeCharge" , m_charge);
85  declareProperty("ParticleType" , m_particleType);
86  declareProperty("NumberOfScanTracks" , m_numScan);
87  declareProperty("CheckActiveLayers" , m_checkStepWise);
88  declareProperty("PrintMaterial" , m_printMaterial);
89  declareProperty("PrintActivePos" , m_printActive);
90  //declareProperty("TotalMaterialOutput" , m_matTotFile);
91  //declareProperty("ScanMaterialOutput" , m_matScanFile);
92  declareProperty("CheckBackward" , m_backward);
93  declareProperty("CheckMSentry" , m_domsentry);
94  declareProperty("CheckPrecision" , m_doprecision);
95 
96 }
97 
98 //================ Destructor =================================================
99 
101 {
102  delete m_gaussDist;
103  delete m_flatDist;
104  delete m_err;
105 }
106 
107 
108 //================ Initialization =================================================
109 
111 {
112  // Code entered here will be executed once at program start.
113 
114  ATH_MSG_INFO( "initialize()" );
115 
116  // Get Extrapolator from ToolService
117  if (m_extrapolator.retrieve().isFailure()) {
118  ATH_MSG_FATAL( "Could not retrieve Tool " << m_extrapolator << ". Exiting." );
119  return StatusCode::FAILURE;
120  }
121  if (m_extraprec.retrieve().isFailure()) {
122  ATH_MSG_FATAL( "Could not retrieve Tool " << m_extraprec << ". Exiting." );
123  return StatusCode::FAILURE;
124  }
125 
126  //if (m_chronoStatSvc.retrieve().isFailure()) {
127  // ATH_MSG_WARNING << "Could not retrieve Tool " << m_chronoStatSvc << ". Exiting." );
128  //}
129 
130  m_gaussDist = new Rndm::Numbers(randSvc(), Rndm::Gauss(0.,1.));
131  m_flatDist = new Rndm::Numbers(randSvc(), Rndm::Flat(0.,1.));
132 
133  ATH_MSG_INFO( "initialize() successful" );
134  return StatusCode::SUCCESS;
135 }
136 
137 //================ Finalization =================================================
138 
140 {
141  // Code entered here will be executed once at the end of the program run.
142 
143  if (m_chronoStatSvc) m_chronoStatSvc->chronoPrint("MS::scan");
144 
145  return StatusCode::SUCCESS;
146 }
147 
148 //================ Execution ====================================================
149 
151 {
152  ATH_MSG_INFO( "execute()" );
153  const EventContext& ctx = Gaudi::Hive::currentContext();
154  // retrieve outer boundary cylinder surface
155  if (!m_outerBoundary) {
156  m_trackingGeometry = m_extrapolator->trackingGeometry();
157  m_outerBoundary = &(m_trackingGeometry->highestTrackingVolume()->boundarySurfaces()[2]->surfaceRepresentation());
158  if (!m_outerBoundary) {
159  ATH_MSG_FATAL( "Could not retrieve cylinder boundary from " << m_extrapolator << ". Exiting." );
160  return StatusCode::FAILURE;
161  }
162  ATH_MSG_INFO( "boundary retrieved " );
163  }
164 
165  // generate with random number generator
166  //double d0 = m_gaussDist->shoot() * m_sigmaD0;
167  //double z0 = m_minZ0 + m_flatDist->shoot() * (m_maxZ0-m_minZ0);
168  //double phi = 2.*M_PI * m_flatDist->shoot() - M_PI;
169  //double eta = m_minEta + m_flatDist->shoot()*(m_maxEta-m_minEta);
170  //double ctheta = -1. + 2* m_flatDist->shoot();
171  //double theta = acos(ctheta);
172  //double p = m_minP + m_flatDist->shoot()*(m_maxP-m_minP);
173  //double charge = (m_flatDist->shoot() > 0.5 ) ? -1. : 1.;
174  //double qOverP = charge/(p);
175 
176  if (m_chronoStatSvc) m_chronoStatSvc->chronoStart("MS::scan");
177 
178  // scan
179  std::vector<const TrackStateOnSurface*> material;
180  std::vector<const TrackStateOnSurface*> matPrec;
181  double phi = -M_PI;
182  for ( unsigned int it = 0; it < m_numScan+1; it++) {
183  // the initial perigee
184  double z0 = m_minZ0 + (m_maxZ0-m_minZ0)/m_numScan *it;
185  phi += 1*Gaudi::Units::deg; if (phi>M_PI) phi -=2*M_PI;
186 
187  double theta = m_minTheta + (m_maxTheta-m_minTheta)/m_numScan*it;
188  double p = m_minP + (m_maxP-m_minP)/m_numScan *it;
189  Trk::PerigeeSurface surface( Amg::Vector3D(0.,0.,0.));
190  Trk::Perigee initialPerigee(0., z0, phi, theta, m_charge/p, surface);
191 
192  const Trk::TrackParameters* seed = initialPerigee.clone();
193  const Trk::PerigeeSurface& pSf = initialPerigee.associatedSurface();
194  material.clear(); matPrec.clear();
195  const Trk::TrackParameters* currPar = seed;
196  const Trk::TrackParameters* precPar = seed;
197  if (m_domsentry) {
198  if (!m_msentry) {
199  m_msentry = m_trackingGeometry->trackingVolume("Calo::Containers::Calorimeter");
200  }
201  if (m_msentry) {
202  const Trk::TrackParameters* msEntry =
203  m_extrapolator->extrapolateToVolume(
204  ctx,
205  *currPar,
206  *m_msentry,
208  (Trk::ParticleHypothesis)m_particleType).release();
209  if (msEntry) {
210  printMat(
211  theta,
212  phi,
213  currPar->momentum().mag() - msEntry->momentum().mag(),
214  Amg::error(msEntry->covariance()->inverse().eval(), Trk::theta),
215  Amg::error(msEntry->covariance()->inverse().eval(), Trk::phi));
216 
217  const std::vector<const Trk::TrackStateOnSurface*>* mmsentry = m_extrapolator->extrapolateM(ctx,
218  *currPar,
219  msEntry->associatedSurface(),
221  false,
222  (Trk::ParticleHypothesis)m_particleType);
223  if (mmsentry ) {
224  for (unsigned int i=0; i< mmsentry->size(); i++)
225  if ((*mmsentry)[i])
226  ATH_MSG_DEBUG( "position:eloss:" << i << "," << (*mmsentry)[i]->trackParameters()->position() << ":"
227  << (*mmsentry)[i]->trackParameters()->momentum().mag()-currPar->momentum().mag());
228  currPar = (mmsentry->back()) ? mmsentry->back()->trackParameters() : msEntry;
229 
230  const std::vector<const Trk::TrackStateOnSurface*>* peri = m_extrapolator->extrapolateM(ctx,
231  *currPar,
232  pSf,
234  false,
235  (Trk::ParticleHypothesis)m_particleType);
236  ATH_MSG_INFO ( "material scan:backward:" );
237  if (peri){
238  ATH_MSG_DEBUG ("trPar vector size:" << peri->size() );
239  } else {
240  ATH_MSG_ERROR ("Perigee pointer is null in CETmaterial.cxx");
241  delete msEntry;
242  return StatusCode::FAILURE;
243  }
244  for (unsigned int i=0; i< peri->size(); i++)
245  if ((*peri)[i] && (*peri)[i]->trackParameters())
246  ATH_MSG_DEBUG( "position:eloss:" << i << "," << (*peri)[i]->trackParameters()->position() << ":"
247  << (*peri)[i]->trackParameters()->momentum().mag()-msEntry->momentum().mag() );
248 
249  if (peri->back() && peri->back()->trackParameters()) {
250  ATH_MSG_INFO( "extrapolation to perigee:input: "
251  << initialPerigee.parameters()[0] << ","
252  << initialPerigee.parameters()[1] << ","
253  << initialPerigee.parameters()[2] << ","
254  << initialPerigee.parameters()[3] << ","
255  << initialPerigee.momentum().mag() );
256  ATH_MSG_INFO( "extrapolation to perigee:output: "
257  << peri->back()->trackParameters()->parameters()[0] << ","
258  << peri->back()->trackParameters()->parameters()[1] << ","
259  << peri->back()->trackParameters()->parameters()[2] << ","
260  << peri->back()->trackParameters()->parameters()[3] << ","
261  << peri->back()->trackParameters()->momentum().mag() );
262  } else {
263  ATH_MSG_ERROR( "extrapolation to perigee failed for input parameters: " << msEntry->parameters() );
264  }
265  delete peri;
266  delete msEntry;
267  } else {
268  ATH_MSG_ERROR( "extrapolation to MSentry failed for input parameters: " << currPar->parameters() );
269  printMat(theta,phi,0.);
270  }
271  }
272  }
273  delete currPar;
274  continue;
275  }
276  if (m_checkStepWise) {
277  double matApp = 0.;
278  while (currPar) {
279  std::pair<std::unique_ptr<Trk::TrackParameters>,const Trk::Layer*> next = m_extrapolator->extrapolateToNextActiveLayerM(
280  ctx,
281  *currPar,
283  true,
284  material,
285  (Trk::ParticleHypothesis)m_particleType);
286 
287 
288  const Trk::TrackParameters* nextPar = next.first.release();
289  const Trk::Layer* lay = next.second;
290  currPar = nextPar;
291 
292  if (m_doprecision && precPar && currPar ) {
293  // try to extrapolate to the same surface
294  const std::vector<const Trk::TrackStateOnSurface*>* nextPrec = m_extraprec->extrapolateM(
295  ctx,
296  *precPar,currPar->associatedSurface(),
298  false,
299  (Trk::ParticleHypothesis)m_particleType);
300  delete precPar;
301  // collect material
302  if (nextPrec) {
303  for (const auto *i : *nextPrec) {
304  const Trk::MaterialEffectsBase* mEff = i->materialEffectsOnTrack();
305  const Trk::TrackParameters* trPar = i->trackParameters();
306  if (mEff && trPar) {
307  matApp += mEff->thicknessInX0();
308  }
309  }
310  }
311  // stop of extrapolation failed
312  if (!lay || !nextPrec || nextPrec->empty() || !nextPrec->back() ) break;
313  precPar = nextPrec->back()->trackParameters();
314  double mat=0.;
315  if (!material.empty()) for (auto & i : material) {
316  if (i->materialEffectsOnTrack()) mat += i->materialEffectsOnTrack()->thicknessInX0();
317  }
318  if ( precPar ) printMatComp(theta,phi,currPar,lay->enclosingDetachedTrackingVolume()->name(),mat,matApp,currPar->parameters()[0]-precPar->parameters()[0],
319  currPar->parameters()[1]-precPar->parameters()[1]);
320  else if (currPar) {
321  //precPar is nullptr here
322  ATH_MSG_INFO( "expected layer not reached:" << currPar->position() );
323  }
324  }
325  if (nextPar && m_printActive) {
326  int id = 0;
327  if (lay) id = lay->layerType();
328  double matc=0.;
329  if (!material.empty()) for (auto & i : material) {
330  if (i->materialEffectsOnTrack()) matc += i->materialEffectsOnTrack()->thicknessInX0();
331  }
332  else ATH_MSG_INFO( "mat & error:" << theta << "," << phi << "," << matc << ","
333  << Amg::error(nextPar->covariance()->inverse().eval(),Trk::theta) << ","
334  << Amg::error(nextPar->covariance()->inverse().eval(),Trk::phi) );
335 
336  printMatPrec(theta,phi,nextPar,nextPar,matc,id,"unknown");
337  }
338  if (!lay) break;
339  }
340  if (m_printMaterial) {
341  double mat=0.;
342  if (!material.empty()) for (auto & i : material) {
343  if (i->materialEffectsOnTrack()) {
344  mat += i->materialEffectsOnTrack()->thicknessInX0();
345  }
346  }
347  printMat(theta,phi,mat);
348  }
349  } else {
350  const std::vector<const Trk::TrackStateOnSurface*>* destParameters = m_extrapolator->extrapolateM(
351  ctx,
352  *currPar,
353  *m_outerBoundary,
355  false,
356  (Trk::ParticleHypothesis)m_particleType);
357 
358  if (m_printMaterial) {
359  double mat=0.;
360  if (destParameters) for (const auto *destParameter : *destParameters) {
361  const Trk::MaterialEffectsBase* mEff = destParameter->materialEffectsOnTrack();
362  const Trk::TrackParameters* trPar = destParameter->trackParameters();
363  if (trPar) {
364  //const Trk::MeasuredTrackParameters* mdest = dynamic_cast<const Trk::MeasuredTrackParameters*> (trPar);
365  //if (mdest) ATH_MSG_INFO( "radiation thickness and errors(theta,phi):" << theta << "," << phi << "," << mat << "," <<
366  // mdest->localErrorMatrix().error(Trk::theta) << "," << mdest->localErrorMatrix().error(Trk::phi) );
367  }
368  if (mEff && trPar) {
369  mat += mEff->thicknessInX0();
370  // find volume
371  std::vector<const Trk::DetachedTrackingVolume*> detVols = m_extrapolator->trackingGeometry()->lowestDetachedTrackingVolumes(trPar->position());
372  if (!detVols.empty()) printMatScan(theta,phi,trPar->position().perp(),trPar->position().z(),mEff->thicknessInX0(),(detVols)[0]->name());
373  else printMatScan(theta,phi,trPar->position().perp(),trPar->position().z(),mEff->thicknessInX0(),m_extrapolator->trackingGeometry()->lowestStaticTrackingVolume(trPar->position())->volumeName());
374  }
375  }
376  if (destParameters) {
377  //const Trk::MeasuredTrackParameters* mdest = dynamic_cast<const Trk::MeasuredTrackParameters*> ((*destParameters).back()->trackParameters());
378  //if (mdest) ATH_MSG_INFO( "radiation thickness and errors(theta,phi):" << theta << "," << phi << "," << mat << "," <<
379  //mdest->localErrorMatrix().error(Trk::theta) << "," << mdest->localErrorMatrix().error(Trk::phi) );
380  }
381  printMat(theta,phi,mat);
382  }
383 
384  if (!destParameters || destParameters->empty() ) {
385  ATH_MSG_ERROR( "extrapolation to outer boundary failed for input parameters: " << initialPerigee.parameters() );
386  } else if (destParameters->back()->trackParameters()) {
387  // forward extrapolation ok
388  //ATH_MSG_INFO( "last material reached at: " << destParameters->back()->trackParameters()->position().perp() <<","<<destParameters->back()->position().z() );
389 
390  if (m_backward) {
391  material.clear();
392  const std::vector<const Trk::TrackStateOnSurface*>* peri = m_extrapolator->extrapolateM(
393  ctx, *(destParameters->back()->trackParameters()),
394  pSf,
396  false,
397  (Trk::ParticleHypothesis)m_particleType);
398 
399  if (peri) {
400  ATH_MSG_INFO( "trPar vector size:" << peri->size() );
401  for (unsigned int i=0; i< peri->size(); i++)
402  ATH_MSG_INFO( "position:" << i << "," << (*peri)[i]->trackParameters()->position() );
403  ATH_MSG_INFO( "extrapolation to perigee:input: " << initialPerigee.parameters() );
404  ATH_MSG_INFO( "extrapolation to perigee:output: " << peri->back()->trackParameters()->parameters() );
405  } else {
406  ATH_MSG_ERROR( "extrapolation to perigee failed for input parameters: " << destParameters->back()->trackParameters()->parameters() );
407  }
408  delete peri;
409  }
410  }
411 
412  delete destParameters;
413  }
414  }
415 
416  if (m_chronoStatSvc) m_chronoStatSvc->chronoStop("MS::scan");
417 
418  return StatusCode::SUCCESS;
419 }
420 
421 //============================================================================================
422 
423 void Trk::CETmaterial::printMat(double theta, double phi, double mat, double dtheta, double dphi) const {
424 
425  std::ofstream myfilemat;
426  myfilemat.open (m_matTotFile,std::ios::app);
427  myfilemat<<theta<<" "<<phi<<" "<<mat<<" "<<dtheta<<" "<<dphi<<std::endl;
428 }
429 
430 
431 void Trk::CETmaterial::printMatScan(double theta, double phi, double r, double z, double mat, const std::string& name) const {
432 
433  std::ofstream myfilemat;
434  myfilemat.open(m_matScanFile,std::ios::app);
435  myfilemat << theta << " " << phi << " " << r << " " << z << " " << mat << " " << name << std::endl;
436 }
437 
438 void Trk::CETmaterial::printMatPrec(double theta, double phi, const Trk::TrackParameters* nextPar, const Trk::TrackParameters* mdest, double mat, int id, const std::string& name) {
439 
440  if (name.empty()) {}; // dummy to get rid of warning message (unused variable name)
441  std::ofstream myfilemat;
442  myfilemat.open(m_matActiveFile,std::ios::app);
443 
444  if (!m_th && !m_ph) {
445  m_th = theta;
446  m_ph = phi;
447  m_id = id;
448  m_matSaved = mat;
449  delete m_next; m_next=nextPar->clone();
450  delete m_err;
451  m_err=nullptr;
452  if (mdest) {
453  m_err=new Amg::MatrixX;
454  *m_err = mdest->covariance()->inverse().eval();
455  }
456  return;
457  }
458 
459  if ( theta!=m_th || phi!=m_ph ) {
460 
461  if (m_err && m_id>0) {
462  myfilemat << m_th << " " << m_ph << " " << 1 << " " << m_id << " " << m_matSaved << std::endl;
463  myfilemat << m_next->parameters()[Trk::locX] << " " << m_next->parameters()[Trk::locY] << " " << m_next->parameters()[Trk::phi]
464  << " " << m_next->parameters()[Trk::theta] << " " << m_next->parameters()[Trk::qOverP] << std::endl;
465  myfilemat << Amg::error(*m_err,Trk::locX) << " " << Amg::error(*m_err,Trk::locY)
466  << " " << Amg::error(*m_err,Trk::phi) << " " << Amg::error(*m_err,Trk::theta)
467  << " " << Amg::error(*m_err,Trk::qOverP) << std::endl;
468  } else {
469  myfilemat << m_th << " " << m_ph << " " << 0 << " " << m_id << std::endl;
470  myfilemat << m_next->parameters()[Trk::locX] << " " << m_next->parameters()[Trk::locY] << " " << m_next->parameters()[Trk::phi]
471  << " " << m_next->parameters()[Trk::theta] << " " << m_next->parameters()[Trk::qOverP] << std::endl;
472  }
473  m_th = theta;
474  m_ph = phi;
475  m_id = id;
476  m_matSaved = mat;
477  delete m_next; m_next=nextPar->clone();
478  delete m_err;
479  m_err=nullptr;
480 
481  if (mdest) {
482  m_err=new Amg::MatrixX;
483  *m_err = mdest->covariance()->inverse().eval();
484  }
485  return;
486  }
487 
488  // update data
489  if (id>1) {
490  m_th = theta;
491  m_ph = phi;
492  m_id = id;
493  m_matSaved = mat;
494  delete m_next; m_next=nextPar->clone();
495  delete m_err;
496  m_err=nullptr;
497  if (mdest) {
498  m_err=new Amg::MatrixX;
499  *m_err = mdest->covariance()->inverse().eval();
500  }
501  }
502  }
503 
504 void Trk::CETmaterial::printMatComp(double theta, double phi, const Trk::TrackParameters* currPar, const std::string& name, double mat, double matApp,double dx, double dy) const
505 {
506  std::ofstream myfilemat;
507  myfilemat.open(m_matCompFile,std::ios::app);
508  myfilemat << theta << " " << phi << " " << currPar->position().perp() << " " << currPar->position().z() << " " << name.substr(0,2)
509  << " " << mat << " " << matApp << " " << dx << " " << dy << std::endl;
510 }
Trk::CETmaterial::CETmaterial
CETmaterial(const std::string &name, ISvcLocator *pSvcLocator)
Standard Athena-Algorithm Constructor.
Definition: CETmaterial.cxx:26
beamspotman.r
def r
Definition: beamspotman.py:676
xAOD::muon
@ muon
Definition: TrackingPrimitives.h:195
Trk::CETmaterial::finalize
StatusCode finalize()
standard Athena-Algorithm method
Definition: CETmaterial.cxx:139
GeV
#define GeV
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:17
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
Trk::CETmaterial::~CETmaterial
~CETmaterial()
Default Destructor.
Definition: CETmaterial.cxx:100
Amg::MatrixX
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Definition: EventPrimitives.h:27
Trk::z
@ z
global position (cartesian)
Definition: ParamDefs.h:57
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
PerigeeSurface.h
Trk::locX
@ locX
Definition: ParamDefs.h:37
Trk::locY
@ locY
local cartesian
Definition: ParamDefs.h:38
Trk::CETmaterial::m_charge
double m_charge
charge
Definition: CETmaterial.h:80
Trk::CETmaterial::printMatComp
void printMatComp(double theta, double phi, const Trk::TrackParameters *currPar, const std::string &name, double mat, double matApp, double dx, double dy) const
Definition: CETmaterial.cxx:504
Trk::PerigeeSurface
Definition: PerigeeSurface.h:43
Trk::next
@ next
Definition: BinningData.h:33
Trk::ParametersBase::position
const Amg::Vector3D & position() const
Access method for the position.
Trk::oppositeMomentum
@ oppositeMomentum
Definition: PropDirection.h:21
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
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
mat
GeoMaterial * mat
Definition: LArDetectorConstructionTBEC.cxx:55
EventPrimitivesHelpers.h
skel.it
it
Definition: skel.GENtoEVGEN.py:396
M_PI
#define M_PI
Definition: ActiveFraction.h:11
deg
#define deg
Definition: SbPolyhedron.cxx:17
Trk::z0
@ z0
Definition: ParamDefs.h:64
Trk::CETmaterial::m_maxTheta
double m_maxTheta
Maximal theta value.
Definition: CETmaterial.h:75
Trk::Layer::enclosingDetachedTrackingVolume
const DetachedTrackingVolume * enclosingDetachedTrackingVolume() const
get the confining DetachedTrackingVolume
IExtrapolator.h
Trk::MaterialEffectsBase::thicknessInX0
double thicknessInX0() const
returns the actually traversed material .
Trk::alongMomentum
@ alongMomentum
Definition: PropDirection.h:20
Trk::CETmaterial::m_domsentry
bool m_domsentry
Definition: CETmaterial.h:90
Trk::MaterialEffectsBase
base class to integrate material effects on Trk::Track in a flexible way.
Definition: MaterialEffectsBase.h:35
Trk::CETmaterial::m_numScan
unsigned int m_numScan
number of scan tracks
Definition: CETmaterial.h:81
Trk::CETmaterial::printMatPrec
void printMatPrec(double theta, double phi, const Trk::TrackParameters *, const Trk::TrackParameters *, double mat, int id, const std::string &name)
Definition: CETmaterial.cxx:438
Trk::Layer::layerType
int layerType() const
get the Layer coding
Trk::CETmaterial::m_minZ0
double m_minZ0
min Z0
Definition: CETmaterial.h:70
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
Trk::ParametersT::associatedSurface
virtual const S & associatedSurface() const override final
Access to the Surface method.
CylinderVolumeBounds.h
Trk::CETmaterial::printMat
void printMat(double th, double ph, double mat, double dtheta=0., double dphi=0.) const
Definition: CETmaterial.cxx:423
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
Trk::CETmaterial::m_maxP
double m_maxP
Maximal p value.
Definition: CETmaterial.h:79
ParticleGun_EoverP_Config.momentum
momentum
Definition: ParticleGun_EoverP_Config.py:63
lumiFormat.i
int i
Definition: lumiFormat.py:85
Trk::CETmaterial::m_doprecision
bool m_doprecision
Definition: CETmaterial.h:91
Trk::theta
@ theta
Definition: ParamDefs.h:66
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::CETmaterial::execute
StatusCode execute()
standard Athena-Algorithm method
Definition: CETmaterial.cxx:150
CylinderSurface.h
Trk::CETmaterial::printMatScan
void printMatScan(double theta, double phi, double r, double z, double mat, const std::string &name) const
Definition: CETmaterial.cxx:431
Trk::CETmaterial::m_minTheta
double m_minTheta
Minimal theta value.
Definition: CETmaterial.h:74
Trk::CETmaterial::m_maxPhi
double m_maxPhi
Maximal phi value.
Definition: CETmaterial.h:77
Trk::ParametersBase
Definition: ParametersBase.h:55
python.SystemOfUnits.micrometer
int micrometer
Definition: SystemOfUnits.py:71
Trk::CETmaterial::m_backward
bool m_backward
Definition: CETmaterial.h:89
ParticleHypothesis.h
AthAlgorithm
Definition: AthAlgorithm.h:47
Trk::CETmaterial::m_maxEta
double m_maxEta
Maximal eta value.
Definition: CETmaterial.h:73
Athena::Units
Definition: Units.h:45
Trk::CETmaterial::m_sigmaD0
double m_sigmaD0
Sigma of distribution for D0.
Definition: CETmaterial.h:69
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:220
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
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
Trk::CETmaterial::m_minEta
double m_minEta
Minimal eta value.
Definition: CETmaterial.h:72
Trk::CETmaterial::m_printMaterial
bool m_printMaterial
Definition: CETmaterial.h:83
Trk::DetachedTrackingVolume::name
const std::string & name() const
returns the Name
Definition: DetachedTrackingVolume.h:134
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
makeTRTBarrelCans.dy
tuple dy
Definition: makeTRTBarrelCans.py:21
Trk::ParametersBase::momentum
const Amg::Vector3D & momentum() const
Access method for the momentum.
Trk::CETmaterial::m_maxZ0
double m_maxZ0
max Z0
Definition: CETmaterial.h:71
Trk::CETmaterial::m_checkStepWise
bool m_checkStepWise
Definition: CETmaterial.h:82
Trk::CETmaterial::m_printActive
bool m_printActive
Definition: CETmaterial.h:84
Trk::CETmaterial::m_minPhi
double m_minPhi
Minimal phi value.
Definition: CETmaterial.h:76
makeTRTBarrelCans.dx
tuple dx
Definition: makeTRTBarrelCans.py:20
Trk::qOverP
@ qOverP
perigee
Definition: ParamDefs.h:67
Trk::CETmaterial::m_extrapolator
ToolHandle< IExtrapolator > m_extrapolator
The Extrapolator(s) to be retrieved.
Definition: CETmaterial.h:62
CETmaterial.h
DiscSurface.h
Gaudi
=============================================================================
Definition: CaloGPUClusterAndCellDataMonitorOptions.h:273
TrackingGeometry.h
Trk::phi
@ phi
Definition: ParamDefs.h:75
Trk::CETmaterial::initialize
StatusCode initialize()
standard Athena-Algorithm method
Definition: CETmaterial.cxx:110
Trk::CETmaterial::m_minP
double m_minP
Minimal p value.
Definition: CETmaterial.h:78
Trk::ParametersT::clone
virtual ParametersT< DIM, T, S > * clone() const override final
Virtual clone.
mag
Scalar mag() const
mag method
Definition: AmgMatrixBasePlugin.h:26
Trk::CETmaterial::m_particleType
int m_particleType
the particle typre for the extrap.
Definition: CETmaterial.h:103
TrackStateOnSurface.h
Trk::ParametersBase::clone
virtual ParametersBase< DIM, T > * clone() const override=0
clone method for polymorphic deep copy
Trk::Layer
Definition: Layer.h:73
Trk::CETmaterial::m_extraprec
ToolHandle< IExtrapolator > m_extraprec
Definition: CETmaterial.h:63