00001 #ifndef Alignment_MuonAlignment_MuonAlignment_H 00002 #define Alignment_MuonAlignment_MuonAlignment_H 00003 00012 #include <vector> 00013 #include <map> 00014 00015 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00016 #include "Alignment/MuonAlignment/interface/AlignableMuon.h" 00017 #include <FWCore/Framework/interface/Frameworkfwd.h> 00018 #include "Alignment/CommonAlignment/interface/AlignableNavigator.h" 00019 #include "Alignment/MuonAlignment/interface/MuonAlignmentInputMethod.h" 00020 00021 class MuonAlignment { 00022 00023 public: 00024 00025 MuonAlignment( const edm::EventSetup& iSetup ); 00026 00027 MuonAlignment( const edm::EventSetup& iSetup, const MuonAlignmentInputMethod& input ); 00028 00029 ~MuonAlignment() { delete theAlignableMuon; delete theAlignableNavigator; } 00030 00031 AlignableMuon* getAlignableMuon() { return theAlignableMuon; } 00032 00033 AlignableNavigator* getAlignableNavigator() { return theAlignableNavigator; } 00034 00035 00036 void moveAlignableLocalCoord( DetId& , std::vector<float>& , std::vector<float>& ); 00037 void moveAlignableGlobalCoord( DetId& , std::vector<float>& , std::vector<float>& ); 00038 00039 void recursiveList(std::vector<Alignable*> alignables, std::vector<Alignable*> &theList); 00040 void recursiveMap(std::vector<Alignable*> alignables, std::map<align::ID, Alignable*> &theMap); 00041 void recursiveStructureMap(std::vector<Alignable*> alignables, std::map<std::pair<align::StructureType, align::ID>, Alignable*> &theMap); 00042 00043 void copyAlignmentToSurvey(double shiftErr, double angleErr); 00044 void fillGapsInSurvey(double shiftErr, double angleErr); 00045 void copySurveyToAlignment(); 00046 00047 void writeXML(const edm::ParameterSet iConfig, const edm::EventSetup &iSetup); 00048 00049 void saveDTSurveyToDB(); 00050 void saveCSCSurveyToDB(); 00051 void saveSurveyToDB(); 00052 00053 void saveDTtoDB(); 00054 void saveCSCtoDB(); 00055 void saveToDB(); 00056 00057 00058 private: 00059 void init(); 00060 void recursiveCopySurveyToAlignment(Alignable *alignable); 00061 00062 std::string theDTAlignRecordName, theDTErrorRecordName; 00063 std::string theCSCAlignRecordName, theCSCErrorRecordName; 00064 std::string theDTSurveyRecordName, theDTSurveyErrorRecordName; 00065 std::string theCSCSurveyRecordName, theCSCSurveyErrorRecordName; 00066 00067 std::vector<float> displacements; 00068 00069 std::vector<float> rotations; 00070 00071 AlignableMuon* theAlignableMuon; 00072 00073 AlignableNavigator* theAlignableNavigator; 00074 00075 00076 }; 00077 00078 #endif //MuonAlignment_H