8 #include "TDecompSVD.h"
9 #include "TLorentzVector.h"
24 TMatrixD MomentumTensor(3,3);
27 for(std::vector<fastjet::PseudoJet>::const_iterator Itr=
clusters.begin(); Itr!=
clusters.end(); ++Itr) {
28 MomentumTensor(0,0) += (*Itr).px()*(*Itr).px();
29 MomentumTensor(0,1) += (*Itr).px()*(*Itr).py();
30 MomentumTensor(0,2) += (*Itr).px()*(*Itr).pz();
31 MomentumTensor(1,0) += (*Itr).py()*(*Itr).px();
32 MomentumTensor(1,1) += (*Itr).py()*(*Itr).py();
33 MomentumTensor(1,2) += (*Itr).py()*(*Itr).pz();
34 MomentumTensor(2,0) += (*Itr).pz()*(*Itr).px();
35 MomentumTensor(2,1) += (*Itr).pz()*(*Itr).py();
36 MomentumTensor(2,2) += (*Itr).pz()*(*Itr).pz();
38 P2Sum += (*Itr).px()*(*Itr).px()+(*Itr).py()*(*Itr).py()+(*Itr).pz()*(*Itr).pz();
41 double Aplanarity = -1;
42 double Sphericity = -1;
45 const double inv_P2Sum = 1. / P2Sum;
46 for(
int i=0;
i<3;
i++) {
47 for(
int j=0; j<3; j++) {
48 MomentumTensor(
i,j) *= inv_P2Sum;
52 TDecompSVD * aSVD =
new TDecompSVD(MomentumTensor);
53 TVectorD
Lambda = aSVD->GetSig();
55 Aplanarity = 1.5*
Lambda[2];