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