CMS 3D CMS Logo

BigEventsDebugger.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: BigEventsDebugger
4 // Class: BigEventsDebugger
5 //
13 //
14 // Original Author: Andrea Venturi
15 // Created: Sun Nov 16 16:04:44 CET 2008
16 // $Id: BigEventsDebugger.cc,v 1.2 2012/12/05 21:51:54 venturia Exp $
17 //
18 //
19 
20 // system include files
21 #include <memory>
22 
23 // user include files
26 
30 
32 
33 #include <vector>
34 #include "TH1F.h"
35 #include "TH2F.h"
36 #include "TProfile.h"
37 
39 
42 
48 
50 
51 //
52 // class decleration
53 //
54 
55 template <class T>
57 public:
58  explicit BigEventsDebugger(const edm::ParameterSet&);
59  ~BigEventsDebugger() override;
60 
61 private:
62  void analyze(const edm::Event&, const edm::EventSetup&) override;
63 
64  // ----------member data ---------------------------
65 
69  bool m_folded;
73 
74  std::vector<std::string> m_labels;
75  std::vector<TH1F*> m_hist;
76  std::vector<TProfile*> m_hprof;
77  std::vector<TH2F*> m_hist2d;
78 };
79 
80 //
81 // constants, enums and typedefs
82 //
83 
84 //
85 // static data member definitions
86 //
87 
88 //
89 // constructors and destructor
90 //
91 template <class T>
93  : m_digiprofiler(iConfig),
94  m_collectionToken(consumes<T>(iConfig.getParameter<edm::InputTag>("collection"))),
95  m_singleevents(iConfig.getParameter<bool>("singleEvents")),
96  m_folded(iConfig.getUntrackedParameter<bool>("foldedStrips", false)),
97  m_want1dHisto(iConfig.getUntrackedParameter<bool>("want1dHisto", true)),
98  m_wantProfile(iConfig.getUntrackedParameter<bool>("wantProfile", true)),
99  m_want2dHisto(iConfig.getUntrackedParameter<bool>("want2dHisto", false))
100 
101 {
102  //now do what ever initialization is needed
103 
104  std::vector<edm::ParameterSet> selconfigs = iConfig.getParameter<std::vector<edm::ParameterSet> >("selections");
105 
106  for (std::vector<edm::ParameterSet>::const_iterator selconfig = selconfigs.begin(); selconfig != selconfigs.end();
107  ++selconfig) {
108  m_labels.push_back(selconfig->getParameter<std::string>("label"));
109  }
110 
112 
113  if (!m_singleevents) {
114  char dirname[500];
115  sprintf(dirname, "Summary");
116  TFileDirectory subd = tfserv->mkdir(dirname);
117 
118  //book histos
119 
120  unsigned int nbins = 768;
121  if (m_folded)
122  nbins = 256;
123 
124  for (std::vector<std::string>::const_iterator label = m_labels.begin(); label != m_labels.end(); ++label) {
125  if (m_want1dHisto) {
126  std::string hname = *label + "hist";
127  std::string htitle = *label + " occupancy";
128  m_hist.push_back(subd.make<TH1F>(hname.c_str(), htitle.c_str(), nbins, -0.5, nbins - 0.5));
129  }
130  if (m_wantProfile) {
131  std::string hname = *label + "prof";
132  std::string htitle = *label + " charge profile";
133  m_hprof.push_back(subd.make<TProfile>(hname.c_str(), htitle.c_str(), nbins, -0.5, nbins - 0.5));
134  }
135  if (m_want2dHisto) {
136  std::string hname = *label + "hist2d";
137  std::string htitle = *label + " charge distribution";
138  m_hist2d.push_back(subd.make<TH2F>(hname.c_str(), htitle.c_str(), nbins, -0.5, nbins - 0.5, 257, -0.5, 256.5));
139  }
140  }
141  }
142 }
143 
144 template <class T>
146  // do anything here that needs to be done at desctruction time
147  // (e.g. close files, deallocate resources etc.)
148 }
149 
150 //
151 // member functions
152 //
153 
154 // ------------ method called to for each event ------------
155 template <class T>
157  using namespace edm;
158 
160 
161  // create a folder for each event
162 
163  if (m_singleevents) {
164  m_hist.clear();
165  m_hprof.clear();
166  m_hist2d.clear();
167 
168  char dirname[500];
169  sprintf(dirname, "event_%u_%llu", iEvent.run(), iEvent.id().event());
170  TFileDirectory subd = tfserv->mkdir(dirname);
171 
172  //book histos
173 
174  unsigned int nbins = 768;
175  if (m_folded)
176  nbins = 256;
177 
178  for (std::vector<std::string>::const_iterator label = m_labels.begin(); label != m_labels.end(); ++label) {
179  if (m_want1dHisto) {
180  std::string hname = *label + "hist";
181  std::string htitle = *label + " occupancy";
182  m_hist.push_back(subd.make<TH1F>(hname.c_str(), htitle.c_str(), nbins, -0.5, nbins - 0.5));
183  }
184  if (m_wantProfile) {
185  std::string hname = *label + "prof";
186  std::string htitle = *label + " charge profile";
187  m_hprof.push_back(subd.make<TProfile>(hname.c_str(), htitle.c_str(), nbins, -0.5, nbins - 0.5));
188  }
189  if (m_want2dHisto) {
190  std::string hname = *label + "hist2d";
191  std::string htitle = *label + " charge distribution";
192  m_hist2d.push_back(subd.make<TH2F>(hname.c_str(), htitle.c_str(), nbins, -0.5, nbins - 0.5, 257, -0.5, 256.5));
193  }
194  }
195  }
196 
197  //analyze event
198 
199  Handle<T> digis;
200  iEvent.getByToken(m_collectionToken, digis);
201  m_digiprofiler.fill(digis, m_hist, m_hprof, m_hist2d);
202 }
203 
207 
208 //define this as a plug-in
BigEventsDebugger::m_want1dHisto
bool m_want1dHisto
Definition: BigEventsDebugger.cc:70
electrons_cff.bool
bool
Definition: electrons_cff.py:393
BigEventsDebugger::m_folded
bool m_folded
Definition: BigEventsDebugger.cc:69
MessageLogger.h
funct::false
false
Definition: Factorize.h:29
BigEventsDebugger::m_hist
std::vector< TH1F * > m_hist
Definition: BigEventsDebugger.cc:75
edm::EDGetTokenT
Definition: EDGetToken.h:33
TFileDirectory::make
T * make(const Args &... args) const
make new ROOT object
Definition: TFileDirectory.h:53
edm
HLT enums.
Definition: AlignableModifier.h:19
SiStripRawDigi.h
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89287
EDAnalyzer.h
TFileDirectory
Definition: TFileDirectory.h:24
BigEventsDebugger::m_digiprofiler
DigiCollectionProfiler< T > m_digiprofiler
Definition: BigEventsDebugger.cc:66
edm::Handle
Definition: AssociativeIterator.h:50
edm::EDAnalyzer
Definition: EDAnalyzer.h:28
BTVHLTOfflineSource_cfi.dirname
dirname
Definition: BTVHLTOfflineSource_cfi.py:7
BigEventsDebugger::m_hist2d
std::vector< TH2F * > m_hist2d
Definition: BigEventsDebugger.cc:77
BigEventsDebugger::m_hprof
std::vector< TProfile * > m_hprof
Definition: BigEventsDebugger.cc:76
MakerMacros.h
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
Service.h
BigEventsDebugger::~BigEventsDebugger
~BigEventsDebugger() override
Definition: BigEventsDebugger.cc:145
DigiCollectionProfiler
Definition: DigiCollectionProfiler.h:19
SiStripDigi.h
BigEventsDebugger::m_want2dHisto
bool m_want2dHisto
Definition: BigEventsDebugger.cc:72
Run.h
LaserClient_cfi.nbins
nbins
Definition: LaserClient_cfi.py:51
BigEventsDebugger::BigEventsDebugger
BigEventsDebugger(const edm::ParameterSet &)
Definition: BigEventsDebugger.cc:92
BigEventsDebugger::analyze
void analyze(const edm::Event &, const edm::EventSetup &) override
Definition: BigEventsDebugger.cc:156
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
TFileService.h
TFileService::mkdir
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
Definition: TFileService.h:69
funct::true
true
Definition: Factorize.h:173
edm::ParameterSet
Definition: ParameterSet.h:47
SiStripCluster.h
BigEventsDebugger
Definition: BigEventsDebugger.cc:56
Event.h
ClusterBigEventsDebugger
BigEventsDebugger< edmNew::DetSetVector< SiStripCluster > > ClusterBigEventsDebugger
Definition: BigEventsDebugger.cc:204
edm::Service< TFileService >
iEvent
int iEvent
Definition: GenABIO.cc:224
BigEventsDebugger::m_singleevents
bool m_singleevents
Definition: BigEventsDebugger.cc:68
edm::EventSetup
Definition: EventSetup.h:57
DetSetVector.h
DigiCollectionProfiler.h
DigiBigEventsDebugger
BigEventsDebugger< edm::DetSetVector< SiStripDigi > > DigiBigEventsDebugger
Definition: BigEventsDebugger.cc:205
Frameworkfwd.h
T
long double T
Definition: Basic3DVectorLD.h:48
BigEventsDebugger::m_collectionToken
edm::EDGetTokenT< T > m_collectionToken
Definition: BigEventsDebugger.cc:67
RawDigiBigEventsDebugger
BigEventsDebugger< edm::DetSetVector< SiStripRawDigi > > RawDigiBigEventsDebugger
Definition: BigEventsDebugger.cc:206
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
BigEventsDebugger::m_wantProfile
bool m_wantProfile
Definition: BigEventsDebugger.cc:71
ParameterSet.h
edm::Event
Definition: Event.h:73
DetSetVectorNew.h
label
const char * label
Definition: PFTauDecayModeTools.cc:11
BigEventsDebugger::m_labels
std::vector< std::string > m_labels
Definition: BigEventsDebugger.cc:74