この辺は公式の各クラスのreferenceを見たほうが速いと思う。
TVector2 TVector3 TRotation TLorentzVector TLorentzRotation
TVector2 v(0,1); TVector2 v2(2,3); v.DeltaPhi(&v2);
下のメソッドは静的メンバ関数なので実体なしで使える。
TVector2::Phi_mpi_pi(φ);//[-pi,pi] TVector2::Phi_0_2pi(φ);//[0,2*pi]
3次元Vectorを扱うクラス。
TVector3 v(1,2,3);
TVector3 v; v.SetMagThetaPhi(r,θ,φ); v.SetPtEtaPhi(Pt,η,φ); v.SetPtThetaPhi(Pt,θ,φ);
v.X(); v.Y(); v.Z(); v.Phi(); v.Theta(); v.PseudoRapidity();//=0.5*log( (Mag()+fZ)/(Mag()-fZ) ) v.Mag();//=sqrt(x*x+y*y+z*z) v.Mag2();//=x*x+y*y+z*z v.Perp();//=sqrt(x*x+y*y) v.Perp2();//=sqrt(x*x+y*y)
v.DeltaR(&v2);//sqrt(Δη*Δη+Δφ*Δφ)
DeltaRはsqrt(Δx*Δx+Δy*y+Δz*Δz)ではないことに注意。
4vectorを扱う便利なクラス。(x,y,z,t)と(px,py,pz,E)の両方のvectorを扱いやすいように、全く同じメソッドが二種類分用意されている。すばらしい。
TLorentzVector v;// (0,0,0,0)で初期化される TLorentzVector v(1., 1., 1., 1.); TLorentzVector v(TVector3(1., 2., 3.),4.); v.SetPtEtaPhiE(Pt,η,φ,E); v.SetPtEtaPhiM(Pt,η,φ,M); v.SetPxPyPzE(Px,Py,Pz,E); v.SetXYZM(x,y,z,M); v.SetXYZT(x,y,z,t);
v.Pt(); v.Eta(); v.Phi(); v.M(); v.E();
ATLAS(に限らないと思うが)では各粒子とJetのPt,eta,phiの情報をいれたBranchをTTreeにいれているので、このクラスがとても便利。
例えばa→bcというchannelでaのMassをreconstructionしたい場合は、それぞれの4vectorを足せばいいので、
TLorentzVector b; b.SetPtEtaPhiM(b_Pt,b_η,b_φ,b_M); TLorentzVector c; c.SetPtEtaPhiM(c_Pt,c_η,c_φ,c_M); TLorentzVector a = b + c; a.M();//aのMassがreconstructionされる
2つの粒子の位置関係を使って解析を行うということもとても簡単にできる。
b.DeltaR(&c);//ΔRを求める b.DeltaPhi(&c);//Δφを求める