Ignore:
Timestamp:
07/24/02 09:32:37 (22 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/WuerzburgSoft/Thomas/mphys
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/WuerzburgSoft/Thomas/mphys/Changelog

    r1375 r1429  
    11                                                                  -*-*- END -*-*-
     2 2002/06/21: Thomas Bretz
     3
     4   * MElectron.cc:
     5     - changed upper limit in InteractionLength from 1e-11 to 2e-11
     6     - changed upper limit of p_e in EnergyLoss from -10.8 to -10.6
     7
     8   * MParticle.[h,cc]:
     9     - replaced Planck by tanjas background
     10     
     11   * background.txt:
     12     - added
     13
     14   * MPhoton.[h,cc]:
     15     - changed lower limit of Int2-Integration for Interaction Length
     16       in case Eg<5e4 to fit better its needs
     17     - changed max/min of drawing interaction length
     18     - changed lower limit of interaction length plot
     19
     20   * analp.C:
     21     - added plotting 1h1426 data
     22     - changed alpha/plot from -2/2 to -1/1 (which means I do the well
     23       known E^2 plot of an E^-2 spectrum)
     24     - added a cutoff to simulate cutoff spectra
     25     - some small corrections for the layout of the plots
     26
     27   * phys.C:
     28     - added a maximum number of inv. Compton processes
     29     - don't throw away photons which were reemitted lower than the lower
     30       limit of the plot (so they are still written to the file)
     31     - changed the lower limit of the PhotonSpect simulation function
     32       to a physically more realistic value. No photon which don't have
     33       an corresponding angle are produced anymore.
     34     - stop the electron only if its energy is less than a thousand
     35       of its primary energy
     36
     37
     38
    239 2002/06/21: Thomas Bretz
    340
  • trunk/WuerzburgSoft/Thomas/mphys/phys.C

    r1374 r1429  
    3434{
    3535    Double_t Ep  = pow(10, x[0]);
     36
    3637    Double_t res = MPhoton::Int2(&Ep, k);
    37 
    3838    return res*1e55; //65/k[0];
    39     // return MPhoton::Planck(&Ep, &k[1]);
     39
     40    //return MPhoton::Planck(&Ep, &k[1]);
    4041}
    4142
     
    119120void DoIt()
    120121{
    121     Double_t R      = 100; //MParticle::RofZ(&startz); // [kpc]
    122     Double_t startz = MParticle::ZofR(&R);
    123 
    124     const char *filename = "cascade_delme.root";
    125 
    126     const Double_t B = 0;
     122    // a -->  5
     123    // b --> 10
     124    // c -->  2
     125
     126    // delme, delmeB starting integration at lolim
     127    // delme2, delme2B starting integration at -log10(Eg)-8
     128    // delme3,  lolim, 24, 1e2-1e6,   2x inv.Compton
     129    // delme3B, lolim, 24, 1e2-1e6,   4x inv.Compton
     130    // delme3C, lolim, 24, 1e2-1e6,   8x inv.Compton
     131    // delme3D, lolim, 24, 1e2-1e6,  16x inv.Compton
     132    // delme3E, lolim, 24, 1e2-1e6,  32x inv.Compton
     133
     134    // delme3H, lolim, 24, 1e2-1e6, 256x inv.Compton 8*60
     135
     136    Double_t startz = 0.03; //MParticle::ZofR(&R);
     137    Double_t R      = MParticle::RofZ(&startz); // [kpc]
     138
     139    const char *filename = "delme3H.root";
     140
     141    const Double_t B = 0; // [T] mean magnetic field
     142
     143    Double_t runtime = 8*60*60; // [s] maximum time to run the simulation
     144
     145    Int_t nbins = 24;     // number of bins produced in energy spectrum
     146
     147    Double_t lo = 1e2;    // lower limit of displayed spectrum
     148    Double_t hi = 1e6;    // upper limit of spectrum (cutoff)
     149
     150    Int_t counter = 256;  // maximum number of inv. Compton (-1 means infinite)
     151
     152    Double_t alpha = -1;  // -1 means a E^2 plot
     153    Double_t plot  =  1;  //  1 means a E^-2 spectrum
     154
     155    // --------------------------------------------------------------------
    127156
    128157    cout << "R = " << R << "kpc" << endl;
     
    131160    MPairProduction pair;
    132161
    133     Double_t runtime = 5*60; // [s]
    134 
    135     Double_t lo = 1e4;
    136     Double_t hi = 1e11;
    137     Double_t alpha = -2;
    138     Double_t plot  =  2;
    139 
    140     Int_t nbins = 21; //4*log10(hi/lo);
    141 
    142162    TH1D hist;
    143163    TH1D histsrc;
    144164
    145     hist.SetMinimum(pow(lo, plot+alpha)/10);
    146     histsrc.SetMinimum(pow(lo, plot+alpha)/10);
     165    hist.SetMinimum(pow(lo, plot+alpha)/100);
     166    histsrc.SetMinimum(pow(lo, plot+alpha)/100);
    147167
    148168    TList listg;
     
    230250        {
    231251            if (listg.GetSize()!=0)
    232                 cout << " |P:" << flush;
     252                cout << " |P" << flush;
    233253
    234254            TIter NextP(&listg);
     
    237257            while ((p=(MPhoton*)NextP()))
    238258            {
     259                cout << ":" << flush;
    239260                Double_t Eg = p->GetEnergy();
    240261
    241                 if (!p->SetNewPosition())
     262                Double_t E0 = 511e-6;
     263                Double_t z  = p->GetZ();
     264                Double_t lolim = E0*E0/Eg;
     265                Double_t inf   = (Eg<1e6 ? 3e-11*(z+1) : 3e-12*(z+1));
     266                if (Eg<5e4)
     267                    inf = 3e-11*(z+1)*pow(10, 9.4-log10(Eg)*2);
     268
     269                //TF1 phot("PhotonSpectrum", PhotonSpect, -log10(Eg)-8, -10.5, 2);
     270                //Double_t E0 = 511e-6; // [GeV]
     271                TF1 phot("PhotonSpectrum", PhotonSpect, log10(lolim), log10(inf), 2);
     272                phot.SetParameter(0, Eg);
     273                while (1)
    242274                {
    243                     cout << "!" << flush;
    244 
    245                     hist.Fill(Eg, pow(Eg, plot)*weight);
    246 
    247                     p->SetIsPrimary(kFALSE);
    248                     T1->Fill();
    249 
    250                     Esum += Eg;
    251 
    252                     delete listg.Remove(p);
    253                     continue;
     275                    if (!p->SetNewPosition())
     276                    {
     277                        cout << "!" << flush;
     278
     279                        hist.Fill(Eg, pow(Eg, plot)*weight);
     280
     281                        p->SetIsPrimary(kFALSE);
     282                        T1->Fill();
     283
     284                        Esum += Eg;
     285
     286                        break;
     287                    }
     288
     289                    //
     290                    // Sample phtoton from background and interaction angle
     291                    //
     292                    phot.SetParameter(1, p->GetZ());
     293
     294                    Double_t Ep = pow(10, phot.GetRandom());
     295                    if (Ep==pow(10,0))
     296                    {
     297                        cout << "z" << flush;
     298                        continue;
     299                    }
     300
     301                    Double_t theta = RandomTheta(Eg, Ep);
     302                    if (theta==0)
     303                    {
     304                        cout << "t" << flush;
     305                        continue;
     306                    }
     307
     308                    if (!pair.Process(p, Ep, theta, &liste))
     309                    {
     310                        cout << "0" << flush;
     311                        continue;
     312                    }
     313
     314                    cout << "." << flush;
     315                    break;
    254316                }
    255 
    256                 //
    257                 // Sample phtoton from background and interaction angle
    258                 //
    259                 TF1 phot("PhotonSpectrum", PhotonSpect, -log10(Eg)-8, -10.5, 2);
    260                 phot.SetParameter(0, Eg);
    261                 phot.SetParameter(1, p->GetZ());
    262 
    263                 Double_t Ep    = pow(10, phot.GetRandom());
    264                 if (Ep==pow(10,0))
    265                 {
    266                     cout << "z" << flush;
    267                     continue;
    268                 }
    269                 Double_t theta = RandomTheta(Eg, Ep);
    270                 if (theta==0)
    271                 {
    272                     cout << "t" << flush;
    273                     continue;
    274                 }
    275 
    276                 if (!pair.Process(p, Ep, theta, &liste))
    277                 {
    278                     cout << "0" << flush;
    279                     continue;
    280                 }
    281 
    282317                delete listg.Remove(p);
    283                 cout << "." << flush;
    284318            }
    285319
     
    299333                e->SetIsPrimary(kFALSE);
    300334
    301                 if (e->GetEnergy()<lo)
     335                Double_t Ee = e->GetEnergy();
     336
     337                if (Ee<lo)
    302338                    continue;
    303339
    304340                cout << ":" << flush;
    305                 while(1)
     341                int test = counter<0 ? -1 : counter;
     342                while (test<0 ? true : (test++<256))
    306343                {
     344
    307345                    if (!e->SetNewPositionB(B))
    308346                    {
     
    316354                    T2->Fill();
    317355
     356                    cout << "." << flush;
     357                    listg.Add(p);
     358                    /*
    318359                    if (fabs(p->GetTheta()*3437)<60 &&  // < 60min
    319360                        p->GetEnergy()>lo)
     
    324365                    else
    325366                    {
    326                         if (p->GetEnergy()<=lo)
     367                        if (p->GetEnergy()<E*pow(10, alpha)/5 || p->GetEnergy()<=lo)
    327368                            cout << "e" << flush;
    328369                        else
     
    332373                        Emis += p->GetEnergy();
    333374                    }
    334 
     375                    */
    335376                    if (fabs(e->GetTheta()*3437)>60)  // < 60min
    336377                    {
     
    339380                    }
    340381
    341                     if (e->GetEnergy()<lo)//*5)
     382                    if (e->GetEnergy()<Ee*1e-3) // <2e3
    342383                    {
    343384                        cout << "E" << flush;
Note: See TracChangeset for help on using the changeset viewer.