CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
CmsShowCommon.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: Core
4 // Class : CmsShowCommon
5 //
6 // Implementation:
7 // [Notes on implementation]
8 //
9 // Original Author: Alja Mrak-Tadel
10 // Created: Fri Sep 10 14:50:32 CEST 2010
11 // $Id: CmsShowCommon.cc,v 1.16 2012/05/11 20:36:33 amraktad Exp $
12 //
13 
14 // system include files
15 #include <boost/bind.hpp>
16 
17 // user include files
18 
19 #include "TEveManager.h"
20 #include "TEveTrackPropagator.h"
21 #include "TGLViewer.h"
22 #include "TEveViewer.h"
23 
27 
28 
29 //
30 // constructors and destructor
31 //
34  m_context(c),
35  m_trackBreak(this, " ", 2l, 0l, 2l), // do not want to render text at setter
36  m_drawBreakPoints(this, "Show y=0 points as markers", false),
37  m_backgroundColor(this, "backgroundColIdx", 1l, 0l, 1000l),
38  m_gamma(this, "Brightness", 0l, -15l, 15l),
39  m_geomTransparency2D(this, "Transparency 2D", long(colorManager()->geomTransparency(true)), 0l, 100l),
40  m_geomTransparency3D(this, "Transparency 3D", long(colorManager()->geomTransparency(false)), 0l, 100l),
41  m_energyScale(new FWViewEnergyScale("global", 2))
42 {
43  // projections
44  m_trackBreak.addEntry(0, "Jump to proper hemisphere");
45  m_trackBreak.addEntry(1, "Stay on first point side");
46  m_trackBreak.addEntry(2, "Stay on last point side");
47 
48  // colors
49  char name[32];
50  for (int i = 0; i < kFWGeomColorSize; ++i)
51  {
52  snprintf(name, 31, "GeometryColor %d ", i);
53  m_geomColors[i] = new FWLongParameter(this, name , long(colorManager()->geomColor(FWGeomColorIndex(i))), 1000l, 1100l);
54  }
55 
56  m_trackBreak.changed_.connect(boost::bind(&CmsShowCommon::setTrackBreakMode, this));
58  m_gamma.changed_.connect(boost::bind(&CmsShowCommon::setGamma, this));
59 }
60 
62 {
63 }
64 
65 
67 {
68  return m_context->colorManager();
69 }
70 //
71 // member functions
72 //
73 
74 
75 void
77 {
78  if (m_context->getTrackPropagator()->GetProjTrackBreaking() != m_trackBreak.value())
79  {
80  m_context->getTrackPropagator()->SetProjTrackBreaking(m_trackBreak.value());
81  m_context->getTrackerTrackPropagator()->SetProjTrackBreaking(m_trackBreak.value());
82  m_context->getMuonTrackPropagator()->SetProjTrackBreaking(m_trackBreak.value());
83  gEve->Redraw3D();
84  }
85 }
86 
87 
88 void
90 {
91  if (m_context->getTrackPropagator()->GetRnrPTBMarkers() != m_drawBreakPoints.value())
92  {
93  m_context->getTrackPropagator()->SetRnrPTBMarkers(m_drawBreakPoints.value());
96  gEve->Redraw3D();
97  }
98 }
99 
100 void
102 {
104 }
105 
106 void
108 {
110  m_backgroundColor.set(colorManager()->background());
111 }
112 
113 void
115 {
116  m_geomColors[cidx]->set(iColor);
117  m_context->colorManager()->setGeomColor(cidx, iColor);
118 }
119 
120 void
121 CmsShowCommon::setGeomTransparency(int iTransp, bool projected)
122 {
123  if (projected)
124  m_geomTransparency2D.set(iTransp);
125  else
126  m_geomTransparency3D.set(iTransp);
127 
128  m_context->colorManager()->setGeomTransparency(iTransp, projected);
129 }
130 
131 //____________________________________________________________________________
132 
133 namespace
134 {
135  void addGLColorToConfig(const char* cname, TGLColor& c, FWConfiguration& oTo)
136  {
137  FWConfiguration pc;
138 
139  std::ostringstream sRed;
140  sRed << (int)c.GetRed();
141  pc.addKeyValue("Red", sRed.str());
142 
143  std::ostringstream sGreen;
144  sGreen << (int)c.GetGreen();
145  pc.addKeyValue("Green", sGreen.str());
146 
147  std::ostringstream sBlue;
148  sBlue << (int)c.GetBlue();
149  pc.addKeyValue("Blue", sBlue.str());
150 
151  oTo.addKeyValue(cname, pc, true);
152  }
153 
154  void setGLColorFromConfig(TGLColor& d, const FWConfiguration* iFrom )
155  {
156  if (!iFrom) return;
157  d.Arr()[0] = atoi(iFrom->valueForKey("Red")->value().c_str());
158  d.Arr()[1] = atoi(iFrom->valueForKey("Green")->value().c_str());
159  d.Arr()[2] = atoi(iFrom->valueForKey("Blue")->value().c_str());
160  // printf("22222 colors %d %d %d \n", d.Arr()[0], d.Arr()[1], d.Arr()[2]);
161  }
162 }
163 
164 void
166 {
167  m_backgroundColor.set(int(colorManager()->background()));
168 
170  m_energyScale->addTo(oTo);
171 
172  if (gEve)
173  {
174  TGLViewer* v = gEve->GetDefaultGLViewer();
175  addGLColorToConfig("SelectionColorLight", v->RefLightColorSet().Selection(1), oTo);
176  addGLColorToConfig("HighlightColorLight", v->RefLightColorSet().Selection(3), oTo);
177  addGLColorToConfig("SelectionColorDark", v->RefDarkColorSet().Selection(1), oTo);
178  addGLColorToConfig("HighlightColorDark", v->RefDarkColorSet().Selection(3), oTo);
179  }
180 }
181 
182 void
184 {
185  for(const_iterator it =begin(), itEnd = end();
186  it != itEnd;
187  ++it) {
188  (*it)->setFrom(iFrom);
189  }
190 
191  // handle old and new energy scale configuration if existing
192  if (iFrom.valueForKey("ScaleMode"))
193  {
194  long mode = atol(iFrom.valueForKey("ScaleMode")->value().c_str());
195 
196  float convert;
197  if (iFrom.valueForKey("EnergyToLength [GeV/m]"))
198  convert = atof(iFrom.valueForKey("EnergyToLength [GeV/m]")->value().c_str());
199  else
200  convert = atof(iFrom.valueForKey("ValueToHeight [GeV/m]")->value().c_str());
201 
202  float maxH;
203  if (iFrom.valueForKey("MaximumLength [m]"))
204  maxH = atof(iFrom.valueForKey("MaximumLength [m]")->value().c_str());
205  else
206  maxH = atof(iFrom.valueForKey("MaxTowerH [m]")->value().c_str());
207 
208  int et = atoi(iFrom.valueForKey("PlotEt")->value().c_str());
209  m_energyScale->SetFromCmsShowCommonConfig(mode, convert, maxH, et);
210  }
211 
212  // background
215 
216  // geom colors
219 
220  for (int i = 0; i < kFWGeomColorSize; ++i)
222 
223  if (gEve)
224  {
225  TGLViewer* v = gEve->GetDefaultGLViewer();
226  setGLColorFromConfig(v->RefLightColorSet().Selection(1), iFrom.valueForKey("SelectionColorLight"));
227  setGLColorFromConfig(v->RefLightColorSet().Selection(3), iFrom.valueForKey("HighlightColorLight"));
228  setGLColorFromConfig(v->RefDarkColorSet().Selection(1), iFrom.valueForKey("SelectionColorDark"));
229  setGLColorFromConfig(v->RefDarkColorSet().Selection(3), iFrom.valueForKey("HighlightColorDark"));
230  }
231 }
int i
Definition: DBlmapReader.cc:9
std::vector< FWParameterBase * >::const_iterator const_iterator
const_iterator begin() const
FWBoolParameter m_drawBreakPoints
Definition: CmsShowCommon.h:82
TEveTrackPropagator * getTrackerTrackPropagator() const
Definition: Context.h:75
FWLongParameter m_backgroundColor
Definition: CmsShowCommon.h:85
FWColorManager * colorManager() const
Definition: Context.h:66
FWGeomColorIndex
void setTrackBreakMode()
FWLongParameter * m_geomColors[kFWGeomColorSize]
Definition: CmsShowCommon.h:91
TEveTrackPropagator * getTrackPropagator() const
Definition: Context.h:74
sigc::signal< void, T > changed_
const FWColorManager * colorManager() const
void convert(uint32 i, char_uint32 v)
Definition: MsgTools.h:46
FWLongParameter m_gamma
Definition: CmsShowCommon.h:86
void setGeomColor(FWGeomColorIndex, Color_t)
void setGeomTransparency(int val, bool projected)
void setGeomTransparency(Color_t idx, bool projectedType)
virtual ~CmsShowCommon()
const_iterator end() const
bool addEntry(Long_t id, const std::string &txt)
void setBrightness(int)
void setGeomColor(FWGeomColorIndex, Color_t)
fireworks::Context * m_context
Definition: CmsShowCommon.h:79
void switchBackground()
FWLongParameter m_geomTransparency3D
Definition: CmsShowCommon.h:90
void setDrawBreakMarkers()
TEveTrackPropagator * getMuonTrackPropagator() const
Definition: Context.h:76
FWConfiguration & addKeyValue(const std::string &, const FWConfiguration &)
const std::string & value(unsigned int iIndex=0) const
FWLongParameter m_geomTransparency2D
Definition: CmsShowCommon.h:89
std::auto_ptr< FWViewEnergyScale > m_energyScale
Definition: CmsShowCommon.h:94
virtual void addTo(FWConfiguration &) const
void setBackgroundAndBrightness(BackgroundColorIndex, int)
FWParameters::Long FWLongParameter
Definition: FWParameters.h:36
virtual void setFrom(const FWConfiguration &)
const FWConfiguration * valueForKey(const std::string &iKey) const
FWEnumParameter m_trackBreak
Definition: CmsShowCommon.h:81
mathSSE::Vec4< T > v
CmsShowCommon(fireworks::Context *)
virtual void addTo(FWConfiguration &) const