00001 #ifndef MuScleFitPlotter_H 00002 #define MuScleFitPlotter_H 00003 00012 // #include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h" 00013 #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h" 00014 #include "DataFormats/HepMCCandidate/interface/GenParticleFwd.h" 00015 #include "SimDataFormats/Track/interface/SimTrackContainer.h" 00016 #include "MuonAnalysis/MomentumScaleCalibration/interface/Histograms.h" 00017 00018 namespace edm { 00019 class ParameterSet; 00020 class Event; 00021 class EventSetup; 00022 } 00023 00024 class TFile; 00025 class LeafCandidate; 00026 00027 class MuScleFitPlotter{ 00028 00029 public: 00030 // Constructor 00031 // ----------- 00032 MuScleFitPlotter(std::string); 00033 00034 // Destructor 00035 // ---------- 00036 virtual ~MuScleFitPlotter(); 00037 00038 // Operations 00039 // ---------- 00040 void fillGen1(const reco::GenParticleCollection* genParticles, bool=false); 00041 void fillGen2(const edm::HepMCProduct* evtMC, bool shepaFlag_); 00042 void fillSim(edm::Handle<edm::SimTrackContainer> simTracks); 00043 void fillGenSim(edm::Handle<edm::HepMCProduct> evtMC, edm::Handle<edm::SimTrackContainer> simTracks); 00044 void fillRec(std::vector<reco::LeafCandidate>& muons); 00045 00046 // Root tree specific 00047 void fillRec( const std::vector<std::pair<reco::Particle::LorentzVector, reco::Particle::LorentzVector> > & savedPairs ); 00048 void fillGen( const std::vector<std::pair<reco::Particle::LorentzVector, reco::Particle::LorentzVector> > & genPairs ); 00049 00050 void fillHistoMap(); 00051 void writeHistoMap(); 00052 00053 bool debug; 00054 00055 protected: 00056 00057 private: 00058 // The map of histograms 00059 // --------------------- 00060 std::map<std::string, Histograms*> mapHisto; 00061 TFile * outputFile; 00062 00063 }; 00064 #endif 00065 00066