CMS 3D CMS Logo

StKinFitter Class Reference

#include <TopQuarkAnalysis/TopKinFitter/interface/StKinFitter.h>

List of all members.

Public Types

enum  Parametrization { EMom, EtEtaPhi, EtThetaPhi }

Public Member Functions

StEvtSolution addKinFitInfo (StEvtSolution *asol)
 StKinFitter (Parametrization jetParam, Parametrization lepParam, Parametrization metParam, int maxNrIter, double maxDeltaS, double maxF, std::vector< int > constraints)
 StKinFitter (int jetParam, int lepParam, int metParam, int maxNrIter, double maxDeltaS, double maxF, std::vector< int > constraints)
 StKinFitter ()
 ~StKinFitter ()

Private Member Functions

void setupFitter ()
std::vector< float > translateCovM (TMatrixD &)

Private Attributes

TFitConstraintMcons1_
TFitConstraintMcons2_
TFitConstraintMcons3_
std::vector< intconstraints_
bool doNeutrinoResol_
TAbsFitParticlefitBottom_
TAbsFitParticlefitLepton_
TAbsFitParticlefitLight_
TAbsFitParticlefitNeutrino_
Parametrization jetParam_
Parametrization lepParam_
double maxDeltaS_
double maxF_
int maxNrIter_
Parametrization metParam_
TKinFittertheFitter_


Detailed Description

Definition at line 20 of file StKinFitter.h.


Member Enumeration Documentation

enum StKinFitter::Parametrization

Enumerator:
EMom 
EtEtaPhi 
EtThetaPhi 

Definition at line 24 of file StKinFitter.h.

00024 { EMom, EtEtaPhi, EtThetaPhi };


Constructor & Destructor Documentation

StKinFitter::StKinFitter (  ) 

Definition at line 28 of file StKinFitter.cc.

References setupFitter().

00028                          :
00029     jetParam_(EMom), 
00030     lepParam_(EMom), 
00031     metParam_(EMom),
00032     maxNrIter_(200), 
00033     maxDeltaS_(5e-5), 
00034     maxF_(1e-4) 
00035 {
00036   setupFitter();
00037 }

StKinFitter::StKinFitter ( int  jetParam,
int  lepParam,
int  metParam,
int  maxNrIter,
double  maxDeltaS,
double  maxF,
std::vector< int constraints 
)

Definition at line 39 of file StKinFitter.cc.

References setupFitter().

00040                                                                                                    :
00041   jetParam_((Parametrization) jetParam), 
00042   lepParam_((Parametrization) lepParam), 
00043   metParam_((Parametrization) metParam),
00044   maxNrIter_(maxNrIter), 
00045   maxDeltaS_(maxDeltaS), 
00046   maxF_(maxF),
00047   constraints_(constraints) 
00048 {
00049   setupFitter();
00050 }

StKinFitter::StKinFitter ( Parametrization  jetParam,
Parametrization  lepParam,
Parametrization  metParam,
int  maxNrIter,
double  maxDeltaS,
double  maxF,
std::vector< int constraints 
)

Definition at line 52 of file StKinFitter.cc.

References setupFitter().

00053                                                                                                    :
00054   jetParam_(jetParam), 
00055   lepParam_(lepParam), 
00056   metParam_(metParam),
00057   maxNrIter_(maxNrIter), 
00058   maxDeltaS_(maxDeltaS), 
00059   maxF_(maxF),
00060   constraints_(constraints) 
00061 {
00062   setupFitter();
00063 }

StKinFitter::~StKinFitter (  ) 

Definition at line 65 of file StKinFitter.cc.

References cons1_, cons2_, cons3_, fitBottom_, fitLepton_, fitLight_, fitNeutrino_, and theFitter_.

00066 {
00067   delete cons1_; delete cons2_; delete cons3_;
00068   delete fitBottom_; delete fitLight_; delete fitLepton_; delete fitNeutrino_;
00069   delete theFitter_;
00070 }


Member Function Documentation

StEvtSolution StKinFitter::addKinFitInfo ( StEvtSolution asol  ) 

Definition at line 72 of file StKinFitter.cc.

References EMom, res::HelperJet::eta(), eta, res::HelperElectron::eta(), res::HelperMuon::eta(), EtEtaPhi, EtThetaPhi, TKinFitter::fit(), fitBottom_, fitLepton_, fitLight_, fitNeutrino_, StEvtSolution::getBottom(), TAbsFitParticle::getCurr4Vec(), StEvtSolution::getDecay(), StEvtSolution::getElectron(), StEvtSolution::getLight(), StEvtSolution::getMuon(), TKinFitter::getNDF(), StEvtSolution::getNeutrino(), TKinFitter::getS(), TKinFitter::getStatus(), jetParam_, res::HelperJet::kB, res::HelperJet::kUds, lepParam_, m1, res::HelperMET::met(), CaloMET_cfi::met, metParam_, res::HelperJet::phi(), res::HelperElectron::phi(), res::HelperMET::phi(), res::HelperMuon::phi(), funct::pow(), res::HelperMuon::pt(), res::HelperElectron::pt(), res::HelperJet::pt(), StEvtSolution::setChi2Prob(), TAbsFitParticle::setCovMatrix(), StEvtSolution::setFitBottom(), StEvtSolution::setFitLepton(), StEvtSolution::setFitLight(), StEvtSolution::setFitNeutrino(), TAbsFitParticle::setIni4Vec(), and theFitter_.

Referenced by StEvtSolutionMaker::produce().

00073 {
00074   StEvtSolution fitsol(*asol);
00075 
00076   TMatrixD m1(3,3),  m2(3,3);
00077   TMatrixD m1b(4,4), m2b(4,4);
00078   TMatrixD m3(3,3),  m4(3,3);
00079   m1.Zero();  m2.Zero();
00080   m1b.Zero(); m2b.Zero();
00081   m3.Zero();  m4.Zero();
00082   
00083   TLorentzVector bottomVec(fitsol.getBottom().px(),fitsol.getBottom().py(),
00084                            fitsol.getBottom().pz(),fitsol.getBottom().energy());
00085   TLorentzVector lightVec(fitsol.getLight().px(),fitsol.getLight().py(),
00086                           fitsol.getLight().pz(),fitsol.getLight().energy());
00087   TLorentzVector leplVec;
00088   if(fitsol.getDecay()== "electron") leplVec = TLorentzVector(fitsol.getElectron().px(), fitsol.getElectron().py(),    
00089                                                               fitsol.getElectron().pz(), fitsol.getElectron().energy());
00090   if(fitsol.getDecay()== "muon")     leplVec = TLorentzVector(fitsol.getMuon().px(), fitsol.getMuon().py(),    
00091                                                               fitsol.getMuon().pz(), fitsol.getMuon().energy());
00092   TLorentzVector lepnVec(fitsol.getNeutrino().px(), fitsol.getNeutrino().py(),
00093                          0, fitsol.getNeutrino().et());
00094     
00095   // jet resolutions
00096   {
00097     //FIXME this dirty hack needs a clean solution soon!
00098     double pt  = fitsol.getBottom().pt ();
00099     double eta = fitsol.getBottom().eta();
00100     res::HelperJet jetRes;
00101     if (jetParam_ == EMom) {
00102       m1b(0,0) = pow(jetRes.pt (pt, eta, res::HelperJet::kB  ), 2);
00103       m1b(1,1) = pow(jetRes.pt (pt, eta, res::HelperJet::kB  ), 2);
00104       m1b(2,2) = pow(jetRes.pt (pt, eta, res::HelperJet::kB  ), 2);
00105       m1b(3,3) = pow(jetRes.pt (pt, eta, res::HelperJet::kB  ), 2);
00106       m2b(0,0) = pow(jetRes.pt (pt, eta, res::HelperJet::kUds), 2); 
00107       m2b(1,1) = pow(jetRes.pt (pt, eta, res::HelperJet::kUds), 2); 
00108       m2b(2,2) = pow(jetRes.pt (pt, eta, res::HelperJet::kUds), 2);
00109       m2b(3,3) = pow(jetRes.pt (pt, eta, res::HelperJet::kUds), 2);
00110     } else if (jetParam_ == EtEtaPhi) {
00111       m1 (0,0) = pow(jetRes.pt (pt, eta, res::HelperJet::kB  ), 2);
00112       m1 (1,1) = pow(jetRes.eta(pt, eta, res::HelperJet::kB  ), 2);
00113       m1 (2,2) = pow(jetRes.phi(pt, eta, res::HelperJet::kB  ), 2);
00114       m2 (0,0) = pow(jetRes.pt (pt, eta, res::HelperJet::kUds), 2); 
00115       m2 (1,1) = pow(jetRes.eta(pt, eta, res::HelperJet::kUds), 2); 
00116       m2 (2,2) = pow(jetRes.phi(pt, eta, res::HelperJet::kUds), 2);
00117     } else if (jetParam_ == EtThetaPhi) {
00118       m1 (0,0) = pow(jetRes.pt (pt, eta, res::HelperJet::kB  ), 2);
00119       m1 (1,1) = pow(jetRes.eta(pt, eta, res::HelperJet::kB  ), 2);
00120       m1 (2,2) = pow(jetRes.phi(pt, eta, res::HelperJet::kB  ), 2);
00121       m2 (0,0) = pow(jetRes.pt (pt, eta, res::HelperJet::kUds), 2); 
00122       m2 (1,1) = pow(jetRes.eta(pt, eta, res::HelperJet::kUds), 2); 
00123       m2 (2,2) = pow(jetRes.phi(pt, eta, res::HelperJet::kUds), 2);
00124     }
00125   }
00126   // lepton resolutions
00127   {
00128     //FIXME this dirty hack needs a clean solution soon!
00129     double pt  = fitsol.getElectron().pt ();
00130     double eta = fitsol.getElectron().eta();
00131     res::HelperMuon     muonRes;
00132     res::HelperElectron elecRes;
00133     if (lepParam_ == EMom) {
00134       if(fitsol.getDecay()== "electron"){
00135         m3(0,0) = pow(elecRes.pt (pt, eta), 2);
00136         m3(1,1) = pow(elecRes.pt (pt, eta), 2); 
00137         m3(2,2) = pow(elecRes.pt (pt, eta), 2);
00138       }
00139       if(fitsol.getDecay()== "muon"){
00140         m3(0,0) = pow(muonRes.pt (pt, eta), 2);
00141         m3(1,1) = pow(muonRes.pt (pt, eta), 2); 
00142         m3(2,2) = pow(muonRes.pt (pt, eta), 2);
00143       }
00144     } else if (lepParam_ == EtEtaPhi) {
00145       if(fitsol.getDecay()== "electron"){
00146         m3(0,0) = pow(elecRes.pt (pt, eta), 2);
00147         m3(1,1) = pow(elecRes.eta(pt, eta), 2); 
00148         m3(2,2) = pow(elecRes.phi(pt, eta), 2);
00149       }
00150       if(fitsol.getDecay()== "muon"){
00151         m3(0,0) = pow(muonRes.pt (pt, eta), 2);
00152         m3(1,1) = pow(muonRes.eta(pt, eta), 2); 
00153         m3(2,2) = pow(muonRes.phi(pt, eta), 2);
00154       }
00155     } else if (lepParam_ == EtThetaPhi) {
00156       if(fitsol.getDecay()== "electron"){
00157         m3(0,0) = pow(elecRes.pt (pt, eta), 2);
00158         m3(1,1) = pow(elecRes.eta(pt, eta), 2); 
00159         m3(2,2) = pow(elecRes.phi(pt, eta), 2);
00160       }
00161       if(fitsol.getDecay()== "muon"){
00162         m3(0,0) = pow(muonRes.pt (pt, eta), 2);
00163         m3(1,1) = pow(muonRes.eta(pt, eta), 2); 
00164         m3(2,2) = pow(muonRes.phi(pt, eta), 2);
00165       }
00166     }
00167   }
00168   // neutrino resolutions
00169   {
00170     //FIXME this dirty hack needs a clean solution soon!
00171     double met = fitsol.getNeutrino().pt();
00172     res::HelperMET metRes;
00173     if (metParam_ == EMom) {
00174       m4(0,0) = pow(metRes.met(met), 2);
00175       m4(1,1) = pow(         9999.,  2);
00176       m4(2,2) = pow(metRes.met(met), 2);
00177     } else if (metParam_ == EtEtaPhi) {
00178       m4(0,0) = pow(metRes.met(met), 2);
00179       m4(1,1) = pow(         9999.,  2);
00180       m4(2,2) = pow(metRes.phi(met), 2);
00181     } else if (metParam_ == EtThetaPhi) {
00182       m4(0,0) = pow(metRes.met(met), 2);
00183       m4(1,1) = pow(         9999.,  2);
00184       m4(2,2) = pow(metRes.phi(met), 2);
00185     }
00186   }
00187   // set the kinematics of the objects to be fitted
00188   fitBottom_->setIni4Vec(&bottomVec);
00189   fitLight_->setIni4Vec(&lightVec);
00190   fitLepton_->setIni4Vec(&leplVec);
00191   fitNeutrino_->setIni4Vec(&lepnVec);
00192   if (jetParam_ == EMom) {
00193     fitBottom_->setCovMatrix(&m1b);
00194     fitLight_->setCovMatrix(&m2b);
00195   } else {
00196     fitBottom_->setCovMatrix(&m1);
00197     fitLight_->setCovMatrix(&m2);
00198   }
00199   fitLepton_->setCovMatrix(&m3);
00200   fitNeutrino_->setCovMatrix(&m4);
00201 
00202   // perform the fit!
00203   theFitter_->fit();
00204   
00205   // add fitted information to the solution
00206   if (theFitter_->getStatus() == 0) {
00207     // read back the jet kinematics and resolutions
00208     pat::Particle aFitBottom(reco::LeafCandidate(0, math::XYZTLorentzVector(fitBottom_->getCurr4Vec()->X(), fitBottom_->getCurr4Vec()->Y(), fitBottom_->getCurr4Vec()->Z(), fitBottom_->getCurr4Vec()->E()),math::XYZPoint()));
00209     pat::Particle aFitLight(reco::LeafCandidate(0, math::XYZTLorentzVector(fitLight_->getCurr4Vec()->X(), fitLight_->getCurr4Vec()->Y(), fitLight_->getCurr4Vec()->Z(), fitLight_->getCurr4Vec()->E()),math::XYZPoint()));
00210 
00211     // does not exist anymore in pat
00212 
00213 //     if (jetParam_ == EMom) {
00214 //       TMatrixD Vb(4,4); Vb = (*fitBottom_->getCovMatrixFit());
00215 //       aFitBottom.setCovMatrix(this->translateCovM(Vb));
00216 //       aFitBottom.setResolutionA(Vb(0,0));
00217 //       aFitBottom.setResolutionB(Vb(1,1));
00218 //       aFitBottom.setResolutionC(Vb(2,2));
00219 //       aFitBottom.setResolutionD(Vb(3,3));
00220 //       TMatrixD Vq(4,4); Vq = (*fitLight_->getCovMatrixFit());
00221 //       aFitLight.setCovMatrix(this->translateCovM(Vq));
00222 //       aFitLight.setResolutionA(Vq(0,0));
00223 //       aFitLight.setResolutionB(Vq(1,1));
00224 //       aFitLight.setResolutionC(Vq(2,2));
00225 //       aFitLight.setResolutionD(Vq(3,3));
00226 //     } else if (jetParam_ == EtEtaPhi) {
00227 //       TMatrixD Vb(3,3); Vb = (*fitBottom_->getCovMatrixFit());
00228 //       aFitBottom.setCovMatrix(this->translateCovM(Vb));
00229 //       aFitBottom.setResolutionEt(Vb(0,0));
00230 //       aFitBottom.setResolutionEta(Vb(1,1));
00231 //       aFitBottom.setResolutionPhi(Vb(2,2));
00232 //       TMatrixD Vq(3,3); Vq = (*fitLight_->getCovMatrixFit());
00233 //       aFitLight.setCovMatrix(this->translateCovM(Vq));
00234 //       aFitLight.setResolutionEt(Vq(0,0));
00235 //       aFitLight.setResolutionEta(Vq(1,1));
00236 //       aFitLight.setResolutionPhi(Vq(2,2));
00237 //     } else if (jetParam_ == EtThetaPhi) {
00238 //       TMatrixD Vb(3,3); Vb = (*fitBottom_->getCovMatrixFit());
00239 //       aFitBottom.setCovMatrix(this->translateCovM(Vb));
00240 //       aFitBottom.setResolutionEt(Vb(0,0));
00241 //       aFitBottom.setResolutionTheta(Vb(1,1));
00242 //       aFitBottom.setResolutionPhi(Vb(2,2));
00243 //       TMatrixD Vq(3,3); Vq = (*fitLight_->getCovMatrixFit());
00244 //       aFitLight.setCovMatrix(this->translateCovM(Vq));
00245 //       aFitLight.setResolutionEt(Vq(0,0));
00246 //       aFitLight.setResolutionTheta(Vq(1,1));
00247 //       aFitLight.setResolutionPhi(Vq(2,2));
00248 //     }
00249 
00250     // read back the lepton kinematics and resolutions
00251     pat::Particle aFitLepton(reco::LeafCandidate(0, math::XYZTLorentzVector(fitLepton_->getCurr4Vec()->X(), fitLepton_->getCurr4Vec()->Y(), fitLepton_->getCurr4Vec()->Z(), fitLepton_->getCurr4Vec()->E()), math::XYZPoint()));
00252 
00253 //     TMatrixD Vl(3,3); Vl = (*fitLepton_->getCovMatrixFit()); 
00254 //     aFitLepton.setCovMatrix(this->translateCovM(Vl));
00255 
00256     // does not exist anymore in pat
00257 
00258 //     if (lepParam_ == EMom) {
00259 //       aFitLepton.setResolutionA(Vl(0,0));  
00260 //       aFitLepton.setResolutionB(Vl(1,1));
00261 //       aFitLepton.setResolutionC(Vl(2,2));
00262 //     } else if (lepParam_ == EtEtaPhi) {
00263 //       aFitLepton.setResolutionEt(Vl(0,0));  
00264 //       aFitLepton.setResolutionEta(Vl(1,1));
00265 //       aFitLepton.setResolutionPhi(Vl(2,2));
00266 //     } else if (lepParam_ == EtThetaPhi) {
00267 //       aFitLepton.setResolutionEt(Vl(0,0));  
00268 //       aFitLepton.setResolutionTheta(Vl(1,1));
00269 //       aFitLepton.setResolutionPhi(Vl(2,2));
00270 //     }
00271 
00272     // read back the MET kinematics and resolutions
00273     pat::Particle aFitNeutrino(reco::LeafCandidate(0, math::XYZTLorentzVector(fitNeutrino_->getCurr4Vec()->X(), fitNeutrino_->getCurr4Vec()->Y(), fitNeutrino_->getCurr4Vec()->Z(), fitNeutrino_->getCurr4Vec()->E()), math::XYZPoint()));   
00274 
00275 //     TMatrixD Vn(3,3); Vn = (*fitNeutrino_->getCovMatrixFit()); 
00276 //     aFitNeutrino.setCovMatrix(this->translateCovM(Vn));
00277 
00278     // does not exist anymore in pat
00279 
00280 //     if (metParam_ == EMom) {
00281 //       aFitNeutrino.setResolutionA(Vn(0,0));  
00282 //       aFitNeutrino.setResolutionB(Vn(1,1));
00283 //       aFitNeutrino.setResolutionC(Vn(2,2));
00284 //     } else if (metParam_ == EtEtaPhi) {
00285 //       aFitNeutrino.setResolutionEt(Vn(0,0));  
00286 //       aFitNeutrino.setResolutionEta(Vn(1,1));
00287 //       aFitNeutrino.setResolutionPhi(Vn(2,2));
00288 //     } else if (metParam_ == EtThetaPhi) {
00289 //       aFitNeutrino.setResolutionEt(Vn(0,0));  
00290 //       aFitNeutrino.setResolutionTheta(Vn(1,1));
00291 //       aFitNeutrino.setResolutionPhi(Vn(2,2));
00292 //     }
00293     
00294     // finally fill the fitted particles
00295     fitsol.setFitBottom(aFitBottom);
00296     fitsol.setFitLight(aFitLight);
00297     fitsol.setFitLepton(aFitLepton);
00298     fitsol.setFitNeutrino(aFitNeutrino);
00299 
00300     // store the fit's chi2 probability
00301     fitsol.setChi2Prob(TMath::Prob(theFitter_->getS(), theFitter_->getNDF()));
00302   }
00303 
00304   return fitsol;
00305 
00306 }

void StKinFitter::setupFitter (  )  [private]

Definition at line 311 of file StKinFitter.cc.

References TKinFitter::addConstraint(), TKinFitter::addMeasParticle(), TFitConstraintM::addParticle1(), TFitConstraintM::addParticles1(), cons1_, cons2_, cons3_, constraints_, GenMuonPlsPt100GeV_cfg::cout, EMom, lat::endl(), EtEtaPhi, EtThetaPhi, fitBottom_, fitLepton_, fitLight_, fitNeutrino_, i, jetParam_, lepParam_, maxDeltaS_, maxF_, maxNrIter_, metParam_, TKinFitter::setMaxDeltaS(), TKinFitter::setMaxF(), TKinFitter::setMaxNbIter(), TKinFitter::setVerbosity(), and theFitter_.

Referenced by StKinFitter().

00311                               {
00312   
00313   // FIXME: replace by messagelogger!!!
00314   
00315   cout<<endl<<endl<<"+++++++++++ KINFIT SETUP ++++++++++++"<<endl;
00316   cout<<"  jet parametrisation:     ";
00317   if(jetParam_ == EMom) cout<<"EMomDev"<<endl;
00318   if(jetParam_ == EtEtaPhi) cout<<"EtEtaPhi"<<endl;
00319   if(jetParam_ == EtThetaPhi) cout<<"EtThetaPhi"<<endl;
00320   cout<<"  lepton parametrisation:  ";
00321   if(lepParam_ == EMom) cout<<"EScaledMomDev"<<endl;
00322   if(lepParam_ == EtEtaPhi) cout<<"EtEtaPhi"<<endl;
00323   if(lepParam_ == EtThetaPhi) cout<<"EtThetaPhi"<<endl;
00324   cout<<"  met parametrisation:     ";
00325   if(metParam_ == EMom) cout<<"EScaledMomDev"<<endl;
00326   if(metParam_ == EtEtaPhi) cout<<"EtEtaPhi"<<endl;
00327   if(metParam_ == EtThetaPhi) cout<<"EtThetaPhi"<<endl;
00328   cout<<"  constraints:  "<<endl;
00329   for(unsigned int i=0; i<constraints_.size(); i++){
00330     if(constraints_[i] == 1) cout<<"    - hadronic W-mass"<<endl;
00331     if(constraints_[i] == 2) cout<<"    - leptonic W-mass"<<endl;
00332     if(constraints_[i] == 3) cout<<"    - hadronic top mass"<<endl;
00333     if(constraints_[i] == 4) cout<<"    - leptonic top mass"<<endl;
00334     if(constraints_[i] == 5) cout<<"    - neutrino mass"<<endl;
00335   }
00336   cout<<"Max. number of iterations: "<<maxNrIter_<<endl;
00337   cout<<"Max. deltaS: "<<maxDeltaS_<<endl;
00338   cout<<"Max. F: "<<maxF_<<endl;
00339   cout<<"++++++++++++++++++++++++++++++++++++++++++++"<<endl<<endl<<endl;
00340   
00341   theFitter_ = new TKinFitter("TtFit", "TtFit");
00342 
00343   TMatrixD empty3(3,3); TMatrixD empty4(4,4);
00344   if (jetParam_ == EMom) {
00345     fitBottom_ = new TFitParticleEMomDev("Jet1", "Jet1", 0, &empty4);
00346     fitLight_  = new TFitParticleEMomDev("Jet2", "Jet2", 0, &empty4);
00347   } else if (jetParam_ == EtEtaPhi) {
00348     fitBottom_ = new TFitParticleEtEtaPhi("Jet1", "Jet1", 0, &empty3);
00349     fitLight_  = new TFitParticleEtEtaPhi("Jet2", "Jet2", 0, &empty3);
00350   } else if (jetParam_ == EtThetaPhi) {
00351     fitBottom_ = new TFitParticleEtThetaPhi("Jet1", "Jet1", 0, &empty3);
00352     fitLight_  = new TFitParticleEtThetaPhi("Jet2", "Jet2", 0, &empty3);
00353   }
00354   if (lepParam_ == EMom) {
00355     fitLepton_ = new TFitParticleEScaledMomDev("Lepton", "Lepton", 0, &empty3);
00356   } else if (lepParam_ == EtEtaPhi) {
00357     fitLepton_ = new TFitParticleEtEtaPhi("Lepton", "Lepton", 0, &empty3);
00358   } else if (lepParam_ == EtThetaPhi) {
00359     fitLepton_ = new TFitParticleEtThetaPhi("Lepton", "Lepton", 0, &empty3);
00360   }
00361   if (metParam_ == EMom) {
00362     fitNeutrino_ = new TFitParticleEScaledMomDev("Neutrino", "Neutrino", 0, &empty3);
00363   } else if (metParam_ == EtEtaPhi) {
00364     fitNeutrino_ = new TFitParticleEtEtaPhi("Neutrino", "Neutrino", 0, &empty3);
00365   } else if (metParam_ == EtThetaPhi) {
00366     fitNeutrino_ = new TFitParticleEtThetaPhi("Neutrino", "Neutrino", 0, &empty3);
00367   }
00368 
00369   cons1_ = new TFitConstraintM("MassConstraint", "Mass-Constraint", 0, 0 , 80.35);
00370   cons1_->addParticles1(fitLepton_, fitNeutrino_);
00371   cons2_ = new TFitConstraintM("MassConstraint", "Mass-Constraint", 0, 0, 175.);
00372   cons2_->addParticles1(fitLepton_, fitNeutrino_, fitBottom_);
00373   cons3_ = new TFitConstraintM("MassConstraint", "Mass-Constraint", 0, 0, 0.);
00374   cons3_->addParticle1(fitNeutrino_);
00375 
00376   for (unsigned int i=0; i<constraints_.size(); i++) {
00377     if (constraints_[i] == 1) theFitter_->addConstraint(cons1_);
00378     if (constraints_[i] == 2) theFitter_->addConstraint(cons2_);
00379     if (constraints_[i] == 3) theFitter_->addConstraint(cons3_);
00380   }
00381   theFitter_->addMeasParticle(fitBottom_);
00382   theFitter_->addMeasParticle(fitLight_);
00383   theFitter_->addMeasParticle(fitLepton_);
00384   theFitter_->addMeasParticle(fitNeutrino_);
00385 
00386   theFitter_->setMaxNbIter(maxNrIter_);
00387   theFitter_->setMaxDeltaS(maxDeltaS_);
00388   theFitter_->setMaxF(maxF_);
00389   theFitter_->setVerbosity(0);
00390   
00391 }

vector< float > StKinFitter::translateCovM ( TMatrixD &  V  )  [private]

Definition at line 393 of file StKinFitter.cc.

00393                                                    {
00394   vector<float> covM; 
00395   for(int ii=0; ii<V.GetNrows(); ii++){
00396     for(int jj=0; jj<V.GetNcols(); jj++) covM.push_back(V(ii,jj));
00397   }
00398   return covM;
00399 }


Member Data Documentation

TFitConstraintM* StKinFitter::cons1_ [private]

Definition at line 50 of file StKinFitter.h.

Referenced by setupFitter(), and ~StKinFitter().

TFitConstraintM* StKinFitter::cons2_ [private]

Definition at line 51 of file StKinFitter.h.

Referenced by setupFitter(), and ~StKinFitter().

TFitConstraintM* StKinFitter::cons3_ [private]

Definition at line 52 of file StKinFitter.h.

Referenced by setupFitter(), and ~StKinFitter().

std::vector<int> StKinFitter::constraints_ [private]

Definition at line 59 of file StKinFitter.h.

Referenced by setupFitter().

bool StKinFitter::doNeutrinoResol_ [private]

Definition at line 55 of file StKinFitter.h.

TAbsFitParticle* StKinFitter::fitBottom_ [private]

Definition at line 45 of file StKinFitter.h.

Referenced by addKinFitInfo(), setupFitter(), and ~StKinFitter().

TAbsFitParticle* StKinFitter::fitLepton_ [private]

Definition at line 47 of file StKinFitter.h.

Referenced by addKinFitInfo(), setupFitter(), and ~StKinFitter().

TAbsFitParticle* StKinFitter::fitLight_ [private]

Definition at line 46 of file StKinFitter.h.

Referenced by addKinFitInfo(), setupFitter(), and ~StKinFitter().

TAbsFitParticle* StKinFitter::fitNeutrino_ [private]

Definition at line 48 of file StKinFitter.h.

Referenced by addKinFitInfo(), setupFitter(), and ~StKinFitter().

Parametrization StKinFitter::jetParam_ [private]

Definition at line 54 of file StKinFitter.h.

Referenced by addKinFitInfo(), and setupFitter().

Parametrization StKinFitter::lepParam_ [private]

Definition at line 54 of file StKinFitter.h.

Referenced by addKinFitInfo(), and setupFitter().

double StKinFitter::maxDeltaS_ [private]

Definition at line 57 of file StKinFitter.h.

Referenced by setupFitter().

double StKinFitter::maxF_ [private]

Definition at line 58 of file StKinFitter.h.

Referenced by setupFitter().

int StKinFitter::maxNrIter_ [private]

Definition at line 56 of file StKinFitter.h.

Referenced by setupFitter().

Parametrization StKinFitter::metParam_ [private]

Definition at line 54 of file StKinFitter.h.

Referenced by addKinFitInfo(), and setupFitter().

TKinFitter* StKinFitter::theFitter_ [private]

Definition at line 43 of file StKinFitter.h.

Referenced by addKinFitInfo(), setupFitter(), and ~StKinFitter().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:32:50 2009 for CMSSW by  doxygen 1.5.4