BeamlineSimInput_module.cc
Go to the documentation of this file.
1  ////////////////////////////////////////////////////////////////////////////
2 /// \file BeamlineSimInput_module.cc
3 /// \module producer
4 /// \brief Module to add NOvASoft-formatted simulated beamline
5 /// information to the corresponding detector simulation.
6 /// \author Mike Wallbank (University of Cincinnati) <wallbank@fnal.gov>
7 /// Abhilash Y D (Syracuse University) <ayallapp@syr.edu>
8 /// \date January 2019
9 ////////////////////////////////////////////////////////////////////////////
10 
11 ////////////////////////////////////////////////////////////////////////////////////
12 /// What this module's all about.
13 ///
14 /// Beamline simulation:
15 /// Junting's beamline generator are used as input to the NOvA GEANT4 simulation,
16 /// which propagate the particles from the end of the beamline through the
17 /// detector.
18 /// The information stored in the beamline simulation files contain properties of
19 /// the particles as they traverse the beamline. This information isn't included
20 /// in the NOvASoft simulation files.
21 ///
22 /// BeamlineSimInput:
23 /// Designed to reconcile the information from the beamline simulation with the
24 /// detector simulation.
25 /// This module runs over the detector simulation files, which should contain
26 /// art::Events corresponding to the input particles from the end of the beamline.
27 /// It also takes the beamline output as input, reformats the data into the
28 /// NOvASoft data products, and adds them to the event.
29 ////////////////////////////////////////////////////////////////////////////////////
30 
31 // framework
36 #include "fhiclcpp/ParameterSet.h"
44 
45 // nova
46 #include "RawData/RawBeamline.h"
51 #include "BeamlineRecoBase/ToF.h"
53 #include "Utilities/AssociationUtil.h"
55 
56 // stl
57 #include <iostream>
58 
59 // root
60 #include "TTree.h"
61 #include "TFile.h"
62 #include "TMath.h"
63 #include <TTreeReader.h>
64 #include <TTreeReaderValue.h>
65 #include <TTreeReaderArray.h>
66 #include <fstream>
67 #include <vector>
68 #include <utility>
69 
70 // -----------------------------------------------------------------------
71 namespace beamlinesim {
72 
74 
75  public:
76 
78 
79  void reconfigure(const fhicl::ParameterSet& pset);
80  void produce(art::Event& evt);
81  //void beginRun(art::Run &r);
82  void beginJob();
83  //void beginSubRun(const art::SubRun& subrun);
84  float_t bltof(float_t tof_us, float_t tof_ds, int presenttofus, int presenttofds) ;
85  TTreeReader reader;
86  TTree *tree;
88  int event_no;
91 
92  private:
93  // configuration
95 
96  // beamline file
99 
100  // not all beamline particles make an art::Event
101  // keep a track
103 
104  // particle properties
105 
106  //std::vector<int> veventid;
107  //std::vector<float> vx;
108  //int feventid;
109 
110  //std::vector<int> visnoise;
111  std::vector<unsigned int> vPresentWire_Chamber1;
112  std::vector<unsigned int> vPresentWire_Chamber2;
113  std::vector<unsigned int> vPresentWire_Chamber3;
114  std::vector<unsigned int> vPresentWire_Chamber4;
115  std::vector<unsigned int> vPresenttofus;
116  std::vector<unsigned int> vPresenttofds;
117  std::vector<unsigned int> vPresentcherenkov;
118  std::vector<float_t> vXWire_Chamber1;
119  std::vector<float_t> vYWire_Chamber1;
120  std::vector<float_t> vZWire_Chamber1;
121  std::vector<float_t> vTWire_Chamber1;
122  std::vector<float_t> vXWire_Chamber2;
123  std::vector<float_t> vYWire_Chamber2;
124  std::vector<float_t> vZWire_Chamber2;
125  std::vector<float_t> vTWire_Chamber2;
126  std::vector<float_t> vXWire_Chamber3;
127  std::vector<float_t> vYWire_Chamber3;
128  std::vector<float_t> vZWire_Chamber3;
129  std::vector<float_t> vTWire_Chamber3;
130  std::vector<float_t> vXWire_Chamber4;
131  std::vector<float_t> vYWire_Chamber4;
132  std::vector<float_t> vZWire_Chamber4;
133  std::vector<float_t> vTWire_Chamber4;
134 // std::vector<float_t> vPxWire_Chamber1; //momentums
135 // std::vector<float_t> vPyWire_Chamber1;
136 // std::vector<float_t> vPzWire_Chamber1;
137 // std::vector<float_t> vPxWire_Chamber2;
138 // std::vector<float_t> vPyWire_Chamber2;
139 // std::vector<float_t> vPzWire_Chamber2;
140 // std::vector<float_t> vPxWire_Chamber3;
141 // std::vector<float_t> vPyWire_Chamber3;
142 // std::vector<float_t> vPzWire_Chamber3;
143 // std::vector<float_t> vPxWire_Chamber4;
144 // std::vector<float_t> vPyWire_Chamber4;
145 // std::vector<float_t> vPzWire_Chamber4;
146  std::vector<float_t> vttof_us;//tofs
147  std::vector<float_t> vttof_ds;
148  std::vector<float_t> vtcherenkov;
149  std::vector<float_t> vxnova;
150  std::vector<float_t> vynova;
151  std::vector<float_t> vznova;
152  std::vector<float_t> vtnova;
153  //std::vector<int> vspill_number;
154 
155 
156  //int fisnoise;
180 // float_t fPxWire_Chamber1; //momentums
181 // float_t fPyWire_Chamber1;
182 // float_t fPzWire_Chamber1;
183 // float_t fPxWire_Chamber2;
184 // float_t fPyWire_Chamber2;
185 // float_t fPzWire_Chamber2;
186 // float_t fPxWire_Chamber3;
187 // float_t fPyWire_Chamber3;
188 // float_t fPzWire_Chamber3;
189 // float_t fPxWire_Chamber4;
190 // float_t fPyWire_Chamber4;
191 // float_t fPzWire_Chamber4;
192  float_t fttof_us;//tofs
193  float_t fttof_ds;
194  float_t ftcherenkov;
195 // float_t fxnova;
196 // float_t fynova;
197 // float_t fznova;
198 // float_t ftnova;
199  //int fspill_number;
200  };
201 }
202 
203 // -----------------------------------------------------------------------
205 {
206  //beamlinesim::BeamlineSimInput::fBeamlineSimFile = new TFile("/nova/app/users/ayallapp/testbeam/test_testbeam/TestBeam/beamlineinput_new.root","READ");
207  //beamlinesim::BeamlineSimInput::fBeamlineSimFile = new TFile("/nova/app/users/ayallapp/testbeam/test_testbeam/junting/beamlinesimulation_wohoo.root","READ");
208  beamlinesim::BeamlineSimInput::fBeamlineSimFile = new TFile("/nova/app/users/ayallapp/testbeam/test_testbeam/junting/beamlinesimulation_wohoo.root","READ");
209  TTreeReader reader("tree", fBeamlineSimFile);
210  //TTreeReaderValue<int> feventid(reader, "event_id");
211  //TTreeReaderValue<float_t> fx(reader, "x");
212  //TTreeReaderValue<int> fisnoise(reader, "is_noise");
213  TTreeReaderValue<unsigned int> fPresentWire_Chamber1(reader, "present_wire_chamber_1");
214  TTreeReaderValue<unsigned int> fPresentWire_Chamber2(reader, "present_wire_chamber_2");
215  TTreeReaderValue<unsigned int> fPresentWire_Chamber3(reader, "present_wire_chamber_3");
216  TTreeReaderValue<unsigned int> fPresentWire_Chamber4(reader, "present_wire_chamber_4");
217  TTreeReaderValue<unsigned int> fPresenttofus(reader, "present_tof_us");
218  TTreeReaderValue<unsigned int> fPresenttofds(reader, "present_tof_ds");
219  TTreeReaderValue<unsigned int> fPresentcherenkov(reader, "present_cerenkov");
220  TTreeReaderValue<float> fXWire_Chamber1(reader, "x_wire_chamber_1");
221  TTreeReaderValue<float> fYWire_Chamber1(reader, "y_wire_chamber_1");
222  TTreeReaderValue<float> fZWire_Chamber1(reader, "z_wire_chamber_1");
223  TTreeReaderValue<float> fTWire_Chamber1(reader, "t_wire_chamber_1");
224  TTreeReaderValue<float> fXWire_Chamber2(reader, "x_wire_chamber_2");
225  TTreeReaderValue<float> fYWire_Chamber2(reader, "y_wire_chamber_2");
226  TTreeReaderValue<float> fZWire_Chamber2(reader, "z_wire_chamber_2");
227  TTreeReaderValue<float> fTWire_Chamber2(reader, "t_wire_chamber_2");
228  TTreeReaderValue<float> fXWire_Chamber3(reader, "x_wire_chamber_3");
229  TTreeReaderValue<float> fYWire_Chamber3(reader, "y_wire_chamber_3");
230  TTreeReaderValue<float> fZWire_Chamber3(reader, "z_wire_chamber_3");
231  TTreeReaderValue<float> fTWire_Chamber3(reader, "t_wire_chamber_3");
232  TTreeReaderValue<float> fXWire_Chamber4(reader, "x_wire_chamber_4");
233  TTreeReaderValue<float> fYWire_Chamber4(reader, "y_wire_chamber_4");
234  TTreeReaderValue<float> fZWire_Chamber4(reader, "z_wire_chamber_4");
235  TTreeReaderValue<float> fTWire_Chamber4(reader, "t_wire_chamber_4");
236 // TTreeReaderValue<float> fPxWire_Chamber1(reader, "px_wire_chamber_1");
237 // TTreeReaderValue<float> fPyWire_Chamber1(reader, "py_wire_chamber_1");
238 // TTreeReaderValue<float> fPzWire_Chamber1(reader, "pz_wire_chamber_1");
239 // TTreeReaderValue<float> fPxWire_Chamber2(reader, "px_wire_chamber_2");
240 // TTreeReaderValue<float> fPyWire_Chamber2(reader, "py_wire_chamber_2");
241 // TTreeReaderValue<float> fPzWire_Chamber2(reader, "pz_wire_chamber_2");
242 // TTreeReaderValue<float> fPxWire_Chamber3(reader, "px_wire_chamber_3");
243 // TTreeReaderValue<float> fPyWire_Chamber3(reader, "py_wire_chamber_3");
244 // TTreeReaderValue<float> fPzWire_Chamber3(reader, "pz_wire_chamber_3");
245 // TTreeReaderValue<float> fPxWire_Chamber4(reader, "px_wire_chamber_4");
246 // TTreeReaderValue<float> fPyWire_Chamber4(reader, "py_wire_chamber_4");
247 // TTreeReaderValue<float> fPzWire_Chamber4(reader, "pz_wire_chamber_4");
248  TTreeReaderValue<float> fttof_us(reader, "t_tof_us");
249  TTreeReaderValue<float> fttof_ds(reader, "t_tof_ds");
250  TTreeReaderValue<float> ftcherenkov(reader, "t_cerenkov");
251 // TTreeReaderValue<float> fxnova(reader, "x");
252 // TTreeReaderValue<float> fynova(reader, "y");
253 // TTreeReaderValue<float> fznova(reader, "z");
254 // TTreeReaderValue<float> ftnova(reader, "t");
255  //TTreeReaderValue<int> fspill_number(reader, "spill_number");
256 
257  while (reader.Next())
258  {
259  //veventid.push_back(*feventid);
260  //vx.push_back(*fx);
261 
262  //visnoise.push_back(*fisnoise);
263  vPresentWire_Chamber1.push_back(*fPresentWire_Chamber1);
264  vPresentWire_Chamber2.push_back(*fPresentWire_Chamber2);
265  vPresentWire_Chamber3.push_back(*fPresentWire_Chamber3);
266  vPresentWire_Chamber4.push_back(*fPresentWire_Chamber4);
267  vPresenttofus.push_back(*fPresenttofus);
268  vPresenttofds.push_back(*fPresenttofds);
269  vPresentcherenkov.push_back(*fPresentcherenkov);
270  vXWire_Chamber1.push_back(*fXWire_Chamber1);
271  vYWire_Chamber1.push_back(*fYWire_Chamber1);
272  vZWire_Chamber1.push_back(*fZWire_Chamber1);
273  vTWire_Chamber1.push_back(*fTWire_Chamber1);
274  vXWire_Chamber2.push_back(*fXWire_Chamber2);
275  vYWire_Chamber2.push_back(*fYWire_Chamber2);
276  vZWire_Chamber2.push_back(*fZWire_Chamber2);
277  vTWire_Chamber2.push_back(*fTWire_Chamber2);
278  vXWire_Chamber3.push_back(*fXWire_Chamber3);
279  vYWire_Chamber3.push_back(*fYWire_Chamber3);
280  vZWire_Chamber3.push_back(*fZWire_Chamber3);
281  vTWire_Chamber3.push_back(*fTWire_Chamber3);
282  vXWire_Chamber4.push_back(*fXWire_Chamber4);
283  vYWire_Chamber4.push_back(*fYWire_Chamber4);
284  vZWire_Chamber4.push_back(*fZWire_Chamber4);
285  vTWire_Chamber4.push_back(*fTWire_Chamber4);
286 // vPxWire_Chamber1.push_back(*fPxWire_Chamber1);
287 // vPyWire_Chamber1.push_back(*fPyWire_Chamber1);
288 // vPzWire_Chamber1.push_back(*fPzWire_Chamber1);
289 // vPxWire_Chamber2.push_back(*fPxWire_Chamber2);
290 // vPyWire_Chamber2.push_back(*fPyWire_Chamber2);
291 // vPzWire_Chamber2.push_back(*fPzWire_Chamber2);
292 // vPxWire_Chamber3.push_back(*fPxWire_Chamber3);
293 // vPyWire_Chamber3.push_back(*fPyWire_Chamber3);
294 // vPzWire_Chamber3.push_back(*fPzWire_Chamber3);
295 // vPxWire_Chamber4.push_back(*fPxWire_Chamber4);
296 // vPyWire_Chamber4.push_back(*fPyWire_Chamber4);
297 // vPzWire_Chamber4.push_back(*fPzWire_Chamber4);
298  vttof_us.push_back(*fttof_us);
299  vttof_ds.push_back(*fttof_ds);
300  vtcherenkov.push_back(*ftcherenkov);
301 // vxnova.push_back(*fxnova);
302 // vynova.push_back(*fynova);
303 // vznova.push_back(*fznova);
304 // vtnova.push_back(*ftnova);
305  //vspill_number.push_back(*fspill_number);
306  }
307 
308  //std::cout<<"eventid (1) " << veventid[1]<<std::endl;
309  //std::cout<<"eventid (2) " << veventid[2]<<std::endl;
310  //std::cout<<"x (1) " << vx[1]<<std::endl;
311  //std::cout<<"x (2) " << vx[2]<<std::endl;
312  return;
313 }
314 
316  produces<std::vector<brb::ToF> >();
317  produces<std::vector<brb::Cherenkov> >();
318  produces<std::vector<rawdata::RawBeamlineWC> >();
319  total_particles = 0;
320  final_index = 0;
321  this->reconfigure(pset);
322 }
323 
324 // -----------------------------------------------------------------------
326 }
327 
328 // -----------------------------------------------------------------------
330 
332  std::vector<art::Ptr<simb::MCTruth> > mcTruths;
333  if (evt.getByLabel("generator", mcTruthHandle))
334  art::fill_ptr_vector(mcTruths, mcTruthHandle);
335 
336  std::cout << "There are " << mcTruths.size() << " mc truths in event " << evt.event() << std::endl;
337  particle_no=0;
338  event_no=evt.event();
339  std::cout<<"event number "<<event_no<<std::endl;
340  for (std::vector<art::Ptr<simb::MCTruth> >::const_iterator mcTruthIt = mcTruths.begin(); mcTruthIt != mcTruths.end(); ++mcTruthIt)
341  {
342  std::cout << " There are " << (*mcTruthIt)->NParticles() << " particles in this MCTruth." << std::endl;
343  particle_no=(*mcTruthIt)->NParticles();
344  }
345 
346  std::unique_ptr<std::vector<brb::ToF> > TOFptr(new std::vector<brb::ToF>);
347  std::unique_ptr<std::vector<brb::Cherenkov> > CHKVptr(new std::vector<brb::Cherenkov>);
348  std::unique_ptr<std::vector<rawdata::RawBeamlineWC> > WCptr(new std::vector<rawdata::RawBeamlineWC>);
349 
350  if(evt.event()!=6964)
351  {
352 
353  for (int i=0;i<particle_no;i++)
354  {
355  final_index = total_particles ;//+ i;
356  //total_particles=final_index;
357 // std::cout<<"putting particle number "<<i+1 <<" in the event"<<std::endl;
358 // std::cout<<"totalparticles is "<<total_particles<<std::endl;
359 // std::cout<<"final index is "<<final_index<<std::endl;
360  // reformat into novasoft data types
361  //Time of flight
362  brb::ToF tofobject;
363  std::pair <float,float> tofpair;
364  if (vPresenttofus[final_index]==1)
365  {
366  tofpair.first=vttof_us[final_index];
367  }
368  if ( vPresenttofds[final_index]==1)
369  {
370  tofpair.second=vttof_ds[final_index];
371  }
373  {
375  tofobject.SetTimestamps(tofpair);
376  TOFptr->push_back(tofobject);
377  std::cout<<"the tof_us added to the event is "<< vttof_us[final_index] <<std::endl;
378  std::cout<<"the tof_ds added to the event is "<< vttof_ds[final_index] <<std::endl;
379  std::cout<<"the tof added to the event is "<< vttof_us[final_index]-vttof_ds[final_index] <<std::endl;
380  }
381  else
382  {
383  //std::cout<<"------------------------ didn't pass through both tof ------------------------------------------------------------------"<<std::endl;
384  }
385  //bool tofp=bool(vPresenttofus[final_index]) && bool(vPresenttofds[final_index]);
386  //std::cout<<"tof present up = "<< vPresenttofus[final_index] <<std::endl;
387  //std::cout<<"tof present up = "<< vPresenttofds[final_index] <<std::endl;
388 
389  //cherenkov
390 
391  brb::Cherenkov cherenkov_object;
393  cherenkov_object.SetTime(vtcherenkov[final_index]);
394  CHKVptr->push_back(cherenkov_object);
395  //std::cout<<"the cherenkov timestamp added to the event is "<< vtcherenkov[final_index] <<std::endl;
396  }
397  else
398  {
399  //std::cout<<"-------------------------- didn't pass through cherenkov-----------------------------------------------------------------"<<std::endl;
400  }
401 
402  //std::cout<<"cherenkov present = "<< vPresentcherenkov[final_index] <<std::endl;
403 
404  //wirechambers
405 
406  std::vector<rawdata::RawBeamlineWC> WCobject;
407 
408  std::vector<double> fchannelx;
409  std::vector<double> fchannely;
410  std::vector<uint64_t> fWCtime;
411  std::vector<unsigned int> fWCpresent;
412  std::vector<double> xWC;
413  std::vector<double> yWC;
414 
415  fchannelx.push_back(round((-(-491.51-vXWire_Chamber1[final_index])+64)/(TMath::Cos(16*TMath::Pi()/180))));
416  fchannelx.push_back(round((-(-910.57-vXWire_Chamber2[final_index])+64)/(TMath::Cos(16*TMath::Pi()/180))));
417  fchannelx.push_back(round(-(-1354.35-vXWire_Chamber3[final_index])+64));
418  fchannelx.push_back(round(-(-1354.35-vXWire_Chamber4[final_index])+64));
419 
420  fchannely.push_back(round(vYWire_Chamber1[final_index]+64));
421  fchannely.push_back(round(vYWire_Chamber2[final_index]+64));
422  fchannely.push_back(round(vYWire_Chamber3[final_index]+64));
423  fchannely.push_back(round(vYWire_Chamber4[final_index]+64));
424 
425  fWCtime.push_back(vTWire_Chamber1[final_index]);
426  fWCtime.push_back(vTWire_Chamber2[final_index]);
427  fWCtime.push_back(vTWire_Chamber3[final_index]);
428  fWCtime.push_back(vTWire_Chamber4[final_index]);
429 
430  fWCpresent.push_back(vPresentWire_Chamber1[final_index]);
431  fWCpresent.push_back(vPresentWire_Chamber2[final_index]);
432  fWCpresent.push_back(vPresentWire_Chamber3[final_index]);
433  fWCpresent.push_back(vPresentWire_Chamber4[final_index]);
434 
435  //just for debugging--------------------------------------------------
436  xWC.push_back(vXWire_Chamber1[final_index]);
437  xWC.push_back(vXWire_Chamber2[final_index]);
438  xWC.push_back(vXWire_Chamber3[final_index]);
439  xWC.push_back(vXWire_Chamber4[final_index]);
440 
441  yWC.push_back(vYWire_Chamber1[final_index]);
442  yWC.push_back(vYWire_Chamber2[final_index]);
443  yWC.push_back(vYWire_Chamber3[final_index]);
444  yWC.push_back(vYWire_Chamber4[final_index]);
445  //--mike helping me debug----------
446 // for (unsigned int wcNum = 0; wcNum < 4; ++wcNum) {
447 //
448 // rawdata::RawBeamlineWC::WCPulse xpulse(fchannelx[wcNum], fWCtime[wcNum]);
449 // rawdata::RawBeamlineWC::WCPulse ypulse(fchannely[wcNum], fWCtime[wcNum]);
450 //
451 // rawdata::RawBeamlineWC wc;//(wcNum, Form("WC%d", wcNum));
452 // wc.SetWCNumber(wcNum+1);
453 // //if (fWCpresent[wcNum]) {
454 // wc.AddXPulse(xpulse);
455 // wc.AddYPulse(ypulse);
456 // //}
457 //
458 // WCptr->push_back(wc);
459 //
460 // }
461  //------------------------------------
462 
463  for(unsigned int k=0;k<4;k++)
464  {
465  // Detector ID for this wire chamber
467 
468  rawdata::RawBeamlineWC::WCPulse xpulse(fchannelx[k],fWCtime[k]);
469  rawdata::RawBeamlineWC::WCPulse ypulse(fchannely[k],fWCtime[k]);
470  rawdata::RawBeamlineWC WCobject(detectorID);
471  WCobject.AddXPulse(xpulse);
472  WCobject.AddYPulse(ypulse);
473 
474  if (fWCpresent[k]==1) {
475 
476  std::cout<<"the x wire number for WC "<< k+1 <<" added to the event is "<< fchannelx[k]<<" and the x wire coordinate is "<<xWC[k] <<std::endl;
477  std::cout<<"the y wire number for WC "<< k+1 <<" added to the event is "<< fchannely[k] <<" and the y wire coordinate is "<<yWC[k] <<std::endl;
478  WCptr->push_back(WCobject);
479  }
480  else{
481  std::cout<<"-------------------- No WC "<<k+1<<" objects added ---------------------------"<<std::endl;
482  }
483 // std::cout<<"the x wire number for WC "<< k+1 <<" added to the event is "<< fchannelx[k] <<std::endl;
484 // std::cout<<"the x wire coordinate for WC "<<k+1<<" added to the event is "<<xWC[k] << std::endl;
485 // std::cout<<"the y wire number for WC "<< k+1 <<" added to the event is "<< fchannely[k] <<std::endl;
486 // std::cout<<"the y wire coordinate for WC "<<k+1<<" added to the event is "<<yWC[k] << std::endl;
487 // std::cout<<"wire chamber "<<k+1<<" present "<<fWCpresent[k] << std::endl;
488 
489  }
490 
491 
492  fchannelx.clear();
493  fchannely.clear();
494  fWCtime.clear();
495  fWCpresent.clear();
496  xWC.clear();
497  yWC.clear();
498  total_particles++;
499 
500  }
501 
502  evt.put(std::move(TOFptr));
503  evt.put(std::move(CHKVptr));
504  evt.put(std::move(WCptr));
505 
506  }
507  return;
508 
509 }
void SetTimestamps(std::pair< float, float > timestamps)
Definition: ToF.cxx:47
void SetTime(float time)
Definition: ToF.cxx:41
std::vector< unsigned int > vPresentcherenkov
std::vector< unsigned int > vPresentWire_Chamber2
std::vector< unsigned int > vPresentWire_Chamber3
void SetTime(float time)
Definition: Cherenkov.cxx:32
std::vector< unsigned int > vPresentWire_Chamber1
DEFINE_ART_MODULE(TestTMapFile)
fvar< T > round(const fvar< T > &x)
Definition: round.hpp:23
ProductID put(std::unique_ptr< PROD > &&product)
Definition: Event.h:102
BeamlineSimInput(const fhicl::ParameterSet &pset)
Encapsulation of reconstructed digitizer &#39;hits&#39;. Used for ToF PMTs and SiPMs, and Cherenkov and Muon ...
Definition: ToF.h:25
std::vector< unsigned int > vPresentWire_Chamber4
Encapsulation of reconstructed Time-of-Flight (ToF) information. Part of beamline reconstruction for ...
int evt
Encapsulation of reconstructed Wire Chamber track. Part of beamline reconstruction for NOvA test beam...
EventNumber_t event() const
Definition: Event.h:67
void AddXPulse(WCPulse pulse)
OStream cout
Definition: OStream.cxx:6
void AddYPulse(WCPulse pulse)
std::vector< unsigned int > vPresenttofds
std::vector< unsigned int > vPresenttofus
bool getByLabel(std::string const &label, std::string const &productInstanceName, Handle< PROD > &result) const
Definition: DataViewImpl.h:344
void reconfigure(const fhicl::ParameterSet &pset)
Raw data definitions for beamline data used in NOvA test beam experiment.
Encapsulation of &#39;reconstructed&#39; Cherenkov information. Part of beamline reconstruction for NOvA test...
void fill_ptr_vector(std::vector< Ptr< T >> &ptrs, H const &h)
Definition: Ptr.h:464
Encapsulation of reconstructed PID information from detectors in the beamline (ToF, WCs, Cherenkov). Part of beamline reconstruction for NOvA test beam.
float_t bltof(float_t tof_us, float_t tof_ds, int presenttofus, int presenttofds)
Encapsulation of reconstructed track in the muon stack downstream of test beam detector. Part of beamline reconstruction for NOvA test beam.