Warning, file /include/Geant4/G4QuasiCerenkov.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 G4QuasiCerenkov_h
0049 #define G4QuasiCerenkov_h 1
0050
0051 #include "globals.hh"
0052 #include "G4DynamicParticle.hh"
0053 #include "G4ForceCondition.hh"
0054 #include "G4GPILSelection.hh"
0055 #include "G4MaterialPropertyVector.hh"
0056 #include "G4VProcess.hh"
0057
0058 #include <map>
0059
0060 class G4Material;
0061 class G4ParticleDefinition;
0062 class G4PhysicsTable;
0063 class G4Step;
0064 class G4Track;
0065 class G4VParticleChange;
0066
0067 class G4QuasiCerenkov : public G4VProcess
0068 {
0069 public:
0070 explicit G4QuasiCerenkov(const G4String& processName = "QuasiCerenkov",
0071 G4ProcessType type = fElectromagnetic);
0072 ~G4QuasiCerenkov();
0073
0074 explicit G4QuasiCerenkov(const G4QuasiCerenkov& right);
0075
0076 G4QuasiCerenkov& operator=(const G4QuasiCerenkov& right) = delete;
0077
0078 G4bool IsApplicable(const G4ParticleDefinition& aParticleType) override;
0079
0080
0081
0082 void BuildPhysicsTable(const G4ParticleDefinition& aParticleType) override;
0083
0084
0085 void PreparePhysicsTable(const G4ParticleDefinition& part) override;
0086 void Initialise();
0087
0088 G4double GetMeanFreePath(const G4Track& aTrack, G4double, G4ForceCondition*);
0089
0090
0091
0092 G4double PostStepGetPhysicalInteractionLength(const G4Track& aTrack, G4double,
0093 G4ForceCondition*) override;
0094
0095
0096
0097 G4VParticleChange* PostStepDoIt(const G4Track& aTrack,
0098 const G4Step& aStep) override;
0099
0100
0101
0102 virtual G4double AlongStepGetPhysicalInteractionLength(
0103 const G4Track&, G4double, G4double, G4double&, G4GPILSelection*) override
0104 {
0105 return -1.0;
0106 };
0107
0108 virtual G4double AtRestGetPhysicalInteractionLength(
0109 const G4Track&, G4ForceCondition*) override
0110 {
0111 return -1.0;
0112 };
0113
0114
0115 virtual G4VParticleChange* AtRestDoIt(const G4Track&, const G4Step&) override
0116 {
0117 return nullptr;
0118 };
0119
0120 virtual G4VParticleChange* AlongStepDoIt(const G4Track&,
0121 const G4Step&) override
0122 {
0123 return nullptr;
0124 };
0125
0126 void SetTrackSecondariesFirst(const G4bool state);
0127
0128
0129
0130
0131 G4bool GetTrackSecondariesFirst() const;
0132
0133
0134 void SetMaxBetaChangePerStep(const G4double d);
0135
0136
0137 G4double GetMaxBetaChangePerStep() const;
0138
0139
0140 void SetMaxNumPhotonsPerStep(const G4int NumPhotons);
0141
0142
0143
0144
0145
0146
0147 G4int GetMaxNumPhotonsPerStep() const;
0148
0149
0150
0151 void SetStackPhotons(const G4bool);
0152
0153
0154 G4bool GetStackPhotons() const;
0155
0156
0157 void SetOffloadPhotons(const G4bool);
0158
0159
0160 G4bool GetOffloadPhotons() const;
0161
0162
0163 G4int GetNumPhotons() const;
0164
0165
0166 G4PhysicsTable* GetPhysicsTable() const;
0167
0168
0169 void DumpPhysicsTable() const;
0170
0171
0172 G4double GetAverageNumberOfPhotons(const G4double charge, const G4double beta,
0173 const G4Material* aMaterial,
0174 G4MaterialPropertyVector* Rindex) const;
0175
0176 void DumpInfo() const override {ProcessDescription(G4cout);};
0177 void ProcessDescription(std::ostream& out) const override;
0178
0179 void SetVerboseLevel(G4int);
0180
0181
0182 protected:
0183 G4PhysicsTable* thePhysicsTable;
0184 std::map<std::size_t, std::size_t> fIndexMPT;
0185
0186 private:
0187 G4double fMaxBetaChange;
0188
0189 G4int fMaxPhotons;
0190 G4int fNumPhotons;
0191
0192 G4bool fStackingFlag;
0193 G4bool fOffloadingFlag;
0194 G4bool fTrackSecondariesFirst;
0195
0196 G4int secID = -1;
0197
0198 };
0199
0200 inline G4bool G4QuasiCerenkov::GetTrackSecondariesFirst() const
0201 {
0202 return fTrackSecondariesFirst;
0203 }
0204
0205 inline G4double G4QuasiCerenkov::GetMaxBetaChangePerStep() const
0206 {
0207 return fMaxBetaChange;
0208 }
0209
0210 inline G4int G4QuasiCerenkov::GetMaxNumPhotonsPerStep() const { return fMaxPhotons; }
0211
0212 inline G4bool G4QuasiCerenkov::GetStackPhotons() const { return fStackingFlag; }
0213
0214 inline G4bool G4QuasiCerenkov::GetOffloadPhotons() const { return fOffloadingFlag; }
0215
0216 inline G4int G4QuasiCerenkov::GetNumPhotons() const { return fNumPhotons; }
0217
0218 inline G4PhysicsTable* G4QuasiCerenkov::GetPhysicsTable() const
0219 {
0220 return thePhysicsTable;
0221 }
0222
0223 #endif