Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:29:03

0001 #ifndef FcnBeamSpotFitPV_h_
0002 #define FcnBeamSpotFitPV_h_
0003 /** \class FcnBeamSpotFitPV
0004  *  LogLH function for 3D beam spot fit from primary vertex data. Assumes
0005  *  a Gaussian resolution function for the vertices provided in the
0006  *  form of a vector of BeamSpotFitPVData and a Gaussian beam profile
0007  *  in 3D: based on a covariance without xz and yz correlations +
0008  *  linearized rotations in the xz and yz planes. 
0009  *  Parameters: x, y, z, ex, corrxy, ey, dxdz, dydz, ez, scale
0010  *   x, y, z ...... beamspot position
0011  *   ex, ey, ez ... beamspot width
0012  *   corrxy ....... xy correlation in the system of the beam line
0013  *   dxdz, dydz ... rotations in xz and yz
0014  *   scale ........ scaling factor for vertex errors
0015  *   \author WA, 9/3/2010
0016  */
0017 #include "RecoVertex/BeamSpotProducer/interface/BeamSpotFitPVData.h"
0018 #include "Minuit2/FCNBase.h"
0019 
0020 #include <vector>
0021 
0022 class FcnBeamSpotFitPV : public ROOT::Minuit2::FCNBase {
0023 public:
0024   // constructor from vertex data
0025   FcnBeamSpotFitPV(const std::vector<BeamSpotFitPVData>& data);
0026   ~FcnBeamSpotFitPV() override {}
0027   // additional vertex selection using limits in x, y, z
0028   void setLimits(float xmin, float xmax, float ymin, float ymax, float zmin, float zmax);
0029   // deltaFcn for definition of the uncertainty
0030   double Up() const override { return errorDef_; }
0031   // -2lnL value based on vector of parameters
0032   double operator()(const std::vector<double>&) const override;
0033   // vertex count used for the fit (after selection)
0034   unsigned int nrOfVerticesUsed() const;
0035 
0036 private:
0037   const std::vector<BeamSpotFitPVData>& data_;  //< vertex data
0038   double errorDef_;                             //< error definition for Minuit
0039 
0040   float lowerLimits_[3];  //< lower limits for x,y,z
0041   float upperLimits_[3];  //< upper limits for x,y,z
0042 };
0043 #endif