Go to the documentation of this file.00001 #ifndef Alignment_MuonStandaloneAlgorithm_MuonMillepedeAlgorithm_h
00002 #define Alignment_MuonStandaloneAlgorithm_MuonMillepedeAlgorithm_h
00003
00004 #include "Alignment/CommonAlignmentAlgorithm/interface/AlignmentAlgorithmBase.h"
00005 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00006
00007 #include "FWCore/ServiceRegistry/interface/Service.h"
00008 #include "CommonTools/UtilAlgos/interface/TFileService.h"
00009
00010
00011 #include "TH1D.h"
00012 #include "TTree.h"
00013 #include "TFile.h"
00014 #include "TMatrixD.h"
00015
00016 class AlignableNavigator;
00017 class TFile;
00018 class TTree;
00019
00020 class MuonMillepedeAlgorithm : public AlignmentAlgorithmBase
00021 {
00022
00023 public:
00024
00026 MuonMillepedeAlgorithm(const edm::ParameterSet& cfg);
00027
00029 ~MuonMillepedeAlgorithm() {};
00030
00032 void initialize( const edm::EventSetup& setup,
00033 AlignableTracker* tracker, AlignableMuon* muon,
00034 AlignableExtras* extras,
00035 AlignmentParameterStore* store);
00036
00038 void terminate(const edm::EventSetup& setup);
00039
00040
00041
00043 void run(const edm::EventSetup& setup, const EventInfo &eventInfo);
00044
00045 void updateInfo(AlgebraicMatrix, AlgebraicMatrix, AlgebraicMatrix, std::string);
00046
00047 void toTMat(AlgebraicMatrix *, TMatrixD *);
00048
00049 void collect();
00050
00051 private:
00052
00053
00054
00055 void printM(AlgebraicMatrix );
00056
00057 AlignmentParameterStore* theAlignmentParameterStore;
00058 std::vector<Alignable*> theAlignables;
00059 AlignableNavigator* theAlignableDetAccessor;
00060
00061
00062 bool verbose;
00063
00064
00065 std::map<std::string, TH1D *> histoMap;
00066
00067 std::map<std::string, AlgebraicMatrix *> map_invCov;
00068 std::map<std::string, AlgebraicMatrix *> map_weightRes;
00069 std::map<std::string, AlgebraicMatrix *> map_N;
00070
00071 double ptCut, chi2nCut;
00072
00073
00074
00075 edm::Service<TFileService> fs;
00076
00077
00078 std::string collec_f;
00079 std::string outputCollName;
00080 bool isCollectionJob;
00081 std::string collec_path;
00082 int collec_number;
00083
00084
00085
00086 };
00087
00088 #endif