00001
00002
00003
00004
00005
00006 #include "BDSBox.h"
00007 #include "BDSConstant.h"
00008 #include "BDSPad.h"
00009
00010 ClassImp(BDSBox)
00011
00012
00013 Double_t Bdsbox2Bdsaxis(Double_t real_position, Double_t min, Double_t max)
00014 {
00015 Double_t deltaxis_position=xmax_axis_position-xmin_axis_position;
00016 Double_t deltaxis = max-min;
00017 if( real_position > max ) real_position = max;
00018 if( real_position < min ) real_position = min;
00019 return (real_position-min)*deltaxis_position/deltaxis+xmin_axis_position;
00020 }
00021
00022 BDSBox::BDSBox(Element _item, Double_t _y1, Double_t _y2)
00023 : item(_item)
00024 {
00025 SetY1(_y1);
00026 SetY2(_y2);
00027 }
00028
00029 void BDSBox::Update(BDSPad* pad, Double_t xmin, Double_t xmax)
00030 {
00031 Double_t xx1 = Bdsbox2Bdsaxis(GetBDSX1(),xmin,xmax);
00032 Double_t xx2 = Bdsbox2Bdsaxis(GetBDSX2(),xmin,xmax);
00033 SetX1(xx1);
00034 SetX2(xx2);
00035
00036 if(pad)
00037 {
00038 if(xx2 < BDSPad::get_xmin_axis() || xx1 > BDSPad::get_xmax_axis())
00039 {
00040 pad->GetListOfPrimitives()->Remove(this);
00041 }
00042 else
00043 {
00044
00045 if(item.type==_QUAD || item.type==_SBEND || item.type==_SEXTUPOLE || item.type==_ECOL || item.type==_RCOL || item.type==_OCTUPOLE || item.type==_MULT)
00046 {
00047 pad->GetListOfPrimitives()->Add(this);
00048 }
00049
00050 }
00051 }
00052 }