Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:31:17

0001 //
0002 //
0003 // File: Constrained_Z.h
0004 // Purpose: Do kinematic fitting for a (Z->ll)+jets event.
0005 // Created: Apr, 2004, sss
0006 //
0007 // CMSSW File      : interface/Constrained_Z.h
0008 // Original Author : Scott Stuart Snyder <snyder@bnl.gov> for D0
0009 // Imported to CMSSW by Haryo Sumowidagdo <Suharyo.Sumowidagdo@cern.ch>
0010 
0011 /**
0012     @file Constrained_Z.h
0013 
0014     @brief Do a constrained kinematic fit of a
0015     \f$Z\to\ell^{+}\ell^{-}+\rm{jets}\f$ event.
0016 
0017     @par Creation date:
0018     July 2000.
0019 
0020     @author
0021     Scott Stuart Snyder <snyder@bnl.gov>.
0022 
0023     @par Modification History:
0024     Apr 2009: Haryo Sumowidagdo <Suharyo.Sumowidagdo@cern.ch>:
0025     Imported to CMSSW.<br>
0026     Oct 2009: Haryo Sumowidagdo <Suharyo.Sumowidagdo@cern.ch>:
0027     Added Doxygen tags for automatic generation of documentation.
0028 
0029     @par Terms of Usage:
0030     With consent from the original author (Scott Snyder).
0031  */
0032 
0033 #ifndef HITFIT_CONSTRAINED_Z_H
0034 #define HITFIT_CONSTRAINED_Z_H
0035 
0036 #include "TopQuarkAnalysis/TopHitFit/interface/Fourvec_Constrainer.h"
0037 #include "TopQuarkAnalysis/TopHitFit/interface/matutil.h"
0038 #include <iosfwd>
0039 
0040 namespace hitfit {
0041 
0042   class Defaults;
0043   class Lepjets_Event;
0044 
0045   /**
0046     @class Constrained_Z_Args
0047     @brief Hold on to parameters for the Constrained_Z class.
0048  */
0049   class Constrained_Z_Args
0050   //
0051   // Purpose: Hold on to parameters for the Constrained_Z class.
0052   //
0053   // Parameters controlling the operation of the fitter:
0054   //   float zmass        - The mass to which the Z should be fixed.
0055   //
0056   {
0057   public:
0058     // Constructor.  Initialize from a Defaults object.
0059     /**
0060      @brief Constructor, initialize from a Defaults object.
0061 
0062      @brief param defs An instance of the Defaults object.  The instance must
0063      the variables necessary to set up a fourvec_constrainer_args, and the
0064      following variables with types and names.
0065      - double <i>zmass</i>.
0066    */
0067     Constrained_Z_Args(const Defaults& defs);
0068 
0069     // Retrieve parameter values.
0070     /**
0071      Return the _zmass parameter.
0072    */
0073     double zmass() const;
0074 
0075     // Arguments for subobjects.
0076     /**
0077      Return the _fourvec_constrainer_args parameter.
0078    */
0079     const Fourvec_Constrainer_Args& fourvec_constrainer_args() const;
0080 
0081   private:
0082     // Hold on to parameter values.
0083     /**
0084      The mass to which Z bosons should be fixed to.
0085    */
0086     double _zmass;
0087 
0088     /**
0089      Arguments for the subobjects, constraints among the four vectors
0090      in the event.
0091    */
0092     Fourvec_Constrainer_Args _fourvec_constrainer_args;
0093   };
0094 
0095   //*************************************************************************
0096 
0097   /**
0098     @class Constrained_Z
0099     @brief Do a constrained kinematic fitting for a \f$Z\to\ell^{+}\ell^{-} +
0100     \rm{jets}\f$ event.
0101  */
0102   class Constrained_Z
0103   //
0104   // Purpose: Do kinematic fitting for a (Z->ll)+jets event.
0105   //
0106   {
0107   public:
0108     // Constructor.
0109     /**
0110      @brief Constructor, create an instance of the Constrained_Z object
0111      from the argument object.
0112      @param args Argument for this instance of Constrained_Z object.
0113    */
0114     Constrained_Z(const Constrained_Z_Args& args);
0115 
0116     // Do a constrained fit.
0117     /**
0118      @brief Do a constrained fit of \f$Z\to\ell^{+}\ell^{-} + \rm{jets}\f$
0119      event.  Returns the pull quantities in <i>pull</i>.  Returns
0120      the \f$\chi^{2}\f$, this will be negative if the fit failed to converge.
0121      @param ev The event to be fitted (input), and the event after fitting
0122      (output).
0123      @param pull Pull quantities for the well-measured variables.
0124 
0125      @par Input:
0126      - Lepjets_Event <i>ev</i>.
0127 
0128      @par Output:
0129      - Lepjets_Event <i>ev</i>.
0130      - Column_Vector <i>pull</i>.
0131 
0132      @par Return:
0133      The \f$\chi^{2}\f$ of the fit.  Return a negative value if the fit
0134      didn't converge.
0135 
0136   */
0137     double constrain(Lepjets_Event& ev, Column_Vector& pull);
0138 
0139     // Dump out our state.
0140     friend std::ostream& operator<<(std::ostream& s, const Constrained_Z& cz);
0141 
0142   private:
0143     // Parameter settings.
0144     /**
0145      Parameter settings for the \f$\chi^{2}\f$ constrainer.
0146    */
0147     const Constrained_Z_Args& _args;
0148 
0149     // The guy that actually does the work.
0150     /**
0151      The guy that actually does the work.
0152    */
0153     Fourvec_Constrainer _constrainer;
0154   };
0155 
0156 }  // namespace hitfit
0157 
0158 #endif  // not HITFIT_CONSTRAINED_Z_H