00001 // -*- C++ -*- 00002 // 00003 // Package: TrackParameterAnalyzer 00004 // Class: TrackParameterAnalyzer 00005 // 00013 // 00014 // Original Author: Wolfram Erdmann 00015 // Created: Fri Jun 2 10:54:05 CEST 2006 00016 // $Id: TrackParameterAnalyzer.h,v 1.8 2007/08/26 04:35:55 dlange Exp $ 00017 // 00018 // 00019 00020 00021 // system include files 00022 #include <memory> 00023 #include <string> 00024 #include <vector> 00025 00026 // user include files 00027 #include "FWCore/Framework/interface/Frameworkfwd.h" 00028 #include "FWCore/Framework/interface/EDAnalyzer.h" 00029 00030 #include "FWCore/Framework/interface/Event.h" 00031 #include "FWCore/Framework/interface/MakerMacros.h" 00032 00033 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00034 #include "FWCore/ParameterSet/interface/InputTag.h" 00035 #include "DataFormats/TrackReco/interface/Track.h" 00036 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00037 00038 // Hep MC stuff from CLHEP, add <use name=clhep> to the buildfile 00039 #include "HepMC/GenEvent.h" 00040 #include "HepMC/GenVertex.h" 00041 #include "HepMC/GenParticle.h" 00042 #include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h" 00043 #include <CLHEP/Vector/LorentzVector.h> 00044 00045 // simulated vertices,..., add <use name=SimDataFormats/Vertex> and <../Track> 00046 #include <SimDataFormats/Vertex/interface/SimVertex.h> 00047 #include <SimDataFormats/Vertex/interface/SimVertexContainer.h> 00048 #include <SimDataFormats/Track/interface/SimTrack.h> 00049 #include <SimDataFormats/Track/interface/SimTrackContainer.h> 00050 00051 // vertex stuff 00052 #include <DataFormats/VertexReco/interface/Vertex.h> 00053 #include "RecoVertex/VertexPrimitives/interface/TransientVertex.h" 00054 // perigee 00055 #include <TrackingTools/TrajectoryParametrization/interface/PerigeeTrajectoryParameters.h> 00056 //#include <TrackingTools/TrajectoryState/interface/TrajectoryStateClosestToPoint.h> 00057 00058 // Root 00059 #include <TH1.h> 00060 #include <TH2.h> 00061 #include <TFile.h> 00062 00063 00064 // class declaration 00065 // 00066 typedef reco::TrackBase::ParameterVector ParameterVector; 00067 00068 class TrackParameterAnalyzer : public edm::EDAnalyzer { 00069 public: 00070 explicit TrackParameterAnalyzer(const edm::ParameterSet&); 00071 ~TrackParameterAnalyzer(); 00072 00073 virtual void analyze(const edm::Event&, const edm::EventSetup&); 00074 virtual void beginJob(edm::EventSetup const&); 00075 virtual void endJob(); 00076 00077 private: 00078 bool match(const ParameterVector &a, const ParameterVector &b); 00079 // ----------member data --------------------------- 00080 std::string recoTrackProducer_; 00081 // root file to store histograms 00082 std::string outputFile_; // output file 00083 TFile* rootFile_; 00084 TH1* h1_pull0_; 00085 TH1* h1_pull1_; 00086 TH1* h1_pull2_; 00087 TH1* h1_pull3_; 00088 TH1* h1_pull4_; 00089 TH1* h1_res0_; 00090 TH1* h1_res1_; 00091 TH1* h1_res2_; 00092 TH1* h1_res3_; 00093 TH1* h1_res4_; 00094 TH1* h1_Beff_; 00095 TH2* h2_dvsphi_; 00096 TH1* h1_par0_; 00097 TH1* h1_par1_; 00098 TH1* h1_par2_; 00099 TH1* h1_par3_; 00100 TH1* h1_par4_; 00101 00102 edm::InputTag simG4_; 00103 bool verbose_; 00104 double simUnit_; 00105 };