CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Private Member Functions
CmsTrackerDiskBuilder Class Reference

#include <CmsTrackerDiskBuilder.h>

Inheritance diagram for CmsTrackerDiskBuilder:
CmsTrackerLevelBuilder CmsTrackerAbstractConstruction

Private Member Functions

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

Additional Inherited Members

- Public Member Functions inherited from CmsTrackerLevelBuilder
virtual void build (DDFilteredView &, GeometricDet *, std::string)
 
virtual ~CmsTrackerLevelBuilder ()
 
- Protected Attributes inherited from CmsTrackerLevelBuilder
CmsTrackerStringToEnum theCmsTrackerStringToEnum
 

Detailed Description

Class which contructs PixelForward/Disk.

Definition at line 10 of file CmsTrackerDiskBuilder.h.

Member Function Documentation

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

Implements CmsTrackerLevelBuilder.

Definition at line 12 of file CmsTrackerDiskBuilder.cc.

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

12  {
13 
14  CmsTrackerPanelBuilder theCmsTrackerPanelBuilder;
16 
19  theCmsTrackerPanelBuilder.build(fv,subdet,s);
20  break;
21  default:
22  edm::LogError("CmsTrackerDiskBuilder")<<" ERROR - I was expecting a Panel, I got a "<<ExtractStringFromDDD::getString(s,&fv);
23  }
24  g->addComponent(subdet);
25 }
static std::string getString(std::string const &, DDFilteredView *)
void addComponent(GeometricDet *)
virtual void build(DDFilteredView &, GeometricDet *, std::string)
GeometricDet::GeometricEnumType type(std::string const &) const
CmsTrackerStringToEnum theCmsTrackerStringToEnum
void CmsTrackerDiskBuilder::sortNS ( DDFilteredView fv,
GeometricDet det 
)
privatevirtual

Reimplemented from CmsTrackerLevelBuilder.

Definition at line 27 of file CmsTrackerDiskBuilder.cc.

References GeometricDet::addComponents(), GeometricDet::clearComponents(), GeometricDet::components(), j, GeometricDet::panel, groupFilesInBlocks::temp, TrackerStablePhiSort(), and detailsBasic3DVector::z.

27  {
28 
30 
31  switch(det->components().front()->type()){
33  TrackerStablePhiSort(comp.begin(),comp.end(), ExtractPhi());
34  break;
35  default:
36  edm::LogError("CmsTrackerDiskBuilder")<<"ERROR - wrong SubDet to sort..... "<<det->components().front()->type();
37  }
38 
39  GeometricDet::GeometricDetContainer zminpanels; // Here z refers abs(z);
40  GeometricDet::GeometricDetContainer zmaxpanels; // So, zmin panel is always closer to ip.
41 
42  uint32_t totalblade = comp.size()/2;
43  if ( totalblade != 24 )
44  edm::LogError("CmsTrackerDiskBuilder")<<"ERROR, The Total Number of Blade in one disk is "<<totalblade;
45 
46  zminpanels.reserve(totalblade);
47  zmaxpanels.reserve(totalblade);
48  for( uint32_t j=0; j<totalblade ;j++)
49  {
50  if ( fabs( comp[2*j]->translation().z() ) > fabs( comp[ 2*j +1 ]->translation().z() ) ) {
51  zmaxpanels.push_back(comp[2*j] );
52  zminpanels.push_back(comp[2*j+1]);
53 
54  }else if ( fabs( comp[2*j]->translation().z() ) < fabs( comp[ 2*j +1 ]->translation().z() ) ) {
55  zmaxpanels.push_back(comp[2*j+1] );
56  zminpanels.push_back(comp[2*j]);
57 
58  }else {
59  edm::LogWarning("CmsTrackerDiskBuilder")<<"WARNING - The Z of both panels are equal! ";
60  }
61 
62  }
63 
64  for ( uint32_t fn=0; fn< zminpanels.size(); fn++) {
65  uint32_t blade = fn+1;
66  uint32_t panel = 1;
67  uint32_t temp = (blade<<2) | panel;
68  zminpanels[fn]->setGeographicalID(temp);
69  }
70 
71  for (uint32_t bn=0; bn< zmaxpanels.size(); bn++) {
72  uint32_t blade = bn+1;
73  uint32_t panel = 2;
74  uint32_t temp = (blade<<2) | panel;
75  zmaxpanels[bn]->setGeographicalID(temp);
76  }
77 
78  det->clearComponents();
79 
80  det->addComponents(zminpanels);
81  det->addComponents(zmaxpanels);
82 }
void clearComponents()
Definition: GeometricDet.h:89
double double double z
std::vector< GeometricDet const * > GeometricDetContainer
Definition: GeometricDet.h:36
void TrackerStablePhiSort(RandomAccessIterator begin, RandomAccessIterator end, const Extractor &extr)
int j
Definition: DBlmapReader.cc:9
GeometricDetContainer & components()
Definition: GeometricDet.h:163
void addComponents(GeometricDetContainer const &cont)