Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DEventProcessor_ccal_display.cc
Go to the documentation of this file.
1 // $Id$
2 //
3 // File: DEventProcessor_ccal_display.cc
4 // Created: Mon Apr 3 11:38:03 EDT 2006
5 // Creator: davidl (on Darwin swire-b241.jlab.org 8.4.0 powerpc)
6 //
7 
8 #include <map>
9 using namespace std;
10 
12 
13 #include <DANA/DApplication.h>
14 #include <CCAL/DCCALDigiHit.h>
15 
16 #include <DAQ/Df250PulseIntegral.h>
17 #include <DAQ/Df250PulseData.h>
18 #include <DAQ/Df250WindowRawData.h>
19 #include <DAQ/Df250PulsePedestal.h>
20 
21 
22 
23 // Routine used to create our DEventProcessor
24 extern "C"{
25 void InitPlugin(JApplication *app){
26  InitJANAPlugin(app);
27  app->AddProcessor(new DEventProcessor_ccal_display());
28 }
29 } // "C"
30 
31 
32 //------------------
33 // init
34 //------------------
36 {
37 
38  gStyle->SetOptStat(0);
39 
40  gStyle->SetTitleFontSize(0.07);
41 
42  gStyle->SetLineWidth(1.5);
43  gStyle->SetTextSize(1.5);
44 
45  gStyle->SetTitleFont(130,"xy");
46  gStyle->SetLabelFont(130,"xy");
47 
48  gStyle->SetLineWidth(1.5);
49  gStyle->SetTextSize(1.5);
50 
51 
52  gStyle->SetLabelSize(0.09,"xy");
53  gStyle->SetTitleSize(0.09,"xy");
54 
55 
56  gStyle->SetTitleOffset(1.,"x");
57  gStyle->SetTitleOffset(0.6,"y");
58 
59  gStyle->SetTitleBorderSize(0);
60 
61  app1 = new TApplication("app1",NULL,0);
62 
63  my_canvas = new TCanvas("CCAL ", "CCAL ",1000, 700, 1500, 1000);
64 
65 
66  my_canvas->Divide(12,12,0.001);
67 
68 
69  for(Int_t ii = 0; ii < 12; ii++){
70  for(Int_t jj = 0; jj < 12; jj++){
71 
72  int index = ii*12 + jj;
73 
74  int column, row;
75 
76  if(jj < 6) column = jj - 6;
77  else column = jj - 5;
78 
79  if(ii < 6) row = ii - 6;
80  else row = ii - 5;
81 
82  char title[30];
83  sprintf(title,"Peak_%d_%d", column, row);
84 
85  sprintf(title,"Waveform_%d_%d", column, row);
86  ccal_wave[index] = new TProfile(title,title,100,-0.5,99.5,-10.,4096);
87 
88  }
89  }
90 
91  return NOERROR;
92 }
93 
94 //------------------
95 // brun
96 //------------------
97 jerror_t DEventProcessor_ccal_display::brun(JEventLoop *eventLoop, int32_t runnumber)
98 {
99  return NOERROR;
100 }
101 
102 //------------------
103 // evnt
104 //------------------
105 jerror_t DEventProcessor_ccal_display::evnt(JEventLoop *loop, uint64_t eventnumber)
106 {
107 
108 
109  vector<const DCCALDigiHit*> ccal_digihits;
110 
111  int draw_cosmic = 1;
112 
113 
114  cout << " Event number = " << eventnumber << endl;
115 
116 
117  loop->Get(ccal_digihits);
118 
119  cout << " Number of hits = " << ccal_digihits.size() << endl;
120 
121  japp->RootWriteLock();
122 
123  for(unsigned int ii = 0; ii < ccal_digihits.size(); ii++){
124  const DCCALDigiHit *ccal_hit = ccal_digihits[ii];
125 
126  int row = ccal_hit->row;
127  int column = ccal_hit->column;
128 
129 
130  int index = row*12 + column;
131 
132 
133  const Df250WindowRawData *windorawdata;
134  const Df250PulseData *pulsedata;
135 
136 
137  ccal_hit->GetSingle(pulsedata);
138  pulsedata->GetSingle(windorawdata);
139 
140 
141  if(pulsedata){
142  if(windorawdata){
143 
144  const vector<uint16_t> &samplesvector = windorawdata->samples;
145 
146  unsigned int nsamples = samplesvector.size();
147 
148  for(uint16_t samp = 0; samp < nsamples; samp++){
149 
150  ccal_wave[index]->Fill(float(samp),float(samplesvector[samp]));
151 
152  }
153  }
154  }
155  }
156 
157 
158  if(draw_cosmic == 1){
159  if( (ccal_digihits.size() > 30) || (ccal_digihits.size() == 0)){
160 
161  for(int ii = 0; ii < 144; ii++){
162  ccal_wave[ii]->Reset();
163  }
164 
165  japp->RootUnLock();
166  return NOERROR;
167  }
168  }
169 
170 
171  for(int ii = 143; ii >= 0; ii--){
172 
173  int index = 144 - ii;
174 
175  my_canvas->cd(index);
176 
177  gPad->SetBottomMargin(0.19);
178  gPad->SetLeftMargin(0.15);
179  ccal_wave[ii]->Draw("histo");
180  }
181 
182 
183  my_canvas->Update();
184 
185  cout << " -------- PRESS KEY ----------- " << endl;
186 
187  getchar();
188 
189  my_canvas->Clear();
190  my_canvas->Divide(12,12,0.001);
191 
192  for(int ii = 0; ii < 144; ii++){
193  ccal_wave[ii]->Reset();
194  }
195 
196 
197  japp->RootUnLock();
198 
199  return NOERROR;
200 }
201 
202 //------------------
203 // erun
204 //------------------
206 {
207  // Any final calculations on histograms (like dividing them)
208  // should be done here. This may get called more than once.
209  return NOERROR;
210 }
211 
212 //------------------
213 // fini
214 //------------------
216 {
217  return NOERROR;
218 }
219 
jerror_t fini(void)
Called after last event of last event source has been processed.
sprintf(text,"Post KinFit Cut")
jerror_t brun(JEventLoop *eventLoop, int32_t runnumber)
Called everytime a new run number is detected.
jerror_t init(void)
Called once at program start.
vector< uint16_t > samples
static char index(char c)
Definition: base64.cpp:115
JApplication * japp
InitPlugin_t InitPlugin
jerror_t erun(void)
Called everytime run number changes, provided brun has been called.
jerror_t evnt(JEventLoop *eventLoop, uint64_t eventnumber)
Called every event.