CMS 3D CMS Logo

GlobalHitsAnalyzer.h

Go to the documentation of this file.
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

Generated on Tue Jun 9 17:49:19 2009 for CMSSW by  doxygen 1.5.4