CMS 3D CMS Logo

List of all members | Private Member Functions
CmsTrackerDiskBuilder Class Reference

#include <CmsTrackerDiskBuilder.h>

Inheritance diagram for CmsTrackerDiskBuilder:
CmsTrackerLevelBuilder CmsTrackerAbstractConstruction

Private Member Functions

void buildComponent (DDFilteredView &, GeometricDet *, std::string) override
 
void sortNS (DDFilteredView &, GeometricDet *) override
 

Additional Inherited Members

- Public Member Functions inherited from CmsTrackerLevelBuilder
void build (DDFilteredView &, GeometricDet *, std::string) override
 
 ~CmsTrackerLevelBuilder () override
 
- Public Member Functions inherited from CmsTrackerAbstractConstruction
virtual ~CmsTrackerAbstractConstruction ()=default
 
- Static Public Member Functions inherited from CmsTrackerLevelBuilder
static double getPhi (const GeometricDet *a)
 
static double getPhiGluedModule (const GeometricDet *a)
 
static double getPhiGluedModuleMirror (const GeometricDet *a)
 
static double getPhiMirror (const GeometricDet *a)
 
static double getPhiModule (const GeometricDet *a)
 
static double getPhiModuleMirror (const GeometricDet *a)
 
static bool isLessModZ (const GeometricDet *a, const GeometricDet *b)
 
static bool isLessR (const GeometricDet *a, const GeometricDet *b)
 
static bool isLessRModule (const GeometricDet *a, const GeometricDet *b)
 
static bool isLessZ (const GeometricDet *a, const GeometricDet *b)
 
static bool phiSortNP (const GeometricDet *a, const GeometricDet *b)
 
static bool subDetByType (const GeometricDet *a, const GeometricDet *b)
 
- Protected Attributes inherited from CmsTrackerLevelBuilder
CmsTrackerStringToEnum theCmsTrackerStringToEnum
 

Detailed Description

Class which contructs PixelForward/Disk.

Definition at line 11 of file CmsTrackerDiskBuilder.h.

Member Function Documentation

void CmsTrackerDiskBuilder::buildComponent ( DDFilteredView fv,
GeometricDet g,
std::string  s 
)
overrideprivatevirtual

Implements CmsTrackerLevelBuilder.

Definition at line 17 of file CmsTrackerDiskBuilder.cc.

References GeometricDet::addComponent(), CmsTrackerLevelBuilder::build(), ExtractStringFromDDD::getString(), and GeometricDet::panel.

18 {
19  CmsTrackerPanelBuilder theCmsTrackerPanelBuilder;
21 
23  {
25  theCmsTrackerPanelBuilder.build( fv, subdet, s );
26  break;
27  default:
28  edm::LogError( "CmsTrackerDiskBuilder" ) << " ERROR - I was expecting a Panel, I got a " << ExtractStringFromDDD::getString( s, &fv );
29  }
30  g->addComponent( subdet );
31 }
static std::string getString(std::string const &, DDFilteredView *)
void addComponent(GeometricDet *)
void build(DDFilteredView &, GeometricDet *, std::string) override
GeometricDet::GeometricEnumType type(std::string const &) const
CmsTrackerStringToEnum theCmsTrackerStringToEnum
void CmsTrackerDiskBuilder::sortNS ( DDFilteredView fv,
GeometricDet det 
)
overrideprivatevirtual

Reimplemented from CmsTrackerLevelBuilder.

Definition at line 34 of file CmsTrackerDiskBuilder.cc.

References funct::abs(), GeometricDet::addComponents(), GeometricDet::clearComponents(), AlCaHLTBitMon_QueryRunRegistry::comp, GeometricDet::component(), GeometricDet::components(), GeometricDet::panel, groupFilesInBlocks::temp, and TrackerStablePhiSort().

35 {
36 
37 
39 
40  switch( det->components().front()->type())
41  {
43  TrackerStablePhiSort( comp.begin(), comp.end(), std::function<double(const GeometricDet*)>(getPhi));
44  break;
45  default:
46  edm::LogError( "CmsTrackerDiskBuilder" ) << "ERROR - wrong SubDet to sort..... " << det->components().front()->type();
47  }
48 
49  GeometricDet::GeometricDetContainer zminpanels; // Here z refers abs(z);
50  GeometricDet::GeometricDetContainer zmaxpanels; // So, zmin panel is always closer to ip.
51 
52  uint32_t totalblade = comp.size()/2;
53  // std::cout << "pixel_disk " << pixel_disk << endl;
54 
55  zminpanels.reserve( totalblade );
56  zmaxpanels.reserve( totalblade );
57  for( uint32_t j = 0; j < totalblade; j++ )
58  {
59  if( std::abs( comp[2*j]->translation().z()) > std::abs( comp[ 2*j +1 ]->translation().z()))
60  {
61  zmaxpanels.emplace_back( det->component(2*j) );
62  zminpanels.emplace_back( det->component(2*j+1) );
63 
64  }
65  else if( std::abs( comp[2*j]->translation().z()) < std::abs( comp[ 2*j +1 ]->translation().z()))
66  {
67  zmaxpanels.emplace_back( det->component(2*j+1) );
68  zminpanels.emplace_back( det->component(2*j) );
69  }
70  else
71  {
72  edm::LogWarning( "CmsTrackerDiskBuilder" ) << "WARNING - The Z of both panels are equal! ";
73  }
74  }
75 
76  for( uint32_t fn = 0; fn < zminpanels.size(); fn++ )
77  {
78  uint32_t blade = fn + 1;
79  uint32_t panel = 1;
80  uint32_t temp = ( blade << 2 ) | panel;
81  zminpanels[fn]->setGeographicalID( temp );
82  }
83 
84  for( uint32_t bn = 0; bn < zmaxpanels.size(); bn++)
85  {
86  uint32_t blade = bn + 1;
87  uint32_t panel = 2;
88  uint32_t temp = ( blade << 2) | panel;
89  zmaxpanels[bn]->setGeographicalID( temp );
90  }
91 
92  det->clearComponents();
93  det->addComponents( zminpanels );
94  det->addComponents( zmaxpanels );
95 
96 }
static double getPhi(const GeometricDet *a)
void clearComponents()
Definition: GeometricDet.h:98
std::vector< GeometricDet * > GeometricDetContainer
Definition: GeometricDet.h:37
ConstGeometricDetContainer & components()
Definition: GeometricDet.h:176
void TrackerStablePhiSort(RandomAccessIterator begin, RandomAccessIterator end, const Extractor &extr)
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
GeometricDet * component(size_t index)
Definition: GeometricDet.h:114
std::vector< GeometricDet const * > ConstGeometricDetContainer
Definition: GeometricDet.h:36
void addComponents(GeometricDetContainer const &cont)