CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/Alignment/CommonAlignment/interface/AlignableBuilder.h

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_; // level type
00041     bool flat_;                 // true if type is a flat surface (rod, string, ladder,...)
00042     unsigned int maxComponent_; // max no. of components in this level
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; // starting level to build composites
00063 
00064   std::vector<LevelInfo> theLevelInfos;
00065 
00066   Counters theCounters;
00067 
00068   const TrackerTopology* theTopology;
00069 };
00070 
00071 #endif