CMS 3D CMS Logo

TtFullLepKinSolver.h

Go to the documentation of this file.
00001 //based on a code by Jan Valenta
00002 #ifndef TtFullLepKinSolver_h
00003 #define TtFullLepKinSolver_h
00004 
00005 #include "AnalysisDataFormats/TopObjects/interface/TtDilepEvtSolution.h"
00006 
00007 #include "TLorentzVector.h"
00008 #include "TMatrixD.h"
00009 #include "TMath.h"
00010 
00011 class TF2;
00012 
00013 class TtFullLepKinSolver {
00014 
00015  public:
00016   
00017   TtFullLepKinSolver();
00018   TtFullLepKinSolver(double,double,double, double xx = 0, double yy = 0);
00019   ~TtFullLepKinSolver();
00020   
00021   inline void useWeightFromMC(bool useMC) { useMCforBest_ = useMC; }
00022   TtDilepEvtSolution addKinSolInfo(TtDilepEvtSolution * asol);
00023   
00024  private:
00025   void FindCoeff(const TLorentzVector al, 
00026                  const TLorentzVector l,
00027                  const TLorentzVector b_al,
00028                  const TLorentzVector b_l,
00029                  double mt, double mat, double pxboost, double pyboost,
00030                  double* q_coeff);
00031   void TopRec(const TLorentzVector al, 
00032               const TLorentzVector l,
00033               const TLorentzVector b_al,
00034               const TLorentzVector b_l, double sol);
00035   double WeightSolfromMC();
00036   double WeightSolfromShape();
00037   int quartic(double* q_coeff, double* q_sol);
00038   int cubic(double* c_coeff, double* c_sol);
00039   
00040   //Utility Methods
00041   double sqr(double x) {return (x*x);}
00042   void SWAP(double& realone, double& realtwo);
00043     
00044  private:
00045   double topmass_begin;
00046   double topmass_end;
00047   double topmass_step;
00048   double pxmiss_, pymiss_;
00049   
00050   double mw, maw, mb, mab;
00051   
00052   double C;
00053   double D;
00054   double F;
00055   double pom;
00056   double k16;
00057   double k26;
00058   double k36;
00059   double k46;
00060   double k56;
00061   double k51;
00062   double k61;
00063   double m1;
00064   double m2;
00065   double m3;
00066   double n1;
00067   double n2;
00068   double n3;
00069   
00070   TLorentzVector LV_n, LV_n_, LV_t, LV_t_, LV_tt_t, LV_tt_t_;
00071   
00072   //provisional
00073   TLorentzVector genLV_n, genLV_n_;
00074   // flag to swith from WeightSolfromMC() to WeightSolfromShape()
00075   bool useMCforBest_;
00076   // Event shape
00077   TF2* EventShape_;
00078 };
00079 
00080 
00081 #endif

Generated on Tue Jun 9 17:48:14 2009 for CMSSW by  doxygen 1.5.4