Changeset 1352 for trunk/WuerzburgSoft/Thomas/mphys/MElectron.cc
- Timestamp:
- 06/10/02 08:49:28 (22 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WuerzburgSoft/Thomas/mphys/MElectron.cc
r1349 r1352 34 34 #include <TF1.h> 35 35 36 #include "MPhoton.h" 37 36 38 ClassImp(MElectron); 37 39 … … 238 240 239 241 240 Double_t MElectron::EnergyLoss(Double_t *x, Double_t *k = NULL)242 Double_t MElectron::EnergyLoss(Double_t *x, Double_t *k, Double_t *ep) 241 243 { 242 244 Double_t E = x[0]; … … 255 257 Double_t e = pow(10, fP.GetRandom()); 256 258 259 if (ep) 260 *ep = e; 261 257 262 Double_t omega = e*E/E0/E0; 258 263 Double_t Gamma = 4.*omega; … … 269 274 } 270 275 271 Double_t MElectron::GetEnergyLoss(Double_t E, Double_t z )276 Double_t MElectron::GetEnergyLoss(Double_t E, Double_t z, Double_t *ep) 272 277 { 273 278 return EnergyLoss(&E, &z); 274 279 } 275 280 276 Double_t MElectron::GetEnergyLoss() const 277 { 278 return EnergyLoss((Double_t*)&fEnergy, (Double_t*)&fZ); 279 } 281 Double_t MElectron::GetEnergyLoss(Double_t *ep) const 282 { 283 return EnergyLoss((Double_t*)&fEnergy, (Double_t*)&fZ, ep); 284 } 285 286 #include <iostream.h> 287 288 MPhoton *MElectron::DoInvCompton() 289 { 290 Double_t E0 = 511e-6; //[GeV] 291 292 Double_t epsilon; 293 Double_t e = GetEnergyLoss(&epsilon); 294 /* 295 Double_t gamma = fEnergy/E0; 296 Double_t beta = sqrt(1-1/(gamma*gamma)); 297 Double_t bega = sqrt(gamma*gamma-1); 298 299 Double_t theta = TMath::Pi()/4; 300 301 // er: photon energy before interaction rest frame 302 // e: photon energy after interaction lab 303 Double_t er = gamma*epsilon*(1-beta*cos(theta)); // photon energy rest frame 304 Double_t r1 = fEnergy/e; 305 Double_t r2 = E0/er; 306 Double_t ctheta = (r1-r2-1)/(beta*r1-1); 307 Double_t tg = sqrt(1-ctheta*ctheta)/gamma/(beta+ctheta); 308 */ 309 fEnergy -= e; 310 311 MPhoton &p = *new MPhoton(e, fZ); 312 p = *this; 313 314 /* 315 cout << "(" << atan(tg)*180/TMath::Pi() << ")" << flush; 316 317 static TRandom rand(0); 318 p->SetNewDirection(atan(tg), rand.Uniform(TMath::Pi()*2)); 319 */ 320 321 // MISSING: Electron angle 322 // 323 // E1 = fEnergy (after!) 324 // 325 // sin(t) = (epsilon sin(theta) - e sin(atan(tg)))/sqrt(E1*E1-E0*E0) 326 327 return &p; 328 }
Note:
See TracChangeset
for help on using the changeset viewer.