ATLAS Offline Software
Public Member Functions | Private Attributes | List of all members
FastCaloSim Class Reference

#include <FastCaloSim.h>

Inheritance diagram for FastCaloSim:
Collaboration diagram for FastCaloSim:

Public Member Functions

 FastCaloSim (const std::string &name, const ServiceHandle< IAthRNGSvc > &rndmGenSvc, const Gaudi::Property< std::string > &randomEngineName, const PublicToolHandle< IFastCaloSimCaloTransportation > &FastCaloSimCaloTransportation, const PublicToolHandle< IFastCaloSimCaloExtrapolation > &FastCaloSimCaloExtrapolation, const PublicToolHandle< IG4CaloTransportTool > &G4CaloTransportTool, const ServiceHandle< ISF::IFastCaloSimParamSvc > &FastCaloSimSvc, const Gaudi::Property< std::string > &CaloCellContainerSDName, const Gaudi::Property< bool > &doG4Transport, const Gaudi::Property< bool > &doPhotons, const Gaudi::Property< bool > &doElectrons, const Gaudi::Property< bool > &doHadrons, const Gaudi::Property< float > &EtaLow, const Gaudi::Property< float > &EtaHigh, const Gaudi::Property< float > &EkinLow, const Gaudi::Property< float > &EkinHigh, const Gaudi::Property< bool > &doEMECFCS, FastCaloSimTool *FastCaloSimTool)
 
 ~FastCaloSim ()
 
G4bool IsApplicable (const G4ParticleDefinition &) override final
 
void DoIt (const G4FastTrack &, G4FastStep &) override final
 
void StartOfAthenaEvent (const EventContext &ctx)
 
void EndOfAthenaEvent (const EventContext &ctx)
 
G4bool ModelTrigger (const G4FastTrack &) override final
 Determines the applicability of the fast sim model to this particular track. More...
 
CaloCellContainerSDgetCaloCellContainerSD ()
 Retrieves the associated sensitive detector responsible for writing out the CaloCellContainer. More...
 
G4bool passedIDCaloBoundary (const G4FastTrack &fastTrack)
 Check if the particle is located at the proper ID-Calo parametrization boundary and is travelling outwards from the ID to the CALO. More...
 

Private Attributes

ServiceHandle< IAthRNGSvcm_rndmGenSvc
 
Gaudi::Property< std::string > m_randomEngineName
 
ATHRNG::RNGWrapperm_rngWrapper {}
 
PublicToolHandle< IFastCaloSimCaloTransportationm_FastCaloSimCaloTransportation
 
PublicToolHandle< IFastCaloSimCaloExtrapolationm_FastCaloSimCaloExtrapolation
 
PublicToolHandle< IG4CaloTransportToolm_G4CaloTransportTool
 
ServiceHandle< ISF::IFastCaloSimParamSvcm_FastCaloSimSvc
 
Gaudi::Property< std::string > m_CaloCellContainerSDName
 
Gaudi::Property< bool > m_doG4Transport
 
Gaudi::Property< bool > m_doPhotons
 
Gaudi::Property< bool > m_doElectrons
 
Gaudi::Property< bool > m_doHadrons
 
Gaudi::Property< float > m_AbsEtaMin
 
Gaudi::Property< float > m_AbsEtaMax
 
Gaudi::Property< float > m_EkinMin
 
Gaudi::Property< float > m_EkinMax
 
Gaudi::Property< float > m_doEMECFCS
 
FastCaloSimToolm_FastCaloSimTool
 

Detailed Description

Definition at line 30 of file FastCaloSim.h.

Constructor & Destructor Documentation

◆ FastCaloSim()

FastCaloSim::FastCaloSim ( const std::string &  name,
const ServiceHandle< IAthRNGSvc > &  rndmGenSvc,
const Gaudi::Property< std::string > &  randomEngineName,
const PublicToolHandle< IFastCaloSimCaloTransportation > &  FastCaloSimCaloTransportation,
const PublicToolHandle< IFastCaloSimCaloExtrapolation > &  FastCaloSimCaloExtrapolation,
const PublicToolHandle< IG4CaloTransportTool > &  G4CaloTransportTool,
const ServiceHandle< ISF::IFastCaloSimParamSvc > &  FastCaloSimSvc,
const Gaudi::Property< std::string > &  CaloCellContainerSDName,
const Gaudi::Property< bool > &  doG4Transport,
const Gaudi::Property< bool > &  doPhotons,
const Gaudi::Property< bool > &  doElectrons,
const Gaudi::Property< bool > &  doHadrons,
const Gaudi::Property< float > &  EtaLow,
const Gaudi::Property< float > &  EtaHigh,
const Gaudi::Property< float > &  EkinLow,
const Gaudi::Property< float > &  EkinHigh,
const Gaudi::Property< bool > &  doEMECFCS,
FastCaloSimTool FastCaloSimTool 
)

Definition at line 34 of file FastCaloSim.cxx.

53 : G4VFastSimulationModel(name),
54  m_rndmGenSvc(rndmGenSvc), m_randomEngineName(randomEngineName),
58  m_FastCaloSimSvc(FastCaloSimSvc),
59  m_CaloCellContainerSDName(CaloCellContainerSDName),
60  m_doG4Transport(doG4Transport),
61  m_doPhotons(doPhotons),
62  m_doElectrons(doElectrons),
63  m_doHadrons(doHadrons),
64  m_AbsEtaMin(AbsEtaMin),
65  m_AbsEtaMax(AbsEtaMax),
66  m_EkinMin(EkinMin),
67  m_EkinMax(EkinMax),
68  m_doEMECFCS(doEMECFCS),
70 {
71 }

◆ ~FastCaloSim()

FastCaloSim::~FastCaloSim ( )
inline

Definition at line 52 of file FastCaloSim.h.

52 {}

Member Function Documentation

◆ DoIt()

void FastCaloSim::DoIt ( const G4FastTrack &  fastTrack,
G4FastStep &  fastStep 
)
finaloverride

Definition at line 206 of file FastCaloSim.cxx.

207 {
208 
210  TFCSTruthState truthState;
211  TFCSExtrapolationState extrapolState;
212 
213  // Get Geant4 primary track
214  const G4Track * G4PrimaryTrack = fastTrack.GetPrimaryTrack();
215  // Get Geant4 particle definition
216  const G4ParticleDefinition * G4Particle = G4PrimaryTrack -> GetDefinition();
217  // Get Geant4 particle pdgID
218  signed int pdgID = G4Particle -> GetPDGEncoding();
219 
220  // Do not simulate particles below 10 MeV
221  if(G4PrimaryTrack -> GetKineticEnergy() < 10){
222  #ifdef FCS_DEBUG
223  G4cout<<"[FastCaloSim::DoIt] Skipping particle with Ekin: " << G4PrimaryTrack -> GetKineticEnergy() <<" MeV. Below the 10 MeV threshold"<<G4endl;
224  #endif
225  fastStep.KillPrimaryTrack();
226  return;
227  }
228  // Decide on which FastCaloSim parametrization to use (electron, photon or pion)
229  if(G4Particle == G4Electron::Definition() || G4Particle == G4Positron::Definition() || G4Particle == G4Gamma::Definition())
230  {
231  // Use egamma parametrization for simulation of electrons and photons
232  truthState.set_pdgid(pdgID);
233  }
234  else{
235  // Use pion parametrization for simulation of all hadrons
236  truthState.set_pdgid(G4PionPlus::Definition() -> GetPDGEncoding());
237  }
238 
239  // Set the kinematics of the FastCaloSim truth state
240  truthState.SetPtEtaPhiM(G4PrimaryTrack -> GetMomentum().perp(),
241  G4PrimaryTrack -> GetMomentum().eta(),
242  G4PrimaryTrack -> GetMomentum().phi(),
243  G4Particle -> GetPDGMass());
244 
245  // Set the vertex of the FastCaloSim truth state
246  truthState.set_vertex(G4PrimaryTrack -> GetPosition().x(),
247  G4PrimaryTrack -> GetPosition().y(),
248  G4PrimaryTrack -> GetPosition().z());
249 
250 
251  /* For anti protons and anti-neutrons the kinetic energy should be
252  calculated as Ekin = E() + M() instead of E() - M() this is
253  achieved by setting an Ekin offset of 2*M() to the truth state */
254  if(pdgID == -2212 || pdgID == -2112) truthState.set_Ekin_off(2 * G4Particle -> GetPDGMass());
255 
256 
257  // Perform particle transportation through calorimeter system eiher with ATLAS tracking tools or with Geant4
258  std::vector<G4FieldTrack> caloSteps = m_doG4Transport ? m_G4CaloTransportTool -> transport(*G4PrimaryTrack)
259  : m_FastCaloSimCaloTransportation -> transport(&truthState, false);
260 
261  // Extrapolate transported stepos to ID-Calo boundary and all layers of the calorimeter system
262  m_FastCaloSimCaloExtrapolation->extrapolate(extrapolState, &truthState, caloSteps);
263 
264 
265 
266  // Do not simulate further if extrapolation to ID - Calo boundary fails
267  if(extrapolState.IDCaloBoundary_eta() == -999){
268  #ifdef FCS_DEBUG
269  G4cout<<"[FastCaloSim::DoIt] Killing particle as extrapolation failed"<<G4endl;
270  #endif
271  fastStep.KillPrimaryTrack();
272  return;
273  }
274  // Perform the actual FastCaloSim simulation
275  if(m_FastCaloSimSvc->simulate(simState, &truthState, &extrapolState).isFailure()){
276  G4Exception("FastCaloSimSvc", "FailedSimulationCall", FatalException, "FastCaloSimSvc: Simulation call failed.");
277  abort();
278  }
279 
280  #ifdef FCS_DEBUG
281  G4cout<<"[FastCaloSim::DoIt] Energy returned: " << simState.E() << G4endl;
282  G4cout<<"[FastCaloSim::DoIt] Energy fraction for layer: " << G4endl;
283  for (int s = 0; s < 24; s++) G4cout<<"[FastCaloSim::DoIt] Sampling " << s << " energy " << simState.E(s) << G4endl;
284  #endif
285 
286  // Retrieve the associated CaloCellContainer sensitive detector
287  CaloCellContainerSD * caloCellContainerSD = getCaloCellContainerSD();
288  // Record the cells
289  caloCellContainerSD->recordCells(simState);
290 
291  // Clean up the auxiliar info from the simulation state
292  simState.DoAuxInfoCleanup();
293 
294  // kill the primary track
295  fastStep.KillPrimaryTrack();
296  fastStep.SetPrimaryTrackPathLength(0.0);
297 }

◆ EndOfAthenaEvent()

void FastCaloSim::EndOfAthenaEvent ( const EventContext &  ctx)

Definition at line 82 of file FastCaloSim.cxx.

82  {
83 
84 
85  return;
86 }

◆ getCaloCellContainerSD()

CaloCellContainerSD * FastCaloSim::getCaloCellContainerSD ( )

Retrieves the associated sensitive detector responsible for writing out the CaloCellContainer.

Definition at line 300 of file FastCaloSim.cxx.

300  {
301 
302  G4SDManager *sdm = G4SDManager::GetSDMpointer();
303  G4VSensitiveDetector * vsd = sdm->FindSensitiveDetector((G4String)m_CaloCellContainerSDName);
304 
305  if (!vsd){
306  G4Exception("FastCaloSimSvc", "FailedFindSensitiveDetector", FatalException, "FastCaloSimSvc: Failed getting CaloCellContainer SD.");
307  abort();
308  }
309  // Cast G4VSensitiveDetector to CaloCellContainerSD
310  CaloCellContainerSD * caloCellContainerSD = dynamic_cast<CaloCellContainerSD*>(vsd);
311 
312  if (!caloCellContainerSD){
313  G4Exception("FastCaloSimSvc", "FailedCastSensitiveDetector", FatalException, "FastCaloSimSvc: Failed casting G4VSensitiveDetector.");
314  abort();
315  }
316  return caloCellContainerSD;
317 }

◆ IsApplicable()

G4bool FastCaloSim::IsApplicable ( const G4ParticleDefinition &  particleType)
finaloverride

Definition at line 89 of file FastCaloSim.cxx.

90 {
91  // Check whether we can simulate the particle with FastCaloSim
92  bool isPhoton = &particleType == G4Gamma::GammaDefinition();
93  bool isElectron = &particleType == G4Electron::ElectronDefinition();
94  bool isPositron = &particleType == G4Positron::PositronDefinition();
95  bool isHadron = MC::isHadron(particleType.GetPDGEncoding());
96 
97  // FastCaloSim is applicable if it is photon, electron, positron or any hadron
98  bool isApplicable = (isPhoton && m_doPhotons) || (isElectron && m_doElectrons) || (isPositron && m_doElectrons) || (isHadron && m_doHadrons);
99 
100  #ifdef FCS_DEBUG
101  const std::string pName = particleType.GetParticleName();
102  G4cout<< "[FastCaloSim::IsApplicable] Got " << pName <<G4endl;
103  if(isApplicable) G4cout<<"[FastCaloSim::IsApplicable] APPLICABLE"<<G4endl;
104  else G4cout<<"[FastCaloSim::IsApplicable] NOT APPLICABLE"<<G4endl;
105  #endif
106 
107 
108  return isApplicable;
109 }

◆ ModelTrigger()

G4bool FastCaloSim::ModelTrigger ( const G4FastTrack &  fastTrack)
finaloverride

Determines the applicability of the fast sim model to this particular track.

Checks that geometric location, energy, and particle type are within bounds. Also checks for containment of the particle's shower within a specific detector region.

Definition at line 111 of file FastCaloSim.cxx.

112 {
113 
114  #ifdef FCS_DEBUG
115  G4cout<<"[FastCaloSim::ModelTrigger] Got particle with " <<"\n"
116  <<" pdg=" <<fastTrack.GetPrimaryTrack() -> GetDefinition()->GetPDGEncoding() <<"\n"
117  <<" Ekin="<<fastTrack.GetPrimaryTrack() -> GetKineticEnergy() <<"\n"
118  <<" p=" <<fastTrack.GetPrimaryTrack() -> GetMomentum().mag() <<"\n"
119  <<" x=" <<fastTrack.GetPrimaryTrack() -> GetPosition().x() <<"\n"
120  <<" y=" <<fastTrack.GetPrimaryTrack() -> GetPosition().y() <<"\n"
121  <<" z=" <<fastTrack.GetPrimaryTrack() -> GetPosition().z() <<"\n"
122  <<" r=" <<fastTrack.GetPrimaryTrack() -> GetPosition().perp() <<"\n"
123  <<" eta=" <<fastTrack.GetPrimaryTrack() -> GetMomentum().eta() <<"\n"
124  <<" phi=" <<fastTrack.GetPrimaryTrack() -> GetMomentum().phi() <<"\n"
125  <<G4endl;
126  #endif
127 
128  // Get particle definition
129  const G4ParticleDefinition * G4Particle = fastTrack.GetPrimaryTrack() -> GetDefinition();
130  // Get particle kinetic energy
131  const float Ekin = fastTrack.GetPrimaryTrack() -> GetKineticEnergy();
132  // Get particle position eta
133  const float eta_pos = (fastTrack.GetPrimaryTrack() -> GetPosition()).eta();
134 
135  // Check particle type
136  bool isPhoton = G4Particle == G4Gamma::Definition();
137  bool isElectron = G4Particle == G4Electron::Definition();
138  bool isPositron = G4Particle == G4Positron::Definition();
139  bool isPionPlus = G4Particle == G4PionPlus::Definition();
140  bool isPionMinus = G4Particle == G4PionMinus::Definition();
141 
142 
143  // Check if there is a configuration for this PID
144  bool withinEtaRange = (std::abs(eta_pos) > m_AbsEtaMin) && (std::abs(eta_pos) < m_AbsEtaMax);
145  bool withinEkinRange = (Ekin > m_EkinMin) && (Ekin < m_EkinMax);
146 
147  if (!(withinEtaRange && withinEkinRange)) {
148  #ifdef FCS_DEBUG
149  G4cout<<"[FastCaloSim::ModelTrigger] Model not triggered"<<G4endl;
150  #endif
151  return false;
152  }
153 
154  // Simulate particles below 50 keV with Geant4 to have same config as ISF implementation
155  if (fastTrack.GetPrimaryTrack() -> GetKineticEnergy() < 0.05) {
156  #ifdef FCS_DEBUG
157  G4cout<<"[FastCaloSim::ModelTrigger] Particle below 50 keV threshold. Passing to G4. "<<G4endl;
158  #endif
159  return false;
160  }
161 
162  // Check if triggered particle is really on the ID-Calo (parametrization) boundary
163  if (!passedIDCaloBoundary(fastTrack)) {
164  #ifdef FCS_DEBUG
165  G4cout<<"[FastCaloSim::ModelTrigger] Particle failed passedIDCaloBoundary z="<<fastTrack.GetPrimaryTrack() -> GetPosition().z()<<" r="<<fastTrack.GetPrimaryTrack() -> GetPosition().perp()<<G4endl;
166  #endif
167  return false;
168  }
169 
170  // Set minimum kinetic energy of pions and other hadrons required to be passed to FastCaloSim
171  float minEkinPions = 200;
172  float minEkinOtherHadrons = 400;
173 
174  // Pass all photons, electrons and positrons to FastCaloSim
175  if (isPhoton || isElectron || isPositron){
176  #ifdef FCS_DEBUG
177  G4cout<<"[FastCaloSim::ModelTrigger] Model triggered"<<G4endl;
178  #endif
179  return true;
180  }
181 
182  // Require minimum kinetic energy of pions needed to be passed to FastCaloSim
183  if (isPionPlus || isPionMinus){
184  bool passMinEkinPions = Ekin > minEkinPions;
185 
186  #ifdef FCS_DEBUG
187  if(passMinEkinPions) G4cout<<"[FastCaloSim::ModelTrigger] Model triggered"<<G4endl;
188  else G4cout<<"[FastCaloSim::ModelTrigger] Pion with Ekin="<<Ekin<<" below the minimum "<<minEkinPions<<" MeV threshold. Model not triggered."<<G4endl;
189  #endif
190 
191  return passMinEkinPions;
192 
193  }
194 
195  // Require minimum kinetic energy of other hadrons needed to be passed to FastCaloSim
196  bool passMinEkinOtherHadrons = Ekin > minEkinOtherHadrons;
197 
198  #ifdef FCS_DEBUG
199  if(passMinEkinOtherHadrons) G4cout<<"[FastCaloSim::ModelTrigger] Model triggered"<<G4endl;
200  else G4cout<<"[FastCaloSim::ModelTrigger] Other hadron with Ekin="<<Ekin<<" below the minimum "<<minEkinOtherHadrons<<" MeV threshold. Model not triggered."<<G4endl;
201  #endif
202 
203  return passMinEkinOtherHadrons;
204 }

◆ passedIDCaloBoundary()

G4bool FastCaloSim::passedIDCaloBoundary ( const G4FastTrack &  fastTrack)

Check if the particle is located at the proper ID-Calo parametrization boundary and is travelling outwards from the ID to the CALO.

Definition at line 320 of file FastCaloSim.cxx.

320  {
321 
322 
323  /* Method checks if particle has crossed the ID-Calo boundary, defined using three cylinders with pairs of r/z values
324  We also perform a directional check to make sure that the particle does not originate from any backscatter from the MS or CALO */
325 
326  // NOTE:
327  // For the inner beam pipe section, innerBeamPipeZ = 4185 corresponds to original AFII boundary, while
328  // innerBeamPipeZ = 4587 corresponds to the CALO::CALO boundary which should be used instead as there
329  // is no triggering volume at this point and we will trigger slightly later than the AFII boundary, so
330  // passedIDCaloBoundary would fail and we would simulate this part with Geant4
331 
332  // Barrel
333  const float barrelR = 1148;
334  const float barrelZ = 3549.5;
335  // Inner beam pipe section
336  const float innerBeamPipeR = 120;
337  const float innerBeamPipeZ = 4587;
338  // Outer beam pipe section
339  const float outerBeamPipeR = 41;
340  const float outerBeamPipeZ = 6783;
341 
342  // Get particle position
343  const G4ThreeVector particlePosition = fastTrack.GetPrimaryTrack() -> GetPosition();
344  // Get r and z values of position
345  const float r = particlePosition.perp();
346  const float z = particlePosition.z();
347  // Get direction of particle
348  const G4ThreeVector particleDirection = fastTrack.GetPrimaryTrack() -> GetMomentum();
349  // Construct the helper line to decide if particle comes from ID or is backscatter from CALO
350  const G4ThreeVector helperLine = particlePosition + particleDirection;
351 
352  // Set 5cm trigger tolerance, i.e. the 'width' of the trigger boundary
353  // be careful not to set this too low, else Geant4 might overjump your trigger boundary and simulate everything with G4
354  const float triggerTolerance = 50;
355 
356  // Barrel boundary (horizontal surfaces)
357  if (std::abs(z) <= barrelZ + triggerTolerance) {
358  if (r >= barrelR && r < barrelR + triggerTolerance) return helperLine.perp() >= barrelR;
359  }
360  // Beam pipe boundary (horizontal surfaces)
361  if (std::abs(z) >= barrelZ && std::abs(z) <= innerBeamPipeZ + triggerTolerance){
362  if (r >= innerBeamPipeR && r < innerBeamPipeR + triggerTolerance) return helperLine.perp() >= innerBeamPipeR;
363  }
364  if (std::abs(z) >= innerBeamPipeZ && std::abs(z) <= outerBeamPipeZ){
365  if (r >= outerBeamPipeR && r < outerBeamPipeR + triggerTolerance) return helperLine.perp() >= outerBeamPipeR;
366  }
367  // Barrel boundary (vertical surfaces)
368  if (r >= outerBeamPipeR && r<= innerBeamPipeR){
369  if (std::abs(z) >= innerBeamPipeZ && std::abs(z) < innerBeamPipeZ + triggerTolerance) return std::abs(helperLine.z()) >= innerBeamPipeZ;
370  }
371  // Beam pipe boundary (vertical surfaces)
372  if (r >= innerBeamPipeR && r <= barrelR){
373  if (std::abs(z) >= barrelZ && std::abs(z) < barrelZ + triggerTolerance) return std::abs(helperLine.z()) >= barrelZ;
374  }
375 
376  return false;
377 
378 }

◆ StartOfAthenaEvent()

void FastCaloSim::StartOfAthenaEvent ( const EventContext &  ctx)

Definition at line 73 of file FastCaloSim.cxx.

73  {
74 
77 
78 
79  return;
80 }

Member Data Documentation

◆ m_AbsEtaMax

Gaudi::Property<float> FastCaloSim::m_AbsEtaMax
private

Definition at line 97 of file FastCaloSim.h.

◆ m_AbsEtaMin

Gaudi::Property<float> FastCaloSim::m_AbsEtaMin
private

Definition at line 96 of file FastCaloSim.h.

◆ m_CaloCellContainerSDName

Gaudi::Property<std::string> FastCaloSim::m_CaloCellContainerSDName
private

Definition at line 88 of file FastCaloSim.h.

◆ m_doElectrons

Gaudi::Property<bool> FastCaloSim::m_doElectrons
private

Definition at line 94 of file FastCaloSim.h.

◆ m_doEMECFCS

Gaudi::Property<float> FastCaloSim::m_doEMECFCS
private

Definition at line 100 of file FastCaloSim.h.

◆ m_doG4Transport

Gaudi::Property<bool> FastCaloSim::m_doG4Transport
private

Definition at line 90 of file FastCaloSim.h.

◆ m_doHadrons

Gaudi::Property<bool> FastCaloSim::m_doHadrons
private

Definition at line 95 of file FastCaloSim.h.

◆ m_doPhotons

Gaudi::Property<bool> FastCaloSim::m_doPhotons
private

Definition at line 93 of file FastCaloSim.h.

◆ m_EkinMax

Gaudi::Property<float> FastCaloSim::m_EkinMax
private

Definition at line 99 of file FastCaloSim.h.

◆ m_EkinMin

Gaudi::Property<float> FastCaloSim::m_EkinMin
private

Definition at line 98 of file FastCaloSim.h.

◆ m_FastCaloSimCaloExtrapolation

PublicToolHandle<IFastCaloSimCaloExtrapolation> FastCaloSim::m_FastCaloSimCaloExtrapolation
private

Definition at line 80 of file FastCaloSim.h.

◆ m_FastCaloSimCaloTransportation

PublicToolHandle<IFastCaloSimCaloTransportation> FastCaloSim::m_FastCaloSimCaloTransportation
private

Definition at line 78 of file FastCaloSim.h.

◆ m_FastCaloSimSvc

ServiceHandle<ISF::IFastCaloSimParamSvc> FastCaloSim::m_FastCaloSimSvc
private

Definition at line 86 of file FastCaloSim.h.

◆ m_FastCaloSimTool

FastCaloSimTool* FastCaloSim::m_FastCaloSimTool
private

Definition at line 103 of file FastCaloSim.h.

◆ m_G4CaloTransportTool

PublicToolHandle<IG4CaloTransportTool> FastCaloSim::m_G4CaloTransportTool
private

Definition at line 82 of file FastCaloSim.h.

◆ m_randomEngineName

Gaudi::Property<std::string> FastCaloSim::m_randomEngineName
private

Definition at line 74 of file FastCaloSim.h.

◆ m_rndmGenSvc

ServiceHandle<IAthRNGSvc> FastCaloSim::m_rndmGenSvc
private

Definition at line 73 of file FastCaloSim.h.

◆ m_rngWrapper

ATHRNG::RNGWrapper* FastCaloSim::m_rngWrapper {}
private

Definition at line 75 of file FastCaloSim.h.


The documentation for this class was generated from the following files:
FastCaloSimCaloExtrapolation
Definition: FastCaloSimCaloExtrapolation.h:32
ATHRNG::RNGWrapper::setSeed
void setSeed(const std::string &algName, const EventContext &ctx)
Set the random seed using a string (e.g.
Definition: RNGWrapper.h:169
beamspotman.r
def r
Definition: beamspotman.py:676
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
perp
Scalar perp() const
perp method - perpenticular length
Definition: AmgMatrixBasePlugin.h:44
TFCSTruthState::set_Ekin_off
void set_Ekin_off(double val)
Definition: TFCSTruthState.h:23
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
CaloCellContainerSD::recordCells
void recordCells(TFCSSimulationState &)
Definition: CaloCellContainerSD.cxx:65
FastCaloSim::m_FastCaloSimTool
FastCaloSimTool * m_FastCaloSimTool
Definition: FastCaloSim.h:103
FastCaloSim::m_FastCaloSimSvc
ServiceHandle< ISF::IFastCaloSimParamSvc > m_FastCaloSimSvc
Definition: FastCaloSim.h:86
FastCaloSim::m_doElectrons
Gaudi::Property< bool > m_doElectrons
Definition: FastCaloSim.h:94
TFCSExtrapolationState
Definition: TFCSExtrapolationState.h:13
FastCaloSim::m_AbsEtaMin
Gaudi::Property< float > m_AbsEtaMin
Definition: FastCaloSim.h:96
x
#define x
particleType
Definition: particleType.h:29
FastCaloSim::m_AbsEtaMax
Gaudi::Property< float > m_AbsEtaMax
Definition: FastCaloSim.h:97
CaloCellContainerSD
Definition: CaloCellContainerSD.h:22
FastCaloSim::getCaloCellContainerSD
CaloCellContainerSD * getCaloCellContainerSD()
Retrieves the associated sensitive detector responsible for writing out the CaloCellContainer.
Definition: FastCaloSim.cxx:300
FastCaloSim::m_FastCaloSimCaloTransportation
PublicToolHandle< IFastCaloSimCaloTransportation > m_FastCaloSimCaloTransportation
Definition: FastCaloSim.h:78
FastCaloSim::m_doPhotons
Gaudi::Property< bool > m_doPhotons
Definition: FastCaloSim.h:93
FastCaloSim::m_randomEngineName
Gaudi::Property< std::string > m_randomEngineName
Definition: FastCaloSim.h:74
z
#define z
xAOD::EgammaHelpers::isElectron
bool isElectron(const xAOD::Egamma *eg)
is the object an electron (not Fwd)
Definition: EgammaxAODHelpers.cxx:12
FastCaloSim::m_EkinMax
Gaudi::Property< float > m_EkinMax
Definition: FastCaloSim.h:99
FastCaloSim::m_doHadrons
Gaudi::Property< bool > m_doHadrons
Definition: FastCaloSim.h:95
TFCSExtrapolationState::IDCaloBoundary_eta
double IDCaloBoundary_eta() const
Definition: TFCSExtrapolationState.h:63
FastCaloSim::m_doEMECFCS
Gaudi::Property< float > m_doEMECFCS
Definition: FastCaloSim.h:100
FastCaloSim::m_FastCaloSimCaloExtrapolation
PublicToolHandle< IFastCaloSimCaloExtrapolation > m_FastCaloSimCaloExtrapolation
Definition: FastCaloSim.h:80
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
isHadron
bool isHadron(const T &p)
Definition: AtlasPID.h:218
FastCaloSim::m_EkinMin
Gaudi::Property< float > m_EkinMin
Definition: FastCaloSim.h:98
y
#define y
xAOD::EgammaHelpers::isPhoton
bool isPhoton(const xAOD::Egamma *eg)
is the object a photon
Definition: EgammaxAODHelpers.cxx:21
FastCaloSimCaloTransportation
Definition: FastCaloSimCaloTransportation.h:21
TFCSTruthState::set_vertex
void set_vertex(const TLorentzVector &val)
Definition: TFCSTruthState.h:19
FastCaloSim::m_rngWrapper
ATHRNG::RNGWrapper * m_rngWrapper
Definition: FastCaloSim.h:75
FastCaloSim::m_doG4Transport
Gaudi::Property< bool > m_doG4Transport
Definition: FastCaloSim.h:90
FastCaloSim::m_G4CaloTransportTool
PublicToolHandle< IG4CaloTransportTool > m_G4CaloTransportTool
Definition: FastCaloSim.h:82
FastCaloSim::m_CaloCellContainerSDName
Gaudi::Property< std::string > m_CaloCellContainerSDName
Definition: FastCaloSim.h:88
FastCaloSim::passedIDCaloBoundary
G4bool passedIDCaloBoundary(const G4FastTrack &fastTrack)
Check if the particle is located at the proper ID-Calo parametrization boundary and is travelling out...
Definition: FastCaloSim.cxx:320
G4CaloTransportTool
A tool which transports particles through the Geant4 geometry.
Definition: G4CaloTransportTool.h:25
TFCSTruthState
Definition: TFCSTruthState.h:13
TFCSSimulationState
Definition: TFCSSimulationState.h:32
FastCaloSimTool
Definition: FastCaloSimTool.h:24
FastCaloSim::m_rndmGenSvc
ServiceHandle< IAthRNGSvc > m_rndmGenSvc
Definition: FastCaloSim.h:73
TFCSTruthState::set_pdgid
void set_pdgid(int val)
Definition: TFCSTruthState.h:18