#include <SecondVertexFit.h>
Inheritance diagram for SecondVertexFit:
Public Member Functions | |
~SecondVertexFit () | |
void | init () |
void | setIterNumber (const int niter=10) |
void | setChisqCut (const double chicut=500, const double chiter=1.0e-2) |
void | setVpar (const VertexParameter vpar) |
void | setPrimaryVertex (const VertexParameter vpar) |
void | setMagCorrFactor (const double factor=1.000) |
bool | Fit () |
double | chisq () const |
double | decayLength () const |
double | decayLengthError () const |
double | ctau () const |
double | ctauError () const |
double | factor () const |
HepLorentzVector | p4par () const |
WTrackParameter | wpar () const |
VertexParameter | vpar () const |
HepPoint3D | crossPoint () const |
Hep3Vector | crossVector () const |
void | AddTrack (const int number, const double mass, const RecMdcTrack *trk) |
void | AddTrack (const int number, const double mass, const RecMdcKalTrack *trk) |
void | AddTrack (const int number, const double mass, const RecEmcShower *trk) |
void | AddTrack (const int number, const WTrackParameter wtrk) |
void | AddMissTrack (const int number, const double mass) |
void | AddMissTrack (const int number, const double mass, const HepLorentzVector p4) |
void | AddMissTrack (const int number, const double mass, const RecEmcShower *trk) |
void | AddMissTrack (const int number, const RecEmcShower *trk) |
void | AddMissTrack (const int number, const HepLorentzVector p4) |
void | AddTrackVertex (const int number, const double mass, const RecEmcShower *trk) |
std::vector< int > | AddList (int n1) |
std::vector< int > | AddList (int n1, int n2) |
std::vector< int > | AddList (int n1, int n2, int n3) |
std::vector< int > | AddList (int n1, int n2, int n3, int n4) |
std::vector< int > | AddList (int n1, int n2, int n3, int n4, int n5) |
std::vector< int > | AddList (int n1, int n2, int n3, int n4, int n5, int n6) |
std::vector< int > | AddList (int n1, int n2, int n3, int n4, int n5, int n6, int n7) |
std::vector< int > | AddList (int n1, int n2, int n3, int n4, int n5, int n6, int n7, int n8) |
std::vector< int > | AddList (int n1, int n2, int n3, int n4, int n5, int n6, int n7, int n8, int n9) |
std::vector< int > | AddList (int n1, int n2, int n3, int n4, int n5, int n6, int n7, int n8, int n9, int n10) |
std::vector< int > | AddList (int n1, int n2, int n3, int n4, int n5, int n6, int n7, int n8, int n9, int n10, int n11) |
std::vector< int > | AddList (int n1, int n2, int n3, int n4, int n5, int n6, int n7, int n8, int n9, int n10, int n11, int n12) |
std::vector< WTrackParameter > | wTrackOrigin () const |
WTrackParameter | wTrackOrigin (int n) const |
std::vector< WTrackParameter > | wTrackInfit () const |
WTrackParameter | wTrackInfit (int n) const |
std::vector< int > | wTrackList () const |
int | wTrackList (int n) const |
int | numberWTrack () const |
std::vector< GammaShape > | GammaShapeValue () const |
GammaShape | GammaShapeValue (int n) const |
std::vector< int > | GammaShapeList () const |
int | GammaShapeList (int n) const |
int | numberGammaShape () const |
void | setWTrackOrigin (const int n, const WTrackParameter wtrk) |
void | setWTrackOrigin (const WTrackParameter wtrk) |
void | setWTrackInfit (const int n, const WTrackParameter wtrk) |
void | setWTrackInfit (const WTrackParameter wtrk) |
void | setWTrackList (const int n) |
void | clearWTrackOrigin () |
void | clearWTrackInfit () |
void | clearWTrackList () |
void | clearone () |
void | cleartwo () |
int | numberone () const |
int | numbertwo () const |
vector< int > | mappositionA () const |
vector< int > | mappositionB () const |
vector< int > | mapkinematic () const |
void | clearMapkinematic () |
void | clearMappositionA () |
void | clearMappositionB () |
void | setMapkinematic (const int n) |
void | setMappositionA (const int n) |
void | setMappositionB (const int n) |
void | setGammaShape (const int n, const GammaShape gammashape) |
void | setGammaShape (const GammaShape gammashape) |
void | setGammaShapeList (const int n) |
void | clearGammaShape () |
void | clearGammaShapeList () |
void | setBeamPosition (const HepPoint3D BeamPosition) |
void | setVBeamPosition (const HepSymMatrix VBeamPosition) |
HepPoint3D | getBeamPosition () const |
HepSymMatrix | getVBeamPosition () const |
Static Public Member Functions | |
static SecondVertexFit * | instance () |
Private Member Functions | |
SecondVertexFit () | |
Private Attributes | |
int | m_niter |
double | m_chisq |
double | m_chicut |
double | m_chiter |
double | m_lxyz |
double | m_lxyz_error |
double | m_ctau |
double | m_ctau_error |
double | m_factor |
HepVector | m_crxyz |
HepLorentzVector | m_p4par |
WTrackParameter | m_wtrk |
VertexParameter | m_vpar_primary |
VertexParameter | m_vpar_secondary |
Static Private Attributes | |
static SecondVertexFit * | m_pointer = 0 |
Definition at line 20 of file SecondVertexFit.h.
SecondVertexFit::~SecondVertexFit | ( | ) |
SecondVertexFit::SecondVertexFit | ( | ) | [private] |
Definition at line 53 of file SecondVertexFit.cxx.
References m_vpar_primary, VertexParameter::setEvx(), and VertexParameter::setVx().
Referenced by instance().
00054 { 00055 HepVector vx(3,0); 00056 m_vpar_primary.setVx(vx); 00057 HepSymMatrix evx(3,0); 00058 evx[0][0] = 0.1 * 0.1; 00059 evx[1][1] = 0.1 * 0.1; 00060 evx[2][2] = 1.5 * 1.5; 00061 m_vpar_primary.setEvx(evx); 00062 }
std::vector< int > TrackPool::AddList | ( | int | n1, | |
int | n2, | |||
int | n3, | |||
int | n4, | |||
int | n5, | |||
int | n6, | |||
int | n7, | |||
int | n8, | |||
int | n9, | |||
int | n10, | |||
int | n11, | |||
int | n12 | |||
) | [inherited] |
Definition at line 618 of file TrackPool.cxx.
00619 { 00620 std::vector<int> lis; 00621 lis.clear(); 00622 lis.push_back(n1); 00623 lis.push_back(n2); 00624 lis.push_back(n3); 00625 lis.push_back(n4); 00626 lis.push_back(n5); 00627 lis.push_back(n6); 00628 lis.push_back(n7); 00629 lis.push_back(n8); 00630 lis.push_back(n9); 00631 lis.push_back(n10); 00632 lis.push_back(n11); 00633 lis.push_back(n12); 00634 return lis; 00635 }
std::vector< int > TrackPool::AddList | ( | int | n1, | |
int | n2, | |||
int | n3, | |||
int | n4, | |||
int | n5, | |||
int | n6, | |||
int | n7, | |||
int | n8, | |||
int | n9, | |||
int | n10, | |||
int | n11 | |||
) | [inherited] |
Definition at line 600 of file TrackPool.cxx.
00601 { 00602 std::vector<int> lis; 00603 lis.clear(); 00604 lis.push_back(n1); 00605 lis.push_back(n2); 00606 lis.push_back(n3); 00607 lis.push_back(n4); 00608 lis.push_back(n5); 00609 lis.push_back(n6); 00610 lis.push_back(n7); 00611 lis.push_back(n8); 00612 lis.push_back(n9); 00613 lis.push_back(n10); 00614 lis.push_back(n11); 00615 return lis; 00616 }
std::vector< int > TrackPool::AddList | ( | int | n1, | |
int | n2, | |||
int | n3, | |||
int | n4, | |||
int | n5, | |||
int | n6, | |||
int | n7, | |||
int | n8, | |||
int | n9, | |||
int | n10 | |||
) | [inherited] |
Definition at line 583 of file TrackPool.cxx.
00584 { 00585 std::vector<int> lis; 00586 lis.clear(); 00587 lis.push_back(n1); 00588 lis.push_back(n2); 00589 lis.push_back(n3); 00590 lis.push_back(n4); 00591 lis.push_back(n5); 00592 lis.push_back(n6); 00593 lis.push_back(n7); 00594 lis.push_back(n8); 00595 lis.push_back(n9); 00596 lis.push_back(n10); 00597 return lis; 00598 }
std::vector< int > TrackPool::AddList | ( | int | n1, | |
int | n2, | |||
int | n3, | |||
int | n4, | |||
int | n5, | |||
int | n6, | |||
int | n7, | |||
int | n8, | |||
int | n9 | |||
) | [inherited] |
Definition at line 567 of file TrackPool.cxx.
00568 { 00569 std::vector<int> lis; 00570 lis.clear(); 00571 lis.push_back(n1); 00572 lis.push_back(n2); 00573 lis.push_back(n3); 00574 lis.push_back(n4); 00575 lis.push_back(n5); 00576 lis.push_back(n6); 00577 lis.push_back(n7); 00578 lis.push_back(n8); 00579 lis.push_back(n9); 00580 return lis; 00581 }
std::vector< int > TrackPool::AddList | ( | int | n1, | |
int | n2, | |||
int | n3, | |||
int | n4, | |||
int | n5, | |||
int | n6, | |||
int | n7, | |||
int | n8 | |||
) | [inherited] |
Definition at line 553 of file TrackPool.cxx.
00553 { 00554 std::vector<int> lis; 00555 lis.clear(); 00556 lis.push_back(n1); 00557 lis.push_back(n2); 00558 lis.push_back(n3); 00559 lis.push_back(n4); 00560 lis.push_back(n5); 00561 lis.push_back(n6); 00562 lis.push_back(n7); 00563 lis.push_back(n8); 00564 return lis; 00565 }
std::vector< int > TrackPool::AddList | ( | int | n1, | |
int | n2, | |||
int | n3, | |||
int | n4, | |||
int | n5, | |||
int | n6, | |||
int | n7 | |||
) | [inherited] |
Definition at line 540 of file TrackPool.cxx.
00540 { 00541 std::vector<int> lis; 00542 lis.clear(); 00543 lis.push_back(n1); 00544 lis.push_back(n2); 00545 lis.push_back(n3); 00546 lis.push_back(n4); 00547 lis.push_back(n5); 00548 lis.push_back(n6); 00549 lis.push_back(n7); 00550 return lis; 00551 }
std::vector< int > TrackPool::AddList | ( | int | n1, | |
int | n2, | |||
int | n3, | |||
int | n4, | |||
int | n5, | |||
int | n6 | |||
) | [inherited] |
Definition at line 528 of file TrackPool.cxx.
00528 { 00529 std::vector<int> lis; 00530 lis.clear(); 00531 lis.push_back(n1); 00532 lis.push_back(n2); 00533 lis.push_back(n3); 00534 lis.push_back(n4); 00535 lis.push_back(n5); 00536 lis.push_back(n6); 00537 return lis; 00538 }
std::vector< int > TrackPool::AddList | ( | int | n1, | |
int | n2, | |||
int | n3, | |||
int | n4, | |||
int | n5 | |||
) | [inherited] |
Definition at line 517 of file TrackPool.cxx.
00517 { 00518 std::vector<int> lis; 00519 lis.clear(); 00520 lis.push_back(n1); 00521 lis.push_back(n2); 00522 lis.push_back(n3); 00523 lis.push_back(n4); 00524 lis.push_back(n5); 00525 return lis; 00526 }
std::vector< int > TrackPool::AddList | ( | int | n1, | |
int | n2, | |||
int | n3, | |||
int | n4 | |||
) | [inherited] |
Definition at line 507 of file TrackPool.cxx.
00507 { 00508 std::vector<int> lis; 00509 lis.clear(); 00510 lis.push_back(n1); 00511 lis.push_back(n2); 00512 lis.push_back(n3); 00513 lis.push_back(n4); 00514 return lis; 00515 }
std::vector< int > TrackPool::AddList | ( | int | n1, | |
int | n2, | |||
int | n3 | |||
) | [inherited] |
Definition at line 498 of file TrackPool.cxx.
00498 { 00499 std::vector<int> lis; 00500 lis.clear(); 00501 lis.push_back(n1); 00502 lis.push_back(n2); 00503 lis.push_back(n3); 00504 return lis; 00505 }
std::vector< int > TrackPool::AddList | ( | int | n1, | |
int | n2 | |||
) | [inherited] |
Definition at line 490 of file TrackPool.cxx.
00490 { 00491 std::vector<int> lis; 00492 lis.clear(); 00493 lis.push_back(n1); 00494 lis.push_back(n2); 00495 return lis; 00496 }
std::vector< int > TrackPool::AddList | ( | int | n1 | ) | [inherited] |
Definition at line 483 of file TrackPool.cxx.
Referenced by VertexFit::AddBeamFit(), KinematicFit::AddResonance(), KalmanKinematicFit::AddResonance(), KinematicFit::AddTotalEnergy(), KalmanKinematicFit::AddTotalEnergy(), KinematicFit::AddTotalMomentum(), KalmanKinematicFit::AddTotalMomentum(), and VertexFit::AddVertex().
00483 { 00484 std::vector<int> lis; 00485 lis.clear(); 00486 lis.push_back(n1); 00487 return lis; 00488 }
void TrackPool::AddMissTrack | ( | const int | number, | |
const HepLorentzVector | p4 | |||
) | [inherited] |
Definition at line 403 of file TrackPool.cxx.
References genRecEmupikp::i, ganga-rec::j, TrackPool::m_numberone, TrackPool::m_numbertwo, WTrackParameter::setEw(), TrackPool::setMapkinematic(), TrackPool::setMappositionA(), TrackPool::setMappositionB(), WTrackParameter::setType(), TrackPool::setWTrackInfit(), TrackPool::setWTrackList(), and TrackPool::setWTrackOrigin().
00403 { 00404 double dphi = 1E+3; 00405 double dthe = 1E+3; 00406 double dE = 1E+3; 00407 WTrackParameter wtrk(p4, dphi, dthe, dE); 00408 HepSymMatrix Ew = HepSymMatrix(7,0); 00409 for (int i = 0; i < 7; i++) { 00410 for (int j = 0; j < 7; j++) { 00411 if(i==j) Ew[i][j] = 1E+6; 00412 } 00413 } 00414 wtrk.setType(1); 00415 wtrk.setEw(Ew); 00416 setWTrackOrigin(wtrk); 00417 setWTrackInfit(wtrk); 00418 setWTrackList(number); 00419 setMapkinematic(2); 00420 setMappositionA(m_numberone); 00421 setMappositionB(m_numbertwo); 00422 m_numbertwo = m_numbertwo + 4; 00423 }
void TrackPool::AddMissTrack | ( | const int | number, | |
const RecEmcShower * | trk | |||
) | [inherited] |
Definition at line 250 of file TrackPool.cxx.
References cos(), DstEmcShower::dphi(), DstEmcShower::dtheta(), DstEmcShower::energy(), WTrackParameter::Ew(), TrackPool::m_BeamPosition, TrackPool::m_numberone, TrackPool::m_numbertwo, TrackPool::m_VBeamPosition, mass, DstEmcShower::phi(), TrackPool::setGammaShape(), TrackPool::setGammaShapeList(), TrackPool::setMapkinematic(), TrackPool::setMappositionA(), TrackPool::setMappositionB(), WTrackParameter::setPlmp(), WTrackParameter::setType(), WTrackParameter::setVplm(), WTrackParameter::setW(), TrackPool::setWTrackInfit(), TrackPool::setWTrackList(), TrackPool::setWTrackOrigin(), sin(), DstEmcShower::theta(), DstEmcShower::x(), x, DstEmcShower::y(), and DstEmcShower::z().
00250 { 00251 // 00252 //parameters: phi lambda mass E 00253 // 00254 00255 double mass = 0; 00256 double ptrk = trk->energy(); 00257 double e = sqrt(ptrk*ptrk + mass * mass); 00258 double the = trk->theta(); 00259 double phi = trk->phi(); 00260 HepLorentzVector p4( e* sin(the) * cos(phi), 00261 e * sin(the) * sin(phi), 00262 e * cos(the), 00263 e); 00264 double dphi = trk->dphi(); 00265 double dthe = trk->dtheta(); 00266 double de = 1E+6; 00267 double x = trk->x(); 00268 double y = trk->y(); 00269 double z = trk->z(); 00270 00271 HepPoint3D x3 (x, y ,z); 00272 WTrackParameter wtrk(x3, p4 ,dphi ,dthe, de); 00273 HepSymMatrix Vpe = HepSymMatrix(2,0); 00274 //=== get Vclus=== 00275 HepSymMatrix Vclus = HepSymMatrix (3,0); 00276 Vclus = (wtrk.Ew()).sub(5,7); 00277 double xpr = x - m_BeamPosition[0]; 00278 double ypr = y - m_BeamPosition[1]; 00279 double zpr = z - m_BeamPosition[2]; 00280 double Rpr = sqrt(xpr*xpr + ypr*ypr); 00281 // === get jacobi === 00282 HepMatrix J(2,3,0); 00283 J[0][0] = -ypr/(Rpr*Rpr); 00284 J[0][1] = xpr/(Rpr*Rpr); 00285 J[1][0] = -xpr * zpr/(Rpr*Rpr*Rpr); 00286 J[1][1] = -ypr * zpr/(Rpr*Rpr*Rpr); 00287 J[1][2] = 1/Rpr; 00288 Vpe = Vclus.similarity(J) + m_VBeamPosition.similarity(J); 00289 Vpe[0][1]=0; 00290 double phipre = atan(ypr/xpr); 00291 00292 if(xpr<0){ 00293 phipre = atan(ypr/xpr) + 3.1415926; 00294 } 00295 double lambdapre = zpr/Rpr; 00296 00297 00298 HepVector plmp(4 , 0); 00299 plmp[0] = phipre; 00300 plmp[1] = lambdapre; 00301 plmp[2] = mass; 00302 plmp[3] = e; 00303 wtrk.setPlmp(plmp); 00304 00305 HepSymMatrix Vplm(2,0); 00306 Vplm[0][0] = Vpe[0][0]; 00307 Vplm[1][1] = Vpe[1][1]; 00308 wtrk.setVplm(Vplm); 00309 00310 00311 00312 // === set p4 === 00313 double p0x = ptrk*cos(phipre)/sqrt(1 + lambdapre*lambdapre); 00314 double p0y = ptrk*sin(phipre)/sqrt(1 + lambdapre*lambdapre); 00315 double p0z = ptrk*lambdapre/sqrt(1 + lambdapre*lambdapre); 00316 double p0e = e; 00317 00318 wtrk.setW(0,p0x); 00319 wtrk.setW(1,p0y); 00320 wtrk.setW(2,p0z); 00321 wtrk.setW(3,p0e); 00322 00323 wtrk.setType(1); 00324 setWTrackOrigin(wtrk); 00325 setWTrackInfit(wtrk); 00326 setWTrackList(number); 00327 GammaShape gtrk(p4,dphi,dthe,de); 00328 setGammaShape(gtrk); 00329 setGammaShapeList(number); 00330 setMapkinematic(4); 00331 setMappositionA(m_numberone); 00332 setMappositionB(m_numbertwo); 00333 00334 m_numberone = m_numberone + 2; 00335 m_numbertwo = m_numbertwo + 2; 00336 }
void TrackPool::AddMissTrack | ( | const int | number, | |
const double | mass, | |||
const RecEmcShower * | trk | |||
) | [inherited] |
Definition at line 159 of file TrackPool.cxx.
References cos(), DstEmcShower::dphi(), DstEmcShower::dtheta(), DstEmcShower::energy(), WTrackParameter::Ew(), TrackPool::m_BeamPosition, TrackPool::m_numberone, TrackPool::m_numbertwo, TrackPool::m_VBeamPosition, DstEmcShower::phi(), TrackPool::setGammaShape(), TrackPool::setGammaShapeList(), TrackPool::setMapkinematic(), TrackPool::setMappositionA(), TrackPool::setMappositionB(), WTrackParameter::setPlmp(), WTrackParameter::setType(), WTrackParameter::setVplm(), WTrackParameter::setW(), TrackPool::setWTrackInfit(), TrackPool::setWTrackList(), TrackPool::setWTrackOrigin(), sin(), DstEmcShower::theta(), DstEmcShower::x(), x, DstEmcShower::y(), and DstEmcShower::z().
00160 { 00161 // 00162 //parameters: phi lambda mass ptrk 00163 // 00164 double ptrk = trk->energy(); 00165 double e = sqrt(ptrk*ptrk + mass * mass); 00166 double the = trk->theta(); 00167 double phi = trk->phi(); 00168 HepLorentzVector p4( e* sin(the) * cos(phi), 00169 e * sin(the) * sin(phi), 00170 e * cos(the), 00171 e); 00172 double dphi = trk->dphi(); 00173 double dthe = trk->dtheta(); 00174 double de = 1E+6; 00175 double x = trk->x(); 00176 double y = trk->y(); 00177 double z = trk->z(); 00178 00179 HepPoint3D x3 (x, y ,z); 00180 WTrackParameter wtrk(x3, p4 ,dphi ,dthe, de); 00181 HepSymMatrix Vpe = HepSymMatrix(2,0); 00182 //=== get Vclus=== 00183 HepSymMatrix Vclus = HepSymMatrix (3,0); 00184 Vclus = (wtrk.Ew()).sub(5,7); 00185 double xpr = x - m_BeamPosition[0]; 00186 double ypr = y - m_BeamPosition[1]; 00187 double zpr = z - m_BeamPosition[2]; 00188 double Rpr = sqrt(xpr*xpr + ypr*ypr); 00189 // === get jacobi === 00190 HepMatrix J(2,3,0); 00191 J[0][0] = -ypr/(Rpr*Rpr); 00192 J[0][1] = xpr/(Rpr*Rpr); 00193 J[1][0] = -xpr * zpr/(Rpr*Rpr*Rpr); 00194 J[1][1] = -ypr * zpr/(Rpr*Rpr*Rpr); 00195 J[1][2] = 1/Rpr; 00196 Vpe = Vclus.similarity(J) + m_VBeamPosition.similarity(J); 00197 Vpe[0][1]=0; 00198 00199 double phipre = atan(ypr/xpr); 00200 00201 if(xpr<0){ 00202 phipre = atan(ypr/xpr) + 3.1415926; 00203 } 00204 double lambdapre = zpr/Rpr; 00205 00206 00207 HepVector plmp(4 , 0); 00208 plmp[0] = phipre; 00209 plmp[1] = lambdapre; 00210 plmp[2] = mass; 00211 plmp[3] = ptrk; 00212 wtrk.setPlmp(plmp); 00213 00214 HepSymMatrix Vplm(3,0); 00215 Vplm[0][0] = Vpe[0][0]; 00216 Vplm[1][1] = Vpe[1][1]; 00217 wtrk.setVplm(Vplm); 00218 00219 00220 00221 // === set p4 === 00222 double p0x = ptrk*cos(phipre)/sqrt(1 + lambdapre*lambdapre); 00223 double p0y = ptrk*sin(phipre)/sqrt(1 + lambdapre*lambdapre); 00224 double p0z = ptrk*lambdapre/sqrt(1 + lambdapre*lambdapre); 00225 double p0e = e; 00226 00227 wtrk.setW(0,p0x); 00228 wtrk.setW(1,p0y); 00229 wtrk.setW(2,p0z); 00230 wtrk.setW(3,p0e); 00231 00232 wtrk.setType(1); 00233 setWTrackOrigin(wtrk); 00234 setWTrackInfit(wtrk); 00235 setWTrackList(number); 00236 GammaShape gtrk(p4,dphi,dthe,de); 00237 setGammaShape(gtrk); 00238 setGammaShapeList(number); 00239 setMapkinematic(5); 00240 setMappositionA(m_numberone); 00241 setMappositionB(m_numbertwo); 00242 00243 m_numberone = m_numberone + 3; 00244 m_numbertwo = m_numbertwo + 1; 00245 }
void TrackPool::AddMissTrack | ( | const int | number, | |
const double | mass, | |||
const HepLorentzVector | p4 | |||
) | [inherited] |
Definition at line 341 of file TrackPool.cxx.
References WTrackParameter::Lambda(), TrackPool::m_numberone, TrackPool::m_numbertwo, TrackPool::setMapkinematic(), TrackPool::setMappositionA(), TrackPool::setMappositionB(), WTrackParameter::setPlmp(), WTrackParameter::setType(), WTrackParameter::setVplm(), TrackPool::setWTrackInfit(), TrackPool::setWTrackList(), and TrackPool::setWTrackOrigin().
00341 { 00342 // 00343 //parameters: mass px py pz 00344 // 00345 00346 double dphi = 1E+6; 00347 double dthe = 1E+6; 00348 double dE = 1E+6; 00349 WTrackParameter wtrk(p4, dphi, dthe, dE); 00350 HepVector plmp(4, 0); 00351 double phipre = atan(p4[1]/p4[0]); 00352 00353 if(p4[0]<0){ 00354 phipre = atan(p4[1]/p4[0]) + 3.1415926; 00355 } 00356 plmp[0] = phipre; 00357 plmp[1] = wtrk.Lambda(); 00358 plmp[2] = mass; 00359 plmp[3] = p4[3]; 00360 HepSymMatrix Vplm(3, 0); 00361 wtrk.setPlmp(plmp); 00362 wtrk.setVplm(Vplm); 00363 wtrk.setType(1); 00364 setWTrackOrigin(wtrk); 00365 setWTrackInfit(wtrk); 00366 setWTrackList(number); 00367 setMapkinematic(3); 00368 setMappositionA(m_numberone); 00369 setMappositionB(m_numbertwo); 00370 m_numberone = m_numberone + 1; 00371 m_numbertwo = m_numbertwo + 3; 00372 }
void TrackPool::AddMissTrack | ( | const int | number, | |
const double | mass | |||
) | [inherited] |
Definition at line 375 of file TrackPool.cxx.
References TrackPool::m_numberone, TrackPool::m_numbertwo, WTrackParameter::setEw(), TrackPool::setMapkinematic(), TrackPool::setMappositionA(), TrackPool::setMappositionB(), WTrackParameter::setMass(), WTrackParameter::setW(), TrackPool::setWTrackInfit(), TrackPool::setWTrackList(), TrackPool::setWTrackOrigin(), and w.
00375 { 00376 // 00377 //parameters: mass px py pz, but px,py,pz 's error matrix is set as 10e^6 00378 // 00379 WTrackParameter wtrk; 00380 wtrk.setMass(mass); 00381 HepVector w(7,0); 00382 HepSymMatrix Ew(7,0); 00383 w[0] = 0.2; 00384 w[1] = 0.2; 00385 w[2] = 0.2; 00386 w[3] = sqrt(0.2*0.2*3 + mass*mass); 00387 Ew[0][0] = 1E+6; 00388 Ew[1][1] = 1E+6; 00389 Ew[2][2] = 1E+6; 00390 wtrk.setW(w); 00391 wtrk.setEw(Ew); 00392 setWTrackOrigin(wtrk); 00393 setWTrackInfit(wtrk); 00394 setWTrackList(number); 00395 setMapkinematic(7); 00396 setMappositionA(m_numberone); 00397 setMappositionB(m_numbertwo); 00398 m_numberone = m_numberone + 4; 00399 00400 }
void TrackPool::AddTrack | ( | const int | number, | |
const WTrackParameter | wtrk | |||
) | [inherited] |
Definition at line 429 of file TrackPool.cxx.
References TrackPool::m_numberone, TrackPool::m_numbertwo, TrackPool::numberWTrack(), TrackPool::setMapkinematic(), TrackPool::setMappositionA(), TrackPool::setMappositionB(), TrackPool::setWTrackInfit(), TrackPool::setWTrackList(), and TrackPool::setWTrackOrigin().
00429 { 00430 setWTrackOrigin(wtrk); 00431 setWTrackInfit(wtrk); 00432 setWTrackList(number); 00433 if(number != numberWTrack()-1) { 00434 std::cout << "TrackPool: wrong track index" <<" " 00435 <<number<<" , " <<numberWTrack()<< std::endl; 00436 } 00437 setMapkinematic(0); 00438 setMappositionA(m_numberone); 00439 setMappositionB(m_numbertwo); 00440 m_numberone = m_numberone + 4; 00441 }
void TrackPool::AddTrack | ( | const int | number, | |
const double | mass, | |||
const RecEmcShower * | trk | |||
) | [inherited] |
Definition at line 44 of file TrackPool.cxx.
References EvtCyclic3::B, cos(), DstEmcShower::dE(), DstEmcShower::dphi(), DstEmcShower::dtheta(), DstEmcShower::energy(), WTrackParameter::Ew(), TrackPool::m_BeamPosition, TrackPool::m_numberone, TrackPool::m_numbertwo, TrackPool::m_VBeamPosition, TrackPool::numberWTrack(), DstEmcShower::phi(), WTrackParameter::setEw(), TrackPool::setGammaShape(), TrackPool::setGammaShapeList(), TrackPool::setMapkinematic(), TrackPool::setMappositionA(), TrackPool::setMappositionB(), WTrackParameter::setPlmp(), WTrackParameter::setVplm(), WTrackParameter::setW(), TrackPool::setWTrackInfit(), TrackPool::setWTrackList(), TrackPool::setWTrackOrigin(), sin(), DstEmcShower::theta(), DstEmcShower::x(), x, DstEmcShower::y(), and DstEmcShower::z().
00045 { 00046 // 00047 //parameters: phi lambda mass energy 00048 // 00049 double ptrk = trk->energy(); 00050 double e = sqrt(ptrk*ptrk + mass * mass); 00051 double the = trk->theta(); 00052 double phi = trk->phi(); 00053 HepLorentzVector p4(ptrk * sin(the) * cos(phi), 00054 ptrk * sin(the) * sin(phi), 00055 ptrk * cos(the), 00056 e); 00057 double dphi = trk->dphi(); 00058 double dthe = trk->dtheta(); 00059 double de = trk->dE(); 00060 double x = trk->x(); 00061 double y = trk->y(); 00062 double z = trk->z(); 00063 HepPoint3D x3 (x, y ,z); 00064 WTrackParameter wtrk(x3, p4 ,dphi ,dthe, de); 00065 HepSymMatrix Vpl = HepSymMatrix(2,0); 00066 //=== get Vclus=== 00067 HepSymMatrix Vclus = HepSymMatrix (3,0); 00068 Vclus = (wtrk.Ew()).sub(5,7); 00069 double xpr = x - m_BeamPosition[0]; 00070 double ypr = y - m_BeamPosition[1]; 00071 double zpr = z - m_BeamPosition[2]; 00072 double Rpr = sqrt(xpr*xpr + ypr*ypr); 00073 // === get jacobi === 00074 HepMatrix J(2,3,0); 00075 J[0][0] = -ypr/(Rpr*Rpr); 00076 J[0][1] = xpr/(Rpr*Rpr); 00077 J[1][0] = -xpr * zpr/(Rpr*Rpr*Rpr); 00078 J[1][1] = -ypr * zpr/(Rpr*Rpr*Rpr); 00079 J[1][2] = 1/Rpr; 00080 Vpl = Vclus.similarity(J) + m_VBeamPosition.similarity(J); 00081 Vpl[0][1]=0; 00082 // === get phipre, lambda=== 00083 00084 double phipre = atan(ypr/xpr); 00085 00086 if(xpr<0){ 00087 phipre = atan(ypr/xpr) + 3.1415926; 00088 } 00089 double lambdapre = zpr/Rpr; 00090 00091 00092 // === set p4 === 00093 double p0x = ptrk*cos(phipre)/sqrt(1 + lambdapre*lambdapre); 00094 double p0y = ptrk*sin(phipre)/sqrt(1 + lambdapre*lambdapre); 00095 double p0z = ptrk*lambdapre/sqrt(1 + lambdapre*lambdapre); 00096 double p0e = e; 00097 00098 00099 double p0ver = sqrt(p0x*p0x + p0y*p0y); 00100 00101 00102 HepMatrix B(4,3,0); 00103 B[0][0] = -p0y; 00104 B[0][1] = -p0z * p0x * p0ver/(p0e * p0e); 00105 B[0][2] = p0x/p0e; 00106 B[1][0] = p0x; 00107 B[1][1] = -p0z * p0y * p0ver/(p0e * p0e); 00108 B[1][2] = p0y/p0e; 00109 B[2][1] = p0ver * p0ver * p0ver/(p0e * p0e); 00110 B[2][2] = p0z/p0e; 00111 B[3][2] = 1; 00112 00113 HepSymMatrix Vple(3,0); 00114 Vple[0][0] = Vpl[0][0]; 00115 Vple[1][1] = Vpl[1][1]; 00116 Vple[2][2] = de * de; 00117 00118 HepSymMatrix Vpxyze(4,0); 00119 Vpxyze = Vple.similarity(B); 00120 00121 wtrk.setW(0,p0x); 00122 wtrk.setW(1,p0y); 00123 wtrk.setW(2,p0z); 00124 wtrk.setW(3,p0e); 00125 00126 wtrk.setEw(Vpxyze); 00127 00128 HepSymMatrix Vplme(4,0); 00129 Vplme[0][0] = Vpl[0][0]; 00130 Vplme[1][1] = Vpl[1][1]; 00131 Vplme[3][3] = de * de; 00132 wtrk.setVplm(Vplme); 00133 00134 HepVector plmp(4 , 0); 00135 plmp[0] = phipre; 00136 plmp[1] = lambdapre; 00137 plmp[2] = mass; 00138 plmp[3] = e; 00139 wtrk.setPlmp(plmp); 00140 00141 00142 setWTrackOrigin(wtrk); 00143 setWTrackInfit(wtrk); 00144 setWTrackList(number); 00145 if(number != numberWTrack()-1) { 00146 std::cout << "TrackPool: wrong track index" <<" " 00147 <<number<<" , " <<numberWTrack()<< std::endl; 00148 } 00149 GammaShape gtrk(p4,dphi,dthe,de); 00150 setGammaShape(gtrk); 00151 setGammaShapeList(number); 00152 setMapkinematic(1); 00153 setMappositionA(m_numberone); 00154 setMappositionB(m_numbertwo); 00155 m_numberone = m_numberone + 4; 00156 }
void TrackPool::AddTrack | ( | const int | number, | |
const double | mass, | |||
const RecMdcKalTrack * | trk | |||
) | [inherited] |
void TrackPool::AddTrack | ( | const int | number, | |
const double | mass, | |||
const RecMdcTrack * | trk | |||
) | [inherited] |
Definition at line 22 of file TrackPool.cxx.
References DstMdcTrack::err(), ers::error, DstMdcTrack::helix(), genRecEmupikp::i, TrackPool::m_numberone, TrackPool::m_numbertwo, TrackPool::numberWTrack(), TrackPool::setMapkinematic(), TrackPool::setMappositionA(), TrackPool::setMappositionB(), TrackPool::setWTrackInfit(), TrackPool::setWTrackList(), and TrackPool::setWTrackOrigin().
Referenced by DQAKsInfo::calculate(), LambdaReconstruction::execute(), KShortReconstruction::execute(), PrimaryVertex::execute(), Pi0EtaToGGRecAlg::execute(), BeamParams::execute(), CalibEventSelect::execute(), JsiLL::execute(), DQARhopi::execute(), DQAKsKpi::execute(), incllambda::execute(), inclks::execute(), Rhopi::execute(), Ppjrhopi::execute(), Gam4pikp::execute(), Pipipi0::MTotal(), Pipi::MTotal(), Kpipi0pi0::MTotal(), Kpipi0::MTotal(), Kpi::MTotal(), Kkpipi::MTotal(), Kkpi0::MTotal(), Kk::MTotal(), K3pipi0::MTotal(), K3pi::MTotal(), K0pipipi0::MTotal(), K0pipi::MTotal(), K0pi0::MTotal(), K0kpi::MTotal(), K0kk::MTotal(), LocalKsSelector::operator()(), Pi0::Pi0ListToTDS(), utility::SecondaryVFit(), and utility::vfit().
00023 { 00024 HepVector helix(5,0); 00025 double error[15]; 00026 for(int i = 0; i < 5; i++) 00027 helix[i] = trk->helix(i); 00028 for(int i = 0; i < 15; i++) 00029 error[i] = trk->err(i); 00030 WTrackParameter wtrk(mass, helix, error); 00031 setWTrackOrigin(wtrk); 00032 setWTrackInfit(wtrk); 00033 setWTrackList(number); 00034 if(number != numberWTrack()-1) { 00035 std::cout << "TrackPool: wrong track index" <<" " 00036 <<number<<" , " <<numberWTrack()<< std::endl; 00037 } 00038 setMapkinematic(0); 00039 setMappositionA(m_numberone); 00040 setMappositionB(m_numbertwo); 00041 m_numberone = m_numberone + 4; 00042 }
void TrackPool::AddTrackVertex | ( | const int | number, | |
const double | mass, | |||
const RecEmcShower * | trk | |||
) | [inherited] |
Definition at line 444 of file TrackPool.cxx.
References cos(), DstEmcShower::dE(), DstEmcShower::dphi(), DstEmcShower::dtheta(), DstEmcShower::energy(), TrackPool::m_numberone, TrackPool::m_numbertwo, TrackPool::numberWTrack(), DstEmcShower::phi(), TrackPool::setGammaShape(), TrackPool::setGammaShapeList(), TrackPool::setMapkinematic(), TrackPool::setMappositionA(), TrackPool::setMappositionB(), TrackPool::setWTrackInfit(), TrackPool::setWTrackList(), TrackPool::setWTrackOrigin(), sin(), DstEmcShower::theta(), DstEmcShower::x(), x, DstEmcShower::y(), and DstEmcShower::z().
00444 { 00445 double ptrk = trk->energy(); 00446 double e = sqrt(ptrk*ptrk + mass * mass); 00447 double the = trk->theta(); 00448 double phi = trk->phi(); 00449 HepLorentzVector p4(ptrk * sin(the) * cos(phi), 00450 ptrk * sin(the) * sin(phi), 00451 ptrk * cos(the), 00452 e); 00453 double dphi = trk->dphi(); 00454 double dthe = trk->dtheta(); 00455 double de = trk->dE(); 00456 double x = trk->x(); 00457 double y = trk->y(); 00458 double z = trk->z(); 00459 HepPoint3D x3 (x, y ,z); 00460 WTrackParameter wtrk(x3, p4 ,dphi ,dthe, de); 00461 setWTrackOrigin(wtrk); 00462 setWTrackInfit(wtrk); 00463 setWTrackList(number); 00464 if(number != numberWTrack()-1) { 00465 std::cout << "TrackPool: wrong track index" <<" " 00466 <<number<<" , " <<numberWTrack()<< std::endl; 00467 } 00468 GammaShape gtrk(p4,dphi,dthe,de); 00469 setGammaShape(gtrk); 00470 setGammaShapeList(number); 00471 setMapkinematic(6); 00472 m_numbertwo = 0; 00473 setMappositionA(m_numberone); 00474 setMappositionB(m_numbertwo); 00475 00476 m_numberone = m_numberone + 4; 00477 m_numbertwo = m_numbertwo + 3; 00478 }
double SecondVertexFit::chisq | ( | ) | const [inline] |
Definition at line 45 of file SecondVertexFit.h.
References m_chisq.
Referenced by DQAKsInfo::calculate(), DQAKsKpi::execute(), incllambda::execute(), inclks::execute(), Fit(), K0pipipi0::MTotal(), K0pipi::MTotal(), K0pi0::MTotal(), K0kpi::MTotal(), K0kk::MTotal(), LocalKsSelector::operator()(), and utility::SecondaryVFit().
00045 {return m_chisq;}
void TrackPool::clearGammaShape | ( | ) | [inline, inherited] |
Definition at line 139 of file TrackPool.h.
References TrackPool::m_gammashape.
Referenced by VertexFit::init(), KinematicFit::init(), KalmanKinematicFit::init(), and TrackPool::TrackPool().
00139 {m_gammashape.clear();}
void TrackPool::clearGammaShapeList | ( | ) | [inline, inherited] |
Definition at line 140 of file TrackPool.h.
References TrackPool::m_lgammashape.
Referenced by VertexFit::init(), KinematicFit::init(), KalmanKinematicFit::init(), and TrackPool::TrackPool().
00140 {m_lgammashape.clear();}
void TrackPool::clearMapkinematic | ( | ) | [inline, inherited] |
Definition at line 124 of file TrackPool.h.
References TrackPool::m_mapkinematic.
Referenced by VertexFit::init(), KinematicFit::init(), KalmanKinematicFit::init(), and TrackPool::TrackPool().
00124 {m_mapkinematic.clear();}
void TrackPool::clearMappositionA | ( | ) | [inline, inherited] |
Definition at line 125 of file TrackPool.h.
References TrackPool::m_mappositionA.
Referenced by VertexFit::init(), KinematicFit::init(), KalmanKinematicFit::init(), and TrackPool::TrackPool().
00125 {m_mappositionA.clear();}
void TrackPool::clearMappositionB | ( | ) | [inline, inherited] |
Definition at line 126 of file TrackPool.h.
References TrackPool::m_mappositionB.
Referenced by VertexFit::init(), KinematicFit::init(), KalmanKinematicFit::init(), and TrackPool::TrackPool().
00126 {m_mappositionB.clear();}
void TrackPool::clearone | ( | ) | [inline, inherited] |
Definition at line 115 of file TrackPool.h.
References TrackPool::m_numberone.
Referenced by VertexFit::init(), KinematicFit::init(), and KalmanKinematicFit::init().
00115 {m_numberone = 0;}
void TrackPool::cleartwo | ( | ) | [inline, inherited] |
Definition at line 116 of file TrackPool.h.
References TrackPool::m_numbertwo.
Referenced by VertexFit::init(), KinematicFit::init(), and KalmanKinematicFit::init().
00116 {m_numbertwo = 0;}
void TrackPool::clearWTrackInfit | ( | ) | [inline, inherited] |
Definition at line 112 of file TrackPool.h.
References TrackPool::m_wtrk_infit.
Referenced by VertexFit::init(), init(), KinematicFit::init(), KalmanKinematicFit::init(), and TrackPool::TrackPool().
00112 {m_wtrk_infit.clear();}
void TrackPool::clearWTrackList | ( | ) | [inline, inherited] |
Definition at line 113 of file TrackPool.h.
References TrackPool::m_lwtrk.
Referenced by VertexFit::init(), init(), KinematicFit::init(), KalmanKinematicFit::init(), and TrackPool::TrackPool().
00113 {m_lwtrk.clear();}
void TrackPool::clearWTrackOrigin | ( | ) | [inline, inherited] |
Definition at line 111 of file TrackPool.h.
References TrackPool::m_wtrk_origin.
Referenced by VertexFit::init(), init(), KinematicFit::init(), KalmanKinematicFit::init(), and TrackPool::TrackPool().
00111 {m_wtrk_origin.clear();}
HepPoint3D SecondVertexFit::crossPoint | ( | ) | const [inline] |
Definition at line 81 of file SecondVertexFit.h.
References m_crxyz.
00082 { 00083 return HepPoint3D(m_crxyz[0], m_crxyz[1], m_crxyz[2]); 00084 }
Hep3Vector SecondVertexFit::crossVector | ( | ) | const [inline] |
Definition at line 86 of file SecondVertexFit.h.
References m_crxyz, m_vpar_primary, and VertexParameter::Vx().
00087 { 00088 return Hep3Vector(m_crxyz[0] - m_vpar_primary.Vx()[0], 00089 m_crxyz[1] - m_vpar_primary.Vx()[1], 00090 m_crxyz[2] - m_vpar_primary.Vx()[2]); 00091 }
double SecondVertexFit::ctau | ( | ) | const [inline] |
Definition at line 48 of file SecondVertexFit.h.
References m_ctau.
Referenced by DQAKsKpi::execute(), incllambda::execute(), and inclks::execute().
00048 {return m_ctau;}
double SecondVertexFit::ctauError | ( | ) | const [inline] |
Definition at line 49 of file SecondVertexFit.h.
References m_ctau_error.
00049 {return m_ctau_error;}
double SecondVertexFit::decayLength | ( | ) | const [inline] |
Definition at line 46 of file SecondVertexFit.h.
References m_lxyz.
Referenced by DQAKsInfo::calculate(), DQAKsKpi::execute(), incllambda::execute(), inclks::execute(), K0pipipi0::MTotal(), K0pipi::MTotal(), K0pi0::MTotal(), K0kpi::MTotal(), K0kk::MTotal(), LocalKsSelector::operator()(), and utility::SecondaryVFit().
00046 {return m_lxyz;}
double SecondVertexFit::decayLengthError | ( | ) | const [inline] |
Definition at line 47 of file SecondVertexFit.h.
References m_lxyz_error.
Referenced by DQAKsInfo::calculate(), DQAKsKpi::execute(), incllambda::execute(), inclks::execute(), LocalKsSelector::operator()(), and utility::SecondaryVFit().
00047 {return m_lxyz_error;}
double SecondVertexFit::factor | ( | ) | const [inline] |
Definition at line 50 of file SecondVertexFit.h.
References m_factor.
Referenced by setMagCorrFactor().
00050 {return m_factor;}
bool SecondVertexFit::Fit | ( | ) |
Definition at line 87 of file SecondVertexFit.cxx.
References chisq(), cos(), VertexParameter::Evx(), VertexFitBField::getCBz(), genRecEmupikp::i, VertexFitBField::instance(), ganga-rec::j, lambda, m_chicut, m_chisq, m_chiter, m_crxyz, m_ctau, m_ctau_error, m_factor, m_lxyz, m_lxyz_error, m_niter, m_p4par, m_vpar_primary, m_vpar_secondary, m_wtrk, p4par(), WTrackParameter::setCharge(), WTrackParameter::setEw(), WTrackParameter::setW(), sin(), VertexParameter::Vx(), w, and TrackPool::wTrackOrigin().
Referenced by DQAKsInfo::calculate(), JsiLL::execute(), DQAKsKpi::execute(), incllambda::execute(), inclks::execute(), K0pipipi0::MTotal(), K0pipi::MTotal(), K0pi0::MTotal(), K0kpi::MTotal(), K0kk::MTotal(), LocalKsSelector::operator()(), and utility::SecondaryVFit().
00088 { 00089 bool okfit = false; 00090 00091 HepVector aOrigin(10, 0); 00092 HepVector aInfit(10, 0); 00093 HepSymMatrix VaOrigin(10, 0); 00094 HepSymMatrix VaInfit(10, 0); 00095 aOrigin.sub(1, wTrackOrigin(0).w()); 00096 aOrigin.sub(8, m_vpar_primary.Vx()); 00097 VaOrigin.sub(1, wTrackOrigin(0).Ew()); 00098 VaOrigin.sub(8, m_vpar_primary.Evx()); 00099 HepVector ctOrigin(1, 0); 00100 HepVector ctInfit(1, 0); 00101 HepSymMatrix Vct(1, 0); 00102 aInfit = aOrigin; 00103 ctInfit = ctOrigin; 00104 00105 std::vector<double> chisq; 00106 chisq.clear(); 00107 double chi2 = 999; 00108 for(int it = 0; it < m_niter; it++) 00109 { 00110 HepMatrix D(3, 10, 0); 00111 HepLorentzVector p4par = HepLorentzVector(aInfit[0], aInfit[1], aInfit[2], aInfit[3]); 00112 HepMatrix E(3,1,0); 00113 HepVector d(3, 0); 00114 if (wTrackOrigin(0).charge() == 0) 00115 { 00116 D[0][4] = -1.0; 00117 D[0][7] = 1.0; 00118 D[1][5] = -1.0; 00119 D[1][8] = 1.0; 00120 D[2][6] = -1.0; 00121 D[2][9] = 1.0; 00122 00123 E[0][0] = p4par.px()/p4par.m(); 00124 E[1][0] = p4par.py()/p4par.m(); 00125 E[2][0] = p4par.pz()/p4par.m(); 00126 00127 d[0] = aInfit[7]-aInfit[4]+ctInfit[0]*p4par.px()/p4par.m(); 00128 d[1] = aInfit[8]-aInfit[5]+ctInfit[0]*p4par.py()/p4par.m(); 00129 d[2] = aInfit[9]-aInfit[6]+ctInfit[0]*p4par.pz()/p4par.m(); 00130 } 00131 else 00132 { 00133 // double afield = VertexFitBField::instance()->getCBz(m_vpar_primary.Vx(), m_vpar_secondary.Vx()); 00134 double afield = m_factor * VertexFitBField::instance()->getCBz(m_vpar_primary.Vx(), m_vpar_secondary.Vx()); 00135 double a = afield * wTrackOrigin(0).charge(); 00136 D[0][4] = -1.0; 00137 D[0][7] = 1.0; 00138 D[1][5] = -1.0; 00139 D[1][8] = 1.0; 00140 D[2][6] = -1.0; 00141 D[2][9] = 1.0; 00142 00143 E[0][0] = p4par.px() / p4par.m() * cos(a * ctInfit[0] / p4par.m()) + p4par.py() / p4par.m() * sin(a * ctInfit[0] / p4par.m()); 00144 E[1][0] = p4par.py() / p4par.m() * cos(a * ctInfit[0] / p4par.m()) - p4par.px() / p4par.m() * sin(a * ctInfit[0] / p4par.m()); 00145 E[2][0] = p4par.pz() / p4par.m(); 00146 00147 d[0] = aInfit[7] - aInfit[4]+p4par.px()/a * sin(a * ctInfit[0]/p4par.m()) + p4par.py()/a*(1-cos(a*ctInfit[0]/p4par.m())); 00148 d[1] = aInfit[8] - aInfit[5]+p4par.py()/a * sin(a * ctInfit[0]/p4par.m()) - p4par.px()/a*(1-cos(a*ctInfit[0]/p4par.m())); 00149 d[2] = aInfit[9] - aInfit[6]+ctInfit[0]*p4par.pz()/p4par.m(); 00150 } 00151 00152 HepSymMatrix VD(3, 0); 00153 HepVector dela0(10, 0); 00154 HepVector lambda0(3, 0); 00155 HepVector delct(1, 0); 00156 HepVector lambda(3, 0); 00157 int ifail; 00158 00159 VD = (VaOrigin.similarity(D)).inverse(ifail); 00160 dela0 = aOrigin - aInfit; 00161 lambda0 = VD*(D*dela0 + d); 00162 Vct = (VD.similarity(E.T())).inverse(ifail); 00163 delct = -(Vct * E.T()) * lambda0; 00164 ctInfit = ctInfit + delct; 00165 lambda = lambda0 + (VD * E) * delct; 00166 aInfit = aOrigin - (VaOrigin * D.T()) * lambda; 00167 chi2 = dot(lambda, D*dela0 + d); 00168 VaInfit = VaOrigin - (VD.similarity(D.T())).similarity(VaOrigin); 00169 VaInfit = VaInfit + (((Vct.similarity(E)).similarity(VD)).similarity(D.T())).similarity(VaOrigin); 00170 00171 chisq.push_back(chi2); 00172 00173 if(it > 0) 00174 { 00175 double delchi = chisq[it] - chisq[it-1]; 00176 if (fabs(delchi) < m_chiter) break; 00177 } 00178 } 00179 if (chi2 < 0 || chi2 > m_chicut) 00180 return okfit; 00181 00182 HepLorentzVector p4par = HepLorentzVector(aInfit[0], aInfit[1], aInfit[2], aInfit[3]); 00183 m_ctau = ctInfit[0]; 00184 m_ctau_error = sqrt(Vct[0][0]); 00185 m_lxyz = ctInfit[0] * p4par.rho() / p4par.m(); 00186 m_lxyz_error = sqrt(Vct[0][0]) * p4par.rho() / p4par.m(); 00187 m_chisq = chi2; 00188 m_p4par = p4par; 00189 for(int i = 0; i < 3; i++) 00190 m_crxyz[i] = aInfit[4+i]; 00191 HepVector w(7, 0); 00192 HepSymMatrix Ew(7, 0); 00193 for(int i = 0; i < 7; i++) 00194 { 00195 w[i] = aInfit[i]; 00196 for(int j = 0; j < 7; j++) 00197 { 00198 Ew[i][j] = VaInfit[i][j]; 00199 } 00200 } 00201 m_wtrk.setW(w); 00202 m_wtrk.setEw(Ew); 00203 m_wtrk.setCharge(wTrackOrigin(0).charge()); 00204 okfit = true; 00205 return okfit; 00206 }
int TrackPool::GammaShapeList | ( | int | n | ) | const [inline, inherited] |
Definition at line 98 of file TrackPool.h.
References TrackPool::m_lgammashape.
00098 {return m_lgammashape[n];}
std::vector<int> TrackPool::GammaShapeList | ( | ) | const [inline, inherited] |
Definition at line 96 of file TrackPool.h.
References TrackPool::m_lgammashape.
Referenced by KinematicFit::gda(), and KalmanKinematicFit::gda().
00096 {return m_lgammashape;}
GammaShape TrackPool::GammaShapeValue | ( | int | n | ) | const [inline, inherited] |
Definition at line 97 of file TrackPool.h.
References TrackPool::m_gammashape.
00097 {return m_gammashape[n];}
std::vector<GammaShape> TrackPool::GammaShapeValue | ( | ) | const [inline, inherited] |
Definition at line 95 of file TrackPool.h.
References TrackPool::m_gammashape.
Referenced by KinematicFit::gda(), and KalmanKinematicFit::gda().
00095 {return m_gammashape;}
HepPoint3D TrackPool::getBeamPosition | ( | ) | const [inline, inherited] |
Definition at line 147 of file TrackPool.h.
References TrackPool::m_BeamPosition.
Referenced by KalmanKinematicFit::Fit().
00147 {return m_BeamPosition;}
HepSymMatrix TrackPool::getVBeamPosition | ( | ) | const [inline, inherited] |
Definition at line 148 of file TrackPool.h.
References TrackPool::m_VBeamPosition.
Referenced by KalmanKinematicFit::Fit().
00148 {return m_VBeamPosition;}
void SecondVertexFit::init | ( | ) |
Definition at line 69 of file SecondVertexFit.cxx.
References TrackPool::clearWTrackInfit(), TrackPool::clearWTrackList(), TrackPool::clearWTrackOrigin(), m_chicut, m_chisq, m_chiter, m_crxyz, m_factor, m_lxyz, m_lxyz_error, m_niter, m_p4par, m_vpar_secondary, and m_wtrk.
Referenced by DQAKsInfo::calculate(), JsiLL::execute(), DQAKsKpi::execute(), incllambda::execute(), inclks::execute(), DQAKsInfo::init(), K0pipipi0::MTotal(), K0pipi::MTotal(), K0pi0::MTotal(), K0kpi::MTotal(), K0kk::MTotal(), LocalKsSelector::operator()(), and utility::SecondaryVFit().
00070 { 00071 clearWTrackOrigin(); 00072 clearWTrackInfit(); 00073 clearWTrackList(); 00074 m_vpar_secondary = VertexParameter(); 00075 m_lxyz = 0; 00076 m_lxyz_error = 0; 00077 m_p4par = HepLorentzVector(0, 0, 0, 0); 00078 m_crxyz = HepVector(3, 0); 00079 m_chisq = 9999; 00080 m_wtrk = WTrackParameter(); 00081 m_niter = 10; 00082 m_chicut = 500; 00083 m_chiter = 1.0e-2; 00084 m_factor = 1.000; 00085 }
SecondVertexFit * SecondVertexFit::instance | ( | ) | [static] |
Definition at line 45 of file SecondVertexFit.cxx.
References m_pointer, and SecondVertexFit().
Referenced by DQADtag::DQADtag(), DQAKsInfo::DQAKsInfo(), JsiLL::execute(), DQAKsKpi::execute(), incllambda::execute(), inclks::execute(), K0pipipi0::MTotal(), K0pipi::MTotal(), K0pi0::MTotal(), K0kpi::MTotal(), K0kk::MTotal(), LocalKsSelector::operator()(), and utility::SecondaryVFit().
00046 { 00047 if (m_pointer) 00048 return m_pointer; 00049 m_pointer = new SecondVertexFit(); 00050 return m_pointer; 00051 }
vector<int> TrackPool::mapkinematic | ( | ) | const [inline, inherited] |
Definition at line 122 of file TrackPool.h.
References TrackPool::m_mapkinematic.
Referenced by KalmanKinematicFit::Fit(), KalmanKinematicFit::gda(), KalmanKinematicFit::getCInfit(), KalmanKinematicFit::getCOrigin(), KalmanKinematicFit::pInfit(), KalmanKinematicFit::pOrigin(), KalmanKinematicFit::pull(), and KalmanKinematicFit::updateConstraints().
00122 {return m_mapkinematic;}
vector<int> TrackPool::mappositionA | ( | ) | const [inline, inherited] |
Definition at line 120 of file TrackPool.h.
References TrackPool::m_mappositionA.
Referenced by KalmanKinematicFit::Fit(), KalmanKinematicFit::gda(), KalmanKinematicFit::getCInfit(), KalmanKinematicFit::getCOrigin(), KalmanKinematicFit::pInfit(), KalmanKinematicFit::pOrigin(), KalmanKinematicFit::pull(), and KalmanKinematicFit::updateConstraints().
00120 {return m_mappositionA;}
vector<int> TrackPool::mappositionB | ( | ) | const [inline, inherited] |
Definition at line 121 of file TrackPool.h.
References TrackPool::m_mappositionB.
Referenced by KalmanKinematicFit::Fit(), KalmanKinematicFit::gda(), KalmanKinematicFit::getCInfit(), KalmanKinematicFit::getCOrigin(), KalmanKinematicFit::pInfit(), KalmanKinematicFit::pOrigin(), KalmanKinematicFit::pull(), and KalmanKinematicFit::updateConstraints().
00121 {return m_mappositionB;}
int TrackPool::numberGammaShape | ( | ) | const [inline, inherited] |
Definition at line 99 of file TrackPool.h.
References TrackPool::m_lgammashape.
Referenced by KinematicFit::gda(), and KalmanKinematicFit::gda().
00099 { return ((int)(m_lgammashape.size()) );}
int TrackPool::numberone | ( | ) | const [inline, inherited] |
Definition at line 117 of file TrackPool.h.
References TrackPool::m_numberone.
Referenced by KalmanKinematicFit::BuildVirtualParticle(), KalmanKinematicFit::Fit(), KalmanKinematicFit::fit(), and KalmanKinematicFit::upCovmtx().
00117 {return m_numberone;}
int TrackPool::numbertwo | ( | ) | const [inline, inherited] |
Definition at line 118 of file TrackPool.h.
References TrackPool::m_numbertwo.
Referenced by KalmanKinematicFit::Fit(), KalmanKinematicFit::fit(), and KalmanKinematicFit::upCovmtx().
00118 {return m_numbertwo;}
int TrackPool::numberWTrack | ( | ) | const [inline, inherited] |
Definition at line 79 of file TrackPool.h.
References TrackPool::m_lwtrk.
Referenced by KinematicFit::AddFourMomentum(), KalmanKinematicFit::AddFourMomentum(), KinematicFit::AddThreeMomentum(), KalmanKinematicFit::AddThreeMomentum(), TrackPool::AddTrack(), TrackPool::AddTrackVertex(), VertexFit::Fit(), KinematicFit::Fit(), KinematicFit::fit(), KalmanKinematicFit::Fit(), KalmanKinematicFit::fit(), KinematicFit::gda(), KalmanKinematicFit::gda(), and KinematicFit::upCovmtx().
00079 { return ((int)(m_lwtrk.size()));}
HepLorentzVector SecondVertexFit::p4par | ( | ) | const [inline] |
Definition at line 52 of file SecondVertexFit.h.
References m_p4par.
Referenced by DQAKsInfo::calculate(), incllambda::execute(), inclks::execute(), Fit(), K0pipipi0::MTotal(), K0pipi::MTotal(), K0pi0::MTotal(), K0kpi::MTotal(), and K0kk::MTotal().
00052 {return m_p4par;}
void TrackPool::setBeamPosition | ( | const HepPoint3D | BeamPosition | ) | [inline, inherited] |
Definition at line 143 of file TrackPool.h.
References TrackPool::m_BeamPosition.
Referenced by Gam4pikp::execute(), KinematicFit::init(), KalmanKinematicFit::init(), and TrackPool::TrackPool().
00143 {m_BeamPosition = BeamPosition;}
void SecondVertexFit::setChisqCut | ( | const double | chicut = 500 , |
|
const double | chiter = 1.0e-2 | |||
) | [inline] |
Definition at line 33 of file SecondVertexFit.h.
References m_chicut, and m_chiter.
Referenced by DQAKsInfo::calculate().
void TrackPool::setGammaShape | ( | const GammaShape | gammashape | ) | [inline, inherited] |
Definition at line 136 of file TrackPool.h.
References TrackPool::m_gammashape.
00136 {m_gammashape.push_back(gammashape);}
void TrackPool::setGammaShape | ( | const int | n, | |
const GammaShape | gammashape | |||
) | [inline, inherited] |
Definition at line 135 of file TrackPool.h.
References TrackPool::m_gammashape.
Referenced by TrackPool::AddMissTrack(), TrackPool::AddTrack(), and TrackPool::AddTrackVertex().
00135 {m_gammashape[n] = gammashape;}
void TrackPool::setGammaShapeList | ( | const int | n | ) | [inline, inherited] |
Definition at line 137 of file TrackPool.h.
References TrackPool::m_lgammashape.
Referenced by TrackPool::AddMissTrack(), TrackPool::AddTrack(), and TrackPool::AddTrackVertex().
00137 {m_lgammashape.push_back(n);}
void SecondVertexFit::setIterNumber | ( | const int | niter = 10 |
) | [inline] |
void SecondVertexFit::setMagCorrFactor | ( | const double | factor = 1.000 |
) | [inline] |
void TrackPool::setMapkinematic | ( | const int | n | ) | [inline, inherited] |
Definition at line 128 of file TrackPool.h.
References TrackPool::m_mapkinematic.
Referenced by TrackPool::AddMissTrack(), TrackPool::AddTrack(), and TrackPool::AddTrackVertex().
00128 {m_mapkinematic.push_back(n);}
void TrackPool::setMappositionA | ( | const int | n | ) | [inline, inherited] |
Definition at line 129 of file TrackPool.h.
References TrackPool::m_mappositionA.
Referenced by TrackPool::AddMissTrack(), TrackPool::AddTrack(), and TrackPool::AddTrackVertex().
00129 {m_mappositionA.push_back(n);}
void TrackPool::setMappositionB | ( | const int | n | ) | [inline, inherited] |
Definition at line 130 of file TrackPool.h.
References TrackPool::m_mappositionB.
Referenced by TrackPool::AddMissTrack(), TrackPool::AddTrack(), and TrackPool::AddTrackVertex().
00130 {m_mappositionB.push_back(n);}
void SecondVertexFit::setPrimaryVertex | ( | const VertexParameter | vpar | ) | [inline] |
Definition at line 37 of file SecondVertexFit.h.
References VertexParameter::Evx(), m_vpar_primary, VertexParameter::setEvx(), VertexParameter::setVx(), vpar(), and VertexParameter::Vx().
Referenced by DQAKsInfo::calculate(), DQAKsKpi::execute(), K0pipipi0::MTotal(), K0pipi::MTotal(), K0pi0::MTotal(), K0kpi::MTotal(), K0kk::MTotal(), LocalKsSelector::operator()(), and utility::SecondaryVFit().
00037 {m_vpar_primary.setVx(vpar.Vx());m_vpar_primary.setEvx(vpar.Evx());}
void TrackPool::setVBeamPosition | ( | const HepSymMatrix | VBeamPosition | ) | [inline, inherited] |
Definition at line 144 of file TrackPool.h.
References TrackPool::m_VBeamPosition.
Referenced by Gam4pikp::execute(), KinematicFit::init(), KalmanKinematicFit::init(), and TrackPool::TrackPool().
00144 {m_VBeamPosition = VBeamPosition;}
void SecondVertexFit::setVpar | ( | const VertexParameter | vpar | ) | [inline] |
Definition at line 35 of file SecondVertexFit.h.
References m_vpar_secondary, and vpar().
Referenced by DQAKsInfo::calculate(), JsiLL::execute(), DQAKsKpi::execute(), incllambda::execute(), inclks::execute(), K0pipipi0::MTotal(), K0pipi::MTotal(), K0pi0::MTotal(), K0kpi::MTotal(), K0kk::MTotal(), LocalKsSelector::operator()(), and utility::SecondaryVFit().
00035 {m_vpar_secondary = vpar;}
void TrackPool::setWTrackInfit | ( | const WTrackParameter | wtrk | ) | [inline, inherited] |
Definition at line 108 of file TrackPool.h.
References TrackPool::m_wtrk_infit.
00108 {m_wtrk_infit.push_back(wtrk);}
void TrackPool::setWTrackInfit | ( | const int | n, | |
const WTrackParameter | wtrk | |||
) | [inline, inherited] |
Definition at line 106 of file TrackPool.h.
References TrackPool::m_wtrk_infit.
Referenced by TrackPool::AddMissTrack(), TrackPool::AddTrack(), TrackPool::AddTrackVertex(), VertexFit::BeamFit(), KinematicFit::covMatrix(), VertexFit::Fit(), KinematicFit::Fit(), KalmanKinematicFit::Fit(), KinematicFit::pull(), KalmanKinematicFit::pull(), VertexFit::swimVertex(), and KinematicFit::upCovmtx().
00106 {m_wtrk_infit[n] = wtrk;}
void TrackPool::setWTrackList | ( | const int | n | ) | [inline, inherited] |
Definition at line 109 of file TrackPool.h.
References TrackPool::m_lwtrk.
Referenced by TrackPool::AddMissTrack(), TrackPool::AddTrack(), and TrackPool::AddTrackVertex().
00109 {m_lwtrk.push_back(n);}
void TrackPool::setWTrackOrigin | ( | const WTrackParameter | wtrk | ) | [inline, inherited] |
Definition at line 107 of file TrackPool.h.
References TrackPool::m_wtrk_origin.
00107 {m_wtrk_origin.push_back(wtrk);}
void TrackPool::setWTrackOrigin | ( | const int | n, | |
const WTrackParameter | wtrk | |||
) | [inline, inherited] |
Definition at line 105 of file TrackPool.h.
References TrackPool::m_wtrk_origin.
Referenced by TrackPool::AddMissTrack(), TrackPool::AddTrack(), and TrackPool::AddTrackVertex().
00105 {m_wtrk_origin[n] = wtrk;}
VertexParameter SecondVertexFit::vpar | ( | ) | const [inline] |
Definition at line 54 of file SecondVertexFit.h.
References m_vpar_secondary.
Referenced by setPrimaryVertex(), and setVpar().
00054 {return m_vpar_secondary;}
WTrackParameter SecondVertexFit::wpar | ( | ) | const [inline] |
Definition at line 53 of file SecondVertexFit.h.
References m_wtrk.
Referenced by JsiLL::execute(), DQAKsKpi::execute(), and K0pipi::MTotal().
00053 {return m_wtrk;}
WTrackParameter TrackPool::wTrackInfit | ( | int | n | ) | const [inline, inherited] |
Definition at line 76 of file TrackPool.h.
References TrackPool::m_wtrk_infit.
00076 {return m_wtrk_infit[n];}
std::vector<WTrackParameter> TrackPool::wTrackInfit | ( | ) | const [inline, inherited] |
Definition at line 73 of file TrackPool.h.
References TrackPool::m_wtrk_infit.
Referenced by VertexFit::BeamFit(), VertexFit::BuildVirtualParticle(), KinematicFit::BuildVirtualParticle(), KalmanKinematicFit::BuildVirtualParticle(), KinematicFit::covMatrix(), VertexFit::Ew(), KinematicFit::infit(), KalmanKinematicFit::infit(), VertexFit::pfit(), KinematicFit::pull(), KalmanKinematicFit::pull(), VertexFit::swimVertex(), KinematicFit::upCovmtx(), VertexFit::w(), VertexFit::wtrk(), and VertexFit::xfit().
00073 {return m_wtrk_infit;}
int TrackPool::wTrackList | ( | int | n | ) | const [inline, inherited] |
std::vector<int> TrackPool::wTrackList | ( | ) | const [inline, inherited] |
WTrackParameter TrackPool::wTrackOrigin | ( | int | n | ) | const [inline, inherited] |
Definition at line 75 of file TrackPool.h.
References TrackPool::m_wtrk_origin.
00075 {return m_wtrk_origin[n];}
std::vector<WTrackParameter> TrackPool::wTrackOrigin | ( | ) | const [inline, inherited] |
Definition at line 72 of file TrackPool.h.
References TrackPool::m_wtrk_origin.
Referenced by VertexFit::AddVertex(), VertexFit::BeamFit(), VertexFit::BuildVirtualParticle(), KinematicFit::covMatrix(), VertexFit::Fit(), Fit(), KinematicFit::Fit(), KalmanKinematicFit::Fit(), KinematicFit::gda(), KalmanKinematicFit::gda(), KinematicFit::origin(), KalmanKinematicFit::origin(), VertexFit::pull(), KinematicFit::pull(), KalmanKinematicFit::pull(), VertexFit::swimVertex(), KinematicFit::upCovmtx(), and VertexFit::UpdateConstraints().
00072 {return m_wtrk_origin;}
double SecondVertexFit::m_chicut [private] |
double SecondVertexFit::m_chisq [private] |
double SecondVertexFit::m_chiter [private] |
HepVector SecondVertexFit::m_crxyz [private] |
Definition at line 70 of file SecondVertexFit.h.
Referenced by crossPoint(), crossVector(), Fit(), and init().
double SecondVertexFit::m_ctau [private] |
double SecondVertexFit::m_ctau_error [private] |
double SecondVertexFit::m_factor [private] |
Definition at line 68 of file SecondVertexFit.h.
Referenced by factor(), Fit(), init(), and setMagCorrFactor().
double SecondVertexFit::m_lxyz [private] |
double SecondVertexFit::m_lxyz_error [private] |
Definition at line 65 of file SecondVertexFit.h.
Referenced by decayLengthError(), Fit(), and init().
int SecondVertexFit::m_niter [private] |
HepLorentzVector SecondVertexFit::m_p4par [private] |
SecondVertexFit * SecondVertexFit::m_pointer = 0 [static, private] |
Definition at line 73 of file SecondVertexFit.h.
Referenced by crossVector(), Fit(), SecondVertexFit(), and setPrimaryVertex().
WTrackParameter SecondVertexFit::m_wtrk [private] |