CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
FWEveViewManager.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: Core
4 // Class : FWEveViewManager
5 //
6 // Implementation:
7 // [Notes on implementation]
8 //
9 // Original Author: Chris Jones, Alja Mrak-Tadel
10 // Created: Thu Mar 18 14:11:32 CET 2010
11 // $Id: FWEveViewManager.cc,v 1.46 2013/01/21 20:33:28 chrjones Exp $
12 //
13 
14 // system include files
15 
16 // user include files
17 #include "TEveManager.h"
18 #include "TEveSelection.h"
19 #include "TEveScene.h"
20 #include "TEveViewer.h"
21 #include "TEveCalo.h"
22 #include "TGLViewer.h"
23 
31 
32 // PB
39 
40 // viewes
48 
49 #include <boost/bind.hpp>
50 
51 class FWViewContext;
52 
53 // sentry class block TEveSelection signals when call TEveSelection::Remove/AddElement and
54 // when process its callbacks
56 public:
58  {
59  m_blocked = gEve->GetSelection()->BlockSignals(true);
60  }
62  {
63  gEve->GetSelection()->BlockSignals(m_blocked);
64  }
65 private:
66  bool m_blocked;
67 };
68 
69 //
70 //
71 // constants, enums and typedefs
72 //
73 //
74 // constructors and destructor
75 //
78 {
79 
80  // builders
81  std::set<std::string> builders;
82 
83  std::vector<edmplugin::PluginInfo> available = FWProxyBuilderFactory::get()->available();
84  std::transform(available.begin(),
85  available.end(),
86  std::inserter(builders,builders.begin()),
87  boost::bind(&edmplugin::PluginInfo::name_,_1));
88 
91  std::transform(available.begin(),
92  available.end(),
93  std::inserter(builders,builders.begin()),
94  boost::bind(&edmplugin::PluginInfo::name_,_1));
95  }
96 
97 
98  for(std::set<std::string>::iterator it = builders.begin(), itEnd=builders.end();
99  it!=itEnd;
100  ++it) {
101  std::string::size_type first = it->find_first_of('@')+1;
102  std::string purpose = it->substr(first,it->find_last_of('@')-first);
103 
104  first = it->find_last_of('@')+1;
105  std::string view_str = it->substr(first,it->find_last_of('#')-first);
106  int viewTypes = atoi(view_str.c_str());
107  std::string fullName = *it;
108  m_typeToBuilder[purpose].push_back(BuilderInfo(*it, viewTypes));
109  }
110 
111 
113 
114 
115  // view construction called via GUI mng
116  FWGUIManager::ViewBuildFunctor f = boost::bind(&FWEveViewManager::buildView, this, _1, _2);
117  for (int i = 0; i < FWViewType::kTypeSize; i++)
118  {
120  continue;
122  }
123 
124  // signal
125  gEve->GetHighlight()->SetPickToSelect(TEveSelection::kPS_Master);
126  TEveSelection* eveSelection = gEve->GetSelection();
127  eveSelection->SetPickToSelect(TEveSelection::kPS_Master);
128  eveSelection->Connect("SelectionAdded(TEveElement*)","FWEveViewManager",this,"selectionAdded(TEveElement*)");
129  eveSelection->Connect("SelectionRepeated(TEveElement*)","FWEveViewManager",this,"selectionAdded(TEveElement*)");
130  eveSelection->Connect("SelectionRemoved(TEveElement*)","FWEveViewManager",this,"selectionRemoved(TEveElement*)");
131  eveSelection->Connect("SelectionCleared()","FWEveViewManager",this,"selectionCleared()");
132 
133  gEve->GetHighlight()->Connect("SelectionAdded(TEveElement*)","FWEveViewManager",this,"highlightAdded(TEveElement*)");
134  gEve->GetHighlight()->Connect("SelectionRepeated(TEveElement*)","FWEveViewManager",this,"highlightAdded(TEveElement*)");
135 }
136 
138 {
139 }
140 
141 //
142 // member functions
143 //
144 
145 //______________________________________________________________________________
146 
152 void
153 addElements(const FWEventItem *item, FWEveView *view,
154  int viewType, TEveElementList* product)
155 {
156  if (FWViewType::isProjected(viewType))
157  {
158  FWRPZView* rpzView = dynamic_cast<FWRPZView*>(view);
159  assert(rpzView);
160  rpzView->importElements(product, item->layer(), rpzView->eventScene());
161  }
162  else
163  {
164  view->eventScene()->AddElement(product);
165  }
166 }
167 
181 void
183 {
184  TypeToBuilder::iterator itFind = m_typeToBuilder.find(iItem->purpose());
185 
186  if (itFind == m_typeToBuilder.end())
187  return;
188 
189  std::vector<BuilderInfo>& blist = itFind->second;
190 
191  for (size_t bii = 0, bie = blist.size(); bii != bie; ++bii)
192  {
193  // 1.
194  BuilderInfo &info = blist[bii];
195  std::string builderName = info.m_name;
196  int builderViewBit = info.m_viewBit;
197 
198  FWProxyBuilderBase* builder = 0;
199  try
200  {
201  builder = FWProxyBuilderFactory::get()->create(builderName);
202 
203  }
204  catch (std::exception& exc)
205  {
206  fwLog(fwlog::kWarning) << "FWEveViewManager::newItem ignoring the following exception (probably edmplugincache mismatch):"
207  << std::endl << exc.what();
208  }
209  if (!builder)
210  continue;
211 
212  // 2.
213  // printf("FWEveViewManager::makeProxyBuilderFor NEW builder %s \n", builderName.c_str());
214 
215  boost::shared_ptr<FWProxyBuilderBase> pB(builder);
216  builder->setItem(iItem);
217  iItem->changed_.connect(boost::bind(&FWEveViewManager::modelChanges,this,_1));
218  iItem->goingToBeDestroyed_.connect(boost::bind(&FWEveViewManager::removeItem,this,_1));
219  iItem->itemChanged_.connect(boost::bind(&FWEveViewManager::itemChanged,this,_1));
220 
221  // 3.
222  // This calud be opaque to the user. I would pass a reference to the m_interactionLists to
223  // FWProxyBuilderBase::setInteractionList and handle different case differently.
224  if (builder->willHandleInteraction() == false)
225  {
226  typedef std::map<const FWEventItem*, FWInteractionList*>::iterator Iterator;
227  std::pair<Iterator, bool> t = m_interactionLists.insert(std::make_pair(iItem,
228  (FWInteractionList*)0));
229 
230  if (t.second == true)
231  t.first->second = new FWInteractionList(iItem);
232  // printf(">>> builder %s add list %p \n", iItem->name().c_str(), il); fflush(stdout);
233  builder->setInteractionList(t.first->second, iItem->purpose());
234  }
235 
236  builder->setHaveWindow(haveViewForBit(builderViewBit));
237 
238  // 4.
239  for (size_t viewType = 0; viewType < FWViewType::kTypeSize; ++viewType)
240  {
241  if (((1 << viewType) & builderViewBit) == 0)
242  continue;
243 
245 
246  // printf("%s builder %s supportsd view %s \n", iItem->name().c_str(), builderName.c_str(), FWViewType::idToName(viewType).c_str());
247  if (builder->havePerViewProduct((FWViewType::EType) viewType))
248  {
249  for (size_t i = 0, e = m_views[viewType].size(); i != e; ++i)
250  {
251  FWEveView *view = m_views[viewType][i].get();
252  TEveElementList* product = builder->createProduct(type,
253  view->viewContext());
254  addElements(iItem, view, viewType, product);
255  }
256  }
257  else
258  {
259  TEveElementList* product = builder->createProduct(type, 0);
260 
261  for (size_t i = 0, e = m_views[viewType].size(); i != e; ++i)
262  addElements(iItem, m_views[viewType][i].get(), viewType, product);
263  }
264  }
265 
266  m_builders[builderViewBit].push_back(pB);
267  } // loop views
268 }
269 
270 //______________________________________________________________________________
271 FWViewBase*
272 FWEveViewManager::buildView(TEveWindowSlot* iParent, const std::string& viewName)
273 {
275  for (int i = 0; i < FWViewType::kTypeSize; ++i)
276  {
277  if (viewName == FWViewType::idToName(i))
278  {
279  type = FWViewType::EType(i);
280  break;
281  }
282  }
283 
284  boost::shared_ptr<FWEveView> view;
285  switch(type)
286  {
287  case FWViewType::k3D:
288  view.reset(new FW3DView(iParent, type));
289  break;
290  case FWViewType::kISpy:
291  view.reset(new FWISpyView(iParent, type));
292  break;
293  case FWViewType::kRhoPhi:
294  case FWViewType::kRhoZ:
296  view.reset(new FWRPZView(iParent, type));
297  break;
298  case FWViewType::kLego:
300  view.reset(new FWEveLegoView(iParent, type));
301  break;
302  case FWViewType::kLegoHF:
303  view.reset(new FWHFView(iParent, type));
304  break;
306  view.reset(new FWGlimpseView(iParent, type));
307  break;
308  default:
309  break;
310  }
311 
312  m_views[type].push_back(boost::shared_ptr<FWEveView> (view));
313  return finishViewCreate(m_views[type].back());
314 }
315 
316 FWEveView*
317 FWEveViewManager::finishViewCreate(boost::shared_ptr<FWEveView> view)
318 {
319  // printf("new view %s added \n", view->typeName().c_str());
320  gEve->DisableRedraw();
321 
322  // set geometry and calo data
323  view->setContext(context());
324 
326 
327  // set proxies have a window falg
328  int viewerBit = 1 << view->typeId();
329  if (m_views[view->typeId()].size() == 1)
330  {
331  for ( std::map<int, BuilderVec>::iterator i = m_builders.begin(); i!= m_builders.end(); ++i)
332  {
333  int builderViewBit = i->first;
334  BuilderVec& bv = i->second;
335  if (viewerBit == (builderViewBit & viewerBit))
336  {
337  for(BuilderVec_it bIt = bv.begin(); bIt != bv.end(); ++bIt)
338  {
339  (*bIt)->setHaveWindow(true);
340  }
341  }
342  }
343  }
344 
345  FWRPZView* rpzView = dynamic_cast<FWRPZView*>(view.get());
346  for ( std::map<int, BuilderVec>::iterator i = m_builders.begin(); i!= m_builders.end(); ++i)
347  {
348  int builderViewBit = i->first;
349  BuilderVec& bv = i->second;
350  if (viewerBit == (builderViewBit & viewerBit))
351  {
352  for(BuilderVec_it bIt = bv.begin(); bIt != bv.end(); ++bIt)
353  {
354  // it is ok to call create even for shared productsm since
355  // builder map key garanties that
356  TEveElementList* product = (*bIt)->createProduct(view->typeId(), view->viewContext());
357 
358  if ((*bIt)->havePerViewProduct((FWViewType::EType)view->typeId()))
359  {
360  // view owned
361  (*bIt)->build();
362  if (rpzView)
363  {
364  rpzView->importElements(product, (*bIt)->item()->layer(), rpzView->ownedProducts());
365  }
366  else
367  {
368  view->ownedProducts()->AddElement(product);
369  }
370  }
371  else
372  {
373  // shared
374  if (rpzView)
375  {
376  rpzView->importElements(product, (*bIt)->item()->layer(), rpzView->eventScene());
377  }
378  else
379  {
380  view->eventScene()->AddElement(product);
381  }
382 
383  }
384  }
385  }
386  }
387 
388  view->beingDestroyed_.connect(boost::bind(&FWEveViewManager::beingDestroyed,this,_1));
389 
390  view->setupEnergyScale(); // notify PB for energy scale
391 
392  gEve->EnableRedraw();
393  view->viewerGL()->UpdateScene();
394  gEve->Redraw3D();
395 
396  return view.get();
397 }
398 
399 void
401 {
402  FWEveView* view = (FWEveView*) vb;
403  int typeId = view->typeId();
404 
405  int viewerBit = 1 << typeId;
406  int nviews = m_views[typeId].size();
407  for ( std::map<int, BuilderVec>::iterator i = m_builders.begin(); i!= m_builders.end(); ++i)
408  {
409  int builderBit = i->first;
410  if (viewerBit == (builderBit & viewerBit)) // check only in case if connected
411  {
412  BuilderVec& bv = i->second;
413 
414  // remove view-owned product
415  if (viewerBit == (builderBit & viewerBit))
416  {
417  for(BuilderVec_it bIt = bv.begin(); bIt != bv.end(); ++bIt)
418  (*bIt)->removePerViewProduct(view->typeId(), view->viewContext());
419  }
420 
421  // and setup proxy builders have-a-window flag
422  if (nviews == 1)
423  {
424  if (!haveViewForBit(builderBit))
425  {
426  if (viewerBit == (builderBit & viewerBit))
427  {
428  for(BuilderVec_it bIt = bv.begin(); bIt != bv.end(); ++bIt)
429  (*bIt)->setHaveWindow(false);
430  }
431  }
432  }
433  }
434  }
435 
436 
437  for(EveViewVec_it i= m_views[typeId].begin(); i != m_views[typeId].end(); ++i) {
438  if(i->get() == vb) {
439  m_views[typeId].erase(i);
440  break;
441  }
442  }
443 }
444 
445 //______________________________________________________________________________
446 
447 void
449 {
450  gEve->DisableRedraw();
451 }
452 
453 void
455 {
456  gEve->EnableRedraw();
457 }
458 
460 void
462 {
463  FWModelId id = *(iIds.begin());
464  const FWEventItem* item = id.item();
465 
466  // in standard case new elements can be build in case of change of visibility
467  // and in non-standard case (e.g. calo towers) PB's modelChages handles all changes
468  bool itemHaveWindow = false;
469  for (std::map<int, BuilderVec>::iterator i = m_builders.begin();
470  i != m_builders.end(); ++i)
471  {
472  for (size_t bi = 0, be = i->second.size(); bi != be; ++bi)
473  {
474  FWProxyBuilderBase *builder = i->second[bi].get();
475  if (builder->getHaveWindow() && builder->item() == item)
476  {
477  builder->modelChanges(iIds);
478  itemHaveWindow = true;
479  }
480  }
481  }
482 
483  if (!itemHaveWindow)
484  return;
485 
487 
488  std::map<const FWEventItem*, FWInteractionList*>::iterator it = m_interactionLists.find(item);
489  if (it != m_interactionLists.end())
490  {
491  if (!it->second->empty())
492  it->second->modelChanges(iIds);
493  }
494 }
495 
501 void
503 {
504  if (!item)
505  return;
506 
507  bool itemHaveWindow = false;
508 
509  for (std::map<int, BuilderVec>::iterator i = m_builders.begin();
510  i != m_builders.end(); ++i)
511  {
512  for(size_t bi = 0, be = i->second.size(); bi != be; ++bi)
513  {
514  FWProxyBuilderBase *builder = i->second[bi].get();
515 
516  if (builder->item() != item)
517  continue;
518 
519  builder->itemChanged(item);
520  itemHaveWindow |= builder->getHaveWindow();
521  }
522  }
523 
524  if (!itemHaveWindow)
525  return;
526 
527  std::map<const FWEventItem*, FWInteractionList*>::iterator it = m_interactionLists.find(item);
528  if (it != m_interactionLists.end())
529  {
530  if (!it->second->empty())
531  it->second->itemChanged();
532  }
533 }
534 
537 void
539 {
541 
542  std::map<const FWEventItem*, FWInteractionList*>::iterator it = m_interactionLists.find(item);
543  if (it != m_interactionLists.end())
544  {
545  delete it->second;
546  m_interactionLists.erase(it);
547  }
548 
549  for (std::map<int, BuilderVec>::iterator i = m_builders.begin();
550  i != m_builders.end(); ++i)
551  {
552  BuilderVec_it bIt = i->second.begin();
553  while( bIt != i->second.end() )
554  {
555  if ((*bIt)->item() == item)
556  {
557  // TODO caching of proxy builders
558  (*bIt)->itemBeingDestroyed(item);
559  bIt = i->second.erase(bIt);
560  }
561  else
562  {
563  ++bIt;
564  }
565  }
566  }
567 }
568 
569 void
571 {
574 
575 }
576 
577 void
579 {
580  for (int t = 0 ; t < FWViewType::kTypeSize; ++t)
581  {
582  for(EveViewVec_it i = m_views[t].begin(); i != m_views[t].end(); ++i)
583  {
584  if ((*i)->isEnergyScaleGlobal())
585  {
586  (*i)->setupEnergyScale();
587  }
588  }
589 
590  }
591 }
592 
593 void
595 {
596  for (int t = 0 ; t < FWViewType::kTypeSize; ++t)
597  {
598  for(EveViewVec_it i = m_views[t].begin(); i != m_views[t].end(); ++i)
599  (*i)->setBackgroundColor(colorManager().background());
600  }
601 }
602 
603 //______________________________________________________________________________
604 void
606 {
607  gEve->DisableRedraw();
608 
610 
611  for (int t = 0 ; t < FWViewType::kTypeSize; ++t)
612  {
613  for(EveViewVec_it i = m_views[t].begin(); i != m_views[t].end(); ++i)
614  (*i)->eventBegin();
615  }
616 }
617 
618 void
620 {
621  for (int t = 0 ; t < FWViewType::kTypeSize; ++t)
622  {
623  for(EveViewVec_it i = m_views[t].begin(); i != m_views[t].end(); ++i)
624  (*i)->eventEnd();
625  }
626  gEve->EnableRedraw();
627 }
628 
629 //______________________________________________________________________________
630 
633 FWFromEveSelectorBase *getSelector(TEveElement *iElement)
634 {
635  if (!iElement)
636  return 0;
637 
638  //std::cout <<" non null"<<std::endl;
639  void* userData = iElement->GetUserData();
640  //std::cout <<" user data "<<userData<<std::endl;
641  if (!userData)
642  return 0;
643 
644  //std::cout <<" have userData"<<std::endl;
645  //std::cout <<" calo"<<std::endl;
647  return reinterpret_cast<FWFromEveSelectorBase*> (userData);
648 }
649 
650 void
651 FWEveViewManager::selectionAdded(TEveElement* iElement)
652 {
653  FWFromEveSelectorBase* selector = getSelector(iElement);
654  if (selector)
655  selector->doSelect();
656 }
657 
658 void
660 {
661  FWFromEveSelectorBase* selector = getSelector(iElement);
662  if (selector)
663  selector->doUnselect();
664 }
665 
666 void
668 {
670 }
671 
672 
673 //
674 // const member functions
675 //
676 
679 {
680  // needed for add collection GUI
681  FWTypeToRepresentations returnValue;
682  const std::string kSimple("simple#");
683  for(TypeToBuilder::const_iterator it = m_typeToBuilder.begin(), itEnd = m_typeToBuilder.end();
684  it != itEnd;
685  ++it)
686  {
687  std::vector<BuilderInfo> blist = it->second;
688  for (size_t bii = 0, bie = blist.size(); bii != bie; ++bii)
689  {
690  BuilderInfo &info = blist[bii];
691  std::string name = info.m_name;
692  unsigned int bitPackedViews = info.m_viewBit;
693  bool representsSubPart = (name.substr(name.find_first_of('@')-1, 1)=="!");
694 
695  if(name.substr(0,kSimple.size()) == kSimple)
696  {
697  name = name.substr(kSimple.size(), name.find_first_of('@')-kSimple.size()-1);
698  returnValue.add(boost::shared_ptr<FWRepresentationCheckerBase>(new FWSimpleRepresentationChecker(name, it->first,bitPackedViews,representsSubPart)) );
699  }
700  else
701  {
702  name = name.substr(0, name.find_first_of('@')-1);
703  returnValue.add(boost::shared_ptr<FWRepresentationCheckerBase>(new FWEDProductRepresentationChecker(name, it->first,bitPackedViews,representsSubPart)) );
704  }
705  }
706  }
707  return returnValue;
708 }
709 
710 
712 bool
714 {
715  for (int t = 0; t < FWViewType::kTypeSize; ++t)
716  {
717  if ((bit & (1 << t)) && m_views[t].size())
718  return true;
719  }
720  // printf("have %d view for bit %d \n", haveView, bit);
721  return false;
722 }
723 
724 
725 /*
726 AMT: temporary workaround for using TEveCaloDataHist instead of
727 TEveCaloDataVec.
728 
729  */
730 
731 #include "TH2F.h"
732 #include "TAxis.h"
733 #include "TEveCaloData.h"
734 
735 void
736 FWEveViewManager::highlightAdded(TEveElement* iElement)
737 {
738 
739  bool blocked = gEve->GetHighlight()->BlockSignals(true);
740 
741 
742  if (iElement == context().getCaloData())
743  {
744  TEveCaloData::vCellId_t& hlist = context().getCaloData()->GetCellsHighlighted();
745  std::set<TEveCaloData::CellId_t> hset;
746 
747  int etaBin, phiBin, w, newPhiBin, tower;
748  TH2F* hist = context().getCaloData()->GetHist(0);
749  TAxis* etaAxis = hist->GetXaxis();
750  int nBinsX = etaAxis->GetNbins() + 2;
751 
752  for (TEveCaloData::vCellId_i i = hlist.begin(); i != hlist.end(); ++i)
753  {
754  hist->GetBinXYZ((*i).fTower, etaBin, phiBin, w);
755  if (TMath::Abs(etaAxis->GetBinCenter(etaBin)) > 4.71475)
756  {
757  newPhiBin = ((phiBin + 1) / 4) * 4 - 1;
758  if (newPhiBin <= 0) newPhiBin = 71;
759 
760  tower = etaBin + newPhiBin*nBinsX;
761  hset.insert(TEveCaloData::CellId_t( tower, (*i).fSlice, (*i).fFraction));
762  tower += nBinsX;
763  hset.insert(TEveCaloData::CellId_t(tower, (*i).fSlice, (*i).fFraction));
764  tower += nBinsX;
765 
766  if (newPhiBin == 71)
767  tower = etaBin + 1*nBinsX;
768 
769  hset.insert(TEveCaloData::CellId_t(tower, (*i).fSlice, (*i).fFraction));
770  tower += nBinsX;
771  hset.insert(TEveCaloData::CellId_t(tower, (*i).fSlice, (*i).fFraction));
772  }
773  else if (TMath::Abs(etaAxis->GetBinCenter(etaBin)) > 1.747650)
774  {
775  newPhiBin = ((phiBin + 1)/2)*2 - 1;
776  tower = etaBin + newPhiBin*nBinsX;
777  hset.insert(TEveCaloData::CellId_t( tower, (*i).fSlice, (*i).fFraction));
778  tower += nBinsX;
779  hset.insert(TEveCaloData::CellId_t(tower, (*i).fSlice, (*i).fFraction));
780  }
781  else
782  {
783  hset.insert(*i);
784  }
785  }
786 
787  // edit calo data list
788  hlist.clear();
789  for(std::set<TEveCaloData::CellId_t>::iterator it = hset.begin(); it != hset.end(); ++it)
790  {
791  hlist.push_back(*it);
792  }
793  context().getCaloData()->CellSelectionChanged();
794 
795  }
796 
797  gEve->GetHighlight()->BlockSignals(blocked);
798 }
const CategoryToInfos & categoryToInfos() const
Definition: PluginManager.h:71
FWEveView * finishViewCreate(boost::shared_ptr< FWEveView >)
type
Definition: HCALResponse.h:21
int i
Definition: DBlmapReader.cc:9
Color_t background() const
const fireworks::Context & context() const
TEveScene * eventScene()
Definition: FWEveView.h:76
virtual void modelChangesDone()
virtual void doUnselect()=0
FWTypeToRepresentations supportedTypesAndRepresentations() const
virtual bool willHandleInteraction() const
virtual bool havePerViewProduct(FWViewType::EType) const
FWColorManager * colorManager() const
Definition: Context.h:66
void selectionAdded(TEveElement *)
void itemChanged(const FWEventItem *)
virtual void colorsChanged()
FWItemChangeSignal goingToBeDestroyed_
Definition: FWEventItem.h:215
TypeToBuilder m_typeToBuilder
FWColorManager & colorManager() const
uint16_t size_type
boost::function2< FWViewBase *, TEveWindowSlot *, const std::string & > ViewBuildFunctor
Definition: FWGUIManager.h:100
const FWEventItem * item() const
void add(boost::shared_ptr< FWRepresentationCheckerBase > iChecker)
int layer() const
Definition: FWEventItem.cc:458
FWEveViewManager(FWGUIManager *)
void registerViewBuilder(const std::string &iName, ViewBuildFunctor &iBuilder)
FWFromEveSelectorBase * getSelector(TEveElement *iElement)
static bool isProjected(int)
Definition: FWViewType.cc:129
virtual void setContext(const fireworks::Context *x)
virtual void newItem(const FWEventItem *)
std::set< FWModelId > FWModelIds
std::vector< boost::shared_ptr< FWEveView > >::iterator EveViewVec_it
virtual void setItem(const FWEventItem *iItem)
void resetMaxEtAndEnergy() const
Definition: Context.cc:192
FWItemChangeSignal itemChanged_
Definition: FWEventItem.h:199
bool haveViewForBit(int) const
void addElements(const FWEventItem *item, FWEveView *view, int viewType, TEveElementList *product)
virtual void setContext(const fireworks::Context *)
double f[11][100]
void selectionRemoved(TEveElement *)
void highlightAdded(TEveElement *)
void importElements(TEveElement *iProjectableChild, float layer, TEveElement *iProjectedParent=0)
Definition: FWRPZView.cc:304
TEveCaloDataHist * getCaloData() const
Definition: Context.h:81
void modelChanges(const FWModelIds &iIds)
void beingDestroyed(const FWViewBase *)
std::map< int, BuilderVec > m_builders
FWSelectionManager * selectionManager() const
Definition: Context.h:58
bool first
Definition: L1TdeRCT.cc:94
FWViewBase * buildView(TEveWindowSlot *iParent, const std::string &type)
virtual void doSelect()=0
void setHaveWindow(bool iFlag)
string fullName
std::map< const FWEventItem *, FWInteractionList * > m_interactionLists
virtual void modelChangesComing()
#define fwLog(_level_)
Definition: fwLog.h:51
FWViewContext * viewContext()
Definition: FWEveView.h:80
FWViewEnergyScale * getEnergyScale() const
Definition: CmsShowCommon.h:67
virtual void eventEnd()
virtual ~FWEveViewManager()
std::vector< boost::shared_ptr< FWProxyBuilderBase > > BuilderVec
CmsShowCommon * commonPrefs() const
Definition: Context.cc:179
BuilderVec::iterator BuilderVec_it
FWModelChangeSignal changed_
Definition: FWEventItem.h:196
sigc::signal< void > parameterChanged_
#define begin
Definition: vmac.h:31
static const std::string & idToName(int)
Definition: FWViewType.cc:90
std::string name_
Definition: PluginInfo.h:30
TEveElement * ownedProducts()
Definition: FWEveView.h:79
static Bool_t setColorSetViewer(TGLViewer *, Color_t)
virtual void removeItem(const FWEventItem *)
bool getHaveWindow() const
virtual void eventBegin()
T w() const
TEveElementList * createProduct(FWViewType::EType, const FWViewContext *)
Definition: DDAxes.h:10
const std::string & purpose() const
Definition: FWEventItem.cc:513
static PluginManager * get()
tuple size
Write out results.
virtual void setContext(const fireworks::Context &x)
Definition: FWEveView.cc:267
T get(const Candidate &c)
Definition: component.h:56
void itemChanged(const FWEventItem *)
void modelChanges(const FWModelIds &)
std::vector< std::vector< boost::shared_ptr< FWEveView > > > m_views
virtual void setInteractionList(FWInteractionList *, const std::string &)
FWViewType::EType typeId() const
Definition: FWViewBase.h:42