FlyoDoc_2011 Pisa 2011 by GmP --- 011
|
#include <devsveto.h>
Public Member Functions | |
DevSveto () | |
virtual int | Posizione () |
virtual double | CamInter () |
virtual double | CamBuco () |
virtual void | Prgeom () |
virtual int | Get_Structinfo () |
Procedura per al simulazine in dettaglio di un sistema di veto internamente strutturato
Definition at line 26 of file devsveto.h.
DevSveto::DevSveto | ( | ) |
Procedura per al simulazine in dettaglio del sistema dei veti. Il rivelatore Sveto (system veto) è approssimato da una corona circolare contenente i leadglass (contatori) parallelepipedi inseriti radialmente ed equispaziati lungo la corona con l'asse principale diretto secondo un raggio. Le superfici laterali del leadglass sono piane, quelle in basso ed in alto sono approssimate dalla superficie della corona. Gli spazi liberi tra due leadglass contigui , detti settori, hanno una forma ad incudine con i due lati laterali definiti dalle superfici del due contatori mentre le altre superfici sono delimitate dalla corona. con i lati
Definition at line 34 of file devsveto.cpp.
: DevCrn() { // double latox,latoy,latoz, rmedia; // gvet *Ubl,*Use; //Versori degli assi dei blocchi e dei settori. // gvet *C_bl,*C_sec; // centri dei blocchi e dei settori // int Blocchi, iblocco,isector; // double Fasebase; devtype=TypDevSveto; devclass="Sveto_Crn"; rin =Lin.y=Lin.x; Lin.Norma(); rinq=rin*rin; if (nickname[0]=='A' && nickname[1]=='n') { //serve per controllo, ma è superfluo if (nickname[2]!='9' && nickname[3]=='\0') { //anti 1-8 ('\0' è il null character!) Strati=5; //numero di strati per veto if (nickname[2]=='6'||nickname[2]=='7'||nickname[2]=='8') //anti 6-8 Blocchi=48; // numero di blocchi per strato else //anti 1-5 Blocchi=32; } else { //anti 9-12 Strati=4; //numero di strati per veto if (nickname[3]=='2') // anti 12 Blocchi=64; // numero di blocchi per strato else // blocchi 9-11 Blocchi=60; // numero di blocchi per strato } } iblocco=-1; isector=-1; istrato=-1; // Lout.z; // = semispessore della corona in z latoy=latoz= Lout.z/Strati; // semispessori del leadglass ... (attenzione a Spectrometer09.app!) latox= rout-rin; // lunghezza del leadglass=spessore della corona= rout-rin //calcolo i versori degli assi e i centri dei blocchi //il primo blocco ha l'asse orientato secondo la FaseBase. //il primo settore è spostato di Dfi5 in senso antiorario se guardato da downstream int TBlocchi=Strati*Blocchi; Dfi = 2.* PiGreco/Blocchi; U_bl=new gvet[TBlocchi]; U_sc=new gvet[TBlocchi]; C_bl=new gvet[TBlocchi]; C_sc=new gvet[TBlocchi]; double rmed=(rout+rin)*.5; double Dfi5=Dfi*0.5; for (int i=0;i<TBlocchi;i++) { istrato=(i/Blocchi); FaseBase[istrato]=istrato*(Dfi/Strati); double fi = FaseBase[istrato]+i*Dfi; // se Fasebase=0. il primo blocco è lungo l'asse x double Centro_z_strato=2.*latoz*istrato+latoz -Lout.z; // Gout<<"\n C: "<< Centro_z_strato<<" " << i<< " "<<strato; U_bl[i].setvn(cos(fi),sin(fi),0); C_bl[i]= U_bl[i]*rmed; C_bl[i].z=Centro_z_strato; fi+=Dfi5; U_sc[i].setvn(cos(fi),sin(fi),0); C_sc[i]= U_sc[i]*rmed; C_sc[i].z=Centro_z_strato; } }