103{
104
105 if (verboseLevel > 3)
106 G4cout <<
"Calling G4MuElecElasticModel::Initialise()" <<
G4endl;
107
108
109
111 {
112 G4cout <<
"G4MuElecElasticModel: low energy limit increased from " <<
115 }
116
118 {
119 G4cout <<
"G4MuElecElasticModel: high energy limit decreased from " <<
122 }
123
124
125
126 G4double scaleFactor = 1e-18 * cm * cm;
127
128 G4String fileElectron(
"muelec/sigma_elastic_e_Si");
129
132
133
134
136
137 tableFile[electron] = fileElectron;
138
141 tableData[electron] = tableE;
142
143
144
145 char *path = getenv("G4LEDATA");
146
147 if (!path)
148 {
150 return;
151 }
152
153 std::ostringstream eFullFileName;
154 eFullFileName << path << "/muelec/sigmadiff_elastic_e_Si.dat";
155 std::ifstream eDiffCrossSection(eFullFileName.str().c_str());
156
157 if (!eDiffCrossSection)
158 G4Exception(
"G4MuElecElasticModel::Initialise",
"em0003",
FatalException,
"Missing data file: /muelec/sigmadiff_elastic_e_Si.dat");
159
160 eTdummyVec.push_back(0.);
161
162 while(!eDiffCrossSection.eof())
163 {
164 double tDummy;
165 double eDummy;
166 eDiffCrossSection>>tDummy>>eDummy;
167
168
169 if (tDummy != eTdummyVec.back())
170 {
171 eTdummyVec.push_back(tDummy);
172 eVecm[tDummy].push_back(0.);
173 }
174
175 eDiffCrossSection>>eDiffCrossSectionData[tDummy][eDummy];
176
177
178 if (!eDiffCrossSection.eof()) eDiffCrossSectionData[tDummy][eDummy]*=scaleFactor;
179
180 if (eDummy != eVecm[tDummy].back()) eVecm[tDummy].push_back(eDummy);
181
182 }
183
184
185
186 if (verboseLevel > 2)
187 G4cout <<
"Loaded cross section files for MuElec Elastic model" <<
G4endl;
188
189 if( verboseLevel>0 )
190 {
191 G4cout <<
"MuElec Elastic model is initialized " <<
G4endl
192 << "Energy range: "
196 }
197
198 if (isInitialised) { return; }
200 isInitialised = true;
201
202
203}
static G4Electron * ElectronDefinition()
virtual G4bool LoadData(const G4String &argFileName)
G4ParticleChangeForGamma * GetParticleChangeForGamma()
G4double LowEnergyLimit() const
G4double HighEnergyLimit() const