Warning, file /include/Geant4/G4QuasiScintillation.hh was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
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
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048 #ifndef G4QuasiScintillation_h
0049 #define G4QuasiScintillation_h 1
0050
0051 #include "globals.hh"
0052 #include "G4EmSaturation.hh"
0053 #include "G4OpticalPhoton.hh"
0054 #include "G4VRestDiscreteProcess.hh"
0055
0056 #include <map>
0057
0058 class G4PhysicsTable;
0059 class G4Step;
0060 class G4Track;
0061
0062 class G4QuasiScintillation : public G4VRestDiscreteProcess
0063 {
0064 public:
0065 explicit G4QuasiScintillation(const G4String& procName = "QausiScintillation",
0066 G4ProcessType type = fElectromagnetic);
0067 ~G4QuasiScintillation();
0068
0069 G4QuasiScintillation(const G4QuasiScintillation& right) = delete;
0070 G4QuasiScintillation& operator=(const G4QuasiScintillation& right) = delete;
0071
0072
0073
0074
0075
0076 G4bool IsApplicable(const G4ParticleDefinition& aParticleType) override;
0077
0078
0079
0080 void ProcessDescription(std::ostream&) const override;
0081 void DumpInfo() const override {ProcessDescription(G4cout);};
0082
0083 void BuildPhysicsTable(const G4ParticleDefinition& aParticleType) override;
0084
0085
0086 void PreparePhysicsTable(const G4ParticleDefinition& part) override;
0087 void Initialise();
0088
0089 G4double GetMeanFreePath(const G4Track& aTrack, G4double,
0090 G4ForceCondition*) override;
0091
0092
0093
0094
0095 G4double GetMeanLifeTime(const G4Track& aTrack, G4ForceCondition*) override;
0096
0097
0098
0099
0100 G4VParticleChange* PostStepDoIt(const G4Track& aTrack,
0101 const G4Step& aStep) override;
0102 G4VParticleChange* AtRestDoIt(const G4Track& aTrack,
0103 const G4Step& aStep) override;
0104
0105 G4double GetScintillationYieldByParticleType(const G4Track& aTrack,
0106 const G4Step& aStep,
0107 G4double& yield1,
0108 G4double& yield2,
0109 G4double& yield3,
0110 G4double& timeconstant1,
0111 G4double& timeconstant2,
0112 G4double& timeconstant3);
0113
0114
0115
0116
0117
0118
0119 void SetTrackSecondariesFirst(const G4bool state);
0120
0121
0122
0123
0124 G4bool GetTrackSecondariesFirst() const;
0125
0126
0127 void SetFiniteRiseTime(const G4bool state);
0128
0129
0130
0131 G4bool GetFiniteRiseTime() const;
0132
0133
0134 G4PhysicsTable* GetIntegralTable1() const;
0135
0136
0137 G4PhysicsTable* GetIntegralTable2() const;
0138
0139
0140 G4PhysicsTable* GetIntegralTable3() const;
0141
0142
0143 void AddSaturation(G4EmSaturation* sat);
0144
0145
0146 void RemoveSaturation();
0147
0148
0149 G4EmSaturation* GetSaturation() const;
0150
0151
0152 void SetScintillationByParticleType(const G4bool);
0153
0154
0155
0156 G4bool GetScintillationByParticleType() const;
0157
0158
0159
0160 void SetScintillationTrackInfo(const G4bool trackType);
0161
0162
0163
0164 G4bool GetScintillationTrackInfo() const;
0165
0166
0167
0168 void SetStackPhotons(const G4bool);
0169
0170
0171 G4bool GetStackPhotons() const;
0172
0173
0174 void SetOffloadPhotons(const G4bool);
0175
0176
0177 G4bool GetOffloadPhotons() const;
0178
0179
0180 G4int GetNumPhotons() const;
0181
0182
0183 void DumpPhysicsTable() const;
0184
0185
0186 void SetVerboseLevel(G4int);
0187
0188
0189 private:
0190 void BuildInverseCdfTable(const G4MaterialPropertyVector* MPV,
0191 G4PhysicsFreeVector* vec) const;
0192
0193
0194
0195 private:
0196
0197 G4PhysicsTable* fIntegralTable1;
0198 G4PhysicsTable* fIntegralTable2;
0199 G4PhysicsTable* fIntegralTable3;
0200 std::map<std::size_t, std::size_t> fIndexMPT;
0201
0202 G4EmSaturation* fEmSaturation;
0203 const G4ParticleDefinition* opticalphoton =
0204 G4OpticalPhoton::OpticalPhotonDefinition();
0205
0206 G4int fNumPhotons;
0207
0208 G4bool fScintillationByParticleType;
0209 G4bool fScintillationTrackInfo;
0210 G4bool fStackingFlag;
0211 G4bool fOffloadingFlag;
0212 G4bool fTrackSecondariesFirst;
0213 G4bool fFiniteRiseTime;
0214
0215 #ifdef G4DEBUG_SCINTILLATION
0216 G4double ScintTrackEDep, ScintTrackYield;
0217 #endif
0218
0219 G4double sample_time(G4double tau1, G4double tau2);
0220
0221 G4int secID = -1;
0222 G4int fNumEnergyWarnings = 0;
0223
0224 };
0225
0226
0227
0228
0229
0230 inline G4bool G4QuasiScintillation::GetTrackSecondariesFirst() const
0231 {
0232 return fTrackSecondariesFirst;
0233 }
0234
0235 inline G4bool G4QuasiScintillation::GetFiniteRiseTime() const
0236 {
0237 return fFiniteRiseTime;
0238 }
0239
0240 inline G4PhysicsTable* G4QuasiScintillation::GetIntegralTable1() const
0241 {
0242 return fIntegralTable1;
0243 }
0244
0245 inline G4PhysicsTable* G4QuasiScintillation::GetIntegralTable2() const
0246 {
0247 return fIntegralTable2;
0248 }
0249
0250 inline G4PhysicsTable* G4QuasiScintillation::GetIntegralTable3() const
0251 {
0252 return fIntegralTable3;
0253 }
0254
0255 inline void G4QuasiScintillation::AddSaturation(G4EmSaturation* sat)
0256 {
0257 fEmSaturation = sat;
0258 }
0259
0260 inline void G4QuasiScintillation::RemoveSaturation()
0261 {
0262 fEmSaturation = nullptr;
0263 }
0264
0265 inline G4EmSaturation* G4QuasiScintillation::GetSaturation() const
0266 {
0267 return fEmSaturation;
0268 }
0269
0270 inline G4bool G4QuasiScintillation::GetScintillationByParticleType() const
0271 {
0272 return fScintillationByParticleType;
0273 }
0274
0275 inline G4bool G4QuasiScintillation::GetScintillationTrackInfo() const
0276 {
0277 return fScintillationTrackInfo;
0278 }
0279
0280 inline G4bool G4QuasiScintillation::GetStackPhotons() const
0281 {
0282 return fStackingFlag;
0283 }
0284
0285 inline G4bool G4QuasiScintillation::GetOffloadPhotons() const
0286 {
0287 return fOffloadingFlag;
0288 }
0289
0290 inline G4int G4QuasiScintillation::GetNumPhotons() const
0291 {
0292 return fNumPhotons;
0293 }
0294
0295 #endif