FlyoDoc_2011 Pisa 2011 by GmP --- 011
Public Member Functions | Public Attributes

PartDltz Class Reference

#include <partdltz.h>

Inheritance diagram for PartDltz:
Particella

List of all members.

Public Member Functions

void DecParm ()
 -------------------------------------------------------------

Public Attributes

double dlznorm
double probdlz [102]
double xmindlz
double xmaxdlz
double stepdlz
double massdlz

Detailed Description

Dalitz pairs production, done automatically...

Author:
Giuseppe Pierazzini

Definition at line 18 of file partdltz.h.


Member Function Documentation

void PartDltz::DecParm ( ) [virtual]

-------------------------------------------------------------

Reimplemented from Particella.

Definition at line 24 of file partdltz.cpp.

 {

// Attenzione questa routine vale solo per la
// produzione di dalitz pair nel decadimento del mesone pi0 in gam e e
// si suppone una distribuzione che va come df/dmq=(1-mq/mpiq)**3 *1./mq;
// limiti tra 2 volte la massa dell'elettrone e quella del pi0.
// mass electron= 0.00051 , mass pi0 = 0.13497 (**2=0.0182169009)
// vedi anche  "Selected problems in theoretical physics"

  double wtot=0.0,x=0.0,xq=0.0,aux=0.0;
  int i,j=0;
//==============================================================
// inizializza la forma integrale della distribuzione di massa normalizzata.
  if(dlznorm==0.0)
   {
     xmindlz=0.0075572349;    // = 2 me/mpio
     xmaxdlz=1.0;
     stepdlz=(xmaxdlz-xmindlz)/100000.;
     probdlz[0]=0.0;

     for (i=1;i<100000;i++)
      { x=xmindlz+stepdlz*i;
        xq=x*x;
        aux=1.-xq;
        wtot+= (aux*aux*aux)/x;   // df/dm
        if(i%1000 ==0)
        {j++;
         probdlz[j]=wtot;

        }
      }
// normalizzo....
   probdlz[100]=1.0;
   probdlz[101]=10.0;
   stepdlz=(xmaxdlz-xmindlz)/100.;
   dlznorm=1./wtot;
   for (i=1;i<101;i++) probdlz[i]*= dlznorm;
  }
  
//=============================================================
//------------------------------------------
// qui comincia normalmente... get massa and angles

  double drm;
  double R=Pran();
  i=1;
  while(1)
   {
    if( probdlz[i]>R)break;
    i++;
   }
// interpolazione ..... piu' peso alle basse masse
   drm=(R-probdlz[i-1])/(probdlz[i]-probdlz[i-1]);
   double mm=xmindlz+(i-1.0+drm*drm)*stepdlz;

   P[3] = P.m=massa=massdlz=mm*0.13497;



   SelRea->Dalitz_done++;


// calcolo la direzione di decadimento dei figli.

//   double cost = 1.0 -  2.0 * Pran();
/**********/
   double rdm=2.*Pran()-1.0;    // ==cos(tet)**2
   double cost = exp(log( fabs(rdm)+EPSR)/3.);
   if(rdm<0.0)cost=-cost;
/*************
   double cost = 1.0;
   while (1)
   {
   cost = 1.0 -  2.0 * Pran();
   if(Pran()<(cost*cost)) break;

   }
*********
    double cost = 1.0;
     if(Pran()<0.5)cost=-1;
*******/

   double   fi = DuePiGreco * Pran();
   dw->cstar=cost;     dw->fistar=fi;
   dw->rg->cstar=-cost; dw->rg->fistar=fi+PiGreco;
   return;
 }

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables