BOSS 7.1.1
BESIII Offline Software System
Loading...
Searching...
No Matches
PionZeroList.cxx
Go to the documentation of this file.
2const double m_true_pi0 = 0.135;
3using namespace std;
4
5//====================
6//********************
7//====================
8PionZero::PionZero(HepLorentzVector &vp_gam_1, int &index_gam_1, HepLorentzVector &vp_gam_2, int &index_gam_2):
9 m_vp_1(vp_gam_1),
10 m_index_1(index_gam_1),
11 m_vp_2(vp_gam_2),
12 m_index_2(index_gam_2){
13 m_vp_total = m_vp_1 + m_vp_2;
14 m_inv_mass = m_vp_total.m();
15 cal_goodness(0);
16}
17
18////********************
19//PionZero::PionZero():
20// m_vp_1(0),
21// m_index_1(x_gam_1),
22// m_vp_2(vp_gam_2),
23// m_index_2(index_gam_2){
24// m_vp_total = m_vp_1 + m_vp_2;
25// m_inv_mass = m_vp_total.m();
26// cal_goodness(0);
27//}
28
29//********************
30void PionZero::cal_goodness( int good_method ){
31 switch(good_method){
32 case 0:
33 m_goodness = fabs(m_inv_mass-m_true_pi0);
34 break;
35 case 1:
36 cout << "not complete yet, sorry" << endl;
37 break;
38 default:
39 cout << "this default do nothing" << endl;
40 }
41}
42
43//====================
44//********************
45//====================
47 m_gam_vp(input_vp),
48 m_pi0_vp(0),
49 Vpi0_list(0),
50 m_low_cut(0.11),
51 m_high_cut(0.15){
52 int m_Ngam(input_vp.size());
53 if(m_Ngam<2) cout << "number of photons less than 2" << endl;
54 for(int i=0; i<m_Ngam-1; i++){
55 for(int j=i+1; j<m_Ngam; j++){
56 double m_temp_mass((m_gam_vp[i]+m_gam_vp[j]).m());
57 if(m_temp_mass<m_low_cut || m_temp_mass>m_high_cut) continue;
58 PionZero m_temp_pi0(m_gam_vp[i], i, m_gam_vp[j], j);
59 Vpi0_list.push_back(m_temp_pi0);
60 }
61 }
62 m_num_pi0 = Vpi0_list.size();
63}
64
65//*******************
66void PionZeroList::set_cut(int index, double cut){
67 if(index < 1) m_low_cut = cut;
68 else m_high_cut = cut;
69 std::vector<PionZero>::iterator m_ind;
70 for(m_ind=Vpi0_list.begin(); m_ind!=Vpi0_list.end(); m_ind++){
71 double m_temp_mass((*m_ind).get_mass());
72 if(m_temp_mass<m_low_cut||m_temp_mass>m_high_cut) Vpi0_list.erase(m_ind);
73 }
74 refresh();
75}
76
77//********************
78void PionZeroList::sort(){ // sort the pion0 list respect to goodness
79 std::sort(Vpi0_list.begin(), Vpi0_list.end(), f_less());
80 refresh();
81}
82
83//********************
85 std::vector<int> gam_index_v(0);
86 std::vector<PionZero> temp_pi0_list(0);
87 for(int i=0; i<Vpi0_list.size(); i++){
88 int temp_one(Vpi0_list[i].get_index(0));
89 int temp_two(Vpi0_list[i].get_index(1));
90 if(find(gam_index_v.begin(), gam_index_v.end(), temp_one) != gam_index_v.end() ) continue;
91 if(find(gam_index_v.begin(), gam_index_v.end(), temp_two) != gam_index_v.end() ) continue;
92 gam_index_v.push_back(temp_one);
93 gam_index_v.push_back(temp_two);
94 temp_pi0_list.push_back(Vpi0_list[i]);
95 }
96 Vpi0_list = temp_pi0_list;
97 refresh();
98}
99
100//********************
102 m_num_pi0 = Vpi0_list.size();
103 m_pi0_vp.clear();
104 for(int i=0; i<m_num_pi0; i++) m_pi0_vp.push_back(Vpi0_list[i].get_pi0_vp());
105}
106
107//********************
109 std::cout << "number of pion0 in the list " << m_num_pi0 << std::endl;
110 for(int i=0; i<Vpi0_list.size(); i++){
111 std::cout << "i= " << i << endl;
112 std::cout << "pi0 mass " << Vpi0_list[i].get_mass() << endl;
113 std::cout << "pi0 goodness " << Vpi0_list[i].get_goodness() << endl;
114 std::cout << "pi0 four momentum " << Vpi0_list[i].get_pi0_vp() << endl;
115 std::cout << "fir gam index " << Vpi0_list[i].get_index(0) << endl;
116 std::cout << "sec gam index " << Vpi0_list[i].get_index(1) << endl;
117 std::cout << "fir gam mom " << Vpi0_list[i].get_gam_vp(0) << endl;
118 std::cout << "sec gam mom " << Vpi0_list[i].get_gam_vp(1) << endl;
119 }
120}
121
const double m_true_pi0
std::vector< HepLorentzVector > Vp4
void set_cut(int index, double cut)
PionZeroList(Vp4 &input_vp)
void cal_goodness(int good_method)