CMS 3D CMS Logo

List of all members | Public Member Functions | Public Attributes | Private Member Functions | Private Attributes
Phase2SteppingAction Class Reference

#include <Phase2SteppingAction.h>

Inheritance diagram for Phase2SteppingAction:

Public Member Functions

 Phase2SteppingAction (const CMSSteppingVerbose *, const edm::ParameterSet &, bool hasW)
 
void UserSteppingAction (const G4Step *aStep) final
 
 ~Phase2SteppingAction () override=default
 

Public Attributes

SimActivityRegistry::G4StepSignal m_g4StepSignal
 

Private Member Functions

bool initPointer ()
 
bool isInsideDeadRegion (const G4Region *reg) const
 
bool isLowEnergy (const G4LogicalVolume *, const G4Track *) const
 
bool isOutOfTimeWindow (const G4Region *reg, const double &time) const
 
void PrintKilledTrack (const G4Track *, const TrackStatus &) const
 

Private Attributes

const G4VPhysicalVolume * btl {nullptr}
 
const G4VPhysicalVolume * calo {nullptr}
 
std::vector< std::string > deadRegionNames
 
std::vector< const G4Region * > deadRegions
 
std::vector< double > ekinMins
 
std::vector< std::string > ekinNames
 
std::vector< std::string > ekinParticles
 
std::vector< int > ekinPDG
 
std::vector< G4LogicalVolume * > ekinVolumes
 
bool hasWatcher
 
bool initialized {false}
 
bool killBeamPipe {false}
 
G4int maxNumberOfSteps
 
std::vector< std::string > maxTimeNames
 
std::vector< const G4Region * > maxTimeRegions
 
double maxTrackTime
 
double maxTrackTimeForward
 
std::vector< double > maxTrackTimes
 
double maxZCentralCMS
 
unsigned int ndeadRegions
 
unsigned int numberEkins
 
unsigned int numberPart
 
unsigned int numberTimes
 
unsigned int nWarnings {0}
 
const CMSSteppingVerbosesteppingVerbose
 
double theCriticalDensity
 
double theCriticalEnergyForVacuum
 
const G4VPhysicalVolume * tracker {nullptr}
 

Detailed Description

Definition at line 20 of file Phase2SteppingAction.h.

Constructor & Destructor Documentation

◆ Phase2SteppingAction()

Phase2SteppingAction::Phase2SteppingAction ( const CMSSteppingVerbose sv,
const edm::ParameterSet p,
bool  hasW 
)
explicit

Definition at line 18 of file Phase2SteppingAction.cc.

References deadRegionNames, ekinMins, ekinNames, ekinParticles, g, mps_fire::i, killBeamPipe, visualization-live-secondInstance_cfg::m, maxNumberOfSteps, maxTimeNames, maxTrackTime, maxTrackTimeForward, maxTrackTimes, maxZCentralCMS, ndeadRegions, numberEkins, numberPart, numberTimes, AlCaHLTBitMon_ParallelJobs::p, theCriticalDensity, and theCriticalEnergyForVacuum.

19  : steppingVerbose(sv), hasWatcher(hasW) {
20  theCriticalEnergyForVacuum = (p.getParameter<double>("CriticalEnergyForVacuum") * CLHEP::MeV);
21  if (0.0 < theCriticalEnergyForVacuum) {
22  killBeamPipe = true;
23  }
24  theCriticalDensity = (p.getParameter<double>("CriticalDensity") * CLHEP::g / CLHEP::cm3);
25  maxZCentralCMS = p.getParameter<double>("MaxZCentralCMS") * CLHEP::m;
26  maxTrackTime = p.getParameter<double>("MaxTrackTime") * CLHEP::ns;
27  maxTrackTimeForward = p.getParameter<double>("MaxTrackTimeForward") * CLHEP::ns;
28  maxTrackTimes = p.getParameter<std::vector<double> >("MaxTrackTimes");
29  maxTimeNames = p.getParameter<std::vector<std::string> >("MaxTimeNames");
30  deadRegionNames = p.getParameter<std::vector<std::string> >("DeadRegions");
31  maxNumberOfSteps = p.getParameter<int>("MaxNumberOfSteps");
32  ekinMins = p.getParameter<std::vector<double> >("EkinThresholds");
33  ekinNames = p.getParameter<std::vector<std::string> >("EkinNames");
34  ekinParticles = p.getParameter<std::vector<std::string> >("EkinParticles");
35 
36  edm::LogVerbatim("SimG4CoreApplication")
37  << "Phase2SteppingAction:: KillBeamPipe = " << killBeamPipe
38  << " CriticalDensity = " << theCriticalDensity * CLHEP::cm3 / CLHEP::g << " g/cm3\n"
39  << " CriticalEnergyForVacuum = " << theCriticalEnergyForVacuum / CLHEP::MeV << " Mev;"
40  << " MaxTrackTime = " << maxTrackTime / CLHEP::ns << " ns;"
41  << " MaxZCentralCMS = " << maxZCentralCMS / CLHEP::m << " m"
42  << " MaxTrackTimeForward = " << maxTrackTimeForward / CLHEP::ns << " ns"
43  << " MaxNumberOfSteps = " << maxNumberOfSteps;
44 
45  numberTimes = maxTrackTimes.size();
46  if (numberTimes > 0) {
47  for (unsigned int i = 0; i < numberTimes; i++) {
48  edm::LogVerbatim("SimG4CoreApplication")
49  << "Phase2SteppingAction::MaxTrackTime for " << maxTimeNames[i] << " is " << maxTrackTimes[i] << " ns ";
50  maxTrackTimes[i] *= ns;
51  }
52  }
53 
55  if (ndeadRegions > 0) {
56  edm::LogVerbatim("SimG4CoreApplication")
57  << "Phase2SteppingAction: Number of DeadRegions where all trackes are killed " << ndeadRegions;
58  for (unsigned int i = 0; i < ndeadRegions; ++i) {
59  edm::LogVerbatim("SimG4CoreApplication")
60  << "Phase2SteppingAction: DeadRegion " << i << ". " << deadRegionNames[i];
61  }
62  }
63  numberEkins = ekinNames.size();
64  numberPart = ekinParticles.size();
65  if (0 == numberPart) {
66  numberEkins = 0;
67  }
68 
69  if (numberEkins > 0) {
70  edm::LogVerbatim("SimG4CoreApplication")
71  << "Phase2SteppingAction::Kill following " << numberPart << " particles in " << numberEkins << " volumes";
72  for (unsigned int i = 0; i < numberPart; ++i) {
73  edm::LogVerbatim("SimG4CoreApplication") << "Phase2SteppingAction::Particle " << i << " " << ekinParticles[i]
74  << " Threshold = " << ekinMins[i] << " MeV";
75  ekinMins[i] *= CLHEP::MeV;
76  }
77  for (unsigned int i = 0; i < numberEkins; ++i) {
78  edm::LogVerbatim("SimG4CoreApplication") << "Phase2SteppingAction::LogVolume[" << i << "] = " << ekinNames[i];
79  }
80  }
81 }
Log< level::Info, true > LogVerbatim
const CMSSteppingVerbose * steppingVerbose
std::vector< std::string > maxTimeNames
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
Definition: Activities.doc:4
std::vector< std::string > ekinNames
std::vector< std::string > ekinParticles
std::vector< double > ekinMins
std::vector< std::string > deadRegionNames
std::vector< double > maxTrackTimes

◆ ~Phase2SteppingAction()

Phase2SteppingAction::~Phase2SteppingAction ( )
overridedefault

Member Function Documentation

◆ initPointer()

bool Phase2SteppingAction::initPointer ( )
private

Definition at line 229 of file Phase2SteppingAction.cc.

References btl, deadRegionNames, deadRegions, ekinMins, ekinNames, ekinParticles, ekinPDG, ekinVolumes, mps_fire::i, maxTimeNames, maxTimeRegions, ndeadRegions, numberEkins, numberPart, numberTimes, FSQDQM_cfi::pvs, rname, and tracker.

Referenced by UserSteppingAction().

229  {
230  const G4PhysicalVolumeStore* pvs = G4PhysicalVolumeStore::GetInstance();
231  for (auto const& pvcite : *pvs) {
232  const G4String& pvname = pvcite->GetName();
233  if (pvname == "Tracker" || pvname == "tracker:Tracker_1") {
234  tracker = pvcite;
235  } else if (pvname == "CALO" || pvname == "caloBase:CALO_1") {
236  calo = pvcite;
237  } else if (pvname == "BarrelTimingLayer" || pvname == "btl:BarrelTimingLayer_1") {
238  btl = pvcite;
239  }
240  if (tracker && calo && btl)
241  break;
242  }
243  edm::LogVerbatim("SimG4CoreApplication")
244  << "Phase2SteppingAction: pointer for Tracker " << tracker << " and for Calo " << calo << " and for BTL " << btl;
245 
246  const G4LogicalVolumeStore* lvs = G4LogicalVolumeStore::GetInstance();
247  if (numberEkins > 0) {
248  ekinVolumes.resize(numberEkins, nullptr);
249  for (auto const& lvcite : *lvs) {
250  const G4String& lvname = lvcite->GetName();
251  for (unsigned int i = 0; i < numberEkins; ++i) {
252  if (lvname == (G4String)(ekinNames[i])) {
253  ekinVolumes[i] = lvcite;
254  break;
255  }
256  }
257  }
258  for (unsigned int i = 0; i < numberEkins; ++i) {
259  edm::LogVerbatim("SimG4CoreApplication") << ekinVolumes[i]->GetName() << " with pointer " << ekinVolumes[i];
260  }
261  }
262 
263  if (numberPart > 0) {
264  G4ParticleTable* theParticleTable = G4ParticleTable::GetParticleTable();
265  ekinPDG.resize(numberPart, 0);
266  for (unsigned int i = 0; i < numberPart; ++i) {
267  const G4ParticleDefinition* part = theParticleTable->FindParticle(ekinParticles[i]);
268  if (nullptr != part)
269  ekinPDG[i] = part->GetPDGEncoding();
270  edm::LogVerbatim("SimG4CoreApplication") << "Particle " << ekinParticles[i] << " with PDG code " << ekinPDG[i]
271  << " and KE cut off " << ekinMins[i] / MeV << " MeV";
272  }
273  }
274 
275  const G4RegionStore* rs = G4RegionStore::GetInstance();
276  if (numberTimes > 0) {
277  maxTimeRegions.resize(numberTimes, nullptr);
278  for (auto const& rcite : *rs) {
279  const G4String& rname = rcite->GetName();
280  for (unsigned int i = 0; i < numberTimes; ++i) {
281  if (rname == (G4String)(maxTimeNames[i])) {
282  maxTimeRegions[i] = rcite;
283  break;
284  }
285  }
286  }
287  }
288  if (ndeadRegions > 0) {
289  deadRegions.resize(ndeadRegions, nullptr);
290  for (auto const& rcite : *rs) {
291  const G4String& rname = rcite->GetName();
292  for (unsigned int i = 0; i < ndeadRegions; ++i) {
293  if (rname == (G4String)(deadRegionNames[i])) {
294  deadRegions[i] = rcite;
295  break;
296  }
297  }
298  }
299  }
300  return true;
301 }
Log< level::Info, true > LogVerbatim
std::vector< std::string > maxTimeNames
std::vector< std::string > ekinNames
const G4VPhysicalVolume * tracker
std::vector< int > ekinPDG
std::vector< G4LogicalVolume * > ekinVolumes
const G4VPhysicalVolume * btl
std::vector< std::string > ekinParticles
part
Definition: HCALResponse.h:20
std::vector< double > ekinMins
const G4String rname[NREG]
std::vector< std::string > deadRegionNames
std::vector< const G4Region * > maxTimeRegions
std::vector< const G4Region * > deadRegions
Definition: Common.h:9

◆ isInsideDeadRegion()

bool Phase2SteppingAction::isInsideDeadRegion ( const G4Region *  reg) const
inlineprivate

Definition at line 68 of file Phase2SteppingAction.h.

References deadRegions, and nano_mu_digi_cff::region.

Referenced by UserSteppingAction().

68  {
69  bool res = false;
70  for (auto& region : deadRegions) {
71  if (reg == region) {
72  res = true;
73  break;
74  }
75  }
76  return res;
77 }
Definition: Electron.h:6
std::vector< const G4Region * > deadRegions

◆ isLowEnergy()

bool Phase2SteppingAction::isLowEnergy ( const G4LogicalVolume *  lv,
const G4Track *  theTrack 
) const
private

Definition at line 212 of file Phase2SteppingAction.cc.

References ekinMins, ekinPDG, ekinVolumes, mps_fire::i, and numberPart.

Referenced by UserSteppingAction().

212  {
213  const double ekin = theTrack->GetKineticEnergy();
214  int pCode = theTrack->GetDefinition()->GetPDGEncoding();
215 
216  for (auto& vol : ekinVolumes) {
217  if (lv == vol) {
218  for (unsigned int i = 0; i < numberPart; ++i) {
219  if (pCode == ekinPDG[i]) {
220  return (ekin <= ekinMins[i]);
221  }
222  }
223  break;
224  }
225  }
226  return false;
227 }
std::vector< int > ekinPDG
std::vector< G4LogicalVolume * > ekinVolumes
std::vector< double > ekinMins

◆ isOutOfTimeWindow()

bool Phase2SteppingAction::isOutOfTimeWindow ( const G4Region *  reg,
const double &  time 
) const
inlineprivate

Definition at line 79 of file Phase2SteppingAction.h.

References mps_fire::i, maxTimeRegions, maxTrackTime, maxTrackTimes, numberTimes, and hcalRecHitTable_cff::time.

Referenced by UserSteppingAction().

79  {
80  double tofM = maxTrackTime;
81  for (unsigned int i = 0; i < numberTimes; ++i) {
82  if (reg == maxTimeRegions[i]) {
83  tofM = maxTrackTimes[i];
84  break;
85  }
86  }
87  return (time > tofM);
88 }
std::vector< const G4Region * > maxTimeRegions
std::vector< double > maxTrackTimes

◆ PrintKilledTrack()

void Phase2SteppingAction::PrintKilledTrack ( const G4Track *  aTrack,
const TrackStatus tst 
) const
private

Definition at line 303 of file Phase2SteppingAction.cc.

References rname, sDeadRegion, sEnergyDepNaN, sLowEnergy, sLowEnergyInVacuum, sNumberOfSteps, sOutOfTime, AlCaHLTBitMon_QueryRunRegistry::string, and sVeryForward.

Referenced by UserSteppingAction().

303  {
304  std::string vname = "";
305  std::string rname = "";
306  std::string typ = " ";
307  switch (tst) {
308  case sDeadRegion:
309  typ = " in dead region ";
310  break;
311  case sOutOfTime:
312  typ = " out of time window ";
313  break;
314  case sLowEnergy:
315  typ = " low energy limit ";
316  break;
317  case sLowEnergyInVacuum:
318  typ = " low energy limit in vacuum ";
319  break;
320  case sEnergyDepNaN:
321  typ = " energy deposition is NaN ";
322  break;
323  case sVeryForward:
324  typ = " very forward track ";
325  break;
326  case sNumberOfSteps:
327  typ = " too many steps ";
328  break;
329  default:
330  break;
331  }
332  G4VPhysicalVolume* pv = aTrack->GetNextVolume();
333  vname = pv->GetLogicalVolume()->GetName();
334  rname = pv->GetLogicalVolume()->GetRegion()->GetName();
335 
336  const double ekin = aTrack->GetKineticEnergy();
337  if (ekin < 2 * CLHEP::MeV) {
338  return;
339  }
340  edm::LogWarning("SimG4CoreApplication")
341  << "Track #" << aTrack->GetTrackID() << " StepN= " << aTrack->GetCurrentStepNumber() << " "
342  << aTrack->GetDefinition()->GetParticleName() << " E(MeV)=" << ekin / CLHEP::MeV
343  << " T(ns)=" << aTrack->GetGlobalTime() / CLHEP::ns << " is killed due to " << typ << "\n LV: " << vname << " ("
344  << rname << ") at " << aTrack->GetPosition() << " step(cm)=" << aTrack->GetStep()->GetStepLength() / CLHEP::cm;
345 }
const G4String rname[NREG]
Log< level::Warning, false > LogWarning

◆ UserSteppingAction()

void Phase2SteppingAction::UserSteppingAction ( const G4Step *  aStep)
final

Definition at line 83 of file Phase2SteppingAction.cc.

References funct::abs(), btl, calo, TrackInformation::crossedBoundary(), TrackInformation::idAtBTLentrance(), initialized, initPointer(), TrackInformation::isBTLlooper(), TrackInformation::isFromBTLtoT(), TrackInformation::isFromTtoBTL(), isInsideDeadRegion(), isLowEnergy(), isOutOfTimeWindow(), killBeamPipe, LogDebug, m_g4StepSignal, maxNumberOfSteps, maxTrackTimeForward, maxZCentralCMS, CMSSteppingVerbose::nextStep(), numberEkins, nWarnings, TrackInformation::Print(), PrintKilledTrack(), sAlive, sDeadRegion, TrackInformation::setBTLlooper(), TrackInformation::setCrossedBoundary(), TrackInformation::setFromBTLtoT(), TrackInformation::setFromTtoBTL(), TrackInformation::setIdAtBTLentrance(), sKilledByProcess, sLowEnergy, sLowEnergyInVacuum, sNumberOfSteps, sOutOfTime, steppingVerbose, sVeryForward, theCriticalDensity, theCriticalEnergyForVacuum, hcalRecHitTable_cff::time, and tracker.

83  {
84  if (!initialized) {
86  }
87 
88  m_g4StepSignal(aStep);
89 
90  G4Track* theTrack = aStep->GetTrack();
91  TrackStatus tstat = (theTrack->GetTrackStatus() == fAlive) ? sAlive : sKilledByProcess;
92 
93  if (theTrack->GetKineticEnergy() < 0.0) {
94  if (nWarnings < 2) {
95  ++nWarnings;
96  edm::LogWarning("SimG4CoreApplication")
97  << "Phase2SteppingAction::UserPhase2SteppingAction: Track #" << theTrack->GetTrackID() << " "
98  << theTrack->GetDefinition()->GetParticleName() << " Ekin(MeV)= " << theTrack->GetKineticEnergy() / MeV;
99  }
100  theTrack->SetKineticEnergy(0.0);
101  }
102 
103  const G4StepPoint* preStep = aStep->GetPreStepPoint();
104  const G4StepPoint* postStep = aStep->GetPostStepPoint();
105 
106  // the track is killed by the process
107  if (tstat == sKilledByProcess) {
108  if (nullptr != steppingVerbose) {
109  steppingVerbose->nextStep(aStep, fpSteppingManager, false);
110  }
111  return;
112  }
113 
114  if (sAlive == tstat && theTrack->GetCurrentStepNumber() > maxNumberOfSteps) {
115  tstat = sNumberOfSteps;
116  if (nWarnings < 5) {
117  ++nWarnings;
118  edm::LogWarning("SimG4CoreApplication")
119  << "Track #" << theTrack->GetTrackID() << " " << theTrack->GetDefinition()->GetParticleName()
120  << " E(MeV)= " << preStep->GetKineticEnergy() / MeV << " Nstep= " << theTrack->GetCurrentStepNumber()
121  << " is killed due to limit on number of steps;/n PV: " << preStep->GetPhysicalVolume()->GetName() << " at "
122  << theTrack->GetPosition() << " StepLen(mm)= " << aStep->GetStepLength();
123  }
124  }
125  const double time = theTrack->GetGlobalTime();
126 
127  // check Z-coordinate
128  if (sAlive == tstat && std::abs(theTrack->GetPosition().z()) >= maxZCentralCMS) {
130  }
131 
132  // check G4Region
133  if (sAlive == tstat) {
134  // next logical volume and next region
135  const G4LogicalVolume* lv = postStep->GetPhysicalVolume()->GetLogicalVolume();
136  const G4Region* theRegion = lv->GetRegion();
137 
138  // kill in dead regions
139  if (isInsideDeadRegion(theRegion))
140  tstat = sDeadRegion;
141 
142  // kill out of time
143  if (sAlive == tstat) {
144  if (isOutOfTimeWindow(theRegion, time))
145  tstat = sOutOfTime;
146  }
147 
148  // kill low-energy in volumes on demand
149  if (sAlive == tstat && numberEkins > 0) {
150  if (isLowEnergy(lv, theTrack))
151  tstat = sLowEnergy;
152  }
153 
154  // kill low-energy in vacuum
155  if (sAlive == tstat && killBeamPipe) {
156  if (theTrack->GetKineticEnergy() < theCriticalEnergyForVacuum &&
157  theTrack->GetDefinition()->GetPDGCharge() != 0.0 && lv->GetMaterial()->GetDensity() <= theCriticalDensity) {
158  tstat = sLowEnergyInVacuum;
159  }
160  }
161  }
162  // check transition tracker/btl and tracker/calo
163  bool isKilled = false;
164  if (sAlive == tstat || sVeryForward == tstat) {
165  // store TrackInformation about transition from one envelope to another
166  if (preStep->GetPhysicalVolume() == tracker && postStep->GetPhysicalVolume() == btl) {
167  // store transition tracker -> BTL only for tracks entering BTL for the first time
168  TrackInformation* trkinfo = static_cast<TrackInformation*>(theTrack->GetUserInformation());
169  if (!trkinfo->isFromTtoBTL() && !trkinfo->isFromBTLtoT()) {
170  trkinfo->setFromTtoBTL();
171  trkinfo->setIdAtBTLentrance(theTrack->GetTrackID());
172 #ifdef DebugLog
173  LogDebug("SimG4CoreApplication") << "Setting flag for Tracker -> BTL " << trkinfo->isFromTtoBTL()
174  << " IdAtBTLentrance = " << trkinfo->idAtBTLentrance();
175 #endif
176  } else {
177  trkinfo->setBTLlooper();
178  trkinfo->setIdAtBTLentrance(theTrack->GetTrackID());
179 #ifdef DebugLog
180  LogDebug("SimG4CoreApplication") << "Setting flag for BTL looper " << trkinfo->isBTLlooper();
181  trkinfo->Print();
182 #endif
183  }
184  } else if (preStep->GetPhysicalVolume() == btl && postStep->GetPhysicalVolume() == tracker) {
185  // store transition BTL -> tracker
186  TrackInformation* trkinfo = static_cast<TrackInformation*>(theTrack->GetUserInformation());
187  if (!trkinfo->isFromBTLtoT()) {
188  trkinfo->setFromBTLtoT();
189 #ifdef DebugLog
190  LogDebug("SimG4CoreApplication") << "Setting flag for BTL -> Tracker " << trkinfo->isFromBTLtoT();
191 #endif
192  }
193  } else if (preStep->GetPhysicalVolume() == tracker && postStep->GetPhysicalVolume() == calo) {
194  // store transition tracker -> calo
195  TrackInformation* trkinfo = static_cast<TrackInformation*>(theTrack->GetUserInformation());
196  if (!trkinfo->crossedBoundary()) {
197  trkinfo->setCrossedBoundary(theTrack);
198  }
199  }
200  } else {
201  theTrack->SetTrackStatus(fStopAndKill);
202  isKilled = true;
203 #ifdef DebugLog
204  PrintKilledTrack(theTrack, tstat);
205 #endif
206  }
207  if (nullptr != steppingVerbose) {
208  steppingVerbose->nextStep(aStep, fpSteppingManager, isKilled);
209  }
210 }
bool crossedBoundary() const
const CMSSteppingVerbose * steppingVerbose
bool isOutOfTimeWindow(const G4Region *reg, const double &time) const
SimActivityRegistry::G4StepSignal m_g4StepSignal
const G4VPhysicalVolume * calo
const G4VPhysicalVolume * tracker
void setIdAtBTLentrance(int id)
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
const G4VPhysicalVolume * btl
bool isFromBTLtoT() const
void Print() const override
void PrintKilledTrack(const G4Track *, const TrackStatus &) const
bool isBTLlooper() const
bool isLowEnergy(const G4LogicalVolume *, const G4Track *) const
int idAtBTLentrance() const
bool isInsideDeadRegion(const G4Region *reg) const
void nextStep(const G4Step *, const G4SteppingManager *ptr, bool isKilled) const
bool isFromTtoBTL() const
Log< level::Warning, false > LogWarning
void setCrossedBoundary(const G4Track *track)
TrackStatus
#define LogDebug(id)

Member Data Documentation

◆ btl

const G4VPhysicalVolume* Phase2SteppingAction::btl {nullptr}
private

Definition at line 40 of file Phase2SteppingAction.h.

Referenced by initPointer(), and UserSteppingAction().

◆ calo

const G4VPhysicalVolume* Phase2SteppingAction::calo {nullptr}
private

Definition at line 39 of file Phase2SteppingAction.h.

Referenced by UserSteppingAction().

◆ deadRegionNames

std::vector<std::string> Phase2SteppingAction::deadRegionNames
private

Definition at line 61 of file Phase2SteppingAction.h.

Referenced by initPointer(), and Phase2SteppingAction().

◆ deadRegions

std::vector<const G4Region*> Phase2SteppingAction::deadRegions
private

Definition at line 63 of file Phase2SteppingAction.h.

Referenced by initPointer(), and isInsideDeadRegion().

◆ ekinMins

std::vector<double> Phase2SteppingAction::ekinMins
private

Definition at line 59 of file Phase2SteppingAction.h.

Referenced by initPointer(), isLowEnergy(), and Phase2SteppingAction().

◆ ekinNames

std::vector<std::string> Phase2SteppingAction::ekinNames
private

Definition at line 60 of file Phase2SteppingAction.h.

Referenced by initPointer(), and Phase2SteppingAction().

◆ ekinParticles

std::vector<std::string> Phase2SteppingAction::ekinParticles
private

Definition at line 60 of file Phase2SteppingAction.h.

Referenced by initPointer(), and Phase2SteppingAction().

◆ ekinPDG

std::vector<int> Phase2SteppingAction::ekinPDG
private

Definition at line 65 of file Phase2SteppingAction.h.

Referenced by initPointer(), and isLowEnergy().

◆ ekinVolumes

std::vector<G4LogicalVolume*> Phase2SteppingAction::ekinVolumes
private

Definition at line 64 of file Phase2SteppingAction.h.

Referenced by initPointer(), and isLowEnergy().

◆ hasWatcher

bool Phase2SteppingAction::hasWatcher
private

Definition at line 57 of file Phase2SteppingAction.h.

◆ initialized

bool Phase2SteppingAction::initialized {false}
private

Definition at line 55 of file Phase2SteppingAction.h.

Referenced by UserSteppingAction().

◆ killBeamPipe

bool Phase2SteppingAction::killBeamPipe {false}
private

Definition at line 56 of file Phase2SteppingAction.h.

Referenced by Phase2SteppingAction(), and UserSteppingAction().

◆ m_g4StepSignal

SimActivityRegistry::G4StepSignal Phase2SteppingAction::m_g4StepSignal

Definition at line 27 of file Phase2SteppingAction.h.

Referenced by RunManagerMTWorker::Connect(), and UserSteppingAction().

◆ maxNumberOfSteps

G4int Phase2SteppingAction::maxNumberOfSteps
private

Definition at line 53 of file Phase2SteppingAction.h.

Referenced by Phase2SteppingAction(), and UserSteppingAction().

◆ maxTimeNames

std::vector<std::string> Phase2SteppingAction::maxTimeNames
private

Definition at line 60 of file Phase2SteppingAction.h.

Referenced by initPointer(), and Phase2SteppingAction().

◆ maxTimeRegions

std::vector<const G4Region*> Phase2SteppingAction::maxTimeRegions
private

Definition at line 62 of file Phase2SteppingAction.h.

Referenced by initPointer(), and isOutOfTimeWindow().

◆ maxTrackTime

double Phase2SteppingAction::maxTrackTime
private

Definition at line 44 of file Phase2SteppingAction.h.

Referenced by isOutOfTimeWindow(), and Phase2SteppingAction().

◆ maxTrackTimeForward

double Phase2SteppingAction::maxTrackTimeForward
private

Definition at line 45 of file Phase2SteppingAction.h.

Referenced by Phase2SteppingAction(), and UserSteppingAction().

◆ maxTrackTimes

std::vector<double> Phase2SteppingAction::maxTrackTimes
private

Definition at line 59 of file Phase2SteppingAction.h.

Referenced by isOutOfTimeWindow(), and Phase2SteppingAction().

◆ maxZCentralCMS

double Phase2SteppingAction::maxZCentralCMS
private

Definition at line 46 of file Phase2SteppingAction.h.

Referenced by Phase2SteppingAction(), and UserSteppingAction().

◆ ndeadRegions

unsigned int Phase2SteppingAction::ndeadRegions
private

Definition at line 51 of file Phase2SteppingAction.h.

Referenced by initPointer(), and Phase2SteppingAction().

◆ numberEkins

unsigned int Phase2SteppingAction::numberEkins
private

Definition at line 49 of file Phase2SteppingAction.h.

Referenced by initPointer(), Phase2SteppingAction(), and UserSteppingAction().

◆ numberPart

unsigned int Phase2SteppingAction::numberPart
private

Definition at line 50 of file Phase2SteppingAction.h.

Referenced by initPointer(), isLowEnergy(), and Phase2SteppingAction().

◆ numberTimes

unsigned int Phase2SteppingAction::numberTimes
private

Definition at line 48 of file Phase2SteppingAction.h.

Referenced by initPointer(), isOutOfTimeWindow(), and Phase2SteppingAction().

◆ nWarnings

unsigned int Phase2SteppingAction::nWarnings {0}
private

Definition at line 52 of file Phase2SteppingAction.h.

Referenced by UserSteppingAction().

◆ steppingVerbose

const CMSSteppingVerbose* Phase2SteppingAction::steppingVerbose
private

Definition at line 41 of file Phase2SteppingAction.h.

Referenced by UserSteppingAction().

◆ theCriticalDensity

double Phase2SteppingAction::theCriticalDensity
private

Definition at line 43 of file Phase2SteppingAction.h.

Referenced by Phase2SteppingAction(), and UserSteppingAction().

◆ theCriticalEnergyForVacuum

double Phase2SteppingAction::theCriticalEnergyForVacuum
private

Definition at line 42 of file Phase2SteppingAction.h.

Referenced by Phase2SteppingAction(), and UserSteppingAction().

◆ tracker

const G4VPhysicalVolume* Phase2SteppingAction::tracker {nullptr}
private

Definition at line 38 of file Phase2SteppingAction.h.

Referenced by initPointer(), and UserSteppingAction().