File indexing completed on 2024-04-06 12:28:03
0001 #ifndef TESTHITS_H
0002 #define TESTHITS_H
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 #include <memory>
0022 #include <vector>
0023 #include <string>
0024 #include "FWCore/Framework/interface/Frameworkfwd.h"
0025 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0026 #include "FWCore/Framework/interface/Event.h"
0027 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0028 #include "FWCore/Utilities/interface/InputTag.h"
0029 #include "SimTracker/TrackerHitAssociation/interface/TrackerHitAssociator.h"
0030 #include "MagneticField/Engine/interface/MagneticField.h"
0031 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
0032 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
0033 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
0034 #include "TrackingTools/Records/interface/TrackingComponentsRecord.h"
0035 #include "TrackingTools/Records/interface/TransientRecHitRecord.h"
0036 #include "Geometry/CommonDetUnit/interface/TrackingGeometry.h"
0037 #include "DataFormats/TrackCandidate/interface/TrackCandidateCollection.h"
0038 #include "TrackingTools/GeomPropagators/interface/Propagator.h"
0039 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHitBuilder.h"
0040 #include "RecoTracker/TransientTrackingRecHit/interface/TkTransientTrackingRecHitBuilder.h"
0041 #include "TrackingTools/PatternTools/interface/MeasurementExtractor.h"
0042 #include "TrackingTools/TrackFitters/interface/KFTrajectoryFitter.h"
0043 #include "Geometry/TrackerGeometryBuilder/interface/StripGeomDetUnit.h"
0044 #include <sstream>
0045 #include <TFile.h>
0046 #include <TH1F.h>
0047 #include <TH2F.h>
0048
0049 class TestHits : public edm::one::EDAnalyzer<edm::one::WatchRuns> {
0050 public:
0051 explicit TestHits(const edm::ParameterSet&);
0052 ~TestHits() override;
0053
0054 private:
0055 void beginRun(edm::Run const& run, const edm::EventSetup&) override;
0056 void analyze(const edm::Event&, const edm::EventSetup&) override;
0057 void endRun(edm::Run const& run, const edm::EventSetup&) override {}
0058 void endJob() override;
0059
0060 std::pair<LocalPoint, LocalVector> projectHit(const PSimHit&, const StripGeomDetUnit*, const BoundPlane&);
0061
0062 TrackerHitAssociator::Config trackerHitAssociatorConfig_;
0063
0064 double mineta, maxeta;
0065
0066 std::string propagatorName;
0067 std::string builderName;
0068 std::string srcName;
0069 std::string fname;
0070
0071 edm::ESHandle<TrackerGeometry> theG;
0072 edm::ESHandle<MagneticField> theMF;
0073 edm::ESHandle<Propagator> thePropagator;
0074 edm::ESHandle<TransientTrackingRecHitBuilder> theBuilder;
0075 edm::ESHandle<TrajectoryFitter> fit;
0076 edm::Handle<TrackCandidateCollection> theTCCollection;
0077
0078 edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> theGToken;
0079 edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> theMFToken;
0080 edm::ESGetToken<Propagator, TrackingComponentsRecord> thePropagatorToken;
0081 edm::ESGetToken<TransientTrackingRecHitBuilder, TransientRecHitRecord> theBuilderToken;
0082 edm::ESGetToken<TrajectoryFitter, TrajectoryFitter::Record> fitToken;
0083 edm::EDGetTokenT<TrackCandidateCollection> theTCCollectionToken;
0084 edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> tTopoToken;
0085
0086 TFile* file;
0087 std::stringstream title;
0088 std::map<std::string, TH1F*> hPullGP_X_ts;
0089 std::map<std::string, TH1F*> hPullGP_Y_ts;
0090 std::map<std::string, TH1F*> hPullGP_Z_ts;
0091 std::map<std::string, TH1F*> hPullGM_X_ts;
0092 std::map<std::string, TH1F*> hPullGM_Y_ts;
0093 std::map<std::string, TH1F*> hPullGM_Z_ts;
0094 std::map<std::string, TH1F*> hPullGP_X_rs;
0095 std::map<std::string, TH1F*> hPullGP_Y_rs;
0096 std::map<std::string, TH1F*> hPullGP_Z_rs;
0097 std::map<std::string, TH1F*> hPullGP_X_tr;
0098 std::map<std::string, TH1F*> hPullGP_Y_tr;
0099 std::map<std::string, TH1F*> hPullGP_Z_tr;
0100 std::map<std::string, TH1F*> hChi2Increment;
0101 TH1F* hTotChi2Increment;
0102 TH2F *hProcess_vs_Chi2, *hClsize_vs_Chi2;
0103
0104 std::map<std::string, TH1F*> hPullGP_X_ts_mono;
0105 std::map<std::string, TH1F*> hPullGP_Y_ts_mono;
0106 std::map<std::string, TH1F*> hPullGP_Z_ts_mono;
0107 std::map<std::string, TH1F*> hPullGM_X_ts_mono;
0108 std::map<std::string, TH1F*> hPullGM_Y_ts_mono;
0109 std::map<std::string, TH1F*> hPullGM_Z_ts_mono;
0110 std::map<std::string, TH1F*> hPullGP_X_rs_mono;
0111 std::map<std::string, TH1F*> hPullGP_Y_rs_mono;
0112 std::map<std::string, TH1F*> hPullGP_Z_rs_mono;
0113 std::map<std::string, TH1F*> hPullGP_X_tr_mono;
0114 std::map<std::string, TH1F*> hPullGP_Y_tr_mono;
0115 std::map<std::string, TH1F*> hPullGP_Z_tr_mono;
0116
0117 std::map<std::string, TH1F*> hPullGP_X_ts_stereo;
0118 std::map<std::string, TH1F*> hPullGP_Y_ts_stereo;
0119 std::map<std::string, TH1F*> hPullGP_Z_ts_stereo;
0120 std::map<std::string, TH1F*> hPullGM_X_ts_stereo;
0121 std::map<std::string, TH1F*> hPullGM_Y_ts_stereo;
0122 std::map<std::string, TH1F*> hPullGM_Z_ts_stereo;
0123 std::map<std::string, TH1F*> hPullGP_X_rs_stereo;
0124 std::map<std::string, TH1F*> hPullGP_Y_rs_stereo;
0125 std::map<std::string, TH1F*> hPullGP_Z_rs_stereo;
0126 std::map<std::string, TH1F*> hPullGP_X_tr_stereo;
0127 std::map<std::string, TH1F*> hPullGP_Y_tr_stereo;
0128 std::map<std::string, TH1F*> hPullGP_Z_tr_stereo;
0129 };
0130
0131 #endif