Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 11:56:42

0001 #ifndef Alignment_MuonAlignmentAlgorithms_MuonResiduals5DOFFitter_H
0002 #define Alignment_MuonAlignmentAlgorithms_MuonResiduals5DOFFitter_H
0003 
0004 /** \class MuonResiduals5DOFFitter
0005  *  $Date: Fri Apr 17 15:29:54 CDT 2009
0006  *  $Revision: 1.5 $ 
0007  *  \author J. Pivarski - Texas A&M University <pivarski@physics.tamu.edu>
0008  */
0009 
0010 #ifdef STANDALONE_FITTER
0011 #include "MuonResidualsFitter.h"
0012 #else
0013 #include "Alignment/MuonAlignmentAlgorithms/interface/MuonResidualsFitter.h"
0014 #endif
0015 
0016 class TTree;
0017 
0018 class MuonResiduals5DOFFitter : public MuonResidualsFitter {
0019 public:
0020   enum {
0021     kAlignX = 0,
0022     kAlignZ,
0023     kAlignPhiX,
0024     kAlignPhiY,
0025     kAlignPhiZ,
0026     kResidSigma,
0027     kResSlopeSigma,
0028     kAlpha,
0029     kResidGamma,
0030     kResSlopeGamma,
0031     kNPar
0032   };
0033 
0034   enum {
0035     kResid = 0,
0036     kResSlope,
0037     kPositionX,
0038     kPositionY,
0039     kAngleX,
0040     kAngleY,
0041     kRedChi2,
0042     kPz,
0043     kPt,
0044     kCharge,
0045     kStation,
0046     kWheel,
0047     kSector,
0048     kChambW,
0049     kChambl,
0050     kNData
0051   };
0052 
0053   MuonResiduals5DOFFitter(int residualsModel, int minHits, int useResiduals, bool weightAlignment = true)
0054       : MuonResidualsFitter(residualsModel, minHits, useResiduals, weightAlignment) {}
0055   ~MuonResiduals5DOFFitter() override {}
0056 
0057   int type() const override { return MuonResidualsFitter::k5DOF; }
0058 
0059   int npar() override {
0060     if (residualsModel() == kPureGaussian || residualsModel() == kPureGaussian2D ||
0061         residualsModel() == kGaussPowerTails)
0062       return kNPar - 2;
0063     else if (residualsModel() == kPowerLawTails)
0064       return kNPar;
0065     else if (residualsModel() == kROOTVoigt)
0066       return kNPar;
0067     else
0068       assert(false);
0069   }
0070   int ndata() override { return kNData; }
0071 
0072   double sumofweights() override;
0073   bool fit(Alignable *ali) override;
0074   double plot(std::string name, TFileDirectory *dir, Alignable *ali) override;
0075 
0076   void correctBField() override;
0077 
0078   TTree *readNtuple(
0079       std::string fname, unsigned int wheel, unsigned int station, unsigned int sector, unsigned int preselected = 1);
0080 
0081 protected:
0082   void inform(TMinuit *tMinuit) override;
0083 };
0084 
0085 #endif  // Alignment_MuonAlignmentAlgorithms_MuonResiduals5DOFFitter_H