1 #ifndef DPGAnalysis_SiStripTools_DigiBXCorrHistogramMaker_H 2 #define DPGAnalysis_SiStripTools_DigiBXCorrHistogramMaker_H 12 #include "TProfile2D.h" 32 void beginRun(
const unsigned int nrun);
34 void fillcorr(
const T& he1,
const T& he2,
const std::map<int,int>& ndigi);
105 m_nbins(iConfig.getUntrackedParameter<
int>(
"numberOfBins",200)),
109 std::vector<edm::ParameterSet>
110 wantedsubds(iConfig.
getUntrackedParameter<std::vector<edm::ParameterSet> >(
"wantedSubDets",std::vector<edm::ParameterSet>()));
112 for(std::vector<edm::ParameterSet>::iterator ps=wantedsubds.begin();ps!=wantedsubds.end();++ps) {
113 m_binmax[ps->getParameter<
unsigned int>(
"detSelection")] = ps->getParameter<
int>(
"binMax");
114 m_phasepart[ps->getParameter<
unsigned int>(
"detSelection")] = ps->getUntrackedParameter<
std::string>(
"phasePartition",
"None");
130 edm::LogInfo(
"ScaleFactors") <<
"x-axis range scale factors: ";
134 edm::LogInfo(
"BinMaxValue") <<
"Setting bin max values";
136 for(std::map<int,std::string>::const_iterator lab=
m_labels.begin();lab!=
m_labels.end();lab++) {
138 const int i = lab->first;
const std::string slab = lab->second;
const unsigned int ui =
i;
142 <<
" not configured: " << trnumb.
nstrips(i) <<
" used";
150 edm::LogInfo(
"PhasePartitions") <<
"Partitions for APV Cycle Phase";
152 for(std::map<int,std::string>::const_iterator lab=
m_labels.begin();lab!=
m_labels.end();lab++) {
154 const int i = lab->first;
const std::string slab = lab->second;
const unsigned int ui =
i;
159 for(std::map<int,std::string>::const_iterator lab=
m_labels.begin();lab!=
m_labels.end();lab++) {
161 const int i = lab->first;
const std::string slab = lab->second;
const unsigned int ui =
i;
169 sprintf(title,
"%s %s multiplicity vs BX separation",slab.c_str(),
m_hitname.c_str());
170 sprintf(name,
"n%sdigivsdbx2D",slab.c_str());
172 sprintf(name,
"n%sdigivsdbx2Dzoom2",slab.c_str());
174 sprintf(name,
"n%sdigivsdbx2Dzoom",slab.c_str());
177 m_ndigivsdbx2D[
i]->GetXaxis()->SetTitle(
"#DeltaBX"); m_ndigivsdbx2D[
i]->GetYaxis()->SetTitle(
"Number of Hits");
178 m_ndigivsdbx2Dzoom2[
i]->GetXaxis()->SetTitle(
"#DeltaBX"); m_ndigivsdbx2Dzoom2[
i]->GetYaxis()->SetTitle(
"Number of Hits");
179 m_ndigivsdbx2Dzoom[
i]->GetXaxis()->SetTitle(
"#DeltaBX"); m_ndigivsdbx2Dzoom[
i]->GetYaxis()->SetTitle(
"Number of Hits");
182 sprintf(title,
"%s %s multiplicity vs BX separation",slab.c_str(),
m_hitname.c_str());
183 sprintf(name,
"n%sdigivsdbx",slab.c_str());
185 sprintf(name,
"n%sdigivsdbxzoom2",slab.c_str());
187 sprintf(name,
"n%sdigivsdbxzoom",slab.c_str());
189 m_ndigivsdbx[
i]->GetXaxis()->SetTitle(
"#DeltaBX"); m_ndigivsdbx[
i]->GetYaxis()->SetTitle(
"Number of Hits");
190 m_ndigivsdbxzoom2[
i]->GetXaxis()->SetTitle(
"#DeltaBX"); m_ndigivsdbxzoom2[
i]->GetYaxis()->SetTitle(
"Number of Hits");
191 m_ndigivsdbxzoom[
i]->GetXaxis()->SetTitle(
"#DeltaBX"); m_ndigivsdbxzoom[
i]->GetYaxis()->SetTitle(
"Number of Hits");
193 sprintf(name,
"n%sdigivsdbx3zoom",slab.c_str());
194 sprintf(title,
"%s %s multiplicity vs Triplets BX separation",slab.c_str(),
m_hitname.c_str());
196 m_ndigivsdbx3zoom[
i]->GetXaxis()->SetTitle(
"#DeltaBX(n,n-1)"); m_ndigivsdbx3zoom[
i]->GetYaxis()->SetTitle(
"#DeltaBX(n,n-2)");
198 sprintf(name,
"%sdigicorr",slab.c_str());
199 sprintf(title,
"%s %s DBX correlation",slab.c_str(),
m_hitname.c_str());
201 m_digicorr[
i]->GetXaxis()->SetTitle(
"#DeltaBX"); m_digicorr[
i]->GetYaxis()->SetTitle(
"Number of Hits");
208 sprintf(name,
"n%sdigivsdbxincycle",slab.c_str());
209 sprintf(title,
"%s %s multiplicity vs BX separation w.r.t. cycle",slab.c_str(),
m_hitname.c_str());
211 m_ndigivsdbxincycle[
i]->GetXaxis()->SetTitle(
"#DeltaBX w.r.t. cycle"); m_ndigivsdbxincycle[
i]->GetYaxis()->SetTitle(
"Number of Hits");
213 sprintf(name,
"n%sdigivsdbxincycle2D",slab.c_str());
214 sprintf(title,
"%s %s multiplicity vs BX separation w.r.t. cycle",slab.c_str(),
m_hitname.c_str());
216 m_ndigivsdbxincycle2D[
i]->GetXaxis()->SetTitle(
"#DeltaBX w.r.t. cycle"); m_ndigivsdbxincycle2D[
i]->GetYaxis()->SetTitle(
"Number of Hits");
219 sprintf(name,
"n%sdigivsdbxincycle3",slab.c_str());
220 sprintf(title,
"%s %s multiplicity vs Triplets BX separation w.r.t. cycle",slab.c_str(),
m_hitname.c_str());
222 m_ndigivsdbxincycle3[
i]->GetXaxis()->SetTitle(
"#DeltaBX(n,n-1)");
223 m_ndigivsdbxincycle3[
i]->GetYaxis()->SetTitle(
"#DeltaBX(n,n-2)-#DeltaBX(n,n-1)");
226 sprintf(name,
"n%sdigivsdbxincycle33D",slab.c_str());
227 sprintf(title,
"%s %s multiplicity vs Triplets BX separation w.r.t. cycle",slab.c_str(),
m_hitname.c_str());
228 m_ndigivsdbxincycle33D[
i] = subev.
make<TH3F>(
name,
title,2000,-0.5,1999.5,30,-0.5,2099.5,50,0.,(1+
m_binmax[
ui]/(
m_scalefact[0]*50))*50);
229 m_ndigivsdbxincycle33D[
i]->GetXaxis()->SetTitle(
"#DeltaBX(n,n-1)");
230 m_ndigivsdbxincycle33D[
i]->GetYaxis()->SetTitle(
"#DeltaBX(n,n-2)-#DeltaBX(n,n-1)");
241 sprintf(title,
"%s Mean %s multiplicity vs BX mod(70)",slab.c_str(),
m_hitname.c_str());
242 sprintf(name,
"n%smeandigivscycle",slab.c_str());
244 m_nmeandigivscycle[
i]->GetXaxis()->SetTitle(
"absolute BX mod(70)");
245 m_nmeandigivscycle[
i]->GetYaxis()->SetTitle(
"Mean number of Hits");
247 sprintf(title,
"%s %s multiplicity vs BX mod(70)",slab.c_str(),
m_hitname.c_str());
250 sprintf(name,
"n%sdigivscycle",slab.c_str());
252 m_ndigivscycle[
i]->GetXaxis()->SetTitle(
"absolute BX mod(70)"); m_ndigivscycle[
i]->GetYaxis()->SetTitle(
"Number of Hits");
255 sprintf(name,
"n%sdigivscyclezoom",slab.c_str());
257 m_ndigivscyclezoom[
i]->GetXaxis()->SetTitle(
"absolute BX mod(70)");
258 m_ndigivscyclezoom[
i]->GetYaxis()->SetTitle(
"Number of Hits");
261 sprintf(name,
"n%sdigivscyclezoom2",slab.c_str());
263 m_ndigivscyclezoom2[
i]->GetXaxis()->SetTitle(
"absolute BX mod(70)");
264 m_ndigivscyclezoom2[
i]->GetYaxis()->SetTitle(
"Number of Hits");
267 sprintf(name,
"n%sdigivscycledbx",slab.c_str());
268 sprintf(title,
"%s %s multiplicity vs BX mod(70) and DBX",slab.c_str(),
m_hitname.c_str());
270 m_ndigivscycledbx[
i]->GetXaxis()->SetTitle(
"Event 1 BX mod(70)"); m_ndigivscycledbx[
i]->GetYaxis()->SetTitle(
"#DeltaBX event 2-1");
272 sprintf(name,
"n%sdigivscycle2dbx",slab.c_str());
273 sprintf(title,
"%s %s multiplicity vs BX mod(70) and DBX",slab.c_str(),
m_hitname.c_str());
275 m_ndigivscycle2dbx[
i]->GetXaxis()->SetTitle(
"Event 2 BX mod(70)"); m_ndigivscycle2dbx[
i]->GetYaxis()->SetTitle(
"#DeltaBX event 2-1");
282 sprintf(name,
"n%sdigivscycletime",slab.c_str());
283 sprintf(title,
"%s %s multiplicity vs BX mod(70) and Orbit",slab.c_str(),
m_hitname.c_str());
291 sprintf(title,
"%s %s mean multiplicity vs BX",slab.c_str(),
m_hitname.c_str());
292 sprintf(name,
"n%sdigivsbx",slab.c_str());
294 m_ndigivsbx[
i]->GetXaxis()->SetTitle(
"BX#"); m_ndigivsbx[
i]->GetYaxis()->SetTitle(
"Mean Number of Hits");
296 sprintf(title,
"%s %s multiplicity vs BX",slab.c_str(),
m_hitname.c_str());
299 sprintf(name,
"n%sdigivsbx2D",slab.c_str());
301 m_ndigivsbx2D[
i]->GetXaxis()->SetTitle(
"BX#"); m_ndigivsbx2D[
i]->GetYaxis()->SetTitle(
"Number of Hits");
304 sprintf(name,
"n%sdigivsbx2Dzoom",slab.c_str());
306 m_ndigivsbx2Dzoom[
i]->GetXaxis()->SetTitle(
"BX#"); m_ndigivsbx2Dzoom[
i]->GetYaxis()->SetTitle(
"Number of Hits");
309 sprintf(name,
"n%sdigivsbx2Dzoom2",slab.c_str());
311 m_ndigivsbx2Dzoom2[
i]->GetXaxis()->SetTitle(
"BX#"); m_ndigivsbx2Dzoom2[
i]->GetYaxis()->SetTitle(
"Number of Hits");
323 for(std::map<int,std::string>::const_iterator lab=
m_labels.begin();lab!=
m_labels.end();lab++) {
325 const int i = lab->first;
340 for(std::map<int,int>::const_iterator digi=ndigi.begin();digi!=ndigi.end();digi++) {
343 const int i=digi->first;
const unsigned int ui =
i;
352 long long tbx = he.absoluteBX();
381 long long dbx = he.deltaBX();
391 long long prevtbx = he.absoluteBX(1);
396 long long dbxincycle = he.deltaBXinCycle(thephase);
408 long long dbx2 = he.deltaBX(2);
414 long long dbxincycle = he.deltaBXinCycle(thephase);
415 long long dbxincycle2 = he.deltaBXinCycle(2,thephase);
428 edm::LogWarning(
"MissingKey") <<
" Key " << digi->first <<
" is missing ";
437 for(std::map<int,int>::const_iterator digi=ndigi.begin();digi!=ndigi.end();digi++) {
440 const int i=digi->first;
442 long long dbx = he2.deltaBX(he1);
447 edm::LogWarning(
"MissingKey") <<
" Key " << digi->first <<
" is missing ";
454 #endif // DPGAnalysis_SiStripTools_DigiBXCorrHistogramMaker_H
std::map< int, TH2F * > m_ndigivsbx2D
T getUntrackedParameter(std::string const &, T const &) const
std::map< int, TH2F * > m_ndigivscycle
std::map< int, TProfile2D * > m_ndigivscycle2dbx
std::map< int, TProfile * > m_ndigivsdbxzoom2
std::map< int, TProfile * > m_ndigivsdbxzoom
std::map< int, TH2F * > m_ndigivscyclezoom2
RunHistogramManager m_rhm
std::map< int, std::string > m_labels
std::map< int, TH3F * > m_ndigivsdbxincycle33D
std::map< int, TH2F * > m_ndigivsdbx2D
std::map< int, TProfile * > m_ndigivsbx
std::map< int, TH2F * > m_ndigivsbx2Dzoom2
std::map< int, TH2F * > m_ndigivsdbx2Dzoom2
std::map< int, TProfile * > m_digicorr
void book(const char *dirname, const std::map< int, std::string > &labels)
~DigiBXCorrHistogramMaker()
const int getPhase(const std::string partition) const
int nstrips(const DetId &detid) const
std::map< int, TH2F * > m_ndigivsdbx2Dzoom
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
std::map< int, TProfile * > m_ndigivsdbxincycle
std::map< unsigned int, int > m_binmax
T * make(const Args &...args) const
make new ROOT object
std::map< int, TProfile2D * > m_ndigivsdbx3zoom
std::map< int, TProfile2D * > m_ndigivsdbxincycle3
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
DigiBXCorrHistogramMaker(edm::ConsumesCollector &&iC, const int ncorbins=1000)
TProfile2D ** makeTProfile2D(const char *name, const char *title, const unsigned int nbinx, const double xmin, const double xmax, const unsigned int nbiny, const double ymin, const double ymax)
void beginRun(const edm::Run &iRun)
void fillcorr(const T &he1, const T &he2, const std::map< int, int > &ndigi)
std::map< int, TProfile2D ** > m_ndigivscycletime
std::map< int, TProfile2D * > m_ndigivscycledbx
void fill(const T &he, const std::map< int, int > &ndigi, const edm::Handle< APVCyclePhaseCollection > &phase)
std::map< int, TProfile * > m_ndigivsdbx
std::map< int, TH2F * > m_ndigivsdbxincycle2D
std::vector< int > m_scalefact
std::map< int, TProfile * > m_nmeandigivscycle
std::map< int, TH2F * > m_ndigivsbx2Dzoom
std::map< int, std::string > m_phasepart
std::map< int, TH2F * > m_ndigivscyclezoom
void beginRun(const unsigned int nrun)