FlyoDoc_2011 Pisa 2011 by GmP --- 011

flyopunta/src/src_dev/devclrt.cpp

00001 /***************************************************************************
00002                           devclrt.cpp  -  description
00003                              -------------------
00004     begin                : Sat May 26 2001
00005     copyright            : (C) 2001 by Giuseppe Pierazzini
00006     email                : peppe@unipi.it
00007   ***************************************************************************
00008   *                                                                         *
00009   *   NA48  simulation program.                                             *
00010   *                                                                         *
00011   ***************************************************************************/
00012 #include "parm.h"
00013 #include "devclrt.h"
00014  
00015 // using namespace std;
00016 
00017 void DevClRt::Prgeom()
00018 {
00019  Gout<<"==================  R i v e l a t o r e =================";
00020  Gout<<"\n --> < "<<nome <<" >  [ "<<fun
00021      <<" ]  Cilindrico con buco di x "<<Lin.x<<" e y " <<Lin.y<<" rettangolare ";
00022   Device::Prgeom();
00023 }
00024 //======================================================
00025 //----------------- -----P o s i z i o n e ---
00026 int DevClRt::Posizione()
00027 {
00028  if( DevCln::Posizione()>0) return 1; //  il punto e' esterno
00029  // se sono interno al rivelatore verifico se siamo nel buco
00030  P_Cin=X_dev-Centrin;
00031  Dind=P_Cin-Lin;
00032  Dins=-(Lin+P_Cin);
00033  if(Dins[2]>0.0 || Dind[2]>0.0 || Dins[0]>0.0 ||
00034     Dind[0]>0.0 || Dins[1]>0.0 || Dind[1]>0.0   ) return 0;
00035 // ritorno -1 se il punto e' nel buco altrimento ritorno 0
00036    return -1;
00037 }
00038 //----------------------C a m E s t e r --------------------
00039 // usa quella di Cilindro per eredita'
00040 //===========================================================
00041 //----------------------C a m I n t e r --------------------
00042 
00043 double DevClRt::CamInter()
00044 {
00045 //uso quella di Cilindro  per calcolare il cammino
00046 // interno senza il buco...
00047   double tratto=DevCln::CamInter();
00048 //poi verifico se colpisce le pareti del buco .....
00049   double nv,t;
00050   camm=-1.;
00051 // calcolo il cammino positivo verso le sei superfici del buco. Per dist>0
00052 // scelgo il cammino maggiore
00053 
00054   if((nv=V_dev[0])>0.0 && Dins[0]>0.0)  // piani x
00055       {t=Dins[0]/nv;  if(t>camm)camm=t;}
00056   else if(nv<0.0 && Dind[0]>0.0)
00057       {t=-Dind[0]/nv; if(t>camm)camm=t;}
00058 
00059   if((nv=V_dev[1])>0.0 && Dins[1]>0.0)  // piani y
00060       {t=Dins[1]/nv;  if(t>camm)camm=t;}
00061   else if(nv<0.0 && Dind[1]>0.0)
00062       {t=-Dind[1]/nv; if(t>camm)camm=t;}
00063 
00064   if((nv=V_dev[2])>0.0 && Dins[2]>0.0)  // piani z
00065       {t=Dins[2]/nv;  if(t>camm)camm=t;}
00066   else if(nv<0.0 && Dind[2]>0.0)
00067       {t=-Dind[2]/nv; if(t>camm)camm=t;}
00068 
00069   // quindi confronto camm con tratto e accetto il cammino piu' breve......
00070   if(camm<0.0) {camm=tratto; return camm;}
00071   if(camm>0.0 && tratto<camm) camm=tratto;
00072   return camm;
00073 }
00074 //===============================================================
00075 //--------------- C a m B u c o ---------------------------------
00076 double DevClRt::CamBuco()
00077 {
00078   double nv,t;
00079   camm=1.0e+10;
00080 // calcolo il cammino verso le sei superfici
00081 // le distanze sono per definizione negative...
00082 // e scelgo il cammino positivo  minore
00083 
00084   if((nv=V_dev[0])>0.0)  // piani x
00085       {t=-Dind[0]/nv; if(t<camm)camm=t; }
00086   else if(nv<0.0)
00087       {t=Dins[0]/nv;  if(t<camm)camm=t; }
00088 
00089   if((nv=V_dev[1])>0.0)  // piani y
00090       {t=-Dind[1]/nv; if(t<camm)camm=t; }
00091   else if(nv<0.0)
00092       {t=Dins[1]/nv;  if(t<camm)camm=t; }
00093 
00094   if((nv=V_dev[2])>0.0)  // piani z
00095       {t=-Dind[2]/nv; if(t<camm)camm=t; }
00096   else if(nv<0.0)
00097       {t=Dins[2]/nv;  if(t<camm)camm=t; }
00098 return camm;
00099 }
 All Classes Namespaces Files Functions Variables