00001 #ifndef MultiTrackValidator_h
00002 #define MultiTrackValidator_h
00003
00011 #include "FWCore/Framework/interface/Frameworkfwd.h"
00012 #include "FWCore/Framework/interface/EDAnalyzer.h"
00013 #include "Validation/RecoTrack/interface/MultiTrackValidatorBase.h"
00014
00015 class MultiTrackValidator : public edm::EDAnalyzer, protected MultiTrackValidatorBase {
00016 public:
00018 MultiTrackValidator(const edm::ParameterSet& pset):MultiTrackValidatorBase(pset){
00019 dirName_ = pset.getParameter<std::string>("dirName");
00020 associatormap = pset.getParameter< edm::InputTag >("associatormap");
00021 UseAssociators = pset.getParameter< bool >("UseAssociators");
00022 tpSelector = TrackingParticleSelector(pset.getParameter<double>("ptMinTP"),
00023 pset.getParameter<double>("minRapidityTP"),
00024 pset.getParameter<double>("maxRapidityTP"),
00025 pset.getParameter<double>("tipTP"),
00026 pset.getParameter<double>("lipTP"),
00027 pset.getParameter<int>("minHitTP"),
00028 pset.getParameter<bool>("signalOnlyTP"),
00029 pset.getParameter<bool>("chargedOnlyTP"),
00030 pset.getParameter<std::vector<int> >("pdgIdTP"));
00031 minPhi = pset.getParameter<double>("minPhi");
00032 maxPhi = pset.getParameter<double>("maxPhi");
00033 nintPhi = pset.getParameter<int>("nintPhi");
00034
00035 if (!UseAssociators) {
00036 associators.clear();
00037 associators.push_back(associatormap.label());
00038 }
00039 }
00040
00042 virtual ~MultiTrackValidator(){ }
00043
00045 void beginRun(edm::Run const&, edm::EventSetup const&);
00047 void analyze(const edm::Event&, const edm::EventSetup& );
00049 void endRun(edm::Run const&, edm::EventSetup const&);
00050
00051 private:
00052 std::string dirName_;
00053 edm::InputTag associatormap;
00054 bool UseAssociators;
00055 double minPhi, maxPhi;
00056 int nintPhi;
00057
00058
00059 TrackingParticleSelector tpSelector;
00060
00061
00062 std::vector<MonitorElement*> h_nchi2, h_nchi2_prob, h_losthits;
00063
00064
00065 std::vector<MonitorElement*> chi2_vs_nhits, etares_vs_eta;
00066 std::vector<MonitorElement*> h_ptshifteta;
00067 std::vector<MonitorElement*> ptres_vs_phi, chi2_vs_phi, nhits_vs_phi, phires_vs_phi;
00068
00069
00070 std::vector<MonitorElement*> ptmean_vs_eta_phi, phimean_vs_eta_phi;
00071
00072
00073 std::vector<MonitorElement*> h_assochi2, h_assochi2_prob;
00074
00075
00076 std::vector<MonitorElement*> chi2_vs_eta, nlosthits_vs_eta;
00077 std::vector<MonitorElement*> h_chi2meanh, h_losthits_eta;
00078 std::vector<MonitorElement*> h_hits_phi, h_ptresmean_vs_phi, h_phiresmean_vs_phi;
00079 std::vector<MonitorElement*> h_chi2meanhitsh, h_ptresmean_vs_eta, h_phiresmean_vs_eta, h_chi2mean_vs_phi;
00080
00081
00082 std::vector<MonitorElement*> dxyres_vs_eta, ptres_vs_eta, dzres_vs_eta, phires_vs_eta, cotThetares_vs_eta;
00083 std::vector<MonitorElement*> dxyres_vs_pt, ptres_vs_pt, dzres_vs_pt, phires_vs_pt, cotThetares_vs_pt;
00084 std::vector<MonitorElement*> h_dxyrmsh, h_ptrmsh, h_dzrmsh, h_phirmsh, h_cotThetarmsh;
00085 std::vector<MonitorElement*> h_dxyrmshPt, h_ptrmshPt, h_dzrmshPt, h_phirmshPt, h_cotThetarmshPt;
00086 std::vector<MonitorElement*> h_ptrmshPhi, h_phirmshPhi;
00087
00088
00089 std::vector<MonitorElement*> dxypull_vs_eta, ptpull_vs_eta, dzpull_vs_eta, phipull_vs_eta, thetapull_vs_eta;
00090 std::vector<MonitorElement*> ptpull_vs_phi, phipull_vs_phi, thetapull_vs_phi;
00091 std::vector<MonitorElement*> h_dxypulleta, h_ptpulleta, h_dzpulleta, h_phipulleta, h_thetapulleta;
00092 std::vector<MonitorElement*> h_ptpullphi, h_phipullphi, h_thetapullphi;
00093 };
00094
00095
00096 #endif