@@ -5,8 +5,8 @@ ClassImp(Dihadron)
55
66Dihadron::Dihadron(TLorentzVector vecHad1, TLorentzVector vecHad2, Kinematics *K)
77{
8- const TLorentzVector &vecEB = K->vecEleBeam ;
9- const TLorentzVector &vecIB = K->vecIonBeam ;
8+ const TLorentzVector &vecE = K->vecEleBeam ;
9+ const TLorentzVector &vecP = K->vecIonBeam ;
1010 const TLorentzVector &vecL = K->vecElectron ;
1111 const TLorentzVector &vecQ = K->vecQ ;
1212 const TLorentzVector &vecW = K->vecW ;
@@ -23,42 +23,44 @@ Dihadron::Dihadron(TLorentzVector vecHad1, TLorentzVector vecHad2, Kinematics *K
2323 for (int h=0 ; h<2 ; h++)
2424 K->BoostToIonFrame (vecH[h],IvecH[h]);
2525
26- // invariant mass, missing mass, Z, PhPerp
26+ // invariant mass, missing mass, Z, PhPerp, Zeta
2727 Mh = vecPh.M ();
2828 MX = TMath::Abs ((vecW-vecPh).M ());
29- Z = vecIB .Dot (vecPh) / vecIB .Dot (vecQ);
29+ Z = vecP .Dot (vecPh) / vecP .Dot (vecQ);
3030 for (int h=0 ; h<2 ; h++)
31- hadZ[h] = vecIB .Dot (vecH[h]) / vecIB .Dot (vecQ);
31+ hadZ[h] = vecP .Dot (vecH[h]) / vecP .Dot (vecQ);
3232 PhPerp = Kinematics::Reject (IvecPh.Vect (),IvecQ.Vect ()).Mag ();
33-
34- // Theta
35- auto boost_com = -1 * vecPh.BoostVector (); // boost to dihadron CoM frame
36- TLorentzVector vecH_com[2 ];
37- for (int h=0 ; h<2 ; h++) {
38- vecH_com[h] = vecH[h];
39- vecH_com[h].Boost (boost_com);
40- }
41- Theta = Kinematics::AngleSubtend (vecH_com[0 ].Vect (),vecPh.Vect ());
33+ Zeta = 2 * vecR.Dot (vecP) / vecPh.Dot (vecP);
4234
4335 // PhiH
4436 PhiH = Kinematics::PlaneAngle (
45- vecQ .Vect (), vecL .Vect (),
46- vecQ .Vect (), vecPh .Vect ()
37+ IvecQ .Vect (), IvecL .Vect (),
38+ IvecQ .Vect (), IvecPh .Vect ()
4739 );
4840
49- // PhiR (calculated in ion rest frame)
50- TVector3 momHad_perp[2 ]; // perp-frame hadron 3-momenta
51- for (int h=0 ; h<2 ; h++)
52- momHad_perp[h] = Kinematics::Reject (IvecH[h].Vect (), IvecQ.Vect ());
53- auto momRT = 1 / ( hadZ[0 ] + hadZ[1 ] ) *
54- ( hadZ[1 ] * momHad_perp[0 ] - hadZ[0 ] * momHad_perp[1 ] );
41+ // PhiR
42+ Double_t coeff =
43+ K->x * (Zeta*Mh*Mh - (vecH[0 ].M2 () - vecH[1 ].M2 ()) ) /
44+ ( K->Q2 * Z );
45+ TLorentzVector vecRT = vecR - (Zeta/2 )*vecPh + coeff*vecP;
46+ TLorentzVector IvecRT;
47+ K->BoostToIonFrame (vecRT,IvecRT);
5548 PhiR = Kinematics::PlaneAngle (
5649 IvecQ.Vect (), IvecL.Vect (),
57- IvecQ.Vect (), momRT
50+ IvecQ.Vect (), IvecRT. Vect ()
5851 );
5952
6053 // PhiS
6154 PhiS = K->phiS ;
55+
56+ // Theta
57+ Double_t MRterm[2 ];
58+ for (int h=0 ; h<2 ; h++)
59+ MRterm[h] = TMath::Sqrt ( vecH[h].M2 () + vecR.Vect ().Mag2 () );
60+ Theta = TMath::ACos (
61+ ( MRterm[0 ] - MRterm[1 ] - Mh*Zeta ) /
62+ ( 2 * vecR.Vect ().Mag () )
63+ );
6264}
6365
6466// //////////////////////////////////////////////////////////////////
0 commit comments