//----------------------------------------------------------------------------- float E2H(float e_in,float e_out, int iz, int ia, int icsi){ // konwersja energii (MeV) na swiatlo (CHANNELS) // zawiara parametry kalibracyjne dla modulu 7 // e_in -> energia czastki wchodzacej do krysztalu // e_out -> energia pozostala po przebiciu krysztalu // e_out = 0 dla czastek stopowanych w krysztale // icsi = 0 -> CSI1 ( 25 mm) // icsi = 1 -> CSI2 (125 mm) if(icsi<0 || icsi>1) return 0.f; if(iz<=0 || ia<=0) return 0.f; float a1, a2, fct_si; if(icsi == 0){ a1 = 6.285211; a2 = 0.316901; fct_si = 96.197182; if(iz==1){ if (ia==1) a1 *= 1.077039; else if(ia==2) a1 *= 1.048811; else if(ia==3) a1 *= 1.033668; } else if(iz==2&&ia==3) a1 *= 1.014352; else a1 *= 1.009463; } else if(icsi == 1){ a1 = 6.285211; a2 = 0.316901; fct_si = 44.021126; if(iz==1){ if (ia==1) a1 *= 1.079550; else if(ia==2) a1 *= 1.053214; else if(ia==3) a1 *= 1.038230; } else if(iz==2&&ia==3) a1 *= 0.995979; else a1 *= 0.991244; } float H; float a, z; float az2, fbe; H = 0.; z = float(iz); a = float(ia); // if(iz==1 && ia==-1) a=139.56995/931.4943; //Pion case // if(iz==1 && ia==-2) a=105.65841/931.4943; //Muon case // if(iz==1 && ia==-3) a=493.67700/931.4943; //Kaon case if(ia == 8 && iz == 4){ // Be8 = 2* He4 az2 = a*z*z/8.; fbe = 2.; } else{ // tout le reste az2 = a*z*z; fbe = 1.; } float a2az2 = a2*az2; H = (a2 != 0.) ? e_in - e_out - a2az2*log((e_in + a2az2)/(e_out + a2az2)) : e_in - e_out; if(H<0) H=0; H *= fbe*fct_si/a1; return H; } //----------------------------------------------------------------------------- void E2H_test(){ // float ene_in = 351.750702; // float ene_out = 0; // int iz = 2; // int ia = 4; // int icsi=0; // float H = E2H(ene_in, ene_out, iz, ia, icsi); // float ene_in = 312.395660; // float ene_out = 0; // int iz = 2; // int ia = 3; // int icsi=0; // float H = E2H(ene_in, ene_out, iz, ia, icsi); float ene_in = 139.616989; float ene_out = 0; int iz = 1; int ia = 3; int icsi=0; float H = E2H(ene_in, ene_out, iz, ia, icsi); // float ene_in = 117.879150; // float ene_out = 0; // int iz = 1; // int ia = 2; // int icsi=0; // float H = E2H(ene_in, ene_out, iz, ia, icsi); // float ene_in = 88.116196; // float ene_out = 0; // int iz = 1; // int ia = 1; // int icsi=0; // float ene_in = 906.756348; // float ene_out = 0; // int iz = 2; // int ia = 4; // int icsi=1; // float H = E2H(ene_in, ene_out, iz, ia, icsi); // float ene_in = 811.223999; // float ene_out = 0; // int iz = 2; // int ia = 3; // int icsi=1; // float H = E2H(ene_in, ene_out, iz, ia, icsi); // float ene_in = 355.456940; // float ene_out = 0; // int iz = 1; // int ia = 3; // int icsi=1; // float H = E2H(ene_in, ene_out, iz, ia, icsi); // float ene_in = 300.721313; // float ene_out = 0; // int iz = 1; // int ia = 2; // int icsi=1; // float H = E2H(ene_in, ene_out, iz, ia, icsi); // float ene_in = 227.159821; // float ene_out = 0; // int iz = 1; // int ia = 1; // int icsi=1; // float H = E2H(ene_in, ene_out, iz, ia, icsi); printf("%d %d %d %f %f | %f\n",iz,ia, icsi,ene_in,ene_out,H); }