Skip to content

Commit

Permalink
Merge pull request #4681 from alja/pixel-cl-new
Browse files Browse the repository at this point in the history
Improvements in SiPixelClusterProxyBuilder
  • Loading branch information
ktf committed Jul 17, 2014
2 parents 0a89151 + aa435ef commit 8145141
Showing 1 changed file with 94 additions and 39 deletions.
133 changes: 94 additions & 39 deletions Fireworks/Tracks/plugins/FWSiPixelClusterProxyBuilder.cc
Expand Up @@ -10,7 +10,9 @@
//

#include "TEvePointSet.h"

#include "TEveStraightLineSet.h"
#include "TEveCompound.h"
#include "TEveBox.h"
#include "Fireworks/Core/interface/FWProxyBuilderBase.h"
#include "Fireworks/Core/interface/FWEventItem.h"
#include "Fireworks/Core/interface/FWGeometry.h"
Expand Down Expand Up @@ -40,53 +42,106 @@ class FWSiPixelClusterProxyBuilder : public FWProxyBuilderBase
void
FWSiPixelClusterProxyBuilder::build( const FWEventItem* iItem, TEveElementList* product , const FWViewContext* )
{
const SiPixelClusterCollectionNew* pixels = 0;
const SiPixelClusterCollectionNew* pixels = 0;

iItem->get( pixels );
iItem->get( pixels );

if( ! pixels )
{
fwLog( fwlog::kWarning ) << "failed get SiPixelDigis" << std::endl;
return;
}
if( ! pixels )
{
fwLog( fwlog::kWarning ) << "failed get SiPixelDigis" << std::endl;
return;
}

for( SiPixelClusterCollectionNew::const_iterator set = pixels->begin(), setEnd = pixels->end();
set != setEnd; ++set )
{
unsigned int id = set->detId();
for( SiPixelClusterCollectionNew::const_iterator set = pixels->begin(), setEnd = pixels->end();
set != setEnd; ++set )
{
unsigned int id = set->detId();

const FWGeometry *geom = iItem->getGeom();
const float* pars = geom->getParameters( id );
const FWGeometry *geom = iItem->getGeom();
const float* pars = geom->getParameters( id );

const edmNew::DetSet<SiPixelCluster> & clusters = *set;

for( edmNew::DetSet<SiPixelCluster>::const_iterator itc = clusters.begin(), edc = clusters.end();
itc != edc; ++itc )
{
TEvePointSet* pointSet = new TEvePointSet;
setupAddElement( pointSet, product );
const edmNew::DetSet<SiPixelCluster> & clusters = *set;

if( ! geom->contains( id ))
for( edmNew::DetSet<SiPixelCluster>::const_iterator itc = clusters.begin(), edc = clusters.end();
itc != edc; ++itc )
{
fwLog( fwlog::kWarning )
<< "failed get geometry of SiPixelCluster with detid: "
<< id << std::endl;
continue;
}
TEveElement* itemHolder = createCompound();
product->AddElement(itemHolder);

float localPoint[3] =
{
fireworks::pixelLocalX(( *itc ).minPixelRow(), ( int )pars[0] ),
fireworks::pixelLocalY(( *itc ).minPixelCol(), ( int )pars[1] ),
0.0
};

float globalPoint[3];
geom->localToGlobal( id, localPoint, globalPoint );
TEvePointSet* pointSet = new TEvePointSet;

if( ! geom->contains( id ))
{
fwLog( fwlog::kWarning )
<< "failed get geometry of SiPixelCluster with detid: "
<< id << std::endl;
continue;
}

float localPoint[3] =
{
fireworks::pixelLocalX(( *itc ).minPixelRow(), ( int )pars[0] ),
fireworks::pixelLocalY(( *itc ).minPixelCol(), ( int )pars[1] ),
0.0
};

float globalPoint[3];
geom->localToGlobal( id, localPoint, globalPoint );

pointSet->SetNextPoint( globalPoint[0], globalPoint[1], globalPoint[2] );

setupAddElement( pointSet, itemHolder );

TEveStraightLineSet* ls = new TEveStraightLineSet();
for(int j=0;j< (*itc).size(); j++ )
{

// float adc= (*itc).pixel(j).adc*0.03/5000.;
float adc= 0.025;
float offsetx[4] = {-0.4,-0.4,+0.4,+0.4};
float offsety[4] = {-0.4,+0.4,+0.4,-0.4};
// float vert[24];

std::vector<TEveVector> boxCorners;
for(int of=0;of<8;of++) {
float lp[3]= {
fireworks::pixelLocalX(
(*itc).pixel(j).x+offsetx[of%4],( int )pars[0]) ,
fireworks::pixelLocalY(
(*itc).pixel(j).y+offsety[of%4], ( int )pars[1] ),
(of<4)?(0.0f):(adc)
};

TEveVector p;
geom->localToGlobal( id,lp, p.Arr() );

boxCorners.push_back(p);

}

// bottom
ls->AddLine(boxCorners[0], boxCorners[1]);
ls->AddLine(boxCorners[1], boxCorners[2]);
ls->AddLine(boxCorners[2], boxCorners[3]);
ls->AddLine(boxCorners[3], boxCorners[0]);
// top
ls->AddLine(boxCorners[4], boxCorners[5]);
ls->AddLine(boxCorners[5], boxCorners[6]);
ls->AddLine(boxCorners[6], boxCorners[7]);
ls->AddLine(boxCorners[7], boxCorners[4]);
// sides
ls->AddLine(boxCorners[0], boxCorners[4]);
ls->AddLine(boxCorners[1], boxCorners[5]);
ls->AddLine(boxCorners[2], boxCorners[6]);
ls->AddLine(boxCorners[3], boxCorners[7]);


}

setupAddElement( ls, itemHolder );

pointSet->SetNextPoint( globalPoint[0], globalPoint[1], globalPoint[2] );
}
}
}
}
}

REGISTER_FWPROXYBUILDER( FWSiPixelClusterProxyBuilder, SiPixelClusterCollectionNew, "SiPixelCluster", FWViewType::kAll3DBits | FWViewType::kAllRPZBits );

0 comments on commit 8145141

Please sign in to comment.