00001
00002
00003
00004
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