Go to the documentation of this file.00001 #ifndef Alignment_CommonAlignment_AlignableBuilder_H
00002 #define Alignment_CommonAlignment_AlignableBuilder_H
00003
00013 #include "Alignment/CommonAlignment/interface/StructureType.h"
00014 #include "CondFormats/Alignment/interface/Definitions.h"
00015 #include "Alignment/CommonAlignment/interface/Utilities.h"
00016 #include "Alignment/CommonAlignment/interface/Counters.h"
00017 #include "Alignment/CommonAlignment/interface/AlignSetup.h"
00018
00019 class TrackerTopology;
00020
00021 class AlignableBuilder
00022 {
00023 public:
00024
00026 AlignableBuilder( align::StructureType moduleType, Counters& counter, const TrackerTopology* tTopo );
00027
00029 void addLevelInfo( align::StructureType,
00030 bool flat,
00031 unsigned int maxComponent );
00032
00034 void buildAll( AlignSetup<align::Alignables>& setup ) const;
00035
00036 private:
00037
00038 struct LevelInfo
00039 {
00040 align::StructureType type_;
00041 bool flat_;
00042 unsigned int maxComponent_;
00043
00044 LevelInfo( align::StructureType,
00045 bool flat,
00046 unsigned int maxComponent );
00047 };
00048
00050 unsigned int maxComponent( unsigned int level ) const;
00051
00055 unsigned int index( unsigned int level,
00056 align::ID, const TrackerTopology* tTopo ) const;
00057
00059 void build( unsigned int level, align::StructureType dauType,
00060 AlignSetup<align::Alignables>& setup ) const;
00061
00062 align::StructureType theModuleType;
00063
00064 std::vector<LevelInfo> theLevelInfos;
00065
00066 Counters theCounters;
00067
00068 const TrackerTopology* theTopology;
00069 };
00070
00071 #endif