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
 
int genParticleID () 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 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_
 
int genParticleID_
 
double globalTime_
 
double localTime_
 
math::XYZVectorD momentum_
 
int parentID_
 
int particleID_
 
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 17 of file TrackWithHistory.cc.

18  : trackID_(0),
19  particleID_(0),
20  parentID_(0),
21  momentum_(math::XYZVectorD(0., 0., 0.)),
22  totalEnergy_(0),
23  vertexPosition_(math::XYZVectorD(0., 0., 0.)),
24  globalTime_(0),
25  localTime_(0),
26  properTime_(0),
27  creatorProcess_(nullptr),
28  weight_(0),
29  storeTrack_(false),
30  saved_(false) {
31  if (g4trk != nullptr) {
32  TrackInformationExtractor extractor;
33  trackID_ = g4trk->GetTrackID();
35  parentID_ = g4trk->GetParentID();
36  momentum_ = math::XYZVectorD(g4trk->GetMomentum().x(), g4trk->GetMomentum().y(), g4trk->GetMomentum().z());
37  totalEnergy_ = g4trk->GetTotalEnergy();
38  vertexPosition_ = math::XYZVectorD(g4trk->GetPosition().x(), g4trk->GetPosition().y(), g4trk->GetPosition().z());
39  globalTime_ = g4trk->GetGlobalTime();
40  localTime_ = g4trk->GetLocalTime();
41  properTime_ = g4trk->GetProperTime();
42  creatorProcess_ = g4trk->GetCreatorProcess();
43  storeTrack_ = extractor(g4trk).storeTrack();
44  saved_ = 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 }

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

◆ ~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.

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  if (!ok)
76  throw SimG4Exception("TrackWithHistory::checkAtEnd failed");
77 }

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

Referenced by TrackingAction::PostUserTrackingAction().

◆ creatorProcess()

const G4VProcess* TrackWithHistory::creatorProcess ( ) const
inline

Definition at line 38 of file TrackWithHistory.h.

38 { return creatorProcess_; }

References creatorProcess_.

Referenced by SimTrackManager::getOrCreateVertex().

◆ extractGenID()

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

Definition at line 79 of file TrackWithHistory.cc.

79  {
80  void* vgprimary = gt->GetDynamicParticle()->GetPrimaryParticle();
81  if (vgprimary == nullptr)
82  return -1;
83  // replace old-style cast with appropriate new-style cast...
84  G4PrimaryParticle* gprimary = (G4PrimaryParticle*)vgprimary;
86  return ext(gprimary).id();
87 }

Referenced by TrackWithHistory().

◆ genParticleID()

int TrackWithHistory::genParticleID ( ) const
inline

Definition at line 31 of file TrackWithHistory.h.

31 { return genParticleID_; }

References genParticleID_.

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

◆ globalTime()

double TrackWithHistory::globalTime ( ) const
inline

Definition at line 35 of file TrackWithHistory.h.

35 { return globalTime_; }

References globalTime_.

Referenced by SimTrackManager::getOrCreateVertex().

◆ localTime()

double TrackWithHistory::localTime ( ) const
inline

Definition at line 36 of file TrackWithHistory.h.

36 { return localTime_; }

References localTime_.

◆ momentum()

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

Definition at line 32 of file TrackWithHistory.h.

32 { return momentum_; }

References momentum_.

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

◆ operator delete()

void TrackWithHistory::operator delete ( void *  TrackWithHistory)
inline

Definition at line 78 of file TrackWithHistory.h.

78  {
79  fpTrackWithHistoryAllocator->FreeSingle((TrackWithHistory *)aTwH);
80 }

References fpTrackWithHistoryAllocator.

◆ operator new()

void * TrackWithHistory::operator new ( size_t  )
inline

Definition at line 72 of file TrackWithHistory.h.

72  {
74  fpTrackWithHistoryAllocator = new G4Allocator<TrackWithHistory>;
75  return (void *)fpTrackWithHistoryAllocator->MallocSingle();
76 }

References fpTrackWithHistoryAllocator.

◆ parentID()

int TrackWithHistory::parentID ( ) const
inline

◆ particleID()

int TrackWithHistory::particleID ( ) const
inline

Definition at line 29 of file TrackWithHistory.h.

29 { return particleID_; }

References particleID_.

Referenced by SimTrackManager::reallyStoreTracks().

◆ properTime()

double TrackWithHistory::properTime ( ) const
inline

Definition at line 37 of file TrackWithHistory.h.

37 { return properTime_; }

References properTime_.

◆ save()

void TrackWithHistory::save ( )
inline

◆ saved()

bool TrackWithHistory::saved ( ) const
inline

Definition at line 44 of file TrackWithHistory.h.

44 { return saved_; }

References saved_.

◆ setGenParticleID()

void TrackWithHistory::setGenParticleID ( int  i)
inline

Definition at line 42 of file TrackWithHistory.h.

42 { genParticleID_ = i; }

References genParticleID_, and mps_fire::i.

Referenced by SimTrackManager::resetGenID().

◆ setParentID()

void TrackWithHistory::setParentID ( int  i)
inline

Definition at line 41 of file TrackWithHistory.h.

41 { parentID_ = i; }

References mps_fire::i, and parentID_.

◆ setTrackID()

void TrackWithHistory::setTrackID ( int  i)
inline

Definition at line 40 of file TrackWithHistory.h.

40 { trackID_ = i; }

References mps_fire::i, and trackID_.

◆ storeTrack()

bool TrackWithHistory::storeTrack ( ) const
inline

Definition at line 43 of file TrackWithHistory.h.

43 { return storeTrack_; }

References storeTrack_.

◆ totalEnergy()

double TrackWithHistory::totalEnergy ( ) const
inline

Definition at line 33 of file TrackWithHistory.h.

33 { return totalEnergy_; }

References totalEnergy_.

Referenced by SimTrackManager::reallyStoreTracks().

◆ trackID()

unsigned int TrackWithHistory::trackID ( ) const
inline

◆ vertexPosition()

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

Definition at line 34 of file TrackWithHistory.h.

34 { return vertexPosition_; }

References vertexPosition_.

Referenced by SimTrackManager::getOrCreateVertex().

◆ weight()

double TrackWithHistory::weight ( ) const
inline

Definition at line 39 of file TrackWithHistory.h.

39 { return weight_; }

References weight_.

Member Data Documentation

◆ creatorProcess_

const G4VProcess* TrackWithHistory::creatorProcess_
private

Definition at line 63 of file TrackWithHistory.h.

Referenced by creatorProcess(), and TrackWithHistory().

◆ genParticleID_

int TrackWithHistory::genParticleID_
private

Definition at line 56 of file TrackWithHistory.h.

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

◆ globalTime_

double TrackWithHistory::globalTime_
private

Definition at line 60 of file TrackWithHistory.h.

Referenced by globalTime(), and TrackWithHistory().

◆ localTime_

double TrackWithHistory::localTime_
private

Definition at line 61 of file TrackWithHistory.h.

Referenced by localTime(), and TrackWithHistory().

◆ momentum_

math::XYZVectorD TrackWithHistory::momentum_
private

Definition at line 57 of file TrackWithHistory.h.

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

◆ parentID_

int TrackWithHistory::parentID_
private

Definition at line 55 of file TrackWithHistory.h.

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

◆ particleID_

int TrackWithHistory::particleID_
private

Definition at line 54 of file TrackWithHistory.h.

Referenced by particleID(), and TrackWithHistory().

◆ properTime_

double TrackWithHistory::properTime_
private

Definition at line 62 of file TrackWithHistory.h.

Referenced by properTime(), and TrackWithHistory().

◆ saved_

bool TrackWithHistory::saved_
private

Definition at line 66 of file TrackWithHistory.h.

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

◆ storeTrack_

bool TrackWithHistory::storeTrack_
private

Definition at line 65 of file TrackWithHistory.h.

Referenced by storeTrack(), and TrackWithHistory().

◆ totalEnergy_

double TrackWithHistory::totalEnergy_
private

Definition at line 58 of file TrackWithHistory.h.

Referenced by totalEnergy(), and TrackWithHistory().

◆ trackID_

unsigned int TrackWithHistory::trackID_
private

Definition at line 53 of file TrackWithHistory.h.

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

◆ vertexPosition_

math::XYZVectorD TrackWithHistory::vertexPosition_
private

Definition at line 59 of file TrackWithHistory.h.

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

◆ weight_

double TrackWithHistory::weight_
private

Definition at line 64 of file TrackWithHistory.h.

Referenced by TrackWithHistory(), and weight().

TrackWithHistory::parentID_
int parentID_
Definition: TrackWithHistory.h:55
ext
Definition: memstream.h:15
mps_fire.i
i
Definition: mps_fire.py:355
TrackWithHistory::weight_
double weight_
Definition: TrackWithHistory.h:64
TrackWithHistory::trackID_
unsigned int trackID_
Definition: TrackWithHistory.h:53
TrackWithHistory::localTime_
double localTime_
Definition: TrackWithHistory.h:61
TrackWithHistory
Definition: TrackWithHistory.h:16
SimG4Exception
Definition: SimG4Exception.h:13
convertSQLiteXML.ok
bool ok
Definition: convertSQLiteXML.py:98
TrackWithHistory::totalEnergy_
double totalEnergy_
Definition: TrackWithHistory.h:58
G4TrackToParticleID::particleID
static int particleID(const G4Track *)
Definition: G4TrackToParticleID.cc:7
geometryDiff.epsilon
int epsilon
Definition: geometryDiff.py:26
GenParticleInfoExtractor
Definition: GenParticleInfoExtractor.h:8
TrackWithHistory::creatorProcess_
const G4VProcess * creatorProcess_
Definition: TrackWithHistory.h:63
TrackInformationExtractor
Definition: TrackInformationExtractor.h:20
TrackWithHistory::vertexPosition_
math::XYZVectorD vertexPosition_
Definition: TrackWithHistory.h:59
TrackWithHistory::storeTrack_
bool storeTrack_
Definition: TrackWithHistory.h:65
edm::LogWarning
Definition: MessageLogger.h:141
TrackWithHistory::saved_
bool saved_
Definition: TrackWithHistory.h:66
math::XYZVectorD
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > XYZVectorD
spatial vector with cartesian internal representation
Definition: Vector3D.h:8
TrackWithHistory::momentum_
math::XYZVectorD momentum_
Definition: TrackWithHistory.h:57
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:670
fpTrackWithHistoryAllocator
G4ThreadLocal G4Allocator< TrackWithHistory > * fpTrackWithHistoryAllocator
Definition: TrackWithHistory.cc:13
TrackWithHistory::globalTime_
double globalTime_
Definition: TrackWithHistory.h:60
TrackWithHistory::extractGenID
int extractGenID(const G4Track *gt) const
Definition: TrackWithHistory.cc:79
TrackWithHistory::particleID_
int particleID_
Definition: TrackWithHistory.h:54
TrackWithHistory::genParticleID_
int genParticleID_
Definition: TrackWithHistory.h:56
TrackWithHistory::properTime_
double properTime_
Definition: TrackWithHistory.h:62