FlyoDoc_2011 Pisa 2011 by GmP --- 011
|
00001 /*************************************************************************** 00002 * Copyright (C) 2005 by Giuseppe Pierazzini Pisa 05.09.05 * 00003 * pierazzini@unipi.it * 00004 * F l y o * 00005 * Epsi/NA48 * 00006 ***************************************************************************/ 00007 #ifndef DEVSTRAW_H 00008 #define DEVSTRAW_H 00009 00010 #include <devrtrt.h> 00011 00016 /*** attenzione definizione delle camere straw: 00017 Vi sono due strawchamber prima del magnete e due dopo il magnete. 00018 Ciascuna strawchamber è definita da quattro piani (ordinati in z) 00019 detti comunemente u,v,x,y, per un totale 16 piani. 00020 00021 I puntatori ai piani di tipo device sono definiti in device.h come: 00022 extern Device *St1y, *St1x, *St1v, *St1u, *St2y, *St2x, *St2v, *St2u; 00023 extern Device *St3y, *St3x, *St3v, *St3u, *St4y, *St4x, *St4v, *St4u; 00024 00025 00026 00027 Nota: Il device tipo ha sempre i fili paralleli all'asse y è la coordinata del filo corre lungo x. 00028 Ogni piano si ottiene dal device base traslandolo e ruotandolo di gradi 45(u), -45(v), 0(x),-90(y) 00029 */ 00030 00031 00032 00033 struct Tubiparm 00034 { 00035 int ntb,nt,bt,ntbc; 00036 int pianosav; 00037 double segno; 00038 double trailing, trailingsav,tlead,tlead0,totdrift,totdriftsav; 00039 00040 Tubiparm() { 00041 Reset(); 00042 } 00043 void Reset() { 00044 ntb=ntbc=nt=pianosav=0; 00045 segno=0.0; 00046 trailingsav=tlead=tlead0=totdrift=trailing=0.0; 00047 totdriftsav=1000.0; 00048 } 00049 00050 int FiloValida(int, int *flags, int *Tubo,double *T0, double *Ts); 00051 00052 }; 00053 00054 00055 class DevStraw : public DevRtRt 00056 { 00057 private: 00058 // ------ 00059 public: 00060 DevStraw *upstraw,*nextstraw; 00061 Tubiparm TbParm; 00062 DevStraw(); 00063 ~DevStraw(); 00064 int SimulaDev(); 00065 int Set_tubo(int nb,double DX,double hit_time,int *tubo,double *T0, double *Ts, double *Tmp,int *Tcc); 00066 void Set_tubi_errors(int itb, double *Ts, double *T0); 00067 int Mscatter ( Particella *, double ) ; 00068 void Prgeom(); 00069 00070 00071 void Get_wire(); 00072 00073 // informazioni per root 00074 int tubiseen,flag_pileup; 00075 int ntub1,tubo1[16],use_tubo1[16] ,toc_tubo1[16]; 00076 int ntub2,tubo2[16],use_tubo2[16] ,toc_tubo2[16]; 00077 int ntub3,tubo3[16],use_tubo3[16] ,toc_tubo3[16]; 00078 int ntub4,tubo4[16],use_tubo4[16] ,toc_tubo4[16]; 00079 double ts_tubo1[16],t0_tubo1[16],tmp_tubo1[16]; 00080 double ts_tubo2[16],t0_tubo2[16],tmp_tubo2[16]; 00081 double ts_tubo3[16],t0_tubo3[16],tmp_tubo3[16]; 00082 double ts_tubo4[16],t0_tubo4[16],tmp_tubo4[16]; 00083 00084 // 00085 int nwire; 00086 float Wirecoor[16],Wiredtim[16],Wiret0tim[16],Wiret0stim[16], Wiredtempo[16]; // coordinate del filo colpito....calcolo in simuladev. 00087 00088 00089 00090 }; 00091 00092 // data pointer 00093 #if defined(MAIN) 00094 DevStraw *FirstStraw=0; 00095 // puntatori ai dati per il multiplescattering corretto. 00096 double *StrTetPip=0; 00097 double *StrTetElep=0; 00098 double *StrTetMup=0; 00099 double **StrProbPip=0; 00100 double **StrProbElep=0; 00101 double **StrProbMup=0; 00102 00103 DevStraw *St1x=0, *St1y=0, *St1u=0, *St1v=0, *St2x=0, *St2y=0, *St2u=0, *St2v=0; 00104 DevStraw *St3x=0, *St3y=0, *St3u=0, *St3v=0, *St4x=0, *St4y=0, *St4u=0, *St4v=0; 00105 00106 00107 #endif 00108 #if !defined(MAIN) 00109 extern DevStraw *FirstStraw; 00110 extern double *StrTetPip; 00111 extern double *StrTetElep; 00112 extern double *StrTetMup; 00113 extern double **StrProbPip; 00114 extern double **StrProbElep; 00115 extern double **StrProbMup; 00116 00117 extern DevStraw *St1x, *St1y, *St1u, *St1v, *St2x, *St2y, *St2u, *St2v; 00118 extern DevStraw *St3x, *St3y, *St3u, *St3v, *St4x, *St4y, *St4u, *St4v; 00119 00120 00121 00122 #endif 00123 00124 #endif 00125