CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch13/src/Fireworks/ParticleFlow/plugins/FWPFClusterRPZProxyBuilder.cc

Go to the documentation of this file.
00001 #include "FWPFClusterRPZProxyBuilder.h"
00002 
00003 //______________________________________________________________________________
00004 FWPFClusterRPZProxyBuilder::FWPFClusterRPZProxyBuilder()
00005 {
00006    m_pfUtils = new FWPFUtils();
00007    m_clusterUtils = new FWPFClusterRPZUtils();
00008 }
00009 
00010 //______________________________________________________________________________
00011 FWPFClusterRPZProxyBuilder::~FWPFClusterRPZProxyBuilder()
00012 {
00013    delete m_pfUtils;
00014    delete m_clusterUtils;
00015 }
00016 
00017 //______________________________________________________________________________
00018 void
00019 FWPFClusterRPZProxyBuilder::scaleProduct( TEveElementList *parent, FWViewType::EType viewType, const FWViewContext *vc )
00020 {
00021    typedef std::vector<ScalableLines> Lines_t;
00022    FWViewEnergyScale *caloScale = vc->getEnergyScale();
00023 
00024    for( Lines_t::iterator i = m_clusters.begin(); i != m_clusters.end(); ++i )
00025    {
00026       if( vc == (*i).m_vc )
00027       {
00028          float value = caloScale->getPlotEt() ? (*i).m_et : (*i).m_energy;
00029          (*i).m_ls->SetScale( caloScale->getScaleFactor3D() * value );
00030          TEveProjected *proj = *(*i).m_ls->BeginProjecteds();
00031          proj->UpdateProjection();
00032       }
00033    }
00034 }
00035 
00036 //______________________________________________________________________________
00037 void
00038 FWPFClusterRPZProxyBuilder::sharedBuild( const reco::PFCluster &iData, unsigned int iIndex, 
00039                                          TEveElement &oItemHolder, const FWViewContext *vc, float r )
00040 {
00041    /* Handles RhoPhi view */
00042    TEveScalableStraightLineSet *ls;
00043    const FWDisplayProperties &dp = item()->defaultDisplayProperties();
00044    float energy, et;
00045    
00046    energy = iData.energy();
00047    et = m_clusterUtils->calculateEt( iData, energy );
00048    context().voteMaxEtAndEnergy( et, energy );
00049 
00050    ls = m_clusterUtils->buildRhoPhiClusterLineSet( iData, vc, energy, et, r );
00051    ls->SetLineColor( dp.color() );
00052    m_clusters.push_back( ScalableLines( ls, et, energy, vc ) );
00053    setupAddElement( ls, &oItemHolder );
00054 }
00055 
00056 //______________________________________________________________________________
00057 void
00058 FWPFClusterRPZProxyBuilder::build( const reco::PFCluster &iData, unsigned int iIndex, 
00059                                                 TEveElement &oItemHolder, const FWViewContext *vc )
00060 {
00061    /* Handles RhoZ view */
00062    float energy, et;
00063    float ecalR = context().caloR1();
00064    float ecalZ = context().caloZ1();
00065    const FWDisplayProperties &dp = item()->defaultDisplayProperties();
00066    TEveScalableStraightLineSet *ls;
00067 
00068    energy = iData.energy();
00069    et = m_clusterUtils->calculateEt( iData, energy );
00070    context().voteMaxEtAndEnergy( et, energy );
00071 
00072    ls = m_clusterUtils->buildRhoZClusterLineSet( iData, vc, context().caloTransAngle(), energy, et, ecalR, ecalZ );
00073    ls->SetLineColor( dp.color() );
00074 
00075    m_clusters.push_back( ScalableLines( ls, et, energy, vc ) );
00076    setupAddElement( ls, &oItemHolder ); 
00077 }
00078 
00079 //______________________________________________________________________________
00080 void
00081 FWPFEcalClusterRPZProxyBuilder::build( const reco::PFCluster &iData, unsigned int iIndex, TEveElement &oItemHolder, const FWViewContext *vc )
00082 {
00083    PFLayer::Layer layer = iData.layer();
00084    const FWEventItem::ModelInfo &info = item()->modelInfo( iIndex );
00085    if( info.displayProperties().isVisible() )
00086    {
00087       if( layer < 0 )
00088          sharedBuild( iData, iIndex, oItemHolder, vc, m_pfUtils->getCaloR1() );
00089       else
00090          sharedBuild( iData, iIndex, oItemHolder, vc, m_pfUtils->getCaloR2() );
00091    }
00092 }
00093 
00094 //______________________________________________________________________________
00095 void
00096 FWPFHcalClusterRPZProxyBuilder::build( const reco::PFCluster &iData, unsigned int iIndex, TEveElement &oItemHolder, const FWViewContext *vc )
00097 {
00098    const FWEventItem::ModelInfo &info = item()->modelInfo( iIndex );
00099    if( info.displayProperties().isVisible() )
00100       sharedBuild( iData, iIndex, oItemHolder, vc, m_pfUtils->getCaloR1() );
00101 }
00102 
00103 //______________________________________________________________________________
00104 REGISTER_FWPROXYBUILDER( FWPFClusterRPZProxyBuilder, reco::PFCluster, "PF Cluster", FWViewType::kRhoZBit );
00105 REGISTER_FWPROXYBUILDER( FWPFEcalClusterRPZProxyBuilder, reco::PFCluster, "PF Cluster", FWViewType::kRhoPhiPFBit );
00106 REGISTER_FWPROXYBUILDER( FWPFHcalClusterRPZProxyBuilder, reco::PFCluster, "PF Cluster", FWViewType::kRhoPhiBit );