Ignore:
Timestamp:
06/10/02 08:49:28 (22 years ago)
Author:
tbretz
Message:
*** empty log message ***
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/WuerzburgSoft/Thomas/mphys/MElectron.cc

    r1349 r1352  
    3434#include <TF1.h>
    3535
     36#include "MPhoton.h"
     37
    3638ClassImp(MElectron);
    3739
     
    238240
    239241
    240 Double_t MElectron::EnergyLoss(Double_t *x, Double_t *k = NULL)
     242Double_t MElectron::EnergyLoss(Double_t *x, Double_t *k, Double_t *ep)
    241243{
    242244    Double_t E = x[0];
     
    255257    Double_t e = pow(10, fP.GetRandom());
    256258
     259    if (ep)
     260        *ep = e;
     261
    257262    Double_t omega = e*E/E0/E0;
    258263    Double_t Gamma = 4.*omega;
     
    269274}
    270275
    271 Double_t MElectron::GetEnergyLoss(Double_t E, Double_t z)
     276Double_t MElectron::GetEnergyLoss(Double_t E, Double_t z, Double_t *ep)
    272277{
    273278    return EnergyLoss(&E, &z);
    274279}
    275280
    276 Double_t MElectron::GetEnergyLoss() const
    277 {
    278     return EnergyLoss((Double_t*)&fEnergy, (Double_t*)&fZ);
    279 }
     281Double_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
     288MPhoton *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.