CMS 3D CMS Logo

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::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_
math::XYZVectorD vertexPosition_
math::XYZVectorD momentum_
unsigned int trackID_
int extractGenID(const G4Track *gt) const
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::~TrackWithHistory ( )
inline

Definition at line 22 of file TrackWithHistory.h.

22 {}

Member Function Documentation

◆ checkAtEnd()

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, submitPVValidationJobs::gt, 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

◆ creatorProcess()

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_

◆ crossedBoundary()

bool TrackWithHistory::crossedBoundary ( ) const
inline

Definition at line 55 of file TrackWithHistory.h.

References crossedBoundary_.

55 { return crossedBoundary_; }

◆ extractGenID()

int TrackWithHistory::extractGenID ( const G4Track *  gt) const
private

Definition at line 80 of file TrackWithHistory.cc.

References submitPVValidationJobs::gt.

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 }
Definition: memstream.h:15

◆ genParticleID()

int TrackWithHistory::genParticleID ( ) const
inline

Definition at line 31 of file TrackWithHistory.h.

References genParticleID_.

31 { return genParticleID_; }

◆ getIDAtBoundary()

int TrackWithHistory::getIDAtBoundary ( ) const
inline

Definition at line 58 of file TrackWithHistory.h.

References idAtBoundary_.

58 { return idAtBoundary_; }

◆ getMomentumAtBoundary()

const math::XYZTLorentzVectorF& TrackWithHistory::getMomentumAtBoundary ( ) const
inline

Definition at line 57 of file TrackWithHistory.h.

References momentumAtBoundary_.

57 { return momentumAtBoundary_; }
math::XYZTLorentzVectorF momentumAtBoundary_

◆ getPositionAtBoundary()

const math::XYZTLorentzVectorF& TrackWithHistory::getPositionAtBoundary ( ) const
inline

Definition at line 56 of file TrackWithHistory.h.

References positionAtBoundary_.

56 { return positionAtBoundary_; }
math::XYZTLorentzVectorF positionAtBoundary_

◆ globalTime()

double TrackWithHistory::globalTime ( ) const
inline

Definition at line 35 of file TrackWithHistory.h.

References globalTime_.

Referenced by SimTrackManager::getOrCreateVertex().

35 { return globalTime_; }

◆ localTime()

double TrackWithHistory::localTime ( ) const
inline

Definition at line 36 of file TrackWithHistory.h.

References localTime_.

36 { return localTime_; }

◆ momentum()

const math::XYZVectorD& TrackWithHistory::momentum ( ) const
inline

Definition at line 32 of file TrackWithHistory.h.

References momentum_.

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

32 { return momentum_; }
math::XYZVectorD momentum_

◆ operator delete()

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

◆ operator new()

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

◆ parentID()

int TrackWithHistory::parentID ( ) const
inline

◆ particleID()

int TrackWithHistory::particleID ( ) const
inline

Definition at line 29 of file TrackWithHistory.h.

References particleID_.

29 { return particleID_; }

◆ properTime()

double TrackWithHistory::properTime ( ) const
inline

Definition at line 37 of file TrackWithHistory.h.

References properTime_.

37 { return properTime_; }

◆ save()

void TrackWithHistory::save ( )
inline

◆ saved()

bool TrackWithHistory::saved ( ) const
inline

Definition at line 44 of file TrackWithHistory.h.

References saved_.

Referenced by TrackingAction::PostUserTrackingAction().

44 { return saved_; }

◆ setCrossedBoundaryPosMom()

void TrackWithHistory::setCrossedBoundaryPosMom ( int  id,
const math::XYZTLorentzVectorF  position,
const math::XYZTLorentzVectorF  momentum 
)
inline

Definition at line 47 of file TrackWithHistory.h.

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

Referenced by TrackingAction::PostUserTrackingAction().

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

◆ setGenParticleID()

void TrackWithHistory::setGenParticleID ( int  i)
inline

Definition at line 42 of file TrackWithHistory.h.

References genParticleID_, and mps_fire::i.

◆ setParentID()

void TrackWithHistory::setParentID ( int  i)
inline

Definition at line 41 of file TrackWithHistory.h.

References mps_fire::i, and parentID_.

◆ setTrackID()

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_

◆ storeTrack()

bool TrackWithHistory::storeTrack ( ) const
inline

Definition at line 43 of file TrackWithHistory.h.

References storeTrack_.

43 { return storeTrack_; }

◆ totalEnergy()

double TrackWithHistory::totalEnergy ( ) const
inline

Definition at line 33 of file TrackWithHistory.h.

References totalEnergy_.

33 { return totalEnergy_; }

◆ trackID()

unsigned int TrackWithHistory::trackID ( ) const
inline

Definition at line 28 of file TrackWithHistory.h.

References trackID_.

Referenced by SimTrackManager::addTrack(), trkIDLess::operator()(), and CaloSD::update().

28 { return trackID_; }
unsigned int trackID_

◆ vertexPosition()

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_

◆ weight()

double TrackWithHistory::weight ( ) const
inline

Definition at line 39 of file TrackWithHistory.h.

References weight_.

39 { return weight_; }

Member Data Documentation

◆ creatorProcess_

const G4VProcess* TrackWithHistory::creatorProcess_
private

Definition at line 77 of file TrackWithHistory.h.

Referenced by creatorProcess(), and TrackWithHistory().

◆ crossedBoundary_

bool TrackWithHistory::crossedBoundary_
private

Definition at line 83 of file TrackWithHistory.h.

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

◆ genParticleID_

int TrackWithHistory::genParticleID_
private

Definition at line 70 of file TrackWithHistory.h.

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

◆ globalTime_

double TrackWithHistory::globalTime_
private

Definition at line 74 of file TrackWithHistory.h.

Referenced by globalTime(), and TrackWithHistory().

◆ idAtBoundary_

int TrackWithHistory::idAtBoundary_
private

Definition at line 84 of file TrackWithHistory.h.

Referenced by getIDAtBoundary(), and setCrossedBoundaryPosMom().

◆ isPrimary_

bool TrackWithHistory::isPrimary_
private

Definition at line 82 of file TrackWithHistory.h.

◆ localTime_

double TrackWithHistory::localTime_
private

Definition at line 75 of file TrackWithHistory.h.

Referenced by localTime(), and TrackWithHistory().

◆ momentum_

math::XYZVectorD TrackWithHistory::momentum_
private

Definition at line 71 of file TrackWithHistory.h.

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

◆ momentumAtBoundary_

math::XYZTLorentzVectorF TrackWithHistory::momentumAtBoundary_
private

Definition at line 86 of file TrackWithHistory.h.

Referenced by getMomentumAtBoundary(), and setCrossedBoundaryPosMom().

◆ parentID_

int TrackWithHistory::parentID_
private

Definition at line 69 of file TrackWithHistory.h.

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

◆ particleID_

int TrackWithHistory::particleID_
private

Definition at line 68 of file TrackWithHistory.h.

Referenced by particleID(), and TrackWithHistory().

◆ positionAtBoundary_

math::XYZTLorentzVectorF TrackWithHistory::positionAtBoundary_
private

Definition at line 85 of file TrackWithHistory.h.

Referenced by getPositionAtBoundary(), and setCrossedBoundaryPosMom().

◆ properTime_

double TrackWithHistory::properTime_
private

Definition at line 76 of file TrackWithHistory.h.

Referenced by properTime(), and TrackWithHistory().

◆ saved_

bool TrackWithHistory::saved_
private

Definition at line 80 of file TrackWithHistory.h.

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

◆ storeTrack_

bool TrackWithHistory::storeTrack_
private

Definition at line 79 of file TrackWithHistory.h.

Referenced by storeTrack(), and TrackWithHistory().

◆ totalEnergy_

double TrackWithHistory::totalEnergy_
private

Definition at line 72 of file TrackWithHistory.h.

Referenced by totalEnergy(), and TrackWithHistory().

◆ trackID_

unsigned int TrackWithHistory::trackID_
private

Definition at line 67 of file TrackWithHistory.h.

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

◆ vertexPosition_

math::XYZVectorD TrackWithHistory::vertexPosition_
private

Definition at line 73 of file TrackWithHistory.h.

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

◆ weight_

double TrackWithHistory::weight_
private

Definition at line 78 of file TrackWithHistory.h.

Referenced by TrackWithHistory(), and weight().