Report problems to ATLAS LXR Team (with time and IP address indicated)

The LXR Cross Referencer

source navigation ]
diff markup ]
identifier search ]
general search ]
 
 
Architecture: linux ]
Version: head ] [ nightly ] [ GaudiDev ]
  Links to LXR source navigation pages for stable releases [ 12.*.* ]   [ 13.*.* ]   [ 14.*.* ]   [ 15.*.* ] 

001 #include "FMScaleSelector.h"
002 
003 #include "TTPosition.h"
004 
005 #ifdef WIN32
006  #include <Riostream.h>
007 #else
008  #include <iostream.h>
009 #endif
010 
011 using std::cout;
012 using std::endl;
013 
014 FMScaleSelector::FMScaleSelector(IDisplayFrame* parentFrame):
015         m_parentFrame(parentFrame)
016 {
017 
018         TGVerticalFrame* fToolFrame = parentFrame->modulesFrame();
019         m_pReader = parentFrame->ntupleReader();
020 
021         fDataScaleGroupFrame = new TGGroupFrame(fToolFrame, "Scale", kVerticalFrame);
022 
023         fAutoScaleButton = new TGCheckButton(fDataScaleGroupFrame,"Auto scale");
024         fAutoScaleButton->Connect("Clicked()", "FMScaleSelector", this, "OnAutoScaleChange()");
025         fAutoScaleButton->SetState(kButtonDown);
026         fDataScaleGroupFrame->AddFrame(fAutoScaleButton, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX,2,2,2,0));
027 
028         fCommonScaleButton = new TGCheckButton(fDataScaleGroupFrame,"Common scale");
029         fCommonScaleButton->Connect("Clicked()", "FMScaleSelector", this, "OnCommonScaleChange()");
030         //fCommonScaleButton->SetState(kButtonUp);

031         fCommonScaleButton->SetState(kButtonDisabled);
032         fDataScaleGroupFrame->AddFrame(fCommonScaleButton, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX,2,2,2,0));
033 
034 
035         m_mapScale = m_pReader->dataScale();
036         std::map<TTPosition::eDetectorType, Scale>::iterator scale_it = m_mapScale.begin();
037         for(;scale_it!=m_mapScale.end();++scale_it) {
038                 TTPosition::eDetectorType eDet = scale_it->first;
039                 TGHorizontalFrame *fScaleLimitArea = new TGHorizontalFrame(fDataScaleGroupFrame,0,0, kHorizontalFrame);
040                 
041 
042                 TGNumberEntryField* fScaleMinNumberEntry = new TGNumberEntryField(fScaleLimitArea, 999, 0.,TGNumberFormat::kNESRealFour,TGNumberFormat::kNEAAnyNumber);
043                 Int_t height = fScaleMinNumberEntry->GetDefaultHeight();
044             Int_t charw = fScaleMinNumberEntry->GetCharWidth("0123456789");
045             Int_t width = charw * TMath::Abs(3) / 10 + 8 + 2 * height / 3;
046                 fScaleMinNumberEntry->Resize(width, height);
047                 fScaleLimitArea->AddFrame(fScaleMinNumberEntry, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX, 0, 8, 2, 2));
048 
049                 TGNumberEntryField* fScaleMaxNumberEntry = new TGNumberEntryField(fScaleLimitArea, 999, 0.,TGNumberFormat::kNESRealFour,TGNumberFormat::kNEAAnyNumber);
050                 fScaleMaxNumberEntry->Resize(width, height);
051                 fScaleLimitArea->AddFrame(fScaleMaxNumberEntry, new TGLayoutHints(kLHintsRight | kLHintsTop | kLHintsExpandX, 8, 0, 2, 2));
052 
053                 fDataScaleGroupFrame->AddFrame(fScaleLimitArea,new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX ,0,0,0,0));
054                 
055                 m_mapSubFrame[eDet] = fScaleLimitArea;
056                 m_mapMinField[eDet] = fScaleMinNumberEntry;
057                 m_mapMaxField[eDet] = fScaleMaxNumberEntry;
058         }
059 
060         // frame for updatescale button

061         fUpdateScaleButtonArea = new TGHorizontalFrame(fDataScaleGroupFrame,0,0, kHorizontalFrame);     
062         fDataScaleGroupFrame->AddFrame(fUpdateScaleButtonArea,new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX ,0,0,0,0));
063         // add button

064         fUpdateScaleButton = new TGTextButton(fUpdateScaleButtonArea, "&Update Scale");
065         fUpdateScaleButton->Connect("Clicked()", "FMScaleSelector", this, "OnScaleValueChange()");
066         fUpdateScaleButtonArea->AddFrame(fUpdateScaleButton,new TGLayoutHints( kLHintsTop | kLHintsExpandX ,0,0,2,0));
067 
068         fToolFrame->AddFrame(fDataScaleGroupFrame, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX ,2,2,0,0));
069 }
070 
071 FMScaleSelector::~FMScaleSelector(void)
072 {
073 }
074 
075 void FMScaleSelector::OnAutoScaleChange() {
076         bool bState = (fAutoScaleButton->GetState()==kButtonDown);
077         this->autoScale(bState);
078 
079         this->updateFrames(); // hide or display entry fields frames depending on fAutoScaleButton->GetState()

080 
081         if(bState) m_parentFrame->onScaleValueChange(); //if autoscale is put on -> only update colors with auto values, nothing more is drawn

082         else this->updateFields(); // if autoscale is put off -> update entry fields value from scale objects

083 }
084 
085 void FMScaleSelector::updateFrames() {
086         bool bState = (fAutoScaleButton->GetState()==kButtonDown);
087 
088         // hide all frames

089         std::map<TTPosition::eDetectorType, Scale>::iterator it = m_mapScale.begin();
090         for(;it!=m_mapScale.end();++it) {
091                 fDataScaleGroupFrame->HideFrame(m_mapSubFrame[it->first]);
092         }
093         fDataScaleGroupFrame->HideFrame(fUpdateScaleButtonArea);
094         
095         // draw only the ones required from detector selector

096         if(!bState){
097                 std::vector<TTPosition::eDetectorType> vDet = m_parentFrame->getSelectedDetectors();
098                 std::vector<TTPosition::eDetectorType>::iterator it = vDet.begin();
099                 for(;it!=vDet.end();++it) {
100                         fDataScaleGroupFrame->ShowFrame(m_mapSubFrame[*it]);
101                 }
102                 fDataScaleGroupFrame->ShowFrame(fUpdateScaleButtonArea);
103         }       
104         fDataScaleGroupFrame->Resize(fDataScaleGroupFrame->GetSize().fWidth, 0); // resize only along y

105 }
106 
107 void FMScaleSelector::OnCommonScaleChange() {
108 
109 }
110 
111 void FMScaleSelector::OnScaleValueChange() {
112         std::map<TTPosition::eDetectorType, Scale>::iterator it = m_mapScale.begin();
113         for(;it!=m_mapScale.end();++it) {
114                 double max = m_mapMaxField[it->first]->GetNumber();
115                 double min = m_mapMinField[it->first]->GetNumber();
116                 if(min<=max) {
117                         it->second.setMaximum( max );
118                         it->second.setMinimum( min );
119                 }
120         }
121         m_parentFrame->onScaleValueChange(); //only update colors, nothing is drawn

122 }
123 
124 void FMScaleSelector::newData() {
125         m_mapScale = m_pReader->dataScale();
126         this->updateFields();
127         //this->OnAutoScaleChange();

128 }
129 
130 void FMScaleSelector::autoScale(bool state) {
131         std::map<TTPosition::eDetectorType, Scale>::iterator it = m_mapScale.begin();
132         for(;it!=m_mapScale.end();++it) {
133                 (it->second).setAutoScale(state);
134         }
135 }
136 
137 void FMScaleSelector::updateFields() {
138         std::map<TTPosition::eDetectorType, Scale>::iterator it = m_mapScale.begin();
139         for(;it!=m_mapScale.end();++it) {
140                 m_mapMaxField[it->first]->SetNumber( (it->second).maximum() );
141                 m_mapMinField[it->first]->SetNumber( (it->second).minimum() );
142         }
143 }
144 
145 std::map<TTPosition::eDetectorType, Scale> FMScaleSelector::dataScale(void) const {
146         return m_mapScale;
147 }

source navigation ] diff markup ] identifier search ] general search ]

Due to the LXR bug, the updates fail sometimes to remove references to deleted files. The Saturday's full rebuilds fix these problems
This page was automatically generated by the LXR engine. Valid HTML 4.01!