test
CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
DQMHcalIsoTrackPostProcessor.cc
Go to the documentation of this file.
8 
11 
12 #include <iostream>
13 #include <string.h>
14 #include <iomanip>
15 #include<fstream>
16 #include <math.h>
17 
18 #define DebugLog
19 
21 
22 public:
25 
26 // void analyze(const edm::Event& event, const edm::EventSetup& eventSetup) override {};
27  virtual void dqmEndJob(DQMStore::IBooker &, DQMStore::IGetter &) override; //performed in the endJob
28 
29 private:
30 
32 };
33 
34 
36  subDir_ = pset.getUntrackedParameter<std::string>("subDir");
37 }
38 
39 
41 
42  if (igetter.dirExists(subDir_)) {
43  igetter.cd(subDir_);
44  } else {
45  edm::LogWarning("DQMHcalIsoTrackPostProcessor") << "cannot find directory: " << subDir_ << " , skipping";
46  return;
47  }
48 
49  MonitorElement *hSumEta[4], *hSumPhi[4], *hPurityEta[3], *hPurityPhi[3];
50  std::string types[4] = {"L2","L2x","L3","Off"};
51  char name[100], title[200];
52  for (int i=0; i<4; ++i) {
53  sprintf (name, "/heta%s", types[i].c_str());
54  std::string hname1 = ibooker.pwd() + std::string(name);
55  int nbinEta = igetter.get(hname1)->getTH1F()->GetNbinsX();
56  double xminEta = igetter.get(hname1)->getTH1F()->GetBinLowEdge(1);
57  double xmaxEta = igetter.get(hname1)->getTH1F()->GetBinLowEdge(nbinEta) +
58  igetter.get(hname1)->getTH1F()->GetBinWidth(nbinEta);
59  sprintf (name, "/hphi%s", types[i].c_str());
60  std::string hname2 = ibooker.pwd() + std::string(name);
61  int nbinPhi = igetter.get(hname2)->getTH1F()->GetNbinsX();
62  double xminPhi = igetter.get(hname2)->getTH1F()->GetBinLowEdge(1);
63  double xmaxPhi = igetter.get(hname2)->getTH1F()->GetBinLowEdge(nbinEta) +
64  igetter.get(hname2)->getTH1F()->GetBinWidth(nbinEta);
65  sprintf (name, "hSum%sEta", types[i].c_str());
66  hSumEta[i] = ibooker.book1D(name,name,nbinEta,xminEta,xmaxEta);
67  sprintf (name, "hSum%sPhi", types[i].c_str());
68  hSumPhi[i] = ibooker.book1D(name,name,nbinPhi,xminPhi,xmaxPhi);
69  if (i < 3) {
70  sprintf (name, "hPurity%sEta", types[i].c_str());
71  sprintf (title,"Purity of %s sample vs #eta", types[i].c_str());
72  hPurityEta[i] = ibooker.book1D(name, title,nbinEta,xminEta,xmaxEta);
73  sprintf (name, "hPurity%sPhi", types[i].c_str());
74  sprintf (title,"Purity of %s sample vs #phi", types[i].c_str());
75  hPurityPhi[i] = ibooker.book1D(name, title,nbinPhi,xminPhi,xmaxPhi);
76  }
77  }
78 
79  for (int i=0; i<4; ++i) {
80  sprintf (name, "/heta%s", types[i].c_str());
81  std::string hname1 = ibooker.pwd() + std::string(name);
82 #ifdef DebugLog
83  std::cout << "PostProcesor " << hname1 << " " << igetter.get(hname1) << std::endl;
84 #endif
85  hSumEta[i]->getTH1F()->Add(igetter.get(hname1)->getTH1F(),1);
86  sprintf (name, "/hphi%s", types[i].c_str());
87  std::string hname2 = ibooker.pwd() + std::string(name);
88 #ifdef DebugLog
89  std::cout << "PostProcesor " << hname2 << " " << igetter.get(hname2) << std::endl;
90 #endif
91  hSumPhi[i]->getTH1F()->Add(igetter.get(hname2)->getTH1F(),1);
92  }
93 
94  for (int i=0; i<3; ++i) {
95  hPurityEta[i]->getTH1F()->Divide(hSumEta[i+1]->getTH1F(),hSumEta[i]->getTH1F(),1,1);
96  hPurityPhi[i]->getTH1F()->Divide(hSumPhi[i+1]->getTH1F(),hSumPhi[i]->getTH1F(),1,1);
97  }
98 
99 }
100 
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
void cd(void)
Definition: DQMStore.cc:338
MonitorElement * get(const std::string &path)
Definition: DQMStore.cc:304
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
const std::string & pwd(void)
Definition: DQMStore.cc:284
DQMHcalIsoTrackPostProcessor(const edm::ParameterSet &pset)
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
TH1F * getTH1F(std::string name, std::string process, std::string rootfolder, DQMStore *dbe_, bool verb, bool clone)
bool dirExists(const std::string &path)
Definition: DQMStore.cc:334
virtual void dqmEndJob(DQMStore::IBooker &, DQMStore::IGetter &) override
TH1F * getTH1F(void) const
tuple cout
Definition: gather_cfg.py:145