************************************************************ subroutine VMsel(eCand,eTrkMatch,eCAL,Mtrknoe_pi, & Mtrknoe_k,UnmEn_pi,UnmEn_k,Fetatr,Betatr, & ctd_pt,Empz_tr_pi,Et_tr,E_tr_pi, > phi_tr,ierr) ************************************************************ * * Vector meson selection tools for ZES 2. * Teresa Monteiro, 17.11.97 (teresa.monteiro@desy.de) * * INPUT * real eCand: (Corrected) Electron energy. * * integer eTrkMatch: Id of track matched to electron. * * real eCAL: Total energy in the CAL. * * OUTPUT: * real Mtrknoe_pi: Total mass of non-electron vertex tracks, * assuming all tracks to be from pions. * * real Mtrknoe_k: Total mass of non-electron vertex tracks, * assuming all tracks to be from kaons. * * real UnmEn_pi: Difference between * -the sum of the energy of all * non-electron vertex tracks * (assuming pions) * and * -the total energy in the UCAL * subtracted of eventual electron energy. * real UnmEn_k: Difference between * -the total energy in the UCAL * subtracted of eventual electron energy. * and * -the sum of the energy of all * non-electron vertex tracks * (assuming kaons) * * real Fetatr: Eta of the most forward non-electron track. * real Betatr: Eta of the most backward non-electron track. * * real ctd_pt: Module of the Vector pt from CTD * integer ierr: 0: OK * -1: failed (wrong/non-calc. vars set to -999) ************************************************************ implicit none * c COMMON BLOCKS: * #include "vctpar.inc" #include "vctrhl.inc" #include "partap.inc" #include "vmvars.inc" c VMVARS: VARS USED FOR ZES CLEAN RHO SELECTION * c ARGUMENTS: * real eCand, eCAL integer eTrkMatch real Mtrknoe_pi,Mtrknoe_k,UnmEn_pi,UnmEn_k,Fetatr,Betatr * * c LOCAL VARS: * integer nonetrk integer TrkID,ierr real ptr4k(20) real p(3),theta,pfull real pi,mpi,mk parameter (pi= 3.14159) parameter (mpi=0.139570) parameter (mk= 0.493677) real totp(3),totp4pi,totp4k real ctd_pt real Empz_tr_pi,Et_tr,E_tr_pi,phi_tr Logical OK ************************************************************* * c Initialize output vars Mtrknoe_pi=-999. Mtrknoe_k= -999. UnmEn_pi= -999. UnmEn_k= -999. Fetatr= -999. Betatr= -999. ierr= -1 * c How many vertex tracks ? (if >20 quit) ntrvtx=coutab(VCTPAR) if(ntrvtx.gt.20)goto 999 * c Loop over all tracks and get relevant quantities do TrkID=1,ntrvtx * c Reinitialize vars for each track theta=-999. pfull=-999. ok= .false. call vzero(p,3) ptr(TrkId,1)= -999. ptr(TrkId,2)= -999. ptr(TrkId,3)= -999. ptr4pi(TrkId)=-999. ptr4k(TrkId)= -999. eta(TrKid)= -999. ctd_pt = -999. c Access the bank VCTPAR_ID=TrkID call GETTAB(VCTPAR) call NATREL(VCTPAR,VCTPAR_VCTRHL,VCTRHL,ok) if(.not.ok)goto 100 * c Calculate/fill intermediate vars theta= pi/2.-atan(VCTRHL_tdip) * pfull= VCTRHL_pgevc*abs(VCTRHL_qovr/VCTPAR_Par(3))* & sin(theta)/sin(VCTPAR_Par(1)) * p(1)= pfull*sin(VCTPAR_Par(1))*cos(VCTPAR_Par(2)) p(2)= pfull*sin(VCTPAR_Par(1))*sin(VCTPAR_Par(2)) p(3)= pfull*cos(VCTPAR_Par(1)) * eta(TrkID)= -1.*log(tan(VCTPAR_Par(1)/2.)) charge(TrkId)=1 if(VCTPAR_Par(3).lt.0)charge(TrkId)=-1 * 100 continue * ptr(TrkID,1)= p(1) ptr(TrkID,2)= p(2) ptr(TrkID,3)= p(3) ptr4pi(TrkID)=sqrt(Mpi**2. & +ptr(TrkId,1)**2.+ptr(TrkId,2)**2.+ptr(TrkId,3)**2.) ptr4k(TrkID)= sqrt(Mk**2. & +ptr(TrkId,1)**2.+ptr(TrkId,2)**2.+ptr(TrkId,3)**2.) * enddo * c (Re)initialize necessary vars Fetatr=-999. Betatr= 999. Empz_tr_pi = -999. E_tr_pi = -999. Phi_tr = -999. ctd_pt =999. totp4pi= 0. totp4k= 0. Et_tr=0. call vzero (totp,3) * c Calculate final quantities: do TrkId=1,ntrvtx * c "Eliminate" electron track, if any: if(eTrkMatch.eq.TrkId)goto 200 totp(1)=totp(1)+ptr(TrkId,1) totp(2)=totp(2)+ptr(TrkId,2) Et_tr=Et_tr+sqrt(ptr(TrkId,1)**2+ptr(TrkId,2)**2) totp(3)=totp(3)+ptr(TrkId,3) totp4pi=totp4pi+ptr4pi(TrkID) totp4k= totp4k+ptr4k(TrkID) if(eta(TrkId).gt.Fetatr)Fetatr=eta(TrkId) if(eta(TrkId).lt.Betatr)Betatr=eta(TrkId) 200 continue enddo Mtrknoe_pi=sqrt(totp4pi**2-totp(1)**2-totp(2)**2-totp(3)**2) Mtrknoe_k= sqrt(totp4k**2 -totp(1)**2-totp(2)**2-totp(3)**2) if(Betatr.eq.999.)Betatr=-999. if(ecand.lt.-900) ecand = 0 unmEN_pi=(ecal-ecand)-totp4pi unmEN_k= (ecal-ecand)-totp4k C Add the electron, for Masahiro's variables, and compute them if(eTrkMatch.gt.0) then TrkId = eTrkMatch totp(1)=totp(1)+ptr(TrkId,1) totp(2)=totp(2)+ptr(TrkId,2) Et_tr=Et_tr+sqrt(ptr(TrkId,1)**2+ptr(TrkId,2)**2) totp(3)=totp(3)+ptr(TrkId,3) totp4pi=totp4pi+ptr4pi(TrkID) endif Empz_tr_pi=totp4pi-totp(3) E_tr_pi=totp4pi Phi_tr = atan2(totp(2),totp(1)) ctd_pt=sqrt(totp(1)**2+totp(2)**2) ierr=0 999 continue c Output for clean rho selection convenience return end ************************************************************** ******************************************************************