CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes
DTSegmentAnalysisTest Class Reference

#include <DTSegmentAnalysisTest.h>

Inheritance diagram for DTSegmentAnalysisTest:
edm::EDAnalyzer

Public Member Functions

void analyze (const edm::Event &e, const edm::EventSetup &c)
 Analyze. More...
 
void beginJob ()
 BeginJob. More...
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &context)
 
void beginRun (const edm::Run &run, const edm::EventSetup &eSetup)
 
void bookHistos ()
 book the summary histograms More...
 
 DTSegmentAnalysisTest (const edm::ParameterSet &ps)
 Constructor. More...
 
void endJob (void)
 
void endLuminosityBlock (edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &c)
 DQM Client Diagnostic in online mode. More...
 
void endRun (edm::Run const &run, edm::EventSetup const &c)
 DQM Client Diagnostic in offline mode. More...
 
std::string getMEName (const DTChamberId &chID, std::string histoTag)
 Get the ME name. More...
 
void performClientDiagnostic ()
 Perform client diagnostic operations. More...
 
virtual ~DTSegmentAnalysisTest ()
 Destructor. More...
 
- Public Member Functions inherited from edm::EDAnalyzer
 EDAnalyzer ()
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 

Private Attributes

std::map< std::pair< int, int >
, MonitorElement * > 
chi2Histos
 
DQMStoredbe
 
bool detailedAnalysis
 
bool hltDQMMode
 
edm::ESHandle< DTGeometrymuonGeom
 
int nevents
 
unsigned int nLumiSegs
 
bool normalizeHistoPlots
 
edm::ParameterSet parameters
 
bool runOnline
 
std::map< std::pair< int, int >
, MonitorElement * > 
segmRecHitHistos
 
std::map< int, MonitorElement * > summaryHistos
 
std::string topHistoFolder
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
typedef WorkerT< EDAnalyzerWorkerType
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDAnalyzer
CurrentProcessingContext const * currentContext () const
 

Detailed Description

Definition at line 41 of file DTSegmentAnalysisTest.h.

Constructor & Destructor Documentation

DTSegmentAnalysisTest::DTSegmentAnalysisTest ( const edm::ParameterSet ps)

Constructor.

Definition at line 45 of file DTSegmentAnalysisTest.cc.

References edm::ParameterSet::getUntrackedParameter(), LogTrace, cmsCodeRules.cppFunctionSkipper::operator, and Parameters::parameters.

45  {
46 
47  LogTrace ("DTDQM|DTMonitorClient|DTSegmentAnalysisTest") << "[DTSegmentAnalysisTest]: Constructor";
48  parameters = ps;
49 
51 
52  // get the cfi parameters
53  detailedAnalysis = parameters.getUntrackedParameter<bool>("detailedAnalysis","false");
54  normalizeHistoPlots = parameters.getUntrackedParameter<bool>("normalizeHistoPlots",false);
55  runOnline = parameters.getUntrackedParameter<bool>("runOnline",true);
56  // top folder for the histograms in DQMStore
57  topHistoFolder = ps.getUntrackedParameter<string>("topHistoFolder","DT/02-Segments");
58  // hlt DQM mode
59  hltDQMMode = ps.getUntrackedParameter<bool>("hltDQMMode",false);
60 }
T getUntrackedParameter(std::string const &, T const &) const
edm::ParameterSet parameters
#define LogTrace(id)
DTSegmentAnalysisTest::~DTSegmentAnalysisTest ( )
virtual

Destructor.

Definition at line 63 of file DTSegmentAnalysisTest.cc.

References LogTrace, and nevents.

63  {
64 
65  LogTrace ("DTDQM|DTMonitorClient|DTSegmentAnalysisTest") << "DTSegmentAnalysisTest: analyzed " << nevents << " events";
66 }
#define LogTrace(id)

Member Function Documentation

void DTSegmentAnalysisTest::analyze ( const edm::Event e,
const edm::EventSetup c 
)
virtual

Analyze.

Implements edm::EDAnalyzer.

Definition at line 97 of file DTSegmentAnalysisTest.cc.

References LogTrace, and nevents.

97  {
98 
99  nevents++;
100  if(nevents%1000 == 0)
101  LogTrace ("DTDQM|DTMonitorClient|DTSegmentAnalysisTest") << "[DTSegmentAnalysisTest]: "<<nevents<<" events";
102 
103 }
#define LogTrace(id)
void DTSegmentAnalysisTest::beginJob ( void  )
virtual

BeginJob.

Reimplemented from edm::EDAnalyzer.

Definition at line 69 of file DTSegmentAnalysisTest.cc.

References bookHistos(), LogTrace, and nevents.

69  {
70 
71  LogTrace ("DTDQM|DTMonitorClient|DTSegmentAnalysisTest") <<"[DTSegmentAnalysisTest]: BeginJob";
72 
73  nevents = 0;
74 
75  // book the histos
76  bookHistos();
77 
78 }
#define LogTrace(id)
void bookHistos()
book the summary histograms
void DTSegmentAnalysisTest::beginLuminosityBlock ( edm::LuminosityBlock const &  lumiSeg,
edm::EventSetup const &  context 
)
virtual

Reimplemented from edm::EDAnalyzer.

Definition at line 90 of file DTSegmentAnalysisTest.cc.

References LogTrace.

90  {
91 
92  LogTrace ("DTDQM|DTMonitorClient|DTSegmentAnalysisTest") <<"[DTSegmentAnalysisTest]: Begin of LS transition";
93 
94 }
#define LogTrace(id)
void DTSegmentAnalysisTest::beginRun ( const edm::Run run,
const edm::EventSetup eSetup 
)
virtual

Reimplemented from edm::EDAnalyzer.

Definition at line 81 of file DTSegmentAnalysisTest.cc.

References edm::EventSetup::get(), and LogTrace.

81  {
82 
83  LogTrace ("DTDQM|DTMonitorClient|DTSegmentAnalysisTest") <<"[DTSegmentAnalysisTest]: BeginRun";
84 
85  context.get<MuonGeometryRecord>().get(muonGeom);
86 
87 }
#define LogTrace(id)
edm::ESHandle< DTGeometry > muonGeom
void DTSegmentAnalysisTest::bookHistos ( )

book the summary histograms

Definition at line 315 of file DTSegmentAnalysisTest.cc.

315  {
316 
317  for(int wh=-2; wh<=2; wh++){
318  stringstream wheel; wheel << wh;
319  string histoName = "segmentSummary_W" + wheel.str();
321  summaryHistos[wh] = dbe->book2D(histoName.c_str(),histoName.c_str(),12,1,13,4,1,5);
322  summaryHistos[wh]->setAxisTitle("Sector",1);
323  summaryHistos[wh]->setBinLabel(1,"MB1",2);
324  summaryHistos[wh]->setBinLabel(2,"MB2",2);
325  summaryHistos[wh]->setBinLabel(3,"MB3",2);
326  summaryHistos[wh]->setBinLabel(4,"MB4",2);
327 
328  if(detailedAnalysis){
329  for(int sect=1; sect<=14; sect++){
330  stringstream sector; sector << sect;
331  string chi2HistoName = "chi2BadSegmPercentual_W" + wheel.str() + "_Sec" + sector.str();
332  dbe->setCurrentFolder(topHistoFolder + "/Wheel" + wheel.str() + "/Tests");
333  chi2Histos[make_pair(wh,sect)] = dbe->book1D(chi2HistoName.c_str(),chi2HistoName.c_str(),4,1,5);
334  chi2Histos[make_pair(wh,sect)]->setBinLabel(1,"MB1");
335  chi2Histos[make_pair(wh,sect)]->setBinLabel(2,"MB2");
336  chi2Histos[make_pair(wh,sect)]->setBinLabel(3,"MB3");
337  chi2Histos[make_pair(wh,sect)]->setBinLabel(4,"MB4");
338 
339  string segmHistoName = "residualsOnSegmRecHitNumber_W" + wheel.str() + "_Sec" + sector.str();
340  segmRecHitHistos[make_pair(wh,sect)] = dbe->book1D(segmHistoName.c_str(),segmHistoName.c_str(),4,1,5);
341  segmRecHitHistos[make_pair(wh,sect)]->setBinLabel(1,"MB1");
342  segmRecHitHistos[make_pair(wh,sect)]->setBinLabel(2,"MB2");
343  segmRecHitHistos[make_pair(wh,sect)]->setBinLabel(3,"MB3");
344  segmRecHitHistos[make_pair(wh,sect)]->setBinLabel(4,"MB4");
345 
346  }
347  }
348  }
349 
350  string histoName = "segmentSummary";
352  summaryHistos[3] = dbe->book2D(histoName.c_str(),histoName.c_str(),12,1,13,5,-2,3);
353  summaryHistos[3]->setAxisTitle("Sector",1);
354  summaryHistos[3]->setAxisTitle("Wheel",2);
355 
356  summaryHistos[4] = dbe->book2D("SegmentGlbSummary",histoName.c_str(),12,1,13,5,-2,3);
357  summaryHistos[4]->setAxisTitle("Sector",1);
358  summaryHistos[4]->setAxisTitle("Wheel",2);
359 
360 
361 }
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:514
std::map< std::pair< int, int >, MonitorElement * > segmRecHitHistos
std::map< std::pair< int, int >, MonitorElement * > chi2Histos
std::map< int, MonitorElement * > summaryHistos
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
Definition: DQMStore.cc:642
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:232
void DTSegmentAnalysisTest::endJob ( void  )
virtual

Reimplemented from edm::EDAnalyzer.

Definition at line 366 of file DTSegmentAnalysisTest.cc.

366  {
367 }
void DTSegmentAnalysisTest::endLuminosityBlock ( edm::LuminosityBlock const &  lumiSeg,
edm::EventSetup const &  c 
)
virtual

DQM Client Diagnostic in online mode.

Reimplemented from edm::EDAnalyzer.

Definition at line 106 of file DTSegmentAnalysisTest.cc.

References edm::LuminosityBlockBase::id(), LogTrace, and edm::LuminosityBlockID::luminosityBlock().

106  {
107 
108  // counts number of lumiSegs
109  nLumiSegs = lumiSeg.id().luminosityBlock();
110 
111  if (runOnline) {
112  LogTrace ("DTDQM|DTMonitorClient|DTSegmentAnalysisTest")
113  <<"[DTSegmentAnalysisTest]: End of LS " << nLumiSegs
114  << ". Client called in online mode , perform DQM client operation";
116  }
117 
118 }
#define LogTrace(id)
void performClientDiagnostic()
Perform client diagnostic operations.
void DTSegmentAnalysisTest::endRun ( edm::Run const &  run,
edm::EventSetup const &  c 
)
virtual

DQM Client Diagnostic in offline mode.

Reimplemented from edm::EDAnalyzer.

Definition at line 120 of file DTSegmentAnalysisTest.cc.

References LogTrace, and DTTimeEvolutionHisto::normalizeTo().

120  {
121 
122  if (!runOnline) {
123  LogTrace ("DTDQM|DTMonitorClient|DTSegmentAnalysisTest")
124  <<"[DTSegmentAnalysisTest]: endRun. Client called in offline mode , perform DQM client operation";
126  }
127 
128  if(normalizeHistoPlots) {
129  LogTrace ("DTDQM|DTMonitorClient|DTSegmentAnalysisTest") << " Performing time-histo normalization" << endl;
130  MonitorElement* hNevtPerLS = 0;
131  if(hltDQMMode) hNevtPerLS = dbe->get(topHistoFolder + "/NevtPerLS");
132  else hNevtPerLS = dbe->get("DT/EventInfo/NevtPerLS");
133 
134  if(hNevtPerLS != 0) {
135  for(int wheel = -2; wheel != 3; ++wheel) { // loop over wheels
136  for(int sector = 1; sector <= 12; ++sector) { // loop over sectors
137  stringstream wheelstr; wheelstr << wheel;
138  stringstream sectorstr; sectorstr << sector;
139  string sectorHistoName = topHistoFolder + "/Wheel" + wheelstr.str() +
140  "/Sector" + sectorstr.str() +
141  "/NSegmPerEvent_W" + wheelstr.str() +
142  "_Sec" + sectorstr.str();
143  DTTimeEvolutionHisto hNSegmPerLS(&(*dbe), sectorHistoName);
144  hNSegmPerLS.normalizeTo(hNevtPerLS);
145  }
146  }
147  } else {
148  LogError ("DTDQM|DTMonitorClient|DTSegmentAnalysisTest") << "Histo NevtPerLS not found!" << endl;
149  }
150  }
151 
152 }
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1265
#define LogTrace(id)
void performClientDiagnostic()
Perform client diagnostic operations.
string DTSegmentAnalysisTest::getMEName ( const DTChamberId chID,
std::string  histoTag 
)

Get the ME name.

Definition at line 289 of file DTSegmentAnalysisTest.cc.

References DTChamberId::sector(), DTChamberId::station(), relativeConstraints::station, and DTChamberId::wheel().

289  {
290 
291  stringstream wheel; wheel << chID.wheel();
292  stringstream station; station << chID.station();
293  stringstream sector; sector << chID.sector();
294 
295  string folderName =
296  topHistoFolder + "/Wheel" + wheel.str() +
297  "/Sector" + sector.str() +
298  "/Station" + station.str() + "/";
299 
300  string histoname = folderName + histoTag
301  + "_W" + wheel.str()
302  + "_St" + station.str()
303  + "_Sec" + sector.str();
304 
305  if(histoTag == "numberOfSegments")
306  histoname =
307  topHistoFolder + "/Wheel" + wheel.str() + "/" +
308  histoTag + + "_W" + wheel.str();
309 
310  return histoname;
311 
312 }
int sector() const
Definition: DTChamberId.h:63
int station() const
Return the station number.
Definition: DTChamberId.h:53
int wheel() const
Return the wheel number.
Definition: DTChamberId.h:47
void DTSegmentAnalysisTest::performClientDiagnostic ( )

Perform client diagnostic operations.

Definition at line 154 of file DTSegmentAnalysisTest.cc.

References abs, newFWLiteAna::bin, HcalObjRepresent::Fill(), QReport::getBadChannels(), MonitorElement::getTH1F(), MonitorElement::getTH2F(), trackerHits::histo, python.multivaluedict::map(), RecoTauCommonJetSelections_cfi::nbins, Parameters::parameters, DTChamberId::sector(), DTChamberId::station(), dtT0WireCalibration_cfg::threshold, CommonMethods::weight(), and DTChamberId::wheel().

154  {
155 
156  summaryHistos[3]->Reset();
157  summaryHistos[4]->Reset();
158  vector<DTChamber*>::const_iterator ch_it = muonGeom->chambers().begin();
159  vector<DTChamber*>::const_iterator ch_end = muonGeom->chambers().end();
160 
161  for (; ch_it != ch_end; ++ch_it) {
162  DTChamberId chID = (*ch_it)->id();
163 
164  MonitorElement * hNHits = dbe->get(getMEName(chID, "h4DSegmNHits"));
165  MonitorElement * hSegmOcc = dbe->get(getMEName(chID, "numberOfSegments"));
166 
167  if (hNHits && hSegmOcc) {
168 
169  TH1F * hNHits_root = hNHits->getTH1F();
170  TH2F * hSegmOcc_root = hSegmOcc->getTH2F();
171  TH2F * summary_histo_root = summaryHistos[3]->getTH2F();
172 
173  int sector = chID.sector();
174  if(sector == 13) sector=4;
175  if(sector == 14) sector=10;
176 
177 
178  if((chID.station()!=4 && hNHits_root->GetMaximumBin() != 12)||
179  (chID.station()==4 && hNHits_root->GetMaximumBin() != 8)){
180  summaryHistos[chID.wheel()]->setBinContent(sector, chID.station(),1);
181  if(summary_histo_root->GetBinContent(sector, chID.wheel()+3)<1)
182  summaryHistos[3]->setBinContent(sector, chID.wheel()+3,1);
183  }
184  else
185  summaryHistos[chID.wheel()]->setBinContent(sector, chID.station(),0);
186 
187  if(detailedAnalysis) {
188  if(chID.station()!=4)
189  segmRecHitHistos[make_pair(chID.wheel(),chID.sector())]->Fill(chID.station(),abs(12-hNHits_root->GetMaximumBin()));
190  else
191  segmRecHitHistos[make_pair(chID.wheel(),chID.sector())]->Fill(chID.station(),abs(8-hNHits_root->GetMaximumBin()));
192  }
193 
194  TH2F * summary2_histo_root = summaryHistos[3]->getTH2F();
195 
196  if(hSegmOcc_root->GetBinContent(sector,chID.station())==0){
197  summaryHistos[chID.wheel()]->setBinContent(sector, chID.station(),2);
198  if(summary2_histo_root->GetBinContent(sector, chID.wheel()+3)<2)
199  summaryHistos[3]->setBinContent(sector, chID.wheel()+3,2);
200  } else {
201  // Fill the percentage of segment occupancy
202  float weight = 1./4.;
203  if((sector == 4 || sector == 10) && chID.station() == 4) weight = 1./8.;
204  summaryHistos[4]->Fill(sector, chID.wheel(),weight);
205  }
206 
207  } else {
208  LogVerbatim ("DTDQM|DTMonitorClient|DTSegmentAnalysisTest")
209  << "[DTSegmentAnalysisTest]: histos not found!!"; // FIXME
210  }
211 
212  if(detailedAnalysis){ // switch on detailed analysis
213 
214  //test on chi2 segment quality
215  MonitorElement * chi2_histo = dbe->get(getMEName(chID, "h4DChi2"));
216  if(chi2_histo) {
217  TH1F * chi2_histo_root = chi2_histo->getTH1F();
218  double threshold = parameters.getUntrackedParameter<double>("chi2Threshold", 5);
219  double maximum = chi2_histo_root->GetXaxis()->GetXmax();
220  double minimum = chi2_histo_root->GetXaxis()->GetXmin();
221  int nbins = chi2_histo_root->GetXaxis()->GetNbins();
222  int thresholdBin = int(threshold/((maximum-minimum)/nbins));
223 
224  double badSegments=0;
225  for(int bin=thresholdBin; bin<=nbins; bin++){
226  badSegments+=chi2_histo_root->GetBinContent(bin);
227  }
228 
229  if(chi2_histo_root->GetEntries()!=0){
230  double badSegmentsPercentual= badSegments/double(chi2_histo_root->GetEntries());
231  chi2Histos[make_pair(chID.wheel(),chID.sector())]->Fill(chID.station(),badSegmentsPercentual);
232  }
233  } else {
234  LogVerbatim ("DTDQM|DTMonitorClient|DTSegmentAnalysisTest")
235  <<"[DTSegmentAnalysisTest]: Histo: " << getMEName(chID, "h4DChi2") << " not found!" << endl;
236  }
237  } // end of switch for detailed analysis
238 
239  } //loop over all the chambers
240 
241 
242  if(detailedAnalysis){
243 
244  string chi2CriterionName = parameters.getUntrackedParameter<string>("chi2TestName","chi2InRange");
245  for(map<pair<int, int>, MonitorElement*> ::const_iterator histo = chi2Histos.begin();
246  histo != chi2Histos.end();
247  histo++) {
248 
249  const QReport * theChi2QReport = (*histo).second->getQReport(chi2CriterionName);
250  if(theChi2QReport) {
251  vector<dqm::me_util::Channel> badChannels = theChi2QReport->getBadChannels();
252  for (vector<dqm::me_util::Channel>::iterator channel = badChannels.begin();
253  channel != badChannels.end(); channel++) {
254  // FIXME: log into a ME
255  LogError ("DTDQM|DTMonitorClient|DTSegmentAnalysisTest") << "Wheel: "<<(*histo).first.first
256  << " Sector: "<<(*histo).first.second
257  << " Bad stations: "<<(*channel).getBin()
258  <<" Contents : "<<(*channel).getContents();
259  }
260  }
261  }
262 
263  string segmRecHitCriterionName = parameters.getUntrackedParameter<string>("segmRecHitTestName","segmRecHitInRange");
264  for(map<pair<int, int>, MonitorElement*> ::const_iterator histo = segmRecHitHistos.begin();
265  histo != segmRecHitHistos.end();
266  histo++) {
267 
268  const QReport * theSegmRecHitQReport = (*histo).second->getQReport(segmRecHitCriterionName);
269  if(theSegmRecHitQReport) {
270  vector<dqm::me_util::Channel> badChannels = theSegmRecHitQReport->getBadChannels();
271  for (vector<dqm::me_util::Channel>::iterator channel = badChannels.begin();
272  channel != badChannels.end(); channel++) {
273  // FIXME: log into a ME
274  LogError ("DTDQM|DTMonitorClient|DTSegmentAnalysisTest") << "Wheel: "<<(*histo).first.first
275  << " Sector: "<<(*histo).first.second
276  << " Bad stations on recHit number: "
277  <<(*channel).getBin()
278  <<" Contents : "
279  <<(*channel).getContents();
280  }
281  }
282  }
283 
284  } // end of detailedAnalysis
285 
286 }
T getUntrackedParameter(std::string const &, T const &) const
edm::ParameterSet parameters
#define abs(x)
Definition: mlp_lapack.h:159
tuple histo
Definition: trackerHits.py:12
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
std::map< std::pair< int, int >, MonitorElement * > segmRecHitHistos
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1265
const std::vector< DQMChannel > & getBadChannels(void) const
Definition: QReport.h:33
std::string getMEName(const DTChamberId &chID, std::string histoTag)
Get the ME name.
std::map< std::pair< int, int >, MonitorElement * > chi2Histos
edm::ESHandle< DTGeometry > muonGeom
TH1F * getTH1F(void) const
int sector() const
Definition: DTChamberId.h:63
std::map< int, MonitorElement * > summaryHistos
int station() const
Return the station number.
Definition: DTChamberId.h:53
TH2F * getTH2F(void) const
int wheel() const
Return the wheel number.
Definition: DTChamberId.h:47

Member Data Documentation

std::map< std::pair<int,int>, MonitorElement* > DTSegmentAnalysisTest::chi2Histos
private

Definition at line 94 of file DTSegmentAnalysisTest.h.

DQMStore* DTSegmentAnalysisTest::dbe
private

Definition at line 88 of file DTSegmentAnalysisTest.h.

bool DTSegmentAnalysisTest::detailedAnalysis
private

Definition at line 84 of file DTSegmentAnalysisTest.h.

bool DTSegmentAnalysisTest::hltDQMMode
private

Definition at line 101 of file DTSegmentAnalysisTest.h.

edm::ESHandle<DTGeometry> DTSegmentAnalysisTest::muonGeom
private

Definition at line 91 of file DTSegmentAnalysisTest.h.

int DTSegmentAnalysisTest::nevents
private

Definition at line 81 of file DTSegmentAnalysisTest.h.

unsigned int DTSegmentAnalysisTest::nLumiSegs
private

Definition at line 82 of file DTSegmentAnalysisTest.h.

bool DTSegmentAnalysisTest::normalizeHistoPlots
private

Definition at line 97 of file DTSegmentAnalysisTest.h.

edm::ParameterSet DTSegmentAnalysisTest::parameters
private
bool DTSegmentAnalysisTest::runOnline
private

Definition at line 86 of file DTSegmentAnalysisTest.h.

std::map< std::pair<int,int>, MonitorElement* > DTSegmentAnalysisTest::segmRecHitHistos
private

Definition at line 95 of file DTSegmentAnalysisTest.h.

std::map< int, MonitorElement* > DTSegmentAnalysisTest::summaryHistos
private

Definition at line 96 of file DTSegmentAnalysisTest.h.

std::string DTSegmentAnalysisTest::topHistoFolder
private

Definition at line 99 of file DTSegmentAnalysisTest.h.