Skip to content

Commit 2d92a79

Browse files
committed
use covariant formulas for PhiR and Theta
1 parent 324565e commit 2d92a79

File tree

2 files changed

+26
-24
lines changed

2 files changed

+26
-24
lines changed

src/Dihadrons.cxx

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ ClassImp(Dihadron)
55

66
Dihadron::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
////////////////////////////////////////////////////////////////////

src/Dihadrons.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class Dihadron {
1111
Dihadron() {};
1212
Dihadron(TLorentzVector vecHad1, TLorentzVector vecHad2, Kinematics *K);
1313
~Dihadron() {};
14-
Double_t Mh, MX, Z, PhPerp, Theta, PhiH, PhiR, PhiS;
14+
Double_t Mh, MX, Z, PhPerp, Theta, PhiH, PhiR, PhiS, Zeta;
1515
Double_t hadZ[2];
1616
private:
1717
ClassDef(Dihadron,1);

0 commit comments

Comments
 (0)