Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-17 10:44:36

0001 #ifndef CalibTracker_SiStripHitResolution_HitResol_H
0002 #define CalibTracker_SiStripHitResolution_HitResol_H
0003 
0004 // system includes
0005 #include <vector>
0006 
0007 // user includes
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 // ROOT includes
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   // ----------member data ---------------------------
0070 
0071   // ED tokens
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   // ES tokens
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   // configuration parameters
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   // output file
0095   TTree* reso;
0096   TTree* treso;
0097   std::map<TString, TH2F*> histos2d_;
0098 
0099   // conversion
0100   static constexpr float cmToUm = 10000.f;
0101 
0102   // counters
0103   int events, EventTrackCKF;
0104 
0105   // Tree declarations
0106   // Hit Resolution Ntuple Content
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