Go to the documentation of this file.00001 #ifndef Alignment_MuonAlignmentAlgorithms_CSCChamberFitter_H
00002 #define Alignment_MuonAlignmentAlgorithms_CSCChamberFitter_H
00003
00010 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00011 #include "DataFormats/DetId/interface/DetId.h"
00012 #include "DataFormats/MuonDetId/interface/CSCDetId.h"
00013 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h"
00014 #include "Alignment/CommonAlignment/interface/Alignable.h"
00015 #include "Alignment/CommonAlignment/interface/AlignableNavigator.h"
00016 #include "Alignment/CommonAlignment/interface/AlignableObjectId.h"
00017 #include "Alignment/CommonAlignment/interface/AlignmentParameters.h"
00018 #include "Alignment/CommonAlignmentAlgorithm/interface/AlignmentParameterStore.h"
00019
00020 #include "Alignment/MuonAlignmentAlgorithms/interface/CSCPairConstraint.h"
00021 #include "Alignment/MuonAlignmentAlgorithms/plugins/CSCPairResidualsConstraint.h"
00022 #include "Alignment/MuonAlignmentAlgorithms/plugins/CSCAlignmentCorrections.h"
00023
00024 class CSCChamberFitter {
00025 public:
00026 CSCChamberFitter(const edm::ParameterSet &iConfig, std::vector<CSCPairResidualsConstraint*> &residualsConstraints);
00027 virtual ~CSCChamberFitter() {};
00028
00029 bool fit(std::vector<CSCAlignmentCorrections*> &corrections) const;
00030 void radiusCorrection(AlignableNavigator *alignableNavigator, AlignmentParameterStore *alignmentParameterStore, bool combineME11) const;
00031
00032 protected:
00033 int index(std::string alignable) const;
00034 void walk(std::map<int,bool> &touched, int alignable) const;
00035 long alignableId(std::string alignable) const;
00036 bool isFrame(int i) const;
00037 double chi2(AlgebraicVector A, double lambda) const;
00038 double lhsVector(int k) const;
00039 double hessian(int k, int l, double lambda) const;
00040
00041 std::string m_name;
00042 std::vector<std::string> m_alignables;
00043 std::vector<int> m_frames;
00044 int m_fixed;
00045 std::vector<CSCPairConstraint*> m_constraints;
00046 };
00047
00048 #endif // Alignment_MuonAlignmentAlgorithms_CSCChamberFitter_H
00049