1 #include "TLorentzVector.h"
5 #include "TMatrixDEigen.h"
7 #define FWMAX 6 // maximum Fox Wolfram moment
105 double Eps(
const TVector3
v1,
const TVector3
v2) {
return (v1*v2)>0. ? 1. : -1.;}
153 fnChrg(0), fnNeut(0), fN(0), fpmaxlab(0.), fpmaxcms(0.),fpminlab(0.), fpmincms(0.), fptmax(0.), fptmin(0.),
154 fptsumlab(0.),fneutetsumlab(0.),fneutesumlab(0.),fchrgptsumlab(0.),fchrgpsumlab(0.),
155 fptsumcms(0.),fneutetsumcms(0.),fneutesumcms(0.),fchrgptsumcms(0.),fchrgpsumcms(0.),
156 fsph(-1.), fapl(-1.), fpla(-1.), fcir(-1.), fFWready(false), fthr(-1.)
166 double pmax=0., ptmax=0., pmaxcms=0.;
167 double pmin=1000., ptmin=1000., pmincms=1000.;
173 for (i=0;i<l.size();++
i)
175 TLorentzVector lv(l[i].P4());
176 int chrg(l[i].Charge());
203 if (lv.P()>pmax) pmax=lv.P();
204 if (lv.Pt()>ptmax) ptmax=lv.Pt();
207 if (lv.P()<pmin) pmin=lv.P();
208 if (lv.Pt()<ptmin) ptmin=lv.Pt();
211 if (lv.PseudoRapidity()>prapmax) prapmax = lv.PseudoRapidity();
231 if (lv.P()>pmaxcms) pmaxcms=lv.P();
233 if (lv.P()<pmincms) pmincms=lv.P();
251 double stot=0, sxx=0, sxy=0, sxz=0, syy=0, syz=0, szz=0;
258 sxx += v.X()*v.X(); sxy += v.X()*v.Y(); sxz += v.X()*v.Z();
259 syy += v.Y()*v.Y(); syz += v.Y()*v.Z();
266 sm(0,0) = sxx/stot; sm(0,1) = sxy/stot; sm(0,2) = sxz/stot;
267 sm(1,0) = sxy/stot; sm(1,1) = syy/stot; sm(1,2) = syz/stot;
268 sm(2,0) = sxz/stot; sm(2,1) = syz/stot; sm(2,2) = szz/stot;
270 TMatrixDEigen ei(sm);
273 fsph = 1.5 * (eiv(1,1) + eiv(2,2));
274 fapl = 1.5 * eiv(2,2);
275 fpla = eiv(1,1) - eiv(2,2);
276 fcir = 2.*eiv(1,1)/(eiv(1,1)+eiv(0,0));
330 if(
fN==0 )
return -1.;
345 TVector3 nnew(0,0,0);
383 if (
fabs(x)>1.)
return -999.;
392 for(
int ll=2; ll<=l; ll++)
394 double pll = (x * (2 * ll - 1) * pmmp1 - (ll - 1) * pmm) / (ll);
406 if (order>
FWMAX)
return -1.;
411 if(
fN==0 )
return -1.;
416 for (i=0; i<
fN-1; ++
i)
420 double pmag1 = p1.Mag();
424 for (j=i+1; j<
fN; ++j)
428 double pmag2 = p2.Mag();
431 double cosPhi =
cos ( p1.Angle(p2) );
435 for( l=0; l<=
FWMAX; l++ )
440 for( l=0; l<=
FWMAX; l++ )
448 if( s<=0. )
return -1.;
474 for (
int i=0;
i<
fN;++
i)
485 for (
int i=0;
i<
fN;++
i)
496 for (
int i=0;
i<
fN;++
i)
507 for (
int i=0;
i<
fN;++
i)
519 for (
int i=0;
i<
fN;++
i)
530 for (
int i=0;
i<
fN;++
i)
541 for (
int i=0;
i<
fN;++
i)
552 for (
int i=0;
i<
fN;++
i)
565 for (
int i=0;
i<
fN;++
i)
576 for (
int i=0;
i<
fN;++
i)
587 for (
int i=0;
i<
fN;++
i)
598 for (
int i=0;
i<
fN;++
i)
611 for (
int i=0;
i<
fN;++
i)
622 for (
int i=0;
i<
fN;++
i)
633 for (
int i=0;
i<
fN;++
i)
644 for (
int i=0;
i<
fN;++
i)
657 for (
int i=0;
i<
fN;++
i)
668 for (
int i=0;
i<
fN;++
i)
679 for (
int i=0;
i<
fN;++
i)
690 for (
int i=0;
i<
fN;++
i)
703 for (
int i=0;
i<
fN;++
i)
714 for (
int i=0;
i<
fN;++
i)
725 for (
int i=0;
i<
fN;++
i)
736 for (
int i=0;
i<
fN;++
i)
749 for (
int i=0;
i<
fN;++
i)
760 for (
int i=0;
i<
fN;++
i)
771 for (
int i=0;
i<
fN;++
i)
782 for (
int i=0;
i<
fN;++
i)
795 for (
int i=0;
i<
fN;++
i)
806 for (
int i=0;
i<
fN;++
i)
817 for (
int i=0;
i<
fN;++
i)
828 for (
int i=0;
i<
fN;++
i)
double ChrgPtSumCms() const
int MultChrgPmaxCms(double pmax)
friend F32vec4 cos(const F32vec4 &a)
double SumNeutEminLab(double emin)
int MultChrgPminCms(double pmin)
double SumPtmaxCms(double ptmax)
double NeutESumLab() const
double NeutEtSumCms() const
EventShape(const CandList &l, TLorentzVector cms)
int MultPmaxLab(double pmax)
double SumPtmaxLab(double ptmax)
double SumChrgPmaxCms(double pmax)
int MultPminLab(double pmin)
int MultNeutEmaxLab(double emax)
int MultPtmaxLab(double ptmax)
int MultNeutEminCms(double emin)
int MultNeutEmaxCms(double emax)
double SumPtminCms(double ptmin)
std::vector< SimpleCand > CandList
double SumNeutEminCms(double emin)
int MultPtmaxCms(double ptmax)
double NeutEtSumLab() const
double SumPminCms(double pmin)
double Eps(const TVector3 v1, const TVector3 v2)
double SumChrgPminLab(double pmin)
double FoxWolfMomH(int order)
double Legendre(int l, double x)
double SumPminLab(double pmin)
int MultNeutEminLab(double emin)
double NeutESumCms() const
double SumNeutEmaxCms(double emax)
int MultChrgPminLab(double pmin)
int MultPminCms(double pmin)
friend F32vec4 fabs(const F32vec4 &a)
int MultPtminLab(double ptmin)
std::vector< int > fCharge
std::vector< TLorentzVector > fLabList
double ChrgPSumCms() const
double SumPmaxLab(double pmax)
double FoxWolfMomR(int order)
double SumChrgPmaxLab(double pmax)
double SumPmaxCms(double pmax)
std::vector< TLorentzVector > fCmsList
int MultPmaxCms(double pmax)
double SumChrgPminCms(double pmin)
double ChrgPSumLab() const
double ChrgPtSumLab() const
int MultPtminCms(double ptmin)
TMatrixT< double > TMatrixD
int MultChrgPmaxLab(double pmax)
double SumPtminLab(double ptmin)
double SumNeutEmaxLab(double emax)