/home/cern/BDSIM_new/utils/display/BDSBox.h

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 30.09.2005
00005 */
00006 #ifndef __BDSBox__
00007 #define __BDSBox__
00008 
00009 #ifndef ROOT_TBox
00010 #include "TBox.h"
00011 #endif
00012 
00013 #include "BDSParser.h"
00014 
00015 #include "parser/gmad.h"
00016 
00017 class BDSBox : public TBox
00018 {
00019 public:
00020         BDSBox(Element _item, Double_t _y1, Double_t _y2);      
00021 
00022         void Update(BDSPad* pad, Double_t xmin, Double_t xmax);
00023         Double_t GetBDSX1() {return s-item.l;}
00024    Double_t GetBDSX2() {return s;}
00025         TString  GetBDSBoxName(){return Form(item.name);}
00026         short GetBDSType(){return item.type;}
00027         Double_t GetBDSLen(){return item.l;}
00028         Float_t GetBDSAngle(){return item.angle;}
00029 
00030         Float_t GetBDSK0()
00031         {
00032           if(item.type == _MULT){
00033             if(item.knl.size()>0){
00034               std::list<double>::iterator iter;
00035               iter = item.knl.begin();
00036               return (*iter);
00037             }
00038           }
00039         else return item.k0;
00040         }
00041 
00042         Float_t GetBDSK1()
00043         {
00044           if(item.type == _MULT){
00045             if(item.knl.size()>1){
00046               std::list<double>::iterator iter;
00047               iter = item.knl.begin();
00048               iter++;
00049               return (*iter);
00050             }
00051           }
00052         else return item.k1; 
00053         }
00054 
00055         Float_t GetBDSK2()
00056         {
00057           if(item.type == _MULT){
00058             if(item.knl.size()>2){
00059               std::list<double>::iterator iter;
00060               iter = item.knl.begin();
00061               iter++; iter++;
00062               return (*iter);
00063             }
00064           }
00065         else return item.k2; 
00066         }
00067 
00068         Float_t GetBDSK3()
00069         {
00070           if(item.type == _MULT){
00071             if(item.knl.size()>3){
00072               std::list<double>::iterator iter;
00073               iter = item.knl.begin();
00074               iter++; iter++; iter++;
00075               return (*iter);
00076             }
00077           }
00078         else return item.k3;
00079         }
00080 
00081         Float_t GetBDSTilt(){return item.tilt;}
00082         Double_t SetBDSX2(Double_t S){s=S;}
00083 
00084         Float_t GetAperX()
00085         {
00086           if(item.type==_RCOL || item.type==_ECOL)
00087             return item.xsize;
00088           else return item.aper;
00089         }
00090         Float_t GetAperY()
00091         {
00092           if(item.type==_RCOL || item.type==_ECOL)
00093             return item.ysize;
00094           else return item.aper;
00095         }
00096         
00097 private:
00098         Element item;
00099         Double_t s;
00100 
00101 public:
00102         ClassDef(BDSBox,1)
00103 };
00104 #endif

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