CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
TrackWithHistory Class Reference

#include <TrackWithHistory.h>

Public Member Functions

void checkAtEnd (const G4Track *)
 
const G4VProcess * creatorProcess () const
 
bool crossedBoundary () const
 
int genParticleID () const
 
int getIDAtBoundary () const
 
const math::XYZTLorentzVectorFgetMomentumAtBoundary () const
 
const math::XYZTLorentzVectorFgetPositionAtBoundary () const
 
double globalTime () const
 
double localTime () const
 
const math::XYZVectorDmomentum () const
 
void operator delete (void *TrackWithHistory)
 
void * operator new (size_t)
 
int parentID () const
 
int particleID () const
 
double properTime () const
 
void save ()
 
bool saved () const
 
void setCrossedBoundaryPosMom (int id, const math::XYZTLorentzVectorF position, const math::XYZTLorentzVectorF momentum)
 
void setGenParticleID (int i)
 
void setParentID (int i)
 
void setTrackID (int i)
 
bool storeTrack () const
 
double totalEnergy () const
 
unsigned int trackID () const
 
 TrackWithHistory (const G4Track *g4track)
 
const math::XYZVectorDvertexPosition () const
 
double weight () const
 
 ~TrackWithHistory ()
 

Private Member Functions

int extractGenID (const G4Track *gt) const
 

Private Attributes

const G4VProcess * creatorProcess_
 
bool crossedBoundary_
 
int genParticleID_
 
double globalTime_
 
int idAtBoundary_
 
bool isPrimary_
 
double localTime_
 
math::XYZVectorD momentum_
 
math::XYZTLorentzVectorF momentumAtBoundary_
 
int parentID_
 
int particleID_
 
math::XYZTLorentzVectorF positionAtBoundary_
 
double properTime_
 
bool saved_
 
bool storeTrack_
 
double totalEnergy_
 
unsigned int trackID_
 
math::XYZVectorD vertexPosition_
 
double weight_
 

Detailed Description

The part of the information about a SimTrack that we need from a G4Track

Definition at line 16 of file TrackWithHistory.h.

Constructor & Destructor Documentation

TrackWithHistory::TrackWithHistory ( const G4Track *  g4track)

The constructor is called at PreUserTrackingAction time, when some of the information is not available yet.

Definition at line 16 of file TrackWithHistory.cc.

References creatorProcess_, crossedBoundary_, extractGenID(), genParticleID_, globalTime_, localTime_, LogDebug, momentum_, parentID_, G4TrackToParticleID::particleID(), particleID_, properTime_, saved_, storeTrack_, totalEnergy_, trackID_, vertexPosition_, and weight_.

17  : trackID_(0),
18  particleID_(0),
19  parentID_(0),
20  momentum_(math::XYZVectorD(0., 0., 0.)),
21  totalEnergy_(0),
22  vertexPosition_(math::XYZVectorD(0., 0., 0.)),
23  globalTime_(0),
24  localTime_(0),
25  properTime_(0),
26  creatorProcess_(nullptr),
27  weight_(0),
28  storeTrack_(false),
29  saved_(false) {
30  if (g4trk != nullptr) {
31  TrackInformationExtractor extractor;
32  trackID_ = g4trk->GetTrackID();
34  parentID_ = g4trk->GetParentID();
35  momentum_ = math::XYZVectorD(g4trk->GetMomentum().x(), g4trk->GetMomentum().y(), g4trk->GetMomentum().z());
36  totalEnergy_ = g4trk->GetTotalEnergy();
37  vertexPosition_ = math::XYZVectorD(g4trk->GetPosition().x(), g4trk->GetPosition().y(), g4trk->GetPosition().z());
38  globalTime_ = g4trk->GetGlobalTime();
39  localTime_ = g4trk->GetLocalTime();
40  properTime_ = g4trk->GetProperTime();
41  creatorProcess_ = g4trk->GetCreatorProcess();
42  storeTrack_ = extractor(g4trk).storeTrack();
43  saved_ = false;
44  crossedBoundary_ = false;
46  // V.I. weight is computed in the same way as before
47  // without usage of G4Track::GetWeight()
48  weight_ = 10000 * genParticleID_;
49 #ifdef DEBUG
50  LogDebug("TrackInformation") << " TrackWithHistory : created history for " << trackID_ << " with mother "
51  << parentID_;
52 #endif
53  }
54 }
const G4VProcess * creatorProcess_
int extractGenID(const G4Track *gt) const
math::XYZVectorD vertexPosition_
math::XYZVectorD momentum_
unsigned int trackID_
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > XYZVectorD
spatial vector with cartesian internal representation
Definition: Vector3D.h:8
static int particleID(const G4Track *)
#define LogDebug(id)
TrackWithHistory::~TrackWithHistory ( )
inline

Definition at line 22 of file TrackWithHistory.h.

22 {}

Member Function Documentation

void TrackWithHistory::checkAtEnd ( const G4Track *  gt)

Internal consistency check (optional). Method called at PostUserTrackingAction time, to check if the information is consistent with that provided to the constructor.

Definition at line 56 of file TrackWithHistory.cc.

References geometryDiff::epsilon, momentum_, convertSQLiteXML::ok, and vertexPosition_.

Referenced by TrackingAction::PostUserTrackingAction().

56  {
57  math::XYZVectorD vposdir(gt->GetVertexPosition().x(), gt->GetVertexPosition().y(), gt->GetVertexPosition().z());
58  math::XYZVectorD vmomdir(
59  gt->GetVertexMomentumDirection().x(), gt->GetVertexMomentumDirection().y(), gt->GetVertexMomentumDirection().z());
60  bool ok = true;
61  double epsilon = 1.e-6;
62  double eps2 = epsilon * epsilon;
63  if ((vertexPosition_ - vposdir).Mag2() > eps2) {
64  edm::LogWarning("TrackInformation") << "TrackWithHistory vertex position check failed"
65  << "\nAt construction: " << vertexPosition_ << "\nAt end: " << vposdir;
66  ok = false;
67  }
68  math::XYZVectorD dirDiff = momentum_.Unit() - vmomdir;
69  if (dirDiff.Mag2() > eps2 && momentum_.Unit().R() > eps2) {
70  edm::LogWarning("TrackInformation") << "TrackWithHistory momentum direction check failed"
71  << "\nAt construction: " << momentum_.Unit()
72  << "\nAt end: " << vmomdir;
73  ok = false;
74  }
75 
76  if (!ok)
77  G4Exception("TrackWithHistory::checkAtEnd()", "mc001", FatalException, "check at track end failed");
78 }
math::XYZVectorD vertexPosition_
math::XYZVectorD momentum_
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > XYZVectorD
spatial vector with cartesian internal representation
Definition: Vector3D.h:8
Log< level::Warning, false > LogWarning
const G4VProcess* TrackWithHistory::creatorProcess ( ) const
inline

Definition at line 38 of file TrackWithHistory.h.

References creatorProcess_.

Referenced by SimTrackManager::getOrCreateVertex().

38 { return creatorProcess_; }
const G4VProcess * creatorProcess_
bool TrackWithHistory::crossedBoundary ( ) const
inline
int TrackWithHistory::extractGenID ( const G4Track *  gt) const
private

Definition at line 80 of file TrackWithHistory.cc.

Referenced by TrackWithHistory().

80  {
81  void* vgprimary = gt->GetDynamicParticle()->GetPrimaryParticle();
82  if (vgprimary == nullptr)
83  return -1;
84  // replace old-style cast with appropriate new-style cast...
85  G4PrimaryParticle* gprimary = (G4PrimaryParticle*)vgprimary;
87  return ext(gprimary).id();
88 }
int TrackWithHistory::genParticleID ( ) const
inline

Definition at line 31 of file TrackWithHistory.h.

References genParticleID_.

Referenced by SimTrackManager::reallyStoreTracks(), and SimTrackManager::resetGenID().

31 { return genParticleID_; }
int TrackWithHistory::getIDAtBoundary ( ) const
inline

Definition at line 58 of file TrackWithHistory.h.

References idAtBoundary_.

Referenced by G4SimTrack::copyCrossedBoundaryVars().

58 { return idAtBoundary_; }
const math::XYZTLorentzVectorF& TrackWithHistory::getMomentumAtBoundary ( ) const
inline

Definition at line 57 of file TrackWithHistory.h.

References momentumAtBoundary_.

Referenced by G4SimTrack::copyCrossedBoundaryVars().

57 { return momentumAtBoundary_; }
math::XYZTLorentzVectorF momentumAtBoundary_
const math::XYZTLorentzVectorF& TrackWithHistory::getPositionAtBoundary ( ) const
inline

Definition at line 56 of file TrackWithHistory.h.

References positionAtBoundary_.

Referenced by G4SimTrack::copyCrossedBoundaryVars().

56 { return positionAtBoundary_; }
math::XYZTLorentzVectorF positionAtBoundary_
double TrackWithHistory::globalTime ( ) const
inline

Definition at line 35 of file TrackWithHistory.h.

References globalTime_.

Referenced by SimTrackManager::getOrCreateVertex().

35 { return globalTime_; }
double TrackWithHistory::localTime ( ) const
inline

Definition at line 36 of file TrackWithHistory.h.

References localTime_.

36 { return localTime_; }
const math::XYZVectorD& TrackWithHistory::momentum ( ) const
inline

Definition at line 32 of file TrackWithHistory.h.

References momentum_.

Referenced by CaloSD::createNewHit(), SimTrackManager::reallyStoreTracks(), and setCrossedBoundaryPosMom().

32 { return momentum_; }
math::XYZVectorD momentum_
void TrackWithHistory::operator delete ( void *  TrackWithHistory)
inline

Definition at line 99 of file TrackWithHistory.h.

References fpTrackWithHistoryAllocator.

99  {
100  fpTrackWithHistoryAllocator->FreeSingle((TrackWithHistory *)aTwH);
101 }
G4ThreadLocal G4Allocator< TrackWithHistory > * fpTrackWithHistoryAllocator
void * TrackWithHistory::operator new ( size_t  )
inline

Definition at line 93 of file TrackWithHistory.h.

References fpTrackWithHistoryAllocator.

93  {
95  fpTrackWithHistoryAllocator = new G4Allocator<TrackWithHistory>;
96  return (void *)fpTrackWithHistoryAllocator->MallocSingle();
97 }
G4ThreadLocal G4Allocator< TrackWithHistory > * fpTrackWithHistoryAllocator
int TrackWithHistory::parentID ( ) const
inline
int TrackWithHistory::particleID ( ) const
inline

Definition at line 29 of file TrackWithHistory.h.

References particleID_.

Referenced by SimTrackManager::reallyStoreTracks().

29 { return particleID_; }
double TrackWithHistory::properTime ( ) const
inline

Definition at line 37 of file TrackWithHistory.h.

References properTime_.

37 { return properTime_; }
void TrackWithHistory::save ( )
inline
bool TrackWithHistory::saved ( ) const
inline

Definition at line 44 of file TrackWithHistory.h.

References saved_.

Referenced by SimTrackManager::cleanTracksWithHistory(), and TrackingAction::PostUserTrackingAction().

44 { return saved_; }
void TrackWithHistory::setCrossedBoundaryPosMom ( int  id,
const math::XYZTLorentzVectorF  position,
const math::XYZTLorentzVectorF  momentum 
)
inline

Definition at line 47 of file TrackWithHistory.h.

References crossedBoundary_, gpuClustering::id, idAtBoundary_, momentum(), momentumAtBoundary_, position, and positionAtBoundary_.

Referenced by TrackingAction::PostUserTrackingAction().

49  {
50  crossedBoundary_ = true;
51  idAtBoundary_ = id;
54  }
uint16_t *__restrict__ id
math::XYZTLorentzVectorF positionAtBoundary_
math::XYZTLorentzVectorF momentumAtBoundary_
const math::XYZVectorD & momentum() const
static int position[264][3]
Definition: ReadPGInfo.cc:289
void TrackWithHistory::setGenParticleID ( int  i)
inline

Definition at line 42 of file TrackWithHistory.h.

References genParticleID_, and mps_fire::i.

Referenced by SimTrackManager::resetGenID().

void TrackWithHistory::setParentID ( int  i)
inline

Definition at line 41 of file TrackWithHistory.h.

References mps_fire::i, and parentID_.

void TrackWithHistory::setTrackID ( int  i)
inline

Definition at line 40 of file TrackWithHistory.h.

References mps_fire::i, and trackID_.

40 { trackID_ = i; }
unsigned int trackID_
bool TrackWithHistory::storeTrack ( ) const
inline

Definition at line 43 of file TrackWithHistory.h.

References storeTrack_.

43 { return storeTrack_; }
double TrackWithHistory::totalEnergy ( ) const
inline

Definition at line 33 of file TrackWithHistory.h.

References totalEnergy_.

Referenced by SimTrackManager::reallyStoreTracks().

33 { return totalEnergy_; }
unsigned int TrackWithHistory::trackID ( ) const
inline
const math::XYZVectorD& TrackWithHistory::vertexPosition ( ) const
inline

Definition at line 34 of file TrackWithHistory.h.

References vertexPosition_.

Referenced by SimTrackManager::getOrCreateVertex().

34 { return vertexPosition_; }
math::XYZVectorD vertexPosition_
double TrackWithHistory::weight ( ) const
inline

Definition at line 39 of file TrackWithHistory.h.

References weight_.

39 { return weight_; }

Member Data Documentation

const G4VProcess* TrackWithHistory::creatorProcess_
private

Definition at line 77 of file TrackWithHistory.h.

Referenced by creatorProcess(), and TrackWithHistory().

bool TrackWithHistory::crossedBoundary_
private

Definition at line 83 of file TrackWithHistory.h.

Referenced by crossedBoundary(), setCrossedBoundaryPosMom(), and TrackWithHistory().

int TrackWithHistory::genParticleID_
private

Definition at line 70 of file TrackWithHistory.h.

Referenced by genParticleID(), setGenParticleID(), and TrackWithHistory().

double TrackWithHistory::globalTime_
private

Definition at line 74 of file TrackWithHistory.h.

Referenced by globalTime(), and TrackWithHistory().

int TrackWithHistory::idAtBoundary_
private

Definition at line 84 of file TrackWithHistory.h.

Referenced by getIDAtBoundary(), and setCrossedBoundaryPosMom().

bool TrackWithHistory::isPrimary_
private

Definition at line 82 of file TrackWithHistory.h.

double TrackWithHistory::localTime_
private

Definition at line 75 of file TrackWithHistory.h.

Referenced by localTime(), and TrackWithHistory().

math::XYZVectorD TrackWithHistory::momentum_
private

Definition at line 71 of file TrackWithHistory.h.

Referenced by checkAtEnd(), momentum(), and TrackWithHistory().

math::XYZTLorentzVectorF TrackWithHistory::momentumAtBoundary_
private

Definition at line 86 of file TrackWithHistory.h.

Referenced by getMomentumAtBoundary(), and setCrossedBoundaryPosMom().

int TrackWithHistory::parentID_
private

Definition at line 69 of file TrackWithHistory.h.

Referenced by parentID(), setParentID(), and TrackWithHistory().

int TrackWithHistory::particleID_
private

Definition at line 68 of file TrackWithHistory.h.

Referenced by particleID(), and TrackWithHistory().

math::XYZTLorentzVectorF TrackWithHistory::positionAtBoundary_
private

Definition at line 85 of file TrackWithHistory.h.

Referenced by getPositionAtBoundary(), and setCrossedBoundaryPosMom().

double TrackWithHistory::properTime_
private

Definition at line 76 of file TrackWithHistory.h.

Referenced by properTime(), and TrackWithHistory().

bool TrackWithHistory::saved_
private

Definition at line 80 of file TrackWithHistory.h.

Referenced by save(), saved(), and TrackWithHistory().

bool TrackWithHistory::storeTrack_
private

Definition at line 79 of file TrackWithHistory.h.

Referenced by storeTrack(), and TrackWithHistory().

double TrackWithHistory::totalEnergy_
private

Definition at line 72 of file TrackWithHistory.h.

Referenced by totalEnergy(), and TrackWithHistory().

unsigned int TrackWithHistory::trackID_
private

Definition at line 67 of file TrackWithHistory.h.

Referenced by setTrackID(), trackID(), and TrackWithHistory().

math::XYZVectorD TrackWithHistory::vertexPosition_
private

Definition at line 73 of file TrackWithHistory.h.

Referenced by checkAtEnd(), TrackWithHistory(), and vertexPosition().

double TrackWithHistory::weight_
private

Definition at line 78 of file TrackWithHistory.h.

Referenced by TrackWithHistory(), and weight().