File indexing completed on 2023-03-17 10:44:36
0001 #ifndef CalibTracker_SiStripHitResolution_HitResol_H
0002 #define CalibTracker_SiStripHitResolution_HitResol_H
0003
0004
0005 #include <vector>
0006
0007
0008 #include "CalibFormats/SiStripObjects/interface/SiStripQuality.h"
0009 #include "CalibTracker/Records/interface/SiStripQualityRcd.h"
0010 #include "DataFormats/Common/interface/Handle.h"
0011 #include "DataFormats/Scalers/interface/LumiScalers.h"
0012 #include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h"
0013 #include "FWCore/Framework/interface/Event.h"
0014 #include "FWCore/Framework/interface/EventSetup.h"
0015 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0016 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0017 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
0018 #include "MagneticField/Engine/interface/MagneticField.h"
0019 #include "RecoLocalTracker/ClusterParameterEstimator/interface/StripClusterParameterEstimator.h"
0020 #include "RecoTracker/Record/interface/CkfComponentsRecord.h"
0021 #include "TrackingTools/GeomPropagators/interface/AnalyticalPropagator.h"
0022 #include "TrackingTools/PatternTools/interface/TrajTrackAssociation.h"
0023 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHitBuilder.h"
0024
0025
0026 #include "TTree.h"
0027 #include "TROOT.h"
0028 #include "TH1F.h"
0029 #include "TH2F.h"
0030
0031 class TrackerTopology;
0032
0033 class HitResol : public edm::one::EDAnalyzer<edm::one::SharedResources> {
0034 public:
0035 explicit HitResol(const edm::ParameterSet& conf);
0036 ~HitResol() override = default;
0037 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0038 double checkConsistency(const StripClusterParameterEstimator::LocalValues& parameters, double xx, double xerr);
0039 void getSimHitRes(const GeomDetUnit* det,
0040 const LocalVector& trackdirection,
0041 const TrackingRecHit& recHit,
0042 float& trackWidth,
0043 float* pitch,
0044 LocalVector& drift);
0045 double getSimpleRes(const TrajectoryMeasurement* traj1);
0046 bool getPairParameters(const MagneticField* magField_,
0047 AnalyticalPropagator& propagator,
0048 const TrajectoryMeasurement* traj1,
0049 const TrajectoryMeasurement* traj2,
0050 float& pairPath,
0051 float& hitDX,
0052 float& trackDX,
0053 float& trackDXE,
0054 float& trackParamX,
0055 float& trackParamY,
0056 float& trackParamDXDZ,
0057 float& trackParamDYDZ,
0058 float& trackParamXE,
0059 float& trackParamYE,
0060 float& trackParamDXDZE,
0061 float& trackParamDYDZE);
0062 typedef std::vector<Trajectory> TrajectoryCollection;
0063
0064 private:
0065 void beginJob() override;
0066 void endJob() override;
0067 void analyze(const edm::Event& e, const edm::EventSetup& c) override;
0068
0069
0070
0071
0072 const edm::EDGetTokenT<LumiScalersCollection> scalerToken_;
0073 const edm::EDGetTokenT<reco::TrackCollection> combinatorialTracks_token_;
0074 const edm::EDGetTokenT<std::vector<Trajectory> > tjToken_;
0075 const edm::EDGetTokenT<reco::TrackCollection> tkToken_;
0076
0077
0078 const edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> topoToken_;
0079 const edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> geomToken_;
0080 const edm::ESGetToken<StripClusterParameterEstimator, TkStripCPERecord> cpeToken_;
0081 const edm::ESGetToken<SiStripQuality, SiStripQualityRcd> siStripQualityToken_;
0082 const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> magFieldToken_;
0083
0084
0085 const bool addLumi_;
0086 const bool DEBUG_;
0087 const bool cutOnTracks_;
0088 const double momentumCut_;
0089 const int compSettings_;
0090 const unsigned int usePairsOnly_;
0091 const unsigned int layers_;
0092 const unsigned int trackMultiplicityCut_;
0093
0094
0095 TTree* reso;
0096 TTree* treso;
0097 std::map<TString, TH2F*> histos2d_;
0098
0099
0100 static constexpr float cmToUm = 10000.f;
0101
0102
0103 int events, EventTrackCKF;
0104
0105
0106
0107 float mymom;
0108 int numHits;
0109 int NumberOf_tracks;
0110 float ProbTrackChi2;
0111 float StripCPE1_smp_pos_error;
0112 float StripCPE2_smp_pos_error;
0113 float StripErrorSquared1;
0114 float StripErrorSquared2;
0115 float uerr2;
0116 float uerr2_2;
0117 unsigned int clusterWidth;
0118 unsigned int clusterWidth_2;
0119 unsigned int clusterCharge;
0120 unsigned int clusterCharge_2;
0121 unsigned int iidd1;
0122 unsigned int iidd2;
0123 unsigned int pairsOnly;
0124 float pairPath;
0125 float mypitch1;
0126 float mypitch2;
0127 float expWidth;
0128 float expWidth_2;
0129 float driftAlpha;
0130 float driftAlpha_2;
0131 float thickness;
0132 float thickness_2;
0133 float trackWidth;
0134 float trackWidth_2;
0135 float atEdge;
0136 float atEdge_2;
0137 float simpleRes;
0138 float hitDX;
0139 float trackDX;
0140 float trackDXE;
0141 float trackParamX;
0142 float trackParamY;
0143 float trackParamXE;
0144 float trackParamYE;
0145 float trackParamDXDZ;
0146 float trackParamDYDZ;
0147 float trackParamDXDZE;
0148 float trackParamDYDZE;
0149 float track_momentum;
0150 float track_pt;
0151 float track_eta;
0152 float track_width;
0153 float track_phi;
0154 float track_trackChi2;
0155 float N1;
0156 float N2;
0157 float N1uProj;
0158 float N2uProj;
0159 int Nstrips;
0160 int Nstrips_2;
0161 };
0162
0163 #endif