/home/cern/BDSIM_new/utils/display/BDSParser.C

00001 /* Display for BDSIM code     
00002 Author: Olivier Dadoun, Laboratoire de l'Accelerateur Lineaire (LAL-IN2P3), Orsay (France)
00003 <mailto:> dadoun@lal.in2p3.fr, 2005
00004 Last modified 12.06.2005
00005 */
00006 #include "BDSParser.h"
00007 #include "BDSPad.h"
00008 #include "BDSCanvas.h"
00009 
00010 using namespace std;
00011 
00012 BDSParser::BDSParser()
00013 {
00014         //*-*-*-*-*-*-*-*-*-*-*Line default constructor*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
00015         //*-*                  ========================
00016 }
00017 
00018 void BDSParser::LoadFile(BDSPad* _pad, char* _path)
00019 {
00020         gmad_parser(_path);
00021         list<struct Element>::iterator it;
00022         Double_t s_current=0.;
00023         Int_t nelement=1;
00024         TString temp; 
00025         ((BDSCanvas*)gPad->GetCanvas())->EndPositionElement[nelement]=0.;
00026         _pad->Begin();
00027         for(it = beamline_list.begin();it!=beamline_list.end();it++)
00028         {
00029           if((*it).l> 1e-9)
00030             {
00031               s_current += (*it).l;
00032              
00033               if((*it).type==_RCOL || (*it).type==_ECOL)
00034                 {
00035                   ((BDSCanvas*)gPad->GetCanvas())->ElementXAper[nelement]=(*it).xsize;
00036                   ((BDSCanvas*)gPad->GetCanvas())->ElementYAper[nelement]=(*it).ysize;
00037                   
00038                 }
00039               else
00040                 {
00041                   if((*it).aper!=0)
00042                     {
00043                       ((BDSCanvas*)gPad->GetCanvas())->ElementXAper[nelement]=(*it).aper;
00044                       ((BDSCanvas*)gPad->GetCanvas())->ElementYAper[nelement]=(*it).aper;
00045                     } 
00046                   
00047                   else
00048                     {
00049                       ((BDSCanvas*)gPad->GetCanvas())->ElementXAper[nelement]=options.beampipeRadius;
00050                       ((BDSCanvas*)gPad->GetCanvas())->ElementYAper[nelement]=options.beampipeRadius;
00051                     }
00052                 }
00053                 ((BDSCanvas*)gPad->GetCanvas())->EndPositionElement[nelement]=s_current;
00054                 temp=Form((*it).name);
00055                 ((BDSCanvas*)gPad->GetCanvas())->NameElement[nelement]=temp;    
00056                 temp=Form(typestr((*it).type));
00057                 ((BDSCanvas*)gPad->GetCanvas())->TypeElement[nelement]=temp;    
00058                 _pad->AddBDSBox(*it,s_current);
00059                 cout << (*it).name << 
00060 "\t\t"<<s_current-(*it).l<<"\t\t"<<s_current<<"\t\t"<<(*it).l<<endl;
00061                 nelement++;
00062                 }
00063         }
00064         ((BDSCanvas*)gPad->GetCanvas())->NumberElement=nelement-1;
00065         cout << "total length "  << s_current<< endl;   
00066         _pad->End();
00067 }
00068 

Generated on Wed Mar 5 17:25:25 2008 for BDSIM by  doxygen 1.5.3