<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE Task SYSTEM "dial.dtd">

<Task id="101-1174">
  <result>
    <HbookResult merge="true">
      <Result state="READY" label="" event_count="0"/>
      <LogicalFile state="READONLY" name="empty">
        <FileCatalog type="NfsFileCatalog" name="/direct/usatlas+u/dladams/dialtest/0.60/grid3.task3"/>
        <FileId name="/direct/usatlas+u/dladams/dialtest/0.60/grid3.task3/cbnt.hbk"/>
      </LogicalFile>
    </HbookResult>
  </result>
  <Text name="cbnt.f" nline="120">
    <Line number="0" text="      integer function cbnt()"/>
    <Line number="1" text="      implicit none"/>
    <Line number="2" text=""/>
    <Line number="3" text="      include 'grid3_cbnt.inc'"/>
    <Line number="4" text=""/>
    <Line number="5" text="      integer cut1"/>
    <Line number="6" text="      real esel"/>
    <Line number="7" text="      integer nsel, i, j, ih, imax, keep(20), ktmp"/>
    <Line number="8" text="      real tmp, order(20)"/>
    <Line number="9" text="      real p0, p1, p2, p3, eet, eeta, ephi"/>
    <Line number="10" text="      real pt_4e, phi_4e, eta_4e, m4esq, m4e"/>
    <Line number="11" text=""/>
    <Line number="12" text="      write(*,*) idnevt, run, event"/>
    <Line number="13" text="      call hf1(1,1.0*run,1.0)"/>
    <Line number="14" text="      call hf1(2,1.0*event,1.0)"/>
    <Line number="15" text="      call hf1(3,1.0*event,1.0)"/>
    <Line number="16" text="      call hf1(4,1.0*event,1.0)"/>
    <Line number="17" text="      call hf1(5,1.0*event,1.0)"/>
    <Line number="18" text="      call hf1(6,1.0*event,1.0)"/>
    <Line number="19" text=""/>
    <Line number="20" text="* Electron info"/>
    <Line number="21" text="* Without cuts."/>
    <Line number="22" text="      write(*,*) eg_nc, ' electrons'"/>
    <Line number="23" text="      call hf1(101, 1.0*eg_nc, 1.0)"/>
    <Line number="24" text="      nsel = 0"/>
    <Line number="25" text="      do i = 1, eg_nc"/>
    <Line number="26" text="        call hf1(102, eg_et(i), 1.0)"/>
    <Line number="27" text="        call hf1(103, eg_eta(i), 1.0)"/>
    <Line number="28" text="        call hf1(104, eg_phi(i), 1.0)"/>
    <Line number="29" text="* Select electrons."/>
    <Line number="30" text="        tmp = esel(i)"/>
    <Line number="31" text="        if ( tmp .gt. 0.0 ) then"/>
    <Line number="32" text="          nsel = nsel + 1"/>
    <Line number="33" text="          keep(nsel) = i"/>
    <Line number="34" text="          order(nsel) = tmp"/>
    <Line number="35" text="        endif"/>
    <Line number="36" text="      enddo"/>
    <Line number="37" text="      call hf1(111, 1.0*nsel, 1.0)"/>
    <Line number="38" text="* Sort electrons."/>
    <Line number="39" text="      do i = 2, nsel"/>
    <Line number="40" text="        do j = i-1, 1, -1"/>
    <Line number="41" text="          if ( order(j+1) .le. order(j) ) goto 100"/>
    <Line number="42" text="          tmp = order(j)"/>
    <Line number="43" text="          ktmp = keep(j)"/>
    <Line number="44" text="          order(j) = order(j+1)"/>
    <Line number="45" text="          keep(j) = keep(j-1)"/>
    <Line number="46" text="          order(j+1) = tmp"/>
    <Line number="47" text="          keep(j+1) = ktmp"/>
    <Line number="48" text="  100   enddo"/>
    <Line number="49" text="      enddo"/>
    <Line number="50" text="      imax = nsel"/>
    <Line number="51" text="      if ( imax .gt. 4 ) then"/>
    <Line number="52" text="        imax = 4"/>
    <Line number="53" text="      endif"/>
    <Line number="54" text="      do i = 1, imax"/>
    <Line number="55" text="        ih = 100 + 10*i"/>
    <Line number="56" text="        j = keep(i)"/>
    <Line number="57" text="        call hf1(ih+2, eg_et(j), 11.0)"/>
    <Line number="58" text="        call hf1(ih+3, eg_eta(j), 1.0)"/>
    <Line number="59" text="        call hf1(ih+4, eg_phi(j), 1.0)"/>
    <Line number="60" text="      enddo"/>
    <Line number="61" text="* Loop over electrons and 4e mass from leading electrons."/>
    <Line number="62" text="      if ( nsel .ge. 4 ) then"/>
    <Line number="63" text="        p0 = 0.0"/>
    <Line number="64" text="        p1 = 0.0"/>
    <Line number="65" text="        p2 = 0.0"/>
    <Line number="66" text="        p3 = 0.0"/>
    <Line number="67" text="        do i = 1, 4"/>
    <Line number="68" text="          j = keep(i)"/>
    <Line number="69" text="          eet = eg_et(j)"/>
    <Line number="70" text="          eeta = eg_eta(j)"/>
    <Line number="71" text="          ephi = eg_phi(j)"/>
    <Line number="72" text="          p0 = p0 + eet*cosh(eeta)"/>
    <Line number="73" text="          p3 = p3 + eet*sinh(eeta)"/>
    <Line number="74" text="          p1 = p1 + eet*cos(ephi)"/>
    <Line number="75" text="          p2 = p2 + eet*sin(ephi)"/>
    <Line number="76" text="        enddo"/>
    <Line number="77" text="        pt_4e = sqrt(p1*p1 + p2*p2)"/>
    <Line number="78" text="        phi_4e = atan2(p2, p1)"/>
    <Line number="79" text="*        eta_4e = atanh(p3/p0)"/>
    <Line number="80" text="        m4esq = p0*p0 - pt_4e*pt_4e - p3*p3"/>
    <Line number="81" text="        m4e = 0.0"/>
    <Line number="82" text="        if ( m4esq .ge. 0.0 ) then"/>
    <Line number="83" text="          m4e = sqrt(m4esq)"/>
    <Line number="84" text="        endif"/>
    <Line number="85" text="        call hf1(152, pt_4e, 11.0)"/>
    <Line number="86" text="*        call hf1(153, eta_4e, 1.0)"/>
    <Line number="87" text="        call hf1(154, phi_4e, 1.0)"/>
    <Line number="88" text="        call hf1(155, m4e, 1.0)"/>
    <Line number="89" text="      endif"/>
    <Line number="90" text=""/>
    <Line number="91" text="*Exit"/>
    <Line number="92" text="      cbnt = 1"/>
    <Line number="93" text="      return"/>
    <Line number="94" text="      end"/>
    <Line number="95" text=""/>
    <Line number="96" text="* Cut 1 on event."/>
    <Line number="97" text="      integer function cut1()"/>
    <Line number="98" text="      include 'grid3_cbnt.inc'"/>
    <Line number="99" text="      cut1 = 0"/>
    <Line number="100" text="      if ( eg_nc .ge. 4 ) then"/>
    <Line number="101" text="        cut1 = 1"/>
    <Line number="102" text="      endif"/>
    <Line number="103" text="      return"/>
    <Line number="104" text="      end"/>
    <Line number="105" text=""/>
    <Line number="106" text="* Electron sorting function. Higher values will be placed"/>
    <Line number="107" text="* ahead of lower ones. Anything &amp;lt;= 0 is rejected."/>
    <Line number="108" text="      real function esel(ielec)"/>
    <Line number="109" text="      implicit none"/>
    <Line number="110" text="      integer ielec"/>
    <Line number="111" text="      real val"/>
    <Line number="112" text="      include 'grid3_cbnt.inc'"/>
    <Line number="113" text="      esel = 0.0"/>
    <Line number="114" text="      val = eg_et(ielec)"/>
    <Line number="115" text="      if ( val .ge. 5 ) then"/>
    <Line number="116" text="        esel = val"/>
    <Line number="117" text="      endif"/>
    <Line number="118" text="      return"/>
    <Line number="119" text="      end"/>
  </Text>
</Task>

