![]() |
![]() |
00001 #ifndef GlobalHitsAnalyzer_h 00002 #define GlobalHitsAnalyzer_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/EventSetup.h" 00018 #include "DataFormats/Common/interface/Handle.h" 00019 #include "FWCore/Framework/interface/ESHandle.h" 00020 #include "DataFormats/Provenance/interface/Provenance.h" 00021 #include "FWCore/Framework/interface/MakerMacros.h" 00022 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00023 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00024 #include "Geometry/CommonDetUnit/interface/GeomDetUnit.h" 00025 #include "DataFormats/DetId/interface/DetId.h" 00026 00027 //DQM services 00028 #include "DQMServices/Core/interface/DQMStore.h" 00029 #include "FWCore/ServiceRegistry/interface/Service.h" 00030 00031 // tracker info 00032 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h" 00033 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" 00034 #include "DataFormats/SiStripDetId/interface/StripSubdetector.h" 00035 #include "DataFormats/SiPixelDetId/interface/PixelSubdetector.h" 00036 00037 // muon info 00038 #include "Geometry/Records/interface/MuonGeometryRecord.h" 00039 #include "Geometry/CSCGeometry/interface/CSCGeometry.h" 00040 #include "Geometry/DTGeometry/interface/DTGeometry.h" 00041 #include "Geometry/RPCGeometry/interface/RPCGeometry.h" 00042 #include "DataFormats/MuonDetId/interface/MuonSubdetId.h" 00043 #include "DataFormats/MuonDetId/interface/RPCDetId.h" 00044 #include "DataFormats/MuonDetId/interface/DTWireId.h" 00045 00046 // calorimeter info 00047 #include "Geometry/CaloGeometry/interface/CaloGeometry.h" 00048 #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h" 00049 #include "Geometry/CaloGeometry/interface/CaloCellGeometry.h" 00050 #include "DataFormats/EcalDetId/interface/EcalSubdetector.h" 00051 #include "DataFormats/HcalDetId/interface/HcalSubdetector.h" 00052 00053 // data in edm::event 00054 #include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h" 00055 #include "SimDataFormats/Vertex/interface/SimVertexContainer.h" 00056 #include "SimDataFormats/Track/interface/SimTrackContainer.h" 00057 #include "SimDataFormats/TrackingHit/interface/PSimHitContainer.h" 00058 #include "SimDataFormats/CaloHit/interface/PCaloHitContainer.h" 00059 00060 // helper files 00061 //#include <CLHEP/Vector/LorentzVector.h> 00062 #include "DataFormats/Math/interface/LorentzVector.h" 00063 #include <CLHEP/Units/SystemOfUnits.h> 00064 00065 #include <iostream> 00066 #include <stdlib.h> 00067 #include <string> 00068 #include <memory> 00069 #include <vector> 00070 00071 #include "TString.h" 00072 #include "DQMServices/Core/interface/MonitorElement.h" 00073 00074 class GlobalHitsAnalyzer : public edm::EDAnalyzer 00075 { 00076 00077 public: 00078 00079 //typedef std::vector<float> FloatVector; 00080 00081 explicit GlobalHitsAnalyzer(const edm::ParameterSet&); 00082 virtual ~GlobalHitsAnalyzer(); 00083 virtual void beginJob(const edm::EventSetup&); 00084 virtual void endJob(); 00085 virtual void analyze(const edm::Event&, const edm::EventSetup&); 00086 00087 private: 00088 00089 // production related methods 00090 void fillG4MC(const edm::Event&); 00091 void fillTrk(const edm::Event&, const edm::EventSetup&); 00092 void fillMuon(const edm::Event&, const edm::EventSetup&); 00093 void fillECal(const edm::Event&, const edm::EventSetup&); 00094 void fillHCal(const edm::Event&, const edm::EventSetup&); 00095 00096 00097 private: 00098 00099 // parameter information 00100 std::string fName; 00101 int verbosity; 00102 int frequency; 00103 int vtxunit; 00104 std::string label; 00105 bool getAllProvenances; 00106 bool printProvenanceInfo; 00107 00108 bool validHepMCevt; 00109 bool validG4VtxContainer; 00110 bool validG4trkContainer; 00111 bool validPxlBrlLow; 00112 bool validPxlBrlHigh; 00113 bool validPxlFwdLow; 00114 bool validPxlFwdHigh; 00115 bool validSiTIBLow; 00116 bool validSiTIBHigh; 00117 bool validSiTOBLow; 00118 bool validSiTOBHigh; 00119 bool validSiTIDLow; 00120 bool validSiTIDHigh; 00121 bool validSiTECLow; 00122 bool validSiTECHigh; 00123 bool validMuonCSC; 00124 bool validMuonDt; 00125 bool validMuonRPC; 00126 bool validEB; 00127 bool validEE; 00128 bool validPresh; 00129 bool validHcal; 00130 00131 DQMStore *dbe; 00132 00133 // G4MC info 00134 MonitorElement *meMCRGP[2]; 00135 MonitorElement *meMCG4Vtx[2]; 00136 MonitorElement *meGeantVtxX[2]; 00137 MonitorElement *meGeantVtxY[2]; 00138 MonitorElement *meGeantVtxZ[2]; 00139 MonitorElement *meMCG4Trk[2]; 00140 MonitorElement *meGeantTrkPt; 00141 MonitorElement *meGeantTrkE; 00142 int nRawGenPart; 00143 00144 // Electromagnetic info 00145 // ECal info 00146 MonitorElement *meCaloEcal[2]; 00147 MonitorElement *meCaloEcalE[2]; 00148 MonitorElement *meCaloEcalToF[2]; 00149 MonitorElement *meCaloEcalPhi; 00150 MonitorElement *meCaloEcalEta; 00151 edm::InputTag ECalEBSrc_; 00152 edm::InputTag ECalEESrc_; 00153 00154 // Preshower info 00155 MonitorElement *meCaloPreSh[2]; 00156 MonitorElement *meCaloPreShE[2]; 00157 MonitorElement *meCaloPreShToF[2]; 00158 MonitorElement *meCaloPreShPhi; 00159 MonitorElement *meCaloPreShEta; 00160 edm::InputTag ECalESSrc_; 00161 00162 // Hadronic info 00163 // HCal info 00164 MonitorElement *meCaloHcal[2]; 00165 MonitorElement *meCaloHcalE[2]; 00166 MonitorElement *meCaloHcalToF[2]; 00167 MonitorElement *meCaloHcalPhi; 00168 MonitorElement *meCaloHcalEta; 00169 edm::InputTag HCalSrc_; 00170 00171 // Tracker info 00172 // Pixel info 00173 int nPxlHits; 00174 MonitorElement *meTrackerPx[2]; 00175 MonitorElement *meTrackerPxPhi; 00176 MonitorElement *meTrackerPxEta; 00177 MonitorElement *meTrackerPxBToF; 00178 MonitorElement *meTrackerPxBR; 00179 MonitorElement *meTrackerPxFToF; 00180 MonitorElement *meTrackerPxFZ; 00181 edm::InputTag PxlBrlLowSrc_; 00182 edm::InputTag PxlBrlHighSrc_; 00183 edm::InputTag PxlFwdLowSrc_; 00184 edm::InputTag PxlFwdHighSrc_; 00185 00186 // Strip info 00187 int nSiHits; 00188 MonitorElement *meTrackerSi[2]; 00189 MonitorElement *meTrackerSiPhi; 00190 MonitorElement *meTrackerSiEta; 00191 MonitorElement *meTrackerSiBToF; 00192 MonitorElement *meTrackerSiBR; 00193 MonitorElement *meTrackerSiFToF; 00194 MonitorElement *meTrackerSiFZ; 00195 edm::InputTag SiTIBLowSrc_; 00196 edm::InputTag SiTIBHighSrc_; 00197 edm::InputTag SiTOBLowSrc_; 00198 edm::InputTag SiTOBHighSrc_; 00199 edm::InputTag SiTIDLowSrc_; 00200 edm::InputTag SiTIDHighSrc_; 00201 edm::InputTag SiTECLowSrc_; 00202 edm::InputTag SiTECHighSrc_; 00203 00204 // Muon info 00205 MonitorElement *meMuon[2]; 00206 MonitorElement *meMuonPhi; 00207 MonitorElement *meMuonEta; 00208 int nMuonHits; 00209 00210 // DT info 00211 MonitorElement *meMuonDtToF[2]; 00212 MonitorElement *meMuonDtR; 00213 edm::InputTag MuonDtSrc_; 00214 // CSC info 00215 MonitorElement *meMuonCscToF[2]; 00216 MonitorElement *meMuonCscZ; 00217 edm::InputTag MuonCscSrc_; 00218 // RPC info 00219 MonitorElement *meMuonRpcFToF[2]; 00220 MonitorElement *meMuonRpcFZ; 00221 MonitorElement *meMuonRpcBToF[2]; 00222 MonitorElement *meMuonRpcBR; 00223 edm::InputTag MuonRpcSrc_; 00224 00225 // private statistics information 00226 unsigned int count; 00227 00228 }; // end class declaration 00229 00230 #endif 00231 00232 #ifndef GlobalHitMap 00233 #define GlobalHitMap 00234 // geometry mapping 00235 static const int dTrk = 1; 00236 static const int sdPxlBrl = 1; 00237 static const int sdPxlFwd = 2; 00238 static const int sdSiTIB = 3; 00239 static const int sdSiTID = 4; 00240 static const int sdSiTOB = 5; 00241 static const int sdSiTEC = 6; 00242 00243 static const int dMuon = 2; 00244 static const int sdMuonDT = 1; 00245 static const int sdMuonCSC = 2; 00246 static const int sdMuonRPC = 3; 00247 static const int sdMuonRPCRgnBrl = 0; 00248 static const int sdMuonRPCRgnFwdp = 1; 00249 static const int sdMuonRPCRgnFwdn = -1; 00250 00251 static const int dEcal = 3; 00252 static const int sdEcalBrl = 1; 00253 static const int sdEcalFwd = 2; 00254 static const int sdEcalPS = 3; 00255 static const int sdEcalTT = 4; 00256 static const int sdEcalLPnD = 5; 00257 00258 static const int dHcal = 4; 00259 static const int sdHcalEmpty = 0; 00260 static const int sdHcalBrl = 1; 00261 static const int sdHcalEC = 2; 00262 static const int sdHcalOut = 3; 00263 static const int sdHcalFwd = 4; 00264 static const int sdHcalTT = 5; 00265 static const int sdHcalCalib = 6; 00266 static const int sdHcalCompst = 7; 00267 00268 #endif