// -*- C++ -*- // // Package: Myanalyzer // Class: Myanalyzer // /**\class Myanalyzer Myanalyzer.cc myanalyzer/Myanalyzer/src/Myanalyzer.cc Description: Implementation: */ // // Original Author: Jorge Robles // Created: Fri Apr 18 00:21:35 CEST 2008 // $Id$ // // // system include files #include #include #include #include // user include files #include "FWCore/Framework/interface/Frameworkfwd.h" #include "FWCore/Framework/interface/EDAnalyzer.h" #include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h" #include //Root stuff #include #include #include #include #include //Analysis Include Files #include "FWCore/Framework/interface/Event.h" #include "FWCore/Framework/interface/MakerMacros.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" // // class declaration // using namespace edm; using namespace reco; using namespace std; class Myanalyzer : public edm::EDAnalyzer { public: TH1* genET; TH1* trackPt; explicit Myanalyzer(const edm::ParameterSet&); ~Myanalyzer(); private: virtual void beginJob(const edm::EventSetup&) ; virtual void analyze(const edm::Event&, const edm::EventSetup&); virtual void endJob() ; // ----------member data --------------------------- }; // // constants, enums and typedefs // // // static data member definitions // // // constructors and destructor // Myanalyzer::Myanalyzer(const edm::ParameterSet& iConfig) { //now do what ever initialization is needed } Myanalyzer::~Myanalyzer() { // do anything here that needs to be done at desctruction time // (e.g. close files, deallocate resources etc.) } // // member functions // // ------------ method called to for each event ------------ void Myanalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) { using namespace edm; edm::Handle genEvent; iEvent.getByLabel("source", "",genEvent); double muonET = 0.0; //run over all particles of the event for (HepMC::GenEvent::particle_const_iterator particle = genEvent->GetEvent()->particles_begin(); particle !=genEvent->GetEvent()->particles_end();++particle){ if((*particle)->pdg_id()==22);//||(*particle)->pdg_id()==-13) { double muonET = (*particle)->momentum().px(); genET->Fill(muonET); } } //RECO using namespace reco; //Reco Tracks HandlerecoTracks; iEvent.getByLabel("gsWithMaterialTracks","",recoTracks); for(reco::TrackCollection::const_iterator track = recoTracks->begin(); track != recoTracks->end(); ++track) { trackPt->Fill(track->pt()); } } /* #ifdef THIS_IS_AN_EVENT_EXAMPLE Handle pIn; iEvent.getByLabel("example",pIn); #endif #ifdef THIS_IS_AN_EVENTSETUP_EXAMPLE ESHandle pSetup; iSetup.get().get(pSetup); #endif } */ // ------------ method called once each job just before starting event loop ------------ void Myanalyzer::beginJob(const edm::EventSetup&) { genET = new TH1F("genET","transverse energy",100,0,100); trackPt = new TH1F ("trackPt","Pt of Tracks",100,0,100); } // ------------ method called once each job just after ending the event loop ------------ void Myanalyzer::endJob() { TFile* outputFile = new TFile("MyOutput.root","RECREATE"); genET->Write(); trackPt->Write(); outputFile->Close(); } //define this as a plug-in DEFINE_FWK_MODULE(Myanalyzer);