35 MaxProbBreitWignerCombJigsaw::MaxProbBreitWignerCombJigsaw(
const std::string& sname,
36 const std::string& stitle,
37 int N_comb,
int N_object)
38 : CombinatoricJigsaw(sname, stitle, N_comb, 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() {}
49 void MaxProbBreitWignerCombJigsaw::SetPoleMass(
double mass,
int i){
50 if(i < 0 || i >= m_Nobj)
53 m_Mass[i] = std::max(mass, 0.);
56 void MaxProbBreitWignerCombJigsaw::SetWidth(
double width,
int i){
57 if(i < 0 || i >= m_Nobj)
65 bool MaxProbBreitWignerCombJigsaw::EvaluateMetric(
double& metric)
const {
66 std::vector<TLorentzVector> P;
67 for(
int i = 0; i < m_Nobj; i++)
68 P.push_back(GetDependancyStates(i).GetFourVector());
71 TLorentzVector SUM(0.,0.,0.,0.);
72 for(
int i = 0; i < m_Nobj; i++)
75 for(
int i = 0; i < m_Nobj-1; i++){
77 prob *= GetP((P[i]+SUM).M(), P[i].M(), SUM.M())/M;
81 for(
int i = 0; i < m_Nobj; i++){
83 den = P[i].M2()-m_Mass[i]*m_Mass[i];
85 den += m_Mass[i]*m_Mass[i]*m_Width[i]*m_Width[i];