CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
FWCaloTauProxyBuilder.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: Calo
4 // Class : FWCaloTauProxyBuilder
5 //
6 // Implementation:
7 // <Notes on implementation>
8 //
9 // Original Author:
10 // Created: Sun Jan 6 23:57:00 EST 2008
11 // $Id: FWCaloTauProxyBuilder.cc,v 1.15 2010/09/16 15:42:20 yana Exp $
12 //
13 
14 // system include files
15 #include "TEveCompound.h"
16 #include "TGeoTube.h"
17 #include "TEveGeoNode.h"
18 #include "TEveStraightLineSet.h"
19 #include "TEveTrack.h"
20 
21 // user include files
26 
30 
31 class FWViewContext;
32 
34 {
35 public:
38 
40 
41 private:
42  FWCaloTauProxyBuilder(const FWCaloTauProxyBuilder&); // stop default
43  const FWCaloTauProxyBuilder& operator=(const FWCaloTauProxyBuilder&); // stop default
44 
45  virtual void buildViewType( const FWEventItem* iItem, TEveElementList* product, FWViewType::EType viewType , const FWViewContext* vc);
46 
47 };
48 
49 void
50 FWCaloTauProxyBuilder::buildViewType( const FWEventItem* iItem, TEveElementList* product, FWViewType::EType viewType , const FWViewContext* vc)
51 {
52  reco::CaloTauCollection const * caloTaus = 0;
53  iItem->get( caloTaus );
54  if( caloTaus == 0 ) return;
55 
56 
57  Int_t idx = 0;
58  for( reco::CaloTauCollection::const_iterator it = caloTaus->begin(), itEnd = caloTaus->end(); it != itEnd; ++it, ++idx)
59  {
60  TEveCompound* comp = createCompound();
61 
62  if (viewType == FWViewType::kLego)
63  {
64  fireworks::addCircle( (*it).eta(), (*it).phi(), 0.5, 20, comp, this );
65  }
66  else
67  {
68  const reco::CaloTauTagInfo *tauTagInfo = dynamic_cast<const reco::CaloTauTagInfo*>(((*it).caloTauTagInfoRef().get()));
69  const reco::CaloJet *jet = dynamic_cast<const reco::CaloJet*>((tauTagInfo->calojetRef().get()));
70 
71  int min = 100;
72  int max = -100;
73  std::vector<double> phis;
74  std::vector<CaloTowerPtr> towers = jet->getCaloConstituents();
75  for( std::vector<CaloTowerPtr>::const_iterator tower = towers.begin(), towerEnd = towers.end();
76  tower != towerEnd; ++tower )
77  {
78  unsigned int ieta = 41 + (*tower)->id().ieta();
79  if( ieta > 40 ) --ieta;
80  assert( ieta <= 82 );
81 
82  if( int(ieta) > max ) max = ieta;
83  if( int(ieta) < min ) min = ieta;
84  m_phis.push_back( (*tower)->phi() );
85  }
86  if( min > max ) {
87  min = 0; max = 0;
88  }
89  const std::vector<std::pair<double, double> > thetaBins = fireworks::thetaBins();
90  m_minTheta = thetaBins[min].first;
91  m_maxTheta = thetaBins[max].second;
92 
93  buildBaseTau(*it, *jet, comp, viewType, vc);
94  m_phis.clear();
95  }
96  setupAddElement( comp, product );
97  }
98 
99 }
100 
101 
#define REGISTER_FWPROXYBUILDER(_name_, _type_, _purpose_, _view_)
Jets made from CaloTowers.
Definition: CaloJet.h:30
static const int kAllRPZBits
Definition: FWViewType.h:56
const CaloJetRef & calojetRef() const
const FWCaloTauProxyBuilder & operator=(const FWCaloTauProxyBuilder &)
std::vector< std::pair< double, double > > thetaBins()
Definition: thetaBins.cc:49
void setupAddElement(TEveElement *el, TEveElement *parent, bool set_color=true) const
void get(const T *&oData) const
Definition: FWEventItem.h:84
#define min(a, b)
Definition: mlp_lapack.h:161
virtual void buildViewType(const FWEventItem *iItem, TEveElementList *product, FWViewType::EType viewType, const FWViewContext *vc)
virtual std::vector< CaloTowerPtr > getCaloConstituents() const
get all constituents
Definition: CaloJet.cc:94
static const int kAll3DBits
Definition: FWViewType.h:57
std::vector< CaloTau > CaloTauCollection
collection of CaloTau objects
Definition: CaloTauFwd.h:9
const T & max(const T &a, const T &b)
void addCircle(double eta, double phi, double radius, const unsigned int nLineSegments, TEveElement *comp, FWProxyBuilderBase *pb)
void buildBaseTau(const reco::BaseTau &iTau, const reco::Jet &iJet, TEveElement *comp, FWViewType::EType type, const FWViewContext *vc)
TEveCompound * createCompound(bool set_color=true, bool propagate_color_to_all_children=false) const
std::vector< double > m_phis
T const * get() const
Returns C++ pointer to the item.
Definition: Ref.h:239