diff --git a/constants.inc b/constants.inc index 1592e9f5..983f6f2b 100644 --- a/constants.inc +++ b/constants.inc @@ -10,7 +10,7 @@ ! ... some physical constants real*8 Me, Me2, Mp, Mp2, Mn, Mn2, Mpi, Mpi2, Mpi0, Mpi02 - real*8 Mk, Mk2, Mrho, Mrho2,Md, Md2 + real*8 Mk, Mk2, Mrho, Mrho2,Md, Md2, Mmu, Mmu2 real*8 Mlambda, Msigma0, Msigma_minus real*8 MDelta, Delta_width real*8 amu, hbarc, pi, twopi, alpha, alpi, degrad, euler @@ -22,6 +22,8 @@ parameter (Mn2=Mn**2) parameter (Mpi=139.57018) parameter (Mpi2=Mpi**2) + parameter (Mmu=105.6583755) + parameter (Mmu2=Mmu**2) parameter (Mpi0=134.9766) parameter (Mpi02=Mpi0**2) parameter (Mk=493.677) diff --git a/shared/project.f b/shared/project.f index 53df3e73..6a06a291 100644 --- a/shared/project.f +++ b/shared/project.f @@ -21,7 +21,7 @@ subroutine project(x_new,y_new,z_drift,decay_flag,dflag,m2,ph,pathlen) logical dflag !has particle decayed yet? C Local declarations. - real*8 p_spec,ph,m2 + real*8 p_spec,ph,m2, m_final real*8 z_decay,pathlen real*8 rph,rth1,rth real*8 beta,gamma,dlen @@ -71,12 +71,28 @@ subroutine project(x_new,y_new,z_drift,decay_flag,dflag,m2,ph,pathlen) rph = grnd()*2.*pi rth1 = grnd()*2.-1. rth = acos(rth1) - er = 109.787 - pr = 29.783 - pxr = 29.783*sin(rth)*cos(rph) - pyr = 29.783*sin(rth)*sin(rph) - pzr = 29.783*cos(rth) - m2 = 105.67 **2 !need mass-squared for multiple scattering. + + pr = 0. + m_final = Mmu ! default + if(abs(sqrt(m2) - Mpi).lt.2) pr = 29.783 ! pion decay + if(abs(sqrt(m2) - Mk).lt.2) then ! kaons + if(grnd().lt.0.7) then ! decay to muon plus neutrino + pr = 235.5 + else ! decay to two pions + pr = sqrt(Mk**2 / 4. - Mpi**2) + m_final = Mpi + endif + endif + if(pr.eq.0.) then + write(6,'(''error, cannot decay particle with'', + > '' mass='',f8.2)') sqrt(m2) + stop + endif + er = sqrt(m_final**2 + pr**2) + pxr = pr*sin(rth)*cos(rph) + pyr = pr*sin(rth)*sin(rph) + pzr = pr*cos(rth) + m2 = m_final**2 !need mass-squared for multiple scattering. Mh2_final = m2 !for ntuple diff --git a/shared/transp.f b/shared/transp.f index 8acd5fef..6b8ebd58 100644 --- a/shared/transp.f +++ b/shared/transp.f @@ -53,7 +53,7 @@ subroutine transp(spectr,class,decay_flag,dflag,m2,ph,zd,pathlen) character*(*) file !Used in entry point below. logical decay_flag !check for decay logical dflag !has particle decayed yet? - real*8 m2,ph,zd !decay variables. + real*8 m2,ph,zd, m_final !decay variables. real*8 pathlen C Parameters. @@ -146,11 +146,26 @@ subroutine transp(spectr,class,decay_flag,dflag,m2,ph,zd,pathlen) rth1 = grnd()*2.-1. rth = acos(rth1) - er = 109.787 - pr = 29.783 - pxr = 29.783*sin(rth)*cos(rph) - pyr = 29.783*sin(rth)*sin(rph) - pzr = 29.783*cos(rth) + pr = 0. + m_final = Mmu ! default + if(abs(sqrt(m2) - Mpi).lt.2) pr = 29.783 ! pion decay + if(abs(sqrt(m2) - Mk).lt.2) then ! kaons + if(grnd().lt.0.7) then ! decay to muon plus neutrino + pr = 235.5 + else ! decay to two pions + pr = sqrt(Mk**2 / 4. - Mpi**2) + m_final = Mk + endif + endif + if(pr.eq.0.) then + write(6,'(''error, cannot decay particle with'', + > '' mass='',f8.2)') sqrt(m2) + stop + endif + er = sqrt(m_final**2 + pr**2) + pxr = pr*sin(rth)*cos(rph) + pyr = pr*sin(rth)*sin(rph) + pzr = pr*cos(rth) C Boost from pion/kaon center of mass back to lab frame. Loren wants C beta of new frame w.r.t. original frame, so beta is opposite of the @@ -164,7 +179,7 @@ subroutine transp(spectr,class,decay_flag,dflag,m2,ph,zd,pathlen) dydzs = pyf/pzf dpps = 100.*(pf/p_spec-1.) ph=pf - m2 = 105.67**2 !need mass-squared for multiple scattering. + m2 = m_final**2 !need mass-squared for multiple scattering. Mh2_final = m2 !for ntuple endif @@ -223,11 +238,29 @@ subroutine transp(spectr,class,decay_flag,dflag,m2,ph,zd,pathlen) rth1 = grnd()*2.-1. rth = acos(rth1) - er = 109.787 - pr = 29.783 - pxr = 29.783*sin(rth)*cos(rph) - pyr = 29.783*sin(rth)*sin(rph) - pzr = 29.783*cos(rth) + + pr = 0. + m_final = Mmu ! default + if(abs(sqrt(m2) - Mpi).lt.2) pr = 29.783 ! pion decay + if(abs(sqrt(m2) - Mk).lt.2) then ! kaons + if(grnd().lt.0.7) then ! decay to muon plus neutrino + pr = 235.5 + else ! decay to two pions + pr = sqrt(Mk**2 / 4. - Mpi**2) + m_final = Mpi + endif + endif + if(pr.eq.0.) then + write(6,'(''error, cannot decay particle with'', + > '' mass='',f8.2)') sqrt(m2) + stop + endif + er = sqrt(m_final**2 + pr**2) + pxr = pr*sin(rth)*cos(rph) + pyr = pr*sin(rth)*sin(rph) + pzr = pr*cos(rth) + + bx = -beta * dxdzs / sqrt(1. + dxdzs**2 + dydzs**2) by = -beta * dydzs / sqrt(1. + dxdzs**2 + dydzs**2) bz = -beta * 1. / sqrt(1. + dxdzs**2 + dydzs**2) @@ -236,7 +269,7 @@ subroutine transp(spectr,class,decay_flag,dflag,m2,ph,zd,pathlen) dydzs = pyf/pzf dpps = 100.*(pf/p_spec-1.) ph=pf - m2 = 105.67**2 !need mass-squared for multiple scattering. + m2 = m_final**2 !need mass-squared for multiple scattering. Mh2_final = m2 !for ntuple endif endif diff --git a/shms/mc_shms.f b/shms/mc_shms.f index e068093b..abfbd7ff 100755 --- a/shms/mc_shms.f +++ b/shms/mc_shms.f @@ -35,6 +35,7 @@ subroutine mc_shms(p_spec, th_spec, dpp, x, y, z, dxdz, dydz, include '../shms/apertures_shms.inc' include '../constants.inc' include '../spectrometers.inc' + include '../shms/hut.inc' C Spectrometer definitions - for double arm monte carlo compatability @@ -235,11 +236,17 @@ subroutine mc_shms(p_spec, th_spec, dpp, x, y, z, dxdz, dydz, integer i,j,ij ! TH - end sieve + logical*4 cer_flag + logical*4 vac_flag + common /hutflag/ cer_flag,vac_flag + save !Remember it all! C ================================ Executable Code ============================= + cer_flag=.true. + vac_flag=.false. ! Initialize ok_spec to false stop_id = 0 @@ -401,12 +408,15 @@ subroutine mc_shms(p_spec, th_spec, dpp, x, y, z, dxdz, dydz, spec(58) = dpps if (skip_hb) then zdrift=zd_hbin+zd_hbmen+zd_hbmex+zd_hbout - xs=xs + zdrift*dxdzs - ys=ys + zdrift*dydzs + call project(xs,ys,zdrift,decay_flag,dflag,m2,p,pathlen) +c xs=xs + zdrift*dxdzs +c ys=ys + zdrift*dydzs else ! Go to HB Mech entrance. - call transp(spectr,1,decay_flag,dflag,m2,p, - > zd_hbin,pathlen) + zdrift=zd_hbin + call project(xs,ys,zdrift,decay_flag,dflag,m2,p,pathlen) +c call transp(spectr,1,decay_flag,dflag,m2,p, +c > zd_hbin,pathlen) xt=xs yt=ys call rotate_vaxis(1.5,xt,yt) @@ -423,8 +433,10 @@ subroutine mc_shms(p_spec, th_spec, dpp, x, y, z, dxdz, dydz, spec(2)=yt ! Go to HB Mag entrance - call transp(spectr,2,decay_flag,dflag,m2,p, - > zd_hbmen,pathlen) + zdrift=zd_hbmen + call project(xs,ys,zdrift,decay_flag,dflag,m2,p,pathlen) +c call transp(spectr,2,decay_flag,dflag,m2,p, +c > zd_hbmen,pathlen) xt=xs yt=ys call rotate_vaxis(1.5,xt,yt) @@ -459,8 +471,10 @@ subroutine mc_shms(p_spec, th_spec, dpp, x, y, z, dxdz, dydz, spec(6)=yt ! Go to HB exit - call transp(spectr,4,decay_flag,dflag,m2,p, - > zd_hbout,pathlen) + zdrift=zd_hbout + call project(xs,ys,zdrift,decay_flag,dflag,m2,p,pathlen) +c call transp(spectr,4,decay_flag,dflag,m2,p, +c > zd_hbout,pathlen) xt=xs yt=ys call rotate_vaxis(-1.5,xt,yt) @@ -478,51 +492,58 @@ subroutine mc_shms(p_spec, th_spec, dpp, x, y, z, dxdz, dydz, endif ! simulate collimator ------------------------------------------------- if (use_coll) then -c tpathlen=pathlen - zdrift = z_entr - xt=xs + zdrift*dxdzs - yt=ys + zdrift*dydzs -c call project(xt,yt,zdrift,decay_flag,dflag,m2,p,pathlen) !project - if (abs(yt-y_off).gt.h_entr) then - shmsSTOP_slit_hor = shmsSTOP_slit_hor + 1 - goto 500 - endif - if (abs(xt-x_off).gt.v_entr) then - shmsSTOP_slit_vert = shmsSTOP_slit_vert + 1 - goto 500 - endif - if (abs(xt-x_off).gt. (-v_entr/h_entr*abs(yt-y_off)+3*v_entr/2)) then - shmsSTOP_slit_oct = shmsSTOP_slit_oct + 1 - goto 500 - endif - - - - zdrift = z_thick - xt=xt + zdrift*dxdzs - yt=yt + zdrift*dydzs -c call project(xt,yt,zdrift,decay_flag,dflag,m2,p,pathlen) !project - if (abs(yt-y_off).gt.(h_exit)) then - shmsSTOP_slit_hor = shmsSTOP_slit_hor + 1 - goto 500 - endif - if (abs(xt-x_off).gt.(v_exit)) then - shmsSTOP_slit_vert = shmsSTOP_slit_vert + 1 - goto 500 - endif - if (abs(xt-x_off).gt. ((-v_exit)/(h_exit)*abs(yt-y_off)+3*(v_exit)/2)) then - shmsSTOP_slit_oct = shmsSTOP_slit_oct + 1 - goto 500 - endif - spec(56)=xt - spec(57)=yt +c tpathlen=pathlen + zdrift = z_entr + call project(xs,ys,zdrift,decay_flag,dflag,m2,p,pathlen) !project +c xt=xs + zdrift*dxdzs +c yt=ys + zdrift*dydzs + xt=xs + yt=ys + if (abs(yt-y_off).gt.h_entr) then + shmsSTOP_slit_hor = shmsSTOP_slit_hor + 1 + goto 500 + endif + if (abs(xt-x_off).gt.v_entr) then + shmsSTOP_slit_vert = shmsSTOP_slit_vert + 1 + goto 500 + endif + if (abs(xt-x_off).gt. (-v_entr/h_entr*abs(yt-y_off)+3*v_entr/2)) then + shmsSTOP_slit_oct = shmsSTOP_slit_oct + 1 + goto 500 + endif + zdrift = z_thick + call project(xs,ys,zdrift,decay_flag,dflag,m2,p,pathlen) !project +c xt=xt + zdrift*dxdzs +c yt=yt + zdrift*dydzs + xt=xs + yt=ys + if (abs(yt-y_off).gt.(h_exit)) then + shmsSTOP_slit_hor = shmsSTOP_slit_hor + 1 + goto 500 + endif + if (abs(xt-x_off).gt.(v_exit)) then + shmsSTOP_slit_vert = shmsSTOP_slit_vert + 1 + goto 500 + endif + if (abs(xt-x_off).gt. ((-v_exit)/(h_exit)*abs(yt-y_off)+3*(v_exit)/2)) then + shmsSTOP_slit_oct = shmsSTOP_slit_oct + 1 + goto 500 + endif + spec(56)=xt + spec(57)=yt c pathlen=tpathlen endif ! --------------------------------------------------------------------------- ! Go to Q1 IN Mech entrance - call transp(spectr,5,decay_flag,dflag,m2,p, - > zd_q1in,pathlen) + if(use_coll) then + zdrift=zd_q1in-z_entr-z_thick + else + zdrift=zd_q1in + endif + call project(xs,ys,zdrift,decay_flag,dflag,m2,p,pathlen) +c call transp(spectr,5,decay_flag,dflag,m2,p, +c > zd_q1in,pathlen) x_q1_in = xs y_q1_in = ys if ((xs*xs + ys*ys).gt.r_Q1*r_Q1) then @@ -535,8 +556,10 @@ subroutine mc_shms(p_spec, th_spec, dpp, x, y, z, dxdz, dydz, ! Go to Q1 Mag entrance - call transp(spectr,6,decay_flag,dflag,m2,p, - > zd_q1men,pathlen) + zdrift=zd_q1men +c call transp(spectr,6,decay_flag,dflag,m2,p, +c > zd_q1men,pathlen) + call project(xs,ys,zdrift,decay_flag,dflag,m2,p,pathlen) x_q1_men = xs y_q1_men = ys if ((xs*xs + ys*ys).gt.r_Q1*r_Q1) then @@ -568,19 +591,23 @@ subroutine mc_shms(p_spec, th_spec, dpp, x, y, z, dxdz, dydz, endif ! Go to Q1 OUT. - call transp(spectr,9,decay_flag,dflag,m2,p, - > zd_q1out,pathlen) - x_q1_out=xs - y_q1_out=ys - if ((xs*xs + ys*ys).gt.r_Q1*r_Q1) then - shmsSTOP_Q1_out = shmsSTOP_Q1_out + 1 - stop_id = 9 - goto 500 - endif + zdrift=zd_q1out + call project(xs,ys,zdrift,decay_flag,dflag,m2,p,pathlen) +c call transp(spectr,9,decay_flag,dflag,m2,p, +c > zd_q1out,pathlen) + x_q1_out=xs + y_q1_out=ys + if ((xs*xs + ys*ys).gt.r_Q1*r_Q1) then + shmsSTOP_Q1_out = shmsSTOP_Q1_out + 1 + stop_id = 9 + goto 500 + endif ! Go to Q2 IN Mech entrance - call transp(spectr,10,decay_flag,dflag,m2,p, - > zd_q2in,pathlen) + zdrift=zd_q2in + call project(xs,ys,zdrift,decay_flag,dflag,m2,p,pathlen) +c call transp(spectr,10,decay_flag,dflag,m2,p, +c > zd_q2in,pathlen) x_q2_in = xs y_q2_in = ys if ((xs*xs + ys*ys).gt.r_Q2*r_Q2) then @@ -592,8 +619,10 @@ subroutine mc_shms(p_spec, th_spec, dpp, x, y, z, dxdz, dydz, spec(12)=ys ! Go to Q2 Mag entrance - call transp(spectr,11,decay_flag,dflag,m2,p, - > zd_q2men,pathlen) + zdrift=zd_q2men + call project(xs,ys,zdrift,decay_flag,dflag,m2,p,pathlen) +c call transp(spectr,11,decay_flag,dflag,m2,p, +c > zd_q2men,pathlen) x_q2_men = xs y_q2_men = ys if ((xs*xs + ys*ys).gt.r_Q2*r_Q2) then @@ -625,19 +654,23 @@ subroutine mc_shms(p_spec, th_spec, dpp, x, y, z, dxdz, dydz, endif ! Go to Q2 OUT. - call transp(spectr,14,decay_flag,dflag,m2,p, - > zd_q2out,pathlen) - x_q2_out=xs - y_q2_out=ys - if ((xs*xs + ys*ys).gt.r_Q2*r_Q2) then - shmsSTOP_Q2_out = shmsSTOP_Q2_out + 1 - stop_id = 14 - goto 500 - endif + zdrift=zd_q2out + call project(xs,ys,zdrift,decay_flag,dflag,m2,p,pathlen) +c call transp(spectr,14,decay_flag,dflag,m2,p, +c > zd_q2out,pathlen) + x_q2_out=xs + y_q2_out=ys + if ((xs*xs + ys*ys).gt.r_Q2*r_Q2) then + shmsSTOP_Q2_out = shmsSTOP_Q2_out + 1 + stop_id = 14 + goto 500 + endif ! Go to Q3 IN Mech entrance - call transp(spectr,15,decay_flag,dflag,m2,p, - > zd_q3in,pathlen) + zdrift=zd_q3in + call project(xs,ys,zdrift,decay_flag,dflag,m2,p,pathlen) +c call transp(spectr,15,decay_flag,dflag,m2,p, +c > zd_q3in,pathlen) x_q3_in = xs y_q3_in = ys if ((xs*xs + ys*ys).gt.r_Q3*r_Q3) then @@ -649,8 +682,10 @@ subroutine mc_shms(p_spec, th_spec, dpp, x, y, z, dxdz, dydz, spec(14)=ys ! Go to Q3 Mag entrance - call transp(spectr,16,decay_flag,dflag,m2,p, - > zd_q3men,pathlen) + zdrift=zd_q3men + call project(xs,ys,zdrift,decay_flag,dflag,m2,p,pathlen) +c call transp(spectr,16,decay_flag,dflag,m2,p, +c > zd_q3men,pathlen) x_q3_men = xs y_q3_men = ys if ((xs*xs + ys*ys).gt.r_Q3*r_Q3) then @@ -682,15 +717,17 @@ subroutine mc_shms(p_spec, th_spec, dpp, x, y, z, dxdz, dydz, endif ! Go to Q3 OUT. - call transp(spectr,19,decay_flag,dflag,m2,p, - > zd_q3out,pathlen) - x_q3_out=xs - y_q3_out=ys - if ((xs*xs + ys*ys).gt.r_Q3*r_Q3) then - shmsSTOP_Q3_out = shmsSTOP_Q3_out + 1 - stop_id = 19 - goto 500 - endif + zdrift=zd_q3out + call project(xs,ys,zdrift,decay_flag,dflag,m2,p,pathlen) +c call transp(spectr,19,decay_flag,dflag,m2,p, +c > zd_q3out,pathlen) + x_q3_out=xs + y_q3_out=ys + if ((xs*xs + ys*ys).gt.r_Q3*r_Q3) then + shmsSTOP_Q3_out = shmsSTOP_Q3_out + 1 + stop_id = 19 + goto 500 + endif @@ -741,23 +778,27 @@ subroutine mc_shms(p_spec, th_spec, dpp, x, y, z, dxdz, dydz, ! Go to D1 Mech entrance - call transp(spectr,20,decay_flag,dflag,m2,p, - > zd_q3d1trans,pathlen) - x_d_in=xs - y_d_in=ys - if ((xs*xs + ys*ys).gt.r_D1*r_D1) then - shmsSTOP_D1_in = shmsSTOP_D1_in + 1 - stop_id = 20 - goto 500 - endif - spec(15)=xs - spec(16)=ys + zdrift=zd_q3d1trans + call project(xs,ys,zdrift,decay_flag,dflag,m2,p,pathlen) +c call transp(spectr,20,decay_flag,dflag,m2,p, +c > zd_q3d1trans,pathlen) + x_d_in=xs + y_d_in=ys + if ((xs*xs + ys*ys).gt.r_D1*r_D1) then + shmsSTOP_D1_in = shmsSTOP_D1_in + 1 + stop_id = 20 + goto 500 + endif + spec(15)=xs + spec(16)=ys ! Go to D1 entrance flare ! Find intersection with rotated aperture plane. ! Aperture has elliptical form. - call transp(spectr,21,decay_flag,dflag,m2,p, - > zd_d1flare,pathlen) + zdrift=zd_d1flare + call project(xs,ys,zdrift,decay_flag,dflag,m2,p,pathlen) +c call transp(spectr,21,decay_flag,dflag,m2,p, +c > zd_d1flare,pathlen) xt=xs yt=ys call rotate_haxis(9.200,xt,yt) @@ -775,8 +816,10 @@ subroutine mc_shms(p_spec, th_spec, dpp, x, y, z, dxdz, dydz, ! Go to D1 magnetic entrance ! Find intersection with rotated aperture plane. ! Aperture has elliptical form. - call transp(spectr,22,decay_flag,dflag,m2,p, - > zd_d1men,pathlen) + zdrift=zd_d1men + call project(xs,ys,zdrift,decay_flag,dflag,m2,p,pathlen) +c call transp(spectr,22,decay_flag,dflag,m2,p, +c > zd_d1men,pathlen) xt=xs yt=ys call rotate_haxis(9.200,xt,yt) @@ -881,7 +924,7 @@ subroutine mc_shms(p_spec, th_spec, dpp, x, y, z, dxdz, dydz, spec(29)=xt spec(30)=yt -! Go to diple interior 6 +! Go to dipole interior 6 call transp(spectr,28,decay_flag,dflag,m2,p, > zd_d1mid6,pathlen) xt=xs @@ -898,7 +941,7 @@ subroutine mc_shms(p_spec, th_spec, dpp, x, y, z, dxdz, dydz, spec(31)=xt spec(32)=yt -! Go to diple interior 7 +! Go to dipole interior 7 call transp(spectr,29,decay_flag,dflag,m2,p, > zd_d1mid7,pathlen) xt=xs @@ -937,8 +980,10 @@ subroutine mc_shms(p_spec, th_spec, dpp, x, y, z, dxdz, dydz, ! Go to D1 OUT mechanical boundary. ! Find intersection with rotated aperture plane. - call transp(spectr,31,decay_flag,dflag,m2,p, - > zd_d1out,pathlen) + zdrift=zd_d1out + call project(xs,ys,zdrift,decay_flag,dflag,m2,p,pathlen) +c call transp(spectr,31,decay_flag,dflag,m2,p, +c > zd_d1out,pathlen) xt=xs yt=ys call rotate_haxis(-9.20,xt,yt) @@ -954,9 +999,21 @@ subroutine mc_shms(p_spec, th_spec, dpp, x, y, z, dxdz, dydz, spec(38)=yt -! Transport to focal plane. - call transp(spectr,n_classes,decay_flag,dflag,m2,p, - >zd_fp,pathlen) +! Transport to the hut (not all the way to the focal plane) + if (cer_flag) then + zdrift=zd_fp+hcer_1_zentrance ! 307.95 cm to fp - 291.7 cm to Cer entrance + else + if(vac_flag) then + zdrift=zd_fp+hcer_1_zexit ! 307.95 cm to fp - 61.7 cm to Cer/vacuum pipe exit + else + zdrift=zd_fp+hcer_1_zentrance ! 307.95 cm to fp - 291.7 cm to helium bag + endif + endif + + call project(xs,ys,zdrift,decay_flag,dflag,m2,p,pathlen) + +c call transp(spectr,n_classes,decay_flag,dflag,m2,p, +c >zd_fp,pathlen) C If we get this far, the particle is in the hut. diff --git a/shms/mc_shms_hut.f b/shms/mc_shms_hut.f index 42adddf1..b2d2611c 100755 --- a/shms/mc_shms_hut.f +++ b/shms/mc_shms_hut.f @@ -24,12 +24,10 @@ subroutine mc_shms_hut (m2,p,x_fp,dx_fp,y_fp,dy_fp,ms_flag, parameter (r_d = 180./pi) parameter (root = 0.707106781) !square root of 1/2 +C These are set in mc_shms logical*4 cer_flag logical*4 vac_flag - parameter (cer_flag = .true.) ! TRUE means 1st Cerenkov (Ar/Ne) is in front of chambers - parameter (vac_flag = .false.) ! FALSE means helium bag replaces 1st Cerenkov (Ar/Ne) - -c common /hutflag/ cer_flag,vac_flag + common /hutflag/ cer_flag,vac_flag C all parameters, later to take from .parm files C The arguments @@ -95,56 +93,60 @@ subroutine mc_shms_hut (m2,p,x_fp,dx_fp,y_fp,dy_fp,ms_flag, if (cer_flag) then - drift = hcer_1_zentrance - call project(xs,ys,drift,.false.,dflag,m2,p,pathlen) +c this is now taken care of in mc_shms +c drift = hcer_1_zentrance +c call project(xs,ys,drift,.false.,dflag,m2,p,pathlen) radw = hfoil_exit_thick/hfoil_exit_radlen if(ms_flag) call musc(m2,p,radw,dydzs,dxdzs) - radw = hcer_entr_thick/hcer_entr_radlen - if(ms_flag) call musc(m2,p,radw,dydzs,dxdzs) - drift = hcer_1_zmirror - hcer_1_zentrance-hcer_mirglass_thick/2 - radw = drift/hcer_1_radlen - call project(xs,ys,drift,.false.,dflag,m2,p,pathlen) - if(ms_flag ) call musc_ext(m2,p,radw,drift, - > dydzs,dxdzs,ys,xs) + radw = hcer_entr_thick/hcer_entr_radlen + if(ms_flag) call musc(m2,p,radw,dydzs,dxdzs) + drift = hcer_1_zmirror - hcer_1_zentrance-hcer_mirglass_thick/2 + radw = drift/hcer_1_radlen +c call project(xs,ys,drift,.false.,dflag,m2,p,pathlen) + call project(xs,ys,drift,decay_flag,dflag,m2,p,pathlen) + if(ms_flag ) call musc_ext(m2,p,radw,drift, + > dydzs,dxdzs,ys,xs) - radw = hcer_mirglass_thick/hcer_mirglass_radlen - if(ms_flag) call musc(m2,p,radw,dydzs,dxdzs) -c + radw = hcer_mirglass_thick/hcer_mirglass_radlen + if(ms_flag) call musc(m2,p,radw,dydzs,dxdzs) - drift = hcer_1_zexit - hcer_1_zmirror -hcer_mirglass_thick/2 - radw = drift/hcer_1_radlen - call project(xs,ys,drift,decay_flag,dflag,m2,p,pathlen) - if(ms_flag) call musc_ext(m2,p,radw,drift, - > dydzs,dxdzs,ys,xs) - radw = hcer_exit_thick/hcer_exit_radlen - if(ms_flag) call musc(m2,p,radw,dydzs,dxdzs) + drift = hcer_1_zexit - hcer_1_zmirror -hcer_mirglass_thick/2 + radw = drift/hcer_1_radlen + call project(xs,ys,drift,decay_flag,dflag,m2,p,pathlen) + if(ms_flag) call musc_ext(m2,p,radw,drift, + > dydzs,dxdzs,ys,xs) + radw = hcer_exit_thick/hcer_exit_radlen + if(ms_flag) call musc(m2,p,radw,dydzs,dxdzs) else c if vaccum pipe drift to pipe exit which is at same zpos as the cerenkov exit window. if (vac_flag) then - drift = hcer_1_zexit - call project(xs,ys,drift,.false.,dflag,m2,p,pathlen) - radw = hfoil_exit_thick/hfoil_exit_radlen - if(ms_flag) call musc(m2,p,radw,dydzs,dxdzs) - else ! helium bag - drift = hcer_1_zentrance - call project(xs,ys,drift,.false.,dflag,m2,p,pathlen) - radw = hfoil_exit_thick/hfoil_exit_radlen - if(ms_flag) call musc(m2,p,radw,dydzs,dxdzs) - radw = helbag_al_thick/helbag_al_radlen ! assume no distance to Helium bag Al mylar - if(ms_flag) call musc(m2,p,radw,dydzs,dxdzs) - radw = helbag_mylar_thick/helbag_mylar_radlen ! assume no distance to Helium bag Al mylar - if(ms_flag) call musc(m2,p,radw,dydzs,dxdzs) - drift = hcer_1_zexit - hcer_1_zentrance - radw = drift/helbag_hel_radlen - call project(xs,ys,drift,.false.,dflag,m2,p,pathlen) - if(ms_flag) call musc_ext(m2,p,radw,drift, - > dydzs,dxdzs,ys,xs) - radw = helbag_al_thick/helbag_al_radlen ! assume no distance to Helium bag Al mylar - if(ms_flag) call musc(m2,p,radw,dydzs,dxdzs) - radw = helbag_mylar_thick/helbag_mylar_radlen ! assume no distance to Helium bag Al mylar - if(ms_flag) call musc(m2,p,radw,dydzs,dxdzs) +c This is done in mc_shms now +c drift = hcer_1_zexit +c call project(xs,ys,drift,.false.,dflag,m2,p,pathlen) + radw = hfoil_exit_thick/hfoil_exit_radlen + if(ms_flag) call musc(m2,p,radw,dydzs,dxdzs) + else ! helium bag +c Now done in mc_shms +c drift = hcer_1_zentrance +c call project(xs,ys,drift,.false.,dflag,m2,p,pathlen) + radw = hfoil_exit_thick/hfoil_exit_radlen + if(ms_flag) call musc(m2,p,radw,dydzs,dxdzs) + radw = helbag_al_thick/helbag_al_radlen ! assume no distance to Helium bag Al mylar + if(ms_flag) call musc(m2,p,radw,dydzs,dxdzs) + radw = helbag_mylar_thick/helbag_mylar_radlen ! assume no distance to Helium bag Al mylar + if(ms_flag) call musc(m2,p,radw,dydzs,dxdzs) + drift = hcer_1_zexit - hcer_1_zentrance + radw = drift/helbag_hel_radlen +c call project(xs,ys,drift,.false.,dflag,m2,p,pathlen) + call project(xs,ys,drift,decay_flag,dflag,m2,p,pathlen) + if(ms_flag) call musc_ext(m2,p,radw,drift, + > dydzs,dxdzs,ys,xs) + radw = helbag_al_thick/helbag_al_radlen ! assume no distance to Helium bag Al mylar + if(ms_flag) call musc(m2,p,radw,dydzs,dxdzs) + radw = helbag_mylar_thick/helbag_mylar_radlen ! assume no distance to Helium bag Al mylar + if(ms_flag) call musc(m2,p,radw,dydzs,dxdzs) endif endif @@ -158,7 +160,8 @@ subroutine mc_shms_hut (m2,p,x_fp,dx_fp,y_fp,dy_fp,ms_flag, drift = (hdc_1_zpos - 0.5*hdc_nr_plan*hdc_del_plane) > - hcer_1_zexit radw = drift/hair_radlen - call project(xs,ys,drift,.false.,dflag,m2,p,pathlen) +c call project(xs,ys,drift,.false.,dflag,m2,p,pathlen) + call project(xs,ys,drift,decay_flag,dflag,m2,p,pathlen) if (ms_flag) call musc_ext(m2,p,radw,drift,dydzs,dxdzs,ys,xs) c if (1 .eq. 1) call musc_ext(m2,p,radw,drift,dydzs,dxdzs,ys,xs) @@ -224,8 +227,9 @@ subroutine mc_shms_hut (m2,p,x_fp,dx_fp,y_fp,dy_fp,ms_flag, drift = hdc_2_zpos - hdc_1_zpos - hdc_nr_plan*hdc_del_plane C Break this into 2 parts to properly account for decay. C We've already done decay up to the half-way point between the chambers. - call project(xs,ys,drift/2.0,.false.,dflag,m2,p,pathlen) - call project(xs,ys,drift/2.0,decay_flag,dflag,m2,p,pathlen) +c call project(xs,ys,drift/2.0,.false.,dflag,m2,p,pathlen) +c call project(xs,ys,drift/2.0,decay_flag,dflag,m2,p,pathlen) + call project(xs,ys,drift,decay_flag,dflag,m2,p,pathlen) radw = drift/hair_radlen if(ms_flag) call musc_ext(m2,p,radw,drift,dydzs,dxdzs,ys,xs)