30 std::vector<int>* fs_charges,
34 : _fsmomenta(fs_momenta), _fs_charges(fs_charges),
35 _beam(beam),_pbeam(*beam),_qbeam(beam_charge),_vertex(vertex)
49 for(
unsigned int ifs=0;ifs<nfs;++ifs){
62 TLorentzVector result;
64 for(
unsigned int i=0;
i<npart;++
i){
73 TLorentzVector beam=*
_beam;
74 TLorentzVector
p=this->
p();
76 TVector3 dir=beam.Vect();
77 double const mpi=beam.M();
78 double k=sqrt(p.E()*p.E()-mpi*
mpi)/dir.Mag();
80 beam.SetVectM(dir,mpi);
81 return -(beam-
p).
M2();
89 TLorentzVector tempX=pX;
90 TLorentzVector p2=pX-p1;
101 TVector3 N=pMother.Vect().Cross(tempX.Vect());
102 TVector3 rot=N.Cross(y);
107 TLorentzRotation T(t);
108 TLorentzRotation L1(T);
118 TVector3 Xdir=tempX.Vect();
120 a=Xdir.Angle(TVector3(0,0,1));
123 t2.Rotate(-a,TVector3(0,1,0));
124 T=TLorentzRotation(t2);
136 TVector3 boost=-tempX.BoostVector();
155 TLorentzVector tempX=
p();
159 TVector3 N=
_pbeam.Vect().Cross(tempX.Vect());
160 TVector3 rot=N.Cross(y);
165 TLorentzRotation T(t);
166 TLorentzRotation L1(T);
173 TVector3 boost=-tempX.BoostVector();
181 TVector3 beamdir=
_pbeam.Vect();
183 a=beamdir.Angle(TVector3(0,0,1));
186 t2.Rotate(a,TVector3(0,1,0));
187 T=TLorentzRotation(t2);
195 for(
unsigned int i=0;
i<npart; ++
i){
223 for(
unsigned int np=1;np<=
n;++np){
225 int* permu=
new int[np];
239 for(
int y=x+1;y<n-k+
i;++y){
247 for(
int j=0;j<k;++j){
270 <<q<<
" "<< std::setprecision(9)
280 q=pi.
q()>0 ? +1 : -1;
281 geantId= q>0 ? 8 : 9;