File indexing completed on 2024-04-06 12:11:16
0001
0002 #ifndef MaterialEffects_h
0003 #define MaterialEffects_h
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032 #include "DataFormats/GeometryVector/interface/GlobalVector.h"
0033
0034 #include <vector>
0035 class FSimEvent;
0036 class TrackerLayer;
0037 class ParticlePropagator;
0038 class PairProductionSimulator;
0039 class BremsstrahlungSimulator;
0040 class EnergyLossSimulator;
0041
0042 class MaterialEffectsSimulator;
0043 class MultipleScatteringSimulator;
0044 class MuonBremsstrahlungSimulator;
0045 class RandomEngineAndDistribution;
0046
0047 namespace edm {
0048 class ParameterSet;
0049 }
0050
0051 class MaterialEffects {
0052 public:
0053
0054 MaterialEffects(const edm::ParameterSet& matEff);
0055
0056
0057 ~MaterialEffects();
0058
0059
0060
0061 void interact(FSimEvent& simEvent,
0062 const TrackerLayer& layer,
0063 ParticlePropagator& PP,
0064 unsigned i,
0065 RandomEngineAndDistribution const*);
0066
0067
0068 void save();
0069
0070
0071 inline double thickness() const { return theThickness; }
0072
0073
0074 inline double energyLoss() const { return theEnergyLoss; }
0075
0076
0077 inline MultipleScatteringSimulator* multipleScatteringSimulator() const { return MultipleScattering; }
0078
0079
0080 inline EnergyLossSimulator* energyLossSimulator() const { return EnergyLoss; }
0081
0082
0083 inline MuonBremsstrahlungSimulator* muonBremsstrahlungSimulator() const { return MuonBremsstrahlung; }
0084
0085 private:
0086
0087 double radLengths(const TrackerLayer& layer, ParticlePropagator& myTrack);
0088
0089
0090 GlobalVector normalVector(const TrackerLayer& layer, ParticlePropagator& myTrack) const;
0091
0092 private:
0093 PairProductionSimulator* PairProduction;
0094 BremsstrahlungSimulator* Bremsstrahlung;
0095
0096 MuonBremsstrahlungSimulator* MuonBremsstrahlung;
0097 MultipleScatteringSimulator* MultipleScattering;
0098 EnergyLossSimulator* EnergyLoss;
0099 MaterialEffectsSimulator* NuclearInteraction;
0100
0101
0102 double pTmin;
0103 GlobalVector theNormalVector;
0104 double theThickness;
0105 double theEnergyLoss;
0106 double theTECFudgeFactor;
0107
0108
0109
0110
0111 bool use_hardcoded;
0112 };
0113
0114 #endif