00001
00002 #include "VertexFit/KinematicConstraints.h"
00003
00004 const int KinematicConstraints::Resonance = 1;
00005 const int KinematicConstraints::TotalEnergy = 2;
00006 const int KinematicConstraints::TotalMomentum = 4;
00007 const int KinematicConstraints::Position = 8;
00008 const int KinematicConstraints::ThreeMomentum = 16;
00009 const int KinematicConstraints::FourMomentum = 32;
00010 const int KinematicConstraints::EqualMass = 64;
00011
00012 KinematicConstraints::KinematicConstraints(){
00013 m_Ec.clear();
00014 m_Dc.clear();
00015 m_dc.clear();
00016 m_Vm.clear();
00017 m_lambda.clear();
00018 m_ltrk.clear();
00019 m_nequal.clear();
00020 m_nc=0;
00021 m_mres = -1;
00022 m_etot = -1;
00023 m_ptot = -1;
00024 m_p3 = Hep3Vector(0, 0, 0);
00025 m_p4 = HepLorentzVector(0, 0, 0, 0);
00026 m_phipre = 0;
00027 m_lambdapre = 0;
00028 m_Vre = HepSymMatrix(1,0);
00029 m_Vme = HepSymMatrix(4,0);
00030 m_Vne = HepSymMatrix(1,0);
00031 m_Vpe = HepSymMatrix(2,0);
00032 }
00033
00034 void KinematicConstraints::ResonanceConstraints(const double mres, std::vector<int> tlis, HepSymMatrix Vre)
00035 {
00036 m_ltrk = tlis;
00037 m_nc = 1;
00038 setType(typeRes());
00039 setMres(mres);
00040 setVre(Vre);
00041 setVmeasure(Vre);
00042 }
00043
00044 void KinematicConstraints::TotalEnergyConstraints(const double etot, std::vector<int> tlis)
00045 {
00046 m_ltrk = tlis;
00047 m_nc = 1;
00048 setType(typeEtot());
00049 setEtot(etot);
00050 HepSymMatrix tmp(1,0);
00051 setVmeasure(tmp);
00052 }
00053
00054 void KinematicConstraints::TotalMomentumConstraints(const double ptot, std::vector<int> tlis)
00055 {
00056 m_ltrk = tlis;
00057 m_nc = 1;
00058 setType(typePtot());
00059 setPtot(ptot);
00060 HepSymMatrix tmp(1,0);
00061 setVmeasure(tmp);
00062 }
00063
00064 void KinematicConstraints::ThreeMomentumConstraints(const Hep3Vector p3, std::vector<int> tlis)
00065 {
00066 m_ltrk = tlis;
00067 m_nc = 3;
00068 setType(typeP3());
00069 setP3(p3);
00070 HepSymMatrix tmp(3,0);
00071 setVmeasure(tmp);
00072 }
00073
00074 void KinematicConstraints::FourMomentumConstraints(const HepLorentzVector p4, std::vector<int> tlis, HepSymMatrix Vme)
00075 {
00076 m_ltrk = tlis;
00077 m_nc = 4;
00078 setType(typeP4());
00079 setP4(p4);
00080 setVme(Vme);
00081 m_Vm.push_back(Vme);
00082 setVmeasure(Vme);
00083 }
00084
00085 void KinematicConstraints::EqualMassConstraints(std::vector<int> tlis1, std::vector<int> tlis2, HepSymMatrix Vne)
00086 {
00087 m_ltrk.clear();
00088 for(unsigned int i = 0; i < tlis1.size(); i++)
00089 m_ltrk.push_back(tlis1[i]);
00090 for(unsigned int i = 0; i < tlis2.size(); i++)
00091 m_ltrk.push_back(tlis2[i]);
00092 m_nc = 1;
00093 setType(typeEqMass());
00094 setVne(Vne);
00095 m_Vm.push_back(Vne);
00096 m_nequal.clear();
00097 m_nequal.push_back(tlis1.size());
00098 m_nequal.push_back(tlis2.size());
00099 setVmeasure(Vne);
00100
00101 }
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113