33 namespace RestFrames {
36 const std::string& stitle,
37 int N_comb,
int N_object)
39 m_Ncomb(N_comb), m_Nobj(N_object)
41 for(
int i = 0; i < m_Nobj; i++){
43 m_Width.push_back(-1.);
47 MaxProbBreitWignerCombJigsaw::~MaxProbBreitWignerCombJigsaw() {}
50 if(i < 0 || i >= m_Nobj)
53 m_Mass[i] = std::max(mass, 0.);
57 if(i < 0 || i >= m_Nobj)
65 bool MaxProbBreitWignerCombJigsaw::EvaluateMetric(
double& metric)
const {
66 std::vector<TLorentzVector> P;
70 for(
int i = 0; i < m_Nobj; i++)
71 P.push_back(GetDependancyStates(i).GetFourVector());
75 for(
int i = 0; i < m_Nobj; i++){
76 P.push_back(TLorentzVector());
77 int N = GetDependancyStates(i).GetN();
78 for(
int j = 0; j < N; j++){
79 TLorentzVector v = GetDependancyStates(i)[j].GetFourVector();
80 TVector3 p = v.Vect() - v.Vect().Dot(GetTransverseAxis())*GetTransverseAxis();
89 TLorentzVector SUM(0.,0.,0.,0.);
90 for(
int i = 0; i < m_Nobj; i++)
93 for(
int i = 0; i < m_Nobj-1; i++){
95 prob *= GetP((P[i]+SUM).M(), P[i].M(), SUM.M())/M;
99 for(
int i = 0; i < m_Nobj; i++){
101 den = P[i].M2()-m_Mass[i]*m_Mass[i];
103 den += m_Mass[i]*m_Mass[i]*m_Width[i]*m_Width[i];