FlyoDoc_2011 Pisa 2011 by GmP --- 011

flyopunta/src/src_par/partbullet.cpp

00001 /***************************************************************************
00002                           partdltz.cpp  -  description
00003                              -------------------
00004     begin                : Sun May 9 2004
00005     copyright            : (C) 2004 by gmp
00006     email                : peppe@newpeppe
00007   ***************************************************************************
00008   *                                                                         *
00009   *   NA48  simulation program.                                             *
00010   *                                                                         *
00011   ***************************************************************************/
00012 
00013 
00014 
00015 #include "flyoh.h"
00016 
00017 
00018 using namespace GmpConst;
00019 
00026 PartBullet::PartBullet()
00027 {
00028   type=Bullet;
00029   Gout<<"\n Classe PartBullet  Done : "<<nome;
00030  }
00031 
00032 
00033 void  PartBullet::Get_Bersaglio ( Device *dev, double lint )
00034 {
00035 
00047 //  Gout<<"\n  "<<Eventi_Fatti<<"  Bullet in Get_Bersaglio   "<< lint;
00048   if ( lint==0.0 ) return;
00049  
00050 // si stima il cammino prima di interagire sfruttando  la lunghezza di interazione.
00051   double spessore=0.;
00052   if ( dev->nowpos==0 ) spessore=2.*dev->Get_Lout().z;  //interno
00053   else spessore=2.*dev->Get_Lin().z;      // nel buco
00054 
00055   double dz= -lint* log(1.0-Pran()*(1.0-exp(-spessore/lint)) );
00056 
00057   if ( dz> spessore ) return;    // ha superato il bersaglio senza interagire
00058   pathok= dz;
00059   Set_Fato ( Distr,-3 );   // qui  la particella è distrutta con flags -3
00060   //e diventa sterile, cioè non si fa decadere azzerando il puntatore ai suoi  prodotti di decadimento; vedi flyevent()
00061   dw=0;   // attenzione 
00062   
00063 //====================================//
00064 // calcolo i parametridel cms
00065   Particella *madre, *ccms;
00066   madre=rg;
00067   ccms= madre->dw;
00068   ccms->P=P+madre->P;
00069   ccms->P.Invar();
00070   ccms->Get_Gp() =ccms->P;
00071   ccms->Set_Massa(ccms->P.m);
00072   ccms->Set_Fato ( Nata,-1 ); 
00073   
00074   
00075 //  Decido il decadimento    nel bar
00076    double cslop=11.;
00077    if(rea_madre->Get_Slope()>0.0) cslop = rea_madre->Get_Slope();
00078    double cnor=1.-exp(-1.*cslop);
00079    double  cost =1.0+log(1.0-Pran()*cnor)/cslop;
00080 //     Gout<<"\n "<<setprecision(5)<< ccms->dw->Get_Nome()<<" ct "<< cost<<" "<<cnor; 
00081   
00082    
00083    
00084    double   fi = DuePiGreco * Pran();
00085    ccms->dw->cstar=cost;       ccms->dw->fistar=fi;
00086    ccms-> dw->rg->cstar=-cost;   ccms->dw->rg->fistar=fi+PiGreco;
00087   
00088   
00089 //Nota:    Definire la posizione dopo l'urto....
00090 
00091 }
 All Classes Namespaces Files Functions Variables