CMS 3D CMS Logo

HcalHBHENewMuonAnalyzer.cc
Go to the documentation of this file.
1 #include <memory>
2 #include <iostream>
3 #include <fstream>
4 #include <vector>
5 #include <TFile.h>
6 #include <TTree.h>
7 #include "TPRegexp.h"
8 
9 // user include files
19 
21 
22 //#define EDM_ML_DEBUG
23 
24 class HcalHBHENewMuonAnalyzer : public edm::one::EDAnalyzer<edm::one::SharedResources> {
25 public:
27  ~HcalHBHENewMuonAnalyzer() override = default;
28 
29  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
30 
31 private:
32  void beginJob() override;
33  void analyze(edm::Event const&, edm::EventSetup const&) override;
34 
35  // ----------member data ---------------------------
37  const int useRaw_;
38  const int maxDepth_;
39  int kount_;
40 
42 
44  static const int depthMax_ = 7;
45  TTree* tree_;
47  unsigned int goodVertex_;
79  std::vector<std::string> all_triggers_;
80  std::vector<int> hltresults_;
82 };
83 
85  : labelHBHEMuonVar_(iConfig.getParameter<edm::InputTag>("hbheMuonLabel")),
86  useRaw_(iConfig.getParameter<int>("useRaw")),
87  maxDepth_(iConfig.getUntrackedParameter<int>("maxDepth", 4)),
88  tokHBHEMuonVar_(consumes<HcalHBHEMuonVariablesCollection>(labelHBHEMuonVar_)) {
89  usesResource(TFileService::kSharedResource);
90  //now do what ever initialization is needed
91  kount_ = 0;
92 
93  edm::LogVerbatim("HBHEMuon") << "Parameters read from config file \n\t maxDepth__ " << maxDepth_ << "\n\t Labels "
95 }
96 
97 //
98 // member functions
99 //
100 
101 // ------------ method called for each event ------------
103  ++kount_;
104  runNumber_ = iEvent.id().run();
105  eventNumber_ = iEvent.id().event();
106  lumiNumber_ = iEvent.id().luminosityBlock();
107  bxNumber_ = iEvent.bunchCrossing();
108 #ifdef EDM_ML_DEBUG
109  edm::LogVerbatim("HBHEMuon") << "Run " << runNumber_ << " Event " << eventNumber_ << " Lumi " << lumiNumber_ << " BX "
110  << bxNumber_ << std::endl;
111 #endif
112 
113  auto const& hbheMuonColl = iEvent.getHandle(tokHBHEMuonVar_);
114  if (hbheMuonColl.isValid()) {
115  for (const auto& itr : (*(hbheMuonColl.product()))) {
116  goodVertex_ = itr.goodVertex_;
117  muon_is_good_ = itr.muonGood_;
118  muon_global_ = itr.muonGlobal_;
119  muon_tracker_ = itr.muonTracker_;
120  muon_is_tight_ = itr.muonTight_;
121  muon_is_medium_ = itr.muonMedium_;
122  ptGlob_ = itr.ptGlob_;
123  etaGlob_ = itr.etaGlob_;
124  phiGlob_ = itr.phiGlob_;
125  energyMuon_ = itr.energyMuon_;
126  pMuon_ = itr.pMuon_;
127  muon_trkKink_ = itr.muonTrkKink_;
128  muon_chi2LocalPosition_ = itr.muonChi2LocalPosition_;
129  muon_segComp_ = itr.muonSegComp_;
130  trackerLayer_ = itr.trackerLayer_;
131  numPixelLayers_ = itr.numPixelLayers_;
132  tight_PixelHits_ = itr.tightPixelHits_;
133  innerTrack_ = itr.innerTrack_;
134  outerTrack_ = itr.outerTrack_;
135  globalTrack_ = itr.globalTrack_;
136  chiTracker_ = itr.chiTracker_;
137  dxyTracker_ = itr.dxyTracker_;
138  dzTracker_ = itr.dzTracker_;
139  innerTrackpt_ = itr.innerTrackPt_;
140  innerTracketa_ = itr.innerTrackEta_;
141  innerTrackphi_ = itr.innerTrackPhi_;
142  tight_validFraction_ = itr.tightValidFraction_;
143  outerTrackChi_ = itr.outerTrackChi_;
144  outerTrackPt_ = itr.outerTrackPt_;
145  outerTrackEta_ = itr.outerTrackEta_;
146  outerTrackPhi_ = itr.outerTrackPhi_;
147  outerTrackHits_ = itr.outerTrackHits_;
148  outerTrackRHits_ = itr.outerTrackRHits_;
149  globalTrckPt_ = itr.globalTrackPt_;
150  globalTrckEta_ = itr.globalTrackEta_;
151  globalTrckPhi_ = itr.globalTrackPhi_;
152  globalMuonHits_ = itr.globalMuonHits_;
153  matchedStat_ = itr.matchedStat_;
154  chiGlobal_ = itr.chiGlobal_;
155  tight_LongPara_ = itr.tightLongPara_;
156  tight_TransImpara_ = itr.tightTransImpara_;
157  isolationR04_ = itr.isolationR04_;
158  isolationR03_ = itr.isolationR03_;
159  ecalEnergy_ = itr.ecalEnergy_;
160  hcalEnergy_ = itr.hcalEnergy_;
161  hoEnergy_ = itr.hoEnergy_;
162  matchedId_ = itr.matchedId_;
163  hcalHot_ = itr.hcalHot_;
164  ecal3x3Energy_ = itr.ecal3x3Energy_;
165  ecalDetId_ = itr.ecalDetId_;
166  hcalDetId_ = itr.hcalDetId_;
167  ehcalDetId_ = itr.ehcalDetId_;
168  hcal_ieta_ = itr.hcalIeta_;
169  hcal_iphi_ = itr.hcalIphi_;
170  if (useRaw_ == 1)
171  hcal1x1Energy_ = itr.hcal1x1EnergyAux_;
172  else if (useRaw_ == 2)
173  hcal1x1Energy_ = itr.hcal1x1EnergyRaw_;
174  else
175  hcal1x1Energy_ = itr.hcal1x1Energy_;
176  for (unsigned int i = 0; i < itr.hcalDepthEnergy_.size(); ++i) {
177  hcalDepthActiveLength_[i] = itr.hcalDepthActiveLength_[i];
178  hcalDepthActiveLengthHot_[i] = itr.hcalDepthActiveLengthHot_[i];
179  if (useRaw_ == 1) {
180  hcalDepthEnergy_[i] = itr.hcalDepthEnergyAux_[i];
181  hcalDepthEnergyHot_[i] = itr.hcalDepthEnergyHotAux_[i];
182  hcalDepthEnergyCorr_[i] = itr.hcalDepthEnergyCorrAux_[i];
183  hcalDepthEnergyHotCorr_[i] = itr.hcalDepthEnergyHotCorrAux_[i];
184  hcalDepthChargeHot_[i] = itr.hcalDepthChargeHotAux_[i];
185  hcalDepthChargeHotBG_[i] = itr.hcalDepthChargeHotBGAux_[i];
186  } else if (useRaw_ == 2) {
187  hcalDepthEnergy_[i] = itr.hcalDepthEnergyRaw_[i];
188  hcalDepthEnergyHot_[i] = itr.hcalDepthEnergyHotRaw_[i];
189  hcalDepthEnergyCorr_[i] = itr.hcalDepthEnergyCorrRaw_[i];
190  hcalDepthEnergyHotCorr_[i] = itr.hcalDepthEnergyHotCorrRaw_[i];
191  hcalDepthChargeHot_[i] = itr.hcalDepthChargeHotRaw_[i];
192  hcalDepthChargeHotBG_[i] = itr.hcalDepthChargeHotBGRaw_[i];
193  } else {
194  hcalDepthEnergy_[i] = itr.hcalDepthEnergy_[i];
195  hcalDepthEnergyHot_[i] = itr.hcalDepthEnergyHot_[i];
196  hcalDepthEnergyCorr_[i] = itr.hcalDepthEnergyCorr_[i];
197  hcalDepthEnergyHotCorr_[i] = itr.hcalDepthEnergyHotCorr_[i];
198  hcalDepthChargeHot_[i] = itr.hcalDepthChargeHot_[i];
199  hcalDepthChargeHotBG_[i] = itr.hcalDepthChargeHotBG_[i];
200  }
201  hcalDepthMatch_[i] = itr.hcalDepthMatch_[i];
202  hcalDepthMatchHot_[i] = itr.hcalDepthMatchHot_[i];
203  }
204  hcalActiveLength_ = itr.hcalActiveLength_;
205  hcalActiveLengthHot_ = itr.hcalActiveLengthHot_;
206  all_triggers_ = itr.allTriggers_;
207  hltresults_ = itr.hltResults_;
208  tree_->Fill();
209  }
210  }
211 }
212 
213 // ------------ method called once each job just before starting event loop ------------
216  tree_ = fs->make<TTree>("TREE", "TREE");
217  tree_->Branch("Event_No", &eventNumber_);
218  tree_->Branch("Run_No", &runNumber_);
219  tree_->Branch("LumiNumber", &lumiNumber_);
220  tree_->Branch("BXNumber", &bxNumber_);
221  tree_->Branch("GoodVertex", &goodVertex_);
222  tree_->Branch("PF_Muon", &muon_is_good_);
223  tree_->Branch("Global_Muon", &muon_global_);
224  tree_->Branch("Tracker_muon", &muon_tracker_);
225  tree_->Branch("MuonIsTight", &muon_is_tight_);
226  tree_->Branch("MuonIsMedium", &muon_is_medium_);
227  tree_->Branch("pt_of_muon", &ptGlob_);
228  tree_->Branch("eta_of_muon", &etaGlob_);
229  tree_->Branch("phi_of_muon", &phiGlob_);
230  tree_->Branch("energy_of_muon", &energyMuon_);
231  tree_->Branch("p_of_muon", &pMuon_);
232  tree_->Branch("muon_trkKink", &muon_trkKink_);
233  tree_->Branch("muon_chi2LocalPosition", &muon_chi2LocalPosition_);
234  tree_->Branch("muon_segComp", &muon_segComp_);
235 
236  tree_->Branch("TrackerLayer", &trackerLayer_);
237  tree_->Branch("NumPixelLayers", &numPixelLayers_);
238  tree_->Branch("InnerTrackPixelHits", &tight_PixelHits_);
239  tree_->Branch("innerTrack", &innerTrack_);
240  tree_->Branch("chiTracker", &chiTracker_);
241  tree_->Branch("DxyTracker", &dxyTracker_);
242  tree_->Branch("DzTracker", &dzTracker_);
243  tree_->Branch("innerTrackpt", &innerTrackpt_);
244  tree_->Branch("innerTracketa", &innerTracketa_);
245  tree_->Branch("innerTrackphi", &innerTrackphi_);
246  tree_->Branch("tight_validFraction", &tight_validFraction_);
247 
248  tree_->Branch("OuterTrack", &outerTrack_);
249  tree_->Branch("OuterTrackChi", &outerTrackChi_);
250  tree_->Branch("OuterTrackPt", &outerTrackPt_);
251  tree_->Branch("OuterTrackEta", &outerTrackEta_);
252  tree_->Branch("OuterTrackPhi", &outerTrackPhi_);
253  tree_->Branch("OuterTrackHits", &outerTrackHits_);
254  tree_->Branch("OuterTrackRHits", &outerTrackRHits_);
255 
256  tree_->Branch("GlobalTrack", &globalTrack_);
257  tree_->Branch("GlobalTrckPt", &globalTrckPt_);
258  tree_->Branch("GlobalTrckEta", &globalTrckEta_);
259  tree_->Branch("GlobalTrckPhi", &globalTrckPhi_);
260  tree_->Branch("Global_Muon_Hits", &globalMuonHits_);
261  tree_->Branch("MatchedStations", &matchedStat_);
262  tree_->Branch("GlobTrack_Chi", &chiGlobal_);
263  tree_->Branch("Tight_LongitudinalImpactparameter", &tight_LongPara_);
264  tree_->Branch("Tight_TransImpactparameter", &tight_TransImpara_);
265 
266  tree_->Branch("IsolationR04", &isolationR04_);
267  tree_->Branch("IsolationR03", &isolationR03_);
268  tree_->Branch("ecal_3into3", &ecalEnergy_);
269  tree_->Branch("hcal_3into3", &hcalEnergy_);
270  tree_->Branch("tracker_3into3", &hoEnergy_);
271 
272  tree_->Branch("matchedId", &matchedId_);
273  tree_->Branch("hcal_cellHot", &hcalHot_);
274 
275  tree_->Branch("ecal_3x3", &ecal3x3Energy_);
276  tree_->Branch("hcal_1x1", &hcal1x1Energy_);
277  tree_->Branch("ecal_detID", &ecalDetId_);
278  tree_->Branch("hcal_detID", &hcalDetId_);
279  tree_->Branch("ehcal_detID", &ehcalDetId_);
280  tree_->Branch("hcal_ieta", &hcal_ieta_);
281  tree_->Branch("hcal_iphi", &hcal_iphi_);
282 
283  char name[100];
284  for (int k = 0; k < maxDepth_; ++k) {
285  sprintf(name, "hcal_edepth%d", (k + 1));
286  tree_->Branch(name, &hcalDepthEnergy_[k]);
287  sprintf(name, "hcal_activeL%d", (k + 1));
288  tree_->Branch(name, &hcalDepthActiveLength_[k]);
289  sprintf(name, "hcal_edepthHot%d", (k + 1));
290  tree_->Branch(name, &hcalDepthEnergyHot_[k]);
291  sprintf(name, "hcal_activeHotL%d", (k + 1));
293  sprintf(name, "hcal_cdepthHot%d", (k + 1));
294  tree_->Branch(name, &hcalDepthChargeHot_[k]);
295  sprintf(name, "hcal_cdepthHotBG%d", (k + 1));
296  tree_->Branch(name, &hcalDepthChargeHotBG_[k]);
297  sprintf(name, "hcal_edepthCorrect%d", (k + 1));
298  tree_->Branch(name, &hcalDepthEnergyCorr_[k]);
299  sprintf(name, "hcal_edepthHotCorrect%d", (k + 1));
300  tree_->Branch(name, &hcalDepthEnergyHotCorr_[k]);
301  sprintf(name, "hcal_depthMatch%d", (k + 1));
302  tree_->Branch(name, &hcalDepthMatch_[k]);
303  sprintf(name, "hcal_depthMatchHot%d", (k + 1));
304  tree_->Branch(name, &hcalDepthMatchHot_[k]);
305  }
306 
307  tree_->Branch("activeLength", &hcalActiveLength_);
308  tree_->Branch("activeLengthHot", &hcalActiveLengthHot_);
309 
310  tree_->Branch("hltresults", &hltresults_);
311  tree_->Branch("all_triggers", &all_triggers_);
312 }
313 
314 // ------------ method fills 'descriptions' with the allowed parameters for the module ------------
317  desc.add<edm::InputTag>("hbheMuonLabel", edm::InputTag("alcaHcalHBHEMuonProducer", "hbheMuon"));
318  desc.add<int>("useRaw", 0);
319  desc.addUntracked<int>("maxDepth", 4);
320  descriptions.add("hcalHBHEMuonAnalysis", desc);
321 }
322 
323 //define this as a plug-in
325 
static const std::string kSharedResource
Definition: TFileService.h:76
Log< level::Info, true > LogVerbatim
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
HcalHBHENewMuonAnalyzer(const edm::ParameterSet &)
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
std::vector< HcalHBHEMuonVariables > HcalHBHEMuonVariablesCollection
double hcalDepthEnergyHot_[depthMax_]
double hcalDepthEnergyCorr_[depthMax_]
int iEvent
Definition: GenABIO.cc:224
double hcalDepthChargeHotBG_[depthMax_]
const edm::InputTag labelHBHEMuonVar_
const edm::EDGetTokenT< HcalHBHEMuonVariablesCollection > tokHBHEMuonVar_
double hcalDepthActiveLength_[depthMax_]
std::vector< std::string > all_triggers_
void analyze(edm::Event const &, edm::EventSetup const &) override
void add(std::string const &label, ParameterSetDescription const &psetDescription)
double hcalDepthActiveLengthHot_[depthMax_]
HLT enums.
~HcalHBHENewMuonAnalyzer() override=default
double hcalDepthChargeHot_[depthMax_]
double hcalDepthEnergyHotCorr_[depthMax_]