ATLAS Offline Software
Public Member Functions | Private Attributes | List of all members
AlfaTrackCand Class Reference

#include <AlfaLocalHits.h>

Collaboration diagram for AlfaTrackCand:

Public Member Functions

 AlfaTrackCand (AlfaLocalHits *hits)
 
int IsLeftTrack ()
 
int IsRightTrack ()
 
int IsLowerArmTrack ()
 
int IsUpperArmTrack ()
 
int IsValidTrack ()
 
int IsLeftOrRightTrack ()
 
int IsLeftAndRightTrack ()
 
void CalcTrack ()
 
int GetArmNum ()
 
float GetX ()
 
float GetY ()
 
float GetZ ()
 
float GetXslope ()
 
float GetYslope ()
 
AlfaLocalHitGetNearLocalHit ()
 
AlfaLocalHitGetFarLocalHit ()
 
const ALFA_LocRecCorrEventGetNearLocRecCorr () const
 
const ALFA_LocRecCorrEventGetFarLocRecCorr () const
 
void CalcImpactPoints ()
 
HepGeom::Point3D< double > * GetNearImpactPoint ()
 
HepGeom::Point3D< double > * GetFarImpactPoint ()
 
void Dump () const
 

Private Attributes

int m_arm
 
float m_x
 
float m_y
 
float m_z
 
float m_xslope
 
float m_yslope
 
AlfaLocalHitsm_trackcandhits
 
AlfaLocalHitm_nearlocalhit
 
AlfaLocalHitm_farlocalhit
 
HepGeom::Point3D< double > m_nearimpactpoint
 
HepGeom::Point3D< double > m_farimpactpoint
 

Detailed Description

Definition at line 99 of file AlfaLocalHits.h.

Constructor & Destructor Documentation

◆ AlfaTrackCand()

AlfaTrackCand::AlfaTrackCand ( AlfaLocalHits hits)

Definition at line 273 of file AlfaLocalHits.cxx.

273  {
274  // ... initialize
275  m_arm = -1.;
276  m_x = 1.e10;
277  m_y = 1.e10;
278  m_z = 1.e10;
279  m_xslope = 1.e10;
280  m_yslope = 1.e10;
281  m_nearlocalhit = nullptr;
282  m_farlocalhit = nullptr;
283 
284  // ... asign hits that create the track
286 
287  // ... calculate track kinematics and project track back to "pot planes"
292  cout << "Left and right side ALFA tracks at one time not supported in AlfaTrackCand class" << endl;
293  cout << "Consider using another class for them or change path pattern." << endl;
294  }
295 }

Member Function Documentation

◆ CalcImpactPoints()

void AlfaTrackCand::CalcImpactPoints ( )

Definition at line 430 of file AlfaLocalHits.cxx.

430  {
431  // ... distance from intercept to xy plane at pot z is
432  // half of the distance between the pots
433  // ... the direction vector starting at x,y needs to be
434  // scaled to touch the plane at pot's z
435  double z_nearpot = m_nearlocalhit->GetZ();
436  double scalefactortonearpot = z_nearpot - m_z;
437  double ximpact_nearpot = m_x + m_xslope * scalefactortonearpot;
438  double yimpact_nearpot = m_y + m_yslope * scalefactortonearpot;
439  double zimpact_nearpot = z_nearpot;
440  m_nearimpactpoint.setX(ximpact_nearpot);
441  m_nearimpactpoint.setY(yimpact_nearpot);
442  m_nearimpactpoint.setZ(zimpact_nearpot);
443 
444  double z_farpot = m_farlocalhit->GetZ();
445  double scalefactortofarpot = z_farpot - m_z;
446  double ximpact_farpot = m_x + m_xslope * scalefactortofarpot;
447  double yimpact_farpot = m_y + m_yslope * scalefactortofarpot;
448  double zimpact_farpot = z_farpot;
449  m_farimpactpoint.setX(ximpact_farpot);
450  m_farimpactpoint.setY(yimpact_farpot);
451  m_farimpactpoint.setZ(zimpact_farpot);
452 
453 }

◆ CalcTrack()

void AlfaTrackCand::CalcTrack ( )

Definition at line 370 of file AlfaLocalHits.cxx.

370  {
371  float xM = 1.e10;
372  float xm = 1.e10;
373  float yM = 1.e10;
374  float ym = 1.e10;
375  float zM = 1.e10;
376  float zm = 1.e10;
377  for(int i = 0; i < m_trackcandhits->GetNhits(); i++){
379  if(m_trackcandhits->GetHit(i)->GetPotName().Contains("B7")){
380  xM = m_trackcandhits->GetHit(i)->GetX();
381  yM = m_trackcandhits->GetHit(i)->GetY();
382  zM = m_trackcandhits->GetHit(i)->GetZ();
384  }else if(m_trackcandhits->GetHit(i)->GetPotName().Contains("A7")){
385  xm = m_trackcandhits->GetHit(i)->GetX();
386  ym = m_trackcandhits->GetHit(i)->GetY();
387  zm = m_trackcandhits->GetHit(i)->GetZ();
389  }
391  m_arm = 2;
392  }else if(AlfaTrackCand::IsUpperArmTrack()){
393  m_arm = 1;
394  }else{
395  throw std::runtime_error("AlfaTrackCand::CalcTrack() ... track is in left but unknown upper/lower arm");
396  }
397  }else if(AlfaTrackCand::IsRightTrack()){
398  if(m_trackcandhits->GetHit(i)->GetPotName().Contains("B7")){
399  xm = m_trackcandhits->GetHit(i)->GetX();
400  ym = m_trackcandhits->GetHit(i)->GetY();
401  zm = m_trackcandhits->GetHit(i)->GetZ();
403  }else if(m_trackcandhits->GetHit(i)->GetPotName().Contains("A7")){
404  xM = m_trackcandhits->GetHit(i)->GetX();
405  yM = m_trackcandhits->GetHit(i)->GetY();
406  zM = m_trackcandhits->GetHit(i)->GetZ();
408  }
410  m_arm = 4;
411  }else if(AlfaTrackCand::IsUpperArmTrack()){
412  m_arm = 3;
413  }else{
414  std::runtime_error("AlfaTrackCand::CalcTrack() ... track is in right but unknown upper/lower arm");
415  }
416  }else{
417  std::runtime_error("AlfaTrackCand::CalcTrack() ... track must be left or right");
418  }
419  }
420 
421  m_x = (xM + xm) / 2.;
422  m_y = (yM + ym) / 2.;
423  m_z = (zM + zm) / 2.;
424  m_xslope = (xM - xm) / (zM - zm);
425  m_yslope = (yM - ym) / (zM - zm);
426 
427 }

◆ Dump()

void AlfaTrackCand::Dump ( ) const

Definition at line 456 of file AlfaLocalHits.cxx.

456  {
457  //cout.precision(8);
458  cout << "Dumping AlfaTrackCand:" << endl;
459  cout << " arm = " << std::setprecision(8) << m_arm
460  << " x = " << std::setprecision(8) << m_x
461  << " y = " << std::setprecision(8) << m_y
462  << " z = " << std::setprecision(8) << m_z
463  << " x'= " << std::setprecision(8) << m_xslope
464  << " y' = " << std::setprecision(8) << m_yslope
465  << endl;
466 }

◆ GetArmNum()

int AlfaTrackCand::GetArmNum ( )
inline

Definition at line 119 of file AlfaLocalHits.h.

119 {return m_arm;};

◆ GetFarImpactPoint()

HepGeom::Point3D<double>* AlfaTrackCand::GetFarImpactPoint ( )
inline

Definition at line 131 of file AlfaLocalHits.h.

131 {return &m_farimpactpoint;};

◆ GetFarLocalHit()

AlfaLocalHit* AlfaTrackCand::GetFarLocalHit ( )
inline

Definition at line 126 of file AlfaLocalHits.h.

126 {return m_farlocalhit; };

◆ GetFarLocRecCorr()

const ALFA_LocRecCorrEvent* AlfaTrackCand::GetFarLocRecCorr ( ) const
inline

Definition at line 128 of file AlfaLocalHits.h.

128 {return m_farlocalhit->GetLocRecCorr();}

◆ GetNearImpactPoint()

HepGeom::Point3D<double>* AlfaTrackCand::GetNearImpactPoint ( )
inline

Definition at line 130 of file AlfaLocalHits.h.

130 {return &m_nearimpactpoint;};

◆ GetNearLocalHit()

AlfaLocalHit* AlfaTrackCand::GetNearLocalHit ( )
inline

Definition at line 125 of file AlfaLocalHits.h.

125 {return m_nearlocalhit;};

◆ GetNearLocRecCorr()

const ALFA_LocRecCorrEvent* AlfaTrackCand::GetNearLocRecCorr ( ) const
inline

Definition at line 127 of file AlfaLocalHits.h.

127 {return m_nearlocalhit->GetLocRecCorr();};

◆ GetX()

float AlfaTrackCand::GetX ( )
inline

Definition at line 120 of file AlfaLocalHits.h.

120 {return m_x;};

◆ GetXslope()

float AlfaTrackCand::GetXslope ( )
inline

Definition at line 123 of file AlfaLocalHits.h.

123 {return m_xslope;};

◆ GetY()

float AlfaTrackCand::GetY ( )
inline

Definition at line 121 of file AlfaLocalHits.h.

121 {return m_y;};

◆ GetYslope()

float AlfaTrackCand::GetYslope ( )
inline

Definition at line 124 of file AlfaLocalHits.h.

124 {return m_yslope;};

◆ GetZ()

float AlfaTrackCand::GetZ ( )
inline

Definition at line 122 of file AlfaLocalHits.h.

122 {return m_z;};

◆ IsLeftAndRightTrack()

int AlfaTrackCand::IsLeftAndRightTrack ( )

Definition at line 362 of file AlfaLocalHits.cxx.

362  {
364  return 1;
365  }else{
366  return 0;
367  }
368 }

◆ IsLeftOrRightTrack()

int AlfaTrackCand::IsLeftOrRightTrack ( )

Definition at line 354 of file AlfaLocalHits.cxx.

354  {
356  return 1;
357  }else{
358  return 0;
359  }
360 }

◆ IsLeftTrack()

int AlfaTrackCand::IsLeftTrack ( )

Definition at line 297 of file AlfaLocalHits.cxx.

297  {
298  if((m_trackcandhits->GetPathPattern().Contains("B7L1U")
299  && m_trackcandhits->GetPathPattern().Contains("A7L1U"))
300  || (m_trackcandhits->GetPathPattern().Contains("B7L1L")
301  && m_trackcandhits->GetPathPattern().Contains("A7L1L"))
302  ){
303  MsgStream LogStream(Athena::getMessageSvc(), "ALFA_TrackCand::IsLeftTrack");
304  LogStream << MSG::DEBUG << "Track candidate is left" << endmsg;
305  return 1;
306  }else{
307  return 0;
308  }
309 }

◆ IsLowerArmTrack()

int AlfaTrackCand::IsLowerArmTrack ( )

Definition at line 325 of file AlfaLocalHits.cxx.

325  {
326  if((m_trackcandhits->GetPathPattern().Contains("B7L1L")
327  && m_trackcandhits->GetPathPattern().Contains("A7L1L"))
328  || (m_trackcandhits->GetPathPattern().Contains("B7R1L")
329  && m_trackcandhits->GetPathPattern().Contains("A7R1L"))
330  ){
331  MsgStream LogStream(Athena::getMessageSvc(), "ALFA_TrackCand::IsLowerArmTrack");
332  LogStream << MSG::DEBUG << "Track candidate is in the lower arm" << endmsg;
333  return 1;
334  }else{
335  return 0;
336  }
337 }

◆ IsRightTrack()

int AlfaTrackCand::IsRightTrack ( )

Definition at line 311 of file AlfaLocalHits.cxx.

311  {
312  if((m_trackcandhits->GetPathPattern().Contains("B7R1U")
313  && m_trackcandhits->GetPathPattern().Contains("A7R1U"))
314  || (m_trackcandhits->GetPathPattern().Contains("B7R1L")
315  && m_trackcandhits->GetPathPattern().Contains("A7R1L"))
316  ){
317  MsgStream LogStream(Athena::getMessageSvc(), "ALFA_TrackCand::IsRightTrack");
318  LogStream << MSG::DEBUG << "Track candidate is right" << endmsg;
319  return 1;
320  }else{
321  return 0;
322  }
323 }

◆ IsUpperArmTrack()

int AlfaTrackCand::IsUpperArmTrack ( )

Definition at line 339 of file AlfaLocalHits.cxx.

339  {
340  if((m_trackcandhits->GetPathPattern().Contains("B7L1U")
341  && m_trackcandhits->GetPathPattern().Contains("A7L1U"))
342  || (m_trackcandhits->GetPathPattern().Contains("B7R1U")
343  && m_trackcandhits->GetPathPattern().Contains("A7R1U"))
344  ){
345  MsgStream LogStream(Athena::getMessageSvc(), "ALFA_TrackCand::IsUpperArmTrack");
346  LogStream << MSG::DEBUG << "Track candidate is in the upper arm" << endmsg;
347  return 1;
348  }else{
349  return 0;
350  }
351 }

◆ IsValidTrack()

int AlfaTrackCand::IsValidTrack ( )
inline

Definition at line 115 of file AlfaLocalHits.h.

115 {return (m_nearlocalhit && m_farlocalhit);};

Member Data Documentation

◆ m_arm

int AlfaTrackCand::m_arm
private

Definition at line 101 of file AlfaLocalHits.h.

◆ m_farimpactpoint

HepGeom::Point3D<double> AlfaTrackCand::m_farimpactpoint
private

Definition at line 108 of file AlfaLocalHits.h.

◆ m_farlocalhit

AlfaLocalHit* AlfaTrackCand::m_farlocalhit
private

Definition at line 106 of file AlfaLocalHits.h.

◆ m_nearimpactpoint

HepGeom::Point3D<double> AlfaTrackCand::m_nearimpactpoint
private

Definition at line 107 of file AlfaLocalHits.h.

◆ m_nearlocalhit

AlfaLocalHit* AlfaTrackCand::m_nearlocalhit
private

Definition at line 105 of file AlfaLocalHits.h.

◆ m_trackcandhits

AlfaLocalHits* AlfaTrackCand::m_trackcandhits
private

Definition at line 104 of file AlfaLocalHits.h.

◆ m_x

float AlfaTrackCand::m_x
private

Definition at line 102 of file AlfaLocalHits.h.

◆ m_xslope

float AlfaTrackCand::m_xslope
private

Definition at line 103 of file AlfaLocalHits.h.

◆ m_y

float AlfaTrackCand::m_y
private

Definition at line 102 of file AlfaLocalHits.h.

◆ m_yslope

float AlfaTrackCand::m_yslope
private

Definition at line 103 of file AlfaLocalHits.h.

◆ m_z

float AlfaTrackCand::m_z
private

Definition at line 102 of file AlfaLocalHits.h.


The documentation for this class was generated from the following files:
AlfaTrackCand::IsLowerArmTrack
int IsLowerArmTrack()
Definition: AlfaLocalHits.cxx:325
AlfaLocalHits::GetPathPattern
TString GetPathPattern()
Definition: AlfaLocalHits.h:89
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
AlfaTrackCand::IsLeftAndRightTrack
int IsLeftAndRightTrack()
Definition: AlfaLocalHits.cxx:362
AlfaTrackCand::m_farimpactpoint
HepGeom::Point3D< double > m_farimpactpoint
Definition: AlfaLocalHits.h:108
AlfaTrackCand::m_farlocalhit
AlfaLocalHit * m_farlocalhit
Definition: AlfaLocalHits.h:106
AlfaTrackCand::m_arm
int m_arm
Definition: AlfaLocalHits.h:101
AlfaTrackCand::IsLeftTrack
int IsLeftTrack()
Definition: AlfaLocalHits.cxx:297
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition: getMessageSvc.cxx:20
AlfaTrackCand::m_x
float m_x
Definition: AlfaLocalHits.h:102
AlfaTrackCand::m_xslope
float m_xslope
Definition: AlfaLocalHits.h:103
AlfaLocalHits::GetNhits
int GetNhits()
Definition: AlfaLocalHits.h:81
lumiFormat.i
int i
Definition: lumiFormat.py:85
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
AlfaLocalHit::GetY
float GetY() const
Definition: AlfaLocalHits.h:47
AlfaLocalHit::GetLocRecCorr
const ALFA_LocRecCorrEvent * GetLocRecCorr() const
Definition: AlfaLocalHits.h:53
AlfaTrackCand::m_nearlocalhit
AlfaLocalHit * m_nearlocalhit
Definition: AlfaLocalHits.h:105
AlfaLocalHit::GetZ
float GetZ() const
Definition: AlfaLocalHits.h:48
AlfaTrackCand::m_trackcandhits
AlfaLocalHits * m_trackcandhits
Definition: AlfaLocalHits.h:104
AlfaLocalHits::GetHit
AlfaLocalHit * GetHit(int ihit)
Definition: AlfaLocalHits.cxx:258
AlfaTrackCand::m_y
float m_y
Definition: AlfaLocalHits.h:102
AlfaTrackCand::CalcTrack
void CalcTrack()
Definition: AlfaLocalHits.cxx:370
AlfaTrackCand::IsLeftOrRightTrack
int IsLeftOrRightTrack()
Definition: AlfaLocalHits.cxx:354
AlfaTrackCand::m_yslope
float m_yslope
Definition: AlfaLocalHits.h:103
AlfaTrackCand::IsUpperArmTrack
int IsUpperArmTrack()
Definition: AlfaLocalHits.cxx:339
DEBUG
#define DEBUG
Definition: page_access.h:11
AlfaTrackCand::m_nearimpactpoint
HepGeom::Point3D< double > m_nearimpactpoint
Definition: AlfaLocalHits.h:107
AlfaLocalHit::GetX
float GetX() const
Definition: AlfaLocalHits.h:46
AlfaTrackCand::IsRightTrack
int IsRightTrack()
Definition: AlfaLocalHits.cxx:311
AlfaLocalHit::GetPotName
TString GetPotName() const
Definition: AlfaLocalHits.h:51
AlfaTrackCand::m_z
float m_z
Definition: AlfaLocalHits.h:102
AlfaTrackCand::CalcImpactPoints
void CalcImpactPoints()
Definition: AlfaLocalHits.cxx:430