File indexing completed on 2024-04-06 11:59:35
0001 #ifndef CalibTracker_SiPixelLorentzAngle_SiPixelLorentzAngle_h
0002 #define CalibTracker_SiPixelLorentzAngle_SiPixelLorentzAngle_h
0003
0004 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0005 #include "FWCore/Framework/interface/Event.h"
0006 #include "DataFormats/Common/interface/Handle.h"
0007 #include "FWCore/Framework/interface/EventSetup.h"
0008 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
0009 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0010 #include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h"
0011 #include "DataFormats/TrajectorySeed/interface/TrajectorySeed.h"
0012 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h"
0013 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
0014 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
0015 #include "TrackingTools/MaterialEffects/interface/PropagatorWithMaterial.h"
0016 #include "TrackingTools/KalmanUpdators/interface/KFUpdator.h"
0017 #include "TrackingTools/KalmanUpdators/interface/Chi2MeasurementEstimator.h"
0018 #include "TrackingTools/TrackFitters/interface/KFTrajectoryFitter.h"
0019 #include "TrackingTools/TrackFitters/interface/KFTrajectorySmoother.h"
0020 #include "RecoTracker/TransientTrackingRecHit/interface/TkTransientTrackingRecHitBuilder.h"
0021 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateTransform.h"
0022 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0023
0024 #include "Geometry/CommonTopologies/interface/PixelTopology.h"
0025 #include "SimDataFormats/TrackingHit/interface/PSimHit.h"
0026 #include "SimDataFormats/TrackingHit/interface/PSimHitContainer.h"
0027 #include <Geometry/CommonDetUnit/interface/PixelGeomDetUnit.h>
0028 #include "SimTracker/TrackerHitAssociation/interface/TrackerHitAssociator.h"
0029 #include "TrackingTools/PatternTools/interface/TrajTrackAssociation.h"
0030 #include <TROOT.h>
0031 #include <TTree.h>
0032 #include <TFile.h>
0033 #include <TH1F.h>
0034 #include <TH2F.h>
0035 #include <TF1.h>
0036 #include "TROOT.h"
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048 static const int maxpix = 1000;
0049 struct Pixinfo {
0050 int npix;
0051 float row[maxpix];
0052 float col[maxpix];
0053 float adc[maxpix];
0054 float x[maxpix];
0055 float y[maxpix];
0056 };
0057 struct Hit {
0058 float x;
0059 float y;
0060 double alpha;
0061 double beta;
0062 double gamma;
0063 };
0064 struct Clust {
0065 float x;
0066 float y;
0067 float charge;
0068 int size_x;
0069 int size_y;
0070 int maxPixelCol;
0071 int maxPixelRow;
0072 int minPixelCol;
0073 int minPixelRow;
0074 };
0075 struct Rechit {
0076 float x;
0077 float y;
0078 };
0079
0080
0081
0082 namespace analyzer {
0083 class SiPixelLorentzAngle : public edm::one::EDAnalyzer<> {
0084 public:
0085 explicit SiPixelLorentzAngle(const edm::ParameterSet &conf);
0086
0087 ~SiPixelLorentzAngle() override;
0088 void beginJob() override;
0089 void endJob() override;
0090 void analyze(const edm::Event &e, const edm::EventSetup &c) override;
0091
0092 private:
0093 void fillPix(const SiPixelCluster &LocPix, const PixelTopology *topol, Pixinfo &pixinfo);
0094
0095 void findMean(int i, int i_ring);
0096
0097 TFile *hFile_;
0098 TTree *SiPixelLorentzAngleTree_;
0099 TTree *SiPixelLorentzAngleTreeForward_;
0100
0101
0102 int run_;
0103 int event_;
0104 int module_;
0105 int ladder_;
0106 int layer_;
0107 int isflipped_;
0108 float pt_;
0109 float eta_;
0110 float phi_;
0111 double chi2_;
0112 double ndof_;
0113 Pixinfo pixinfo_;
0114 Hit simhit_, trackhit_;
0115 Clust clust_;
0116 Rechit rechit_;
0117
0118
0119 int runF_;
0120 int eventF_;
0121 int sideF_;
0122 int diskF_;
0123 int bladeF_;
0124 int panelF_;
0125 int moduleF_;
0126 float ptF_;
0127 float etaF_;
0128 float phiF_;
0129 double chi2F_;
0130 double ndofF_;
0131 Pixinfo pixinfoF_;
0132 Hit simhitF_, trackhitF_;
0133 Clust clustF_;
0134 Rechit rechitF_;
0135
0136
0137 std::string filename_;
0138 std::string filenameFit_;
0139 double ptmin_;
0140 bool simData_;
0141 double normChi2Max_;
0142 int clustSizeYMin_;
0143 double residualMax_;
0144 double clustChargeMax_;
0145 int hist_depth_;
0146 int hist_drift_;
0147
0148
0149 TrackerHitAssociator::Config trackerHitAssociatorConfig_;
0150
0151
0152 int hist_x_;
0153 int hist_y_;
0154 double min_x_;
0155 double max_x_;
0156 double min_y_;
0157 double max_y_;
0158 double width_;
0159 double min_depth_;
0160 double max_depth_;
0161 double min_drift_;
0162 double max_drift_;
0163
0164 std::map<int, TH2F *> _h_drift_depth_adc_;
0165 std::map<int, TH2F *> _h_drift_depth_adc2_;
0166 std::map<int, TH2F *> _h_drift_depth_noadc_;
0167 std::map<int, TH2F *> _h_drift_depth_;
0168 TH1F *h_drift_depth_adc_slice_;
0169 std::map<int, TH1F *> _h_mean_;
0170 TH2F *h_cluster_shape_adc_;
0171 TH2F *h_cluster_shape_noadc_;
0172 TH2F *h_cluster_shape_;
0173 TH2F *h_cluster_shape_adc_rot_;
0174 TH2F *h_cluster_shape_noadc_rot_;
0175 TH2F *h_cluster_shape_rot_;
0176 TH1F *h_tracks_;
0177
0178 int event_counter_, trackEventsCounter_, pixelTracksCounter_, hitCounter_, usedHitCounter_;
0179
0180
0181 PropagatorWithMaterial *thePropagator;
0182 PropagatorWithMaterial *thePropagatorOp;
0183 KFUpdator *theUpdator;
0184 Chi2MeasurementEstimator *theEstimator;
0185 const TransientTrackingRecHitBuilder *RHBuilder;
0186 const KFTrajectorySmoother *theSmoother;
0187 const KFTrajectoryFitter *theFitter;
0188 TrajectoryStateTransform tsTransform;
0189 edm::EDGetTokenT<TrajTrackAssociationCollection> t_trajTrack;
0190 edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> trackerTopoToken_;
0191 edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> trackerGeomToken_;
0192 };
0193 }
0194
0195 #endif