CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
MaterialEffects Class Reference

#include <MaterialEffects.h>

Public Member Functions

double energyLoss () const
 Return the energy loss by ionization in the current layer. More...
 
EnergyLossSimulatorenergyLossSimulator () const
 Return the Energy Loss engine. More...
 
void interact (FSimEvent &simEvent, const TrackerLayer &layer, ParticlePropagator &PP, unsigned i)
 
 MaterialEffects (const edm::ParameterSet &matEff, const RandomEngine *engine)
 Constructor. More...
 
MultipleScatteringSimulatormultipleScatteringSimulator () const
 Return the Multiple Scattering engine. More...
 
MuonBremsstrahlungSimulatormuonBremsstrahlungSimulator () const
 Return the Muon Bremsstrahlung engine. More...
 
void save ()
 Save nuclear interaction information. More...
 
double thickness () const
 Return the thickness of the current layer. More...
 
 ~MaterialEffects ()
 Default destructor. More...
 

Private Member Functions

GlobalVector normalVector (const TrackerLayer &layer, ParticlePropagator &myTrack) const
 The vector normal to the surface traversed. More...
 
double radLengths (const TrackerLayer &layer, ParticlePropagator &myTrack)
 The number of radiation lengths traversed. More...
 

Private Attributes

BremsstrahlungSimulatorBremsstrahlung
 
EnergyLossSimulatorEnergyLoss
 
MultipleScatteringSimulatorMultipleScattering
 
MuonBremsstrahlungSimulatorMuonBremsstrahlung
 
NuclearInteractionSimulatorNuclearInteraction
 
PairProductionSimulatorPairProduction
 
double pTmin
 
const RandomEnginerandom
 
double theEnergyLoss
 
GlobalVector theNormalVector
 
double theTECFudgeFactor
 
double theThickness
 

Detailed Description

Definition at line 50 of file MaterialEffects.h.

Constructor & Destructor Documentation

MaterialEffects::MaterialEffects ( const edm::ParameterSet matEff,
const RandomEngine engine 
)

Constructor.

Definition at line 25 of file MaterialEffects.cc.

References funct::A, Bremsstrahlung, EnergyLoss, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), i, analyzePatCOC_cfg::inputFile, j, MultipleScattering, MuonBremsstrahlung, NuclearInteraction, PairProduction, pTmin, random, theTECFudgeFactor, and Gflash::Z.

30  pTmin(999.), random(engine)
31 {
32  // Set the minimal photon energy for a Brem from e+/-
33 
34  bool doPairProduction = matEff.getParameter<bool>("PairProduction");
35  bool doBremsstrahlung = matEff.getParameter<bool>("Bremsstrahlung");
36  bool doEnergyLoss = matEff.getParameter<bool>("EnergyLoss");
37  bool doMultipleScattering = matEff.getParameter<bool>("MultipleScattering");
38  bool doNuclearInteraction = matEff.getParameter<bool>("NuclearInteraction");
39  bool doMuonBremsstrahlung = matEff.getParameter<bool>("MuonBremsstrahlung");
40 
41  double A = matEff.getParameter<double>("A");
42  double Z = matEff.getParameter<double>("Z");
43  double density = matEff.getParameter<double>("Density");
44  double radLen = matEff.getParameter<double>("RadiationLength");
45 
46  // Set the minimal pT before giving up the dE/dx treatment
47 
48  if ( doPairProduction ) {
49 
50  double photonEnergy = matEff.getParameter<double>("photonEnergy");
51  PairProduction = new PairProductionSimulator(photonEnergy,
52  random);
53 
54  }
55 
56  if ( doBremsstrahlung ) {
57 
58  double bremEnergy = matEff.getParameter<double>("bremEnergy");
59  double bremEnergyFraction = matEff.getParameter<double>("bremEnergyFraction");
60  Bremsstrahlung = new BremsstrahlungSimulator(bremEnergy,
61  bremEnergyFraction,
62  random);
63 
64  }
65 //muon Brem+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
66  if ( doMuonBremsstrahlung ) {
67 
68  double bremEnergy = matEff.getParameter<double>("bremEnergy");
69  double bremEnergyFraction = matEff.getParameter<double>("bremEnergyFraction");
70  MuonBremsstrahlung = new MuonBremsstrahlungSimulator(random,A,Z,density,radLen,bremEnergy,
71  bremEnergyFraction);
72 
73  }
74 
75 
76  //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
77 
78  if ( doEnergyLoss ) {
79 
80  pTmin = matEff.getParameter<double>("pTmin");
81  EnergyLoss = new EnergyLossSimulator(random,A,Z,density,radLen);
82 
83  }
84 
85  if ( doMultipleScattering ) {
86 
87  MultipleScattering = new MultipleScatteringSimulator(random,A,Z,density,radLen);
88 
89  }
90 
91  if ( doNuclearInteraction ) {
92 
93  // The energies simulated
94  std::vector<double> pionEnergies
95  = matEff.getUntrackedParameter<std::vector<double> >("pionEnergies");
96 
97  // The particle types simulated
98  std::vector<int> pionTypes
99  = matEff.getUntrackedParameter<std::vector<int> >("pionTypes");
100 
101  // The corresponding particle names
102  std::vector<std::string> pionNames
103  = matEff.getUntrackedParameter<std::vector<std::string> >("pionNames");
104 
105  // The corresponding particle masses
106  std::vector<double> pionMasses
107  = matEff.getUntrackedParameter<std::vector<double> >("pionMasses");
108 
109  // The smallest momentum for inelastic interactions
110  std::vector<double> pionPMin
111  = matEff.getUntrackedParameter<std::vector<double> >("pionMinP");
112 
113  // The interaction length / radiation length ratio for each particle type
114  std::vector<double> lengthRatio
115  = matEff.getParameter<std::vector<double> >("lengthRatio");
116  // std::map<int,double> lengthRatio;
117  // for ( unsigned i=0; i<theLengthRatio.size(); ++i )
118  // lengthRatio[ pionTypes[i] ] = theLengthRatio[i];
119 
120  // A global fudge factor for TEC layers (which apparently do not react to
121  // hadrons the same way as all other layers...
122  theTECFudgeFactor = matEff.getParameter<double>("fudgeFactor");
123 
124  // The evolution of the interaction lengths with energy
125  std::vector<double> theRatios
126  = matEff.getUntrackedParameter<std::vector<double> >("ratios");
127  //std::map<int,std::vector<double> > ratios;
128  //for ( unsigned i=0; i<pionTypes.size(); ++i ) {
129  // for ( unsigned j=0; j<pionEnergies.size(); ++j ) {
130  // ratios[ pionTypes[i] ].push_back(theRatios[ i*pionEnergies.size() + j ]);
131  // }
132  //}
133  std::vector< std::vector<double> > ratios;
134  ratios.resize(pionTypes.size());
135  for ( unsigned i=0; i<pionTypes.size(); ++i ) {
136  for ( unsigned j=0; j<pionEnergies.size(); ++j ) {
137  ratios[i].push_back(theRatios[ i*pionEnergies.size() + j ]);
138  }
139  }
140 
141  // The smallest momentum for elastic interactions
142  double pionEnergy
143  = matEff.getParameter<double>("pionEnergy");
144 
145  // The algorithm to compute the distance between primary and secondaries
146  // when a nuclear interaction occurs
147  unsigned distAlgo
148  = matEff.getParameter<unsigned>("distAlgo");
149  double distCut
150  = matEff.getParameter<double>("distCut");
151 
152  // The file to read the starting interaction in each files
153  // (random reproducibility in case of a crash)
154  std::string inputFile
155  = matEff.getUntrackedParameter<std::string>("inputFile");
156 
157  // Build the ID map (i.e., what is to be considered as a proton, etc...)
158  std::map<int,int> idMap;
159  // Protons
160  std::vector<int> idProtons
161  = matEff.getUntrackedParameter<std::vector<int> >("protons");
162  for ( unsigned i=0; i<idProtons.size(); ++i )
163  idMap[idProtons[i]] = 2212;
164  // Anti-Protons
165  std::vector<int> idAntiProtons
166  = matEff.getUntrackedParameter<std::vector<int> >("antiprotons");
167  for ( unsigned i=0; i<idAntiProtons.size(); ++i )
168  idMap[idAntiProtons[i]] = -2212;
169  // Neutrons
170  std::vector<int> idNeutrons
171  = matEff.getUntrackedParameter<std::vector<int> >("neutrons");
172  for ( unsigned i=0; i<idNeutrons.size(); ++i )
173  idMap[idNeutrons[i]] = 2112;
174  // Anti-Neutrons
175  std::vector<int> idAntiNeutrons
176  = matEff.getUntrackedParameter<std::vector<int> >("antineutrons");
177  for ( unsigned i=0; i<idAntiNeutrons.size(); ++i )
178  idMap[idAntiNeutrons[i]] = -2112;
179  // K0L's
180  std::vector<int> idK0Ls
181  = matEff.getUntrackedParameter<std::vector<int> >("K0Ls");
182  for ( unsigned i=0; i<idK0Ls.size(); ++i )
183  idMap[idK0Ls[i]] = 130;
184  // K+'s
185  std::vector<int> idKplusses
186  = matEff.getUntrackedParameter<std::vector<int> >("Kplusses");
187  for ( unsigned i=0; i<idKplusses.size(); ++i )
188  idMap[idKplusses[i]] = 321;
189  // K-'s
190  std::vector<int> idKminusses
191  = matEff.getUntrackedParameter<std::vector<int> >("Kminusses");
192  for ( unsigned i=0; i<idKminusses.size(); ++i )
193  idMap[idKminusses[i]] = -321;
194  // pi+'s
195  std::vector<int> idPiplusses
196  = matEff.getUntrackedParameter<std::vector<int> >("Piplusses");
197  for ( unsigned i=0; i<idPiplusses.size(); ++i )
198  idMap[idPiplusses[i]] = 211;
199  // pi-'s
200  std::vector<int> idPiminusses
201  = matEff.getUntrackedParameter<std::vector<int> >("Piminusses");
202  for ( unsigned i=0; i<idPiminusses.size(); ++i )
203  idMap[idPiminusses[i]] = -211;
204 
205  // Construction
207  new NuclearInteractionSimulator(pionEnergies, pionTypes, pionNames,
208  pionMasses, pionPMin, pionEnergy,
209  lengthRatio, ratios, idMap,
210  inputFile, distAlgo, distCut, random);
211  }
212 
213 }
const double Z[kNumberCalorimeter]
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
PairProductionSimulator * PairProduction
const RandomEngine * random
MuonBremsstrahlungSimulator * MuonBremsstrahlung
int j
Definition: DBlmapReader.cc:9
BremsstrahlungSimulator * Bremsstrahlung
EnergyLossSimulator * EnergyLoss
NuclearInteractionSimulator * NuclearInteraction
MultipleScatteringSimulator * MultipleScattering
MaterialEffects::~MaterialEffects ( )

Default destructor.

Definition at line 216 of file MaterialEffects.cc.

References Bremsstrahlung, EnergyLoss, MultipleScattering, MuonBremsstrahlung, NuclearInteraction, and PairProduction.

216  {
217 
218  if ( PairProduction ) delete PairProduction;
219  if ( Bremsstrahlung ) delete Bremsstrahlung;
220  if ( EnergyLoss ) delete EnergyLoss;
223 //Muon Brem
225 }
PairProductionSimulator * PairProduction
MuonBremsstrahlungSimulator * MuonBremsstrahlung
BremsstrahlungSimulator * Bremsstrahlung
EnergyLossSimulator * EnergyLoss
NuclearInteractionSimulator * NuclearInteraction
MultipleScatteringSimulator * MultipleScattering

Member Function Documentation

double MaterialEffects::energyLoss ( ) const
inline

Return the energy loss by ionization in the current layer.

Definition at line 76 of file MaterialEffects.h.

References theEnergyLoss.

Referenced by TrajectoryManager::createPSimHits().

76 { return theEnergyLoss; }
EnergyLossSimulator* MaterialEffects::energyLossSimulator ( ) const
inline

Return the Energy Loss engine.

Definition at line 84 of file MaterialEffects.h.

References EnergyLoss.

Referenced by MuonSimHitProducer::applyMaterialEffects(), and CalorimetryManager::MuonMipSimulation().

84  {
85  return EnergyLoss;
86  }
EnergyLossSimulator * EnergyLoss
void MaterialEffects::interact ( FSimEvent simEvent,
const TrackerLayer layer,
ParticlePropagator PP,
unsigned  i 
)

Steer the various interaction processes in the Tracker Material and update the FSimEvent

Energy loss

Multiple scattering

Definition at line 227 of file MaterialEffects.cc.

References abs, FBaseSimEvent::addSimTrack(), FBaseSimEvent::addSimVertex(), MaterialEffectsSimulator::beginDaughters(), FSimVertexType::BREM_VERTEX, Bremsstrahlung, RawParticle::charge(), MaterialEffectsSimulator::closestDaughterId(), MaterialEffectsSimulator::endDaughters(), EnergyLoss, TrackerLayer::layerNumber(), MultipleScattering, MuonBremsstrahlung, MaterialEffectsSimulator::nDaughters(), normalVector(), FSimVertexType::NUCL_VERTEX, NuclearInteraction, FSimVertexType::PAIR_VERTEX, PairProduction, RawParticle::pid(), FSimVertex::position(), pTmin, radLengths(), FSimTrack::setClosestDaughterId(), MaterialEffectsSimulator::setNormalVector(), theEnergyLoss, theNormalVector, theTECFudgeFactor, FBaseSimEvent::track(), MaterialEffectsSimulator::updateState(), FSimTrack::vertex(), and RawParticle::vertex().

Referenced by TrajectoryManager::reconstruct().

230  {
231 
233  double radlen;
234  theEnergyLoss = 0;
235  theNormalVector = normalVector(layer,myTrack);
236  radlen = radLengths(layer,myTrack);
237 
238 //-------------------
239 // Photon Conversion
240 //-------------------
241 
242  if ( PairProduction && myTrack.pid()==22 ) {
243 
244  //
245  PairProduction->updateState(myTrack,radlen);
246 
247  if ( PairProduction->nDaughters() ) {
248  //add a vertex to the mother particle
249  int ivertex = mySimEvent.addSimVertex(myTrack.vertex(),itrack,
251 
252  // Check if it is a valid vertex first:
253  if (ivertex>=0) {
254  // This was a photon that converted
255  for ( DaughterIter = PairProduction->beginDaughters();
256  DaughterIter != PairProduction->endDaughters();
257  ++DaughterIter) {
258 
259  mySimEvent.addSimTrack(&(*DaughterIter), ivertex);
260 
261  }
262  // The photon converted. Return.
263  return;
264  }
265  else {
266  edm::LogWarning("MaterialEffects") << " WARNING: A non valid vertex was found in photon conv. -> " << ivertex << std::endl;
267  }
268 
269  }
270 
271  }
272 
273  if ( myTrack.pid() == 22 ) return;
274 
275 //------------------------
276 // Nuclear interactions
277 //------------------------
278 
279  if ( NuclearInteraction && abs(myTrack.pid()) > 100
280  && abs(myTrack.pid()) < 1000000) {
281 
282  // Simulate a nuclear interaction
283  double factor = 1.0;
284  if (layer.layerNumber() >= 19 && layer.layerNumber() <= 27 )
285  factor = theTECFudgeFactor;
286  NuclearInteraction->updateState(myTrack,radlen*factor);
287 
288  if ( NuclearInteraction->nDaughters() ) {
289 
290  //add a end vertex to the mother particle
291  int ivertex = mySimEvent.addSimVertex(myTrack.vertex(),itrack,
293 
294  // Check if it is a valid vertex first:
295  if (ivertex>=0) {
296  // This was a hadron that interacted inelastically
297  int idaugh = 0;
298  for ( DaughterIter = NuclearInteraction->beginDaughters();
299  DaughterIter != NuclearInteraction->endDaughters();
300  ++DaughterIter) {
301 
302  // The daughter in the event
303  int daughId = mySimEvent.addSimTrack(&(*DaughterIter), ivertex);
304 
305  // Store the closest daughter in the mother info (for later tracking purposes)
306  if ( NuclearInteraction->closestDaughterId() == idaugh++ ) {
307  if ( mySimEvent.track(itrack).vertex().position().Pt() < 4.0 )
308  mySimEvent.track(itrack).setClosestDaughterId(daughId);
309  }
310 
311  }
312  // The hadron is destroyed. Return.
313  return;
314  }
315  else {
316  edm::LogWarning("MaterialEffects") << " WARNING: A non valid vertex was found in nucl. int. -> " << ivertex << std::endl;
317  }
318 
319  }
320 
321  }
322 
323  if ( myTrack.charge() == 0 ) return;
324 
326 
327 //----------------
328 // Bremsstrahlung
329 //----------------
330 
331  if ( Bremsstrahlung && abs(myTrack.pid())==11 ) {
332 
333  Bremsstrahlung->updateState(myTrack,radlen);
334 
335  if ( Bremsstrahlung->nDaughters() ) {
336 
337  // Add a vertex, but do not attach it to the electron, because it
338  // continues its way...
339  int ivertex = mySimEvent.addSimVertex(myTrack.vertex(),itrack,
341 
342  // Check if it is a valid vertex first:
343  if (ivertex>=0) {
344  for ( DaughterIter = Bremsstrahlung->beginDaughters();
345  DaughterIter != Bremsstrahlung->endDaughters();
346  ++DaughterIter) {
347  mySimEvent.addSimTrack(&(*DaughterIter), ivertex);
348  }
349  }
350  else {
351  edm::LogWarning("MaterialEffects") << " WARNING: A non valid vertex was found in brem -> " << ivertex << std::endl;
352  }
353 
354  }
355 
356  }
357 
358 //---------------------------
359 // Muon_Bremsstrahlung
360 //--------------------------
361 
362  if ( MuonBremsstrahlung && abs(myTrack.pid())==13 ) {
363 
364  MuonBremsstrahlung->updateState(myTrack,radlen);
365 
366  if ( MuonBremsstrahlung->nDaughters() ) {
367 
368  // Add a vertex, but do not attach it to the muon, because it
369  // continues its way...
370  int ivertex = mySimEvent.addSimVertex(myTrack.vertex(),itrack,
372 
373  // Check if it is a valid vertex first:
374  if (ivertex>=0) {
375  for ( DaughterIter = MuonBremsstrahlung->beginDaughters();
376  DaughterIter != MuonBremsstrahlung->endDaughters();
377  ++DaughterIter) {
378  mySimEvent.addSimTrack(&(*DaughterIter), ivertex);
379  }
380  }
381  else {
382  edm::LogWarning("MaterialEffects") << " WARNING: A non valid vertex was found in muon brem -> " << ivertex << std::endl;
383  }
384 
385  }
386 
387  }
388 
392 
393  if ( EnergyLoss )
394  {
395  theEnergyLoss = myTrack.E();
396  EnergyLoss->updateState(myTrack,radlen);
397  theEnergyLoss -= myTrack.E();
398  }
399 
400 
404 
405  if ( MultipleScattering && myTrack.Pt() > pTmin ) {
406  // MultipleScattering->setNormalVector(normalVector(layer,myTrack));
408  MultipleScattering->updateState(myTrack,radlen);
409  }
410 
411 }
RHEP_const_iter beginDaughters() const
Returns const iterator to the beginning of the daughters list.
unsigned nDaughters() const
Returns the number of daughters.
unsigned int layerNumber() const
Returns the layer number.
Definition: TrackerLayer.h:82
int closestDaughterId()
The id of the closest charged daughter (filled for nuclear interactions only)
void setNormalVector(const GlobalVector &normal)
Sets the vector normal to the surface traversed.
PairProductionSimulator * PairProduction
#define abs(x)
Definition: mlp_lapack.h:159
GlobalVector normalVector(const TrackerLayer &layer, ParticlePropagator &myTrack) const
The vector normal to the surface traversed.
MuonBremsstrahlungSimulator * MuonBremsstrahlung
std::vector< RawParticle >::const_iterator RHEP_const_iter
RHEP_const_iter endDaughters() const
Returns const iterator to the end of the daughters list.
double radLengths(const TrackerLayer &layer, ParticlePropagator &myTrack)
The number of radiation lengths traversed.
void updateState(ParticlePropagator &myTrack, double radlen)
Compute the material effect (calls the sub class)
BremsstrahlungSimulator * Bremsstrahlung
GlobalVector theNormalVector
EnergyLossSimulator * EnergyLoss
NuclearInteractionSimulator * NuclearInteraction
MultipleScatteringSimulator * MultipleScattering
MultipleScatteringSimulator* MaterialEffects::multipleScatteringSimulator ( ) const
inline

Return the Multiple Scattering engine.

Definition at line 79 of file MaterialEffects.h.

References MultipleScattering.

Referenced by MuonSimHitProducer::applyMaterialEffects().

79  {
80  return MultipleScattering;
81  }
MultipleScatteringSimulator * MultipleScattering
MuonBremsstrahlungSimulator* MaterialEffects::muonBremsstrahlungSimulator ( ) const
inline

Return the Muon Bremsstrahlung engine.

Definition at line 89 of file MaterialEffects.h.

References MuonBremsstrahlung.

Referenced by MuonSimHitProducer::applyMaterialEffects().

89  {
90  return MuonBremsstrahlung;
91  }
MuonBremsstrahlungSimulator * MuonBremsstrahlung
GlobalVector MaterialEffects::normalVector ( const TrackerLayer layer,
ParticlePropagator myTrack 
) const
private

The vector normal to the surface traversed.

Definition at line 455 of file MaterialEffects.cc.

References TrackerLayer::disk(), TrackerLayer::forward(), Plane::normalVector(), RawParticle::R(), RawParticle::X(), and RawParticle::Y().

Referenced by interact().

456  {
457  return layer.forward() ?
458  layer.disk()->normalVector() :
459  GlobalVector(myTrack.X(),myTrack.Y(),0.)/myTrack.R();
460 }
bool forward() const
Is the layer forward ?
Definition: TrackerLayer.h:70
GlobalVector normalVector() const
Definition: Plane.h:47
double R() const
vertex radius
Definition: RawParticle.h:277
BoundDisk * disk() const
Returns the surface.
Definition: TrackerLayer.h:79
double Y() const
y of vertex
Definition: RawParticle.h:274
double X() const
x of vertex
Definition: RawParticle.h:273
Global3DVector GlobalVector
Definition: GlobalVector.h:10
double MaterialEffects::radLengths ( const TrackerLayer layer,
ParticlePropagator myTrack 
)
private

The number of radiation lengths traversed.

Definition at line 414 of file MaterialEffects.cc.

References TrackerLayer::forward(), TrackerLayer::fudgeFactor(), TrackerLayer::fudgeMax(), TrackerLayer::fudgeMin(), TrackerLayer::fudgeNumber(), Surface::mediumProperties(), P, RawParticle::R(), MediumProperties::radLen(), TrackerLayer::surface(), theNormalVector, theThickness, and RawParticle::Z().

Referenced by interact().

415  {
416 
417  // Thickness of layer
419 
420  GlobalVector P(myTrack.Px(),myTrack.Py(),myTrack.Pz());
421 
422  // Effective length of track inside layer (considering crossing angle)
423  // double radlen = theThickness / fabs(P.dot(theNormalVector)/(P.mag()*theNormalVector.mag()));
424  double radlen = theThickness / fabs(P.dot(theNormalVector)) * P.mag();
425 
426  // This is a series of fudge factors (from the geometry description),
427  // to describe the layer inhomogeneities (services, cables, supports...)
428  double rad = myTrack.R();
429  double zed = fabs(myTrack.Z());
430 
431  double factor = 1;
432 
433  // Are there fudge factors for this layer
434  if ( layer.fudgeNumber() )
435 
436  // If yes, loop on them
437  for ( unsigned int iLayer=0; iLayer < layer.fudgeNumber(); ++iLayer ) {
438 
439  // Apply to R if forward layer, to Z if barrel layer
440  if ( ( layer.forward() && layer.fudgeMin(iLayer) < rad && rad < layer.fudgeMax(iLayer) ) ||
441  ( !layer.forward() && layer.fudgeMin(iLayer) < zed && zed < layer.fudgeMax(iLayer) ) ) {
442  factor = layer.fudgeFactor(iLayer);
443  break;
444  }
445 
446  }
447 
448  theThickness *= factor;
449 
450  return radlen * factor;
451 
452 }
float radLen() const
bool forward() const
Is the layer forward ?
Definition: TrackerLayer.h:70
double fudgeFactor(unsigned iFudge) const
Definition: TrackerLayer.h:108
#define P
const MediumProperties * mediumProperties() const
Definition: Surface.h:93
double R() const
vertex radius
Definition: RawParticle.h:277
double fudgeMax(unsigned iFudge) const
Definition: TrackerLayer.h:105
double Z() const
z of vertex
Definition: RawParticle.h:275
unsigned int fudgeNumber() const
Set a fudge factor for material inhomogeneities in this layer.
Definition: TrackerLayer.h:101
const BoundSurface & surface() const
Returns the surface.
Definition: TrackerLayer.h:73
GlobalVector theNormalVector
double fudgeMin(unsigned iFudge) const
Definition: TrackerLayer.h:102
void MaterialEffects::save ( )

Save nuclear interaction information.

Definition at line 463 of file MaterialEffects.cc.

References NuclearInteraction, and NuclearInteractionSimulator::save().

Referenced by Vispa.Main.TabController.TabController::allowClose(), Vispa.Main.TabController.TabController::checkModificationTimestamp(), and TrajectoryManager::reconstruct().

463  {
464 
465  // Save current nuclear interactions in the event libraries.
467 
468 }
NuclearInteractionSimulator * NuclearInteraction
void save()
Save current nuclear interaction (for later use)
double MaterialEffects::thickness ( ) const
inline

Return the thickness of the current layer.

Definition at line 73 of file MaterialEffects.h.

References theThickness.

Referenced by TrajectoryManager::createPSimHits().

73 { return theThickness; }

Member Data Documentation

BremsstrahlungSimulator* MaterialEffects::Bremsstrahlung
private

Definition at line 106 of file MaterialEffects.h.

Referenced by interact(), MaterialEffects(), and ~MaterialEffects().

EnergyLossSimulator* MaterialEffects::EnergyLoss
private
MultipleScatteringSimulator* MaterialEffects::MultipleScattering
private
MuonBremsstrahlungSimulator* MaterialEffects::MuonBremsstrahlung
private
NuclearInteractionSimulator* MaterialEffects::NuclearInteraction
private

Definition at line 111 of file MaterialEffects.h.

Referenced by interact(), MaterialEffects(), save(), and ~MaterialEffects().

PairProductionSimulator* MaterialEffects::PairProduction
private

Definition at line 105 of file MaterialEffects.h.

Referenced by interact(), MaterialEffects(), and ~MaterialEffects().

double MaterialEffects::pTmin
private

Definition at line 114 of file MaterialEffects.h.

Referenced by interact(), and MaterialEffects().

const RandomEngine* MaterialEffects::random
private

Definition at line 124 of file MaterialEffects.h.

Referenced by MaterialEffects().

double MaterialEffects::theEnergyLoss
private

Definition at line 117 of file MaterialEffects.h.

Referenced by energyLoss(), and interact().

GlobalVector MaterialEffects::theNormalVector
private

Definition at line 115 of file MaterialEffects.h.

Referenced by interact(), and radLengths().

double MaterialEffects::theTECFudgeFactor
private

Definition at line 118 of file MaterialEffects.h.

Referenced by interact(), and MaterialEffects().

double MaterialEffects::theThickness
private

Definition at line 116 of file MaterialEffects.h.

Referenced by radLengths(), and thickness().