CMS 3D CMS Logo

Public Member Functions | Private Member Functions

FWPFTrackRPZProxyBuilder Class Reference

#include <FWPFTrackRPZProxyBuilder.h>

Inheritance diagram for FWPFTrackRPZProxyBuilder:
FWSimpleProxyBuilderTemplate< reco::Track > FWSimpleProxyBuilder FWProxyBuilderBase

List of all members.

Public Member Functions

 FWPFTrackRPZProxyBuilder ()
 REGISTER_PROXYBUILDER_METHODS ()
virtual ~FWPFTrackRPZProxyBuilder ()

Private Member Functions

virtual void build (const reco::Track &iData, unsigned int iIndex, TEveElement &oItemHolder, const FWViewContext *vc)
 FWPFTrackRPZProxyBuilder (const FWPFTrackRPZProxyBuilder &)
const FWPFTrackRPZProxyBuilderoperator= (const FWPFTrackRPZProxyBuilder &)

Detailed Description

Definition at line 25 of file FWPFTrackRPZProxyBuilder.h.


Constructor & Destructor Documentation

FWPFTrackRPZProxyBuilder::FWPFTrackRPZProxyBuilder ( ) [inline]

Definition at line 29 of file FWPFTrackRPZProxyBuilder.h.

{}
virtual FWPFTrackRPZProxyBuilder::~FWPFTrackRPZProxyBuilder ( ) [inline, virtual]

Definition at line 30 of file FWPFTrackRPZProxyBuilder.h.

{}
FWPFTrackRPZProxyBuilder::FWPFTrackRPZProxyBuilder ( const FWPFTrackRPZProxyBuilder ) [private]

Member Function Documentation

void FWPFTrackRPZProxyBuilder::build ( const reco::Track iData,
unsigned int  iIndex,
TEveElement &  oItemHolder,
const FWViewContext  
) [private, virtual]

iIndex is the index where iData is found in the container from which it came iItemHolder is the object to which you add your own objects which inherit from TEveElement

Reimplemented from FWSimpleProxyBuilderTemplate< reco::Track >.

Definition at line 5 of file FWPFTrackRPZProxyBuilder.cc.

References a, b, trackerHits::c, FWPFTrackUtils::getCollisionMarkers(), i, prof2calltree::last, FWProxyBuilderBase::setupAddElement(), FWPFTrackUtils::setupTrack(), detailsBasic3DVector::y, and z.

{
   FWPFTrackUtils *utils = new FWPFTrackUtils();
   TEveTrack *trk = utils->setupTrack( iData );
   TEvePointSet *ps = utils->getCollisionMarkers( trk );
   TEvePointSet *rzps = new TEvePointSet();
   setupAddElement( trk, &oItemHolder );

   Float_t *trackPoints = trk->GetP();
   unsigned int last = ( trk->GetN() - 1 ) * 3;
   float y = trackPoints[last+1];
   float z = trackPoints[last+2];

   // Reposition any points that have been translated in RhoZ
   for( signed int i = 0; i < ps->GetN(); ++i )
   {
      // WORKS BUT DOESN'T HANDLE ALL SCENARIOS.....
      Float_t a,b,c;
      ps->GetPoint( i, a, b, c );

      if( y < 0 && b > 0 )
         b *= -1;
      else if( y > 0 && b < 0 )
         b *= -1;

      if( z < 0 && c > 0 )
         c *= -1;
      else if( z > 0 && c < 0 )
         c *= -1;

      rzps->SetNextPoint( a, b, c );
   }

   if( rzps->GetN() != 0 )
      setupAddElement( rzps, &oItemHolder );
   else
      delete rzps;

   delete ps;
   delete utils;
}
const FWPFTrackRPZProxyBuilder& FWPFTrackRPZProxyBuilder::operator= ( const FWPFTrackRPZProxyBuilder ) [private]
FWPFTrackRPZProxyBuilder::REGISTER_PROXYBUILDER_METHODS ( )