00001 #ifndef MCElectronAnalyzer_H 00002 #define MCElectronAnalyzer_H 00003 #include "RecoEgamma/EgammaMCTools/interface/ElectronMCTruthFinder.h" 00004 00005 #include "SimTracker/TrackAssociation/interface/TrackAssociatorBase.h" 00006 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" 00007 #include "FWCore/Framework/interface/EDAnalyzer.h" 00008 00009 #include <map> 00010 #include <vector> 00011 00012 00013 // forward declarations 00014 class TFile; 00015 class TH1F; 00016 class TH2F; 00017 class TProfile; 00018 class TTree; 00019 class SimVertex; 00020 class SimTrack; 00021 00022 00023 class MCElectronAnalyzer : public edm::EDAnalyzer 00024 { 00025 00026 public: 00027 00028 // 00029 explicit MCElectronAnalyzer( const edm::ParameterSet& ) ; 00030 virtual ~MCElectronAnalyzer(); 00031 00032 00033 virtual void analyze( const edm::Event&, const edm::EventSetup& ) ; 00034 virtual void beginJob( const edm::EventSetup& ) ; 00035 virtual void endJob() ; 00036 00037 private: 00038 00039 00040 float etaTransformation( float a, float b); 00041 float phiNormalization( float& a); 00042 00043 00044 // 00045 ElectronMCTruthFinder* theElectronMCTruthFinder_; 00046 00047 const TrackerGeometry* trackerGeom; 00048 00049 std::string fOutputFileName_ ; 00050 TFile* fOutputFile_ ; 00051 00052 00053 00054 00055 int nEvt_; 00056 int nMatched_; 00057 00059 double mcPhi_; 00060 double mcEta_; 00061 00062 std::string HepMCLabel; 00063 std::string SimTkLabel; 00064 std::string SimVtxLabel; 00065 std::string SimHitLabel; 00066 00067 00068 TH1F* h_MCEleE_; 00069 TH1F* h_MCEleEta_; 00070 TH1F* h_MCElePhi_; 00071 TH1F* h_BremFrac_; 00072 TH1F* h_BremEnergy_; 00073 00074 TProfile* p_BremVsR_; 00075 TProfile* p_BremVsEta_; 00076 00077 00078 00079 }; 00080 00081 #endif