FlyoDoc_2011 Pisa 2011 by GmP --- 011
|
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 }