File indexing completed on 2023-03-17 11:22:50
0001 #include "Phase2OTtiltedBarrelLayer.h"
0002
0003 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0004
0005 #include "DetGroupMerger.h"
0006 #include "CompatibleDetToGroupAdder.h"
0007
0008 #include "TrackingTools/DetLayers/interface/DetLayerException.h"
0009 #include "TrackingTools/DetLayers/interface/MeasurementEstimator.h"
0010 #include "TrackingTools/DetLayers/interface/CylinderBuilderFromDet.h"
0011 #include "Phase2EndcapLayerBuilder.h"
0012
0013 using namespace std;
0014
0015 typedef GeometricSearchDet::DetWithState DetWithState;
0016
0017 Phase2OTtiltedBarrelLayer::Phase2OTtiltedBarrelLayer(std::vector<const Phase2OTBarrelRod*>& innerRods,
0018 std::vector<const Phase2OTBarrelRod*>& outerRods,
0019 vector<const Phase2EndcapRing*>& negRings,
0020 vector<const Phase2EndcapRing*>& posRings)
0021 : Phase2OTBarrelLayer(innerRods, outerRods),
0022 theNegativeRingsComps(negRings.begin(), negRings.end()),
0023 thePositiveRingsComps(posRings.begin(), posRings.end()) {
0024 std::vector<const GeometricSearchDet*> theComps;
0025 theComps.assign(Phase2OTBarrelLayer::components().begin(), Phase2OTBarrelLayer::components().end());
0026 theComps.insert(theComps.end(), negRings.begin(), negRings.end());
0027 theComps.insert(theComps.end(), posRings.begin(), posRings.end());
0028
0029 for (vector<const GeometricSearchDet*>::const_iterator it = theComps.begin(); it != theComps.end(); it++) {
0030 theBasicComps.insert(theBasicComps.end(), (**it).basicComponents().begin(), (**it).basicComponents().end());
0031 }
0032
0033 BarrelDetLayer::initialize();
0034 theCylinder = cylinder(theComps);
0035
0036 #ifdef EDM_ML_DEBUG
0037
0038 LogDebug("TkDetLayers") << "==== DEBUG Phase2OTtiltedBarrelLayer =====";
0039 LogTrace("TkDetLayers") << "Phase2OTtiltedBarrelLayer Cyl r,lenght: " << theCylinder->radius() << " , "
0040 << theCylinder->bounds().length();
0041
0042 for (vector<const GeometricSearchDet*>::const_iterator i = theNegativeRingsComps.begin();
0043 i != theNegativeRingsComps.end();
0044 i++) {
0045 LogTrace("TkDetLayers") << "negative rings in Phase2OT tilted barrel pos z,perp,eta,phi: " << (**i).position().z()
0046 << " , " << (**i).position().perp() << " , " << (**i).position().eta() << " , "
0047 << (**i).position().phi();
0048 }
0049
0050 for (vector<const GeometricSearchDet*>::const_iterator i = Phase2OTBarrelLayer::components().begin();
0051 i != Phase2OTBarrelLayer::components().end();
0052 i++) {
0053 LogTrace("TkDetLayers") << "rods in Phase2OT tilted barrel pos z,perp,eta,phi: " << (**i).position().z() << " , "
0054 << (**i).position().perp() << " , " << (**i).position().eta() << " , "
0055 << (**i).position().phi();
0056 }
0057
0058 for (vector<const GeometricSearchDet*>::const_iterator i = thePositiveRingsComps.begin();
0059 i != thePositiveRingsComps.end();
0060 i++) {
0061 LogTrace("TkDetLayers") << "positive rings in Phase2OT tilted barrel pos z,perp,eta,phi: " << (**i).position().z()
0062 << " , " << (**i).position().perp() << " , " << (**i).position().eta() << " , "
0063 << (**i).position().phi();
0064 }
0065 LogTrace("TkDetLayers") << "==== end DEBUG Phase2OTtiltedBarrelLayer =====";
0066
0067 #endif
0068 }
0069
0070 Phase2OTtiltedBarrelLayer::~Phase2OTtiltedBarrelLayer() {
0071 vector<const GeometricSearchDet*>::const_iterator i;
0072 for (i = theNegativeRingsComps.begin(); i != theNegativeRingsComps.end(); i++) {
0073 delete *i;
0074 }
0075 for (i = thePositiveRingsComps.begin(); i != thePositiveRingsComps.end(); i++) {
0076 delete *i;
0077 }
0078 }
0079
0080 void Phase2OTtiltedBarrelLayer::groupedCompatibleDetsV(const TrajectoryStateOnSurface& tsos,
0081 const Propagator& prop,
0082 const MeasurementEstimator& est,
0083 std::vector<DetGroup>& result) const {
0084 vector<DetGroup> closestResultRods;
0085 vector<DetGroup> closestResultNeg;
0086 vector<DetGroup> closestResultPos;
0087 Phase2OTBarrelLayer::groupedCompatibleDetsV(tsos, prop, est, closestResultRods);
0088 if (tsos.globalPosition().z() < 0) {
0089 for (auto& ring : theNegativeRingsComps) {
0090 ring->groupedCompatibleDetsV(tsos, prop, est, closestResultNeg);
0091 }
0092 } else {
0093 for (auto& ring : thePositiveRingsComps) {
0094 ring->groupedCompatibleDetsV(tsos, prop, est, closestResultPos);
0095 }
0096 }
0097 result.assign(closestResultRods.begin(), closestResultRods.end());
0098 result.insert(result.end(), closestResultPos.begin(), closestResultPos.end());
0099 result.insert(result.end(), closestResultNeg.begin(), closestResultNeg.end());
0100
0101 #ifdef EDM_ML_DEBUG
0102 LogDebug("TkDetLayers") << "==== output di Phase2OTtiltedBarrelLayer =====";
0103 if (closestResultRods.size() != 0) {
0104 for (auto gr : closestResultRods) {
0105 LogTrace("TkDetLayers") << "New Rod group:";
0106 for (auto dge : gr) {
0107 LogTrace("TkDetLayers") << "new det with geom det at r:" << dge.det()->position().perp()
0108 << " id:" << dge.det()->geographicalId().rawId()
0109 << " tsos at:" << dge.trajectoryState().globalPosition();
0110 }
0111 }
0112 }
0113 if (closestResultNeg.size() != 0) {
0114 for (auto gr : closestResultNeg) {
0115 LogTrace("TkDetLayers") << "New negative group:";
0116 for (auto dge : gr) {
0117 LogTrace("TkDetLayers") << "new det with geom det at r:" << dge.det()->position().perp()
0118 << " id:" << dge.det()->geographicalId().rawId()
0119 << " tsos at:" << dge.trajectoryState().globalPosition();
0120 }
0121 }
0122 }
0123 if (closestResultPos.size() != 0) {
0124 for (auto gr : closestResultPos) {
0125 LogTrace("TkDetLayers") << "New positive group:";
0126 for (auto dge : gr) {
0127 LogTrace("TkDetLayers") << "new det with geom det at r:" << dge.det()->position().perp()
0128 << " id:" << dge.det()->geographicalId().rawId()
0129 << " tsos at:" << dge.trajectoryState().globalPosition();
0130 }
0131 }
0132 }
0133
0134 if (result.size() != 0) {
0135 for (auto gr : result) {
0136 LogTrace("TkDetLayers") << "Total group:";
0137 for (auto dge : gr) {
0138 LogTrace("TkDetLayers") << "new det with geom det at r:" << dge.det()->position().perp()
0139 << " id:" << dge.det()->geographicalId().rawId()
0140 << " tsos at:" << dge.trajectoryState().globalPosition();
0141 }
0142 }
0143 } else {
0144 LogTrace("TkDetLayers") << "result size is zero";
0145 }
0146 #endif
0147 }