FlyoDoc_2011 Pisa 2011 by GmP --- 011

flyopunta/src/src_uti/radiografia.cpp

00001 /***************************************************************************
00002  *   Copyright (C) 2009 by giuseppe Pierazzini                                      *
00003  *   giuseppe@pierazzini.it                                                               *
00004  *                                                                         *
00005  *                                                                         *
00006  *   This program is distributed in the hope that it will be useful,       *
00007  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00008  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                  *
00009  *                                                                         *
00010  *  Dipartimento di Fisica  E.Fermi / INFN Pisa Italy                      *
00011  ***************************************************************************/
00012 #include "parm.h"
00013 #include "evento.h"
00014 #include "tempo.h"
00015 #include "mattpar.h"
00016 #include "part_db.h"
00017 #include "apparato.h"
00018 #include "radiografia.h"
00019 
00020 //using namespace std;
00021 
00022 Radiografia::Radiografia(int primo, int last)
00023 { 
00024  primo_dev=primo-1;  // gruppo di device radiografati 
00025  if(last!=0) ultimo_dev=last+1;else ultimo_dev=100000;
00026  radx_buffer_dim=150;
00027  Make_radx_buffer ( radx_buffer_dim );
00028 
00029  Gout<<"\n Apparatus radiography required?: between idev "<< primo_dev
00030      <<" and "<<ultimo_dev;
00031 }
00032 
00033 
00034 Radiografia::~Radiografia()
00035 {
00036 }
00037 
00038 //==================R a d x =============================
00039 void Radiografia::Make_radx_buffer ( int rdim )
00040 {
00041 //====
00042 // make space
00043   dvradx = new int [rdim];
00044   idmx   = new int [rdim];
00045   xradx  = new float[rdim];
00046   yradx  = new float[rdim];
00047   zradx  = new float[rdim];
00048   tradx  = new float[rdim];
00049   pxradx = new float[rdim];
00050   pyradx = new float[rdim];
00051   pzradx = new float[rdim];
00052   eradx  = new float[rdim];
00053   evista = new float[rdim];
00054 
00055 }
00056 
00057 void Radiografia::Store_Radx()
00058 {
00059   
00060  // meglio se Pipeline è off   comunque è su dati misurati!!!..
00061 
00062   Device *dev;
00063   dev=Apparato;
00064 
00065   nrdx=0;
00066 
00067   while ( dev )
00068   {
00069     if ( dev->mhit>0 &&(dev->idev>primo_dev&&dev->idev<ultimo_dev) )  
00070     {
00071 //     nota da mettere in root??????????????
00072       for ( int i=0;i<dev->mhit; i++ )
00073       {
00074         dvradx[nrdx]=dev->Get_Idev();
00075         idmx[nrdx]=dev->M_Hits[i].idm;
00076         dev->M_Hits[i].Xlab.putv( xradx[nrdx],yradx[nrdx],zradx[nrdx] );
00077         tradx[nrdx]=dev->M_Hits[i].tempo;
00078         dev->M_Hits[i].Pdev.putq( pxradx[nrdx],pyradx[nrdx],pzradx[nrdx],eradx[nrdx] );
00079         evista[nrdx]=dev->M_Hits[i].e_rivela;
00080         nrdx++;
00081         if ( nrdx> radx_buffer_dim-2 ) {Gout<<"\nToo many rdax hits... cut to "<<  radx_buffer_dim ; break;}
00082 
00083       }
00084     }
00085     dev=dev->next;
00086   }
00087 }
 All Classes Namespaces Files Functions Variables