CMS 3D CMS Logo

StackingAction.cc
Go to the documentation of this file.
6 
8 
9 #include "G4VProcess.hh"
10 #include "G4EmProcessSubType.hh"
11 #include "G4LogicalVolumeStore.hh"
12 #include "G4RegionStore.hh"
13 #include "Randomize.hh"
14 #include "G4SystemOfUnits.hh"
15 #include "G4VSolid.hh"
16 #include "G4TransportationManager.hh"
17 
19  : trackAction(trka), steppingVerbose(sv) {
20  trackNeutrino = p.getParameter<bool>("TrackNeutrino");
21  killHeavy = p.getParameter<bool>("KillHeavy");
22  killGamma = p.getParameter<bool>("KillGamma");
23  kmaxGamma = p.getParameter<double>("GammaThreshold") * CLHEP::MeV;
24  kmaxIon = p.getParameter<double>("IonThreshold") * CLHEP::MeV;
25  kmaxProton = p.getParameter<double>("ProtonThreshold") * CLHEP::MeV;
26  kmaxNeutron = p.getParameter<double>("NeutronThreshold") * CLHEP::MeV;
27  killDeltaRay = p.getParameter<bool>("KillDeltaRay");
28  limitEnergyForVacuum = p.getParameter<double>("CriticalEnergyForVacuum") * CLHEP::MeV;
29  maxTrackTime = p.getParameter<double>("MaxTrackTime") * ns;
30  maxTrackTimeForward = p.getParameter<double>("MaxTrackTimeForward") * ns;
31  maxZCentralCMS = p.getParameter<double>("MaxZCentralCMS") * CLHEP::m;
32  maxTrackTimes = p.getParameter<std::vector<double> >("MaxTrackTimes");
33  maxTimeNames = p.getParameter<std::vector<std::string> >("MaxTimeNames");
34  deadRegionNames = p.getParameter<std::vector<std::string> >("DeadRegions");
35  savePDandCinAll = p.getUntrackedParameter<bool>("SaveAllPrimaryDecayProductsAndConversions", true);
36  savePDandCinTracker = p.getUntrackedParameter<bool>("SavePrimaryDecayProductsAndConversionsInTracker", false);
37  savePDandCinCalo = p.getUntrackedParameter<bool>("SavePrimaryDecayProductsAndConversionsInCalo", false);
38  savePDandCinMuon = p.getUntrackedParameter<bool>("SavePrimaryDecayProductsAndConversionsInMuon", false);
39  saveFirstSecondary = p.getUntrackedParameter<bool>("SaveFirstLevelSecondary", false);
40  killInCalo = false;
41  killInCaloEfH = false;
42 
43  // Russian Roulette
44  regionEcal = nullptr;
45  regionHcal = nullptr;
46  regionMuonIron = nullptr;
47  regionPreShower = nullptr;
48  regionCastor = nullptr;
49  regionWorld = nullptr;
50 
51  gRusRoEnerLim = p.getParameter<double>("RusRoGammaEnergyLimit") * CLHEP::MeV;
52  nRusRoEnerLim = p.getParameter<double>("RusRoNeutronEnergyLimit") * CLHEP::MeV;
53 
54  gRusRoEcal = p.getParameter<double>("RusRoEcalGamma");
55  gRusRoHcal = p.getParameter<double>("RusRoHcalGamma");
56  gRusRoMuonIron = p.getParameter<double>("RusRoMuonIronGamma");
57  gRusRoPreShower = p.getParameter<double>("RusRoPreShowerGamma");
58  gRusRoCastor = p.getParameter<double>("RusRoCastorGamma");
59  gRusRoWorld = p.getParameter<double>("RusRoWorldGamma");
60 
61  nRusRoEcal = p.getParameter<double>("RusRoEcalNeutron");
62  nRusRoHcal = p.getParameter<double>("RusRoHcalNeutron");
63  nRusRoMuonIron = p.getParameter<double>("RusRoMuonIronNeutron");
64  nRusRoPreShower = p.getParameter<double>("RusRoPreShowerNeutron");
65  nRusRoCastor = p.getParameter<double>("RusRoCastorNeutron");
66  nRusRoWorld = p.getParameter<double>("RusRoWorldNeutron");
67 
68  gRRactive = false;
69  nRRactive = false;
70  if (gRusRoEnerLim > 0.0 && (gRusRoEcal < 1.0 || gRusRoHcal < 1.0 || gRusRoMuonIron < 1.0 || gRusRoPreShower < 1.0 ||
71  gRusRoCastor < 1.0 || gRusRoWorld < 1.0)) {
72  gRRactive = true;
73  }
74  if (nRusRoEnerLim > 0.0 && (nRusRoEcal < 1.0 || nRusRoHcal < 1.0 || nRusRoMuonIron < 1.0 || nRusRoPreShower < 1.0 ||
75  nRusRoCastor < 1.0 || nRusRoWorld < 1.0)) {
76  nRRactive = true;
77  }
78 
79  if (p.exists("TestKillingOptions")) {
80  killInCalo = (p.getParameter<edm::ParameterSet>("TestKillingOptions")).getParameter<bool>("KillInCalo");
81  killInCaloEfH = (p.getParameter<edm::ParameterSet>("TestKillingOptions")).getParameter<bool>("KillInCaloEfH");
82  edm::LogWarning("SimG4CoreApplication")
83  << " *** Activating special test killing options in StackingAction \n"
84  << " *** Kill secondaries in Calorimetetrs volume = " << killInCalo << "\n"
85  << " *** Kill electromagnetic secondaries from hadrons in Calorimeters volume= " << killInCaloEfH;
86  }
87 
88  initPointer();
89  newTA = new NewTrackAction();
90 
91  edm::LogVerbatim("SimG4CoreApplication")
92  << "StackingAction initiated with"
93  << " flag for saving decay products in "
94  << " Tracker: " << savePDandCinTracker << " in Calo: " << savePDandCinCalo << " in Muon: " << savePDandCinMuon
95  << " everywhere: " << savePDandCinAll << "\n saveFirstSecondary"
96  << ": " << saveFirstSecondary << " Tracking neutrino flag: " << trackNeutrino
97  << " Kill Delta Ray flag: " << killDeltaRay << " Kill hadrons/ions flag: " << killHeavy
98  << " MaxZCentralCMS = " << maxZCentralCMS / CLHEP::m << " m"
99  << " MaxTrackTimeForward = " << maxTrackTimeForward / CLHEP::ns << " ns";
100 
101  if (killHeavy) {
102  edm::LogVerbatim("SimG4CoreApplication") << "StackingAction kill protons below " << kmaxProton / CLHEP::MeV
103  << " MeV, neutrons below " << kmaxNeutron / CLHEP::MeV << " MeV and ions"
104  << " below " << kmaxIon / CLHEP::MeV << " MeV";
105  }
107 
108  edm::LogVerbatim("SimG4CoreApplication") << "StackingAction kill tracks with "
109  << "time larger than " << maxTrackTime / CLHEP::ns << " ns ";
110  numberTimes = maxTimeNames.size();
111  if (0 < numberTimes) {
112  for (unsigned int i = 0; i < numberTimes; ++i) {
113  edm::LogVerbatim("SimG4CoreApplication")
114  << " MaxTrackTime for " << maxTimeNames[i] << " is " << maxTrackTimes[i] << " ns ";
115  maxTrackTimes[i] *= CLHEP::ns;
116  }
117  }
118  if (limitEnergyForVacuum > 0.0) {
119  edm::LogVerbatim("SimG4CoreApplication")
120  << "StackingAction LowDensity regions - kill if E < " << limitEnergyForVacuum / CLHEP::MeV << " MeV";
121  printRegions(lowdensRegions, "LowDensity");
122  }
123  if (deadRegions.size() > 0.0) {
124  edm::LogVerbatim("SimG4CoreApplication") << "StackingAction Dead regions - kill all secondaries ";
125  printRegions(deadRegions, "Dead");
126  }
127  if (gRRactive) {
128  edm::LogVerbatim("SimG4CoreApplication")
129  << "StackingAction: "
130  << "Russian Roulette for gamma Elimit(MeV)= " << gRusRoEnerLim / CLHEP::MeV << "\n"
131  << " ECAL Prob= " << gRusRoEcal << "\n"
132  << " HCAL Prob= " << gRusRoHcal << "\n"
133  << " MuonIron Prob= " << gRusRoMuonIron << "\n"
134  << " PreShower Prob= " << gRusRoPreShower << "\n"
135  << " CASTOR Prob= " << gRusRoCastor << "\n"
136  << " World Prob= " << gRusRoWorld;
137  }
138  if (nRRactive) {
139  edm::LogVerbatim("SimG4CoreApplication")
140  << "StackingAction: "
141  << "Russian Roulette for neutron Elimit(MeV)= " << nRusRoEnerLim / CLHEP::MeV << "\n"
142  << " ECAL Prob= " << nRusRoEcal << "\n"
143  << " HCAL Prob= " << nRusRoHcal << "\n"
144  << " MuonIron Prob= " << nRusRoMuonIron << "\n"
145  << " PreShower Prob= " << nRusRoPreShower << "\n"
146  << " CASTOR Prob= " << nRusRoCastor << "\n"
147  << " World Prob= " << nRusRoWorld;
148  }
149 
150  if (savePDandCinTracker) {
151  edm::LogVerbatim("SimG4CoreApplication") << "StackingAction Tracker regions: ";
152  printRegions(trackerRegions, "Tracker");
153  }
154  if (savePDandCinCalo) {
155  edm::LogVerbatim("SimG4CoreApplication") << "StackingAction Calo regions: ";
156  printRegions(caloRegions, "Calo");
157  }
158  if (savePDandCinMuon) {
159  edm::LogVerbatim("SimG4CoreApplication") << "StackingAction Muon regions: ";
160  printRegions(muonRegions, "Muon");
161  }
162  worldSolid = G4TransportationManager::GetTransportationManager()
163  ->GetNavigatorForTracking()
164  ->GetWorldVolume()
165  ->GetLogicalVolume()
166  ->GetSolid();
167 }
168 
170 
171 G4ClassificationOfNewTrack StackingAction::ClassifyNewTrack(const G4Track* aTrack) {
172  // G4 interface part
173  G4ClassificationOfNewTrack classification = fUrgent;
174  const int pdg = aTrack->GetDefinition()->GetPDGEncoding();
175  const int abspdg = std::abs(pdg);
176 
177  // primary
178  if (aTrack->GetCreatorProcess() == nullptr || aTrack->GetParentID() == 0) {
179  if (!trackNeutrino && (abspdg == 12 || abspdg == 14 || abspdg == 16 || abspdg == 18)) {
180  classification = fKill;
181  } else if (worldSolid->Inside(aTrack->GetPosition()) == kOutside) {
182  classification = fKill;
183  } else {
184  newTA->primary(aTrack);
185  }
186  } else {
187  // secondary
188  const G4Region* reg = aTrack->GetVolume()->GetLogicalVolume()->GetRegion();
189  const double time = aTrack->GetGlobalTime();
190 
191  // definetly killed tracks
192  if (aTrack->GetTrackStatus() == fStopAndKill) {
193  classification = fKill;
194  } else if (!trackNeutrino && (abspdg == 12 || abspdg == 14 || abspdg == 16 || abspdg == 18)) {
195  classification = fKill;
196 
197  } else if (std::abs(aTrack->GetPosition().z()) >= maxZCentralCMS) {
198  // very forward secondary
199  if (time > maxTrackTimeForward) {
200  classification = fKill;
201  } else {
202  const G4Track* mother = trackAction->geant4Track();
203  newTA->secondary(aTrack, *mother, 0);
204  }
205 
206  } else if (isItOutOfTimeWindow(reg, time)) {
207  // time window check
208  classification = fKill;
209 
210  } else {
211  // potentially good for tracking
212  const double ke = aTrack->GetKineticEnergy();
213 
214  // kill tracks in specific regions
215  if (isThisRegion(reg, deadRegions)) {
216  classification = fKill;
217  }
218  if (classification != fKill && ke <= limitEnergyForVacuum && isThisRegion(reg, lowdensRegions)) {
219  classification = fKill;
220 
221  } else if (classification != fKill) {
222  // very low-energy gamma
223  if (pdg == 22 && killGamma && ke < kmaxGamma) {
224  classification = fKill;
225  }
226 
227  // specific track killing - not for production
228  if (killExtra && classification != fKill) {
229  if (killHeavy && classification != fKill) {
230  if (((pdg / 1000000000 == 1) && (((pdg / 10000) % 100) > 0) && (((pdg / 10) % 100) > 0) &&
231  (ke < kmaxIon)) ||
232  ((pdg == 2212) && (ke < kmaxProton)) || ((pdg == 2112) && (ke < kmaxNeutron))) {
233  classification = fKill;
234  }
235  }
236 
237  if (killDeltaRay && classification != fKill &&
238  aTrack->GetCreatorProcess()->GetProcessSubType() == fIonisation) {
239  classification = fKill;
240  }
241  if (killInCalo && classification != fKill && isThisRegion(reg, caloRegions)) {
242  classification = fKill;
243  }
244  if (killInCaloEfH && classification != fKill) {
245  int pdgMother = std::abs(trackAction->geant4Track()->GetDefinition()->GetPDGEncoding());
246  if ((pdg == 22 || abspdg == 11) && pdgMother != 11 && pdgMother != 22 && isThisRegion(reg, caloRegions)) {
247  classification = fKill;
248  }
249  }
250  }
251 
252  // Russian roulette && MC truth
253  if (classification != fKill) {
254  const G4Track* mother = trackAction->geant4Track();
255  int flag = 0;
256  if (savePDandCinAll) {
257  flag = isItPrimaryDecayProductOrConversion(aTrack, *mother);
258  } else {
262  flag = isItPrimaryDecayProductOrConversion(aTrack, *mother);
263  }
264  }
265  if (saveFirstSecondary && 0 == flag) {
266  flag = isItFromPrimary(*mother, flag);
267  }
268 
269  // Russian roulette
270  if (2112 == pdg || 22 == pdg) {
271  double currentWeight = aTrack->GetWeight();
272 
273  if (1.0 >= currentWeight) {
274  double prob = 1.0;
275  double elim = 0.0;
276 
277  // neutron
278  if (nRRactive && pdg == 2112) {
279  elim = nRusRoEnerLim;
280  if (reg == regionEcal) {
281  prob = nRusRoEcal;
282  } else if (reg == regionHcal) {
283  prob = nRusRoHcal;
284  } else if (reg == regionMuonIron) {
286  } else if (reg == regionPreShower) {
288  } else if (reg == regionCastor) {
289  prob = nRusRoCastor;
290  } else if (reg == regionWorld) {
291  prob = nRusRoWorld;
292  }
293 
294  // gamma
295  } else if (gRRactive && pdg == 22) {
296  elim = gRusRoEnerLim;
297  if (reg == regionEcal || reg == regionPreShower) {
298  if (rrApplicable(aTrack, *mother)) {
299  if (reg == regionEcal) {
300  prob = gRusRoEcal;
301  } else {
303  }
304  }
305  } else {
306  if (reg == regionHcal) {
307  prob = gRusRoHcal;
308  } else if (reg == regionMuonIron) {
310  } else if (reg == regionCastor) {
311  prob = gRusRoCastor;
312  } else if (reg == regionWorld) {
313  prob = gRusRoWorld;
314  }
315  }
316  }
317  if (prob < 1.0 && aTrack->GetKineticEnergy() < elim) {
318  if (G4UniformRand() < prob) {
319  const_cast<G4Track*>(aTrack)->SetWeight(currentWeight / prob);
320  } else {
321  classification = fKill;
322  }
323  }
324  }
325  }
326  if (classification != fKill) {
327  newTA->secondary(aTrack, *mother, flag);
328  }
329  LogDebug("SimG4CoreApplication")
330  << "StackingAction:Classify Track " << aTrack->GetTrackID() << " Parent " << aTrack->GetParentID()
331  << " Type " << aTrack->GetDefinition()->GetParticleName() << " K.E. " << aTrack->GetKineticEnergy() / MeV
332  << " MeV from process/subprocess " << aTrack->GetCreatorProcess()->GetProcessType() << "|"
333  << aTrack->GetCreatorProcess()->GetProcessSubType() << " as " << classification << " Flag " << flag;
334  }
335  }
336  }
337  }
338  if (nullptr != steppingVerbose) {
339  steppingVerbose->StackFilled(aTrack, (classification == fKill));
340  }
341  return classification;
342 }
343 
345 
347 
349  // prepare region vector
350  const unsigned int num = maxTimeNames.size();
351  maxTimeRegions.resize(num, nullptr);
352 
353  // Russian roulette
354  const std::vector<G4Region*>* rs = G4RegionStore::GetInstance();
355 
356  for (auto& reg : *rs) {
357  const G4String& rname = reg->GetName();
358  if ((gRusRoEcal < 1.0 || nRusRoEcal < 1.0) && rname == "EcalRegion") {
359  regionEcal = reg;
360  }
361  if ((gRusRoHcal < 1.0 || nRusRoHcal < 1.0) && rname == "HcalRegion") {
362  regionHcal = reg;
363  }
364  if ((gRusRoMuonIron < 1.0 || nRusRoMuonIron < 1.0) && rname == "MuonIron") {
365  regionMuonIron = reg;
366  }
367  if ((gRusRoPreShower < 1.0 || nRusRoPreShower < 1.0) && rname == "PreshowerRegion") {
368  regionPreShower = reg;
369  }
370  if ((gRusRoCastor < 1.0 || nRusRoCastor < 1.0) && rname == "CastorRegion") {
371  regionCastor = reg;
372  }
373  if ((gRusRoWorld < 1.0 || nRusRoWorld < 1.0) && rname == "DefaultRegionForTheWorld") {
374  regionWorld = reg;
375  }
376 
377  // time limits
378  for (unsigned int i = 0; i < num; ++i) {
379  if (rname == (G4String)(maxTimeNames[i])) {
380  maxTimeRegions[i] = reg;
381  break;
382  }
383  }
384  //
385  if (savePDandCinTracker &&
386  (rname == "BeamPipe" || rname == "BeamPipeVacuum" || rname == "TrackerPixelSensRegion" ||
387  rname == "TrackerPixelDeadRegion" || rname == "TrackerDeadRegion" || rname == "TrackerSensRegion" ||
388  rname == "FastTimerRegion" || rname == "FastTimerRegionSensBTL" || rname == "FastTimerRegionSensETL")) {
389  trackerRegions.push_back(reg);
390  }
391  if (savePDandCinCalo && (rname == "HcalRegion" || rname == "EcalRegion" || rname == "PreshowerSensRegion" ||
392  rname == "PreshowerRegion" || rname == "APDRegion" || rname == "HGCalRegion")) {
393  caloRegions.push_back(reg);
394  }
395  if (savePDandCinMuon && (rname == "MuonChamber" || rname == "MuonSensitive_RPC" || rname == "MuonIron" ||
396  rname == "Muon" || rname == "MuonSensitive_DT-CSC")) {
397  muonRegions.push_back(reg);
398  }
399  if (rname == "BeamPipeOutside" || rname == "BeamPipeVacuum") {
400  lowdensRegions.push_back(reg);
401  }
402  for (auto& dead : deadRegionNames) {
403  if (rname == (G4String)(dead)) {
404  deadRegions.push_back(reg);
405  }
406  }
407  }
408 }
409 
410 bool StackingAction::isThisRegion(const G4Region* reg, std::vector<const G4Region*>& regions) const {
411  bool flag = false;
412  for (auto& region : regions) {
413  if (reg == region) {
414  flag = true;
415  break;
416  }
417  }
418  return flag;
419 }
420 
421 int StackingAction::isItPrimaryDecayProductOrConversion(const G4Track* aTrack, const G4Track& mother) const {
422  int flag = 0;
423  const TrackInformation& motherInfo(extractor(mother));
424  // Check whether mother is a primary
425  if (motherInfo.isPrimary()) {
426  if (aTrack->GetCreatorProcess()->GetProcessType() == fDecay) {
427  flag = 1;
428  } else if (aTrack->GetCreatorProcess()->GetProcessSubType() == fGammaConversion) {
429  flag = 2;
430  }
431  }
432  return flag;
433 }
434 
435 bool StackingAction::rrApplicable(const G4Track* aTrack, const G4Track& mother) const {
436  const TrackInformation& motherInfo(extractor(mother));
437 
438  // Check whether mother is gamma, e+, e-
439  const int genID = motherInfo.genParticlePID();
440  return (22 != genID && 11 != std::abs(genID));
441 }
442 
443 int StackingAction::isItFromPrimary(const G4Track& mother, int flagIn) const {
444  int flag = flagIn;
445  if (flag != 1) {
446  const TrackInformation& motherInfo(extractor(mother));
447  if (motherInfo.isPrimary()) {
448  flag = 3;
449  }
450  }
451  return flag;
452 }
453 
454 bool StackingAction::isItOutOfTimeWindow(const G4Region* reg, const double& t) const {
455  double tofM = maxTrackTime;
456  for (unsigned int i = 0; i < numberTimes; ++i) {
457  if (reg == maxTimeRegions[i]) {
458  tofM = maxTrackTimes[i];
459  break;
460  }
461  }
462  return (t > tofM);
463 }
464 
465 void StackingAction::printRegions(const std::vector<const G4Region*>& reg, const std::string& word) const {
466  for (unsigned int i = 0; i < reg.size(); ++i) {
467  edm::LogVerbatim("SimG4CoreApplication")
468  << " StackingAction: " << word << "Region " << i << ". " << reg[i]->GetName();
469  }
470 }
StackingAction::killGamma
bool killGamma
Definition: StackingAction.h:52
StackingAction::isItPrimaryDecayProductOrConversion
int isItPrimaryDecayProductOrConversion(const G4Track *, const G4Track &) const
Definition: StackingAction.cc:421
StackingAction::nRusRoMuonIron
double nRusRoMuonIron
Definition: StackingAction.h:95
mps_fire.i
i
Definition: mps_fire.py:428
TrackingAction.h
StackingAction::worldSolid
G4VSolid * worldSolid
Definition: StackingAction.h:71
StackingAction::deadRegions
std::vector< const G4Region * > deadRegions
Definition: StackingAction.h:69
StackingAction::deadRegionNames
std::vector< std::string > deadRegionNames
Definition: StackingAction.h:62
MessageLogger.h
StackingAction::StackingAction
StackingAction(const TrackingAction *, const edm::ParameterSet &ps, const CMSSteppingVerbose *)
Definition: StackingAction.cc:18
StackingAction::savePDandCinMuon
bool savePDandCinMuon
Definition: StackingAction.h:47
StackingAction::maxZCentralCMS
double maxZCentralCMS
Definition: StackingAction.h:58
StackingAction::nRusRoEcal
double nRusRoEcal
Definition: StackingAction.h:91
StackingAction::killHeavy
bool killHeavy
Definition: StackingAction.h:50
StackingAction::gRRactive
bool gRRactive
Definition: StackingAction.h:103
StackingAction::nRusRoPreShower
double nRusRoPreShower
Definition: StackingAction.h:97
StackingAction::savePDandCinCalo
bool savePDandCinCalo
Definition: StackingAction.h:46
StackingAction::gRusRoWorld
double gRusRoWorld
Definition: StackingAction.h:100
StackingAction::nRusRoCastor
double nRusRoCastor
Definition: StackingAction.h:99
StackingAction::~StackingAction
~StackingAction() override
Definition: StackingAction.cc:169
protons_cff.time
time
Definition: protons_cff.py:35
MeV
const double MeV
CMSSteppingVerbose
Definition: CMSSteppingVerbose.h:25
StackingAction::newTA
NewTrackAction * newTA
Definition: StackingAction.h:74
TrackingAction::geant4Track
const G4Track * geant4Track() const
Definition: TrackingAction.h:25
StackingAction::savePDandCinAll
bool savePDandCinAll
Definition: StackingAction.h:48
StackingAction::isItOutOfTimeWindow
bool isItOutOfTimeWindow(const G4Region *, const double &) const
Definition: StackingAction.cc:454
TrackInformation::genParticlePID
int genParticlePID() const
Definition: TrackInformation.h:79
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
StackingAction::maxTrackTimeForward
double maxTrackTimeForward
Definition: StackingAction.h:57
StackingAction::muonRegions
std::vector< const G4Region * > muonRegions
Definition: StackingAction.h:66
StackingAction::gRusRoEcal
double gRusRoEcal
Definition: StackingAction.h:90
StackingAction::NewStage
void NewStage() override
Definition: StackingAction.cc:344
StackingAction::gRusRoCastor
double gRusRoCastor
Definition: StackingAction.h:98
word
uint64_t word
Definition: CTPPSTotemDataFormatter.cc:29
StackingAction::regionPreShower
const G4Region * regionPreShower
Definition: StackingAction.h:81
NewTrackAction.h
StackingAction::isThisRegion
bool isThisRegion(const G4Region *, std::vector< const G4Region * > &) const
Definition: StackingAction.cc:410
TrackingAction
Definition: TrackingAction.h:16
StackingAction::isItFromPrimary
int isItFromPrimary(const G4Track &, int) const
Definition: StackingAction.cc:443
StackingAction::gRusRoHcal
double gRusRoHcal
Definition: StackingAction.h:92
StackingAction::killDeltaRay
bool killDeltaRay
Definition: StackingAction.h:50
TrackInformation::isPrimary
bool isPrimary() const
Definition: TrackInformation.h:27
StackingAction::regionMuonIron
const G4Region * regionMuonIron
Definition: StackingAction.h:80
StackingAction::regionWorld
const G4Region * regionWorld
Definition: StackingAction.h:83
StackingAction::lowdensRegions
std::vector< const G4Region * > lowdensRegions
Definition: StackingAction.h:68
visualization-live-secondInstance_cfg.m
m
Definition: visualization-live-secondInstance_cfg.py:78
NewTrackAction::secondary
void secondary(const G4Track *aSecondary, const G4Track &mother, int) const
Definition: NewTrackAction.cc:18
StackingAction::numberTimes
unsigned int numberTimes
Definition: StackingAction.h:59
pfDeepBoostedJetPreprocessParams_cfi.sv
sv
Definition: pfDeepBoostedJetPreprocessParams_cfi.py:352
StackingAction::killInCaloEfH
bool killInCaloEfH
Definition: StackingAction.h:49
StackingAction::regionHcal
const G4Region * regionHcal
Definition: StackingAction.h:79
StackingAction::extractor
TrackInformationExtractor extractor
Definition: StackingAction.h:75
StackingAction::killInCalo
bool killInCalo
Definition: StackingAction.h:49
StackingAction::rrApplicable
bool rrApplicable(const G4Track *, const G4Track &) const
Definition: StackingAction.cc:435
StackingAction::trackerRegions
std::vector< const G4Region * > trackerRegions
Definition: StackingAction.h:65
StackingAction::PrepareNewEvent
void PrepareNewEvent() override
Definition: StackingAction.cc:346
StackingAction::caloRegions
std::vector< const G4Region * > caloRegions
Definition: StackingAction.h:67
StackingAction::limitEnergyForVacuum
double limitEnergyForVacuum
Definition: StackingAction.h:53
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
edm::ParameterSet
Definition: ParameterSet.h:47
StackingAction::nRusRoWorld
double nRusRoWorld
Definition: StackingAction.h:101
AlCaHLTBitMon_ParallelJobs.p
def p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
StackingAction::nRusRoEnerLim
double nRusRoEnerLim
Definition: StackingAction.h:87
CMSSteppingVerbose::StackFilled
void StackFilled(const G4Track *, bool isKilled) const
Definition: CMSSteppingVerbose.cc:136
StackingAction::saveFirstSecondary
bool saveFirstSecondary
Definition: StackingAction.h:47
ke
int ke
Definition: CascadeWrapper.h:13
rname
const G4String rname[NREG]
Definition: ParametrisedEMPhysics.cc:44
StackingAction::gRusRoPreShower
double gRusRoPreShower
Definition: StackingAction.h:96
StackingAction.h
TrackInformation
Definition: TrackInformation.h:12
HLT_FULL_cff.region
region
Definition: HLT_FULL_cff.py:88286
StackingAction::maxTimeNames
std::vector< std::string > maxTimeNames
Definition: StackingAction.h:61
StackingAction::savePDandCinTracker
bool savePDandCinTracker
Definition: StackingAction.h:46
StackingAction::initPointer
void initPointer()
Definition: StackingAction.cc:348
StackingAction::regionCastor
const G4Region * regionCastor
Definition: StackingAction.h:82
StackingAction::kmaxIon
double kmaxIon
Definition: StackingAction.h:54
TrackInformation.h
StackingAction::gRusRoMuonIron
double gRusRoMuonIron
Definition: StackingAction.h:94
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
EgammaValidation_cff.num
num
Definition: EgammaValidation_cff.py:33
StackingAction::maxTrackTime
double maxTrackTime
Definition: StackingAction.h:56
StackingAction::maxTimeRegions
std::vector< const G4Region * > maxTimeRegions
Definition: StackingAction.h:64
StackingAction::kmaxGamma
double kmaxGamma
Definition: StackingAction.h:55
CMSSteppingVerbose.h
StackingAction::killExtra
bool killExtra
Definition: StackingAction.h:51
NewTrackAction
Definition: NewTrackAction.h:14
edm::LogVerbatim
Log< level::Info, true > LogVerbatim
Definition: MessageLogger.h:128
StackingAction::kmaxProton
double kmaxProton
Definition: StackingAction.h:54
StackingAction::maxTrackTimes
std::vector< double > maxTrackTimes
Definition: StackingAction.h:60
StackingAction::ClassifyNewTrack
G4ClassificationOfNewTrack ClassifyNewTrack(const G4Track *aTrack) final
Definition: StackingAction.cc:171
StackingAction::nRusRoHcal
double nRusRoHcal
Definition: StackingAction.h:93
hydjet2DefaultParameters_cff.fDecay
fDecay
Decays ###.
Definition: hydjet2DefaultParameters_cff.py:62
pdg
Definition: pdg_functions.h:28
StackingAction::gRusRoEnerLim
double gRusRoEnerLim
Definition: StackingAction.h:86
StackingAction::trackAction
const TrackingAction * trackAction
Definition: StackingAction.h:72
AlignmentPI::regions
regions
Definition: AlignmentPayloadInspectorHelper.h:78
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
StackingAction::regionEcal
const G4Region * regionEcal
Definition: StackingAction.h:78
StackingAction::kmaxNeutron
double kmaxNeutron
Definition: StackingAction.h:54
StackingAction::printRegions
void printRegions(const std::vector< const G4Region * > &reg, const std::string &word) const
Definition: StackingAction.cc:465
StackingAction::steppingVerbose
const CMSSteppingVerbose * steppingVerbose
Definition: StackingAction.h:73
submitPVValidationJobs.t
string t
Definition: submitPVValidationJobs.py:644
NewTrackAction::primary
void primary(const G4Track *aSecondary) const
Definition: NewTrackAction.cc:14
TtFullHadEvtBuilder_cfi.prob
prob
Definition: TtFullHadEvtBuilder_cfi.py:33
StackingAction::trackNeutrino
bool trackNeutrino
Definition: StackingAction.h:50
StackingAction::nRRactive
bool nRRactive
Definition: StackingAction.h:104
RemoveAddSevLevel.flag
flag
Definition: RemoveAddSevLevel.py:117