00001 #ifndef GlobalHitsProdHistStripper_h 00002 #define GlobalHitsProdHistStripper_h 00003 00013 // framework & common header files 00014 #include "FWCore/Framework/interface/EDAnalyzer.h" 00015 #include "FWCore/Framework/interface/Frameworkfwd.h" 00016 #include "FWCore/Framework/interface/Event.h" 00017 #include "FWCore/Framework/interface/Run.h" 00018 #include "FWCore/Framework/interface/EventSetup.h" 00019 #include "DataFormats/Common/interface/Handle.h" 00020 #include "FWCore/Framework/interface/ESHandle.h" 00021 #include "DataFormats/Provenance/interface/Provenance.h" 00022 #include "FWCore/Framework/interface/MakerMacros.h" 00023 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00024 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00025 00026 //DQM services 00027 #include "DQMServices/Core/interface/DQMStore.h" 00028 #include "FWCore/ServiceRegistry/interface/Service.h" 00029 00030 // helper files 00031 //#include <CLHEP/Vector/LorentzVector.h> 00032 #include "DataFormats/Math/interface/LorentzVector.h" 00033 #include "CLHEP/Units/GlobalSystemOfUnits.h" 00034 00035 #include <iostream> 00036 #include <stdlib.h> 00037 #include <string> 00038 #include <memory> 00039 #include <vector> 00040 00041 #include "TString.h" 00042 #include "DQMServices/Core/interface/MonitorElement.h" 00043 00044 class GlobalHitsProdHistStripper : public edm::EDAnalyzer 00045 { 00046 00047 public: 00048 00049 //typedef std::vector<float> FloatVector; 00050 00051 explicit GlobalHitsProdHistStripper(const edm::ParameterSet&); 00052 virtual ~GlobalHitsProdHistStripper(); 00053 virtual void beginJob( void ); 00054 virtual void endJob(); 00055 virtual void analyze(const edm::Event&, const edm::EventSetup&); 00056 virtual void beginRun(const edm::Run&, const edm::EventSetup&); 00057 virtual void endRun(const edm::Run&, const edm::EventSetup&); 00058 00059 private: 00060 00061 // parameter information 00062 std::string fName; 00063 int verbosity; 00064 int frequency; 00065 int vtxunit; 00066 bool getAllProvenances; 00067 bool printProvenanceInfo; 00068 00069 00070 DQMStore *dbe; 00071 std::string outputfile; 00072 bool doOutput; 00073 00074 std::map<std::string,MonitorElement*> monitorElements; 00075 00076 std::vector<MonitorElement*> me; 00077 00078 // G4MC info 00079 MonitorElement *meMCRGP[2]; 00080 MonitorElement *meMCG4Vtx[2]; 00081 MonitorElement *meGeantVtxX[2]; 00082 MonitorElement *meGeantVtxY[2]; 00083 MonitorElement *meGeantVtxZ[2]; 00084 MonitorElement *meMCG4Trk[2]; 00085 MonitorElement *meGeantTrkPt; 00086 MonitorElement *meGeantTrkE; 00087 00088 // Electromagnetic info 00089 // ECal info 00090 MonitorElement *meCaloEcal[2]; 00091 MonitorElement *meCaloEcalE[2]; 00092 MonitorElement *meCaloEcalToF[2]; 00093 MonitorElement *meCaloEcalPhi; 00094 MonitorElement *meCaloEcalEta; 00095 00096 // Preshower info 00097 MonitorElement *meCaloPreSh[2]; 00098 MonitorElement *meCaloPreShE[2]; 00099 MonitorElement *meCaloPreShToF[2]; 00100 MonitorElement *meCaloPreShPhi; 00101 MonitorElement *meCaloPreShEta; 00102 00103 // Hadronic info 00104 // HCal info 00105 MonitorElement *meCaloHcal[2]; 00106 MonitorElement *meCaloHcalE[2]; 00107 MonitorElement *meCaloHcalToF[2]; 00108 MonitorElement *meCaloHcalPhi; 00109 MonitorElement *meCaloHcalEta; 00110 00111 // Tracker info 00112 // Pixel info 00113 //int nPxlBrlHits; 00114 //int nPxlFwdHits; 00115 //int nPxlHits; 00116 MonitorElement *meTrackerPx[2]; 00117 MonitorElement *meTrackerPxPhi; 00118 MonitorElement *meTrackerPxEta; 00119 MonitorElement *meTrackerPxBToF; 00120 MonitorElement *meTrackerPxBR; 00121 MonitorElement *meTrackerPxFToF; 00122 MonitorElement *meTrackerPxFZ; 00123 00124 // Strip info 00125 //int nSiHits; 00126 //int nSiBrlHits; 00127 //int nSiFwdHits; 00128 MonitorElement *meTrackerSi[2]; 00129 MonitorElement *meTrackerSiPhi; 00130 MonitorElement *meTrackerSiEta; 00131 MonitorElement *meTrackerSiBToF; 00132 MonitorElement *meTrackerSiBR; 00133 MonitorElement *meTrackerSiFToF; 00134 MonitorElement *meTrackerSiFZ; 00135 00136 // Muon info 00137 MonitorElement *meMuon[2]; 00138 MonitorElement *meMuonPhi; 00139 MonitorElement *meMuonEta; 00140 //int nMuonHits; 00141 00142 // DT info 00143 //int nMuonDtHits; 00144 MonitorElement *meMuonDtToF[2]; 00145 MonitorElement *meMuonDtR; 00146 00147 // CSC info 00148 //int nMuonCscHits; 00149 MonitorElement *meMuonCscToF[2]; 00150 MonitorElement *meMuonCscZ; 00151 00152 // RPC info 00153 //int nMuonRpcBrlHits; 00154 //int nMuonRpcFwdHits; 00155 MonitorElement *meMuonRpcFToF[2]; 00156 MonitorElement *meMuonRpcFZ; 00157 MonitorElement *meMuonRpcBToF[2]; 00158 MonitorElement *meMuonRpcBR; 00159 00160 // private statistics information 00161 unsigned int count; 00162 00163 }; // end class declaration 00164 00165 #endif 00166 00167