File indexing completed on 2023-08-27 23:16:29
0001
0002 #include <vector>
0003 #include <iostream>
0004 #include <cstdlib>
0005 #include <cstdio>
0006
0007
0008 #include "CommonTools/UtilAlgos/interface/TFileService.h"
0009 #include "DataFormats/Common/interface/Handle.h"
0010 #include "DataFormats/DetId/interface/DetIdCollection.h"
0011 #include "DataFormats/DetId/interface/DetIdVector.h"
0012 #include "DataFormats/GeometryCommonDetAlgo/interface/MeasurementError.h"
0013 #include "DataFormats/GeometryCommonDetAlgo/interface/MeasurementVector.h"
0014 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
0015 #include "DataFormats/OnlineMetaData/interface/OnlineLuminosityRecord.h"
0016 #include "DataFormats/Scalers/interface/LumiScalers.h"
0017 #include "DataFormats/SiStripCluster/interface/SiStripCluster.h"
0018 #include "DataFormats/SiStripDigi/interface/SiStripRawDigi.h"
0019 #include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h"
0020 #include "FWCore/Framework/interface/ESHandle.h"
0021 #include "FWCore/Framework/interface/Event.h"
0022 #include "FWCore/Framework/interface/EventSetup.h"
0023 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0024 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0025 #include "FWCore/ServiceRegistry/interface/Service.h"
0026 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
0027 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
0028 #include "MagneticField/Engine/interface/MagneticField.h"
0029 #include "RecoLocalTracker/ClusterParameterEstimator/interface/StripClusterParameterEstimator.h"
0030 #include "RecoLocalTracker/Records/interface/TkStripCPERecord.h"
0031 #include "RecoLocalTracker/SiStripClusterizer/interface/SiStripClusterInfo.h"
0032 #include "RecoTracker/Record/interface/CkfComponentsRecord.h"
0033 #include "RecoTracker/SingleTrackPattern/interface/CosmicTrajectoryBuilder.h"
0034 #include "TrackingTools/KalmanUpdators/interface/Chi2MeasurementEstimator.h"
0035 #include "TrackingTools/KalmanUpdators/interface/KFUpdator.h"
0036 #include "TrackingTools/MaterialEffects/interface/PropagatorWithMaterial.h"
0037 #include "TrackingTools/PatternTools/interface/TrajTrackAssociation.h"
0038 #include "TrackingTools/TrackFitters/interface/KFTrajectoryFitter.h"
0039 #include "TrackingTools/TrackFitters/interface/KFTrajectorySmoother.h"
0040 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateTransform.h"
0041 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHitBuilder.h"
0042
0043
0044 #include "TRandom2.h"
0045 #include "TROOT.h"
0046 #include "TFile.h"
0047 #include "TH1F.h"
0048 #include "TH2F.h"
0049 #include "TTree.h"
0050
0051 class TrackerTopology;
0052
0053 class HitEff : public edm::one::EDAnalyzer<edm::one::SharedResources> {
0054 public:
0055 explicit HitEff(const edm::ParameterSet& conf);
0056 ~HitEff() override = default;
0057
0058 private:
0059 void beginJob() override;
0060 void endJob() override;
0061 void analyze(const edm::Event& e, const edm::EventSetup& c) override;
0062
0063
0064
0065 const edm::EDGetTokenT<LumiScalersCollection> scalerToken_;
0066 const edm::EDGetTokenT<OnlineLuminosityRecord> metaDataToken_;
0067 const edm::EDGetTokenT<edm::DetSetVector<SiStripRawDigi> > commonModeToken_;
0068
0069 SiStripClusterInfo siStripClusterInfo_;
0070
0071 bool addLumi_;
0072 bool addCommonMode_;
0073 bool cutOnTracks_;
0074 unsigned int trackMultiplicityCut_;
0075 bool useFirstMeas_;
0076 bool useLastMeas_;
0077 bool useAllHitsFromTracksWithMissingHits_;
0078 bool doMissingHitsRecovery_;
0079
0080 const edm::EDGetTokenT<reco::TrackCollection> combinatorialTracks_token_;
0081 const edm::EDGetTokenT<std::vector<Trajectory> > trajectories_token_;
0082 const edm::EDGetTokenT<TrajTrackAssociationCollection> trajTrackAsso_token_;
0083 const edm::EDGetTokenT<edmNew::DetSetVector<SiStripCluster> > clusters_token_;
0084 const edm::EDGetTokenT<DetIdCollection> digisCol_token_;
0085 const edm::EDGetTokenT<DetIdVector> digisVec_token_;
0086 const edm::EDGetTokenT<MeasurementTrackerEvent> trackerEvent_token_;
0087
0088
0089
0090 const edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> topoToken_;
0091 const edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> geomToken_;
0092 const edm::ESGetToken<StripClusterParameterEstimator, TkStripCPERecord> cpeToken_;
0093 const edm::ESGetToken<SiStripQuality, SiStripQualityRcd> siStripQualityToken_;
0094 const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> magFieldToken_;
0095 const edm::ESGetToken<MeasurementTracker, CkfComponentsRecord> measurementTkToken_;
0096 const edm::ESGetToken<Chi2MeasurementEstimatorBase, TrackingComponentsRecord> chi2MeasurementEstimatorToken_;
0097 const edm::ESGetToken<Propagator, TrackingComponentsRecord> propagatorToken_;
0098
0099 edm::ParameterSet conf_;
0100
0101 TTree* traj;
0102 int events, EventTrackCKF;
0103
0104 int compSettings;
0105 unsigned int layers;
0106 bool DEBUG;
0107 unsigned int whatlayer;
0108
0109 std::vector<unsigned int> hitRecoveryCounters;
0110 std::vector<unsigned int> hitTotalCounters;
0111
0112
0113 #ifdef ExtendedCALIBTree
0114 float timeDT, timeDTErr;
0115 int timeDTDOF;
0116 float timeECAL, dedx;
0117 int dedxNOM;
0118 int nLostHits;
0119 float p, chi2;
0120 #endif
0121 int totalNbHits;
0122 std::vector<int> missHitPerLayer;
0123 float TrajGlbX, TrajGlbY, TrajGlbZ;
0124 float TrajLocX, TrajLocY, TrajLocAngleX, TrajLocAngleY;
0125 float TrajLocErrX, TrajLocErrY;
0126 float ClusterLocX, ClusterLocY, ClusterLocErrX, ClusterLocErrY, ClusterStoN;
0127 float ResX, ResXSig;
0128 unsigned int ModIsBad;
0129 unsigned int Id;
0130 unsigned int SiStripQualBad;
0131 bool withinAcceptance;
0132 bool highPurity;
0133 int nHits;
0134 float pT;
0135 unsigned int trajHitValid, run, event, bunchx;
0136 int tquality;
0137 float instLumi, PU;
0138 float commonMode;
0139 };
0140
0141