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
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
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 );