File indexing completed on 2023-10-25 10:02:14
0001 #include "RecoTracker/CkfPattern/interface/BaseCkfTrajectoryBuilder.h"
0002
0003 #include "RecoTracker/MeasurementDet/interface/MeasurementTracker.h"
0004 #include "RecoTracker/TkDetLayers/interface/GeometricSearchTracker.h"
0005 #include "RecoTracker/TransientTrackingRecHit/interface/TkTransientTrackingRecHitBuilder.h"
0006 #include "TrackingTools/TrajectoryFiltering/interface/TrajectoryFilter.h"
0007
0008 #include "TrackingTools/MeasurementDet/interface/LayerMeasurements.h"
0009 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateTransform.h"
0010 #include "TrackingTools/GeomPropagators/interface/Propagator.h"
0011 #include "TrackingTools/PatternTools/interface/TrajectoryStateUpdator.h"
0012 #include "TrackingTools/TrajectoryState/interface/BasicSingleTrajectoryState.h"
0013 #include "TrackingTools/KalmanUpdators/interface/Chi2MeasurementEstimatorBase.h"
0014
0015 #include "DataFormats/TrajectorySeed/interface/TrajectorySeed.h"
0016 #include "TrackingTools/PatternTools/interface/TempTrajectory.h"
0017 #include "TrackingTools/PatternTools/interface/Trajectory.h"
0018
0019 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0020
0021 std::string PrintoutHelper::dumpMeasurements(const std::vector<TrajectoryMeasurement>& v) {
0022 std::stringstream buffer;
0023 buffer << v.size() << " total measurements\n";
0024 std::vector<TrajectoryMeasurement>::const_iterator it = v.begin();
0025 for (; it != v.end(); ++it) {
0026 buffer << dumpMeasurement(*it);
0027 buffer << "\n";
0028 }
0029 return buffer.str();
0030 }
0031 std::string PrintoutHelper::dumpMeasurements(const cmsutils::bqueue<TrajectoryMeasurement>& v) {
0032 std::stringstream buffer;
0033 buffer << v.size() << " total measurements\n";
0034 cmsutils::bqueue<TrajectoryMeasurement>::const_iterator it = v.rbegin();
0035 for (; it != v.rend(); --it) {
0036 buffer << dumpMeasurement(*it);
0037 buffer << "\n";
0038 }
0039 return buffer.str();
0040 }
0041 std::string PrintoutHelper::dumpMeasurement(const TrajectoryMeasurement& tm) {
0042 std::stringstream buffer;
0043 buffer << "layer pointer: " << tm.layer() << "\n"
0044 << "estimate: " << tm.estimate() << "\n";
0045 if (tm.updatedState().isValid())
0046 buffer << "updated state: \n"
0047 << "x: " << tm.updatedState().globalPosition() << "\n"
0048 << "p: " << tm.updatedState().globalMomentum() << "\n";
0049 else if (tm.forwardPredictedState().isValid())
0050 buffer << "forward predicted state: \n"
0051 << "x: " << tm.forwardPredictedState().globalPosition() << "\n"
0052 << "p: " << tm.forwardPredictedState().globalMomentum() << "\n";
0053 else if (tm.predictedState().isValid())
0054 buffer << "predicted state: \n"
0055 << "x: " << tm.predictedState().globalPosition() << "\n"
0056 << "p: " << tm.predictedState().globalMomentum() << "\n";
0057 else
0058 buffer << "no valid state\n";
0059 buffer << "detId: " << tm.recHit()->geographicalId().rawId();
0060 if (tm.recHit()->isValid()) {
0061 buffer << "\n hit global x: " << tm.recHit()->globalPosition()
0062 << "\n hit global error: " << tm.recHit()->globalPositionError().matrix()
0063 << "\n hit local x:" << tm.recHit()->localPosition() << "\n hit local error"
0064 << tm.recHit()->localPositionError();
0065 } else
0066 buffer << "\n (-,-,-)";
0067 buffer << "\n fwdPred " << tm.forwardPredictedState().isValid() << "\n bwdPred "
0068 << tm.backwardPredictedState().isValid() << "\n upPred " << tm.updatedState().isValid();
0069
0070 return buffer.str();
0071 }
0072
0073 std::string PrintoutHelper::regressionTest(const TrackerGeometry& tracker, std::vector<Trajectory>& unsmoothedResult) {
0074 std::stringstream buffer;
0075
0076 buffer << "number of finalTrajectories: " << unsmoothedResult.size() << std::endl;
0077 for (std::vector<Trajectory>::const_iterator it = unsmoothedResult.begin(); it != unsmoothedResult.end(); it++) {
0078 if (it->lastMeasurement().updatedState().isValid()) {
0079 buffer << "candidate's n valid and invalid hit, chi2, pt, eta : " << it->foundHits() << " , " << it->lostHits()
0080 << " , " << it->chiSquared() << " , " << it->lastMeasurement().updatedState().globalMomentum().perp()
0081 << " , " << it->lastMeasurement().updatedState().globalMomentum().eta() << std::endl;
0082 } else if (it->lastMeasurement().predictedState().isValid()) {
0083 buffer << "candidate's n valid and invalid hit, chi2, pt, eta : " << it->foundHits() << " , " << it->lostHits()
0084 << " , " << it->chiSquared() << " , " << it->lastMeasurement().predictedState().globalMomentum().perp()
0085 << " , " << it->lastMeasurement().predictedState().globalMomentum().eta() << std::endl;
0086 } else
0087 buffer << "candidate with invalid last measurement state!" << std::endl;
0088 }
0089 buffer << "=================================================";
0090 buffer << "=========== Traj in details =====================\n";
0091 for (const auto& it : unsmoothedResult) {
0092 for (const auto& hit : it.measurements()) {
0093 buffer << "measurement : " << hit.recHit()->geographicalId().rawId() << std::endl;
0094 }
0095 buffer << "================\n";
0096 }
0097 return buffer.str();
0098 }