CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Types | Private Member Functions | Private Attributes
CastorLedAnalysis Class Reference

#include <CastorLedAnalysis.h>

Classes

struct  CALIBBUNCH
 

Public Member Functions

 CastorLedAnalysis (const edm::ParameterSet &ps)
 Constructor. More...
 
void LedDone ()
 
void LedSampleAnalysis ()
 
void LedSetup (const std::string &m_outputFileROOT)
 
void processLedEvent (const CastorDigiCollection &castor, const CastorDbService &cond)
 
 ~CastorLedAnalysis ()
 Destructor. More...
 

Private Types

typedef std::pair< TH1F *, std::pair< std::map< int, std::vector< double > >, std::vector< TH1F * > > > LEDBUNCH
 

Private Member Functions

float BinsizeCorr (float time)
 
void GetLedConst (std::map< HcalDetId, std::map< int, LEDBUNCH > > &toolT)
 
void LedCastorHists (const HcalDetId &detid, const CastorDataFrame &ledDigi, std::map< HcalDetId, std::map< int, LEDBUNCH > > &toolT, const CastorDbService &cond)
 
void LedTrendings (std::map< HcalDetId, std::map< int, LEDBUNCH > > &toolT)
 
void SetupLEDHists (int id, const HcalDetId detid, std::map< HcalDetId, std::map< int, LEDBUNCH > > &toolT)
 

Private Attributes

std::map< HcalCalibDetId, CALIBBUNCH >::iterator _meca
 
std::map< HcalDetId, std::map< int, float > >::iterator _meee
 
std::map< HcalDetId, std::map< int, LEDBUNCH > >::iterator _meol
 
struct {
   TH1F *   ALLLEDS
 
   TH1F *   CHI2
 
   TH1F *   LEDMEAN
 
   TH1F *   LEDRMS
 
   std::map< HcalDetId, std::map< int, LEDBUNCH > >   LEDTRENDS
 
castorHists
 
int evt
 
int evt_curr
 
std::map< HcalDetId, std::map< int, float > > m_AllPedVals
 
const CastorQIECoderm_coder
 
int m_endTS
 
TFile * m_file
 
int m_fitflag
 
int m_hiSaveflag
 
std::ofstream m_logFile
 
int m_nevtsample
 
std::ofstream m_outFile
 
std::string m_outputFileROOT
 
std::string m_outputFileText
 
std::string m_outputFileX
 
std::ofstream m_outputFileXML
 
const CastorPedestalm_ped
 
const CastorQIEShapem_shape
 
int m_startTS
 
bool m_usecalib
 
int sample
 
std::vector< bool > state
 

Detailed Description

Definition at line 28 of file CastorLedAnalysis.h.

Member Typedef Documentation

◆ LEDBUNCH

typedef std::pair<TH1F*, std::pair<std::map<int, std::vector<double> >, std::vector<TH1F*> > > CastorLedAnalysis::LEDBUNCH
private

Definition at line 56 of file CastorLedAnalysis.h.

Constructor & Destructor Documentation

◆ CastorLedAnalysis()

CastorLedAnalysis::CastorLedAnalysis ( const edm::ParameterSet ps)

Constructor.

Definition at line 16 of file CastorLedAnalysis.cc.

References gather_cfg::cout, edm::ParameterSet::getUntrackedParameter(), isotrackApplyRegressor::k, DeadROC_duringRun::runNum, and ecalGpuTask_cfi::sample.

16  {
17  // init
18  evt = 0;
19  sample = 0;
20  m_file = nullptr;
21  char output[100]{0};
22  // output files
23  for (int k = 0; k < 4; k++)
24  state.push_back(true); // 4 cap-ids (do we care?)
25  m_outputFileText = ps.getUntrackedParameter<string>("outputFileText", "");
26  m_outputFileX = ps.getUntrackedParameter<string>("outputFileXML", "");
27  if (!m_outputFileText.empty()) {
28  cout << "Castor LED results will be saved to " << m_outputFileText.c_str() << endl;
29  m_outFile.open(m_outputFileText.c_str());
30  }
31  m_outputFileROOT = ps.getUntrackedParameter<string>("outputFileHist", "");
32  if (!m_outputFileROOT.empty()) {
33  cout << "Castor LED histograms will be saved to " << m_outputFileROOT.c_str() << endl;
34  }
35 
36  m_nevtsample = ps.getUntrackedParameter<int>("nevtsample", 9999999);
37  if (m_nevtsample < 1)
38  m_nevtsample = 9999999;
39  m_hiSaveflag = ps.getUntrackedParameter<int>("hiSaveflag", 0);
40  if (m_hiSaveflag < 0)
41  m_hiSaveflag = 0;
42  if (m_hiSaveflag > 0)
43  m_hiSaveflag = 1;
44  m_fitflag = ps.getUntrackedParameter<int>("analysisflag", 2);
45  if (m_fitflag < 0)
46  m_fitflag = 0;
47  if (m_fitflag > 4)
48  m_fitflag = 4;
49  m_startTS = ps.getUntrackedParameter<int>("firstTS", 0);
50  if (m_startTS < 0)
51  m_startTS = 0;
52  m_endTS = ps.getUntrackedParameter<int>("lastTS", 9);
53  m_usecalib = ps.getUntrackedParameter<bool>("usecalib", false);
54  m_logFile.open("CastorLedAnalysis.log");
55 
56  int runNum = ps.getUntrackedParameter<int>("runNumber", 999999);
57 
58  // histogram booking
59  castorHists.ALLLEDS = new TH1F("Castor All LEDs", "HF All Leds", 10, 0, 9);
60  castorHists.LEDRMS = new TH1F("Castor All LED RMS", "HF All LED RMS", 100, 0, 3);
61  castorHists.LEDMEAN = new TH1F("Castor All LED Means", "HF All LED Means", 100, 0, 9);
62  castorHists.CHI2 = new TH1F("Castor Chi2 by ndf for Landau fit", "HF Chi2/ndf Landau", 200, 0., 50.);
63 
64  //XML file header
65  m_outputFileXML.open(m_outputFileX.c_str());
66  snprintf(output, sizeof output, "<?xml version='1.0' encoding='UTF-8'?>");
67  m_outputFileXML << output << endl;
68  snprintf(output, sizeof output, "<ROOT>");
69  m_outputFileXML << output << endl << endl;
70  snprintf(output, sizeof output, " <HEADER>");
71  m_outputFileXML << output << endl;
72  snprintf(output, sizeof output, " <TYPE>");
73  m_outputFileXML << output << endl;
74  snprintf(output, sizeof output, " <EXTENSION_TABLE_NAME>HCAL_LED_TIMING</EXTENSION_TABLE_NAME>");
75  m_outputFileXML << output << endl;
76  snprintf(output, sizeof output, " <NAME>HCAL LED Timing</NAME>");
77  m_outputFileXML << output << endl;
78  snprintf(output, sizeof output, " </TYPE>");
79  m_outputFileXML << output << endl;
80  snprintf(output, sizeof output, " <RUN>");
81  m_outputFileXML << output << endl;
82  snprintf(output, sizeof output, " <RUN_TYPE>hcal-led-timing-test</RUN_TYPE>");
83  m_outputFileXML << output << endl;
84  snprintf(output, sizeof output, " <RUN_NUMBER>%06i</RUN_NUMBER>", runNum);
85  m_outputFileXML << output << endl;
86  snprintf(output, sizeof output, " <RUN_BEGIN_TIMESTAMP>2007-07-09 00:00:00.0</RUN_BEGIN_TIMESTAMP>");
87  m_outputFileXML << output << endl;
88  snprintf(output, sizeof output, " <COMMENT_DESCRIPTION></COMMENT_DESCRIPTION>");
89  m_outputFileXML << output << endl;
90  snprintf(output, sizeof output, " </RUN>");
91  m_outputFileXML << output << endl;
92  snprintf(output, sizeof output, " </HEADER>");
93  m_outputFileXML << output << endl;
94  snprintf(output, sizeof output, "<!-- Tags secton -->");
95  m_outputFileXML << output << endl;
96  snprintf(output, sizeof output, " <ELEMENTS>");
97  m_outputFileXML << output << endl;
98  snprintf(output, sizeof output, " <DATA_SET id='-1'/>");
99  m_outputFileXML << output << endl;
100  snprintf(output, sizeof output, " <IOV id='1'>");
101  m_outputFileXML << output << endl;
102  snprintf(output, sizeof output, " <INTERVAL_OF_VALIDITY_BEGIN>2147483647</INTERVAL_OF_VALIDITY_BEGIN>");
103  m_outputFileXML << output << endl;
104  snprintf(output, sizeof output, " <INTERVAL_OF_VALIDITY_END>0</INTERVAL_OF_VALIDITY_END>");
105  m_outputFileXML << output << endl;
106  snprintf(output, sizeof output, " </IOV>");
107  m_outputFileXML << output << endl;
108  snprintf(output, sizeof output, " <TAG id='2' mode='auto'>");
109  m_outputFileXML << output << endl;
110  snprintf(output, sizeof output, " <TAG_NAME>laser_led_%06i<TAG_NAME>", runNum);
111  m_outputFileXML << output << endl;
112  snprintf(output, sizeof output, " <DETECTOR_NAME>HCAL</DETECTOR_NAME>");
113  m_outputFileXML << output << endl;
114  snprintf(output, sizeof output, " <COMMENT_DESCRIPTION></COMMENT_DESCRIPTION>");
115  m_outputFileXML << output << endl;
116  snprintf(output, sizeof output, " </TAG>");
117  m_outputFileXML << output << endl;
118  snprintf(output, sizeof output, " </ELEMENTS>");
119  m_outputFileXML << output << endl;
120  snprintf(output, sizeof output, " <MAPS>");
121  m_outputFileXML << output << endl;
122  snprintf(output, sizeof output, " <TAG idref ='2'>");
123  m_outputFileXML << output << endl;
124  snprintf(output, sizeof output, " <IOV idref='1'>");
125  m_outputFileXML << output << endl;
126  snprintf(output, sizeof output, " <DATA_SET idref='-1' />");
127  m_outputFileXML << output << endl;
128  snprintf(output, sizeof output, " </IOV>");
129  m_outputFileXML << output << endl;
130  snprintf(output, sizeof output, " </TAG>");
131  m_outputFileXML << output << endl;
132  snprintf(output, sizeof output, " </MAPS>");
133  m_outputFileXML << output << endl;
134 }
std::ofstream m_logFile
std::vector< bool > state
std::ofstream m_outFile
struct CastorLedAnalysis::@43 castorHists
std::string m_outputFileText
T getUntrackedParameter(std::string const &, T const &) const
std::string m_outputFileX
std::ofstream m_outputFileXML
std::string m_outputFileROOT
Definition: output.py:1

◆ ~CastorLedAnalysis()

CastorLedAnalysis::~CastorLedAnalysis ( )

Destructor.

All done, clean up!!

Definition at line 137 of file CastorLedAnalysis.cc.

References mps_fire::i.

137  {
139 
140  for (_meol = castorHists.LEDTRENDS.begin(); _meol != castorHists.LEDTRENDS.end(); _meol++) {
141  for (int i = 0; i < 15; i++)
142  _meol->second[i].first->Delete();
143  }
144 
145  castorHists.ALLLEDS->Delete();
146  castorHists.LEDRMS->Delete();
147  castorHists.LEDMEAN->Delete();
148  castorHists.CHI2->Delete();
149 }
std::map< HcalDetId, std::map< int, LEDBUNCH > >::iterator _meol
struct CastorLedAnalysis::@43 castorHists

Member Function Documentation

◆ BinsizeCorr()

float CastorLedAnalysis::BinsizeCorr ( float  time)
private

Definition at line 667 of file CastorLedAnalysis.cc.

References mps_fire::i, createfilelist::int, and hcalRecHitTable_cff::time.

667  {
668  // this is the bin size correction to be applied for laser data (from Andy),
669  // it comes from a pulse shape measured from TB04 data (from Jordan)
670  // This should eventually be replaced with the more thorough treatment from Phil
671 
672  float corrtime = 0.;
673  static const float tstrue[32] = {0.003, 0.03425, 0.06548, 0.09675, 0.128, 0.15925, 0.1905, 0.22175,
674  0.253, 0.28425, 0.3155, 0.34675, 0.378, 0.40925, 0.4405, 0.47175,
675  0.503, 0.53425, 0.5655, 0.59675, 0.628, 0.65925, 0.6905, 0.72175,
676  0.753, 0.78425, 0.8155, 0.84675, 0.878, 0.90925, 0.9405, 0.97175};
677  static const float tsreco[32] = {-0.00422, 0.01815, 0.04409, 0.07346, 0.09799, 0.12192, 0.15072, 0.18158,
678  0.21397, 0.24865, 0.28448, 0.31973, 0.35449, 0.39208, 0.43282, 0.47244,
679  0.5105, 0.55008, 0.58827, 0.62828, 0.6717, 0.70966, 0.74086, 0.77496,
680  0.80843, 0.83472, 0.86044, 0.8843, 0.90674, 0.92982, 0.95072, 0.9726};
681 
682  int inttime = (int)time;
683  float restime = time - inttime;
684  for (int i = 0; i <= 32; i++) {
685  float lolim = 0.;
686  float uplim = 1.;
687  float tsdown;
688  float tsup;
689  if (i > 0) {
690  lolim = tsreco[i - 1];
691  tsdown = tstrue[i - 1];
692  } else
693  tsdown = tstrue[31] - 1.;
694  if (i < 32) {
695  uplim = tsreco[i];
696  tsup = tstrue[i];
697  } else
698  tsup = tstrue[0] + 1.;
699  if (restime >= lolim && restime < uplim) {
700  corrtime = (tsdown * (uplim - restime) + tsup * (restime - lolim)) / (uplim - lolim);
701  }
702  }
703  corrtime += inttime;
704 
705  return corrtime;
706 }

◆ GetLedConst()

void CastorLedAnalysis::GetLedConst ( std::map< HcalDetId, std::map< int, LEDBUNCH > > &  toolT)
private

Definition at line 160 of file CastorLedAnalysis.cc.

References ALCARECOPPSCalTrackBasedSel_cff::detid, mps_fire::i, dqmiolumiharvest::j, and mathSSE::sqrt().

160  {
161  double time2 = 0;
162  double time1 = 0;
163  double time3 = 0;
164  double time4 = 0;
165  double dtime2 = 0;
166  double dtime1 = 0;
167  double dtime3 = 0;
168  double dtime4 = 0;
169  char output[100]{0};
170 
171  if (!m_outputFileText.empty()) {
172  if (m_fitflag == 0 || m_fitflag == 2)
173  m_outFile << "Det Eta,Phi,D Mean Error" << std::endl;
174  else if (m_fitflag == 1 || m_fitflag == 3)
175  m_outFile << "Det Eta,Phi,D Peak Error" << std::endl;
176  else if (m_fitflag == 4)
177  m_outFile << "Det Eta,Phi,D Mean Error Peak Error MeanEv Error PeakEv Error"
178  << std::endl;
179  }
180  for (_meol = toolT.begin(); _meol != toolT.end(); _meol++) {
181  // scale the LED pulse to 1 event
182  _meol->second[10].first->Scale(1. / evt_curr);
183  if (m_fitflag == 0 || m_fitflag == 4) {
184  time1 = _meol->second[10].first->GetMean();
185  dtime1 = _meol->second[10].first->GetRMS() / sqrt((float)evt_curr * (m_endTS - m_startTS + 1));
186  }
187  if (m_fitflag == 1 || m_fitflag == 4) {
188  // put proper errors
189  for (int j = 0; j < 10; j++)
190  _meol->second[10].first->SetBinError(j + 1, _meol->second[j].first->GetRMS() / sqrt((float)evt_curr));
191  }
192  if (m_fitflag == 1 || m_fitflag == 3 || m_fitflag == 4) {
193  _meol->second[10].first->Fit("landau", "Q");
194  // _meol->second[10].first->Fit("gaus","Q");
195  TF1* fit = _meol->second[10].first->GetFunction("landau");
196  // TF1 *fit = _meol->second[10].first->GetFunction("gaus");
197  time2 = fit->GetParameter(1);
198  dtime2 = fit->GetParError(1);
199  }
200  if (m_fitflag == 2 || m_fitflag == 4) {
201  time3 = _meol->second[12].first->GetMean();
202  dtime3 = _meol->second[12].first->GetRMS() / sqrt((float)_meol->second[12].first->GetEntries());
203  }
204  if (m_fitflag == 3 || m_fitflag == 4) {
205  time4 = _meol->second[13].first->GetMean();
206  dtime4 = _meol->second[13].first->GetRMS() / sqrt((float)_meol->second[13].first->GetEntries());
207  }
208  for (int i = 0; i < 10; i++) {
209  _meol->second[i].first->GetXaxis()->SetTitle("Pulse height (fC)");
210  _meol->second[i].first->GetYaxis()->SetTitle("Counts");
211  // if(m_hiSaveflag>0)_meol->second[i].first->Write();
212  }
213  _meol->second[10].first->GetXaxis()->SetTitle("Time slice");
214  _meol->second[10].first->GetYaxis()->SetTitle("Averaged pulse (fC)");
215  if (m_hiSaveflag > 0)
216  _meol->second[10].first->Write();
217  _meol->second[10].second.first[0].push_back(time1);
218  _meol->second[10].second.first[1].push_back(dtime1);
219  _meol->second[11].second.first[0].push_back(time2);
220  _meol->second[11].second.first[1].push_back(dtime2);
221  _meol->second[12].first->GetXaxis()->SetTitle("Mean TS");
222  _meol->second[12].first->GetYaxis()->SetTitle("Counts");
223  if (m_fitflag == 2 && m_hiSaveflag > 0)
224  _meol->second[12].first->Write();
225  _meol->second[12].second.first[0].push_back(time3);
226  _meol->second[12].second.first[1].push_back(dtime3);
227  _meol->second[13].first->GetXaxis()->SetTitle("Peak TS");
228  _meol->second[13].first->GetYaxis()->SetTitle("Counts");
229  if (m_fitflag > 2 && m_hiSaveflag > 0)
230  _meol->second[13].first->Write();
231  _meol->second[13].second.first[0].push_back(time4);
232  _meol->second[13].second.first[1].push_back(dtime4);
233  _meol->second[14].first->GetXaxis()->SetTitle("Peak TS error");
234  _meol->second[14].first->GetYaxis()->SetTitle("Counts");
235  if (m_fitflag > 2 && m_hiSaveflag > 0)
236  _meol->second[14].first->Write();
237  _meol->second[15].first->GetXaxis()->SetTitle("Chi2/NDF");
238  _meol->second[15].first->GetYaxis()->SetTitle("Counts");
239  if (m_fitflag > 2 && m_hiSaveflag > 0)
240  _meol->second[15].first->Write();
241  _meol->second[16].first->GetXaxis()->SetTitle("Integrated Signal");
242  _meol->second[16].first->Write();
243 
244  // Ascii printout (need to modify to include new info)
245  HcalDetId detid = _meol->first;
246 
247  if (!m_outputFileText.empty()) {
248  if (m_fitflag == 0) {
249  m_outFile << detid << " " << time1 << " " << dtime1 << std::endl;
250  snprintf(output, sizeof output, " <DATA_SET>");
251  m_outputFileXML << output << endl;
252  snprintf(output, sizeof output, " <VERSION>version:1</VERSION>");
253  m_outputFileXML << output << endl;
254  snprintf(output, sizeof output, " <CHANNEL>");
255  m_outputFileXML << output << endl;
256  snprintf(output, sizeof output, " <EXTENSION_TABLE_NAME>HCAL_CHANNELS</EXTENSION_TABLE_NAME>");
257  m_outputFileXML << output << endl;
258  snprintf(output, sizeof output, " <ETA>%2i</ETA>", detid.ietaAbs());
259  m_outputFileXML << output << endl;
260  snprintf(output, sizeof output, " <PHI>%2i</PHI>", detid.iphi());
261  m_outputFileXML << output << endl;
262  snprintf(output, sizeof output, " <DEPTH>%2i</DEPTH>", detid.depth());
263  m_outputFileXML << output << endl;
264  snprintf(output, sizeof output, " <Z>%2i</Z>", detid.zside());
265  m_outputFileXML << output << endl;
266  if (detid.subdet() == 1)
267  snprintf(output, sizeof output, " <DETECTOR_NAME>HB</DETECTOR_NAME>");
268  if (detid.subdet() == 2)
269  snprintf(output, sizeof output, " <DETECTOR_NAME>HE</DETECTOR_NAME>");
270  if (detid.subdet() == 3)
271  snprintf(output, sizeof output, " <DETECTOR_NAME>HO</DETECTOR_NAME>");
272  if (detid.subdet() == 4)
273  snprintf(output, sizeof output, " <DETECTOR_NAME>HF</DETECTOR_NAME>");
274  m_outputFileXML << output << endl;
275  snprintf(output, sizeof output, " <HCAL_CHANNEL_ID>%10i</HCAL_CHANNEL_ID>", detid.rawId());
276  m_outputFileXML << output << endl;
277  snprintf(output, sizeof output, " </CHANNEL>");
278  m_outputFileXML << output << endl;
279  snprintf(output, sizeof output, " <DATA>");
280  m_outputFileXML << output << endl;
281  snprintf(output, sizeof output, " <MEAN_TIME>%7f</MEAN_TIME>", time1);
282  m_outputFileXML << output << endl;
283  snprintf(output, sizeof output, " <OFFSET_TIME> 0</OFFSET_TIME>");
284  m_outputFileXML << output << endl;
285  snprintf(output, sizeof output, " <ERROR_STAT>%7f</ERROR_STAT>", dtime1);
286  m_outputFileXML << output << endl;
287  snprintf(output, sizeof output, " <ANALYSIS_FLAG>%2i</ANALYSIS_FLAG>", m_fitflag + 1);
288  m_outputFileXML << output << endl;
289  snprintf(output, sizeof output, " <STATUS_WORD> 0</STATUS_WORD>");
290  m_outputFileXML << output << endl;
291  snprintf(output, sizeof output, " </DATA>");
292  m_outputFileXML << output << endl;
293  snprintf(output, sizeof output, " </DATA_SET>");
294  m_outputFileXML << output << endl;
295 
296  } else if (m_fitflag == 1) {
297  m_outFile << detid << " " << time2 << " " << dtime2 << std::endl;
298  snprintf(output, sizeof output, " <DATA_SET>");
299  m_outputFileXML << output << endl;
300  snprintf(output, sizeof output, " <VERSION>version:1</VERSION>");
301  m_outputFileXML << output << endl;
302  snprintf(output, sizeof output, " <CHANNEL>");
303  m_outputFileXML << output << endl;
304  snprintf(output, sizeof output, " <EXTENSION_TABLE_NAME>HCAL_CHANNELS</EXTENSION_TABLE_NAME>");
305  m_outputFileXML << output << endl;
306  snprintf(output, sizeof output, " <ETA>%2i</ETA>", detid.ietaAbs());
307  m_outputFileXML << output << endl;
308  snprintf(output, sizeof output, " <PHI>%2i</PHI>", detid.iphi());
309  m_outputFileXML << output << endl;
310  snprintf(output, sizeof output, " <DEPTH>%2i</DEPTH>", detid.depth());
311  m_outputFileXML << output << endl;
312  snprintf(output, sizeof output, " <Z>%2i</Z>", detid.zside());
313  m_outputFileXML << output << endl;
314  if (detid.subdet() == 1)
315  snprintf(output, sizeof output, " <DETECTOR_NAME>HB</DETECTOR_NAME>");
316  if (detid.subdet() == 2)
317  snprintf(output, sizeof output, " <DETECTOR_NAME>HE</DETECTOR_NAME>");
318  if (detid.subdet() == 3)
319  snprintf(output, sizeof output, " <DETECTOR_NAME>HO</DETECTOR_NAME>");
320  if (detid.subdet() == 4)
321  snprintf(output, sizeof output, " <DETECTOR_NAME>HF</DETECTOR_NAME>");
322  m_outputFileXML << output << endl;
323  snprintf(output, sizeof output, " <HCAL_CHANNEL_ID>%10i</HCAL_CHANNEL_ID>", detid.rawId());
324  m_outputFileXML << output << endl;
325  snprintf(output, sizeof output, " </CHANNEL>");
326  m_outputFileXML << output << endl;
327  snprintf(output, sizeof output, " <DATA>");
328  m_outputFileXML << output << endl;
329  snprintf(output, sizeof output, " <MEAN_TIME>%7f</MEAN_TIME>", time2);
330  m_outputFileXML << output << endl;
331  snprintf(output, sizeof output, " <OFFSET_TIME> 0</OFFSET_TIME>");
332  m_outputFileXML << output << endl;
333  snprintf(output, sizeof output, " <ERROR_STAT>%7f</ERROR_STAT>", dtime2);
334  m_outputFileXML << output << endl;
335  snprintf(output, sizeof output, " <ANALYSIS_FLAG>%2i</ANALYSIS_FLAG>", m_fitflag + 1);
336  m_outputFileXML << output << endl;
337  snprintf(output, sizeof output, " <STATUS_WORD> 0</STATUS_WORD>");
338  m_outputFileXML << output << endl;
339  snprintf(output, sizeof output, " </DATA>");
340  m_outputFileXML << output << endl;
341  snprintf(output, sizeof output, " </DATA_SET>");
342  m_outputFileXML << output << endl;
343  }
344 
345  else if (m_fitflag == 2) {
346  m_outFile << detid << " " << time3 << " " << dtime3 << std::endl;
347  snprintf(output, sizeof output, " <DATA_SET>");
348  m_outputFileXML << output << endl;
349  snprintf(output, sizeof output, " <VERSION>version:1</VERSION>");
350  m_outputFileXML << output << endl;
351  snprintf(output, sizeof output, " <CHANNEL>");
352  m_outputFileXML << output << endl;
353  snprintf(output, sizeof output, " <EXTENSION_TABLE_NAME>HCAL_CHANNELS</EXTENSION_TABLE_NAME>");
354  m_outputFileXML << output << endl;
355  snprintf(output, sizeof output, " <ETA>%2i</ETA>", detid.ietaAbs());
356  m_outputFileXML << output << endl;
357  snprintf(output, sizeof output, " <PHI>%2i</PHI>", detid.iphi());
358  m_outputFileXML << output << endl;
359  snprintf(output, sizeof output, " <DEPTH>%2i</DEPTH>", detid.depth());
360  m_outputFileXML << output << endl;
361  snprintf(output, sizeof output, " <Z>%2i</Z>", detid.zside());
362  m_outputFileXML << output << endl;
363  if (detid.subdet() == 1)
364  snprintf(output, sizeof output, " <DETECTOR_NAME>HB</DETECTOR_NAME>");
365  if (detid.subdet() == 2)
366  snprintf(output, sizeof output, " <DETECTOR_NAME>HE</DETECTOR_NAME>");
367  if (detid.subdet() == 3)
368  snprintf(output, sizeof output, " <DETECTOR_NAME>HO</DETECTOR_NAME>");
369  if (detid.subdet() == 4)
370  snprintf(output, sizeof output, " <DETECTOR_NAME>HF</DETECTOR_NAME>");
371  m_outputFileXML << output << endl;
372  snprintf(output, sizeof output, " <HCAL_CHANNEL_ID>%10i</HCAL_CHANNEL_ID>", detid.rawId());
373  m_outputFileXML << output << endl;
374  snprintf(output, sizeof output, " </CHANNEL>");
375  m_outputFileXML << output << endl;
376  snprintf(output, sizeof output, " <DATA>");
377  m_outputFileXML << output << endl;
378  snprintf(output, sizeof output, " <MEAN_TIME>%7f</MEAN_TIME>", time3);
379  m_outputFileXML << output << endl;
380  snprintf(output, sizeof output, " <OFFSET_TIME> 0</OFFSET_TIME>");
381  m_outputFileXML << output << endl;
382  snprintf(output, sizeof output, " <ERROR_STAT>%7f</ERROR_STAT>", dtime3);
383  m_outputFileXML << output << endl;
384  snprintf(output, sizeof output, " <ANALYSIS_FLAG>%2i</ANALYSIS_FLAG>", m_fitflag + 1);
385  m_outputFileXML << output << endl;
386  snprintf(output, sizeof output, " <STATUS_WORD> 0</STATUS_WORD>");
387  m_outputFileXML << output << endl;
388  snprintf(output, sizeof output, " </DATA>");
389  m_outputFileXML << output << endl;
390  snprintf(output, sizeof output, " </DATA_SET>");
391  m_outputFileXML << output << endl;
392  } else if (m_fitflag == 3) {
393  m_outFile << detid << " " << time4 << " " << dtime4 << std::endl;
394  snprintf(output, sizeof output, " <DATA_SET>");
395  m_outputFileXML << output << endl;
396  snprintf(output, sizeof output, " <VERSION>version:1</VERSION>");
397  m_outputFileXML << output << endl;
398  snprintf(output, sizeof output, " <CHANNEL>");
399  m_outputFileXML << output << endl;
400  snprintf(output, sizeof output, " <EXTENSION_TABLE_NAME>HCAL_CHANNELS</EXTENSION_TABLE_NAME>");
401  m_outputFileXML << output << endl;
402  snprintf(output, sizeof output, " <ETA>%2i</ETA>", detid.ietaAbs());
403  m_outputFileXML << output << endl;
404  snprintf(output, sizeof output, " <PHI>%2i</PHI>", detid.iphi());
405  m_outputFileXML << output << endl;
406  snprintf(output, sizeof output, " <DEPTH>%2i</DEPTH>", detid.depth());
407  m_outputFileXML << output << endl;
408  snprintf(output, sizeof output, " <Z>%2i</Z>", detid.zside());
409  m_outputFileXML << output << endl;
410  if (detid.subdet() == 1)
411  snprintf(output, sizeof output, " <DETECTOR_NAME>HB</DETECTOR_NAME>");
412  if (detid.subdet() == 2)
413  snprintf(output, sizeof output, " <DETECTOR_NAME>HE</DETECTOR_NAME>");
414  if (detid.subdet() == 3)
415  snprintf(output, sizeof output, " <DETECTOR_NAME>HO</DETECTOR_NAME>");
416  if (detid.subdet() == 4)
417  snprintf(output, sizeof output, " <DETECTOR_NAME>HF</DETECTOR_NAME>");
418  m_outputFileXML << output << endl;
419  snprintf(output, sizeof output, " <HCAL_CHANNEL_ID>%10i</HCAL_CHANNEL_ID>", detid.rawId());
420  m_outputFileXML << output << endl;
421  snprintf(output, sizeof output, " </CHANNEL>");
422  m_outputFileXML << output << endl;
423  snprintf(output, sizeof output, " <DATA>");
424  m_outputFileXML << output << endl;
425  snprintf(output, sizeof output, " <MEAN_TIME>%7f</MEAN_TIME>", time4);
426  m_outputFileXML << output << endl;
427  snprintf(output, sizeof output, " <OFFSET_TIME> 0</OFFSET_TIME>");
428  m_outputFileXML << output << endl;
429  snprintf(output, sizeof output, " <ERROR_STAT>%7f</ERROR_STAT>", dtime4);
430  m_outputFileXML << output << endl;
431  snprintf(output, sizeof output, " <ANALYSIS_FLAG>%2i</ANALYSIS_FLAG>", m_fitflag + 1);
432  m_outputFileXML << output << endl;
433  snprintf(output, sizeof output, " <STATUS_WORD> 0</STATUS_WORD>");
434  m_outputFileXML << output << endl;
435  snprintf(output, sizeof output, " </DATA>");
436  m_outputFileXML << output << endl;
437  snprintf(output, sizeof output, " </DATA_SET>");
438  m_outputFileXML << output << endl;
439  }
440 
441  else if (m_fitflag == 4) {
442  m_outFile << detid << " " << time1 << " " << dtime1 << " " << time2 << " " << dtime2 << " " << time3
443  << " " << dtime3 << " " << time4 << " " << dtime4 << std::endl;
444  }
445  }
446  }
447 }
std::map< HcalDetId, std::map< int, LEDBUNCH > >::iterator _meol
std::ofstream m_outFile
std::string m_outputFileText
T sqrt(T t)
Definition: SSEVec.h:23
std::ofstream m_outputFileXML
Definition: output.py:1

◆ LedCastorHists()

void CastorLedAnalysis::LedCastorHists ( const HcalDetId detid,
const CastorDataFrame ledDigi,
std::map< HcalDetId, std::map< int, LEDBUNCH > > &  toolT,
const CastorDbService cond 
)
private

Definition at line 590 of file CastorLedAnalysis.cc.

References gpuClustering::adc, ALCARECOPPSCalTrackBasedSel_cff::detid, dqmdumpme::first, mps_fire::i, createfilelist::int, isotrackApplyRegressor::k, and CastorDataFrame::size().

593  {
594  map<int, LEDBUNCH> _mei;
595  _meol = toolT.find(detid);
596  _mei = _meol->second;
597  // Rest the histos if we're at the end of a 'bunch'
598  if ((evt - 1) % m_nevtsample == 0 && state[0]) {
599  for (int k = 0; k < (int)state.size(); k++)
600  state[k] = false;
601  for (int i = 0; i < 16; i++)
602  _mei[i].first->Reset();
603  }
604 
605  // now we have the signal in fC, let's get rid of that darn pedestal
606  // Most of this is borrowed from CastorSimpleReconstructor, so thanks Jeremy/Phil
607 
608  float max_fC = 0;
609  float ta = 0;
610  m_coder = cond.getCastorCoder(detid);
611  m_ped = cond.getPedestal(detid);
612  m_shape = cond.getCastorShape();
613  //cout << "New Digi!!!!!!!!!!!!!!!!!!!!!!" << endl;
614  for (int TS = m_startTS; TS < m_endTS && TS < ledDigi.size(); TS++) {
615  int capid = ledDigi[TS].capid();
616  // BE CAREFUL: this is assuming peds are stored in ADCs
617  int adc = (int)(ledDigi[TS].adc() - m_ped->getValue(capid));
618  if (adc < 0) {
619  adc = 0;
620  } // to prevent negative adcs after ped subtraction, which should really only happen
621  // if you're using the wrong peds.
622  double fC = m_coder->charge(*m_shape, adc, capid);
623  //ta = (fC - m_ped->getValue(capid));
624  ta = fC;
625  //cout << "DetID: " << detid << " CapID: " << capid << " ADC: " << adc << " Ped: " << m_ped->getValue(capid) << " fC: " << fC << endl;
626  _mei[TS].first->Fill(ta);
627  _mei[10].first->AddBinContent(TS + 1, ta); // This is average pulse, could probably do better (Profile?)
628  if (m_fitflag > 1) {
629  if (TS == m_startTS)
630  _mei[11].first->Reset();
631  _mei[11].first->SetBinContent(TS + 1, ta);
632  }
633 
634  // keep track of max TS and max amplitude (in fC)
635  if (ta > max_fC) {
636  max_fC = ta;
637  }
638  }
639 
640  // Now we have a sample with pedestals subtracted and in units of fC
641  // If we are using a weighted mean (m_fitflag = 2) to extraxt timing
642  // we now want to use Phil's timing correction. This is not necessary
643  // if we are performing a Landau fit (m_fitflag = 3)
644 
645  float sum = 0.;
646  for (int i = 0; i < 10; i++)
647  sum = sum + _mei[11].first->GetBinContent(i + 1);
648  if (sum > 100) {
649  if (m_fitflag == 2 || m_fitflag == 4) {
650  float timmean = _mei[11].first->GetMean(); // let's use Phil's way instead
651  float timmeancorr = BinsizeCorr(timmean);
652  _mei[12].first->Fill(timmeancorr);
653  }
654  _mei[16].first->Fill(
655  _mei[11].first->Integral()); // Integrated charge (may be more usfull to convert to Energy first?)
656  if (m_fitflag == 3 || m_fitflag == 4) {
657  _mei[11].first->Fit("landau", "Q");
658  TF1* fit = _mei[11].first->GetFunction("landau");
659  _mei[13].first->Fill(fit->GetParameter(1));
660  _mei[14].first->Fill(fit->GetParError(1));
661  _mei[15].first->Fill(fit->GetChisquare() / fit->GetNDF());
662  }
663  }
664 }
float charge(const CastorQIEShape &fShape, unsigned fAdc, unsigned fCapId) const
ADC [0..127] + capid [0..3] -> fC conversion.
std::map< HcalDetId, std::map< int, LEDBUNCH > >::iterator _meol
std::vector< bool > state
const CastorQIEShape * m_shape
int size() const
total number of samples in the digi
float BinsizeCorr(float time)
const CastorPedestal * m_ped
const CastorQIECoder * m_coder
float getValue(int fCapId) const
get value for capId = 0..3
uint16_t *__restrict__ uint16_t const *__restrict__ adc

◆ LedDone()

void CastorLedAnalysis::LedDone ( )

Definition at line 496 of file CastorLedAnalysis.cc.

References gather_cfg::cout, and ecalGpuTask_cfi::sample.

496  {
497  // First process the last sample (remaining events).
498  if (evt % m_nevtsample != 0)
500 
501  // Now do the end of run analysis: trending histos
502  if (sample > 1 && m_fitflag != 4) {
503  m_file->cd();
504  m_file->cd("Castor");
505  LedTrendings(castorHists.LEDTRENDS);
506  }
507 
508  // Write other histograms.
509  m_file->cd();
510  m_file->cd("Castor");
511  castorHists.ALLLEDS->Write();
512  castorHists.LEDRMS->Write();
513  castorHists.LEDMEAN->Write();
514 
515  // Write the histo file and close it
516  // m_file->Write();
517  m_file->Close();
518  cout << "Castor histograms written to " << m_outputFileROOT.c_str() << endl;
519 }
void LedTrendings(std::map< HcalDetId, std::map< int, LEDBUNCH > > &toolT)
struct CastorLedAnalysis::@43 castorHists
std::string m_outputFileROOT

◆ LedSampleAnalysis()

void CastorLedAnalysis::LedSampleAnalysis ( )

Definition at line 450 of file CastorLedAnalysis.cc.

References ecalGpuTask_cfi::sample.

450  {
451  // it is called every m_nevtsample events (a sample) and the end of run
452  char LedSampleNum[20];
453 
454  sprintf(LedSampleNum, "LedSample_%d", sample);
455  m_file->cd();
456  m_file->mkdir(LedSampleNum);
457  m_file->cd(LedSampleNum);
458 
459  // Compute LED constants
460  GetLedConst(castorHists.LEDTRENDS);
461 }
void GetLedConst(std::map< HcalDetId, std::map< int, LEDBUNCH > > &toolT)
struct CastorLedAnalysis::@43 castorHists

◆ LedSetup()

void CastorLedAnalysis::LedSetup ( const std::string &  m_outputFileROOT)

Definition at line 152 of file CastorLedAnalysis.cc.

152  {
153  // open the histogram file, create directories within
154  m_file = new TFile(m_outputFileROOT.c_str(), "RECREATE");
155  m_file->mkdir("Castor");
156  m_file->cd();
157 }
std::string m_outputFileROOT

◆ LedTrendings()

void CastorLedAnalysis::LedTrendings ( std::map< HcalDetId, std::map< int, LEDBUNCH > > &  toolT)
private

Definition at line 464 of file CastorLedAnalysis.cc.

References isotrackApplyRegressor::bins, ALCARECOPPSCalTrackBasedSel_cff::detid, ALCARECOEcalPhiSym_cff::float, dqmiolumiharvest::j, and mergeVDriftHistosByStation::name.

464  {
465  for (_meol = toolT.begin(); _meol != toolT.end(); _meol++) {
466  char name[1024];
467  HcalDetId detid = _meol->first;
468  sprintf(name, "LED timing trend, eta=%d phi=%d depth=%d", detid.ieta(), detid.iphi(), detid.depth());
469  int bins = _meol->second[10 + m_fitflag].second.first[0].size();
470  float lo = 0.5;
471  float hi = (float)bins + 0.5;
472  _meol->second[10 + m_fitflag].second.second.push_back(new TH1F(name, name, bins, lo, hi));
473 
474  std::vector<double>::iterator sample_it;
475  // LED timing - put content and errors
476  int j = 0;
477  for (sample_it = _meol->second[10 + m_fitflag].second.first[0].begin();
478  sample_it != _meol->second[10 + m_fitflag].second.first[0].end();
479  ++sample_it) {
480  _meol->second[10 + m_fitflag].second.second[0]->SetBinContent(++j, *sample_it);
481  }
482  j = 0;
483  for (sample_it = _meol->second[10 + m_fitflag].second.first[1].begin();
484  sample_it != _meol->second[10 + m_fitflag].second.first[1].end();
485  ++sample_it) {
486  _meol->second[10 + m_fitflag].second.second[0]->SetBinError(++j, *sample_it);
487  }
488  sprintf(name, "Sample (%d events)", m_nevtsample);
489  _meol->second[10 + m_fitflag].second.second[0]->GetXaxis()->SetTitle(name);
490  _meol->second[10 + m_fitflag].second.second[0]->GetYaxis()->SetTitle("Peak position");
491  _meol->second[10 + m_fitflag].second.second[0]->Write();
492  }
493 }
std::map< HcalDetId, std::map< int, LEDBUNCH > >::iterator _meol
Definition: EPCuts.h:4

◆ processLedEvent()

void CastorLedAnalysis::processLedEvent ( const CastorDigiCollection castor,
const CastorDbService cond 
)

Definition at line 522 of file CastorLedAnalysis.cc.

References castorDigitizer_cfi::castor, CastorDataFrame::id(), createfilelist::int, dqmiolumiharvest::j, and ecalGpuTask_cfi::sample.

522  {
523  evt++;
524  sample = (evt - 1) / m_nevtsample + 1;
526  if (evt_curr == 0)
528 
529  // HF/Castor
530  if (castor.empty()) {
531  edm::LogError("CastorLedAnalysis") << "Event with " << (int)castor.size() << "Castor Digis passed." << std::endl;
532  return;
533  }
534  for (CastorDigiCollection::const_iterator j = castor.begin(); j != castor.end(); ++j) {
535  const CastorDataFrame digi = (const CastorDataFrame)(*j);
536  _meol = castorHists.LEDTRENDS.find(digi.id());
537  if (_meol == castorHists.LEDTRENDS.end()) {
538  SetupLEDHists(2, digi.id(), castorHists.LEDTRENDS);
539  }
540  LedCastorHists(digi.id(), digi, castorHists.LEDTRENDS, cond);
541  }
542 
543  // Call the function every m_nevtsample events
544  if (evt % m_nevtsample == 0)
546 }
std::map< HcalDetId, std::map< int, LEDBUNCH > >::iterator _meol
std::vector< T >::const_iterator const_iterator
Log< level::Error, false > LogError
struct CastorLedAnalysis::@43 castorHists
void LedCastorHists(const HcalDetId &detid, const CastorDataFrame &ledDigi, std::map< HcalDetId, std::map< int, LEDBUNCH > > &toolT, const CastorDbService &cond)
const HcalCastorDetId & id() const
void SetupLEDHists(int id, const HcalDetId detid, std::map< HcalDetId, std::map< int, LEDBUNCH > > &toolT)

◆ SetupLEDHists()

void CastorLedAnalysis::SetupLEDHists ( int  id,
const HcalDetId  detid,
std::map< HcalDetId, std::map< int, LEDBUNCH > > &  toolT 
)
private

Definition at line 548 of file CastorLedAnalysis.cc.

References ALCARECOPPSCalTrackBasedSel_cff::detid, mps_fire::i, edm::eventsetup::heterocontainer::insert(), and mergeVDriftHistosByStation::name.

548  {
549  string type = "HBHE";
550  if (id == 1)
551  type = "HO";
552  if (id == 2)
553  type = "HF";
554 
555  _meol = toolT.find(detid);
556  if (_meol == toolT.end()) {
557  // if histos for this channel do not exist, create them
558  map<int, LEDBUNCH> insert;
559  char name[1024];
560  for (int i = 0; i < 10; i++) {
561  sprintf(name,
562  "%s Pulse height, eta=%d phi=%d depth=%d TS=%d",
563  type.c_str(),
564  detid.ieta(),
565  detid.iphi(),
566  detid.depth(),
567  i);
568  insert[i].first = new TH1F(name, name, 200, 0., 2000.);
569  }
570  sprintf(name, "%s LED Mean pulse, eta=%d phi=%d depth=%d", type.c_str(), detid.ieta(), detid.iphi(), detid.depth());
571  insert[10].first = new TH1F(name, name, 10, -0.5, 9.5);
572  sprintf(name, "%s LED Pulse, eta=%d phi=%d depth=%d", type.c_str(), detid.ieta(), detid.iphi(), detid.depth());
573  insert[11].first = new TH1F(name, name, 10, -0.5, 9.5);
574  sprintf(name, "%s Mean TS, eta=%d phi=%d depth=%d", type.c_str(), detid.ieta(), detid.iphi(), detid.depth());
575  insert[12].first = new TH1F(name, name, 200, 0., 10.);
576  sprintf(name, "%s Peak TS, eta=%d phi=%d depth=%d", type.c_str(), detid.ieta(), detid.iphi(), detid.depth());
577  insert[13].first = new TH1F(name, name, 200, 0., 10.);
578  sprintf(name, "%s Peak TS error, eta=%d phi=%d depth=%d", type.c_str(), detid.ieta(), detid.iphi(), detid.depth());
579  insert[14].first = new TH1F(name, name, 200, 0., 0.05);
580  sprintf(name, "%s Fit chi2, eta=%d phi=%d depth=%d", type.c_str(), detid.ieta(), detid.iphi(), detid.depth());
581  insert[15].first = new TH1F(name, name, 100, 0., 50.);
582  sprintf(
583  name, "%s Integrated Signal, eta=%d phi=%d depth=%d", type.c_str(), detid.ieta(), detid.iphi(), detid.depth());
584  insert[16].first = new TH1F(name, name, 500, 0., 5000.);
585 
586  toolT[detid] = insert;
587  }
588 }
std::map< HcalDetId, std::map< int, LEDBUNCH > >::iterator _meol
bool insert(Storage &iStorage, ItemType *iItem, const IdTag &iIdTag)
Definition: HCMethods.h:50

Member Data Documentation

◆ _meca

std::map<HcalCalibDetId, CALIBBUNCH>::iterator CastorLedAnalysis::_meca
private

Definition at line 108 of file CastorLedAnalysis.h.

◆ _meee

std::map<HcalDetId, std::map<int, float> >::iterator CastorLedAnalysis::_meee
private

Definition at line 106 of file CastorLedAnalysis.h.

◆ _meol

std::map<HcalDetId, std::map<int, LEDBUNCH> >::iterator CastorLedAnalysis::_meol
private

Definition at line 104 of file CastorLedAnalysis.h.

◆ ALLLEDS

TH1F* CastorLedAnalysis::ALLLEDS

Definition at line 99 of file CastorLedAnalysis.h.

◆ castorHists

struct { ... } CastorLedAnalysis::castorHists

◆ CHI2

TH1F* CastorLedAnalysis::CHI2

Definition at line 102 of file CastorLedAnalysis.h.

◆ evt

int CastorLedAnalysis::evt
private

Definition at line 111 of file CastorLedAnalysis.h.

◆ evt_curr

int CastorLedAnalysis::evt_curr
private

Definition at line 113 of file CastorLedAnalysis.h.

◆ LEDMEAN

TH1F* CastorLedAnalysis::LEDMEAN

Definition at line 101 of file CastorLedAnalysis.h.

◆ LEDRMS

TH1F* CastorLedAnalysis::LEDRMS

Definition at line 100 of file CastorLedAnalysis.h.

◆ LEDTRENDS

std::map<HcalDetId, std::map<int, LEDBUNCH> > CastorLedAnalysis::LEDTRENDS

Definition at line 98 of file CastorLedAnalysis.h.

◆ m_AllPedVals

std::map<HcalDetId, std::map<int, float> > CastorLedAnalysis::m_AllPedVals
private

Definition at line 105 of file CastorLedAnalysis.h.

◆ m_coder

const CastorQIECoder* CastorLedAnalysis::m_coder
private

Definition at line 95 of file CastorLedAnalysis.h.

◆ m_endTS

int CastorLedAnalysis::m_endTS
private

Definition at line 80 of file CastorLedAnalysis.h.

◆ m_file

TFile* CastorLedAnalysis::m_file
private

Definition at line 62 of file CastorLedAnalysis.h.

◆ m_fitflag

int CastorLedAnalysis::m_fitflag
private

Definition at line 92 of file CastorLedAnalysis.h.

◆ m_hiSaveflag

int CastorLedAnalysis::m_hiSaveflag
private

Definition at line 82 of file CastorLedAnalysis.h.

◆ m_logFile

std::ofstream CastorLedAnalysis::m_logFile
private

Definition at line 76 of file CastorLedAnalysis.h.

◆ m_nevtsample

int CastorLedAnalysis::m_nevtsample
private

Definition at line 81 of file CastorLedAnalysis.h.

◆ m_outFile

std::ofstream CastorLedAnalysis::m_outFile
private

Definition at line 75 of file CastorLedAnalysis.h.

◆ m_outputFileROOT

std::string CastorLedAnalysis::m_outputFileROOT
private

Definition at line 72 of file CastorLedAnalysis.h.

◆ m_outputFileText

std::string CastorLedAnalysis::m_outputFileText
private

Definition at line 73 of file CastorLedAnalysis.h.

◆ m_outputFileX

std::string CastorLedAnalysis::m_outputFileX
private

Definition at line 74 of file CastorLedAnalysis.h.

◆ m_outputFileXML

std::ofstream CastorLedAnalysis::m_outputFileXML
private

Definition at line 77 of file CastorLedAnalysis.h.

◆ m_ped

const CastorPedestal* CastorLedAnalysis::m_ped
private

Definition at line 96 of file CastorLedAnalysis.h.

◆ m_shape

const CastorQIEShape* CastorLedAnalysis::m_shape
private

Definition at line 94 of file CastorLedAnalysis.h.

◆ m_startTS

int CastorLedAnalysis::m_startTS
private

Definition at line 79 of file CastorLedAnalysis.h.

◆ m_usecalib

bool CastorLedAnalysis::m_usecalib
private

Definition at line 83 of file CastorLedAnalysis.h.

◆ sample

int CastorLedAnalysis::sample
private

Definition at line 112 of file CastorLedAnalysis.h.

Referenced by svgfig.Curve::Path().

◆ state

std::vector<bool> CastorLedAnalysis::state
private