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

PartBullet Class Reference

#include <partbullet.h>

Inheritance diagram for PartBullet:
Particella

List of all members.

Public Member Functions

 PartBullet ()
virtual void Get_Bersaglio (Device *, double)

Detailed Description

Controlla la particella beam nell'urto contro un bersaglio

Author:
Giuseppe Pierazzini

Definition at line 18 of file partbullet.h.


Constructor & Destructor Documentation

PartBullet::PartBullet ( )

------------------------------------------------------------- Procedura che controlla il beam (particella proiettile), nel caso di un urto.

Definition at line 26 of file partbullet.cpp.

{
  type=Bullet;
  Gout<<"\n Classe PartBullet  Done : "<<nome;
 }

Member Function Documentation

void PartBullet::Get_Bersaglio ( Device dev,
double  lint 
) [virtual]

------------------------------------------------------------- Determina il punto di interazione dell beam ( definito qui bullet) con la particella bersaglio all'interno del device che ha funzione anche di target.

Questa procedura è chiamata da device::Traccia() se la particella beam (qui bullet) è nel device definito bersaglio. Si ridefisce il cammino potenziale del beam nel materiale del target prima dell'urto e se minore delle dimensioni del dev terget si termina il tracing della particella beam e si calcolano i parametri cinematici del centro di massa cms. Se il cammino è maggiore si procede regolarmente, come richiesto nella epc di riferimento nel caso che il beam non urti nulla e decada regolarmente.

Reimplemented from Particella.

Definition at line 33 of file partbullet.cpp.

{

//  Gout<<"\n  "<<Eventi_Fatti<<"  Bullet in Get_Bersaglio   "<< lint;
  if ( lint==0.0 ) return;
 
// si stima il cammino prima di interagire sfruttando  la lunghezza di interazione.
  double spessore=0.;
  if ( dev->nowpos==0 ) spessore=2.*dev->Get_Lout().z;  //interno
  else spessore=2.*dev->Get_Lin().z;      // nel buco

  double dz= -lint* log(1.0-Pran()*(1.0-exp(-spessore/lint)) );

  if ( dz> spessore ) return;    // ha superato il bersaglio senza interagire
  pathok= dz;
  Set_Fato ( Distr,-3 );   // qui  la particella è distrutta con flags -3
  //e diventa sterile, cioè non si fa decadere azzerando il puntatore ai suoi  prodotti di decadimento; vedi flyevent()
  dw=0;   // attenzione 
  
//====================================//
// calcolo i parametridel cms
  Particella *madre, *ccms;
  madre=rg;
  ccms= madre->dw;
  ccms->P=P+madre->P;
  ccms->P.Invar();
  ccms->Get_Gp() =ccms->P;
  ccms->Set_Massa(ccms->P.m);
  ccms->Set_Fato ( Nata,-1 ); 
  
  
//  Decido il decadimento    nel bar
   double cslop=11.;
   if(rea_madre->Get_Slope()>0.0) cslop = rea_madre->Get_Slope();
   double cnor=1.-exp(-1.*cslop);
   double  cost =1.0+log(1.0-Pran()*cnor)/cslop;
//     Gout<<"\n "<<setprecision(5)<< ccms->dw->Get_Nome()<<" ct "<< cost<<" "<<cnor; 
  
   
   
   double   fi = DuePiGreco * Pran();
   ccms->dw->cstar=cost;       ccms->dw->fistar=fi;
   ccms-> dw->rg->cstar=-cost;   ccms->dw->rg->fistar=fi+PiGreco;
  
  
//Nota:    Definire la posizione dopo l'urto....

}

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