Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
JEventProcessor_BCAL_LED.cc
Go to the documentation of this file.
1 // $Id$
2 //
3 // File: JEventProcessor_BCAL_LED.cc
4 //
5 
7 
8 
9 
10 //----------------------------------------------------------------------------------
11 
12 // string make_filename( const string& basename, int index, const string& ext )
13 // {
14 // ostringstream result;
15 // result << basename << index << ext;
16 // return result.str();
17 // }
18 
19 
20 // Routine used to create our JEventProcessor
21 extern "C"{
22  void InitPlugin(JApplication *app){
23  InitJANAPlugin(app);
24  app->AddProcessor(new JEventProcessor_BCAL_LED());
25  }
26 
27 }
28 
29  //define static local variable //declared in header file
31 
32 //----------------------------------------------------------------------------------
33 
34 
36 }
37 
38 
39 //----------------------------------------------------------------------------------
40 
41 
43 }
44 
45 
46 //----------------------------------------------------------------------------------
47 
49 
50  // First thread to get here makes all histograms. If one pointer is
51  // already not NULL, assume all histograms are defined and return now
52 // if(bcal_peak != NULL){
53 // japp->RootUnLock();
54 // return NOERROR;
55 // }
56 
57  //NOtrig=0; FPtrig=0; GTPtrig=0; FPGTPtrig=0; trigUS=0; trigDS=0; trigCosmic=0;
58  //low_down_1_counter=0; low_down_2_counter=0; low_down_3_counter=0; low_down_4_counter=0; low_up_1_counter=0; low_up_2_counter=0; low_up_3_counter=0; low_up_4_counter=0; high_down_1_counter=0; high_down_2_counter=0; high_down_3_counter=0; high_down_4_counter=0; high_up_1_counter=0;
59  //high_up_2_counter=0; high_up_3_counter=0; high_up_4_counter=0;
60  //unidentified = 0; ledcounter = 0;
61  //overflow=0; underflow=0; negatives=0; zeros=0;
62 
63  // create root folder for bcal and cd to it, store main dir
64  TDirectory *main = gDirectory;
65  gDirectory->mkdir("bcalLED")->cd();
66  //gStyle->SetOptStat(111110);
67 
68  //TTREE INTERFACE
69  //MUST DELETE WHEN FINISHED: OR ELSE DATA WON'T BE SAVED!!!
70  dTreeInterface = DTreeInterface::Create_DTreeInterface("BCAL_LED", "BCAL_LED_diagnostic.root");
71 
72  //TTREE BRANCHES
73  DTreeBranchRegister locTreeBranchRegister;
74 
75  locTreeBranchRegister.Register_Single<ULong64_t>("EventNumber");//0
76  locTreeBranchRegister.Register_Single<Double_t>("bcal_peak");//1
77 
78  locTreeBranchRegister.Register_Single<Double_t>("up_peak");//2
79  locTreeBranchRegister.Register_Single<Double_t>("down_peak");//3
80 
81  locTreeBranchRegister.Register_Single<Double_t>("sector1_peak");//4
82  locTreeBranchRegister.Register_Single<Double_t>("sector2_peak");//5
83  locTreeBranchRegister.Register_Single<Double_t>("sector3_peak");//;6
84  locTreeBranchRegister.Register_Single<Double_t>("sector4_peak");//7
85 
86  locTreeBranchRegister.Register_Single<Double_t>("sector1_up_peak");//8
87  locTreeBranchRegister.Register_Single<Double_t>("sector2_up_peak");//9
88  locTreeBranchRegister.Register_Single<Double_t>("sector3_up_peak");//10
89  locTreeBranchRegister.Register_Single<Double_t>("sector4_up_peak");//11
90 
91  locTreeBranchRegister.Register_Single<Double_t>("sector1_down_peak");//12
92  locTreeBranchRegister.Register_Single<Double_t>("sector2_down_peak");//13
93  locTreeBranchRegister.Register_Single<Double_t>("sector3_down_peak");//14
94  locTreeBranchRegister.Register_Single<Double_t>("sector4_down_peak");//15
95 
96  locTreeBranchRegister.Register_Single<Double_t>("sector1_up_peak_lowup");//16
97  locTreeBranchRegister.Register_Single<Double_t>("sector2_up_peak_lowup");//17
98  locTreeBranchRegister.Register_Single<Double_t>("sector3_up_peak_lowup");//18
99  locTreeBranchRegister.Register_Single<Double_t>("sector4_up_peak_lowup");//19
100 
101  locTreeBranchRegister.Register_Single<Double_t>("sector1_down_peak_lowup");//20
102  locTreeBranchRegister.Register_Single<Double_t>("sector2_down_peak_lowup");//21
103  locTreeBranchRegister.Register_Single<Double_t>("sector3_down_peak_lowup");//22
104  locTreeBranchRegister.Register_Single<Double_t>("sector4_down_peak_lowup");//23
105 
106  locTreeBranchRegister.Register_Single<Double_t>("sector1_up_peak_lowdown");//24
107  locTreeBranchRegister.Register_Single<Double_t>("sector2_up_peak_lowdown");//25
108  locTreeBranchRegister.Register_Single<Double_t>("sector3_up_peak_lowdown");//26
109  locTreeBranchRegister.Register_Single<Double_t>("sector4_up_peak_lowdown");//27
110 
111  locTreeBranchRegister.Register_Single<Double_t>("sector1_down_peak_lowdown");//28
112  locTreeBranchRegister.Register_Single<Double_t>("sector2_down_peak_lowdown");//29
113  locTreeBranchRegister.Register_Single<Double_t>("sector3_down_peak_lowdown");//30
114  locTreeBranchRegister.Register_Single<Double_t>("sector4_down_peak_lowdown");//31
115 
116  locTreeBranchRegister.Register_Single<Double_t>("sector1_up_peak_highup");//32
117  locTreeBranchRegister.Register_Single<Double_t>("sector2_up_peak_highup");//33
118  locTreeBranchRegister.Register_Single<Double_t>("sector3_up_peak_highup");//34
119  locTreeBranchRegister.Register_Single<Double_t>("sector4_up_peak_highup");//35
120 
121  locTreeBranchRegister.Register_Single<Double_t>("sector1_down_peak_highup");//36
122  locTreeBranchRegister.Register_Single<Double_t>("sector2_down_peak_highup");//37
123  locTreeBranchRegister.Register_Single<Double_t>("sector3_down_peak_highup");//38
124  locTreeBranchRegister.Register_Single<Double_t>("sector4_down_peak_highup");//39
125 
126  locTreeBranchRegister.Register_Single<Double_t>("sector1_up_peak_highdown");//40
127  locTreeBranchRegister.Register_Single<Double_t>("sector2_up_peak_highdown");//41
128  locTreeBranchRegister.Register_Single<Double_t>("sector3_up_peak_highdown");//42
129  locTreeBranchRegister.Register_Single<Double_t>("sector4_up_peak_highdown");//43
130 
131  locTreeBranchRegister.Register_Single<Double_t>("sector1_down_peak_highdown");//44
132  locTreeBranchRegister.Register_Single<Double_t>("sector2_down_peak_highdown");//45
133  locTreeBranchRegister.Register_Single<Double_t>("sector3_down_peak_highdown");//46
134  locTreeBranchRegister.Register_Single<Double_t>("sector4_down_peak_highdown");//47
135 
136  //REGISTER BRANCHES
137  dTreeInterface->Create_Branches(locTreeBranchRegister);
138 
139  // lock all root operations
140  japp->RootWriteLock();
141 
142  bcal_vevent = new TProfile("bcal_vevent","Avg BCAL peak vs event;event num;peak",48,0.0,48.0);
143 
144  low_up_1 = new TProfile("low_bias_up_sector_1_peak_vchannel","Avg BCAL peak vs channel;channel ID;peak",1536,0,1536);
145  low_up_2 = new TProfile("low_bias_up_sector_2_peak_vchannel","Avg BCAL peak vs channel;channel ID;peak",1536,0,1536);
146  low_up_3 = new TProfile("low_bias_up_sector_3_peak_vchannel","Avg BCAL peak vs channel;channel ID;peak",1536,0,1536);
147  low_up_4 = new TProfile("low_bias_up_sector_4_peak_vchannel","Avg BCAL peak vs channel;channel ID;peak",1536,0,1536);
148 
149  low_down_1 = new TProfile("low_bias_down_sector_1_peak_vchannel","Avg BCAL peak vs channel;channel ID;peak",1536,0,1536);
150  low_down_2 = new TProfile("low_bias_down_sector_2_peak_vchannel","Avg BCAL peak vs channel;channel ID;peak",1536,0,1536);
151  low_down_3 = new TProfile("low_bias_down_sector_3_peak_vchannel","Avg BCAL peak vs channel;channel ID;peak",1536,0,1536);
152  low_down_4 = new TProfile("low_bias_down_sector_4_peak_vchannel","Avg BCAL peak vs channel;channel ID;peak",1536,0,1536);
153 
154  high_up_1 = new TProfile("high_bias_up_sector_1_peak_vchannel","Avg BCAL peak vs channel;channel ID;peak",1536,0,1536);
155  high_up_2 = new TProfile("high_bias_up_sector_2_peak_vchannel","Avg BCAL peak vs channel;channel ID;peak",1536,0,1536);
156  high_up_3 = new TProfile("high_bias_up_sector_3_peak_vchannel","Avg BCAL peak vs channel;channel ID;peak",1536,0,1536);
157  high_up_4 = new TProfile("high_bias_up_sector_4_peak_vchannel","Avg BCAL peak vs channel;channel ID;peak",1536,0,1536);
158 
159  high_down_1 = new TProfile("high_bias_down_sector_1_peak_vchannel","Avg BCAL peak vs channel;channel ID;peak",1536,0,1536);
160  high_down_2 = new TProfile("high_bias_down_sector_2_peak_vchannel","Avg BCAL peak vs channel;channel ID;peak",1536,0,1536);
161  high_down_3 = new TProfile("high_bias_down_sector_3_peak_vchannel","Avg BCAL peak vs channel;channel ID;peak",1536,0,1536);
162  high_down_4 = new TProfile("high_bias_down_sector_4_peak_vchannel","Avg BCAL peak vs channel;channel ID;peak",1536,0,1536);
163 
164 
165  h2_ledboth_Aall_vs_event = new TProfile("h2_ledboth_Aall_vs_event", "LED uboth - Aup and Adown vs event", 20000,0,200000000);
166  h2_ledboth_sector_vs_event = new TProfile("h2_ledboth_sector_vs_event", "LED both - sector vs event", 20000,0,200000000);
167 
168  h1_ledup_sector = new TH1I("h1_ledup_sector", "LED up - sector", 50,0,5);
169  h2_ledup_z_vs_cellid = new TH2I("h2_ledup_z_vs_cellid", "LED up - z vs Chan ID", 800,0,800,500,-100,400);
170  h1_ledup_sector_config = new TH1I("h1_ledup_sector_config", "LED up - sector -config", 5,0,5);
171  h1_ledup_z_all = new TH1I("h1_ledup_z_all", "LED up - z all channels", 500,-100,400);
172  h1_ledup_Tdiff_all = new TH1I("h1_ledup_Tdiff_all", "LED up - Tdiff all channels", 400,-50,50);
173  h1_ledup_Tup_all = new TH1I("h1_ledup_Tup_all", "LED up - Tup all channels", 410,0,410);
174  h1_ledup_Tdown_all = new TH1I("h1_ledup_Tdown_all", "LED up - Tdown all channels", 410,0,410);
175  h1_ledup_Aup_all = new TH1I("h1_ledup_Aup_all", "LED up - Aup all channels", 410,0,4100);
176  h1_ledup_Adown_all = new TH1I("h1_ledup_Adown_all", "LED up - Adown all channels", 410,0,4100);
177  h2_ledup_Aup_vs_z = new TH2I("h2_ledup_Aup_vs_z", "LED up - Aup vs z", 100,-100,400,410,0,4100);
178  h2_ledup_Adown_vs_z = new TH2I("h2_ledup_Adown_vs_z", "LED up - Adown vs z", 100,-100,400,410,0,4100);
179  h2_ledup_Aup_vs_event = new TProfile("h2_ledup_Aup_vs_event", "LED up - Aup vs event", 20000,0,200000000);
180  h2_ledup_Adown_vs_event = new TProfile("h2_ledup_Adown_vs_event", "LED up - Adown vs event", 20000,0,200000000);
181  h2_ledup_Aall_vs_event = new TProfile("h2_ledup_Aall_vs_event", "LED up - Aup and Adown vs event", 20000,0,200000000);
182  h2_ledup_sector_vs_event = new TProfile("h2_ledup_sector_vs_event", "LED up - sector vs event", 20000,0,200000000);
183 
184  h1_leddown_sector = new TH1I("h1_leddown_sector", "LED down - sector", 50,0,5);
185  h2_leddown_z_vs_cellid = new TH2I("h2_leddown_z_vs_cellid", "LED down - z vs Chan ID", 800,0,800,500,-100,400);
186  h1_leddown_sector_config = new TH1I("h1_leddown_sector_config", "LED down - sector -config", 5,0,5);
187  h1_leddown_z_all = new TH1I("h1_leddown_z_all", "LED down - z all channels", 500,-100,400);
188  h1_leddown_Tdiff_all = new TH1I("h1_leddown_Tdiff_all", "LED down - Tdiff all channels", 400,-50,50);
189  h1_leddown_Tup_all = new TH1I("h1_leddown_Tup_all", "LED down - Tup all channels", 410,0,410);
190  h1_leddown_Tdown_all = new TH1I("h1_leddown_Tdown_all", "LED down - Tdown all channels", 410,0,410);
191  h1_leddown_Aup_all = new TH1I("h1_leddown_Aup_all", "LED down - Aup all channels", 410,0,4100);
192  h1_leddown_Adown_all = new TH1I("h1_leddown_Adown_all", "LED down - Adown all channels", 410,0,4100);
193  h2_leddown_Aup_vs_z = new TH2I("h2_leddown_Aup_vs_z", "LED down - Aup vs z", 100,-100,400,410,0,4100);
194  h2_leddown_Adown_vs_z = new TH2I("h2_leddown_Adown_vs_z", "LED down - Adown vs z", 100,-100,400,410,0,4100);
195  h2_leddown_Aup_vs_event = new TProfile("h2_leddown_Aup_vs_event", "LED down - Aup vs event", 20000,0,200000000);
196  h2_leddown_Adown_vs_event = new TProfile("h2_leddown_Adown_vs_event", "LED down - Adown vs event", 20000,0,200000000);
197  h2_leddown_Aall_vs_event = new TProfile("h2_leddown_Aall_vs_event", "LED down - Aup and Adown vs event", 20000,0,200000000);
198  h2_leddown_sector_vs_event = new TProfile("h2_leddown_sector_vs_event", "LED down - sector vs event", 20000,0,200000000);
199 
200  // back to main dir
201  main->cd();
202 
203  // unlock
204  japp->RootUnLock();
205 
206 
207  return NOERROR;
208 }
209 
210 
211 //----------------------------------------------------------------------------------
212 
213 
214 jerror_t JEventProcessor_BCAL_LED::brun(JEventLoop *eventLoop, int32_t runnumber) {
215  // This is called whenever the run number changes
216 
217  adccount = 1700; //default threshold
218 
219  //In case different thresholds are required for different run periods.
220  if (runnumber < 20000 && runnumber > 10000)//Spring 2016
221  {
222  adccount = 1700;
223  }
224  else if (runnumber < 30000 && runnumber > 20000)//Fall 2016
225  {
226  adccount = 1700;
227  }
228  else if (runnumber < 40000 && runnumber > 30000)//Spring 2017
229  {
230  adccount = 1700;
231  }
232  else if (runnumber < 50000 && runnumber > 40000)//Spring 2018
233  {
234  adccount = 1700;
235  }
236  return NOERROR;
237 }
238 
239 
240 //----------------------------------------------------------------------------------
241 
242 
243 jerror_t JEventProcessor_BCAL_LED::evnt(JEventLoop *loop, uint64_t eventnumber) {
244  // This is called for every event. Use of common resources like writing
245  // to a file or filling a histogram should be mutex protected. Using
246  // loop-Get(...) to get reconstructed objects (and thereby activating the
247  // reconstruction algorithm) should be done outside of any mutex lock
248  // since multiple threads may call this method at the same time.
249 
250  int chcounter[1536] = { 0 } ;
251 
252 
253  vector<const DBCALDigiHit*> bcaldigihits;
254  vector<const DBCALHit*> dbcalhits;
255  vector<const DBCALPoint*> dbcalpoints;
256  vector <const DBCALHit*> hitVector;
257 
258 
259  bool LED_US=0, LED_DS=0;
260 
261  const DL1Trigger *trig = NULL;
262  try {
263  loop->GetSingle(trig);
264  } catch (...) {}
265  if (trig) {
266 
267  if (trig->trig_mask){
268  // GTP tigger
269  //GTPtrig++;
270  }
271  if (trig->fp_trig_mask){
272  // Front panel trigger
273  //FPtrig++;
274  }
275  if (trig->trig_mask && trig->fp_trig_mask){
276  // Both GTP and front panel trigger
277  //FPGTPtrig++;
278  }
279  if (trig->trig_mask & 0x1){
280  // Cosmic trigger fired
281  //trigCosmic++;
282  }
283  if (trig->fp_trig_mask & 0x100){
284  // Upstream LED trigger fired
285  //trigUS++;
286  LED_US=1;
287 
288  }
289  if (trig->fp_trig_mask & 0x200){
290  // Downstream LED trigger fired
291  //trigDS++;
292  LED_DS=1;
293 
294  }
295  } else {
296  //NOtrig++;
297  }
298  // Lock ROOT
299  japp->RootWriteLock();
300 
301  float ledup_sector = 0;
302  //int ledup_sector_int = 0;
303  float ledup_mean = 0;
304  int ledup_events = 0;
305  float leddown_sector = 0;
306  //int leddown_sector_int = 0;
307  float leddown_mean = 0;
308  int leddown_events = 0;
309 
310  if (LED_US || LED_DS) {
311 
312  dTreeFillData.Fill_Single<ULong64_t>("EventNumber", eventnumber);
313 
314  loop->Get(dbcalhits);
315  loop->Get(bcaldigihits);
316  loop->Get(dbcalpoints);
317 
318  // float apedsubtime[1536] = { 0. };
319  int apedsubpeak[1536] = { 0 };
320  int cellsector[1536] = { 0 };
321  int cellend[1536] = { 0 };
322 
323  for( unsigned int i=0; i<dbcalpoints.size(); i++) {
324 
325  int module = dbcalpoints[i]->module();
326  int layer = dbcalpoints[i]->layer();
327  int sector = dbcalpoints[i]->sector();
328  int cell_id = (module-1)*16 + (layer-1)*4 + sector-1;
329  float z = dbcalpoints[i]->z();
330  dbcalpoints[i]->Get(hitVector);
331  const DBCALHit *Hit1 = hitVector[0];
332  const DBCALHit *Hit2 = hitVector[1];
333  // float Aup = dbcalpoints[i]->E_US();
334  // float Adown = dbcalpoints[i]->E_DS();
335  float Aup = 0;
336  float Adown = 0;
337  float Tup = 0;
338  float Tdown = 0;
339  float Tdiff = 0;
340  if (Hit1->end == DBCALGeometry::kUpstream && Hit2->end == DBCALGeometry::kDownstream) {
341  Aup = Hit1->pulse_peak;
342  Adown = Hit2->pulse_peak;
343  Tup = Hit1->t_raw;
344  Tdown = Hit2->t_raw;
345  Tdiff = Tdown - Tup;
346  cellend[cell_id] = Hit2->end;
347  cellend[cell_id+768] = Hit1->end;
348  }
349  else if (Hit2->end == DBCALGeometry::kUpstream && Hit1->end == DBCALGeometry::kDownstream){
350  Aup = Hit2->pulse_peak;
351  Adown = Hit1->pulse_peak;
352  Tup = Hit2->t_raw;
353  Tdown = Hit1->t_raw;
354  Tdiff = Tdown - Tup;
355  cellend[cell_id] = Hit1->end;
356  cellend[cell_id+768] = Hit2->end;
357  }
358 
359  // fill histograms for all channels
360  if (LED_US) {
361  h1_ledup_sector->Fill(sector);
362  h1_ledup_z_all->Fill(z);;
363  h2_ledup_z_vs_cellid->Fill(cell_id,z);
364  h1_ledup_Tdiff_all->Fill(Tdiff);;
365  h1_ledup_Tup_all->Fill(Tup);;
366  h1_ledup_Tdown_all->Fill(Tdown);;
367  h1_ledup_Aup_all->Fill(Aup);;
368  h1_ledup_Adown_all->Fill(Adown);;
369  h2_ledup_Aup_vs_z->Fill(z,Aup);
370  h2_ledup_Adown_vs_z->Fill(z,Adown);
371  h2_ledup_Aup_vs_event->Fill(eventnumber,Aup);
372  h2_ledup_Adown_vs_event->Fill(eventnumber,Adown);
373  // cout << "US - eventnumber=" << eventnumber << " Aup=" << Aup << " Aup=" << Aup << " Adown=" << Adown << " Adown=" << Adown << endl;
374  }
375  else if (LED_DS) {
376  h1_leddown_sector->Fill(sector);
377  h1_leddown_z_all->Fill(z);
378  h2_leddown_z_vs_cellid->Fill(cell_id,z);
379  h1_leddown_Tdiff_all->Fill(Tdiff);;
380  h1_leddown_Tup_all->Fill(Tup);;
381  h1_leddown_Tdown_all->Fill(Tdown);;
382  h1_leddown_Aup_all->Fill(Aup);;
383  h1_leddown_Adown_all->Fill(Adown);;
384  h2_leddown_Aup_vs_z->Fill(z,Aup);
385  h2_leddown_Adown_vs_z->Fill(z,Adown);
386  h2_leddown_Aup_vs_event->Fill(eventnumber,Aup);
387  h2_leddown_Adown_vs_event->Fill(eventnumber,Adown);
388  // cout << "DS - eventnumber=" << eventnumber << " Aup=" << Aup << " Aup=" << Aup << " Adown=" << Adown << " Adown=" << Adown << endl;
389  }
390 
391  // make cuts on z for all hits
392  // if ( LED_DS && (z>280 && z<400)) {
393  // cut on Tdiff instead
394  if ( LED_DS && (Tdiff>-30 && Tdiff<-15)) {
395  apedsubpeak[cell_id] = Adown;
396  chcounter[cell_id]++;
397  apedsubpeak[cell_id+768] = Aup;
398  chcounter[cell_id+768]++;
399  h2_ledboth_Aall_vs_event->Fill(eventnumber,Aup);
400  h2_ledboth_Aall_vs_event->Fill(eventnumber,Adown);
401  h2_leddown_Aall_vs_event->Fill(eventnumber,Aup);
402  h2_leddown_Aall_vs_event->Fill(eventnumber,Adown);
403  h2_leddown_sector_vs_event->Fill(eventnumber,sector);
404  h2_ledboth_sector_vs_event->Fill(eventnumber,sector);
405 
406  // compute sums
407  leddown_sector += sector;
408  leddown_mean += Aup + Adown;
409  leddown_events++;
410 
411  cellsector[cell_id] = sector;
412  cellsector[cell_id+768] = sector;
413 
414  } // if condition on Tdiff
415 
416  // if (LED_US && (z>-60 && z<0)) {
417  if (LED_US && (Tdiff>15 && Tdiff<30)) {
418  apedsubpeak[cell_id] = Adown;
419  chcounter[cell_id]++;
420  apedsubpeak[cell_id+768] = Aup;
421  chcounter[cell_id+768]++;
422  h2_ledboth_Aall_vs_event->Fill(eventnumber,Aup);
423  h2_ledboth_Aall_vs_event->Fill(eventnumber,Adown);
424  h2_ledup_Aall_vs_event->Fill(eventnumber,Aup);
425  h2_ledup_Aall_vs_event->Fill(eventnumber,Adown);
426  h2_ledup_sector_vs_event->Fill(eventnumber,sector);
427  h2_ledboth_sector_vs_event->Fill(eventnumber,sector);
428 
429  // compute sums
430  ledup_sector += sector;
431  ledup_mean += Aup + Adown;
432  ledup_events++;
433 
434  cellsector[cell_id] = sector;
435  cellsector[cell_id+768] = sector;
436 
437  } // if condition on z
438 
439  }//loop over bcalhits
440 
441  for (int chid = 0; chid < 1536; chid++)
442  {
443  if (chcounter[chid] != 1) continue;
444  bcal_vevent->Fill(1,apedsubpeak[chid]);
445  if (cellend[chid] == DBCALGeometry::kUpstream)
446  {bcal_vevent->Fill(2,apedsubpeak[chid]);
447  if (chid%4 == 0) {bcal_vevent->Fill(8,apedsubpeak[chid]);}
448  else if (chid%4 == 1) {bcal_vevent->Fill(9,apedsubpeak[chid]);}
449  else if (chid%4 == 2) {bcal_vevent->Fill(10,apedsubpeak[chid]);}
450  else if (chid%4 == 3) {bcal_vevent->Fill(11,apedsubpeak[chid]);}
451  }
452 
453  else if (cellend[chid] == DBCALGeometry::kDownstream)
454  {bcal_vevent->Fill(3,apedsubpeak[chid]);
455  if (chid%4 == 0) {bcal_vevent->Fill(12,apedsubpeak[chid]);}
456  else if (chid%4 == 1) {bcal_vevent->Fill(13,apedsubpeak[chid]);}
457  else if (chid%4 == 2) {bcal_vevent->Fill(14,apedsubpeak[chid]);}
458  else if (chid%4 == 3) {bcal_vevent->Fill(15,apedsubpeak[chid]);}
459  }
460 
461  if (cellsector[chid] == 1) {bcal_vevent->Fill(4,apedsubpeak[chid]);}
462  else if (cellsector[chid] == 2) {bcal_vevent->Fill(5,apedsubpeak[chid]);}
463  else if (cellsector[chid] == 3) {bcal_vevent->Fill(6,apedsubpeak[chid]);}
464  else if (cellsector[chid] == 4) {bcal_vevent->Fill(7,apedsubpeak[chid]);}
465  }//loop over bcalhits
466 
467 
468  //Deduce LED pulsing configuration based on average pulse peak in BCAL, each side & each sector then fill correponding profile.
469  double sector1up = 0;
470  double sector2up = 0;
471  double sector3up = 0;
472  double sector4up = 0;
473 
474  double sector1down = 0;
475  double sector2down = 0;
476  double sector3down = 0;
477  double sector4down = 0;
478 
479  sector1up = bcal_vevent->GetBinContent(bcal_vevent->FindBin(8));
480  sector2up = bcal_vevent->GetBinContent(bcal_vevent->FindBin(9));
481  sector3up = bcal_vevent->GetBinContent(bcal_vevent->FindBin(10));
482  sector4up = bcal_vevent->GetBinContent(bcal_vevent->FindBin(11));
483 
484  sector1down = bcal_vevent->GetBinContent(bcal_vevent->FindBin(12));
485  sector2down = bcal_vevent->GetBinContent(bcal_vevent->FindBin(13));
486  sector3down = bcal_vevent->GetBinContent(bcal_vevent->FindBin(14));
487  sector4down = bcal_vevent->GetBinContent(bcal_vevent->FindBin(15));
488 
489  if (LED_US){
490 
491 
492  if (adccount > sector1down && sector1down > sector1up && sector1up > sector2up && sector1down > sector2down && sector1up > sector3up && sector1down > sector3down && sector1up > sector4up && sector1down > sector4down)
493  {//sector = 1;
494  for(int k=0 ;k < 1536;k++)
495  {if (chcounter[k] != 1) continue;
496  if (k%4 == 0 && apedsubpeak[k] > 0) {low_up_1->Fill(k, apedsubpeak[k]);
497  if (k < 768) {bcal_vevent->Fill(20,apedsubpeak[k]);
498  }
499  else if (k > 767) {bcal_vevent->Fill(16,apedsubpeak[k]);
500  }
501  }
502  }
503  //low_up_1_counter++;
504  }
505 
506  else if (adccount > sector2down && sector2down > sector2up && sector2up > sector1up && sector2down > sector1down && sector2up > sector3up && sector2down > sector3down && sector2up > sector4up && sector2down > sector4down)
507  {//sector = 2;
508  for(int k=0 ;k < 1536;k++)
509  {if (chcounter[k] != 1) continue;
510  if (k%4 == 1 && apedsubpeak[k] > 0) {low_up_2->Fill(k, apedsubpeak[k]);
511  if (k < 768) {bcal_vevent->Fill(21,apedsubpeak[k]);
512  }
513  else if (k > 767) {bcal_vevent->Fill(17,apedsubpeak[k]);
514  }
515  }
516  }
517  //low_up_2_counter++;
518  }
519  else if (adccount > sector3down && sector3down > sector3up && sector3up > sector1up && sector3down > sector1down && sector3up > sector2up && sector3down > sector2down && sector3up > sector4up && sector3down > sector4down)
520  {//sector = 3;
521  for(int k=0 ;k < 1536;k++)
522  {if (chcounter[k] != 1) continue;
523  if (k%4 == 2 && apedsubpeak[k] > 0) {low_up_3->Fill(k, apedsubpeak[k]);
524  if (k < 768) {bcal_vevent->Fill(22,apedsubpeak[k]);
525  }
526  else if (k > 767) {bcal_vevent->Fill(18,apedsubpeak[k]);
527  }
528  }
529  }
530  //low_up_3_counter++;
531  }
532  else if (adccount > sector4down && sector4down > sector4up && sector4up > sector1up && sector4down > sector1down && sector4up > sector2up && sector4down > sector2down && sector4up > sector3up && sector4down > sector3down)
533  {//sector = 4;
534  for(int k=0 ;k < 1536;k++)
535  {if (chcounter[k] != 1) continue;
536  if (k%4 == 3 && apedsubpeak[k] > 0) {low_up_4->Fill(k, apedsubpeak[k]);
537  if (k < 768) {bcal_vevent->Fill(23,apedsubpeak[k]);
538  }
539  else if (k > 767) {bcal_vevent->Fill(19,apedsubpeak[k]);
540  }
541  }
542  }
543  //low_up_4_counter++;
544  }
545 
546 
547  else if (sector1down > adccount && sector1down > sector1up && sector1up > sector2up && sector1down > sector2down && sector1up > sector3up && sector1down > sector3down && sector1up > sector4up && sector1down > sector4down)
548  {//sector = 1;
549  for(int k=0 ;k < 1536;k++)
550  {if (chcounter[k] != 1) continue;
551  if (k%4 == 0 && apedsubpeak[k] > 0) {high_up_1->Fill(k, apedsubpeak[k]);
552  if (k < 768) {bcal_vevent->Fill(36,apedsubpeak[k]);
553  }
554  else if (k > 767) {bcal_vevent->Fill(32,apedsubpeak[k]);
555  }
556  }
557  }
558  //high_up_1_counter++;
559  }
560  else if (sector2down > adccount && sector2down > sector2up && sector2up > sector1up && sector2down > sector1down && sector2up > sector3up && sector2down > sector3down && sector2up > sector4up && sector2down > sector4down)
561  {//sector = 2;
562  for(int k=0 ;k < 1536;k++)
563  {if (chcounter[k] != 1) continue;
564  if (k%4 == 1 && apedsubpeak[k] > 0) {high_up_2->Fill(k, apedsubpeak[k]);
565  if (k < 768) {bcal_vevent->Fill(37,apedsubpeak[k]);
566  }
567  else if (k > 767) {bcal_vevent->Fill(33,apedsubpeak[k]);
568  }
569  }
570  }
571  //high_up_2_counter++;
572  }
573  else if (sector3down > adccount && sector3down > sector3up && sector3up > sector1up && sector3down > sector1down && sector3up > sector2up && sector3down > sector2down && sector3up > sector4up && sector3down > sector4down)
574  {//sector = 3;
575  for(int k=0 ;k < 1536;k++)
576  {if (chcounter[k] != 1) continue;
577  if (k%4 == 2 && apedsubpeak[k] > 0) {high_up_3->Fill(k, apedsubpeak[k]);
578  if (k < 768) {bcal_vevent->Fill(38,apedsubpeak[k]);
579  }
580  else if (k > 767) {bcal_vevent->Fill(34,apedsubpeak[k]);
581  }
582  }
583  }
584  //high_up_3_counter++;
585  }
586  else if (sector4down > adccount && sector4down > sector4up && sector4up > sector1up && sector4down > sector1down && sector4up > sector2up && sector4down > sector2down && sector4up > sector3up && sector4down > sector3down)
587  {//sector = 4;
588  for(int k=0 ;k < 1536;k++)
589  {if (chcounter[k] != 1) continue;
590  if (k%4 == 3 && apedsubpeak[k] > 0) {high_up_4->Fill(k, apedsubpeak[k]);
591  if (k < 768) {bcal_vevent->Fill(39,apedsubpeak[k]);
592  }
593  else if (k > 767) {bcal_vevent->Fill(35,apedsubpeak[k]);
594  }
595  }
596  }
597  //high_up_4_counter++;
598  }
599  }//if LED_US
600 
601  if (LED_DS){
602  if (adccount > sector1up && sector1up > sector1down && sector1up > sector2up && sector1down > sector2down && sector1up > sector3up && sector1down > sector3down && sector1up > sector4up && sector1down > sector4down)
603  {
604  //sector = 1;
605  for(int k=0 ;k < 1536;k++)
606  {if (chcounter[k] != 1) continue;
607  if (k%4 == 0 && apedsubpeak[k] > 0) {low_down_1->Fill(k, apedsubpeak[k]);
608  if (k < 768) {bcal_vevent->Fill(28,apedsubpeak[k]);
609  }
610  else if (k > 767) {bcal_vevent->Fill(24,apedsubpeak[k]);
611  }
612  }
613  }
614  //low_down_1_counter++;
615  }
616  else if (adccount > sector2up && sector2up > sector2down && sector2up > sector1up && sector2down > sector1down && sector2up > sector3up && sector2down > sector3down && sector2up > sector4up && sector2down > sector4down)
617  {//sector = 2;
618  for(int k=0 ;k < 1536;k++)
619  {if (chcounter[k] != 1) continue;
620  if (k%4 == 1 && apedsubpeak[k] > 0) {low_down_2->Fill(k, apedsubpeak[k]);
621  if (k < 768) {bcal_vevent->Fill(29,apedsubpeak[k]);
622  }
623  else if (k > 767) {bcal_vevent->Fill(25,apedsubpeak[k]);
624  }
625  }
626  }
627  //low_down_2_counter++;
628  }
629  else if (adccount > sector3up && sector3up > sector3down && sector3up > sector1up && sector3down > sector1down && sector3up > sector2up && sector3down > sector2down && sector3up > sector4up && sector3down > sector4down)
630  {//sector = 3;
631  for(int k=0 ;k < 1536;k++)
632  {if (chcounter[k] != 1) continue;
633  if (k%4 == 2 && apedsubpeak[k] > 0) {low_down_3->Fill(k, apedsubpeak[k]);
634  if (k < 768) {bcal_vevent->Fill(30,apedsubpeak[k]);
635  }
636  else if (k > 767) {bcal_vevent->Fill(26,apedsubpeak[k]);
637  }
638  }
639  }
640  //low_down_3_counter++;
641  }
642  else if (adccount > sector4up && sector4up > sector4down && sector4up > sector1up && sector4down > sector1down && sector4up > sector2up && sector4down > sector2down && sector4up > sector3up && sector4down > sector3down)
643  {//sector = 4;
644  for(int k=0 ;k < 1536;k++)
645  {if (chcounter[k] != 1) continue;
646  if (k%4 == 3 && apedsubpeak[k] > 0) {low_down_4->Fill(k, apedsubpeak[k]);
647  if (k < 768) {bcal_vevent->Fill(31,apedsubpeak[k]);
648  }
649  else if (k > 767) {bcal_vevent->Fill(27,apedsubpeak[k]);
650  }
651  }
652  }
653  //low_down_4_counter++;
654  }
655  else if (sector1up > adccount && sector1up > sector1down && sector1up > sector2up && sector1down > sector2down && sector1up > sector3up && sector1down > sector3down && sector1up > sector4up && sector1down > sector4down)
656  {//sector = 1;
657  for(int k=0 ;k < 1536;k++)
658  {if (chcounter[k] != 1) continue;
659  if (k%4 == 0 && apedsubpeak[k] > 0) {high_down_1->Fill(k, apedsubpeak[k]);
660  if (k < 768) {bcal_vevent->Fill(44,apedsubpeak[k]);
661  }
662  else if (k > 767) {bcal_vevent->Fill(40,apedsubpeak[k]);
663  }
664  }
665  }
666  //high_down_1_counter++;
667  }
668  else if (sector2up > adccount && sector2up > sector2down && sector2up > sector1up && sector2down > sector1down && sector2up > sector3up && sector2down > sector3down && sector2up > sector4up && sector2down > sector4down)
669  {//sector = 2;
670  for(int k=0 ;k < 1536;k++)
671  {if (chcounter[k] != 1) continue;
672  if (k%4 == 1 && apedsubpeak[k] > 0) {high_down_2->Fill(k, apedsubpeak[k]);
673  if (k < 768) {bcal_vevent->Fill(45,apedsubpeak[k]);
674  }
675  else if (k > 767) {bcal_vevent->Fill(41,apedsubpeak[k]);
676  }
677  }
678  }
679  //high_down_2_counter++;
680  }
681  else if (sector3up > adccount && sector3up > sector3down && sector3up > sector1up && sector3down > sector1down && sector3up > sector2up && sector3down > sector2down && sector3up > sector4up && sector3down > sector4down)
682  {//sector = 3;
683  for(int k=0 ;k < 1536;k++)
684  {if (chcounter[k] != 1) continue;
685  if (k%4 == 2 && apedsubpeak[k] > 0) {high_down_3->Fill(k, apedsubpeak[k]);
686  if (k < 768) {bcal_vevent->Fill(46,apedsubpeak[k]);
687  }
688  else if (k > 767) {bcal_vevent->Fill(42,apedsubpeak[k]);
689  }
690  }
691  }
692  //high_down_3_counter++;
693  }
694  else if (sector4up > adccount && sector4up > sector4down && sector4up > sector1up && sector4down > sector1down && sector4up > sector2up && sector4down > sector2down && sector4up > sector3up && sector4down > sector3down)
695  {//sector = 4;
696  for(int k=0 ;k < 1536;k++)
697  {if (chcounter[k] != 1) continue;
698  if (k%4 == 3 && apedsubpeak[k] > 0) {high_down_4->Fill(k, apedsubpeak[k]);
699  if (k < 768) {bcal_vevent->Fill(47,apedsubpeak[k]);
700  }
701  else if (k > 767) {bcal_vevent->Fill(43,apedsubpeak[k]);
702  }
703  }
704  }
705  //high_down_4_counter++;
706  }
707 
708  }//if LED_DS
709 
710  //Fill diagnostic tree branches
711  dTreeFillData.Fill_Single<Double_t>("bcal_peak", bcal_vevent->GetBinContent(bcal_vevent->FindBin(1)));//1
712 
713  dTreeFillData.Fill_Single<Double_t>("up_peak", bcal_vevent->GetBinContent(bcal_vevent->FindBin(2)));//2
714  dTreeFillData.Fill_Single<Double_t>("down_peak", bcal_vevent->GetBinContent(bcal_vevent->FindBin(3)));//3
715 
716  dTreeFillData.Fill_Single<Double_t>("sector1_peak", bcal_vevent->GetBinContent(bcal_vevent->FindBin(4)));//4
717  dTreeFillData.Fill_Single<Double_t>("sector2_peak", bcal_vevent->GetBinContent(bcal_vevent->FindBin(5)));//5
718  dTreeFillData.Fill_Single<Double_t>("sector3_peak", bcal_vevent->GetBinContent(bcal_vevent->FindBin(6)));//;6
719  dTreeFillData.Fill_Single<Double_t>("sector4_peak", bcal_vevent->GetBinContent(bcal_vevent->FindBin(7)));//7
720 
721  dTreeFillData.Fill_Single<Double_t>("sector1_up_peak", bcal_vevent->GetBinContent(bcal_vevent->FindBin(8)));//8
722  dTreeFillData.Fill_Single<Double_t>("sector2_up_peak", bcal_vevent->GetBinContent(bcal_vevent->FindBin(9)));//9
723  dTreeFillData.Fill_Single<Double_t>("sector3_up_peak", bcal_vevent->GetBinContent(bcal_vevent->FindBin(10)));//10
724  dTreeFillData.Fill_Single<Double_t>("sector4_up_peak", bcal_vevent->GetBinContent(bcal_vevent->FindBin(11)));//11
725 
726  dTreeFillData.Fill_Single<Double_t>("sector1_down_peak", bcal_vevent->GetBinContent(bcal_vevent->FindBin(12)));//12
727  dTreeFillData.Fill_Single<Double_t>("sector2_down_peak", bcal_vevent->GetBinContent(bcal_vevent->FindBin(13)));//13
728  dTreeFillData.Fill_Single<Double_t>("sector3_down_peak", bcal_vevent->GetBinContent(bcal_vevent->FindBin(14)));//14
729  dTreeFillData.Fill_Single<Double_t>("sector4_down_peak", bcal_vevent->GetBinContent(bcal_vevent->FindBin(15)));//15
730 
731  dTreeFillData.Fill_Single<Double_t>("sector1_up_peak_lowup", bcal_vevent->GetBinContent(bcal_vevent->FindBin(16)));//16
732  dTreeFillData.Fill_Single<Double_t>("sector2_up_peak_lowup", bcal_vevent->GetBinContent(bcal_vevent->FindBin(17)));//17
733  dTreeFillData.Fill_Single<Double_t>("sector3_up_peak_lowup", bcal_vevent->GetBinContent(bcal_vevent->FindBin(18)));//18
734  dTreeFillData.Fill_Single<Double_t>("sector4_up_peak_lowup", bcal_vevent->GetBinContent(bcal_vevent->FindBin(19)));//19
735 
736  dTreeFillData.Fill_Single<Double_t>("sector1_down_peak_lowup", bcal_vevent->GetBinContent(bcal_vevent->FindBin(20)));//20
737  dTreeFillData.Fill_Single<Double_t>("sector2_down_peak_lowup", bcal_vevent->GetBinContent(bcal_vevent->FindBin(21)));//21
738  dTreeFillData.Fill_Single<Double_t>("sector3_down_peak_lowup", bcal_vevent->GetBinContent(bcal_vevent->FindBin(22)));//22
739  dTreeFillData.Fill_Single<Double_t>("sector4_down_peak_lowup", bcal_vevent->GetBinContent(bcal_vevent->FindBin(23)));//23
740 
741  dTreeFillData.Fill_Single<Double_t>("sector1_up_peak_lowdown", bcal_vevent->GetBinContent(bcal_vevent->FindBin(24)));//24
742  dTreeFillData.Fill_Single<Double_t>("sector2_up_peak_lowdown", bcal_vevent->GetBinContent(bcal_vevent->FindBin(25)));//25
743  dTreeFillData.Fill_Single<Double_t>("sector3_up_peak_lowdown", bcal_vevent->GetBinContent(bcal_vevent->FindBin(26)));//26
744  dTreeFillData.Fill_Single<Double_t>("sector4_up_peak_lowdown", bcal_vevent->GetBinContent(bcal_vevent->FindBin(27)));//27
745 
746  dTreeFillData.Fill_Single<Double_t>("sector1_down_peak_lowdown", bcal_vevent->GetBinContent(bcal_vevent->FindBin(28)));//28
747  dTreeFillData.Fill_Single<Double_t>("sector2_down_peak_lowdown", bcal_vevent->GetBinContent(bcal_vevent->FindBin(29)));//29
748  dTreeFillData.Fill_Single<Double_t>("sector3_down_peak_lowdown", bcal_vevent->GetBinContent(bcal_vevent->FindBin(30)));//30
749  dTreeFillData.Fill_Single<Double_t>("sector4_down_peak_lowdown", bcal_vevent->GetBinContent(bcal_vevent->FindBin(31)));//31
750 
751  dTreeFillData.Fill_Single<Double_t>("sector1_up_peak_highup", bcal_vevent->GetBinContent(bcal_vevent->FindBin(32)));//32
752  dTreeFillData.Fill_Single<Double_t>("sector2_up_peak_highup", bcal_vevent->GetBinContent(bcal_vevent->FindBin(33)));//33
753  dTreeFillData.Fill_Single<Double_t>("sector3_up_peak_highup", bcal_vevent->GetBinContent(bcal_vevent->FindBin(34)));//34
754  dTreeFillData.Fill_Single<Double_t>("sector4_up_peak_highup", bcal_vevent->GetBinContent(bcal_vevent->FindBin(35)));//35
755 
756  dTreeFillData.Fill_Single<Double_t>("sector1_down_peak_highup", bcal_vevent->GetBinContent(bcal_vevent->FindBin(36)));//36
757  dTreeFillData.Fill_Single<Double_t>("sector2_down_peak_highup", bcal_vevent->GetBinContent(bcal_vevent->FindBin(37)));//37
758  dTreeFillData.Fill_Single<Double_t>("sector3_down_peak_highup", bcal_vevent->GetBinContent(bcal_vevent->FindBin(38)));//38
759  dTreeFillData.Fill_Single<Double_t>("sector4_down_peak_highup", bcal_vevent->GetBinContent(bcal_vevent->FindBin(39)));//39
760 
761  dTreeFillData.Fill_Single<Double_t>("sector1_up_peak_highdown", bcal_vevent->GetBinContent(bcal_vevent->FindBin(40)));//40
762  dTreeFillData.Fill_Single<Double_t>("sector2_up_peak_highdown", bcal_vevent->GetBinContent(bcal_vevent->FindBin(41)));//41
763  dTreeFillData.Fill_Single<Double_t>("sector3_up_peak_highdown", bcal_vevent->GetBinContent(bcal_vevent->FindBin(42)));//42
764  dTreeFillData.Fill_Single<Double_t>("sector4_up_peak_highdown", bcal_vevent->GetBinContent(bcal_vevent->FindBin(43)));//43
765 
766  dTreeFillData.Fill_Single<Double_t>("sector1_down_peak_highdown", bcal_vevent->GetBinContent(bcal_vevent->FindBin(44)));//44
767  dTreeFillData.Fill_Single<Double_t>("sector2_down_peak_highdown", bcal_vevent->GetBinContent(bcal_vevent->FindBin(45)));//45
768  dTreeFillData.Fill_Single<Double_t>("sector3_down_peak_highdown", bcal_vevent->GetBinContent(bcal_vevent->FindBin(46)));//46
769  dTreeFillData.Fill_Single<Double_t>("sector4_down_peak_highdown", bcal_vevent->GetBinContent(bcal_vevent->FindBin(47)));//47
770 
772 
773  bcal_vevent->Reset();
774 
775  }//if LEDUP || LEDDOWN
776  // Unlock ROOT
777  japp->RootUnLock();
778 
779 
780  return NOERROR;
781 }
782 
783 
784 //----------------------------------------------------------------------------------
785 
786 
788  // This is called whenever the run number changes, before it is
789  // changed to give you a chance to clean up before processing
790  // events from the next run number.
791 
792 
793 /* printf("\nTrigger statistics");
794  printf("------------------------\n");
795  printf("%20s: %10i\n","no triggers",NOtrig);
796  printf("%20s: %10i\n","Front Panel",FPtrig);
797  printf("%20s: %10i\n","GTP",GTPtrig);
798  printf("%20s: %10i\n","FP && GTP",FPGTPtrig);
799  printf("%20s: %10i\n","US LED",trigUS);
800  printf("%20s: %10i\n","DS LED",trigDS);
801  printf("%20s: %10i\n","BCAL",trigCosmic);
802  ledcounter = low_down_1_counter + low_down_2_counter + low_down_3_counter + low_down_4_counter + low_up_1_counter + low_up_2_counter + low_up_3_counter + low_up_4_counter + high_down_1_counter + high_down_2_counter + high_down_3_counter + high_down_4_counter + high_up_1_counter + high_up_2_counter + high_up_3_counter + high_up_4_counter + unidentified;
803  printf("%20s: %10i\n","low_down_1_counter",low_down_1_counter);
804  printf("%20s: %10i\n","low_down_2_counter",low_down_2_counter);
805  printf("%20s: %10i\n","low_down_3_counter",low_down_3_counter);
806  printf("%20s: %10i\n","low_down_4_counter",low_down_4_counter);
807 
808  printf("%20s: %10i\n","low_up_1_counter",low_up_1_counter);
809  printf("%20s: %10i\n","low_up_2_counter",low_up_2_counter);
810  printf("%20s: %10i\n","low_up_3_counter",low_up_3_counter);
811  printf("%20s: %10i\n","low_up_4_counter",low_up_4_counter);
812 
813  printf("%20s: %10i\n","high_down_1_counter",high_down_1_counter);
814  printf("%20s: %10i\n","high_down_2_counter",high_down_2_counter);
815  printf("%20s: %10i\n","high_down_3_counter",high_down_3_counter);
816  printf("%20s: %10i\n","high_down_4_counter",high_down_4_counter);
817 
818  printf("%20s: %10i\n","high_up_1_counter",high_up_1_counter);
819  printf("%20s: %10i\n","high_up_2_counter",high_up_2_counter);
820  printf("%20s: %10i\n","high_up_3_counter",high_up_3_counter);
821  printf("%20s: %10i\n","high_up_4_counter",high_up_4_counter);
822 
823  printf("%20s: %10i\n","Unidentified",unidentified);*/
824 
825  return NOERROR;
826 }
827 
828 
829 //----------------------------------------------------------------------------------
830 
831 
833  // Called before program exit after event processing is finished.
834 
835 // //Write mean pulse peak to output file
836  ofstream foutlowdown ; foutlowdown.open("LED_lowbias_downstream.txt");
837  ofstream foutlowup; foutlowup.open("LED_lowbias_upstream.txt");
838  ofstream fouthighdown; fouthighdown.open("LED_highbias_downstream.txt");
839  ofstream fouthighup; fouthighup.open("LED_highbias_upstream.txt");
840 
841  for(int k=0 ;k < 768;k += 4)
842  {
843  double lowdownmean1down = low_down_1->GetBinContent(low_down_1->FindBin(k));
844  double lowdownmean1up = low_down_1->GetBinContent(low_down_1->FindBin(768+k));
845  double lowdownmean2down = low_down_2->GetBinContent(low_down_2->FindBin(k+1));
846  double lowdownmean2up = low_down_2->GetBinContent(low_down_2->FindBin(769+k));
847  double lowdownmean3down = low_down_3->GetBinContent(low_down_3->FindBin(k+2));
848  double lowdownmean3up = low_down_3->GetBinContent(low_down_3->FindBin(770+k));
849  double lowdownmean4down = low_down_4->GetBinContent(low_down_4->FindBin(k+3));
850  double lowdownmean4up = low_down_4->GetBinContent(low_down_4->FindBin(771+k));
851 
852  double lowupmean1down = low_up_1->GetBinContent(low_up_1->FindBin(k));
853  double lowupmean1up = low_up_1->GetBinContent(low_up_1->FindBin(768+k));
854  double lowupmean2down = low_up_2->GetBinContent(low_up_2->FindBin(k+1));
855  double lowupmean2up = low_up_2->GetBinContent(low_up_2->FindBin(769+k));
856  double lowupmean3down = low_up_3->GetBinContent(low_up_3->FindBin(k+2));
857  double lowupmean3up = low_up_3->GetBinContent(low_up_3->FindBin(770+k));
858  double lowupmean4down = low_up_4->GetBinContent(low_up_4->FindBin(k+3));
859  double lowupmean4up = low_up_4->GetBinContent(low_up_4->FindBin(771+k));
860 
861  double highdownmean1down = high_down_1->GetBinContent(high_down_1->FindBin(k));
862  double highdownmean1up = high_down_1->GetBinContent(high_down_1->FindBin(768+k));
863  double highdownmean2down = high_down_2->GetBinContent(high_down_2->FindBin(k+1));
864  double highdownmean2up = high_down_2->GetBinContent(high_down_2->FindBin(769+k));
865  double highdownmean3down = high_down_3->GetBinContent(high_down_3->FindBin(k+2));
866  double highdownmean3up = high_down_3->GetBinContent(high_down_3->FindBin(770+k));
867  double highdownmean4down = high_down_4->GetBinContent(high_down_4->FindBin(k+3));
868  double highdownmean4up = high_down_4->GetBinContent(high_down_4->FindBin(771+k));
869 
870  double highupmean1down = high_up_1->GetBinContent(high_up_1->FindBin(k));
871  double highupmean1up = high_up_1->GetBinContent(high_up_1->FindBin(768+k));
872  double highupmean2down = high_up_2->GetBinContent(high_up_2->FindBin(k+1));
873  double highupmean2up = high_up_2->GetBinContent(high_up_2->FindBin(769+k));
874  double highupmean3down = high_up_3->GetBinContent(high_up_3->FindBin(k+2));
875  double highupmean3up = high_up_3->GetBinContent(high_up_3->FindBin(770+k));
876  double highupmean4down = high_up_4->GetBinContent(high_up_4->FindBin(k+3));
877  double highupmean4up = high_up_4->GetBinContent(high_up_4->FindBin(771+k));
878 
879  //TString sep = " ";
880  foutlowdown << lowdownmean1down << endl << lowdownmean1up << endl << lowdownmean2down << endl << lowdownmean2up << endl << lowdownmean3down << endl << lowdownmean3up << endl << lowdownmean4down << endl << lowdownmean4up << endl;
881  foutlowup << lowupmean1down << endl << lowupmean1up << endl << lowupmean2down << endl << lowupmean2up << endl << lowupmean3down << endl << lowupmean3up << endl << lowupmean4down << endl << lowupmean4up << endl;
882  fouthighdown << highdownmean1down << endl << highdownmean1up << endl << highdownmean2down << endl << highdownmean2up << endl << highdownmean3down << endl << highdownmean3up << endl << highdownmean4down << endl << highdownmean4up << endl;
883  fouthighup << highupmean1down << endl << highupmean1up << endl << highupmean2down << endl << highupmean2up << endl << highupmean3down << endl << highupmean3up << endl << highupmean4down << endl << highupmean4up << endl;
884 
885  }
886 
887  foutlowdown.close();
888  foutlowup.close();
889  fouthighdown.close();
890  fouthighup.close();
891 
892  delete dTreeInterface; //saves trees to file, closes file
893  delete bcal_vevent;
894 
895 return NOERROR;
896 }
897 
898 
899 //----------------------------------------------------------------------------------
900 //----------------------------------------------------------------------------------
jerror_t fini(void)
Called after last event of last event source has been processed.
jerror_t brun(jana::JEventLoop *eventLoop, int32_t runnumber)
Called everytime a new run number is detected.
Int_t layer
uint32_t trig_mask
Definition: DL1Trigger.h:18
uint32_t fp_trig_mask
Definition: DL1Trigger.h:19
void Register_Single(string locBranchName)
bool Create_Branches(const DTreeBranchRegister &locTreeBranchRegister)
jerror_t evnt(jana::JEventLoop *eventLoop, uint64_t eventnumber)
Called every event.
trig[33-1]
JApplication * japp
DBCALGeometry::End end
Definition: DBCALHit.h:28
jerror_t erun(void)
Called everytime run number changes, provided brun has been called.
static thread_local DTreeFillData dTreeFillData
void Fill(DTreeFillData &locTreeFillData)
static DTreeInterface * Create_DTreeInterface(string locTreeName, string locFileName)
InitPlugin_t InitPlugin
jerror_t init(void)
Called once at program start.
int pulse_peak
Definition: DBCALHit.h:29
int main(int argc, char *argv[])
Definition: gendoc.cc:6
float t_raw
Uncalibrated time in ns.
Definition: DBCALHit.h:32
void Fill_Single(string locBranchName, const DType &locData)