00001 #ifndef VisCuTkBuilder_H
00002 #define VisCuTkBuilder_H
00003
00004 #include "VisFramework/VisConfigService/interface/VisConfigurationService.h"
00005 class VisCuTkModule;
00006 class VisCuCmsTracker;
00007 class EventSetup;
00008 class TrackerGeometry;
00009 class VisCuTkBuilder
00010 {
00011 public:
00012 void create();
00013 VisCuCmsTracker* tracker();
00014 void fill(const TrackerGeometry* m_pDD);
00015 void fill(const edm::ESHandle<TrackerGeometry> pDD);
00016 int layerno(int subdet,int leftright,int layer){
00017 if(subdet==6&&leftright==1)return(10-layer);
00018 if(subdet==6&&leftright==2)return(layer+21);
00019 if(subdet==4&&leftright==1)return(4-layer+9);
00020 if(subdet==4&&leftright==2)return(layer+18);
00021 if(subdet==2&&leftright==1)return(4-layer+12);
00022 if(subdet==2&&leftright==2)return(layer+15);
00023 if(subdet==1)return(layer+30);
00024 if(subdet==3)return(layer+33);
00025 if(subdet==5)return(layer+37);
00026 return -1;
00027 }
00028
00029 private:
00030 VisCuTkModule* mod;
00031 VisCuCmsTracker* theTracker;
00032 int idetector, ipart, ilayer, iring, module;
00033 void getPos(int pix_sil,int fow_bar,int layer,int ring,int nmod,int &idetector,int &ipart,int &ilayer, int &iring,int &module);
00034 float oldz;
00035 float posx, posy;
00036 int ntotmod;
00037 const edm::ParameterSet *pset;
00038 void buildMap(const TrackerGeometry* pDD);
00039 typedef std::map<int, VisCuTkModule*> moduleMap;
00040 moduleMap mmap;
00041 std::string infilename;
00042 };
00043 #endif