![]() |
![]() |
00001 // -*- C++ -*- 00002 // 00003 // Package: anlzrname 00004 // Class: anlzrname 00005 // 00013 // 00014 // Original Author: John Doe 00015 // Created: day-mon-xx 00016 // RCS(Id) 00017 // 00018 // 00019 00020 00021 // system include files 00022 #include <memory> 00023 00024 // user include files 00025 #include "FWCore/Framework/interface/Frameworkfwd.h" 00026 #include "FWCore/Framework/interface/EDAnalyzer.h" 00027 00028 #include "FWCore/Framework/interface/Event.h" 00029 #include "FWCore/Framework/interface/MakerMacros.h" 00030 00031 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00032 @example_track #include "FWCore/Utilities/interface/InputTag.h" 00033 @example_track #include "DataFormats/TrackReco/interface/Track.h" 00034 @example_track #include "DataFormats/TrackReco/interface/TrackFwd.h" 00035 @example_histo #include "FWCore/ServiceRegistry/interface/Service.h" 00036 @example_histo #include "CommonTools/UtilAlgos/interface/TFileService.h" 00037 @example_histo #include "TH1.h" 00038 // 00039 // class declaration 00040 // 00041 00042 class anlzrname : public edm::EDAnalyzer { 00043 public: 00044 explicit anlzrname(const edm::ParameterSet&); 00045 ~anlzrname(); 00046 00047 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); 00048 00049 00050 private: 00051 virtual void beginJob() ; 00052 virtual void analyze(const edm::Event&, const edm::EventSetup&); 00053 virtual void endJob() ; 00054 00055 //virtual void beginRun(edm::Run const&, edm::EventSetup const&); 00056 //virtual void endRun(edm::Run const&, edm::EventSetup const&); 00057 //virtual void beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&); 00058 //virtual void endLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&); 00059 00060 // ----------member data --------------------------- 00061 @example_track edm::InputTag trackTags_; //used to select what tracks to read from configuration file 00062 @example_histo TH1D * histo; 00063 }; 00064 00065 // 00066 // constants, enums and typedefs 00067 // 00068 00069 // 00070 // static data member definitions 00071 // 00072 00073 // 00074 // constructors and destructor 00075 // 00076 anlzrname::anlzrname(const edm::ParameterSet& iConfig) 00077 @example_track : 00078 @example_track trackTags_(iConfig.getUntrackedParameter<edm::InputTag>("tracks")) 00079 00080 { 00081 //now do what ever initialization is needed 00082 @example_histo edm::Service<TFileService> fs; 00083 @example_histo histo = fs->make<TH1D>("charge" , "Charges" , 200 , -2 , 2 ); 00084 00085 } 00086 00087 00088 anlzrname::~anlzrname() 00089 { 00090 00091 // do anything here that needs to be done at desctruction time 00092 // (e.g. close files, deallocate resources etc.) 00093 00094 } 00095 00096 00097 // 00098 // member functions 00099 // 00100 00101 // ------------ method called for each event ------------ 00102 void 00103 anlzrname::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) 00104 { 00105 using namespace edm; 00106 00107 @example_track using reco::TrackCollection; 00108 00109 @example_track Handle<TrackCollection> tracks; 00110 @example_track iEvent.getByLabel(trackTags_,tracks); 00111 @example_track for(TrackCollection::const_iterator itTrack = tracks->begin(); 00112 @example_track itTrack != tracks->end(); 00113 @example_track ++itTrack) { 00114 @example_track_histo int charge = 0; 00115 @example_track charge = itTrack->charge(); 00116 @example_histo histo->Fill( charge ); 00117 @example_track } 00118 00119 #ifdef THIS_IS_AN_EVENT_EXAMPLE 00120 Handle<ExampleData> pIn; 00121 iEvent.getByLabel("example",pIn); 00122 #endif 00123 00124 #ifdef THIS_IS_AN_EVENTSETUP_EXAMPLE 00125 ESHandle<SetupData> pSetup; 00126 iSetup.get<SetupRecord>().get(pSetup); 00127 #endif 00128 } 00129 00130 00131 // ------------ method called once each job just before starting event loop ------------ 00132 void 00133 anlzrname::beginJob() 00134 { 00135 } 00136 00137 // ------------ method called once each job just after ending the event loop ------------ 00138 void 00139 anlzrname::endJob() 00140 { 00141 } 00142 00143 // ------------ method called when starting to processes a run ------------ 00144 /* 00145 void 00146 anlzrname::beginRun(edm::Run const&, edm::EventSetup const&) 00147 { 00148 } 00149 */ 00150 00151 // ------------ method called when ending the processing of a run ------------ 00152 /* 00153 void 00154 anlzrname::endRun(edm::Run const&, edm::EventSetup const&) 00155 { 00156 } 00157 */ 00158 00159 // ------------ method called when starting to processes a luminosity block ------------ 00160 /* 00161 void 00162 anlzrname::beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) 00163 { 00164 } 00165 */ 00166 00167 // ------------ method called when ending the processing of a luminosity block ------------ 00168 /* 00169 void 00170 anlzrname::endLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) 00171 { 00172 } 00173 */ 00174 00175 // ------------ method fills 'descriptions' with the allowed parameters for the module ------------ 00176 void 00177 anlzrname::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { 00178 //The following says we do not know what parameters are allowed so do no validation 00179 // Please change this to state exactly what you do use, even if it is no parameters 00180 edm::ParameterSetDescription desc; 00181 desc.setUnknown(); 00182 descriptions.addDefault(desc); 00183 @example_track 00184 @example_track //Specify that only 'tracks' is allowed 00185 @example_track //To use, remove the default given above and uncomment below 00186 @example_track //ParameterSetDescription desc; 00187 @example_track //desc.addUntracked<edm::InputTag>("tracks","ctfWithMaterialTracks"); 00188 @example_track //descriptions.addDefault(desc); 00189 } 00190 00191 //define this as a plug-in 00192 DEFINE_FWK_MODULE(anlzrname);