CMS 3D CMS Logo

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

#include <TrackerGeomBuilderFromGeometricDet.h>

Public Member Functions

TrackerGeometrybuild (const GeometricDet *gd)
 

Private Member Functions

void buildGeomDet (TrackerGeometry *)
 
void buildPixel (std::vector< const GeometricDet * > const &, TrackerGeometry *, GeomDetType::SubDetector det, const std::string &part)
 
PlaneBuilderFromGeometricDet::ResultType buildPlaneWithMaterial (const GeometricDet *gd, double scaleFactor=1.) const
 
void buildSilicon (std::vector< const GeometricDet * > const &, TrackerGeometry *, GeomDetType::SubDetector det, const std::string &part)
 

Private Attributes

GeomDetTypeIdToEnum theDetIdToEnum
 
std::map< std::string,
PixelGeomDetType * > 
thePixelDetTypeMap
 
std::map< std::string,
StripGeomDetType * > 
theStripDetTypeMap
 
GeomTopologyBuildertheTopologyBuilder
 

Detailed Description

Definition at line 17 of file TrackerGeomBuilderFromGeometricDet.h.

Member Function Documentation

TrackerGeometry * TrackerGeomBuilderFromGeometricDet::build ( const GeometricDet gd)

Definition at line 43 of file TrackerGeomBuilderFromGeometricDet.cc.

References buildGeomDet(), buildPixel(), buildSilicon(), GeometricDet::deepComponents(), i, theDetIdToEnum, thePixelDetTypeMap, theStripDetTypeMap, patCandidatesForDimuonsSequences_cff::tracker, and GeomDetTypeIdToEnum::type().

Referenced by SurveyInputTrackerFromDB::analyze(), CreateSurveyRcds::analyze(), SurveyMisalignmentInput::analyze(), TrackerSystematicMisalignments::analyze(), AlignmentMonitorAsAnalyzer::analyze(), TrackerGeometryIntoNtuples::analyze(), AlignmentProducer::createGeometries_(), TrackerGeometryCompare::createROOTGeometry(), TrackerDigiGeometryESModule::produce(), MisalignedTrackerESProducer::produce(), and LaserAlignment::produce().

43  {
44 
45  thePixelDetTypeMap.clear();
46  theStripDetTypeMap.clear();
47 
49  std::vector<const GeometricDet*> comp;
50  gd->deepComponents(comp);
51 
52  std::vector<const GeometricDet*> dets[6];
53  std::vector<const GeometricDet*> & pixB = dets[0]; pixB.reserve(comp.size());
54  std::vector<const GeometricDet*> & pixF = dets[1]; pixF.reserve(comp.size());
55  std::vector<const GeometricDet*> & tib = dets[2]; tib.reserve(comp.size());
56  std::vector<const GeometricDet*> & tid = dets[3]; tid.reserve(comp.size());
57  std::vector<const GeometricDet*> & tob = dets[4]; tob.reserve(comp.size());
58  std::vector<const GeometricDet*> & tec = dets[5]; tec.reserve(comp.size());
59 
60  for(u_int32_t i = 0;i<comp.size();i++)
61  dets[comp[i]->geographicalID().subdetId()-1].push_back(comp[i]);
62 
63  // this order is VERY IMPORTANT!!!!!
64  buildPixel(pixB,tracker,theDetIdToEnum.type(1), "barrel"); //"PixelBarrel"
65  buildPixel(pixF,tracker,theDetIdToEnum.type(2), "endcap"); //"PixelEndcap"
66  buildSilicon(tib,tracker,theDetIdToEnum.type(3), "barrel");// "TIB"
67  buildSilicon(tid,tracker,theDetIdToEnum.type(4), "endcap");//"TID"
68  buildSilicon(tob,tracker,theDetIdToEnum.type(5), "barrel");//"TOB"
69  buildSilicon(tec,tracker,theDetIdToEnum.type(6), "endcap");//"TEC"
70  buildGeomDet(tracker);//"GeomDet"
71 
72  verifyDUinTG(*tracker);
73 
74  return tracker;
75 }
int i
Definition: DBlmapReader.cc:9
void buildPixel(std::vector< const GeometricDet * > const &, TrackerGeometry *, GeomDetType::SubDetector det, const std::string &part)
std::map< std::string, StripGeomDetType * > theStripDetTypeMap
void buildSilicon(std::vector< const GeometricDet * > const &, TrackerGeometry *, GeomDetType::SubDetector det, const std::string &part)
std::map< std::string, PixelGeomDetType * > thePixelDetTypeMap
ConstGeometricDetContainer deepComponents() const
GeomDetType::SubDetector type(int) const
void TrackerGeomBuilderFromGeometricDet::buildGeomDet ( TrackerGeometry tracker)
private

Definition at line 145 of file TrackerGeomBuilderFromGeometricDet.cc.

References TrackerGeometry::addDet(), TrackerGeometry::addDetId(), TrackerGeometry::detUnitIds(), TrackerGeometry::detUnits(), edm::hlt::Exception, StripSubdetector::glued(), i, findQualityFiles::jj, StripSubdetector::partnerDetId(), PlaneBuilderForGluedDet::plane(), and StripSubdetector::stereo().

Referenced by build().

145  {
146  PlaneBuilderForGluedDet gluedplaneBuilder;
147  std::vector<GeomDetUnit*> const & gdu= tracker->detUnits();
148  std::vector<DetId> const & gduId = tracker->detUnitIds();
149 
150  for(u_int32_t i=0;i<gdu.size();i++){
151  StripSubdetector sidet( gduId[i].rawId());
152  tracker->addDet((GeomDet*) gdu[i]);
153  tracker->addDetId(gduId[i]);
154  if(sidet.glued()!=0&&sidet.stereo()==1){
155  int partner_pos=-1;
156  for(u_int32_t jj=0;jj<gduId.size();jj++){
157  if(sidet.partnerDetId()== gduId[jj]) {
158  partner_pos=jj;
159  break;
160  }
161  }
162  const GeomDetUnit* dus = gdu[i];
163  if(partner_pos==-1){
164  throw cms::Exception("Configuration") <<"No partner detector found \n"
165  <<"There is a problem on Tracker geometry configuration\n";
166  }
167  const GeomDetUnit* dum = gdu[partner_pos];
168  std::vector<const GeomDetUnit *> glued(2);
169  glued[0]=dum;
170  glued[1]=dus;
171  PlaneBuilderForGluedDet::ResultType plane = gluedplaneBuilder.plane(glued);
172  GluedGeomDet* gluedDet = new GluedGeomDet(&(*plane),dum,dus);
173  tracker->addDet((GeomDet*) gluedDet);
174  tracker->addDetId(DetId(sidet.glued()));
175  }
176  }
177 }
int i
Definition: DBlmapReader.cc:9
ResultType plane(const std::vector< const GeomDetUnit * > &dets) const
void addDetId(DetId p)
virtual const DetUnitContainer & detUnits() const
Returm a vector of all GeomDetUnit.
Definition: DetId.h:20
virtual const DetIdContainer & detUnitIds() const
Returm a vector of all GeomDetUnit DetIds.
void addDet(GeomDet *p)
void TrackerGeomBuilderFromGeometricDet::buildPixel ( std::vector< const GeometricDet * > const &  gdv,
TrackerGeometry tracker,
GeomDetType::SubDetector  det,
const std::string &  part 
)
private

Definition at line 77 of file TrackerGeomBuilderFromGeometricDet.cc.

References TrackerGeometry::addDetUnit(), TrackerGeometry::addDetUnitId(), TrackerGeometry::addType(), GeomTopologyBuilder::buildPixel(), buildPlaneWithMaterial(), i, TrackerGeometry::setEndsetDU(), TrackerGeometry::setOffsetDU(), lumiQTWidget::t, groupFilesInBlocks::temp, thePixelDetTypeMap, and theTopologyBuilder.

Referenced by build().

80  {
81  tracker->setOffsetDU(det);
82 
83  for(u_int32_t i=0; i<gdv.size(); i++){
84 
85  std::string const & detName = gdv[i]->name().fullname();
86  if (thePixelDetTypeMap.find(detName) == thePixelDetTypeMap.end()) {
87  std::auto_ptr<const Bounds> bounds(gdv[i]->bounds());
88  PixelTopology* t =
90  gdv[i]->pixROCRows(),
91  gdv[i]->pixROCCols(),
92  gdv[i]->pixROCx(),
93  gdv[i]->pixROCy(),
94  part);
95 
96  thePixelDetTypeMap[detName] = new PixelGeomDetType(t,detName,det);
97  tracker->addType(thePixelDetTypeMap[detName]);
98  }
99 
101  GeomDetUnit* temp = new PixelGeomDetUnit(&(*plane),thePixelDetTypeMap[detName],gdv[i]);
102 
103  tracker->addDetUnit(temp);
104  tracker->addDetUnitId(gdv[i]->geographicalID());
105  }
106  tracker->setEndsetDU(det);
107 
108 }
int i
Definition: DBlmapReader.cc:9
void setEndsetDU(SubDetector sid)
PixelTopology * buildPixel(const Bounds *, double, double, double, double, std::string)
void setOffsetDU(SubDetector sid)
PlaneBuilderFromGeometricDet::ResultType buildPlaneWithMaterial(const GeometricDet *gd, double scaleFactor=1.) const
std::map< std::string, PixelGeomDetType * > thePixelDetTypeMap
part
Definition: HCALResponse.h:21
void addDetUnitId(DetId p)
void addType(GeomDetType *p)
void addDetUnit(GeomDetUnit *p)
PlaneBuilderFromGeometricDet::ResultType TrackerGeomBuilderFromGeometricDet::buildPlaneWithMaterial ( const GeometricDet gd,
double  scaleFactor = 1. 
) const
private

Definition at line 230 of file TrackerGeomBuilderFromGeometricDet.cc.

References PlaneBuilderFromGeometricDet::plane(), GeometricDet::radLength(), pileupReCalc_HLTpaths::scale, and GeometricDet::xi().

Referenced by buildPixel(), and buildSilicon().

232 {
233  PlaneBuilderFromGeometricDet planeBuilder;
234  PlaneBuilderFromGeometricDet::ResultType plane = planeBuilder.plane(gd);
235  //
236  // set medium properties (if defined)
237  //
238  plane->setMediumProperties(MediumProperties(gd->radLength()*scale,gd->xi()*scale));
239 
240  return plane;
241 }
double radLength() const
Definition: GeometricDet.h:240
ResultType plane(const GeometricDet *gd) const
double xi() const
Definition: GeometricDet.h:244
void TrackerGeomBuilderFromGeometricDet::buildSilicon ( std::vector< const GeometricDet * > const &  gdv,
TrackerGeometry tracker,
GeomDetType::SubDetector  det,
const std::string &  part 
)
private

Definition at line 110 of file TrackerGeomBuilderFromGeometricDet.cc.

References TrackerGeometry::addDetUnit(), TrackerGeometry::addDetUnitId(), TrackerGeometry::addType(), buildPlaneWithMaterial(), GeomTopologyBuilder::buildStrip(), i, StripSubdetector::partnerDetId(), pileupReCalc_HLTpaths::scale, TrackerGeometry::setEndsetDU(), TrackerGeometry::setOffsetDU(), lumiQTWidget::t, groupFilesInBlocks::temp, theStripDetTypeMap, and theTopologyBuilder.

Referenced by build().

114 {
115  tracker->setOffsetDU(det);
116 
117  for(u_int32_t i=0;i<gdv.size();i++){
118 
119  std::string const & detName = gdv[i]->name().fullname();
120  if (theStripDetTypeMap.find(detName) == theStripDetTypeMap.end()) {
121  std::auto_ptr<const Bounds> bounds(gdv[i]->bounds());
122  StripTopology* t =
123  theTopologyBuilder->buildStrip(&*bounds,
124  gdv[i]->siliconAPVNum(),
125  part);
126  theStripDetTypeMap[detName] = new StripGeomDetType( t,detName,det,
127  gdv[i]->stereo());
128  tracker->addType(theStripDetTypeMap[detName]);
129  }
130 
131  StripSubdetector sidet( gdv[i]->geographicalID());
132  double scale = (sidet.partnerDetId()) ? 0.5 : 1.0 ;
133 
135  GeomDetUnit* temp = new StripGeomDetUnit(&(*plane), theStripDetTypeMap[detName],gdv[i]);
136 
137  tracker->addDetUnit(temp);
138  tracker->addDetUnitId(gdv[i]->geographicalID());
139  }
140  tracker->setEndsetDU(det);
141 
142 }
int i
Definition: DBlmapReader.cc:9
void setEndsetDU(SubDetector sid)
std::map< std::string, StripGeomDetType * > theStripDetTypeMap
void setOffsetDU(SubDetector sid)
PlaneBuilderFromGeometricDet::ResultType buildPlaneWithMaterial(const GeometricDet *gd, double scaleFactor=1.) const
StripTopology * buildStrip(const Bounds *, double, std::string)
part
Definition: HCALResponse.h:21
void addDetUnitId(DetId p)
void addType(GeomDetType *p)
void addDetUnit(GeomDetUnit *p)

Member Data Documentation

GeomDetTypeIdToEnum TrackerGeomBuilderFromGeometricDet::theDetIdToEnum
private

Definition at line 36 of file TrackerGeomBuilderFromGeometricDet.h.

Referenced by build().

std::map<std::string,PixelGeomDetType*> TrackerGeomBuilderFromGeometricDet::thePixelDetTypeMap
private

Definition at line 39 of file TrackerGeomBuilderFromGeometricDet.h.

Referenced by build(), and buildPixel().

std::map<std::string,StripGeomDetType*> TrackerGeomBuilderFromGeometricDet::theStripDetTypeMap
private

Definition at line 40 of file TrackerGeomBuilderFromGeometricDet.h.

Referenced by build(), and buildSilicon().

GeomTopologyBuilder* TrackerGeomBuilderFromGeometricDet::theTopologyBuilder
private

Definition at line 37 of file TrackerGeomBuilderFromGeometricDet.h.

Referenced by buildPixel(), and buildSilicon().