00001
00010 #include "Validation/GlobalHits/interface/GlobalHitsProdHist.h"
00011 #include "Geometry/Records/interface/CaloGeometryRecord.h"
00012
00013 GlobalHitsProdHist::GlobalHitsProdHist(const edm::ParameterSet& iPSet) :
00014 fName(""), verbosity(0), frequency(0), vtxunit(0),
00015 getAllProvenances(false), printProvenanceInfo(false), count(0)
00016 {
00017 std::string MsgLoggerCat = "GlobalHitsProdHist_GlobalHitsProdHist";
00018
00019
00020 fName = iPSet.getUntrackedParameter<std::string>("Name");
00021 verbosity = iPSet.getUntrackedParameter<int>("Verbosity");
00022 frequency = iPSet.getUntrackedParameter<int>("Frequency");
00023 vtxunit = iPSet.getUntrackedParameter<int>("VtxUnit");
00024 edm::ParameterSet m_Prov =
00025 iPSet.getParameter<edm::ParameterSet>("ProvenanceLookup");
00026 getAllProvenances =
00027 m_Prov.getUntrackedParameter<bool>("GetAllProvenances");
00028 printProvenanceInfo =
00029 m_Prov.getUntrackedParameter<bool>("PrintProvenanceInfo");
00030
00031
00032 PxlBrlLowSrc_ = iPSet.getParameter<edm::InputTag>("PxlBrlLowSrc");
00033 PxlBrlHighSrc_ = iPSet.getParameter<edm::InputTag>("PxlBrlHighSrc");
00034 PxlFwdLowSrc_ = iPSet.getParameter<edm::InputTag>("PxlFwdLowSrc");
00035 PxlFwdHighSrc_ = iPSet.getParameter<edm::InputTag>("PxlFwdHighSrc");
00036
00037 SiTIBLowSrc_ = iPSet.getParameter<edm::InputTag>("SiTIBLowSrc");
00038 SiTIBHighSrc_ = iPSet.getParameter<edm::InputTag>("SiTIBHighSrc");
00039 SiTOBLowSrc_ = iPSet.getParameter<edm::InputTag>("SiTOBLowSrc");
00040 SiTOBHighSrc_ = iPSet.getParameter<edm::InputTag>("SiTOBHighSrc");
00041 SiTIDLowSrc_ = iPSet.getParameter<edm::InputTag>("SiTIDLowSrc");
00042 SiTIDHighSrc_ = iPSet.getParameter<edm::InputTag>("SiTIDHighSrc");
00043 SiTECLowSrc_ = iPSet.getParameter<edm::InputTag>("SiTECLowSrc");
00044 SiTECHighSrc_ = iPSet.getParameter<edm::InputTag>("SiTECHighSrc");
00045
00046 MuonCscSrc_ = iPSet.getParameter<edm::InputTag>("MuonCscSrc");
00047 MuonDtSrc_ = iPSet.getParameter<edm::InputTag>("MuonDtSrc");
00048 MuonRpcSrc_ = iPSet.getParameter<edm::InputTag>("MuonRpcSrc");
00049
00050 ECalEBSrc_ = iPSet.getParameter<edm::InputTag>("ECalEBSrc");
00051 ECalEESrc_ = iPSet.getParameter<edm::InputTag>("ECalEESrc");
00052 ECalESSrc_ = iPSet.getParameter<edm::InputTag>("ECalESSrc");
00053
00054 HCalSrc_ = iPSet.getParameter<edm::InputTag>("HCalSrc");
00055
00056
00057
00058 verbosity %= 10;
00059
00060
00061 if (verbosity >= 0) {
00062 edm::LogInfo(MsgLoggerCat)
00063 << "\n===============================\n"
00064 << "Initialized as EDProducer with parameter values:\n"
00065 << " Name = " << fName << "\n"
00066 << " Verbosity = " << verbosity << "\n"
00067 << " Frequency = " << frequency << "\n"
00068 << " VtxUnit = " << vtxunit << "\n"
00069 << " GetProv = " << getAllProvenances << "\n"
00070 << " PrintProv = " << printProvenanceInfo << "\n"
00071 << " PxlBrlLowSrc = " << PxlBrlLowSrc_.label()
00072 << ":" << PxlBrlLowSrc_.instance() << "\n"
00073 << " PxlBrlHighSrc = " << PxlBrlHighSrc_.label()
00074 << ":" << PxlBrlHighSrc_.instance() << "\n"
00075 << " PxlFwdLowSrc = " << PxlFwdLowSrc_.label()
00076 << ":" << PxlBrlLowSrc_.instance() << "\n"
00077 << " PxlFwdHighSrc = " << PxlFwdHighSrc_.label()
00078 << ":" << PxlBrlHighSrc_.instance() << "\n"
00079 << " SiTIBLowSrc = " << SiTIBLowSrc_.label()
00080 << ":" << SiTIBLowSrc_.instance() << "\n"
00081 << " SiTIBHighSrc = " << SiTIBHighSrc_.label()
00082 << ":" << SiTIBHighSrc_.instance() << "\n"
00083 << " SiTOBLowSrc = " << SiTOBLowSrc_.label()
00084 << ":" << SiTOBLowSrc_.instance() << "\n"
00085 << " SiTOBHighSrc = " << SiTOBHighSrc_.label()
00086 << ":" << SiTOBHighSrc_.instance() << "\n"
00087 << " SiTIDLowSrc = " << SiTIDLowSrc_.label()
00088 << ":" << SiTIDLowSrc_.instance() << "\n"
00089 << " SiTIDHighSrc = " << SiTIDHighSrc_.label()
00090 << ":" << SiTIDHighSrc_.instance() << "\n"
00091 << " SiTECLowSrc = " << SiTECLowSrc_.label()
00092 << ":" << SiTECLowSrc_.instance() << "\n"
00093 << " SiTECHighSrc = " << SiTECHighSrc_.label()
00094 << ":" << SiTECHighSrc_.instance() << "\n"
00095 << " MuonCscSrc = " << MuonCscSrc_.label()
00096 << ":" << MuonCscSrc_.instance() << "\n"
00097 << " MuonDtSrc = " << MuonDtSrc_.label()
00098 << ":" << MuonDtSrc_.instance() << "\n"
00099 << " MuonRpcSrc = " << MuonRpcSrc_.label()
00100 << ":" << MuonRpcSrc_.instance() << "\n"
00101 << " ECalEBSrc = " << ECalEBSrc_.label()
00102 << ":" << ECalEBSrc_.instance() << "\n"
00103 << " ECalEESrc = " << ECalEESrc_.label()
00104 << ":" << ECalEESrc_.instance() << "\n"
00105 << " ECalESSrc = " << ECalESSrc_.label()
00106 << ":" << ECalESSrc_.instance() << "\n"
00107 << " HCalSrc = " << HCalSrc_.label()
00108 << ":" << HCalSrc_.instance() << "\n"
00109 << "===============================\n";
00110 }
00111
00112
00113 Char_t hname[200];
00114 Char_t htitle[200];
00115
00116
00117 sprintf(hname,"hMCRGP1");
00118 histName_.push_back(hname);
00119 sprintf(htitle,"RawGenParticles");
00120 hMCRGP[0] = new TH1F(hname,htitle,100,0.,5000.);
00121 sprintf(hname,"hMCRGP2");
00122 histName_.push_back(hname);
00123 hMCRGP[1] = new TH1F(hname,htitle,100,0.,500.);
00124 for (Int_t i = 0; i < 2; ++i) {
00125 hMCRGP[i]->GetXaxis()->SetTitle("Number of Raw Generated Particles");
00126 hMCRGP[i]->GetYaxis()->SetTitle("Count");
00127 histMap_[hMCRGP[i]->GetName()] = hMCRGP[i];
00128 }
00129
00130 sprintf(hname,"hMCG4Vtx1");
00131 histName_.push_back(hname);
00132 sprintf(htitle,"G4 Vertices");
00133 hMCG4Vtx[0] = new TH1F(hname,htitle,100,0.,50000.);
00134 sprintf(hname,"hMCG4Vtx2");
00135 histName_.push_back(hname);
00136 hMCG4Vtx[1] = new TH1F(hname,htitle,100,-0.5,99.5);
00137 for (Int_t i = 0; i < 2; ++i) {
00138 hMCG4Vtx[i]->GetXaxis()->SetTitle("Number of Vertices");
00139 hMCG4Vtx[i]->GetYaxis()->SetTitle("Count");
00140 histMap_[hMCG4Vtx[i]->GetName()] = hMCG4Vtx[i];
00141 }
00142
00143 sprintf(hname,"hMCG4Trk1");
00144 histName_.push_back(hname);
00145 sprintf(htitle,"G4 Tracks");
00146 hMCG4Trk[0] = new TH1F(hname,htitle,150,0.,15000.);
00147 sprintf(hname,"hMCG4Trk2");
00148 histName_.push_back(hname);
00149 hMCG4Trk[1] = new TH1F(hname,htitle,150,-0.5,99.5);
00150 for (Int_t i = 0; i < 2; ++i) {
00151 hMCG4Trk[i]->GetXaxis()->SetTitle("Number of Tracks");
00152 hMCG4Trk[i]->GetYaxis()->SetTitle("Count");
00153 histMap_[hMCG4Trk[i]->GetName()] = hMCG4Trk[i];
00154 }
00155
00156 sprintf(hname,"hGeantVtxX1");
00157 histName_.push_back(hname);
00158 sprintf(htitle,"Geant vertex x/micrometer");
00159 hGeantVtxX[0] = new TH1F(hname,htitle,100,-8000000.,8000000.);
00160 sprintf(hname,"hGeantVtxX2");
00161 histName_.push_back(hname);
00162 hGeantVtxX[1] = new TH1F(hname,htitle,100,-50.,50.);
00163 for (Int_t i = 0; i < 2; ++i) {
00164 hGeantVtxX[i]->GetXaxis()->SetTitle("x of Vertex (um)");
00165 hGeantVtxX[i]->GetYaxis()->SetTitle("Count");
00166 histMap_[hGeantVtxX[i]->GetName()] = hGeantVtxX[i];
00167 }
00168
00169 sprintf(hname,"hGeantVtxY1");
00170 histName_.push_back(hname);
00171 sprintf(htitle,"Geant vertex y/micrometer");
00172 hGeantVtxY[0] = new TH1F(hname,htitle,100,-8000000,8000000.);
00173 sprintf(hname,"hGeantVtxY2");
00174 histName_.push_back(hname);
00175 hGeantVtxY[1] = new TH1F(hname,htitle,100,-50.,50.);
00176 for (Int_t i = 0; i < 2; ++i) {
00177 hGeantVtxY[i]->GetXaxis()->SetTitle("y of Vertex (um)");
00178 hGeantVtxY[i]->GetYaxis()->SetTitle("Count");
00179 histMap_[hGeantVtxY[i]->GetName()] = hGeantVtxY[i];
00180 }
00181
00182 sprintf(hname,"hGeantVtxZ1");
00183 histName_.push_back(hname);
00184 sprintf(htitle,"Geant vertex z/millimeter");
00185 hGeantVtxZ[0] = new TH1F(hname,htitle,100,-11000.,11000.);
00186 sprintf(hname,"hGeantVtxZ2");
00187 histName_.push_back(hname);
00188 hGeantVtxZ[1] = new TH1F(hname,htitle,100,-250.,250.);
00189 for (Int_t i = 0; i < 2; ++i) {
00190 hGeantVtxZ[i]->GetXaxis()->SetTitle("z of Vertex (mm)");
00191 hGeantVtxZ[i]->GetYaxis()->SetTitle("Count");
00192 histMap_[hGeantVtxZ[i]->GetName()] = hGeantVtxZ[i];
00193 }
00194
00195 sprintf(hname,"hGeantTrkPt");
00196 histName_.push_back(hname);
00197 sprintf(htitle,"Geant track pt/GeV");
00198 hGeantTrkPt = new TH1F(hname,htitle,100,0.,200.);
00199 hGeantTrkPt->GetXaxis()->SetTitle("pT of Track (GeV)");
00200 hGeantTrkPt->GetYaxis()->SetTitle("Count");
00201 histMap_[hGeantTrkPt->GetName()] = hGeantTrkPt;
00202
00203 sprintf(hname,"hGeantTrkE");
00204 histName_.push_back(hname);
00205 sprintf(htitle,"Geant track E/GeV");
00206 hGeantTrkE = new TH1F(hname,htitle,100,0.,5000.);
00207 hGeantTrkE->GetXaxis()->SetTitle("E of Track (GeV)");
00208 hGeantTrkE->GetYaxis()->SetTitle("Count");
00209 histMap_[hGeantTrkE->GetName()] = hGeantTrkE;
00210
00211
00212 sprintf(hname,"hCaloEcal1");
00213 histName_.push_back(hname);
00214 sprintf(htitle,"Ecal hits");
00215 hCaloEcal[0] = new TH1F(hname,htitle,100,0.,10000.);
00216 sprintf(hname,"hCaloEcal2");
00217 histName_.push_back(hname);
00218 hCaloEcal[1] = new TH1F(hname,htitle,100,-0.5,99.5);
00219
00220 sprintf(hname,"hCaloEcalE1");
00221 histName_.push_back(hname);
00222 sprintf(htitle,"Ecal hits, energy/GeV");
00223 hCaloEcalE[0] = new TH1F(hname,htitle,100,0.,10.);
00224 sprintf(hname,"hCaloEcalE2");
00225 histName_.push_back(hname);
00226 hCaloEcalE[1] = new TH1F(hname,htitle,100,0.,0.1);
00227
00228 sprintf(hname,"hCaloEcalToF1");
00229 histName_.push_back(hname);
00230 sprintf(htitle,"Ecal hits, ToF/ns");
00231 hCaloEcalToF[0] = new TH1F(hname,htitle,100,0.,1000.);
00232 sprintf(hname,"hCaloEcalToF2");
00233 histName_.push_back(hname);
00234 hCaloEcalToF[1] = new TH1F(hname,htitle,100,0.,100.);
00235
00236 for (Int_t i = 0; i < 2; ++i) {
00237 hCaloEcal[i]->GetXaxis()->SetTitle("Number of Hits");
00238 hCaloEcal[i]->GetYaxis()->SetTitle("Count");
00239 histMap_[hCaloEcal[i]->GetName()] = hCaloEcal[i];
00240 hCaloEcalE[i]->GetXaxis()->SetTitle("Energy of Hits (GeV)");
00241 hCaloEcalE[i]->GetYaxis()->SetTitle("Count");
00242 histMap_[hCaloEcalE[i]->GetName()] = hCaloEcalE[i];
00243 hCaloEcalToF[i]->GetXaxis()->SetTitle("Time of Flight of Hits (ns)");
00244 hCaloEcalToF[i]->GetYaxis()->SetTitle("Count");
00245 histMap_[hCaloEcalToF[i]->GetName()] = hCaloEcalToF[i];
00246 }
00247
00248 sprintf(hname,"hCaloEcalPhi");
00249 histName_.push_back(hname);
00250 sprintf(htitle,"Ecal hits, phi/rad");
00251 hCaloEcalPhi = new TH1F(hname,htitle,100,-3.2,3.2);
00252 hCaloEcalPhi->GetXaxis()->SetTitle("Phi of Hits (rad)");
00253 hCaloEcalPhi->GetYaxis()->SetTitle("Count");
00254 histMap_[hCaloEcalPhi->GetName()] = hCaloEcalPhi;
00255
00256 sprintf(hname,"hCaloEcalEta");
00257 histName_.push_back(hname);
00258 sprintf(htitle,"Ecal hits, eta");
00259 hCaloEcalEta = new TH1F(hname,htitle,100,-5.5,5.5);
00260 hCaloEcalEta->GetXaxis()->SetTitle("Eta of Hits");
00261 hCaloEcalEta->GetYaxis()->SetTitle("Count");
00262 histMap_[hCaloEcalEta->GetName()] = hCaloEcalEta;
00263
00264 sprintf(hname,"hCaloPreSh1");
00265 histName_.push_back(hname);
00266 sprintf(htitle,"PreSh hits");
00267 hCaloPreSh[0] = new TH1F(hname,htitle,100,0.,10000.);
00268 sprintf(hname,"hCaloPreSh2");
00269 histName_.push_back(hname);
00270 hCaloPreSh[1] = new TH1F(hname,htitle,100,-0.5,99.5);
00271
00272 sprintf(hname,"hCaloPreShE1");
00273 histName_.push_back(hname);
00274 sprintf(htitle,"PreSh hits, energy/GeV");
00275 hCaloPreShE[0] = new TH1F(hname,htitle,100,0.,10.);
00276 sprintf(hname,"hCaloPreShE2");
00277 histName_.push_back(hname);
00278 hCaloPreShE[1] = new TH1F(hname,htitle,100,0.,0.1);
00279
00280 sprintf(hname,"hCaloPreShToF1");
00281 histName_.push_back(hname);
00282 sprintf(htitle,"PreSh hits, ToF/ns");
00283 hCaloPreShToF[0] = new TH1F(hname,htitle,100,0.,1000.);
00284 sprintf(hname,"hCaloPreShToF2");
00285 histName_.push_back(hname);
00286 hCaloPreShToF[1] = new TH1F(hname,htitle,100,0.,100.);
00287
00288 for (Int_t i = 0; i < 2; ++i) {
00289 hCaloPreSh[i]->GetXaxis()->SetTitle("Number of Hits");
00290 hCaloPreSh[i]->GetYaxis()->SetTitle("Count");
00291 histMap_[hCaloPreSh[i]->GetName()] = hCaloPreSh[i];
00292 hCaloPreShE[i]->GetXaxis()->SetTitle("Energy of Hits (GeV)");
00293 hCaloPreShE[i]->GetYaxis()->SetTitle("Count");
00294 histMap_[hCaloPreShE[i]->GetName()] = hCaloPreShE[i];
00295 hCaloPreShToF[i]->GetXaxis()->SetTitle("Time of Flight of Hits (ns)");
00296 hCaloPreShToF[i]->GetYaxis()->SetTitle("Count");
00297 histMap_[hCaloPreShToF[i]->GetName()] = hCaloPreShToF[i];
00298 }
00299
00300 sprintf(hname,"hCaloPreShPhi");
00301 histName_.push_back(hname);
00302 sprintf(htitle,"PreSh hits, phi/rad");
00303 hCaloPreShPhi = new TH1F(hname,htitle,100,-3.2,3.2);
00304 hCaloPreShPhi->GetXaxis()->SetTitle("Phi of Hits (rad)");
00305 hCaloPreShPhi->GetYaxis()->SetTitle("Count");
00306 histMap_[hCaloPreShPhi->GetName()] = hCaloPreShPhi;
00307
00308 sprintf(hname,"hCaloPreShEta");
00309 histName_.push_back(hname);
00310 sprintf(htitle,"PreSh hits, eta");
00311 hCaloPreShEta = new TH1F(hname,htitle,100,-5.5,5.5);
00312 hCaloPreShEta->GetXaxis()->SetTitle("Eta of Hits");
00313 hCaloPreShEta->GetYaxis()->SetTitle("Count");
00314 histMap_[hCaloPreShEta->GetName()] = hCaloPreShEta;
00315
00316
00317 sprintf(hname,"hCaloHcal1");
00318 histName_.push_back(hname);
00319 sprintf(htitle,"Hcal hits");
00320 hCaloHcal[0] = new TH1F(hname,htitle,100,0.,10000.);
00321 sprintf(hname,"hCaloHcal2");
00322 histName_.push_back(hname);
00323 hCaloHcal[1] = new TH1F(hname,htitle,100,-0.5,99.5);
00324
00325 sprintf(hname,"hCaloHcalE1");
00326 histName_.push_back(hname);
00327 sprintf(htitle,"Hcal hits, energy/GeV");
00328 hCaloHcalE[0] = new TH1F(hname,htitle,100,0.,10.);
00329 sprintf(hname,"hCaloHcalE2");
00330 histName_.push_back(hname);
00331 hCaloHcalE[1] = new TH1F(hname,htitle,100,0.,0.1);
00332
00333 sprintf(hname,"hCaloHcalToF1");
00334 histName_.push_back(hname);
00335 sprintf(htitle,"Hcal hits, ToF/ns");
00336 hCaloHcalToF[0] = new TH1F(hname,htitle,100,0.,1000.);
00337 sprintf(hname,"hCaloHcalToF2");
00338 histName_.push_back(hname);
00339 hCaloHcalToF[1] = new TH1F(hname,htitle,100,0.,100.);
00340
00341 for (Int_t i = 0; i < 2; ++i) {
00342 hCaloHcal[i]->GetXaxis()->SetTitle("Number of Hits");
00343 hCaloHcal[i]->GetYaxis()->SetTitle("Count");
00344 histMap_[hCaloHcal[i]->GetName()] = hCaloHcal[i];
00345 hCaloHcalE[i]->GetXaxis()->SetTitle("Energy of Hits (GeV)");
00346 hCaloHcalE[i]->GetYaxis()->SetTitle("Count");
00347 histMap_[hCaloHcalE[i]->GetName()] = hCaloHcalE[i];
00348 hCaloHcalToF[i]->GetXaxis()->SetTitle("Time of Flight of Hits (ns)");
00349 hCaloHcalToF[i]->GetYaxis()->SetTitle("Count");
00350 histMap_[hCaloHcalToF[i]->GetName()] = hCaloHcalToF[i];
00351 }
00352
00353 sprintf(hname,"hCaloHcalPhi");
00354 histName_.push_back(hname);
00355 sprintf(htitle,"Hcal hits, phi/rad");
00356 hCaloHcalPhi = new TH1F(hname,htitle,100,-3.2,3.2);
00357 hCaloHcalPhi->GetXaxis()->SetTitle("Phi of Hits (rad)");
00358 hCaloHcalPhi->GetYaxis()->SetTitle("Count");
00359 histMap_[hCaloHcalPhi->GetName()] = hCaloHcalPhi;
00360
00361 sprintf(hname,"hCaloHcalEta");
00362 histName_.push_back(hname);
00363 sprintf(htitle,"Hcal hits, eta");
00364 hCaloHcalEta = new TH1F(hname,htitle,100,-5.5,5.5);
00365 hCaloHcalEta->GetXaxis()->SetTitle("Eta of Hits");
00366 hCaloHcalEta->GetYaxis()->SetTitle("Count");
00367 histMap_[hCaloHcalEta->GetName()] = hCaloHcalEta;
00368
00369
00370 sprintf(hname,"hTrackerPx1");
00371 histName_.push_back(hname);
00372 sprintf(htitle,"Pixel hits");
00373 hTrackerPx[0] = new TH1F(hname,htitle,100,0.,10000.);
00374 sprintf(hname,"hTrackerPx2");
00375 histName_.push_back(hname);
00376 hTrackerPx[1] = new TH1F(hname,htitle,100,-0.5,99.5);
00377 for (Int_t i = 0; i < 2; ++i) {
00378 hTrackerPx[i]->GetXaxis()->SetTitle("Number of Pixel Hits");
00379 hTrackerPx[i]->GetYaxis()->SetTitle("Count");
00380 histMap_[hTrackerPx[i]->GetName()] = hTrackerPx[i];
00381 }
00382
00383 sprintf(hname,"hTrackerPxPhi");
00384 histName_.push_back(hname);
00385 sprintf(htitle,"Pixel hits phi/rad");
00386 hTrackerPxPhi = new TH1F(hname,htitle,100,-3.2,3.2);
00387 hTrackerPxPhi->GetXaxis()->SetTitle("Phi of Hits (rad)");
00388 hTrackerPxPhi->GetYaxis()->SetTitle("Count");
00389 histMap_[hTrackerPxPhi->GetName()] = hTrackerPxPhi;
00390
00391 sprintf(hname,"hTrackerPxEta");
00392 histName_.push_back(hname);
00393 sprintf(htitle,"Pixel hits eta");
00394 hTrackerPxEta = new TH1F(hname,htitle,100,-3.5,3.5);
00395 hTrackerPxEta->GetXaxis()->SetTitle("Eta of Hits");
00396 hTrackerPxEta->GetYaxis()->SetTitle("Count");
00397 histMap_[hTrackerPxEta->GetName()] = hTrackerPxEta;
00398
00399 sprintf(hname,"hTrackerPxBToF");
00400 histName_.push_back(hname);
00401 sprintf(htitle,"Pixel barrel hits, ToF/ns");
00402 hTrackerPxBToF = new TH1F(hname,htitle,100,0.,40.);
00403 hTrackerPxBToF->GetXaxis()->SetTitle("Time of Flight of Hits (ns)");
00404 hTrackerPxBToF->GetYaxis()->SetTitle("Count");
00405 histMap_[hTrackerPxBToF->GetName()] = hTrackerPxBToF;
00406
00407 sprintf(hname,"hTrackerPxBR");
00408 histName_.push_back(hname);
00409 sprintf(htitle,"Pixel barrel hits, R/cm");
00410 hTrackerPxBR = new TH1F(hname,htitle,100,0.,50.);
00411 hTrackerPxBR->GetXaxis()->SetTitle("R of Hits (cm)");
00412 hTrackerPxBR->GetYaxis()->SetTitle("Count");
00413 histMap_[hTrackerPxBR->GetName()] = hTrackerPxBR;
00414
00415 sprintf(hname,"hTrackerPxFToF");
00416 histName_.push_back(hname);
00417 sprintf(htitle,"Pixel forward hits, ToF/ns");
00418 hTrackerPxFToF = new TH1F(hname,htitle,100,0.,50.);
00419 hTrackerPxFToF->GetXaxis()->SetTitle("Time of Flight of Hits (ns)");
00420 hTrackerPxFToF->GetYaxis()->SetTitle("Count");
00421 histMap_[hTrackerPxFToF->GetName()] = hTrackerPxFToF;
00422
00423 sprintf(hname,"hTrackerPxFZ");
00424 histName_.push_back(hname);
00425 sprintf(htitle,"Pixel forward hits, Z/cm");
00426 hTrackerPxFZ = new TH1F(hname,htitle,200,-100.,100.);
00427 hTrackerPxFZ->GetXaxis()->SetTitle("Z of Hits (cm)");
00428 hTrackerPxFZ->GetYaxis()->SetTitle("Count");
00429 histMap_[hTrackerPxFZ->GetName()] = hTrackerPxFZ;
00430
00431 sprintf(hname,"hTrackerSi1");
00432 histName_.push_back(hname);
00433 sprintf(htitle,"Silicon hits");
00434 hTrackerSi[0] = new TH1F(hname,htitle,100,0.,10000.);
00435 sprintf(hname,"hTrackerSi2");
00436 histName_.push_back(hname);
00437 hTrackerSi[1] = new TH1F(hname,htitle,100,-0.5,99.5);
00438 for (Int_t i = 0; i < 2; ++i) {
00439 hTrackerSi[i]->GetXaxis()->SetTitle("Number of Silicon Hits");
00440 hTrackerSi[i]->GetYaxis()->SetTitle("Count");
00441 histMap_[hTrackerSi[i]->GetName()] = hTrackerSi[i];
00442 }
00443
00444 sprintf(hname,"hTrackerSiPhi");
00445 histName_.push_back(hname);
00446 sprintf(htitle,"Silicon hits phi/rad");
00447 hTrackerSiPhi = new TH1F(hname,htitle,100,-3.2,3.2);
00448 hTrackerSiPhi->GetXaxis()->SetTitle("Phi of Hits (rad)");
00449 hTrackerSiPhi->GetYaxis()->SetTitle("Count");
00450 histMap_[hTrackerSiPhi->GetName()] = hTrackerSiPhi;
00451
00452 sprintf(hname,"hTrackerSiEta");
00453 histName_.push_back(hname);
00454 sprintf(htitle,"Silicon hits eta");
00455 hTrackerSiEta = new TH1F(hname,htitle,100,-3.5,3.5);
00456 hTrackerSiEta->GetXaxis()->SetTitle("Eta of Hits");
00457 hTrackerSiEta->GetYaxis()->SetTitle("Count");
00458 histMap_[hTrackerSiEta->GetName()] = hTrackerSiEta;
00459
00460 sprintf(hname,"hTrackerSiBToF");
00461 histName_.push_back(hname);
00462 sprintf(htitle,"Silicon barrel hits, ToF/ns");
00463 hTrackerSiBToF = new TH1F(hname,htitle,100,0.,50.);
00464 hTrackerSiBToF->GetXaxis()->SetTitle("Time of Flight of Hits (ns)");
00465 hTrackerSiBToF->GetYaxis()->SetTitle("Count");
00466 histMap_[hTrackerSiBToF->GetName()] = hTrackerSiBToF;
00467
00468 sprintf(hname,"hTrackerSiBR");
00469 histName_.push_back(hname);
00470 sprintf(htitle,"Silicon barrel hits, R/cm");
00471 hTrackerSiBR = new TH1F(hname,htitle,100,0.,200.);
00472 hTrackerSiBR->GetXaxis()->SetTitle("R of Hits (cm)");
00473 hTrackerSiBR->GetYaxis()->SetTitle("Count");
00474 histMap_[hTrackerSiBR->GetName()] = hTrackerSiBR;
00475
00476 sprintf(hname,"hTrackerSiFToF");
00477 histName_.push_back(hname);
00478 sprintf(htitle,"Silicon forward hits, ToF/ns");
00479 hTrackerSiFToF = new TH1F(hname,htitle,100,0.,75.);
00480 hTrackerSiFToF->GetXaxis()->SetTitle("Time of Flight of Hits (ns)");
00481 hTrackerSiFToF->GetYaxis()->SetTitle("Count");
00482 histMap_[hTrackerSiFToF->GetName()] = hTrackerSiFToF;
00483
00484 sprintf(hname,"hTrackerSiFZ");
00485 histName_.push_back(hname);
00486 sprintf(htitle,"Silicon forward hits, Z/cm");
00487 hTrackerSiFZ = new TH1F(hname,htitle,200,-300.,300.);
00488 hTrackerSiFZ->GetXaxis()->SetTitle("Z of Hits (cm)");
00489 hTrackerSiFZ->GetYaxis()->SetTitle("Count");
00490 histMap_[hTrackerSiFZ->GetName()] = hTrackerSiFZ;
00491
00492
00493 sprintf(hname,"hMuon1");
00494 histName_.push_back(hname);
00495 sprintf(htitle,"Muon hits");
00496 hMuon[0] = new TH1F(hname,htitle,100,0.,10000.);
00497 sprintf(hname,"hMuon2");
00498 histName_.push_back(hname);
00499 hMuon[1] = new TH1F(hname,htitle,100,-0.5,99.5);
00500 for (Int_t i = 0; i < 2; ++i) {
00501 hMuon[i]->GetXaxis()->SetTitle("Number of Muon Hits");
00502 hMuon[i]->GetYaxis()->SetTitle("Count");
00503 histMap_[hMuon[i]->GetName()] = hMuon[i];
00504 }
00505
00506 sprintf(hname,"hMuonPhi");
00507 histName_.push_back(hname);
00508 sprintf(htitle,"Muon hits phi/rad");
00509 hMuonPhi = new TH1F(hname,htitle,100,-3.2,3.2);
00510 hMuonPhi->GetXaxis()->SetTitle("Phi of Hits (rad)");
00511 hMuonPhi->GetYaxis()->SetTitle("Count");
00512 histMap_[hMuonPhi->GetName()] = hMuonPhi;
00513
00514 sprintf(hname,"hMuonEta");
00515 histName_.push_back(hname);
00516 sprintf(htitle,"Muon hits eta");
00517 hMuonEta = new TH1F(hname,htitle,100,-3.5,3.5);
00518 hMuonEta->GetXaxis()->SetTitle("Eta of Hits");
00519 hMuonEta->GetYaxis()->SetTitle("Count");
00520 histMap_[hMuonEta->GetName()] = hMuonEta;
00521
00522 sprintf(hname,"hMuonCscToF1");
00523 histName_.push_back(hname);
00524 sprintf(htitle,"Muon CSC hits, ToF/ns");
00525 hMuonCscToF[0] = new TH1F(hname,htitle,100,0.,250.);
00526 sprintf(hname,"hMuonCscToF2");
00527 histName_.push_back(hname);
00528 hMuonCscToF[1] = new TH1F(hname,htitle,100,0.,50.);
00529 for (Int_t i = 0; i < 2; ++i) {
00530 hMuonCscToF[i]->GetXaxis()->SetTitle("Time of Flight of Hits (ns)");
00531 hMuonCscToF[i]->GetYaxis()->SetTitle("Count");
00532 histMap_[hMuonCscToF[i]->GetName()] = hMuonCscToF[i];
00533 }
00534
00535 sprintf(hname,"hMuonCscZ");
00536 histName_.push_back(hname);
00537 sprintf(htitle,"Muon CSC hits, Z/cm");
00538 hMuonCscZ = new TH1F(hname,htitle,200,-1500.,1500.);
00539 hMuonCscZ->GetXaxis()->SetTitle("Z of Hits (cm)");
00540 hMuonCscZ->GetYaxis()->SetTitle("Count");
00541 histMap_[hMuonCscZ->GetName()] = hMuonCscZ;
00542
00543 sprintf(hname,"hMuonDtToF1");
00544 histName_.push_back(hname);
00545 sprintf(htitle,"Muon DT hits, ToF/ns");
00546 hMuonDtToF[0] = new TH1F(hname,htitle,100,0.,250.);
00547 sprintf(hname,"hMuonDtToF2");
00548 histName_.push_back(hname);
00549 hMuonDtToF[1] = new TH1F(hname,htitle,100,0.,50.);
00550 for (Int_t i = 0; i < 2; ++i) {
00551 hMuonDtToF[i]->GetXaxis()->SetTitle("Time of Flight of Hits (ns)");
00552 hMuonDtToF[i]->GetYaxis()->SetTitle("Count");
00553 histMap_[hMuonDtToF[i]->GetName()] = hMuonDtToF[i];
00554 }
00555
00556 sprintf(hname,"hMuonDtR");
00557 histName_.push_back(hname);
00558 sprintf(htitle,"Muon DT hits, R/cm");
00559 hMuonDtR = new TH1F(hname,htitle,100,0.,1500.);
00560 hMuonDtR->GetXaxis()->SetTitle("R of Hits (cm)");
00561 hMuonDtR->GetYaxis()->SetTitle("Count");
00562 histMap_[hMuonDtR->GetName()] = hMuonDtR;
00563
00564 sprintf(hname,"hMuonRpcFToF1");
00565 histName_.push_back(hname);
00566 sprintf(htitle,"Muon RPC forward hits, ToF/ns");
00567 hMuonRpcFToF[0] = new TH1F(hname,htitle,100,0.,250.);
00568 sprintf(hname,"hMuonRpcFToF2");
00569 histName_.push_back(hname);
00570 hMuonRpcFToF[1] = new TH1F(hname,htitle,100,0.,50.);
00571 for (Int_t i = 0; i < 2; ++i) {
00572 hMuonRpcFToF[i]->GetXaxis()->SetTitle("Time of Flight of Hits (ns)");
00573 hMuonRpcFToF[i]->GetYaxis()->SetTitle("Count");
00574 histMap_[hMuonRpcFToF[i]->GetName()] = hMuonRpcFToF[i];
00575 }
00576
00577 sprintf(hname,"hMuonRpcFZ");
00578 histName_.push_back(hname);
00579 sprintf(htitle,"Muon RPC forward hits, Z/cm");
00580 hMuonRpcFZ = new TH1F(hname,htitle,201,-1500.,1500.);
00581 hMuonRpcFZ->GetXaxis()->SetTitle("Z of Hits (cm)");
00582 hMuonRpcFZ->GetYaxis()->SetTitle("Count");
00583 histMap_[hMuonRpcFZ->GetName()] = hMuonRpcFZ;
00584
00585 sprintf(hname,"hMuonRpcBToF1");
00586 histName_.push_back(hname);
00587 sprintf(htitle,"Muon RPC barrel hits, ToF/ns");
00588 hMuonRpcBToF[0] = new TH1F(hname,htitle,100,0.,250.);
00589 sprintf(hname,"hMuonRpcBToF2");
00590 histName_.push_back(hname);
00591 hMuonRpcBToF[1] = new TH1F(hname,htitle,100,0.,50.);
00592 for (Int_t i = 0; i < 2; ++i) {
00593 hMuonRpcBToF[i]->GetXaxis()->SetTitle("Time of Flight of Hits (ns)");
00594 hMuonRpcBToF[i]->GetYaxis()->SetTitle("Count");
00595 histMap_[hMuonRpcBToF[i]->GetName()] = hMuonRpcBToF[i];
00596 }
00597
00598 sprintf(hname,"hMuonRpcBR");
00599 histName_.push_back(hname);
00600 sprintf(htitle,"Muon RPC barrel hits, R/cm");
00601 hMuonRpcBR = new TH1F(hname,htitle,100,0.,1500.);
00602 hMuonRpcBR->GetXaxis()->SetTitle("R of Hits (cm)");
00603 hMuonRpcBR->GetYaxis()->SetTitle("Count");
00604 histMap_[hMuonRpcBR->GetName()] = hMuonRpcBR;
00605
00606
00607 for (std::size_t i = 0; i < histName_.size(); ++i) {
00608 produces<TH1F, edm::InRun>(histName_[i]).setBranchAlias(histName_[i]);
00609 }
00610 }
00611
00612 GlobalHitsProdHist::~GlobalHitsProdHist()
00613 {
00614 }
00615
00616 void GlobalHitsProdHist::beginJob( void )
00617 {
00618 return;
00619 }
00620
00621 void GlobalHitsProdHist::endJob()
00622 {
00623 std::string MsgLoggerCat = "GlobalHitsProdHist_endJob";
00624 if (verbosity >= 0)
00625 edm::LogInfo(MsgLoggerCat)
00626 << "Terminating having processed " << count << " events.";
00627 return;
00628 }
00629
00630 void GlobalHitsProdHist::produce(edm::Event& iEvent,
00631 const edm::EventSetup& iSetup)
00632 {
00633 std::string MsgLoggerCat = "GlobalHitsProdHist_produce";
00634
00635
00636 ++count;
00637
00638
00639 int nrun = iEvent.id().run();
00640 int nevt = iEvent.id().event();
00641
00642 if (verbosity > 0) {
00643 edm::LogInfo(MsgLoggerCat)
00644 << "Processing run " << nrun << ", event " << nevt
00645 << " (" << count << " events total)";
00646 } else if (verbosity == 0) {
00647 if (nevt%frequency == 0 || nevt == 1) {
00648 edm::LogInfo(MsgLoggerCat)
00649 << "Processing run " << nrun << ", event " << nevt
00650 << " (" << count << " events total)";
00651 }
00652 }
00653
00654
00655 if (getAllProvenances) {
00656
00657 std::vector<const edm::Provenance*> AllProv;
00658 iEvent.getAllProvenance(AllProv);
00659
00660 if (verbosity >= 0)
00661 edm::LogInfo(MsgLoggerCat)
00662 << "Number of Provenances = " << AllProv.size();
00663
00664 if (printProvenanceInfo && (verbosity >= 0)) {
00665 TString eventout("\nProvenance info:\n");
00666
00667 for (unsigned int i = 0; i < AllProv.size(); ++i) {
00668 eventout += "\n ******************************";
00669 eventout += "\n Module : ";
00670 eventout += AllProv[i]->moduleLabel();
00671 eventout += "\n ProductID : ";
00672 eventout += AllProv[i]->productID().id();
00673 eventout += "\n ClassName : ";
00674 eventout += AllProv[i]->className();
00675 eventout += "\n InstanceName : ";
00676 eventout += AllProv[i]->productInstanceName();
00677 eventout += "\n BranchName : ";
00678 eventout += AllProv[i]->branchName();
00679 }
00680 eventout += "\n ******************************\n";
00681 edm::LogInfo(MsgLoggerCat) << eventout << "\n";
00682 printProvenanceInfo = false;
00683 }
00684 getAllProvenances = false;
00685 }
00686
00687
00688
00689 fillG4MC(iEvent);
00690
00691 fillTrk(iEvent,iSetup);
00692
00693 fillMuon(iEvent, iSetup);
00694
00695 fillECal(iEvent, iSetup);
00696
00697 fillHCal(iEvent, iSetup);
00698
00699 if (verbosity > 0)
00700 edm::LogInfo (MsgLoggerCat)
00701 << "Done gathering data from event.";
00702
00703 return;
00704 }
00705
00706 void GlobalHitsProdHist::endRun(edm::Run& iRun, const edm::EventSetup& iSetup)
00707 {
00708
00709 std::string MsgLoggerCat = "GlobalHitsProdHist_endRun";
00710
00711 TString eventout;
00712 TString eventoutw;
00713 bool warning = false;
00714
00715 if (verbosity > 0)
00716 edm::LogInfo (MsgLoggerCat)
00717 << "\nStoring histograms.";
00718
00719
00720 std::map<std::string, TH1F*>::iterator iter;
00721 for (std::size_t i = 0; i < histName_.size(); ++i) {
00722 iter = histMap_.find(histName_[i]);
00723 if (iter != histMap_.end()) {
00724 std::auto_ptr<TH1F> hist1D(iter->second);
00725 eventout += "\n Storing histogram " + histName_[i];
00726 iRun.put(hist1D, histName_[i]);
00727 } else {
00728 warning = true;
00729 eventoutw += "\n Unable to find histogram with name " + histName_[i];
00730 }
00731 }
00732
00733 if (verbosity > 0) {
00734 edm::LogInfo(MsgLoggerCat) << eventout << "\n";
00735 if (warning)
00736 edm::LogWarning(MsgLoggerCat) << eventoutw << "\n";
00737 }
00738 return;
00739 }
00740
00741
00742 void GlobalHitsProdHist::fillG4MC(edm::Event& iEvent)
00743 {
00744
00745 std::string MsgLoggerCat = "GlobalHitsProdHist_fillG4MC";
00746
00747 TString eventout;
00748 if (verbosity > 0)
00749 eventout = "\nGathering info:";
00750
00752
00754 edm::Handle<edm::HepMCProduct> HepMCEvt;
00755 std::vector<edm::Handle<edm::HepMCProduct> > AllHepMCEvt;
00756 iEvent.getManyByType(AllHepMCEvt);
00757
00758
00759
00760 for (unsigned int i = 0; i < AllHepMCEvt.size(); ++i) {
00761 HepMCEvt = AllHepMCEvt[i];
00762 if ((HepMCEvt.provenance()->product()).moduleLabel() == "VtxSmeared")
00763 break;
00764 }
00765
00766 if (!HepMCEvt.isValid()) {
00767 edm::LogWarning(MsgLoggerCat)
00768 << "Unable to find HepMCProduct in event!";
00769 return;
00770 } else {
00771 eventout += "\n Using HepMCProduct: ";
00772 eventout += (HepMCEvt.provenance()->product()).moduleLabel();
00773 }
00774 const HepMC::GenEvent* MCEvt = HepMCEvt->GetEvent();
00775 nRawGenPart = MCEvt->particles_size();
00776
00777 if (verbosity > 1) {
00778 eventout += "\n Number of Raw Particles collected:......... ";
00779 eventout += nRawGenPart;
00780 }
00781
00782 if (hMCRGP[0]) hMCRGP[0]->Fill((float)nRawGenPart);
00783 if (hMCRGP[1]) hMCRGP[1]->Fill((float)nRawGenPart);
00784
00786
00788
00789 float unit = 0.;
00790 if (vtxunit == 0) unit = 1.;
00791 if (vtxunit == 1) unit = 10.;
00792
00793 edm::Handle<edm::SimVertexContainer> G4VtxContainer;
00794 iEvent.getByType(G4VtxContainer);
00795 if (!G4VtxContainer.isValid()) {
00796 edm::LogWarning(MsgLoggerCat)
00797 << "Unable to find SimVertex in event!";
00798 return;
00799 }
00800 int i = 0;
00801 edm::SimVertexContainer::const_iterator itVtx;
00802 for (itVtx = G4VtxContainer->begin(); itVtx != G4VtxContainer->end();
00803 ++itVtx) {
00804
00805 ++i;
00806
00807 const math::XYZTLorentzVector G4Vtx1(itVtx->position().x(),
00808 itVtx->position().y(),
00809 itVtx->position().z(),
00810 itVtx->position().e());
00811
00812 double G4Vtx[4];
00813 G4Vtx1.GetCoordinates(G4Vtx);
00814
00815 if (hGeantVtxX[0]) hGeantVtxX[0]->Fill((G4Vtx[0]*unit)/micrometer);
00816 if (hGeantVtxX[1]) hGeantVtxX[1]->Fill((G4Vtx[0]*unit)/micrometer);
00817
00818 if (hGeantVtxY[0]) hGeantVtxY[0]->Fill((G4Vtx[1]*unit)/micrometer);
00819 if (hGeantVtxY[1]) hGeantVtxY[1]->Fill((G4Vtx[1]*unit)/micrometer);
00820
00821 if (hGeantVtxZ[0]) hGeantVtxZ[0]->Fill((G4Vtx[2]*unit)/millimeter);
00822 if (hGeantVtxZ[1]) hGeantVtxZ[1]->Fill((G4Vtx[2]*unit)/millimeter);
00823
00824 }
00825
00826 if (verbosity > 1) {
00827 eventout += "\n Number of G4Vertices collected:............ ";
00828 eventout += i;
00829 }
00830
00831 if (hMCG4Vtx[0]) hMCG4Vtx[0]->Fill((float)i);
00832 if (hMCG4Vtx[1]) hMCG4Vtx[1]->Fill((float)i);
00833
00835
00837 edm::Handle<edm::SimTrackContainer> G4TrkContainer;
00838 iEvent.getByType(G4TrkContainer);
00839 if (!G4TrkContainer.isValid()) {
00840 edm::LogWarning(MsgLoggerCat)
00841 << "Unable to find SimTrack in event!";
00842 return;
00843 }
00844 i = 0;
00845 edm::SimTrackContainer::const_iterator itTrk;
00846 for (itTrk = G4TrkContainer->begin(); itTrk != G4TrkContainer->end();
00847 ++itTrk) {
00848
00849 ++i;
00850
00851 const math::XYZTLorentzVector G4Trk1(itTrk->momentum().x(),
00852 itTrk->momentum().y(),
00853 itTrk->momentum().z(),
00854 itTrk->momentum().e());
00855 double G4Trk[4];
00856 G4Trk1.GetCoordinates(G4Trk);
00857
00858 if (hGeantTrkPt) hGeantTrkPt->
00859 Fill(sqrt(G4Trk[0]*G4Trk[0]+G4Trk[1]*G4Trk[1]));
00860 if (hGeantTrkE) hGeantTrkE->Fill(G4Trk[3]);
00861 }
00862
00863 if (verbosity > 1) {
00864 eventout += "\n Number of G4Tracks collected:.............. ";
00865 eventout += i;
00866 }
00867
00868 if (hMCG4Trk[0]) hMCG4Trk[0]->Fill((float)i);
00869 if (hMCG4Trk[1]) hMCG4Trk[1]->Fill((float)i);
00870
00871 if (verbosity > 0)
00872 edm::LogInfo(MsgLoggerCat) << eventout << "\n";
00873
00874 return;
00875 }
00876
00877 void GlobalHitsProdHist::fillTrk(edm::Event& iEvent,
00878 const edm::EventSetup& iSetup)
00879 {
00880
00881 nPxlHits = 0;
00882 std::string MsgLoggerCat = "GlobalHitsProdHist_fillTrk";
00883
00884 TString eventout;
00885 if (verbosity > 0)
00886 eventout = "\nGathering info:";
00887
00888
00889 edm::ESHandle<TrackerGeometry> theTrackerGeometry;
00890 iSetup.get<TrackerDigiGeometryRecord>().get(theTrackerGeometry);
00891 if (!theTrackerGeometry.isValid()) {
00892 edm::LogWarning(MsgLoggerCat)
00893 << "Unable to find TrackerDigiGeometryRecord in event!";
00894 return;
00895 }
00896 const TrackerGeometry& theTracker(*theTrackerGeometry);
00897
00898
00899 edm::PSimHitContainer::const_iterator itHit;
00900
00902
00904 edm::PSimHitContainer thePxlBrlHits;
00905
00906 edm::Handle<edm::PSimHitContainer> PxlBrlLowContainer;
00907 iEvent.getByLabel(PxlBrlLowSrc_,PxlBrlLowContainer);
00908 if (!PxlBrlLowContainer.isValid()) {
00909 edm::LogWarning(MsgLoggerCat)
00910 << "Unable to find TrackerHitsPixelBarrelLowTof in event!";
00911 return;
00912 }
00913
00914 edm::Handle<edm::PSimHitContainer> PxlBrlHighContainer;
00915 iEvent.getByLabel(PxlBrlHighSrc_,PxlBrlHighContainer);
00916 if (!PxlBrlHighContainer.isValid()) {
00917 edm::LogWarning(MsgLoggerCat)
00918 << "Unable to find TrackerHitsPixelBarrelHighTof in event!";
00919 return;
00920 }
00921
00922 thePxlBrlHits.insert(thePxlBrlHits.end(),PxlBrlLowContainer->begin(),
00923 PxlBrlLowContainer->end());
00924 thePxlBrlHits.insert(thePxlBrlHits.end(),PxlBrlHighContainer->begin(),
00925 PxlBrlHighContainer->end());
00926
00927
00928 int i = 0, j = 0;
00929 for (itHit = thePxlBrlHits.begin(); itHit != thePxlBrlHits.end(); ++itHit) {
00930
00931 ++i;
00932
00933
00934 DetId theDetUnitId(itHit->detUnitId());
00935 int detector = theDetUnitId.det();
00936 int subdetector = theDetUnitId.subdetId();
00937
00938
00939 if ((detector == dTrk) && (subdetector == sdPxlBrl)) {
00940
00941
00942 const GeomDetUnit *theDet = theTracker.idToDetUnit(theDetUnitId);
00943
00944 if (!theDet) {
00945 edm::LogWarning(MsgLoggerCat)
00946 << "Unable to get GeomDetUnit from PxlBrlHits for Hit " << i;
00947 continue;
00948 }
00949
00950 ++j;
00951
00952
00953 const BoundPlane& bSurface = theDet->surface();
00954
00955 if(hTrackerPxBToF) hTrackerPxBToF->Fill(itHit->tof());
00956 if(hTrackerPxBR)
00957 hTrackerPxBR->Fill(bSurface.toGlobal(itHit->localPosition()).perp());
00958 if(hTrackerPxPhi)
00959 hTrackerPxPhi->Fill(bSurface.toGlobal(itHit->localPosition()).phi());
00960 if(hTrackerPxEta)
00961 hTrackerPxEta->Fill(bSurface.toGlobal(itHit->localPosition()).eta());
00962
00963 } else {
00964 edm::LogWarning(MsgLoggerCat)
00965 << "PxlBrl PSimHit " << i
00966 << " is expected to be (det,subdet) = ("
00967 << dTrk << "," << sdPxlBrl
00968 << "); value returned is: ("
00969 << detector << "," << subdetector << ")";
00970 continue;
00971 }
00972 }
00973
00974 if (verbosity > 1) {
00975 eventout += "\n Number of Pixel Barrel Hits collected:..... ";
00976 eventout += j;
00977 }
00978
00979 nPxlHits += j;
00980
00982
00984 edm::PSimHitContainer thePxlFwdHits;
00985
00986 edm::Handle<edm::PSimHitContainer> PxlFwdLowContainer;
00987 iEvent.getByLabel(PxlFwdLowSrc_,PxlFwdLowContainer);
00988 if (!PxlFwdLowContainer.isValid()) {
00989 edm::LogWarning(MsgLoggerCat)
00990 << "Unable to find TrackerHitsPixelEndcapLowTof in event!";
00991 return;
00992 }
00993
00994 edm::Handle<edm::PSimHitContainer> PxlFwdHighContainer;
00995 iEvent.getByLabel(PxlFwdHighSrc_,PxlFwdHighContainer);
00996 if (!PxlFwdHighContainer.isValid()) {
00997 edm::LogWarning("GlobalHitsProdHist_fillTrk")
00998 << "Unable to find TrackerHitsPixelEndcapHighTof in event!";
00999 return;
01000 }
01001
01002 thePxlFwdHits.insert(thePxlFwdHits.end(),PxlFwdLowContainer->begin(),
01003 PxlFwdLowContainer->end());
01004 thePxlFwdHits.insert(thePxlFwdHits.end(),PxlFwdHighContainer->begin(),
01005 PxlFwdHighContainer->end());
01006
01007
01008 i = 0; j = 0;
01009 for (itHit = thePxlFwdHits.begin(); itHit != thePxlFwdHits.end(); ++itHit) {
01010
01011 ++i;
01012
01013
01014 DetId theDetUnitId(itHit->detUnitId());
01015 int detector = theDetUnitId.det();
01016 int subdetector = theDetUnitId.subdetId();
01017
01018
01019 if ((detector == dTrk) && (subdetector == sdPxlFwd)) {
01020
01021
01022 const GeomDetUnit *theDet = theTracker.idToDetUnit(theDetUnitId);
01023
01024 if (!theDet) {
01025 edm::LogWarning(MsgLoggerCat)
01026 << "Unable to get GeomDetUnit from PxlFwdHits for Hit " << i;;
01027 continue;
01028 }
01029
01030 ++j;
01031
01032
01033 const BoundPlane& bSurface = theDet->surface();
01034
01035 if(hTrackerPxFToF) hTrackerPxFToF->Fill(itHit->tof());
01036 if(hTrackerPxFZ)
01037 hTrackerPxFZ->Fill(bSurface.toGlobal(itHit->localPosition()).z());
01038 if(hTrackerPxPhi)
01039 hTrackerPxPhi->Fill(bSurface.toGlobal(itHit->localPosition()).phi());
01040 if(hTrackerPxEta)
01041 hTrackerPxEta->Fill(bSurface.toGlobal(itHit->localPosition()).eta());
01042
01043 } else {
01044 edm::LogWarning(MsgLoggerCat)
01045 << "PxlFwd PSimHit " << i
01046 << " is expected to be (det,subdet) = ("
01047 << dTrk << "," << sdPxlFwd
01048 << "); value returned is: ("
01049 << detector << "," << subdetector << ")";
01050 continue;
01051 }
01052 }
01053
01054 if (verbosity > 1) {
01055 eventout += "\n Number of Pixel Forward Hits collected:.... ";
01056 eventout += j;
01057 }
01058
01059 nPxlHits += j;
01060
01061 if (hTrackerPx[0]) hTrackerPx[0]->Fill((float)nPxlHits);
01062 if (hTrackerPx[1]) hTrackerPx[1]->Fill((float)nPxlHits);
01063
01065
01067 nSiHits = 0;
01068 edm::PSimHitContainer theSiBrlHits;
01069
01070 edm::Handle<edm::PSimHitContainer> SiTIBLowContainer;
01071 iEvent.getByLabel(SiTIBLowSrc_,SiTIBLowContainer);
01072 if (!SiTIBLowContainer.isValid()) {
01073 edm::LogWarning(MsgLoggerCat)
01074 << "Unable to find TrackerHitsTIBLowTof in event!";
01075 return;
01076 }
01077
01078 edm::Handle<edm::PSimHitContainer> SiTIBHighContainer;
01079 iEvent.getByLabel(SiTIBHighSrc_,SiTIBHighContainer);
01080 if (!SiTIBHighContainer.isValid()) {
01081 edm::LogWarning(MsgLoggerCat)
01082 << "Unable to find TrackerHitsTIBHighTof in event!";
01083 return;
01084 }
01085
01086 edm::Handle<edm::PSimHitContainer> SiTOBLowContainer;
01087 iEvent.getByLabel(SiTOBLowSrc_,SiTOBLowContainer);
01088 if (!SiTOBLowContainer.isValid()) {
01089 edm::LogWarning(MsgLoggerCat)
01090 << "Unable to find TrackerHitsTOBLowTof in event!";
01091 return;
01092 }
01093
01094 edm::Handle<edm::PSimHitContainer> SiTOBHighContainer;
01095 iEvent.getByLabel(SiTOBHighSrc_,SiTOBHighContainer);
01096 if (!SiTOBHighContainer.isValid()) {
01097 edm::LogWarning(MsgLoggerCat)
01098 << "Unable to find TrackerHitsTOBHighTof in event!";
01099 return;
01100 }
01101
01102 theSiBrlHits.insert(theSiBrlHits.end(),SiTIBLowContainer->begin(),
01103 SiTIBLowContainer->end());
01104 theSiBrlHits.insert(theSiBrlHits.end(),SiTIBHighContainer->begin(),
01105 SiTIBHighContainer->end());
01106 theSiBrlHits.insert(theSiBrlHits.end(),SiTOBLowContainer->begin(),
01107 SiTOBLowContainer->end());
01108 theSiBrlHits.insert(theSiBrlHits.end(),SiTOBHighContainer->begin(),
01109 SiTOBHighContainer->end());
01110
01111
01112 i = 0; j = 0;
01113 for (itHit = theSiBrlHits.begin(); itHit != theSiBrlHits.end(); ++itHit) {
01114
01115 ++i;
01116
01117
01118 DetId theDetUnitId(itHit->detUnitId());
01119 int detector = theDetUnitId.det();
01120 int subdetector = theDetUnitId.subdetId();
01121
01122
01123 if ((detector == dTrk) &&
01124 ((subdetector == sdSiTIB) ||
01125 (subdetector == sdSiTOB))) {
01126
01127
01128 const GeomDetUnit *theDet = theTracker.idToDetUnit(theDetUnitId);
01129
01130 if (!theDet) {
01131 edm::LogWarning(MsgLoggerCat)
01132 << "Unable to get GeomDetUnit from SiBrlHits for Hit " << i;
01133 continue;
01134 }
01135
01136 ++j;
01137
01138
01139 const BoundPlane& bSurface = theDet->surface();
01140
01141 if(hTrackerSiBToF) hTrackerSiBToF->Fill(itHit->tof());
01142 if(hTrackerSiBR)
01143 hTrackerSiBR->Fill(bSurface.toGlobal(itHit->localPosition()).perp());
01144 if(hTrackerSiPhi)
01145 hTrackerSiPhi->Fill(bSurface.toGlobal(itHit->localPosition()).phi());
01146 if(hTrackerSiEta)
01147 hTrackerSiEta->Fill(bSurface.toGlobal(itHit->localPosition()).eta());
01148
01149 } else {
01150 edm::LogWarning(MsgLoggerCat)
01151 << "SiBrl PSimHit " << i
01152 << " is expected to be (det,subdet) = ("
01153 << dTrk << "," << sdSiTIB
01154 << " || " << sdSiTOB << "); value returned is: ("
01155 << detector << "," << subdetector << ")";
01156 continue;
01157 }
01158 }
01159
01160 if (verbosity > 1) {
01161 eventout += "\n Number of Silicon Barrel Hits collected:... ";
01162 eventout += j;
01163 }
01164
01165 nSiHits += j;
01166
01168
01170 edm::PSimHitContainer theSiFwdHits;
01171
01172 edm::Handle<edm::PSimHitContainer> SiTIDLowContainer;
01173 iEvent.getByLabel(SiTIDLowSrc_,SiTIDLowContainer);
01174 if (!SiTIDLowContainer.isValid()) {
01175 edm::LogWarning(MsgLoggerCat)
01176 << "Unable to find TrackerHitsTIDLowTof in event!";
01177 return;
01178 }
01179
01180 edm::Handle<edm::PSimHitContainer> SiTIDHighContainer;
01181 iEvent.getByLabel(SiTIDHighSrc_,SiTIDHighContainer);
01182 if (!SiTIDHighContainer.isValid()) {
01183 edm::LogWarning("GlobalHitsProdHist_fillTrk")
01184 << "Unable to find TrackerHitsTIDHighTof in event!";
01185 return;
01186 }
01187
01188 edm::Handle<edm::PSimHitContainer> SiTECLowContainer;
01189 iEvent.getByLabel(SiTECLowSrc_,SiTECLowContainer);
01190 if (!SiTECLowContainer.isValid()) {
01191 edm::LogWarning(MsgLoggerCat)
01192 << "Unable to find TrackerHitsTECLowTof in event!";
01193 return;
01194 }
01195
01196 edm::Handle<edm::PSimHitContainer> SiTECHighContainer;
01197 iEvent.getByLabel(SiTECHighSrc_,SiTECHighContainer);
01198 if (!SiTECHighContainer.isValid()) {
01199 edm::LogWarning(MsgLoggerCat)
01200 << "Unable to find TrackerHitsTECHighTof in event!";
01201 return;
01202 }
01203
01204 theSiFwdHits.insert(theSiFwdHits.end(),SiTIDLowContainer->begin(),
01205 SiTIDLowContainer->end());
01206 theSiFwdHits.insert(theSiFwdHits.end(),SiTIDHighContainer->begin(),
01207 SiTIDHighContainer->end());
01208 theSiFwdHits.insert(theSiFwdHits.end(),SiTECLowContainer->begin(),
01209 SiTECLowContainer->end());
01210 theSiFwdHits.insert(theSiFwdHits.end(),SiTECHighContainer->begin(),
01211 SiTECHighContainer->end());
01212
01213
01214 i = 0; j = 0;
01215 for (itHit = theSiFwdHits.begin(); itHit != theSiFwdHits.end(); ++itHit) {
01216
01217 ++i;
01218
01219
01220 DetId theDetUnitId(itHit->detUnitId());
01221 int detector = theDetUnitId.det();
01222 int subdetector = theDetUnitId.subdetId();
01223
01224
01225 if ((detector == dTrk) &&
01226 ((subdetector == sdSiTID) ||
01227 (subdetector == sdSiTEC))) {
01228
01229
01230 const GeomDetUnit *theDet = theTracker.idToDetUnit(theDetUnitId);
01231
01232 if (!theDet) {
01233 edm::LogWarning(MsgLoggerCat)
01234 << "Unable to get GeomDetUnit from SiFwdHits Hit " << i;
01235 return;
01236 }
01237
01238 ++j;
01239
01240
01241 const BoundPlane& bSurface = theDet->surface();
01242
01243 if(hTrackerSiFToF) hTrackerSiFToF->Fill(itHit->tof());
01244 if(hTrackerSiFZ)
01245 hTrackerSiFZ->Fill(bSurface.toGlobal(itHit->localPosition()).z());
01246 if(hTrackerSiPhi)
01247 hTrackerSiPhi->Fill(bSurface.toGlobal(itHit->localPosition()).phi());
01248 if(hTrackerSiEta)
01249 hTrackerSiEta->Fill(bSurface.toGlobal(itHit->localPosition()).eta());
01250
01251 } else {
01252 edm::LogWarning(MsgLoggerCat)
01253 << "SiFwd PSimHit " << i
01254 << " is expected to be (det,subdet) = ("
01255 << dTrk << "," << sdSiTOB
01256 << " || " << sdSiTEC << "); value returned is: ("
01257 << detector << "," << subdetector << ")";
01258 continue;
01259 }
01260 }
01261
01262 if (verbosity > 1) {
01263 eventout += "\n Number of Silicon Forward Hits collected:.. ";
01264 eventout += j;
01265 }
01266
01267 nSiHits +=j;
01268
01269 if (hTrackerSi[0]) hTrackerSi[0]->Fill((float)nSiHits);
01270 if (hTrackerSi[1]) hTrackerSi[1]->Fill((float)nSiHits);
01271
01272 if (verbosity > 0)
01273 edm::LogInfo(MsgLoggerCat) << eventout << "\n";
01274
01275 return;
01276 }
01277
01278 void GlobalHitsProdHist::fillMuon(edm::Event& iEvent,
01279 const edm::EventSetup& iSetup)
01280 {
01281 nMuonHits = 0;
01282 std::string MsgLoggerCat = "GlobalHitsProdHist_fillMuon";
01283
01284 TString eventout;
01285 if (verbosity > 0)
01286 eventout = "\nGathering info:";
01287
01288
01289 edm::PSimHitContainer::const_iterator itHit;
01290
01292
01294
01295 edm::ESHandle<CSCGeometry> theCSCGeometry;
01296 iSetup.get<MuonGeometryRecord>().get(theCSCGeometry);
01297 if (!theCSCGeometry.isValid()) {
01298 edm::LogWarning(MsgLoggerCat)
01299 << "Unable to find MuonGeometryRecord for the CSCGeometry in event!";
01300 return;
01301 }
01302 const CSCGeometry& theCSCMuon(*theCSCGeometry);
01303
01304
01305 edm::Handle<edm::PSimHitContainer> MuonCSCContainer;
01306 iEvent.getByLabel(MuonCscSrc_,MuonCSCContainer);
01307 if (!MuonCSCContainer.isValid()) {
01308 edm::LogWarning(MsgLoggerCat)
01309 << "Unable to find MuonCSCHits in event!";
01310 return;
01311 }
01312
01313
01314 int i = 0, j = 0;
01315 for (itHit = MuonCSCContainer->begin(); itHit != MuonCSCContainer->end();
01316 ++itHit) {
01317
01318 ++i;
01319
01320
01321 DetId theDetUnitId(itHit->detUnitId());
01322 int detector = theDetUnitId.det();
01323 int subdetector = theDetUnitId.subdetId();
01324
01325
01326 if ((detector == dMuon) &&
01327 (subdetector == sdMuonCSC)) {
01328
01329
01330 const GeomDetUnit *theDet = theCSCMuon.idToDetUnit(theDetUnitId);
01331
01332 if (!theDet) {
01333 edm::LogWarning(MsgLoggerCat)
01334 << "Unable to get GeomDetUnit from theCSCMuon for hit " << i;
01335 continue;
01336 }
01337
01338 ++j;
01339
01340
01341 const BoundPlane& bSurface = theDet->surface();
01342
01343 if (hMuonCscToF[0]) hMuonCscToF[0]->Fill(itHit->tof());
01344 if (hMuonCscToF[1]) hMuonCscToF[1]->Fill(itHit->tof());
01345 if (hMuonCscZ)
01346 hMuonCscZ->Fill(bSurface.toGlobal(itHit->localPosition()).z());
01347 if (hMuonPhi)
01348 hMuonPhi->Fill(bSurface.toGlobal(itHit->localPosition()).phi());
01349 if (hMuonEta)
01350 hMuonEta->Fill(bSurface.toGlobal(itHit->localPosition()).eta());
01351
01352 } else {
01353 edm::LogWarning(MsgLoggerCat)
01354 << "MuonCsc PSimHit " << i
01355 << " is expected to be (det,subdet) = ("
01356 << dMuon << "," << sdMuonCSC
01357 << "); value returned is: ("
01358 << detector << "," << subdetector << ")";
01359 continue;
01360 }
01361 }
01362
01363 if (verbosity > 1) {
01364 eventout += "\n Number of CSC muon Hits collected:......... ";
01365 eventout += j;
01366 }
01367
01368 nMuonHits += j;
01369
01371
01373
01374 edm::ESHandle<DTGeometry> theDTGeometry;
01375 iSetup.get<MuonGeometryRecord>().get(theDTGeometry);
01376 if (!theDTGeometry.isValid()) {
01377 edm::LogWarning(MsgLoggerCat)
01378 << "Unable to find MuonGeometryRecord for the DTGeometry in event!";
01379 return;
01380 }
01381 const DTGeometry& theDTMuon(*theDTGeometry);
01382
01383
01384 edm::Handle<edm::PSimHitContainer> MuonDtContainer;
01385 iEvent.getByLabel(MuonDtSrc_,MuonDtContainer);
01386 if (!MuonDtContainer.isValid()) {
01387 edm::LogWarning(MsgLoggerCat)
01388 << "Unable to find MuonDTHits in event!";
01389 return;
01390 }
01391
01392
01393 i = 0, j = 0;
01394 for (itHit = MuonDtContainer->begin(); itHit != MuonDtContainer->end();
01395 ++itHit) {
01396
01397 ++i;
01398
01399
01400 DetId theDetUnitId(itHit->detUnitId());
01401 int detector = theDetUnitId.det();
01402 int subdetector = theDetUnitId.subdetId();
01403
01404
01405 if ((detector == dMuon) &&
01406 (subdetector == sdMuonDT)) {
01407
01408
01409
01410 DTWireId wireId(itHit->detUnitId());
01411
01412
01413 const DTLayer *theDet = theDTMuon.layer(wireId.layerId());
01414
01415 if (!theDet) {
01416 edm::LogWarning(MsgLoggerCat)
01417 << "Unable to get GeomDetUnit from theDtMuon for hit " << i;
01418 continue;
01419 }
01420
01421 ++j;
01422
01423
01424 const BoundPlane& bSurface = theDet->surface();
01425
01426 if (hMuonDtToF[0]) hMuonDtToF[0]->Fill(itHit->tof());
01427 if (hMuonDtToF[1]) hMuonDtToF[1]->Fill(itHit->tof());
01428 if (hMuonDtR)
01429 hMuonDtR->Fill(bSurface.toGlobal(itHit->localPosition()).perp());
01430 if (hMuonPhi)
01431 hMuonPhi->Fill(bSurface.toGlobal(itHit->localPosition()).phi());
01432 if (hMuonEta)
01433 hMuonEta->Fill(bSurface.toGlobal(itHit->localPosition()).eta());
01434
01435 } else {
01436 edm::LogWarning(MsgLoggerCat)
01437 << "MuonDt PSimHit " << i
01438 << " is expected to be (det,subdet) = ("
01439 << dMuon << "," << sdMuonDT
01440 << "); value returned is: ("
01441 << detector << "," << subdetector << ")";
01442 continue;
01443 }
01444 }
01445
01446 if (verbosity > 1) {
01447 eventout += "\n Number of DT muon Hits collected:.......... ";
01448 eventout += j;
01449 }
01450
01451 nMuonHits += j;
01452
01453
01455
01457
01458 edm::ESHandle<RPCGeometry> theRPCGeometry;
01459 iSetup.get<MuonGeometryRecord>().get(theRPCGeometry);
01460 if (!theRPCGeometry.isValid()) {
01461 edm::LogWarning(MsgLoggerCat)
01462 << "Unable to find MuonGeometryRecord for the RPCGeometry in event!";
01463 return;
01464 }
01465 const RPCGeometry& theRPCMuon(*theRPCGeometry);
01466
01467
01468 edm::Handle<edm::PSimHitContainer> MuonRPCContainer;
01469 iEvent.getByLabel(MuonRpcSrc_,MuonRPCContainer);
01470 if (!MuonRPCContainer.isValid()) {
01471 edm::LogWarning(MsgLoggerCat)
01472 << "Unable to find MuonRPCHits in event!";
01473 return;
01474 }
01475
01476
01477 i = 0, j = 0;
01478 int RPCBrl =0, RPCFwd = 0;
01479 for (itHit = MuonRPCContainer->begin(); itHit != MuonRPCContainer->end();
01480 ++itHit) {
01481
01482 ++i;
01483
01484
01485 DetId theDetUnitId(itHit->detUnitId());
01486 int detector = theDetUnitId.det();
01487 int subdetector = theDetUnitId.subdetId();
01488
01489
01490 if ((detector == dMuon) &&
01491 (subdetector == sdMuonRPC)) {
01492
01493
01494 RPCDetId RPCId(itHit->detUnitId());
01495
01496
01497 int region = RPCId.region();
01498
01499
01500 const GeomDetUnit *theDet = theRPCMuon.idToDetUnit(theDetUnitId);
01501
01502 if (!theDet) {
01503 edm::LogWarning(MsgLoggerCat)
01504 << "Unable to get GeomDetUnit from theRPCMuon for hit " << i;
01505 continue;
01506 }
01507
01508 ++j;
01509
01510
01511 const BoundPlane& bSurface = theDet->surface();
01512
01513
01514 if ((region == sdMuonRPCRgnFwdp) || (region == sdMuonRPCRgnFwdn)) {
01515 ++RPCFwd;
01516
01517 if (hMuonRpcFToF[0]) hMuonRpcFToF[0]->Fill(itHit->tof());
01518 if (hMuonRpcFToF[1]) hMuonRpcFToF[1]->Fill(itHit->tof());
01519 if (hMuonRpcFZ)
01520 hMuonRpcFZ->Fill(bSurface.toGlobal(itHit->localPosition()).z());
01521 if (hMuonPhi)
01522 hMuonPhi->Fill(bSurface.toGlobal(itHit->localPosition()).phi());
01523 if (hMuonEta)
01524 hMuonEta->Fill(bSurface.toGlobal(itHit->localPosition()).eta());
01525
01526 } else if (region == sdMuonRPCRgnBrl) {
01527 ++RPCBrl;
01528
01529 if (hMuonRpcBToF[0]) hMuonRpcBToF[0]->Fill(itHit->tof());
01530 if (hMuonRpcBToF[1]) hMuonRpcBToF[1]->Fill(itHit->tof());
01531 if (hMuonRpcBR)
01532 hMuonRpcBR->Fill(bSurface.toGlobal(itHit->localPosition()).perp());
01533 if (hMuonPhi)
01534 hMuonPhi->Fill(bSurface.toGlobal(itHit->localPosition()).phi());
01535 if (hMuonEta)
01536 hMuonEta->Fill(bSurface.toGlobal(itHit->localPosition()).eta());
01537
01538 } else {
01539 edm::LogWarning(MsgLoggerCat)
01540 << "Invalid region for RPC Muon hit" << i;
01541 continue;
01542 }
01543 } else {
01544 edm::LogWarning(MsgLoggerCat)
01545 << "MuonRpc PSimHit " << i
01546 << " is expected to be (det,subdet) = ("
01547 << dMuon << "," << sdMuonRPC
01548 << "); value returned is: ("
01549 << detector << "," << subdetector << ")";
01550 continue;
01551 }
01552 }
01553
01554 if (verbosity > 1) {
01555 eventout += "\n Number of RPC muon Hits collected:......... ";
01556 eventout += j;
01557 eventout += "\n RPC Barrel muon Hits:............ ";
01558 eventout += RPCBrl;
01559 eventout += "\n RPC Forward muon Hits:........... ";
01560 eventout += RPCFwd;
01561 }
01562
01563 nMuonHits += j;
01564
01565 if (hMuon[0]) hMuon[0]->Fill((float)nMuonHits);
01566 if (hMuon[1]) hMuon[1]->Fill((float)nMuonHits);
01567
01568 if (verbosity > 0)
01569 edm::LogInfo(MsgLoggerCat) << eventout << "\n";
01570
01571 return;
01572 }
01573
01574 void GlobalHitsProdHist::fillECal(edm::Event& iEvent,
01575 const edm::EventSetup& iSetup)
01576 {
01577 std::string MsgLoggerCat = "GlobalHitsProdHist_fillECal";
01578
01579 TString eventout;
01580 if (verbosity > 0)
01581 eventout = "\nGathering info:";
01582
01583
01584 edm::ESHandle<CaloGeometry> theCaloGeometry;
01585 iSetup.get<CaloGeometryRecord>().get(theCaloGeometry);
01586 if (!theCaloGeometry.isValid()) {
01587 edm::LogWarning(MsgLoggerCat)
01588 << "Unable to find CaloGeometryRecord in event!";
01589 return;
01590 }
01591 const CaloGeometry& theCalo(*theCaloGeometry);
01592
01593
01594 edm::PCaloHitContainer::const_iterator itHit;
01595
01597
01599 edm::PCaloHitContainer theECalHits;
01600
01601 edm::Handle<edm::PCaloHitContainer> EBContainer;
01602 iEvent.getByLabel(ECalEBSrc_,EBContainer);
01603 if (!EBContainer.isValid()) {
01604 edm::LogWarning(MsgLoggerCat)
01605 << "Unable to find EcalHitsEB in event!";
01606 return;
01607 }
01608
01609 edm::Handle<edm::PCaloHitContainer> EEContainer;
01610 iEvent.getByLabel(ECalEESrc_,EEContainer);
01611 if (!EEContainer.isValid()) {
01612 edm::LogWarning(MsgLoggerCat)
01613 << "Unable to find EcalHitsEE in event!";
01614 return;
01615 }
01616
01617 theECalHits.insert(theECalHits.end(),EBContainer->begin(),
01618 EBContainer->end());
01619 theECalHits.insert(theECalHits.end(),EEContainer->begin(),
01620 EEContainer->end());
01621
01622
01623 int i = 0, j = 0;
01624 for (itHit = theECalHits.begin(); itHit != theECalHits.end(); ++itHit) {
01625
01626 ++i;
01627
01628
01629 DetId theDetUnitId(itHit->id());
01630 int detector = theDetUnitId.det();
01631 int subdetector = theDetUnitId.subdetId();
01632
01633
01634 if ((detector == dEcal) &&
01635 ((subdetector == sdEcalBrl) ||
01636 (subdetector == sdEcalFwd))) {
01637
01638
01639 const CaloCellGeometry *theDet = theCalo.
01640 getSubdetectorGeometry(theDetUnitId)->getGeometry(theDetUnitId);
01641
01642 if (!theDet) {
01643 edm::LogWarning(MsgLoggerCat)
01644 << "Unable to get CaloCellGeometry from ECalHits for Hit " << i;
01645 continue;
01646 }
01647
01648 ++j;
01649
01650
01651 const GlobalPoint& globalposition = theDet->getPosition();
01652
01653 if (hCaloEcalE[0]) hCaloEcalE[0]->Fill(itHit->energy());
01654 if (hCaloEcalE[1]) hCaloEcalE[1]->Fill(itHit->energy());
01655 if (hCaloEcalToF[0]) hCaloEcalToF[0]->Fill(itHit->time());
01656 if (hCaloEcalToF[1]) hCaloEcalToF[1]->Fill(itHit->time());
01657 if (hCaloEcalPhi) hCaloEcalPhi->Fill(globalposition.phi());
01658 if (hCaloEcalEta) hCaloEcalEta->Fill(globalposition.eta());
01659
01660 } else {
01661 edm::LogWarning(MsgLoggerCat)
01662 << "ECal PCaloHit " << i
01663 << " is expected to be (det,subdet) = ("
01664 << dEcal << "," << sdEcalBrl
01665 << " || " << sdEcalFwd << "); value returned is: ("
01666 << detector << "," << subdetector << ")";
01667 continue;
01668 }
01669 }
01670
01671 if (verbosity > 1) {
01672 eventout += "\n Number of ECal Hits collected:............. ";
01673 eventout += j;
01674 }
01675
01676 if (hCaloEcal[0]) hCaloEcal[0]->Fill((float)j);
01677 if (hCaloEcal[1]) hCaloEcal[1]->Fill((float)j);
01678
01680
01682
01683 edm::Handle<edm::PCaloHitContainer> PreShContainer;
01684 iEvent.getByLabel(ECalESSrc_,PreShContainer);
01685 if (!PreShContainer.isValid()) {
01686 edm::LogWarning(MsgLoggerCat)
01687 << "Unable to find EcalHitsES in event!";
01688 return;
01689 }
01690
01691
01692 i = 0, j = 0;
01693 for (itHit = PreShContainer->begin();
01694 itHit != PreShContainer->end(); ++itHit) {
01695
01696 ++i;
01697
01698
01699 DetId theDetUnitId(itHit->id());
01700 int detector = theDetUnitId.det();
01701 int subdetector = theDetUnitId.subdetId();
01702
01703
01704 if ((detector == dEcal) &&
01705 (subdetector == sdEcalPS)) {
01706
01707
01708 const CaloCellGeometry *theDet = theCalo.
01709 getSubdetectorGeometry(theDetUnitId)->getGeometry(theDetUnitId);
01710
01711 if (!theDet) {
01712 edm::LogWarning(MsgLoggerCat)
01713 << "Unable to get CaloCellGeometry from PreShContainer for Hit "
01714 << i;
01715 continue;
01716 }
01717
01718 ++j;
01719
01720
01721 const GlobalPoint& globalposition = theDet->getPosition();
01722
01723 if (hCaloPreShE[0]) hCaloPreShE[0]->Fill(itHit->energy());
01724 if (hCaloPreShE[1]) hCaloPreShE[1]->Fill(itHit->energy());
01725 if (hCaloPreShToF[0]) hCaloPreShToF[0]->Fill(itHit->time());
01726 if (hCaloPreShToF[1]) hCaloPreShToF[1]->Fill(itHit->time());
01727 if (hCaloPreShPhi) hCaloPreShPhi->Fill(globalposition.phi());
01728 if (hCaloPreShEta) hCaloPreShEta->Fill(globalposition.eta());
01729
01730 } else {
01731 edm::LogWarning(MsgLoggerCat)
01732 << "PreSh PCaloHit " << i
01733 << " is expected to be (det,subdet) = ("
01734 << dEcal << "," << sdEcalPS
01735 << "); value returned is: ("
01736 << detector << "," << subdetector << ")";
01737 continue;
01738 }
01739 }
01740
01741 if (verbosity > 1) {
01742 eventout += "\n Number of PreSh Hits collected:............ ";
01743 eventout += j;
01744 }
01745
01746 if (hCaloPreSh[0]) hCaloPreSh[0]->Fill((float)j);
01747 if (hCaloPreSh[1]) hCaloPreSh[1]->Fill((float)j);
01748
01749 if (verbosity > 0)
01750 edm::LogInfo(MsgLoggerCat) << eventout << "\n";
01751
01752 return;
01753 }
01754
01755 void GlobalHitsProdHist::fillHCal(edm::Event& iEvent,
01756 const edm::EventSetup& iSetup)
01757 {
01758 std::string MsgLoggerCat = "GlobalHitsProdHist_fillHCal";
01759
01760 TString eventout;
01761 if (verbosity > 0)
01762 eventout = "\nGathering info:";
01763
01764
01765 edm::ESHandle<CaloGeometry> theCaloGeometry;
01766 iSetup.get<CaloGeometryRecord>().get(theCaloGeometry);
01767 if (!theCaloGeometry.isValid()) {
01768 edm::LogWarning(MsgLoggerCat)
01769 << "Unable to find CaloGeometryRecord in event!";
01770 return;
01771 }
01772 const CaloGeometry& theCalo(*theCaloGeometry);
01773
01774
01775 edm::PCaloHitContainer::const_iterator itHit;
01776
01778
01780
01781 edm::Handle<edm::PCaloHitContainer> HCalContainer;
01782 iEvent.getByLabel(HCalSrc_,HCalContainer);
01783 if (!HCalContainer.isValid()) {
01784 edm::LogWarning(MsgLoggerCat)
01785 << "Unable to find HCalHits in event!";
01786 return;
01787 }
01788
01789
01790 int i = 0, j = 0;
01791 for (itHit = HCalContainer->begin();
01792 itHit != HCalContainer->end(); ++itHit) {
01793
01794 ++i;
01795
01796
01797 DetId theDetUnitId(itHit->id());
01798 int detector = theDetUnitId.det();
01799 int subdetector = theDetUnitId.subdetId();
01800
01801
01802 if ((detector == dHcal) &&
01803 ((subdetector == sdHcalBrl) ||
01804 (subdetector == sdHcalEC) ||
01805 (subdetector == sdHcalOut) ||
01806 (subdetector == sdHcalFwd))) {
01807
01808
01809 const CaloCellGeometry *theDet = theCalo.
01810 getSubdetectorGeometry(theDetUnitId)->getGeometry(theDetUnitId);
01811
01812 if (!theDet) {
01813 edm::LogWarning(MsgLoggerCat)
01814 << "Unable to get CaloCellGeometry from HCalContainer for Hit " << i;
01815 continue;
01816 }
01817
01818 ++j;
01819
01820
01821 const GlobalPoint& globalposition = theDet->getPosition();
01822
01823 if (hCaloHcalE[0]) hCaloHcalE[0]->Fill(itHit->energy());
01824 if (hCaloHcalE[1]) hCaloHcalE[1]->Fill(itHit->energy());
01825 if (hCaloHcalToF[0]) hCaloHcalToF[0]->Fill(itHit->time());
01826 if (hCaloHcalToF[1]) hCaloHcalToF[1]->Fill(itHit->time());
01827 if (hCaloHcalPhi) hCaloHcalPhi->Fill(globalposition.phi());
01828 if (hCaloHcalEta) hCaloHcalEta->Fill(globalposition.eta());
01829
01830 } else {
01831 edm::LogWarning(MsgLoggerCat)
01832 << "HCal PCaloHit " << i
01833 << " is expected to be (det,subdet) = ("
01834 << dHcal << "," << sdHcalBrl
01835 << " || " << sdHcalEC << " || " << sdHcalOut << " || " << sdHcalFwd
01836 << "); value returned is: ("
01837 << detector << "," << subdetector << ")";
01838 continue;
01839 }
01840 }
01841
01842 if (verbosity > 1) {
01843 eventout += "\n Number of HCal Hits collected:............. ";
01844 eventout += j;
01845 }
01846
01847 if (hCaloHcal[0]) hCaloHcal[0]->Fill((float)j);
01848 if (hCaloHcal[1]) hCaloHcal[1]->Fill((float)j);
01849
01850 if (verbosity > 0)
01851 edm::LogInfo(MsgLoggerCat) << eventout << "\n";
01852
01853 return;
01854 }