<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p>Greetings,</p>
    <p>Here is the method for the DOCA</p>
    <p><br>
    </p>
    <p>  <font color="#ff0000">  vEg.SetPxPyPzE(0.0,0.0,egam,egam);  
        //beam four-momemtum info<br>
            vP.SetPxPyPzE(P_Px,P_Py,P_Pz,E_P);    //proton four-momemtum
        info<br>
            vPip.SetPxPyPzE(Pip_Px,Pip_Py,Pip_Pz,E_Pip);        //pi+
        four-momemtum info<br>
            vPim.SetPxPyPzE(Pim_Px,Pim_Py,Pim_Pz,E_Pim);    //pi-
        four-momemtum info</font></p>
    <p><font color="#ff0000">//-----------------------------------------------DOCA-------------------------------------------------------------------------<br>
            <br>
            vertex3_P.SetXYZ(prot_vx, prot_vy, prot_vz);    //vertex of
        proton<br>
            vertex3_Pip.SetXYZ(pip_vx, pip_vy, pip_vz);     //vertex of
        pi+<br>
            vertex3_Pim.SetXYZ(pim_vx, pim_vy, pim_vz); //vertex of pi-<br>
            vertex3_Eg.SetXYZ(prot_vx, prot_vy, prot_vz);  //vertex of
        beam photon this should be proton vertex for non-deteached
        vertices<br>
            <br>
            TVector3 PipPimMid = MatchTracks(vertex3_Pip, vPip.Vect(),
        vertex3_Pim, vPim.Vect(), &PipPimDist, &PipPimStat);<br>
            <br>
            PipPim_Midx = PipPimMid.X();<br>
            PipPim_Midy = PipPimMid.Y();<br>
            PipPim_Midz = PipPimMid.Z();<br>
            <br>
            TVector3 PPhotMid = MatchTracks(vertex3_P, vP.Vect(),
        vertex3_Eg, vEg.Vect(), &PPhotDist, &PPhotStat);<br>
            <br>
            TVector3 DIFFER =  PipPimMid - PPhotMid;<br>
            DOCA_ang = (DIFFER.Dot(IV_PipPimVec.Vect()) / (DIFFER.Mag()
        * IV_PipPimVec.Vect().Mag()) ); //minimize this<br>
      </font></p>
    <p><br>
    </p>
    <p>The MatchTracks codes is as follows</p>
    <p><br>
    </p>
    <p><font color="#ff0000">TVector3  MatchTracks( TVector3 v1,
        TVector3 p1,  TVector3 v2, TVector3 p2, Double_t *dist, Int_t
        *stat)<br>
        {<br>
          Double_t R1 = 0;<br>
          TVector3 diff = (v1) - (v2);<br>
          <br>
          TVector3 p1unit = p1.Unit();<br>
          TVector3 p2unit = p2.Unit();<br>
          <br>
          Double_t R = p1unit.Dot(p2unit);<br>
          <br>
          if( R >= 1. ) {<br>
            cout << "lines are parallel" << endl;<br>
            (*stat) = -1;<br>
            return(-1);<br>
          }<br>
          <br>
          else {<br>
            R1 = 1 / ( 1- R*R );<br>
          }<br>
          <br>
          TVector3 RP21 = p2unit*R - p1unit;<br>
          TVector3 RP12 = p2unit - p1unit*R;<br>
          <br>
          Double_t DOT21 = diff.Dot(RP21);<br>
          Double_t DOT12 = diff.Dot(RP12);<br>
          <br>
          TVector3 M1 = v1 + p1unit*R1*DOT21;<br>
          TVector3 M2 = v2 + p2unit*R1*DOT12;<br>
          <br>
          TVector3 diff1 = M2 - M1;<br>
          if(M2.Mag() > M1.Mag()){<br>
            (*dist) = -diff1.Mag();<br>
          }<br>
          else{(*dist) = diff1.Mag();}<br>
          <br>
          (*stat) = 1;<br>
          TVector3 MidPoint = ( M1 + M2 ) * 0.5;<br>
          return  MidPoint;<br>
        }</font><br>
    </p>
    <p><br>
    </p>
    <pre class="moz-signature" cols="72">BR
MK
----------------------------------------
Michael C. Kunkel, PhD
Forschungszentrum Jülich
Nuclear Physics Institute and Juelich Center for Hadron Physics
Experimental Hadron Structure (IKP-1)
<a class="moz-txt-link-abbreviated" href="http://www.fz-juelich.de/ikp">www.fz-juelich.de/ikp</a></pre>
    <br>
    <blockquote
cite="mid:BY2PR05MB235807ED65A64E4A8E981E3CE33F0@BY2PR05MB2358.namprd05.prod.outlook.com"
      type="cite">
    </blockquote>
    <br>
  </body>
</html>