|
|
AnalysisBase Documentation
1.2.0
|
Go to the documentation of this file.
11 , const double vds[4], const double ptm[2]
12 , const double ecm, const double mxlo)
20 double ptus[2] = {-v1[1]-v2[1]-vds[1]-ptm[0],-v1[2]-v2[2]-vds[2]-ptm[1]};
21 m_pb = sqrt(pow(ptus[0],2)+pow(ptus[1],2));
32 double vb1[4] = {v1[0],(v1[1]*ptus[0]+v1[2]*ptus[1])/m_pb
33 ,(v1[1]*ptus[1]-v1[2]*ptus[0])/m_pb,v1[3]};
34 double vb2[4] = {v2[0],(v2[1]*ptus[0]+v2[2]*ptus[1])/m_pb
35 ,(v2[1]*ptus[1]-v2[2]*ptus[0])/m_pb,v2[3]};
36 double vey1 = sqrt(fmax(pow(vb1[0],2)-pow(vb1[1],2)-pow(vb1[3],2),0.0));
37 double vey2 = sqrt(fmax(pow(vb2[0],2)-pow(vb2[1],2)-pow(vb2[3],2),0.0));
38 double ax = vb1[1]*vey2+vb2[1]*vey1;
44 double beta = m_pb/ecm;
45 double gamma = 1.0/sqrt(1.0-beta*beta);
46 double vb1p[4] = {gamma*(vb1[0]+vb1[1]*beta),gamma*(vb1[1]+vb1[0]*beta)
48 double vb2p[4] = {gamma*(vb2[0]+vb2[1]*beta),gamma*(vb2[1]+vb2[0]*beta)
50 double vey1p = sqrt(fmax(pow(vb1p[0],2)-pow(vb1p[1],2)
51 -pow(vb1p[3],2),0.0));
52 double vey2p = sqrt(fmax(pow(vb2p[0],2)-pow(vb2p[1],2)
53 -pow(vb2p[3],2),0.0));
54 double axecm = vb1p[1]*vey2p+vb2p[1]*vey1p;
61 beta = m_pb/(v1[0]+v2[0]+vds[0]
62 +sqrt(pow(ptm[0],2)+pow(ptm[1],2)+4.0*pow(mxlo,2)));
63 gamma = 1.0/sqrt(1.0-beta*beta);
64 double vb1pp[4] = {gamma*(vb1[0]+vb1[1]*beta),gamma*(vb1[1]+vb1[0]*beta)
66 double vb2pp[4] = {gamma*(vb2[0]+vb2[1]*beta),gamma*(vb2[1]+vb2[0]*beta)
68 double vey1pp = sqrt(fmax(pow(vb1pp[0],2)-pow(vb1pp[1],2)
69 -pow(vb1pp[3],2),0.0));
70 double vey2pp = sqrt(fmax(pow(vb2pp[0],2)-pow(vb2pp[1],2)
71 -pow(vb2pp[3],2),0.0));
72 double axehat = vb1pp[1]*vey2pp+vb2pp[1]*vey1pp;
73 m_mctehat = mctnorm(vb1pp,vb2pp);
75 if ( (ax>=0) || (axecm>=0) ) {
81 return sqrt(fmax(pow(vey1+vey2,2)-pow(vb1[2]-vb2[2],2),0.0));
89 double et1 = sqrt(fmax(v1[0]*v1[0]-v1[3]*v1[3],0.0));
90 double et2 = sqrt(fmax(v2[0]*v2[0]-v2[3]*v2[3],0.0));
91 return sqrt(fmax(pow(et1+et2,2)-pow(v1[1]-v2[1],2)
92 -pow(v1[2]-v2[2],2),0.0));
95 double mct::mt2( const double v1[4], const double v2[4]
96 , const double vds[4], const double ptm[2]
97 , const double ecm, const double mxlo)
100 double m1sqr = pow(v1[0],2)-pow(v1[1],2)-pow(v1[2],2)-pow(v1[3],2);
101 double m2sqr = pow(v2[0],2)-pow(v2[1],2)-pow(v2[2],2)-pow(v2[3],2);
102 double chisqr = pow(mxlo,2);
103 double m1 = sqrt(fmax(m1sqr,0.0));
104 double m2 = sqrt(fmax(m2sqr,0.0));
107 double qtest[3] = {0.0,ptm[0]-(chi/m1)*v1[1],ptm[1]-(chi/m1)*v1[2]};
108 qtest[0] = sqrt(chisqr+pow(qtest[1],2)+pow(qtest[2],2));
109 double ptest[3] = {0.0,ptm[0]-(chi/m2)*v2[1],ptm[1]-(chi/m2)*v2[2]};
110 ptest[0] = sqrt(chisqr+pow(ptest[1],2)+pow(ptest[2],2));
112 double et1 = sqrt(fmax(v1[0]*v1[0]-v1[3]*v1[3],0.0));
113 double et2 = sqrt(fmax(v2[0]*v2[0]-v2[3]*v2[3],0.0));
115 double bq[3] = {et2+qtest[0],v2[1]+qtest[1],v2[2]+qtest[2]};
116 double ap[3] = {et1+ptest[0],v1[1]+ptest[1],v1[2]+ptest[2]};
121 if (pow(m1+chi,2)>=pow(bq[0],2)-pow(bq[1],2)-pow(bq[2],2)) {
123 } else if (pow(m2+chi,2)>=pow(ap[0],2)-pow(ap[1],2)-pow(ap[2],2)) {
130 double mctminsqr = pow( mctcorr(v1,v2,vds,ptm,ecm,mxlo),2);
131 double mdmin = mctminmt2(mctminsqr,m1sqr,m2sqr,chisqr);
132 if (m_pb == 0) return mdmin;
134 double mctecmsqr = pow(m_mctecm,2);
135 double mctehatsqr = pow(m_mctehat,2);
136 double mctmaxsqr = fmax(mctecmsqr,mctehatsqr);
138 double mctdsqr[4] = {(chi*(3.0*m1sqr+m2sqr)+2.0*m1*(m1sqr+m2sqr))/(chi+m1),
139 (chi*(3.0*m1sqr+m2sqr)-2.0*m1*(m1sqr+m2sqr))/(chi-m1),
140 (chi*(3.0*m2sqr+m1sqr)+2.0*m2*(m2sqr+m1sqr))/(chi+m2),
141 (chi*(3.0*m2sqr+m1sqr)-2.0*m2*(m2sqr+m1sqr))/(chi-m2)};
142 mdmin = fmin(mdmin, mctminmt2(mctmaxsqr,m1sqr,m2sqr,chisqr));
144 for ( int i=0;i<4;i++)
145 if ( (mctdsqr[i]>mctminsqr) && (mctdsqr[i]<mctmaxsqr) )
146 mdmin = fmin(mdmin, mctminmt2(mctdsqr[i],m1sqr,m2sqr,chisqr));
148 return fmax(fmax(mdmin,m1+chi),m2+chi);
152 const double m2sqr, const double chisqr)
154 double at = 0.5*(mctsqr - m1sqr - m2sqr);
155 return sqrt(fmax(chisqr+at+sqrt(fmax((1.0+(4.0*chisqr)/(2.0*at-m1sqr-m2sqr))
156 *(pow(at,2)-m1sqr*m2sqr),0.0)),0.0));
160 , const double ptm[2], const double mxlo)
163 double m1sqr = pow(v1[0],2)-pow(v1[1],2)-pow(v1[2],2)-pow(v1[3],2);
164 double m2sqr = pow(v2[0],2)-pow(v2[1],2)-pow(v2[2],2)-pow(v2[3],2);
165 double chisqr = pow(mxlo,2);
166 double m1 = sqrt(fmax(m1sqr,0.0));
167 double m2 = sqrt(fmax(m2sqr,0.0));
170 double qtest[3] = {0.0,ptm[0]-(chi/m1)*v1[1],ptm[1]-(chi/m1)*v1[2]};
171 qtest[0] = sqrt(chisqr+pow(qtest[1],2)+pow(qtest[2],2));
172 double ptest[3] = {0.0,ptm[0]-(chi/m2)*v2[1],ptm[1]-(chi/m2)*v2[2]};
173 ptest[0] = sqrt(chisqr+pow(ptest[1],2)+pow(ptest[2],2));
175 double et1 = sqrt(fmax(v1[0]*v1[0]-v1[3]*v1[3],0.0));
176 double et2 = sqrt(fmax(v2[0]*v2[0]-v2[3]*v2[3],0.0));
178 double bq[3] = {et2+qtest[0],v2[1]+qtest[1],v2[2]+qtest[2]};
179 double ap[3] = {et1+ptest[0],v1[1]+ptest[1],v1[2]+ptest[2]};
182 if (pow(m1+chi,2)>=pow(bq[0],2)-pow(bq[1],2)-pow(bq[2],2)) {
184 } else if (pow(m2+chi,2)>=pow(ap[0],2)-pow(ap[1],2)-pow(ap[2],2)) {
189 double mctminsqr = pow( mctnorm(v1,v2),2);
190 double mdmin = mctminmt2(mctminsqr,m1sqr,m2sqr,chisqr);
192 return fmax(fmax(mdmin,m1+chi),m2+chi);
196 double mct::mcy( const double v1[4], const double v2[4]
197 , const double vds[4], const double ptm[2])
203 double ptus[2] = {-v1[1]-v2[1]-vds[1]-ptm[0],-v1[2]-v2[2]-vds[2]-ptm[1]};
204 double pb = sqrt(pow(ptus[0],2)+pow(ptus[1],2));
215 double vb1[4] = {v1[0],(v1[1]*ptus[0]+v1[2]*ptus[1])/pb
216 ,(v1[1]*ptus[1]-v1[2]*ptus[0])/pb,v1[3]};
217 double vb2[4] = {v2[0],(v2[1]*ptus[0]+v2[2]*ptus[1])/pb
218 ,(v2[1]*ptus[1]-v2[2]*ptus[0])/pb,v2[3]};
219 double vey1 = sqrt(fmax(pow(vb1[0],2)-pow(vb1[1],2)-pow(vb1[3],2),0.0));
220 double vey2 = sqrt(fmax(pow(vb2[0],2)-pow(vb2[1],2)-pow(vb2[3],2),0.0));
221 return sqrt(fmax(pow(vey1+vey2,2)-pow(vb1[2]-vb2[2],2),0.0));
225 double mct::mcx( const double v1[4], const double v2[4]
226 , const double vds[4], const double ptm[2])
232 double ptus[2] = {-v1[1]-v2[1]-vds[1]-ptm[0],-v1[2]-v2[2]-vds[2]-ptm[1]};
233 double pb = sqrt(pow(ptus[0],2)+pow(ptus[1],2));
244 double vb1[4] = {v1[0],(v1[1]*ptus[0]+v1[2]*ptus[1])/pb
245 ,(v1[1]*ptus[1]-v1[2]*ptus[0])/pb,v1[3]};
246 double vb2[4] = {v2[0],(v2[1]*ptus[0]+v2[2]*ptus[1])/pb
247 ,(v2[1]*ptus[1]-v2[2]*ptus[0])/pb,v2[3]};
248 double vex1 = sqrt(fmax(pow(vb1[0],2)-pow(vb1[2],2)-pow(vb1[3],2),0.0));
249 double vex2 = sqrt(fmax(pow(vb2[0],2)-pow(vb2[2],2)-pow(vb2[3],2),0.0));
250 return sqrt(fmax(pow(vex1+vex2,2)-pow(vb1[1]-vb2[1],2),0.0));
double mctminmt2(const double mctsqr, const double m1sqr, const double m2sqr, const double chisqr=0.0)
double mctnorm(const double v1[4], const double v2[4])
double mctcorr(const double v1[4], const double v2[4], const double vds[4], const double ptm[2], const double ecm=14000.0, const double mxlo=0.0)
double mt2(const double v1[4], const double v2[4], const double vds[4], const double ptm[2], const double ecm=14000.0, const double mxlo=0.0)
double mt2neg(const double v1[4], const double v2[4], const double ptm[2], const double mxlo=0.0)
double mcx(const double v1[4], const double v2[4], const double vds[4], const double ptm[2])
double mcy(const double v1[4], const double v2[4], const double vds[4], const double ptm[2])
|