Go to the documentation of this file.00001 #ifndef MuonSimHitsValidAnalyzer_h
00002 #define MuonSimHitsValidAnalyzer_h
00003
00005 #include "FWCore/Framework/interface/EDAnalyzer.h"
00006 #include "FWCore/Framework/interface/Frameworkfwd.h"
00007 #include "FWCore/Framework/interface/Event.h"
00008 #include "FWCore/Framework/interface/EventSetup.h"
00009 #include "DataFormats/Common/interface/Handle.h"
00010 #include "FWCore/Framework/interface/ESHandle.h"
00011 #include "DataFormats/Provenance/interface/Provenance.h"
00012 #include "FWCore/Framework/interface/MakerMacros.h"
00013 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00014 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00015 #include "FWCore/ServiceRegistry/interface/Service.h"
00016 #include "Geometry/CommonDetUnit/interface/GeomDetUnit.h"
00017 #include "DataFormats/GeometrySurface/interface/BoundPlane.h"
00018 #include "DataFormats/DetId/interface/DetId.h"
00019
00020 #include "DQMServices/Core/interface/DQMStore.h"
00021 #include "DQMServices/Core/interface/MonitorElement.h"
00022
00024 #include "Geometry/Records/interface/MuonGeometryRecord.h"
00025 #include "Geometry/CSCGeometry/interface/CSCGeometry.h"
00026 #include "Geometry/DTGeometry/interface/DTGeometry.h"
00027 #include "Geometry/RPCGeometry/interface/RPCGeometry.h"
00028 #include "DataFormats/MuonDetId/interface/MuonSubdetId.h"
00029
00031 #include "DataFormats/MuonDetId/interface/CSCDetId.h"
00032
00034
00035 #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"
00036 #include "SimDataFormats/Vertex/interface/SimVertexContainer.h"
00037 #include "SimDataFormats/Track/interface/SimTrackContainer.h"
00038 #include "SimDataFormats/TrackingHit/interface/PSimHitContainer.h"
00039
00041 #include <CLHEP/Vector/LorentzVector.h>
00042 #include "CLHEP/Units/GlobalSystemOfUnits.h"
00043
00044 #include <iostream>
00045
00046 #include <stdlib.h>
00047 #include <string>
00048 #include <memory>
00049 #include <vector>
00050
00051 #include "TString.h"
00052
00053 class TH1F;
00054 class TFile;
00055
00056 namespace edm {
00057 class ParameterSet; class Event; class EventSetup;}
00058
00059 class MuonSimHitsValidAnalyzer : public edm::EDAnalyzer
00060 {
00061
00062 public:
00063
00064 typedef std::vector<float> FloatVector;
00065 typedef std::vector<int> IntegerVector;
00066 typedef std::vector<long int> LongIntegerVector;
00067 typedef std::vector<unsigned int> UnsigIntegerVector;
00068
00069 explicit MuonSimHitsValidAnalyzer(const edm::ParameterSet&);
00070 virtual ~MuonSimHitsValidAnalyzer();
00071
00072 virtual void beginJob();
00073 virtual void endJob();
00074 virtual void analyze(const edm::Event&, const edm::EventSetup&);
00075
00076 private:
00077
00078 void fillCSC(const edm::Event&, const edm::EventSetup&);
00079 void fillDT(const edm::Event&, const edm::EventSetup&);
00080 void fillRPC(const edm::Event&, const edm::EventSetup&);
00081
00082 void bookHistos_DT();
00083 void bookHistos_CSC();
00084 void bookHistos_RPC();
00085 void saveHistos_DT();
00086 void saveHistos_CSC();
00087 void saveHistos_RPC();
00088
00089 private:
00090
00092 std::string fName;
00093 int verbosity;
00094 std::string label;
00095 bool getAllProvenances;
00096 bool printProvenanceInfo;
00097
00098 std::string DToutputFile_;
00099 std::string CSCoutputFile_;
00100 std::string RPCoutputFile_;
00101
00102 TFile *theDTFile;
00103 TFile *theCSCFile;
00104 TFile *theRPCFile;
00105
00106
00108 int nRawGenPart;
00109
00110 unsigned int iden;
00111 Int_t wheel, station, sector, superlayer, layer, wire;
00112 Int_t region, ring, subsector, roll;
00113 Int_t path, pathchamber;
00114 Int_t touch1, touch4, nummu_DT, nummu_RPC, nummu_CSC;
00115 Int_t touche1, touche4;
00116 Float_t pow6;
00117 Float_t mom1, mom4, mome1, mome4;
00118 Float_t costeta, radius,sinteta;
00119 Float_t globposx, globposy, globposz;
00120 Float_t globposphi, globposeta;
00121
00123
00124 edm::InputTag CSCHitsSrc_;
00125 edm::InputTag DTHitsSrc_;
00126 edm::InputTag RPCHitsSrc_;
00127
00128
00129 DQMStore* dbeDT_;
00130 DQMStore* dbeCSC_;
00131 DQMStore* dbeRPC_;
00132
00133
00134
00135
00136 MonitorElement* meAllDTHits;
00137 MonitorElement* meMuDTHits;
00138 MonitorElement* meToF;
00139 MonitorElement* meEnergyLoss;
00140 MonitorElement* meMomentumMB1;
00141 MonitorElement* meMomentumMB4;
00142 MonitorElement* meLossMomIron;
00143 MonitorElement* meLocalXvsZ;
00144 MonitorElement* meLocalXvsY;
00145 MonitorElement* meGlobalXvsZ;
00146 MonitorElement* meGlobalXvsY;
00147 MonitorElement* meGlobalXvsZWm2;
00148 MonitorElement* meGlobalXvsZWm1;
00149 MonitorElement* meGlobalXvsZW0;
00150 MonitorElement* meGlobalXvsZWp1;
00151 MonitorElement* meGlobalXvsZWp2;
00152 MonitorElement* meGlobalXvsYWm2;
00153 MonitorElement* meGlobalXvsYWm1;
00154 MonitorElement* meGlobalXvsYW0;
00155 MonitorElement* meGlobalXvsYWp1;
00156 MonitorElement* meGlobalXvsYWp2;
00157 MonitorElement* meWheelOccup;
00158 MonitorElement* meStationOccup;
00159 MonitorElement* meSectorOccup;
00160 MonitorElement* meSuperLOccup;
00161 MonitorElement* meLayerOccup;
00162 MonitorElement* meWireOccup;
00163 MonitorElement* mePathMuon;
00164 MonitorElement* meChamberOccup;
00165 MonitorElement* meHitRadius;
00166 MonitorElement* meCosTheta;
00167 MonitorElement* meGlobalEta;
00168 MonitorElement* meGlobalPhi;
00169
00170
00171 MonitorElement* meAllCSCHits;
00172 MonitorElement* meMuCSCHits;
00173 MonitorElement* meEnergyLoss_111;
00174 MonitorElement* meToF_311;
00175 MonitorElement* meEnergyLoss_112;
00176 MonitorElement* meToF_312;
00177 MonitorElement* meEnergyLoss_113;
00178 MonitorElement* meToF_313;
00179 MonitorElement* meEnergyLoss_114;
00180 MonitorElement* meToF_314;
00181 MonitorElement* meEnergyLoss_121;
00182 MonitorElement* meToF_321;
00183 MonitorElement* meEnergyLoss_122;
00184 MonitorElement* meToF_322;
00185 MonitorElement* meEnergyLoss_131;
00186 MonitorElement* meToF_331;
00187 MonitorElement* meEnergyLoss_132;
00188 MonitorElement* meToF_332;
00189 MonitorElement* meEnergyLoss_141;
00190 MonitorElement* meToF_341;
00191 MonitorElement* meEnergyLoss_211;
00192 MonitorElement* meToF_411;
00193 MonitorElement* meEnergyLoss_212;
00194 MonitorElement* meToF_412;
00195 MonitorElement* meEnergyLoss_213;
00196 MonitorElement* meToF_413;
00197 MonitorElement* meEnergyLoss_214;
00198 MonitorElement* meToF_414;
00199 MonitorElement* meEnergyLoss_221;
00200 MonitorElement* meToF_421;
00201 MonitorElement* meEnergyLoss_222;
00202 MonitorElement* meToF_422;
00203 MonitorElement* meEnergyLoss_231;
00204 MonitorElement* meToF_431;
00205 MonitorElement* meEnergyLoss_232;
00206 MonitorElement* meToF_432;
00207 MonitorElement* meEnergyLoss_241;
00208 MonitorElement* meToF_441;
00209
00210
00211 MonitorElement* meAllRPCHits;
00212 MonitorElement* meMuRPCHits;
00213 MonitorElement* meRegionOccup;
00214 MonitorElement* meRingOccBar;
00215 MonitorElement* meRingOccEndc;
00216 MonitorElement* meStatOccBar;
00217 MonitorElement* meStatOccEndc;
00218 MonitorElement* meSectorOccBar;
00219 MonitorElement* meSectorOccEndc;
00220 MonitorElement* meLayerOccBar;
00221 MonitorElement* meLayerOccEndc;
00222 MonitorElement* meSubSectOccBar;
00223 MonitorElement* meSubSectOccEndc;
00224 MonitorElement* meRollOccBar;
00225 MonitorElement* meRollOccEndc;
00226 MonitorElement* meElossBar;
00227 MonitorElement* meElossEndc;
00228 MonitorElement* mepathRPC;
00229 MonitorElement* meMomRB1;
00230 MonitorElement* meMomRB4;
00231 MonitorElement* meLossMomBar;
00232 MonitorElement* meMomRE1;
00233 MonitorElement* meMomRE4;
00234 MonitorElement* meLossMomEndc;
00235 MonitorElement* meLocalXvsYBar;
00236 MonitorElement* meGlobalXvsZBar;
00237 MonitorElement* meGlobalXvsYBar;
00238 MonitorElement* meLocalXvsYEndc;
00239 MonitorElement* meGlobalXvsZEndc;
00240 MonitorElement* meGlobalXvsYEndc;
00241 MonitorElement* meHitRadiusBar;
00242 MonitorElement* meCosThetaBar;
00243 MonitorElement* meHitRadiusEndc;
00244 MonitorElement* meCosThetaEndc;
00245
00246
00248 unsigned int count;
00249
00250 };
00251
00253
00254 static const int dMuon = 2;
00255
00256 static const int sdMuonDT = 1;
00257 static const int sdMuonCSC = 2;
00258 static const int sdMuonRPC = 3;
00259
00260 #endif