Go to the documentation of this file.00001 #ifndef AnalysisRootpleProducer_H
00002 #define AnalysisRootpleProducer_H
00003
00004 #include <iostream>
00005
00006 #include <FWCore/Framework/interface/Event.h>
00007 #include <FWCore/Framework/interface/ESHandle.h>
00008 #include <FWCore/Framework/interface/MakerMacros.h>
00009 #include <FWCore/Framework/interface/Frameworkfwd.h>
00010 #include <FWCore/ParameterSet/interface/ParameterSet.h>
00011 #include <DataFormats/Common/interface/Handle.h>
00012
00013 #include "FWCore/Framework/interface/EDAnalyzer.h"
00014 #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"
00015
00016 #include <FWCore/ServiceRegistry/interface/Service.h>
00017 #include <CommonTools/UtilAlgos/interface/TFileService.h>
00018
00019 #include <TROOT.h>
00020 #include <TTree.h>
00021 #include <TFile.h>
00022 #include <TLorentzVector.h>
00023 #include <TObjString.h>
00024 #include <TClonesArray.h>
00025
00026 #include "DataFormats/JetReco/interface/Jet.h"
00027 #include "DataFormats/JetReco/interface/GenJet.h"
00028 #include "DataFormats/JetReco/interface/GenJetCollection.h"
00029 #include "DataFormats/JetReco/interface/CaloJetCollection.h"
00030 #include "DataFormats/JetReco/interface/BasicJet.h"
00031 #include "DataFormats/JetReco/interface/BasicJetCollection.h"
00032 #include "DataFormats/Candidate/interface/Candidate.h"
00033 #include "DataFormats/HepMCCandidate/interface/GenParticle.h"
00034
00035
00036 #include <DataFormats/Common/interface/TriggerResults.h>
00037 #include <DataFormats/HLTReco/interface/TriggerEvent.h>
00038 #include <DataFormats/HLTReco/interface/TriggerFilterObjectWithRefs.h>
00039
00040 class AnalysisRootpleProducer : public edm::EDAnalyzer
00041 {
00042
00043 public:
00044
00045
00046 explicit AnalysisRootpleProducer( const edm::ParameterSet& ) ;
00047 virtual ~AnalysisRootpleProducer() {}
00048
00049
00050 virtual void analyze( const edm::Event&, const edm::EventSetup& ) ;
00051 virtual void beginJob() ;
00052 virtual void endJob() ;
00053
00054 void fillEventInfo(int);
00055 void fillMCParticles(float, float, float, float);
00056 void fillTracks(float, float, float, float);
00057 void fillInclusiveJet(float, float, float, float);
00058 void fillChargedJet(float, float, float, float);
00059 void fillTracksJet(float, float, float, float);
00060 void fillCaloJet(float, float, float, float);
00061 void store();
00062
00063 private:
00064
00065 bool onlyRECO;
00066
00067 edm::InputTag mcEvent;
00068 edm::InputTag genJetCollName;
00069 edm::InputTag chgJetCollName;
00070 edm::InputTag chgGenPartCollName;
00071 edm::InputTag tracksJetCollName;
00072 edm::InputTag recoCaloJetCollName;
00073 edm::InputTag tracksCollName;
00074 edm::InputTag triggerResultsTag;
00075
00076 edm::Handle< edm::HepMCProduct > EvtHandle ;
00077 edm::Handle< std::vector<reco::GenParticle> > CandHandleMC ;
00078 edm::Handle< reco::GenJetCollection > GenJetsHandle ;
00079 edm::Handle< reco::GenJetCollection > ChgGenJetsHandle ;
00080 edm::Handle< reco::CandidateCollection > CandHandleRECO ;
00081 edm::Handle< reco::BasicJetCollection > TracksJetsHandle ;
00082 edm::Handle< reco::CaloJetCollection > RecoCaloJetsHandle ;
00083 edm::Handle< edm::TriggerResults > triggerResults;
00084
00085
00086 edm::Service<TFileService> fs;
00087
00088 float piG;
00089
00090 TTree* AnalysisTree;
00091
00092 static const int NMCPMAX = 10000;
00093 static const int NTKMAX = 10000;
00094 static const int NIJMAX = 10000;
00095 static const int NCJMAX = 10000;
00096 static const int NTJMAX = 10000;
00097 static const int NEHJMAX = 10000;
00098
00099 int EventKind,NumberMCParticles,NumberTracks,NumberInclusiveJet,NumberChargedJet,NumberTracksJet,NumberCaloJet;
00100
00101 float MomentumMC[NMCPMAX],TransverseMomentumMC[NMCPMAX],EtaMC[NMCPMAX],PhiMC[NMCPMAX];
00102 float MomentumTK[NTKMAX],TransverseMomentumTK[NTKMAX],EtaTK[NTKMAX],PhiTK[NTKMAX];
00103 float MomentumIJ[NIJMAX],TransverseMomentumIJ[NIJMAX],EtaIJ[NIJMAX],PhiIJ[NIJMAX];
00104 float MomentumCJ[NCJMAX],TransverseMomentumCJ[NCJMAX],EtaCJ[NCJMAX],PhiCJ[NCJMAX];
00105 float MomentumTJ[NTJMAX],TransverseMomentumTJ[NTJMAX],EtaTJ[NTJMAX],PhiTJ[NTJMAX];
00106 float MomentumEHJ[NEHJMAX],TransverseMomentumEHJ[NEHJMAX],EtaEHJ[NEHJMAX],PhiEHJ[NEHJMAX];
00107
00108 TClonesArray* MonteCarlo;
00109 TClonesArray* InclusiveJet;
00110 TClonesArray* ChargedJet;
00111 TClonesArray* Track;
00112 TClonesArray* TracksJet;
00113 TClonesArray* CalorimeterJet;
00114 TClonesArray* acceptedTriggers;
00115 };
00116
00117 #endif