Jpp  17.0.0
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | Public Member Functions | Private Attributes | List of all members
JRunAnalyzer Class Reference

Class dedicated to the analysis of KM3NeT runs. More...

#include <JRunAnalyzer.hh>

Classes

struct  dom_type
 

Public Member Functions

 JRunAnalyzer (const JMultipleFileScanner<> &file, const JDetector &detector, JLimit_t nTimeslices, JLimit_t nSummaryslices, JLimit_t nEvents, bool pmtanalysis)
 Constructor. More...
 
 ~JRunAnalyzer ()
 Destructor. More...
 
void iterateEventTree (JTreeScanner< JDAQEvent > &scanner)
 
void iterateSummarysliceTree (JTreeScanner< JDAQSummaryslice > &scanner)
 
template<class T >
void iterateTimesliceTree (JTreeScanner< T > &scanner)
 
void readSummaryData ()
 
template<class T >
void readTimesliceData ()
 
void readEvents ()
 
JRA_Histograms getHistograms ()
 
void writeToFile (TFile &f)
 

Private Attributes

JMultipleFileScanner inputFile
 
JModuleRouter router
 
JRA_Histograms histograms
 
int highest_floor
 
JLimit_t numberOfTimeslices
 
JLimit_t numberOfSummaryslices
 
JLimit_t numberOfEvents
 
bool pmt_analysis
 

Detailed Description

Class dedicated to the analysis of KM3NeT runs.

Definition at line 28 of file JRunAnalyzer.hh.

Constructor & Destructor Documentation

JRunAnalyzer::JRunAnalyzer ( const JMultipleFileScanner<> &  file,
const JDetector detector,
JLimit_t  nTimeslices,
JLimit_t  nSummaryslices,
JLimit_t  nEvents,
bool  pmtanalysis 
)
inline

Constructor.

Parameters
filefile name(s)
detectordetector
nTimeslicesnumber of timeslices to be read
nSummaryslicesnumber of summary slices to be read
nEventsnumber of events to be read
pmtanalysisoption for analysis of PMT data

Definition at line 52 of file JRunAnalyzer.hh.

52  :
53  inputFile (file),
54  router (detector),
55  numberOfTimeslices (nTimeslices),
56  numberOfSummaryslices (nSummaryslices),
57  numberOfEvents (nEvents),
58  pmt_analysis (pmtanalysis)
59  {
60  using namespace JPP;
61  using namespace std;
62 
63  histograms = JRA_Histograms(detector);
65  }
JRA_Histograms histograms
Definition: JRunAnalyzer.hh:32
JLimit_t numberOfTimeslices
Definition: JRunAnalyzer.hh:34
floor_range getRangeOfFloors(const JDetector &detector)
Get range of floors.
JModuleRouter router
Definition: JRunAnalyzer.hh:31
T getUpperLimit() const
Get upper limit.
Definition: JRange.hh:213
JMultipleFileScanner inputFile
Definition: JRunAnalyzer.hh:30
JLimit_t numberOfEvents
Definition: JRunAnalyzer.hh:36
JLimit_t numberOfSummaryslices
Definition: JRunAnalyzer.hh:35
JRunAnalyzer::~JRunAnalyzer ( )
inline

Destructor.

Definition at line 70 of file JRunAnalyzer.hh.

70 {}

Member Function Documentation

void JRunAnalyzer::iterateEventTree ( JTreeScanner< JDAQEvent > &  scanner)
inline

Definition at line 78 of file JRunAnalyzer.hh.

78  {
79 
80  while (scanner.hasNext()) {
81 
82  JDAQEvent event = *(scanner.next());
83 
84  histograms.h_trigger.h_Snapshot_hits -> Fill((Double_t) event.size<JDAQSnapshotHit> ());
85  histograms.h_trigger.h_Triggered_hits -> Fill((Double_t) event.size<JDAQTriggeredHit> ());
86  histograms.h_trigger.h_Triggered_over_Snapshot_hits -> Fill((Double_t) event.size<JDAQTriggeredHit> () / event.size<JDAQSnapshotHit > ());
87  histograms.h_trigger.h_Number_of_overlays -> Fill(event.getOverlays());
88 
89  for (unsigned int i = 0; i != NUMBER_OF_TRIGGER_BITS; ++i) {
90 
91  if (event.hasTriggerBit(i)) {
92 
93  histograms.h_trigger.h_Trigger_bit_event -> Fill((Double_t) i);
94  }
95  }
96 
97  int counter_3dmuon = 0;
98  typedef JRange<double> JRange_t;
99  JRange_t range(JRange_t::DEFAULT_RANGE);
100 
101  for (JDAQEvent::const_iterator<JDAQTriggeredHit> hit = event.begin<JDAQTriggeredHit>(); hit != event.end<JDAQTriggeredHit>(); ++hit) {
102 
103  const JModule& module = router.getModule(hit->getModuleID());
104  const double t1 = getTime(hit->getT(), module.getPMT(hit->getPMT()));
105 
106  range.include(t1);
107 
108  JDAQTriggerMask trigger_mask(event.getTriggerMask(*hit));
109 
110  if(trigger_mask.hasTriggerBit(getTriggerBit<JTrigger3DMuon>())) counter_3dmuon++;
111 
112  if (router.hasModule(hit->getModuleID())) {
113 
114  const JModule& module = router.getModule (hit->getModuleID());
115 
118 
119  int String = module.getString();
120  int Floor = module.getFloor();
121 
122  histograms.h_trigger.h_Triggered_hits_per_module -> Fill(String , Floor);
123 
124  if(trigger_mask.hasTriggerBit(getTriggerBit<JTrigger3DMuon>())){
126  }
127 
128  for (unsigned int i = 0; i != NUMBER_OF_TRIGGER_BITS; ++i) {
129 
130  if (hit -> hasTriggerBit(i)) {
131 
132  histograms.h_trigger.h_Trigger_bit_hit->Fill((Double_t) i);
133  }
134  }
135  }else{
136  FATAL("JModuleRouter trying to access non existing identifier: "<< hit->getModuleID());
137  }
138  }
139 
140  histograms.h_trigger.h_event_duration->Fill(range.getLength());
141 
142  histograms.h_trigger.h_pmt_distribution_triggered_hits->Scale(1. / (Double_t) event.size<JDAQTriggeredHit> ());
143 
144  if(counter_3dmuon != 0) histograms.h_trigger.h_Triggered_hits_3dmuon->Fill(counter_3dmuon);
145 
146  for (JDAQEvent::const_iterator<JDAQSnapshotHit> hit = event.begin<JDAQSnapshotHit>() ; hit != event.end<JDAQSnapshotHit>() ; ++hit){
147 
148  if (router.hasModule(hit->getModuleID())) {
149 
150  const JModule& module = router.getModule (hit->getModuleID());
151 
152  int String = module.getString();
153  int Floor = module.getFloor();
154  int pmt = hit-> getPMT();
155 
156  if(pmt_analysis == true){
157 
158  (*histograms.h_trigger.m_Snapshot_hits_per_pmt)[MAKE_STRING("Detector/DU" + to_string(String))] -> Fill(pmt, Floor);
159 
160  }
161 
162  histograms.h_trigger.h_pmt_distribution_snapshot_hits -> Fill(hit->getPMT());
164  histograms.h_trigger.h_Snapshot_hits_per_module -> Fill(String, Floor);
165 
166 
167  }else{
168  FATAL("JModuleRouter trying to access non existing identifier: "<< hit->getModuleID());
169  }
170  }
171  }
172  }
TH1D * h_pmt_distribution_snapshot_hits
TH2D * h_Snapshot_hits_per_module
DAQ key hit.
Definition: JDAQKeyHit.hh:19
static const unsigned int NUMBER_OF_TRIGGER_BITS
Number of trigger bits.
TH1D * h_pmt_distribution_triggered_hits
int getFloor() const
Get floor number.
Definition: JLocation.hh:145
const JModule & getModule(const JObjectID &id) const
Get module parameters.
Data structure for a composite optical module.
Definition: JModule.hh:68
Auxiliary class for trigger mask.
JRA_Histograms histograms
Definition: JRunAnalyzer.hh:32
TH2D * h_Triggered_hits_per_module
Template const_iterator.
Definition: JDAQEvent.hh:68
double getTime(const Hit &hit)
Get true time of hit.
#define MAKE_STRING(A)
Make string.
Definition: JPrint.hh:142
Type definition of range.
Definition: JHead.hh:39
JModuleRouter router
Definition: JRunAnalyzer.hh:31
TH1D * h_tot_distribution_snapshot_hits
TriggerHistograms h_trigger
const JPMT & getPMT(const int index) const
Get PMT.
Definition: JModule.hh:173
#define FATAL(A)
Definition: JMessage.hh:67
z range($ZMAX-$ZMIN)< $MINIMAL_DZ." fi fi typeset -Z 4 STRING typeset -Z 2 FLOOR JPlot1D -f $
int getString() const
Get string number.
Definition: JLocation.hh:134
General purpose string class.
Definition: JHead.hh:150
std::string to_string(const T &value)
Convert value to string.
bool hasModule(const JObjectID &id) const
Has module.
TH1D * h_tot_distribution_triggered_hits
TH1D * h_Triggered_hits_3dmuon
TH2D * h_Triggered_hits_3dmuon_per_module
JManager< string, TH2D > * m_Snapshot_hits_per_pmt
TH1D * h_Triggered_over_Snapshot_hits
void JRunAnalyzer::iterateSummarysliceTree ( JTreeScanner< JDAQSummaryslice > &  scanner)
inline

Definition at line 189 of file JRunAnalyzer.hh.

189  {
190 
191  using namespace std;
192  using namespace JPP;
193 
194  map<int, map<int, dom_type> > PMT_rate_quantiles;
195  map<int, map<int, JQuantile> > DOM_rate_quantiles;
196 
197  while (scanner.hasNext()){
198 
199  JDAQSummaryslice slice = *(scanner.next());
200 
201  for (JDAQSummaryslice::const_iterator frame = slice.begin() ; frame != slice.end() ; ++ frame) {
202 
203  if (router.hasModule(frame->getModuleID())) {
204 
205  const JModule& module = router.getModule (frame->getModuleID());
206 
207  int string = module.getString();
208  int floor = module.getFloor ();
209 
210  JDAQFrameStatus status = frame -> getDAQFrameStatus();
211  int nFIFOcount = status.countFIFOStatus();
212  int nHRVcount = status.countHighRateVeto();
213 
214  if (nHRVcount > 0) {
215  histograms.h_summary.h_hrv_per_dom->Fill(string , floor, nHRVcount);
216  }
217 
218  if (status.testDAQStatus() == false) {
219  histograms.h_summary.h_daq_status_per_dom->Fill(string , floor, (1./distance(scanner.begin(), scanner.end()))*100);
220  }
221 
222  histograms.h_summary.h_fifo_per_dom->Fill(string , floor , nFIFOcount);
223 
224  if(pmt_analysis == true){
225 
226  TH2D* h2 = (*histograms.h_summary.m_summary_rate_distribution)[MAKE_STRING("Detector/DU" + to_string(string) + "/F" + to_string(floor))];
227 
228  double rate = 0;
229  const double factor = 1.0e-3; // [kHz]
230 
231  for (int i = 0 ; i < NUMBER_OF_PMTS ; i++){
232 
233  rate += frame->getRate(i, factor);
234 
235  h2->Fill(i , frame->getRate(i, factor));
236 
237  PMT_rate_quantiles[string][floor][i].put(frame->getRate(i, factor));
238 
239  histograms.h_summary.h_pmt_rate_distribution->Fill(frame->getRate(i, factor), frame->getWeight(i, factor));
240 
241  }
242 
244 
245  DOM_rate_quantiles[string][floor].put(rate);
246 
247  } else {
248 
249  double rate = 0;
250  const double factor = 1.0e-3; // [kHz]
251 
252  for (int i = 0 ; i < NUMBER_OF_PMTS ; i++){
253 
254  rate += frame->getRate(i, factor);
255 
256  histograms.h_summary.h_pmt_rate_distribution->Fill(frame->getRate(i, factor), frame->getWeight(i, factor));
257  }
258 
260 
261  DOM_rate_quantiles[string][floor].put(rate);
262 
263  }
264 
265  }else{
266  FATAL("JModuleRouter trying to access non existing identifier: "<< frame->getModuleID());
267  }
268  }
269  }
270 
271  for(auto& i : DOM_rate_quantiles){
272 
273  for (int j=1; j <= highest_floor; j++) {
274 
275  if (i.second[j].getCount() > 0) histograms.h_summary.h_rate_summary->Fill(i.first, j, i.second[j].getMean());
276  }
277  }
278 
279  if(pmt_analysis == true){
280 
281  for(auto& i : PMT_rate_quantiles){
282 
283  for (int j = 1; j <= highest_floor; j++){
284 
285  for (int k=0 ; k < NUMBER_OF_PMTS ; k++){
286 
287  if (i.second[j][k].getCount() > 0){
288 
289  (*histograms.h_summary.m_mean_summary_rate) [MAKE_STRING("Detector/DU" + to_string(i.first))]->Fill(k, j, i.second[j][k].getMean());
290  (*histograms.h_summary.m_mean_summary_rate_distribution)[MAKE_STRING("Detector/DU" + to_string(i.first))]->Fill( i.second[j][k].getMean());
291  }
292  }
293  }
294  }
295  }
296  }
then fatal No hydrophone data file $HYDROPHONE_TXT fi sort gr k
int countFIFOStatus() const
Count FIFO status.
JManager< string, TH1D > * m_mean_summary_rate_distribution
int getFloor() const
Get floor number.
Definition: JLocation.hh:145
const JModule & getModule(const JObjectID &id) const
Get module parameters.
Data structure for a composite optical module.
Definition: JModule.hh:68
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
JRA_Histograms histograms
Definition: JRunAnalyzer.hh:32
then set_variable singlesRate set_variable doublesRate set_variable numberOfSlices echo Generating random background echo Singles rate
JManager< string, TH2D > * m_mean_summary_rate
TH1D * h_dom_rate_distribution
#define MAKE_STRING(A)
Make string.
Definition: JPrint.hh:142
JModuleRouter router
Definition: JRunAnalyzer.hh:31
TH1D * h_pmt_rate_distribution
#define FATAL(A)
Definition: JMessage.hh:67
SummaryHistograms h_summary
int getString() const
Get string number.
Definition: JLocation.hh:134
int countHighRateVeto() const
Count high-rate veto status.
JManager< string, TH2D > * m_summary_rate_distribution
std::string to_string(const T &value)
Convert value to string.
bool hasModule(const JObjectID &id) const
Has module.
int j
Definition: JPolint.hh:682
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
Definition: JDAQ.hh:26
bool testDAQStatus() const
Test DAQ status of packets.
template<class T >
void JRunAnalyzer::iterateTimesliceTree ( JTreeScanner< T > &  scanner)
inline

Definition at line 304 of file JRunAnalyzer.hh.

304  {
305 
307 
308  std::map < int , std::map <int , JQuantile> > DOM_rate_quantiles;
309 
310  double inverseFrameTimeSec = 1. / (1.0e-9 * getFrameTime());
311 
312  while (scanner.hasNext()){
313 
314  T slice = *(scanner.next());
315 
316  for(auto & frame : slice) {
317  if (router.hasModule(frame.getModuleID())) {
318 
319  const JModule& module = router.getModule (frame.getModuleID());
320  double rate = frame.numberOfHits * inverseFrameTimeSec;
321  int string = module.getString();
322  int floor = module.getFloor ();
323 
324  DOM_rate_quantiles[string][floor].put(rate);
325 
326  vector <int> pmt_hit_count (NUMBER_OF_PMTS , 0) ;
327 
328  if(pmt_analysis == true){
329 
330  TH2D* h2 = (*histograms.h_timeslice.m_pmt_tot_distributions[ts_type])[MAKE_STRING("Detector/DU" + to_string(string) + "/F" + to_string(floor) + "/" + to_string(frame.getModuleID()))];
331 
332  for (JDAQSuperFrame::const_iterator hit = frame.begin() ; hit != frame.end() ; ++hit){
333 
334  h2 -> Fill(hit->getPMT() , hit->getToT()) ;
335 
336  pmt_hit_count[hit->getPMT()]++;
337 
338  }
339 
340  for (int pmt = 0 ; pmt != NUMBER_OF_PMTS ; ++pmt) {
341 
342  (*histograms.h_timeslice.m_pmt_rate_distributions[ts_type])[MAKE_STRING("Detector/DU" + to_string(string) + "/F" + to_string(floor))] -> Fill(pmt , 1e-3 * pmt_hit_count[pmt] * inverseFrameTimeSec);
343 
344  }
345 
346  }
347 
348  }else{
349  FATAL("JModuleRouter trying to access non existing identifier: "<< frame.getModuleID());
350  }
351  }
352  }
353 
354 
355  for (std::map< int , std::map<int,JQuantile>>::const_iterator i = DOM_rate_quantiles.begin() ; i != DOM_rate_quantiles.end() ; i++){
356 
357  for (std::map<int , JQuantile>::const_iterator j = i->second.begin() ; j != i->second.end() ; j++){
358 
359  if (j->second.getCount() > 0) histograms.h_timeslice.h_dom_mean_rates[ts_type] -> Fill (i->first , j->first , j->second.getMean() ) ;
360  }
361  }
362  }
vector< JManager< string, TH2D > * > m_pmt_tot_distributions
int getFloor() const
Get floor number.
Definition: JLocation.hh:145
const JModule & getModule(const JObjectID &id) const
Get module parameters.
Data structure for a composite optical module.
Definition: JModule.hh:68
vector< TH2D * > h_dom_mean_rates
JRA_Histograms histograms
Definition: JRunAnalyzer.hh:32
then set_variable singlesRate set_variable doublesRate set_variable numberOfSlices echo Generating random background echo Singles rate
#define MAKE_STRING(A)
Make string.
Definition: JPrint.hh:142
TimesliceHistograms h_timeslice
JModuleRouter router
Definition: JRunAnalyzer.hh:31
Hit data structure.
Definition: JDAQHit.hh:34
double getFrameTime()
Get frame time duration.
Definition: JDAQClock.hh:162
do set_variable OUTPUT_DIRECTORY $WORKDIR T
#define FATAL(A)
Definition: JMessage.hh:67
int getString() const
Get string number.
Definition: JLocation.hh:134
std::string to_string(const T &value)
Convert value to string.
vector< JManager< string, TH2D > * > m_pmt_rate_distributions
bool hasModule(const JObjectID &id) const
Has module.
int j
Definition: JPolint.hh:682
Indexing of data type in type list.
Definition: JTypeList.hh:310
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
Definition: JDAQ.hh:26
void JRunAnalyzer::readSummaryData ( )
inline

Definition at line 370 of file JRunAnalyzer.hh.

370  {
371 
373  if (scanner.hasNext()) {
375  scanner.rewind();
376  iterateSummarysliceTree(scanner);
377  }
378  }
JRA_Histograms histograms
Definition: JRunAnalyzer.hh:32
void initialize_summary_histograms()
void iterateSummarysliceTree(JTreeScanner< JDAQSummaryslice > &scanner)
Template definition for direct access of elements in ROOT TChain.
JMultipleFileScanner inputFile
Definition: JRunAnalyzer.hh:30
JLimit_t numberOfSummaryslices
Definition: JRunAnalyzer.hh:35
template<class T >
void JRunAnalyzer::readTimesliceData ( )
inline

Definition at line 387 of file JRunAnalyzer.hh.

387  {
388 
390  if(scanner.hasNext()) {
391 
393  scanner.rewind();
394  iterateTimesliceTree(scanner);
395  }
396  }
void iterateTimesliceTree(JTreeScanner< T > &scanner)
JRA_Histograms histograms
Definition: JRunAnalyzer.hh:32
JLimit_t numberOfTimeslices
Definition: JRunAnalyzer.hh:34
do set_variable OUTPUT_DIRECTORY $WORKDIR T
JMultipleFileScanner inputFile
Definition: JRunAnalyzer.hh:30
void initialize_timeslice_histograms()
void JRunAnalyzer::readEvents ( )
inline

Definition at line 404 of file JRunAnalyzer.hh.

404  {
405 
407 
408  if(scanner.hasNext()) {
409 
411  scanner.rewind();
412  iterateEventTree(scanner);
413  }
414  }
JRA_Histograms histograms
Definition: JRunAnalyzer.hh:32
Template definition for direct access of elements in ROOT TChain.
JMultipleFileScanner inputFile
Definition: JRunAnalyzer.hh:30
void iterateEventTree(JTreeScanner< JDAQEvent > &scanner)
Definition: JRunAnalyzer.hh:78
JLimit_t numberOfEvents
Definition: JRunAnalyzer.hh:36
void initialize_trigger_histograms()
JRA_Histograms JRunAnalyzer::getHistograms ( )
inline

Definition at line 419 of file JRunAnalyzer.hh.

419  {
420 
421  return histograms ;
422  }
JRA_Histograms histograms
Definition: JRunAnalyzer.hh:32
void JRunAnalyzer::writeToFile ( TFile &  f)
inline

Definition at line 428 of file JRunAnalyzer.hh.

428  {
429 
430  f.mkdir("Detector");
431  f .cd("Detector");
432 
439 
441 
442  for (typename vector < JManager < string , TH2D >* >::const_iterator i = histograms.h_timeslice.m_pmt_tot_distributions.begin();
444 
445  if ((*i)){
446 
447  for (typename JManager < string , TH2D >::const_iterator j = (*i) -> begin() ; j != (*i) -> end() ; ++j){
448 
449  j->second->Scale(1., "width");
450  }
451  }
452  }
453 
456 
458 
461 
463 
466 
467  f.mkdir ( MAKE_STRING ("JDAQEvent").c_str());
468  f.cd ("JDAQEvent");
469 
486  }
TH1D * h_pmt_distribution_snapshot_hits
TH2D * h_Snapshot_hits_per_module
TH1D * h_pmt_distribution_triggered_hits
vector< JManager< string, TH2D > * > m_pmt_tot_distributions
JManager< string, TH1D > * m_mean_summary_rate_distribution
vector< TH2D * > h_dom_mean_rates
JRA_Histograms histograms
Definition: JRunAnalyzer.hh:32
TH2D * h_Triggered_hits_per_module
o $QUALITY_ROOT d $DEBUG!JPlot1D f
Definition: JDataQuality.sh:66
JManager< string, TH2D > * m_mean_summary_rate
TH1D * h_dom_rate_distribution
#define MAKE_STRING(A)
Make string.
Definition: JPrint.hh:142
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys...
Definition: JManager.hh:43
TimesliceHistograms h_timeslice
TH1D * h_tot_distribution_snapshot_hits
TriggerHistograms h_trigger
void Write_manager_table_in_key_dir(TFile &f, vector< JManager< T, V > * > table)
TH1D * h_pmt_rate_distribution
void Write_histogram_table_to_file(TFile &f, string dirname, vector< vector< T * > > table)
vector< JManager< string, TH1D > * > m_mean_ToT_distribution
SummaryHistograms h_summary
JManager< string, TH2D > * m_summary_rate_distribution
void Write_manager_in_key_dir(TFile &f, JManager< T, V > *manager)
vector< JManager< string, TH2D > * > m_mean_ToT
vector< JManager< string, TH2D > * > m_pmt_rate_distributions
TH1D * h_tot_distribution_triggered_hits
TH1D * h_Triggered_hits_3dmuon
int j
Definition: JPolint.hh:682
TH2D * h_Triggered_hits_3dmuon_per_module
JManager< string, TH2D > * m_Snapshot_hits_per_pmt
TH1D * h_Triggered_over_Snapshot_hits

Member Data Documentation

JMultipleFileScanner JRunAnalyzer::inputFile
private

Definition at line 30 of file JRunAnalyzer.hh.

JModuleRouter JRunAnalyzer::router
private

Definition at line 31 of file JRunAnalyzer.hh.

JRA_Histograms JRunAnalyzer::histograms
private

Definition at line 32 of file JRunAnalyzer.hh.

int JRunAnalyzer::highest_floor
private

Definition at line 33 of file JRunAnalyzer.hh.

JLimit_t JRunAnalyzer::numberOfTimeslices
private

Definition at line 34 of file JRunAnalyzer.hh.

JLimit_t JRunAnalyzer::numberOfSummaryslices
private

Definition at line 35 of file JRunAnalyzer.hh.

JLimit_t JRunAnalyzer::numberOfEvents
private

Definition at line 36 of file JRunAnalyzer.hh.

bool JRunAnalyzer::pmt_analysis
private

Definition at line 37 of file JRunAnalyzer.hh.


The documentation for this class was generated from the following file: