CMS 3D CMS Logo

SiPixelFedCablingMapBuilder.cc
Go to the documentation of this file.
1 #include <iostream>
2 
9 
10 #include <ostream>
13 
21 
25 
26 #include <bitset>
27 
29 
30 using namespace std;
31 using namespace sipixelobjects;
32 
34  const bool phase1)
35  : fileName_(fileName) //, phase1_(phase1) not used anymore
36 {}
37 
39  // Access geometry
40  edm::LogInfo("read tracker geometry...");
43  edm::LogInfo("tracker geometry read") << "There are: " << pDD->dets().size() << " detectors";
44 
45  // Test new TrackerGeometry features
46  //cout << "Test of TrackerGeometry::isThere";
47  //cout << " is there PixelBarrel: " << pDD->isThere(GeomDetEnumerators::PixelBarrel);
48  //cout << " is there PixelEndcap: " << pDD->isThere(GeomDetEnumerators::PixelEndcap);
49  //cout << " is there P1PXB: " << pDD->isThere(GeomDetEnumerators::P1PXB);
50  //cout << " is there P1PXEC: " << pDD->isThere(GeomDetEnumerators::P1PXEC);
51  //cout << endl;
52 
53  // switch on the phase1
55  phase1_ = true;
56  //cout<<" this is phase1 "<<endl;
57  edm::LogInfo("SiPixelFedCablingMapBuilder") << " pixel phase1 setup ";
58  } else {
59  phase1_ = false;
60  //cout<<" this is phase0 "<<endl;
61  edm::LogInfo("SiPixelFedCablingMapBuilder") << " pixel phase0 setup ";
62  }
63 
64  int MINFEDID = FEDNumbering::MINSiPixelFEDID;
65  int MAXFEDID = FEDNumbering::MAXSiPixelFEDID;
66  if (phase1_) {
67  // bpix 1200-1239, fpix 1240-1255
69  MAXFEDID = FEDNumbering::MAXSiPixeluTCAFEDID; // is actually 1349, might work
70  }
71  TRange<int> fedIds(MINFEDID, MAXFEDID);
72  edm::LogInfo("SiPixelFedCablingMapBuilder") << "pixel fedid range: " << fedIds;
73 
74  // in the constrcuctor init() is called which reads the ascii file and makes
75  // the map roc<->link
76  // what is this junk? Replace by fixed associator.
77  //edm::ESHandle<PixelToFEDAssociate> associator;
78  //setup.get<TrackerDigiGeometryRecord>().get(theAssociatorName,associator);
79  //PixelToFEDAssociate * associator = new PixelToLNKAssociateFromAscii("pixelToLNK.ascii",phase1_);
81 
82  const PixelToFEDAssociate& name2fed = *associator;
83 
84  string version = name2fed.version();
86  edm::LogInfo(" version ") << version << endl;
87 
88  // Access topology
90  setup.get<TrackerTopologyRcd>().get(tTopo);
91  const TrackerTopology* tt = tTopo.product();
92 
93  typedef TrackerGeometry::DetContainer::const_iterator ITG;
94  int npxdets = 0;
95 
96  typedef std::vector<pair<PixelModuleName*, uint32_t> > UNITS;
97  UNITS units;
98 
99  for (ITG it = pDD->dets().begin(); it != pDD->dets().end(); it++) {
100  const PixelGeomDetUnit* pxUnit = dynamic_cast<const PixelGeomDetUnit*>(*it);
101  if (pxUnit == nullptr)
102  continue;
103  npxdets++;
104  DetId geomid = pxUnit->geographicalId();
105  PixelModuleName* name = nullptr;
106  if (1 == geomid.subdetId()) { // bpix
107  name = new PixelBarrelName(geomid, tt, phase1_);
108  } else { // fpix
109  name = new PixelEndcapName(geomid, tt, phase1_);
110  }
111  edm::LogInfo(" NAME: ") << name->name();
112  //cout << " NAME: "<<name->name()<<" "<<geomid.rawId()<<
113  //" "<<myprint(pxUnit)<<endl;
114  units.push_back(std::make_pair(name, geomid.rawId()));
115  }
116 
117  // This produces a simple, unrealistic map, NOT USED ANYMORE
118  // if (theAssociatorName=="PixelToFEDAssociateFromAscii") {
119  // cout <<" HERE PixelToFEDAssociateFromAscii"<<endl;
120  // vector<FedSpec> fedSpecs(fedIds.max()-fedIds.min()+1);
121  // for (int id=fedIds.first; id<=fedIds.second; id++) {
122  // FedSpec fs={ id, vector<PixelModuleName* >(), vector<uint32_t>()};
123  // int idx = id - fedIds.min();
124  // fedSpecs[idx]= fs;
125  // }
126  // for (UNITS::iterator iu=units.begin(); iu != units.end(); iu++) {
127  // PixelModuleName* name = (*iu).first;
128  // uint32_t rawId = (*iu).second;
129  // int fedId = name2fed( *name);
130  // if ( fedIds.inside(fedId) ) {
131  // int idx = fedId - fedIds.min();
132  // fedSpecs[idx].rawids.push_back(rawId);
133  // fedSpecs[idx].names.push_back(name);
134  // } else edm::LogError("SiPixelFedCablingMapBuilder")
135  // <<"problem with numbering! "<<fedId<<" name: " << name->name();
136  // }
137  // edm::LogInfo("tracker geometry read")<<"There are: "<< npxdets<<" pixel detetors";
138  // // construct FEDs
139  // typedef vector<FedSpec>::iterator FI;
140  // for ( FI it = fedSpecs.begin(); it != fedSpecs.end(); it++) {
141  // int fedId = it->fedId;
142  // vector<PixelModuleName* > names = it->names;
143  // vector<uint32_t> units = it->rawids;
144  // if ( names.size() == 0) continue;
145  // PixelFEDCabling fed(fedId);
146  // bool barrel = it->names.front()->isBarrel();
147  // if (barrel) {
148  // PixelFEDCabling::Links links =
149  // PixelBarrelLinkMaker(&fed).links(names,units);
150  // fed.setLinks(links);
151  // result->addFed(fed);
152  // } else {
153  // PixelFEDCabling::Links links =
154  // PixelEndcapLinkMaker(&fed).links(names,units);
155  // fed.setLinks(links);
156  // result->addFed(fed);
157  // }
158  // }
159  // } else { // This is what is really used
160 
162  edm::LogInfo(" HERE PixelToLNKAssociateFromAscii");
163  for (UNITS::iterator iu = units.begin(); iu != units.end(); iu++) {
164  PixelModuleName* name = (*iu).first;
165  detectorRocId.module = name;
166  //for (int rocDetId=0; rocDetId<=16; rocDetId++) {
167  for (int rocDetId = 0; rocDetId < 16; rocDetId++) {
168  detectorRocId.rocDetId = rocDetId;
169  const PixelToFEDAssociate::CablingRocId* cablingRocId = name2fed(detectorRocId);
170  if (cablingRocId) {
171  sipixelobjects::PixelROC roc(iu->second, rocDetId, cablingRocId->rocLinkId);
172  result->addItem(cablingRocId->fedId, cablingRocId->linkId, roc);
173  edm::LogInfo(" ok ") << name->name() << " " << rocDetId << " " << cablingRocId->fedId << " "
174  << cablingRocId->linkId;
175  } else { // did it fail?
176  edm::LogInfo(" failed ") << name->name() << " " << rocDetId;
177  //cout<<" failed "<<name->name()<<" "<<rocDetId<<endl;
178  }
179  }
180  }
181  //}
182 
183  //clear names:
184  for (UNITS::iterator iu = units.begin(); iu != units.end(); iu++)
185  delete iu->first;
186 
187  return result;
188 }
190  std::ostringstream str;
191  const PixelTopology& tpl = pxUnit->specificTopology();
193  GlobalPoint global;
194 
195  local = LocalPoint(0, 0, 0);
196  global = (*pxUnit).toGlobal(local);
197  // phi measured from Y axis
198  float phi = 180 * atan2(global.x(), global.y()) / M_PI;
199  if (phi > 180.)
200  phi = phi - 360;
201  float r = global.perp();
202  float z = global.z();
203  str << " POSITION: "
204  << " r=" << r << " phi=" << phi << " z=" << z;
205  str << " (rows,coll:" << tpl.nrows() << "," << tpl.ncolumns() << ")";
206  str << endl;
207  local = LocalPoint(0, 0, 0);
208  str << local << "global: " << (*pxUnit).toGlobal(local) << endl;
209  local = LocalPoint(1, 0, 0);
210  str << local << "global: " << (*pxUnit).toGlobal(local) << endl;
211  local = LocalPoint(0, 1, 0);
212  str << local << "global: " << (*pxUnit).toGlobal(local) << endl;
213  local = LocalPoint(0, 0, 1);
214  str << local << "global: " << (*pxUnit).toGlobal(local) << endl;
215 
216  return str.str();
217 }
SiPixelFedCablingMapBuilder::phase1_
bool phase1_
Definition: SiPixelFedCablingMapBuilder.h:29
FEDNumbering.h
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
PixelModuleName
Definition: PixelModuleName.h:12
PixelBarrelName.h
MessageLogger.h
PixelToFEDAssociate::DetectorRocId::rocDetId
int rocDetId
Definition: PixelToFEDAssociate.h:22
TrackerGeometry.h
PixelTopology.h
SiPixelFedCablingMapBuilder::SiPixelFedCablingMapBuilder
SiPixelFedCablingMapBuilder(const std::string fileName, const bool phase1=false)
Definition: SiPixelFedCablingMapBuilder.cc:33
ESHandle.h
groupFilesInBlocks.tt
int tt
Definition: groupFilesInBlocks.py:144
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
SiPixelFedCablingMapBuilder::myprint
std::string myprint(const PixelGeomDetUnit *pxUnit)
Definition: SiPixelFedCablingMapBuilder.cc:189
PixelToFEDAssociate::CablingRocId::linkId
int linkId
Definition: PixelToFEDAssociate.h:17
TrackerTopology
Definition: TrackerTopology.h:16
PixelEndcapLinkMaker.h
PixelToFEDAssociate::DetectorRocId::module
const PixelModuleName * module
Definition: PixelToFEDAssociate.h:21
edm::LogInfo
Definition: MessageLogger.h:254
PixelBarrelName
Definition: PixelBarrelName.h:16
PixelBarrelLinkMaker.h
align::LocalPoint
Point3DBase< Scalar, LocalTag > LocalPoint
Definition: Definitions.h:30
MillePedeFileConverter_cfg.fileName
fileName
Definition: MillePedeFileConverter_cfg.py:32
SiPixelFedCablingMapBuilder::fileName_
std::string fileName_
Definition: SiPixelFedCablingMapBuilder.h:27
singleTopDQM_cfi.setup
setup
Definition: singleTopDQM_cfi.py:37
units
TString units(TString variable, Char_t axis)
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
PixelToFEDAssociate::version
virtual std::string version() const =0
version
DetId
Definition: DetId.h:17
PixelEndcapName
Definition: PixelEndcapName.h:16
SiPixelFedCablingMapBuilder::produce
SiPixelFedCablingTree * produce(const edm::EventSetup &setup)
Definition: SiPixelFedCablingMapBuilder.cc:38
PixelToFEDAssociate
Definition: PixelToFEDAssociate.h:13
FEDNumbering::MAXSiPixelFEDID
Definition: FEDNumbering.h:28
GeomDetEnumerators::P1PXEC
Definition: GeomDetEnumerators.h:26
TRange.h
sipixelobjects
Definition: CablingPathToDetUnit.h:4
SiPixelFedCablingMapBuilder.h
PixelGeomDetUnit
Definition: PixelGeomDetUnit.h:15
TrackerDigiGeometryRecord
Definition: TrackerDigiGeometryRecord.h:15
DDAxes::z
str
#define str(s)
Definition: TestProcessor.cc:48
edm::ESHandle< TrackerGeometry >
PixelTopology::ncolumns
virtual int ncolumns() const =0
ctfWithMaterialTrackMCMatch_cfi.associator
associator
Definition: ctfWithMaterialTrackMCMatch_cfi.py:7
Point3DBase< float, LocalTag >
PixelTopology
Definition: PixelTopology.h:10
TRange< int >
TrackerGeometry::isThere
bool isThere(GeomDetEnumerators::SubDetector subdet) const
Definition: TrackerGeometry.cc:219
DetId::subdetId
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum)
Definition: DetId.h:48
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
PixelToFEDAssociate::CablingRocId::fedId
int fedId
Definition: PixelToFEDAssociate.h:16
GeomDetEnumerators::P1PXB
Definition: GeomDetEnumerators.h:25
GeomDet::geographicalId
DetId geographicalId() const
The label of this GeomDet.
Definition: GeomDet.h:64
TrackerDigiGeometryRecord.h
PixelGeomDetUnit::specificTopology
virtual const PixelTopology & specificTopology() const
Returns a reference to the pixel proxy topology.
Definition: PixelGeomDetUnit.cc:17
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
M_PI
#define M_PI
Definition: BXVectorInputProducer.cc:50
edm::EventSetup
Definition: EventSetup.h:57
TrackerGeometry::dets
const DetContainer & dets() const override
Returm a vector of all GeomDet (including all GeomDetUnits)
Definition: TrackerGeometry.h:62
PixelToLNKAssociateFromAscii
Definition: PixelToLNKAssociateFromAscii.h:20
get
#define get
PixelToFEDAssociate::CablingRocId::rocLinkId
int rocLinkId
Definition: PixelToFEDAssociate.h:18
FEDNumbering::MAXSiPixeluTCAFEDID
Definition: FEDNumbering.h:106
FEDNumbering::MINSiPixelFEDID
Definition: FEDNumbering.h:27
alignCSCRings.r
r
Definition: alignCSCRings.py:93
PixelToLNKAssociateFromAscii.h
DDAxes::phi
FEDNumbering::MINSiPixeluTCAFEDID
Definition: FEDNumbering.h:105
GeomDet.h
sipixelobjects::PixelROC
Definition: PixelROC.h:23
std
Definition: JetResolutionObject.h:76
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
LocalPoint.h
PixelToFEDAssociate::CablingRocId
Definition: PixelToFEDAssociate.h:15
PixelGeomDetUnit.h
PixelMapPlotter.roc
roc
Definition: PixelMapPlotter.py:498
L1TStage2BMTF_cff.fedIds
fedIds
Definition: L1TStage2BMTF_cff.py:10
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
PixelToFEDAssociate.h
PixelToFEDAssociate::DetectorRocId
Definition: PixelToFEDAssociate.h:20
mps_fire.result
result
Definition: mps_fire.py:303
DTRecHitClients_cfi.local
local
Definition: DTRecHitClients_cfi.py:10
TrackerTopologyRcd
Definition: TrackerTopologyRcd.h:10
PixelTopology::nrows
virtual int nrows() const =0
BeamSplash_cfg.version
version
Definition: BeamSplash_cfg.py:45
SiPixelFedCablingTree
Definition: SiPixelFedCablingTree.h:13
GlobalPoint.h
PV3DBase::perp
T perp() const
Definition: PV3DBase.h:69
PixelFEDCabling.h
PixelEndcapName.h