CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Classes | Functions
CaloSimHitAnalysis.cc File Reference
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Framework/interface/one/EDAnalyzer.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/Framework/interface/MakerMacros.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
#include "FWCore/Utilities/interface/Exception.h"
#include "FWCore/Utilities/interface/InputTag.h"
#include "FWCore/Utilities/interface/transform.h"
#include "FWCore/ServiceRegistry/interface/Service.h"
#include "CommonTools/UtilAlgos/interface/TFileService.h"
#include "DataFormats/EcalDetId/interface/EBDetId.h"
#include "DataFormats/EcalDetId/interface/EEDetId.h"
#include "DataFormats/HcalDetId/interface/HcalDetId.h"
#include "DataFormats/HcalDetId/interface/HcalSubdetector.h"
#include "DataFormats/HcalDetId/interface/HcalTestNumbering.h"
#include "Geometry/CaloGeometry/interface/CaloGeometry.h"
#include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h"
#include "Geometry/HcalTowerAlgo/interface/HcalGeometry.h"
#include "Geometry/Records/interface/CaloGeometryRecord.h"
#include "SimDataFormats/CaloHit/interface/PCaloHit.h"
#include "SimDataFormats/CaloHit/interface/PCaloHitContainer.h"
#include "SimDataFormats/CaloHit/interface/PassiveHit.h"
#include "SimG4CMS/Calo/interface/CaloHitID.h"
#include <TH1F.h>
#include <TH2F.h>
#include <memory>
#include <iostream>
#include <fstream>
#include <vector>
#include <map>
#include <string>

Go to the source code of this file.

Classes

class  CaloSimHitAnalysis
 

Functions

static const
edm::ParameterSetDescriptionFillerPluginFactory::PMaker
< edm::ParameterSetDescriptionFiller
< CaloSimHitAnalysis > > 
s_filler__LINE__ ("CaloSimHitAnalysis")
 
static const
edm::MakerPluginFactory::PMaker
< edm::WorkerMaker
< CaloSimHitAnalysis > > 
s_maker__LINE__ ("CaloSimHitAnalysis")
 
 tok_passive_ (consumes< edm::PassiveHitContainer >(edm::InputTag(g4Label_,"AllPassiveHits")))
 

Function Documentation

static const edm::ParameterSetDescriptionFillerPluginFactory::PMaker<edm::ParameterSetDescriptionFiller< CaloSimHitAnalysis > > s_filler__LINE__ ( "CaloSimHitAnalysis"  )
static
static const edm::MakerPluginFactory ::PMaker< edm::WorkerMaker< CaloSimHitAnalysis > > s_maker__LINE__ ( "CaloSimHitAnalysis"  )
static
tok_passive_ ( consumes< edm::PassiveHitContainer edm::InputTag(g4Label_,"AllPassiveHits"))

Definition at line 105 of file CaloSimHitAnalysis.cc.

References CaloSimHitAnalysis::allSteps_, HLT_FULL_cff::depth, CaloSimHitAnalysis::detNames_, PVValHelper::eta, CaloSimHitAnalysis::etaDepth_, CaloSimHitAnalysis::g4Label_, CaloSimHitAnalysis::h_edep1_, CaloSimHitAnalysis::h_edep_, CaloSimHitAnalysis::h_edepEM_, CaloSimHitAnalysis::h_edepHad_, CaloSimHitAnalysis::h_edepp_, CaloSimHitAnalysis::h_edepT1_, CaloSimHitAnalysis::h_edepT_, CaloSimHitAnalysis::h_edepTk_, CaloSimHitAnalysis::h_eta_, CaloSimHitAnalysis::h_etaphi_, CaloSimHitAnalysis::h_etot_, CaloSimHitAnalysis::h_etotg_, CaloSimHitAnalysis::h_hit_, CaloSimHitAnalysis::h_hitp_, CaloSimHitAnalysis::h_phi_, CaloSimHitAnalysis::h_rr_, CaloSimHitAnalysis::h_rz1_, CaloSimHitAnalysis::h_rz_, CaloSimHitAnalysis::h_rzH_, CaloSimHitAnalysis::h_stepp_, CaloSimHitAnalysis::h_time_, CaloSimHitAnalysis::h_timep_, CaloSimHitAnalysis::h_timeT_, CaloSimHitAnalysis::h_timeTk_, CaloSimHitAnalysis::h_trackp_, CaloSimHitAnalysis::h_zz_, CaloSimHitAnalysis::hitLab_, mps_fire::i, edm::Service< T >::isAvailable(), isotrackApplyRegressor::k, TFileService::kSharedResource, M_PI, TFileService::make(), CaloSimHitAnalysis::maxEnergy_, CaloSimHitAnalysis::maxTime_, mergeVDriftHistosByStation::name, CaloSimHitAnalysis::nCalo_, CaloSimHitAnalysis::passive_, AlCaHLTBitMon_QueryRunRegistry::string, CaloSimHitAnalysis::tCut_, compare::tfile, CaloSimHitAnalysis::timeSliceUnit_, runGCPTkAlMap::title, CaloSimHitAnalysis::tMax_, and SiStrip_OfflineMonitoring_cff::ymax.

105  {
106  usesResource(TFileService::kSharedResource);
107 
108  edm::LogVerbatim("HitStudy") << "Module Label: " << g4Label_ << " Hits|timeSliceUnit:";
109  for (unsigned int i = 0; i < hitLab_.size(); i++)
110  edm::LogVerbatim("HitStudy") << "[" << i << "] " << hitLab_[i] << " " << timeSliceUnit_[i];
111  edm::LogVerbatim("HitStudy") << "Passive Hits " << passive_ << " from AllPassiveHits";
112  edm::LogVerbatim("HitStudy") << "maxEnergy: " << maxEnergy_ << " maxTime: " << maxTime_ << " tMax: " << tMax_;
113  for (unsigned int k = 0; k < detNames_.size(); ++k)
114  edm::LogVerbatim("HitStudy") << "Detector[" << k << "] " << detNames_[k];
115 
117  if (!tfile.isAvailable())
118  throw cms::Exception("BadConfig") << "TFileService unavailable: "
119  << "please add it to config file";
120  char name[29], title[120];
121  std::string dets[nCalo_] = {"EB", "EE", "HB", "HE", "HO", "HF"};
122  for (int i = 0; i < nCalo_; i++) {
123  sprintf(name, "Hit%d", i);
124  sprintf(title, "Number of hits in %s", dets[i].c_str());
125  h_hit_[i] = tfile->make<TH1F>(name, title, 100, 0., 20000.);
126  h_hit_[i]->GetXaxis()->SetTitle(title);
127  h_hit_[i]->GetYaxis()->SetTitle("Events");
128  sprintf(name, "Time%d", i);
129  sprintf(title, "Time of the hit (ns) in %s", dets[i].c_str());
130  h_time_[i] = tfile->make<TH1F>(name, title, 100, 0., 200.);
131  h_time_[i]->GetXaxis()->SetTitle(title);
132  h_time_[i]->GetYaxis()->SetTitle("Hits");
133  sprintf(name, "TimeT%d", i);
134  sprintf(title, "Time of each hit (ns) in %s", dets[i].c_str());
135  h_timeT_[i] = tfile->make<TH1F>(name, title, 100, 0., 200.);
136  h_timeT_[i]->GetXaxis()->SetTitle(title);
137  h_timeT_[i]->GetYaxis()->SetTitle("Hits");
138  double ymax = (i > 1) ? 0.01 : 0.1;
139  double ymx0 = (i > 1) ? 0.0025 : 0.025;
140  sprintf(name, "Edep%d", i);
141  sprintf(title, "Energy deposit (GeV) in %s", dets[i].c_str());
142  h_edep_[i] = tfile->make<TH1F>(name, title, 100, 0., ymax);
143  h_edep_[i]->GetXaxis()->SetTitle(title);
144  h_edep_[i]->GetYaxis()->SetTitle("Hits");
145  sprintf(name, "EdepT%d", i);
146  sprintf(title, "Energy deposit (GeV) of each hit in %s", dets[i].c_str());
147  h_edepT_[i] = tfile->make<TH1F>(name, title, 100, 0., ymx0);
148  h_edepT_[i]->GetXaxis()->SetTitle(title);
149  h_edepT_[i]->GetYaxis()->SetTitle("Hits");
150  sprintf(name, "EdepEM%d", i);
151  sprintf(title, "Energy deposit (GeV) by EM particles in %s", dets[i].c_str());
152  h_edepEM_[i] = tfile->make<TH1F>(name, title, 100, 0., ymx0);
153  h_edepEM_[i]->GetXaxis()->SetTitle(title);
154  h_edepEM_[i]->GetYaxis()->SetTitle("Hits");
155  sprintf(name, "EdepHad%d", i);
156  sprintf(title, "Energy deposit (GeV) by hadrons in %s", dets[i].c_str());
157  h_edepHad_[i] = tfile->make<TH1F>(name, title, 100, 0., ymx0);
158  h_edepHad_[i]->GetXaxis()->SetTitle(title);
159  h_edepHad_[i]->GetYaxis()->SetTitle("Hits");
160  sprintf(name, "Edep15%d", i);
161  sprintf(title, "Energy deposit (GeV) for T > %4.0f ns in %s", tCut_, dets[i].c_str());
162  h_edep1_[i] = tfile->make<TH1F>(name, title, 100, 0., ymax);
163  h_edep1_[i]->GetXaxis()->SetTitle(title);
164  h_edep1_[i]->GetYaxis()->SetTitle("Hits");
165  sprintf(name, "EdepT15%d", i);
166  sprintf(title, "Energy deposit (GeV) of each hit for T > %4.0f in %s", tCut_, dets[i].c_str());
167  h_edepT1_[i] = tfile->make<TH1F>(name, title, 100, 0., ymx0);
168  h_edepT1_[i]->GetXaxis()->SetTitle(title);
169  h_edepT1_[i]->GetYaxis()->SetTitle("Hits");
170  ymax = (i > 1) ? 1.0 : maxEnergy_;
171  sprintf(name, "Etot%d", i);
172  sprintf(title, "Total energy deposit (GeV) in %s", dets[i].c_str());
173  h_etot_[i] = tfile->make<TH1F>(name, title, 50, 0., ymax);
174  h_etot_[i]->GetXaxis()->SetTitle(title);
175  h_etot_[i]->GetYaxis()->SetTitle("Events");
176  sprintf(name, "EtotG%d", i);
177  sprintf(title, "Total energy deposit (GeV) in %s (t < 100 ns)", dets[i].c_str());
178  h_etotg_[i] = tfile->make<TH1F>(name, title, 50, 0., ymax);
179  h_etotg_[i]->GetXaxis()->SetTitle(title);
180  h_etotg_[i]->GetYaxis()->SetTitle("Events");
181  sprintf(name, "rr%d", i);
182  sprintf(title, "R of hit point (cm) in %s", dets[i].c_str());
183  h_rr_[i] = tfile->make<TH1F>(name, title, 100, 0., 250.);
184  h_rr_[i]->GetXaxis()->SetTitle(title);
185  h_rr_[i]->GetYaxis()->SetTitle("Hits");
186  sprintf(name, "zz%d", i);
187  sprintf(title, "z of hit point (cm) in %s", dets[i].c_str());
188  h_zz_[i] = tfile->make<TH1F>(name, title, 240, -600., 600.);
189  h_zz_[i]->GetXaxis()->SetTitle(title);
190  h_zz_[i]->GetYaxis()->SetTitle("Hits");
191  sprintf(name, "eta%d", i);
192  sprintf(title, "#eta of hit point in %s", dets[i].c_str());
193  h_eta_[i] = tfile->make<TH1F>(name, title, 100, -5.0, 5.0);
194  h_eta_[i]->GetXaxis()->SetTitle(title);
195  h_eta_[i]->GetYaxis()->SetTitle("Hits");
196  sprintf(name, "phi%d", i);
197  sprintf(title, "#phi of hit point in %s", dets[i].c_str());
198  h_phi_[i] = tfile->make<TH1F>(name, title, 100, -M_PI, M_PI);
199  h_phi_[i]->GetXaxis()->SetTitle(title);
200  h_phi_[i]->GetYaxis()->SetTitle("Hits");
201  }
202  sprintf(title, "R vs Z of hit point");
203  h_rz_ = tfile->make<TH2F>("rz", title, 120, 0., 600., 100, 0., 250.);
204  h_rz_->GetXaxis()->SetTitle("z (cm)");
205  h_rz_->GetYaxis()->SetTitle("R (cm)");
206  sprintf(title, "R vs Z of hit point for hits with T > %4.0f ns", tCut_);
207  h_rz1_ = tfile->make<TH2F>("rz2", title, 120, 0., 600., 100, 0., 250.);
208  h_rz1_->GetXaxis()->SetTitle("z (cm)");
209  h_rz1_->GetYaxis()->SetTitle("R (cm)");
210  sprintf(title, "#phi vs #eta of hit point");
211  h_etaphi_ = tfile->make<TH2F>("etaphi", title, 100, 0., 5., 100, 0., M_PI);
212  h_etaphi_->GetXaxis()->SetTitle("#eta");
213  h_etaphi_->GetYaxis()->SetTitle("#phi");
214 
215  if (passive_) {
216  h_hitp_ = tfile->make<TH1F>("hitp", "All Steps", 100, 0.0, 20000.0);
217  h_hitp_->GetXaxis()->SetTitle("Hits");
218  h_hitp_->GetYaxis()->SetTitle("Events");
219  h_trackp_ = tfile->make<TH1F>("trackp", "All Steps", 100, 0.0, 200000.0);
220  h_hitp_->GetXaxis()->SetTitle("Tracks");
221  h_hitp_->GetYaxis()->SetTitle("Events");
222  h_edepp_ = tfile->make<TH1F>("edepp", "All Steps", 100, 0.0, 50.0);
223  h_edepp_->GetXaxis()->SetTitle("Energy Deposit (MeV)");
224  h_edepp_->GetYaxis()->SetTitle("Hits");
225  h_timep_ = tfile->make<TH1F>("timep", "All Steps", 100, 0.0, 100.0);
226  h_timep_->GetXaxis()->SetTitle("Hits");
227  h_timep_->GetYaxis()->SetTitle("Hit Time (ns)");
228  h_stepp_ = tfile->make<TH1F>("stepp", "All Steps", 1000, 0.0, 100.0);
229  h_stepp_->GetXaxis()->SetTitle("Hits");
230  h_stepp_->GetYaxis()->SetTitle("Step length (cm)");
231  for (unsigned int k = 0; k < detNames_.size(); ++k) {
232  sprintf(name, "edept%d", k);
233  sprintf(title, "Energy Deposit (MeV) in %s", detNames_[k].c_str());
234  h_edepTk_.emplace_back(tfile->make<TH1F>(name, title, 100, 0.0, 1.0));
235  h_edepTk_.back()->GetYaxis()->SetTitle("Hits");
236  h_edepTk_.back()->GetXaxis()->SetTitle(title);
237  sprintf(name, "timet%d", k);
238  sprintf(title, "Hit Time (ns) in %s", detNames_[k].c_str());
239  h_timeTk_.emplace_back(tfile->make<TH1F>(name, title, 100, 0.0, 100.0));
240  h_timeTk_.back()->GetYaxis()->SetTitle("Hits");
241  h_timeTk_.back()->GetXaxis()->SetTitle(title);
242  }
243  if ((allSteps_ / 100) % 10 > 0) {
244  for (int eta = 1; eta <= 29; ++eta) {
245  int dmax = (eta < 16) ? 4 : 7;
246  for (int depth = 1; depth <= dmax; ++depth) {
247  sprintf(name, "Eta%dDepth%d", eta, depth);
248  sprintf(title, "R vs Z (#eta = %d, depth = %d)", eta, depth);
249  etaDepth_[eta * 100 + depth] = h_rzH_.size();
250  h_rzH_.emplace_back(tfile->make<TH2F>(name, title, 120, 0., 600., 100, 0., 250.));
251  h_rzH_.back()->GetXaxis()->SetTitle("z (cm)");
252  h_rzH_.back()->GetYaxis()->SetTitle("R (cm)");
253  }
254  }
255  }
256  }
257 }
static const std::string kSharedResource
Definition: TFileService.h:76
Log< level::Info, true > LogVerbatim
T * make(const Args &...args) const
make new ROOT object
Definition: TFileService.h:64
bool isAvailable() const
Definition: Service.h:40
#define M_PI
tuple tfile
Definition: compare.py:324