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, G4Region *region, const ServiceHandle< IAthRNGSvc > &rndmGenSvc, const std::string &randomEngineName, const PublicToolHandle< IFastCaloSimCaloTransportation > &FastCaloSimCaloTransportation, const PublicToolHandle< IFastCaloSimCaloExtrapolation > &FastCaloSimCaloExtrapolation, const PublicToolHandle< IG4CaloTransportTool > &G4CaloTransportTool, const PublicToolHandle< IPunchThroughSimWrapper > &PunchThroughSimWrapper, const ServiceHandle< ISF::IFastCaloSimParamSvc > &FastCaloSimSvc, const std::string &CaloCellContainerSDName, bool doG4Transport, bool doPhotons, bool doElectrons, bool doHadrons, float AbsEtaMin, float AbsEtaMax, float EkinMinPhotons, float EkinMaxPhotons, float EkinMinElectrons, float EkinMaxElectrons, bool doPunchThrough, 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
 
std::string m_randomEngineName
 
ATHRNG::RNGWrapperm_rngWrapper {}
 
PublicToolHandle< IFastCaloSimCaloTransportationm_FastCaloSimCaloTransportation
 
PublicToolHandle< IFastCaloSimCaloExtrapolationm_FastCaloSimCaloExtrapolation
 
PublicToolHandle< IG4CaloTransportToolm_G4CaloTransportTool
 
PublicToolHandle< IPunchThroughSimWrapperm_PunchThroughSimWrapper
 
ServiceHandle< ISF::IFastCaloSimParamSvcm_FastCaloSimSvc
 
std::string m_CaloCellContainerSDName
 
bool m_doG4Transport
 
bool m_doPhotons
 
bool m_doElectrons
 
bool m_doHadrons
 
float m_AbsEtaMin
 
float m_AbsEtaMax
 
float m_EkinMinPhotons
 
float m_EkinMaxPhotons
 
float m_EkinMinElectrons
 
float m_EkinMaxElectrons
 
bool m_doPunchThrough
 
FastCaloSimToolm_FastCaloSimTool
 

Detailed Description

Definition at line 33 of file FastCaloSim.h.

Constructor & Destructor Documentation

◆ FastCaloSim()

FastCaloSim::FastCaloSim ( const std::string &  name,
G4Region *  region,
const ServiceHandle< IAthRNGSvc > &  rndmGenSvc,
const std::string &  randomEngineName,
const PublicToolHandle< IFastCaloSimCaloTransportation > &  FastCaloSimCaloTransportation,
const PublicToolHandle< IFastCaloSimCaloExtrapolation > &  FastCaloSimCaloExtrapolation,
const PublicToolHandle< IG4CaloTransportTool > &  G4CaloTransportTool,
const PublicToolHandle< IPunchThroughSimWrapper > &  PunchThroughSimWrapper,
const ServiceHandle< ISF::IFastCaloSimParamSvc > &  FastCaloSimSvc,
const std::string &  CaloCellContainerSDName,
bool  doG4Transport,
bool  doPhotons,
bool  doElectrons,
bool  doHadrons,
float  AbsEtaMin,
float  AbsEtaMax,
float  EkinMinPhotons,
float  EkinMaxPhotons,
float  EkinMinElectrons,
float  EkinMaxElectrons,
bool  doPunchThrough,
FastCaloSimTool FastCaloSimTool 
)

Definition at line 38 of file FastCaloSim.cxx.

61 : G4VFastSimulationModel(name, region),
62  m_rndmGenSvc(rndmGenSvc), m_randomEngineName(randomEngineName),
67  m_FastCaloSimSvc(FastCaloSimSvc),
68  m_CaloCellContainerSDName(CaloCellContainerSDName),
69  m_doG4Transport(doG4Transport),
70  m_doPhotons(doPhotons),
71  m_doElectrons(doElectrons),
72  m_doHadrons(doHadrons),
73  m_AbsEtaMin(AbsEtaMin),
74  m_AbsEtaMax(AbsEtaMax),
75  m_EkinMinPhotons(EkinMinPhotons),
76  m_EkinMaxPhotons(EkinMaxPhotons),
77  m_EkinMinElectrons(EkinMinElectrons),
78  m_EkinMaxElectrons(EkinMaxElectrons),
79  m_doPunchThrough(doPunchThrough),
81 {
82 
83 }

◆ ~FastCaloSim()

FastCaloSim::~FastCaloSim ( )
inline

Definition at line 59 of file FastCaloSim.h.

59 {}

Member Function Documentation

◆ DoIt()

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

Definition at line 218 of file FastCaloSim.cxx.

219 {
220 
222  TFCSTruthState truthState;
223  TFCSExtrapolationState extrapolState;
224 
225  // Get Geant4 primary track
226  const G4Track * G4PrimaryTrack = fastTrack.GetPrimaryTrack();
227  // Get Geant4 particle definition
228  const G4ParticleDefinition * G4Particle = G4PrimaryTrack -> GetDefinition();
229  // Get Geant4 particle pdgID
230  signed int pdgID = G4Particle -> GetPDGEncoding();
231 
232  // Do not simulate particles below 10 MeV
233  if(G4PrimaryTrack -> GetKineticEnergy() < 10){
234  #ifdef FCS_DEBUG
235  G4cout<<"[FastCaloSim::DoIt] Skipping particle with Ekin: " << G4PrimaryTrack -> GetKineticEnergy() <<" MeV. Below the 10 MeV threshold"<<G4endl;
236  #endif
237  fastStep.KillPrimaryTrack();
238  return;
239  }
240  // Decide on which FastCaloSim parametrization to use (electron, photon or pion)
241  if(G4Particle == G4Electron::Definition() || G4Particle == G4Positron::Definition() || G4Particle == G4Gamma::Definition())
242  {
243  // Use egamma parametrization for simulation of electrons and photons
244  truthState.set_pdgid(pdgID);
245  }
246  else{
247  // Use pion parametrization for simulation of all hadrons
248  truthState.set_pdgid(G4PionPlus::Definition() -> GetPDGEncoding());
249  }
250 
251  // Set the kinematics of the FastCaloSim truth state
252  truthState.SetPtEtaPhiM(G4PrimaryTrack -> GetMomentum().perp(),
253  G4PrimaryTrack -> GetMomentum().eta(),
254  G4PrimaryTrack -> GetMomentum().phi(),
255  G4Particle -> GetPDGMass());
256 
257  // Set the vertex of the FastCaloSim truth state
258  truthState.set_vertex(G4PrimaryTrack -> GetPosition().x(),
259  G4PrimaryTrack -> GetPosition().y(),
260  G4PrimaryTrack -> GetPosition().z());
261 
262 
263  /* For anti protons and anti-neutrons the kinetic energy should be
264  calculated as Ekin = E() + M() instead of E() - M() this is
265  achieved by setting an Ekin offset of 2*M() to the truth state */
266  if(pdgID == -2212 || pdgID == -2112) truthState.set_Ekin_off(2 * G4Particle -> GetPDGMass());
267 
268 
269  // Perform particle transportation through calorimeter system eiher with ATLAS tracking tools or with Geant4
270  std::vector<G4FieldTrack> caloSteps = m_doG4Transport ? m_G4CaloTransportTool -> transport(*G4PrimaryTrack)
271  : m_FastCaloSimCaloTransportation -> transport(&truthState, false);
272 
273  // Extrapolate transported stepos to ID-Calo boundary and all layers of the calorimeter system
274  m_FastCaloSimCaloExtrapolation->extrapolate(extrapolState, &truthState, caloSteps);
275 
276  // Do not simulate further if extrapolation to ID - Calo boundary fails
277  if(extrapolState.IDCaloBoundary_eta() == -999){
278  #ifdef FCS_DEBUG
279  G4cout<<"[FastCaloSim::DoIt] Killing particle as extrapolation failed"<<G4endl;
280  #endif
281  fastStep.KillPrimaryTrack();
282  return;
283  }
284  // Perform the actual FastCaloSim simulation
285  if(m_FastCaloSimSvc->simulate(simState, &truthState, &extrapolState).isFailure()){
286  G4Exception("FastCaloSimSvc", "FailedSimulationCall", FatalException, "FastCaloSimSvc: Simulation call failed.");
287  abort();
288  }
289 
290  #ifdef FCS_DEBUG
291  G4cout<<"[FastCaloSim::DoIt] pdgID of G4PrimaryTrack: " << pdgID << G4endl;
292  G4cout<<"[FastCaloSim::DoIt] Energy returned: " << simState.E() << G4endl;
293  G4cout<<"[FastCaloSim::DoIt] Energy fraction for layer: " << G4endl;
294  for (int s = 0; s < 24; s++) G4cout<<"[FastCaloSim::DoIt] Sampling " << s << " energy " << simState.E(s) << G4endl;
295  #endif
296 
297  // Retrieve the associated CaloCellContainer sensitive detector
298  CaloCellContainerSD * caloCellContainerSD = getCaloCellContainerSD();
299  // Record the cells
300  caloCellContainerSD->recordCells(simState);
301 
302  // Do punchthrough here (secondaries), after the main simulation
303  if (m_doPunchThrough){
304  // necessary for determining particle type and properties (mass etc)
305  G4ParticleTable *ptable = G4ParticleTable::GetParticleTable();
306 
307  // Get simulated energy
308  const double simE = simState.E();
309 
310  // Get energy fraction in layers into vector
311  std::vector<double> simEfrac;
312  for (unsigned int i = 0; i < 24; i++){simEfrac.push_back(simState.Efrac(i));}
313 
314  // run actual method (no return, it will do fastStep.CreateSecondaryTrack(...) under the hood)
315  m_PunchThroughSimWrapper->DoPunchThroughSim(*ptable, m_rngWrapper, simE, simEfrac, fastTrack, fastStep);
316  }
317 
318  // Clean up the auxiliary info from the simulation state
319  simState.DoAuxInfoCleanup();
320 
321  // Finally kill the primary track after all simulation steps done
322  fastStep.KillPrimaryTrack();
323  fastStep.ProposePrimaryTrackPathLength(0.0);
324 }

◆ EndOfAthenaEvent()

void FastCaloSim::EndOfAthenaEvent ( const EventContext &  ctx)

Definition at line 93 of file FastCaloSim.cxx.

93  {
94 
95  return;
96 }

◆ getCaloCellContainerSD()

CaloCellContainerSD * FastCaloSim::getCaloCellContainerSD ( )

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

Definition at line 326 of file FastCaloSim.cxx.

326  {
327 
328  G4SDManager *sdm = G4SDManager::GetSDMpointer();
329  G4VSensitiveDetector * vsd = sdm->FindSensitiveDetector((G4String)m_CaloCellContainerSDName);
330 
331  if (!vsd){
332  G4Exception("FastCaloSimSvc", "FailedFindSensitiveDetector", FatalException, "FastCaloSimSvc: Failed getting CaloCellContainer SD.");
333  abort();
334  }
335  // Cast G4VSensitiveDetector to CaloCellContainerSD
336  CaloCellContainerSD * caloCellContainerSD = dynamic_cast<CaloCellContainerSD*>(vsd);
337 
338  if (!caloCellContainerSD){
339  G4Exception("FastCaloSimSvc", "FailedCastSensitiveDetector", FatalException, "FastCaloSimSvc: Failed casting G4VSensitiveDetector.");
340  abort();
341  }
342  return caloCellContainerSD;
343 }

◆ IsApplicable()

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

Definition at line 99 of file FastCaloSim.cxx.

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

◆ 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 121 of file FastCaloSim.cxx.

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

◆ 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 346 of file FastCaloSim.cxx.

346  {
347 
348 
349  /* Method checks if particle has crossed the ID-Calo boundary, defined using three cylinders with pairs of r/z values
350  We also perform a directional check to make sure that the particle does not originate from any backscatter from the MS or CALO */
351 
352  // NOTE:
353  // For the inner beam pipe section, innerBeamPipeZ = 4185 corresponds to original AFII boundary, while
354  // innerBeamPipeZ = 4587 corresponds to the CALO::CALO boundary which should be used instead as there
355  // is no triggering volume at this point and we will trigger slightly later than the AFII boundary, so
356  // passedIDCaloBoundary would fail and we would simulate this part with Geant4
357 
358  // Barrel
359  const float barrelR = 1148;
360  const float barrelZ = 3549.5;
361  // Inner beam pipe section
362  const float innerBeamPipeR = 120;
363  const float innerBeamPipeZ = 4587;
364  // Outer beam pipe section
365  const float outerBeamPipeR = 41;
366  const float outerBeamPipeZ = 6783;
367 
368  // Get particle position
369  const G4ThreeVector particlePosition = fastTrack.GetPrimaryTrack() -> GetPosition();
370  // Get r and z values of position
371  const float r = particlePosition.perp();
372  const float z = particlePosition.z();
373  // Get direction of particle
374  const G4ThreeVector particleDirection = fastTrack.GetPrimaryTrack() -> GetMomentum();
375  // Construct the helper line to decide if particle comes from ID or is backscatter from CALO
376  const G4ThreeVector helperLine = particlePosition + particleDirection;
377 
378  // Set 5cm trigger tolerance, i.e. the 'width' of the trigger boundary
379  // be careful not to set this too low, else Geant4 might overjump your trigger boundary and simulate everything with G4
380  const float triggerTolerance = 50;
381 
382  // Barrel boundary (horizontal surfaces)
383  if (std::abs(z) <= barrelZ + triggerTolerance) {
384  if (r >= barrelR && r < barrelR + triggerTolerance) return helperLine.perp() >= barrelR;
385  }
386  // Beam pipe boundary (horizontal surfaces)
387  if (std::abs(z) >= barrelZ && std::abs(z) <= innerBeamPipeZ + triggerTolerance){
388  if (r >= innerBeamPipeR && r < innerBeamPipeR + triggerTolerance) return helperLine.perp() >= innerBeamPipeR;
389  }
390  if (std::abs(z) >= innerBeamPipeZ && std::abs(z) <= outerBeamPipeZ){
391  if (r >= outerBeamPipeR && r < outerBeamPipeR + triggerTolerance) return helperLine.perp() >= outerBeamPipeR;
392  }
393  // Barrel boundary (vertical surfaces)
394  if (r >= outerBeamPipeR && r<= innerBeamPipeR){
395  if (std::abs(z) >= innerBeamPipeZ && std::abs(z) < innerBeamPipeZ + triggerTolerance) return std::abs(helperLine.z()) >= innerBeamPipeZ;
396  }
397  // Beam pipe boundary (vertical surfaces)
398  if (r >= innerBeamPipeR && r <= barrelR){
399  if (std::abs(z) >= barrelZ && std::abs(z) < barrelZ + triggerTolerance) return std::abs(helperLine.z()) >= barrelZ;
400  }
401 
402  return false;
403 
404 }

◆ StartOfAthenaEvent()

void FastCaloSim::StartOfAthenaEvent ( const EventContext &  ctx)

Definition at line 85 of file FastCaloSim.cxx.

85  {
86 
89 
90  return;
91 }

Member Data Documentation

◆ m_AbsEtaMax

float FastCaloSim::m_AbsEtaMax
private

Definition at line 105 of file FastCaloSim.h.

◆ m_AbsEtaMin

float FastCaloSim::m_AbsEtaMin
private

Definition at line 104 of file FastCaloSim.h.

◆ m_CaloCellContainerSDName

std::string FastCaloSim::m_CaloCellContainerSDName
private

Definition at line 96 of file FastCaloSim.h.

◆ m_doElectrons

bool FastCaloSim::m_doElectrons
private

Definition at line 102 of file FastCaloSim.h.

◆ m_doG4Transport

bool FastCaloSim::m_doG4Transport
private

Definition at line 98 of file FastCaloSim.h.

◆ m_doHadrons

bool FastCaloSim::m_doHadrons
private

Definition at line 103 of file FastCaloSim.h.

◆ m_doPhotons

bool FastCaloSim::m_doPhotons
private

Definition at line 101 of file FastCaloSim.h.

◆ m_doPunchThrough

bool FastCaloSim::m_doPunchThrough
private

Definition at line 112 of file FastCaloSim.h.

◆ m_EkinMaxElectrons

float FastCaloSim::m_EkinMaxElectrons
private

Definition at line 109 of file FastCaloSim.h.

◆ m_EkinMaxPhotons

float FastCaloSim::m_EkinMaxPhotons
private

Definition at line 107 of file FastCaloSim.h.

◆ m_EkinMinElectrons

float FastCaloSim::m_EkinMinElectrons
private

Definition at line 108 of file FastCaloSim.h.

◆ m_EkinMinPhotons

float FastCaloSim::m_EkinMinPhotons
private

Definition at line 106 of file FastCaloSim.h.

◆ m_FastCaloSimCaloExtrapolation

PublicToolHandle<IFastCaloSimCaloExtrapolation> FastCaloSim::m_FastCaloSimCaloExtrapolation
private

Definition at line 87 of file FastCaloSim.h.

◆ m_FastCaloSimCaloTransportation

PublicToolHandle<IFastCaloSimCaloTransportation> FastCaloSim::m_FastCaloSimCaloTransportation
private

Definition at line 85 of file FastCaloSim.h.

◆ m_FastCaloSimSvc

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

Definition at line 94 of file FastCaloSim.h.

◆ m_FastCaloSimTool

FastCaloSimTool* FastCaloSim::m_FastCaloSimTool
private

Definition at line 115 of file FastCaloSim.h.

◆ m_G4CaloTransportTool

PublicToolHandle<IG4CaloTransportTool> FastCaloSim::m_G4CaloTransportTool
private

Definition at line 89 of file FastCaloSim.h.

◆ m_PunchThroughSimWrapper

PublicToolHandle<IPunchThroughSimWrapper> FastCaloSim::m_PunchThroughSimWrapper
private

Definition at line 91 of file FastCaloSim.h.

◆ m_randomEngineName

std::string FastCaloSim::m_randomEngineName
private

Definition at line 81 of file FastCaloSim.h.

◆ m_rndmGenSvc

ServiceHandle<IAthRNGSvc> FastCaloSim::m_rndmGenSvc
private

Definition at line 80 of file FastCaloSim.h.

◆ m_rngWrapper

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

Definition at line 82 of file FastCaloSim.h.


The documentation for this class was generated from the following files:
FastCaloSimCaloExtrapolation
Definition: FastCaloSimCaloExtrapolation.h:32
FastCaloSim::m_EkinMaxElectrons
float m_EkinMaxElectrons
Definition: FastCaloSim.h:109
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:674
FastCaloSim::m_doPhotons
bool m_doPhotons
Definition: FastCaloSim.h:101
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:115
FastCaloSim::m_AbsEtaMin
float m_AbsEtaMin
Definition: FastCaloSim.h:104
FastCaloSim::m_FastCaloSimSvc
ServiceHandle< ISF::IFastCaloSimParamSvc > m_FastCaloSimSvc
Definition: FastCaloSim.h:94
TFCSExtrapolationState
Definition: TFCSExtrapolationState.h:13
x
#define x
particleType
Definition: particleType.h:29
CaloCellContainerSD
Definition: CaloCellContainerSD.h:22
FastCaloSim::getCaloCellContainerSD
CaloCellContainerSD * getCaloCellContainerSD()
Retrieves the associated sensitive detector responsible for writing out the CaloCellContainer.
Definition: FastCaloSim.cxx:326
FastCaloSim::m_FastCaloSimCaloTransportation
PublicToolHandle< IFastCaloSimCaloTransportation > m_FastCaloSimCaloTransportation
Definition: FastCaloSim.h:85
FastCaloSim::m_doPunchThrough
bool m_doPunchThrough
Definition: FastCaloSim.h:112
FastCaloSim::m_randomEngineName
std::string m_randomEngineName
Definition: FastCaloSim.h:81
FastCaloSim::m_CaloCellContainerSDName
std::string m_CaloCellContainerSDName
Definition: FastCaloSim.h:96
lumiFormat.i
int i
Definition: lumiFormat.py:85
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_AbsEtaMax
float m_AbsEtaMax
Definition: FastCaloSim.h:105
TFCSExtrapolationState::IDCaloBoundary_eta
double IDCaloBoundary_eta() const
Definition: TFCSExtrapolationState.h:63
FastCaloSim::m_PunchThroughSimWrapper
PublicToolHandle< IPunchThroughSimWrapper > m_PunchThroughSimWrapper
Definition: FastCaloSim.h:91
FastCaloSim::m_EkinMinElectrons
float m_EkinMinElectrons
Definition: FastCaloSim.h:108
FastCaloSim::m_FastCaloSimCaloExtrapolation
PublicToolHandle< IFastCaloSimCaloExtrapolation > m_FastCaloSimCaloExtrapolation
Definition: FastCaloSim.h:87
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
isHadron
bool isHadron(const T &p)
Definition: AtlasPID.h:348
PunchThroughSimWrapper
Class to wrap PunchThrough simulation inside FastCaloSim; Runs both PunchThroughG4Classifier and Punc...
Definition: PunchThroughSimWrapper.h:35
FastCaloSim::m_doG4Transport
bool m_doG4Transport
Definition: FastCaloSim.h:98
FastCaloSim::m_doElectrons
bool m_doElectrons
Definition: FastCaloSim.h:102
FastCaloSim::m_EkinMaxPhotons
float m_EkinMaxPhotons
Definition: FastCaloSim.h:107
y
#define y
FastCaloSim::m_doHadrons
bool m_doHadrons
Definition: FastCaloSim.h:103
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:82
python.SystemOfUnits.s
float s
Definition: SystemOfUnits.py:147
FastCaloSim::m_EkinMinPhotons
float m_EkinMinPhotons
Definition: FastCaloSim.h:106
FastCaloSim::m_G4CaloTransportTool
PublicToolHandle< IG4CaloTransportTool > m_G4CaloTransportTool
Definition: FastCaloSim.h:89
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:346
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:27
FastCaloSim::m_rndmGenSvc
ServiceHandle< IAthRNGSvc > m_rndmGenSvc
Definition: FastCaloSim.h:80
TFCSTruthState::set_pdgid
void set_pdgid(int val)
Definition: TFCSTruthState.h:18