File indexing completed on 2024-04-06 11:56:42
0001 #ifndef Alignment_MuonAlignmentAlgorithms_MuonResiduals5DOFFitter_H
0002 #define Alignment_MuonAlignmentAlgorithms_MuonResiduals5DOFFitter_H
0003
0004
0005
0006
0007
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