File indexing completed on 2024-04-06 11:56:34
0001 #ifndef PEDELABELER_H
0002 #define PEDELABELER_H
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #include <vector>
0017 #include <map>
0018
0019 #include <Alignment/MillePedeAlignmentAlgorithm/interface/PedeLabelerBase.h>
0020
0021 #include "Alignment/CommonAlignment/interface/Utilities.h"
0022 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0023
0024
0025
0026 class PedeLabeler : public PedeLabelerBase {
0027 public:
0028
0029 PedeLabeler(const PedeLabelerBase::TopLevelAlignables &alignables, const edm::ParameterSet &config);
0030
0031 ~PedeLabeler() override;
0032
0033
0034
0035
0036 unsigned int alignableLabel(const Alignable *alignable) const override;
0037 unsigned int alignableLabelFromParamAndInstance(const Alignable *alignable,
0038 unsigned int param,
0039 unsigned int instance) const override;
0040 unsigned int lasBeamLabel(unsigned int lasBeamId) const override;
0041 unsigned int parameterLabel(unsigned int aliLabel, unsigned int parNum) const override;
0042 unsigned int parameterLabel(Alignable *alignable,
0043 unsigned int parNum,
0044 const AlignmentAlgorithmBase::EventInfo &eventInfo,
0045 const TrajectoryStateOnSurface &tsos) const override {
0046 return parameterLabel(alignableLabel(alignable), parNum);
0047 }
0048 bool hasSplitParameters(Alignable *alignable) const override { return false; }
0049 unsigned int numberOfParameterInstances(Alignable *alignable, int param = -1) const override { return 1; }
0050 unsigned int maxNumberOfParameterInstances() const override { return 1; }
0051
0052
0053 unsigned int paramNumFromLabel(unsigned int paramLabel) const override;
0054
0055 unsigned int alignableLabelFromLabel(unsigned int label) const override;
0056
0057
0058 Alignable *alignableFromLabel(unsigned int label) const override;
0059
0060
0061 unsigned int lasBeamIdFromLabel(unsigned int label) const override;
0062
0063 private:
0064 typedef std::map<Alignable *, unsigned int, AlignableComparator> AlignableToIdMap;
0065 typedef AlignableToIdMap::value_type AlignableToIdPair;
0066 typedef std::map<unsigned int, Alignable *> IdToAlignableMap;
0067 typedef std::map<unsigned int, unsigned int> UintUintMap;
0068
0069
0070 unsigned int buildMap(const align::Alignables &);
0071
0072 unsigned int buildReverseMap();
0073
0074
0075 AlignableToIdMap theAlignableToIdMap;
0076 IdToAlignableMap theIdToAlignableMap;
0077 UintUintMap theLasBeamToLabelMap;
0078 UintUintMap theLabelToLasBeamMap;
0079 };
0080
0081 #endif