Public Member Functions | Private Member Functions | Private Attributes | List of all members
opreco::OpticalRecoAna Class Reference
Inheritance diagram for opreco::OpticalRecoAna:
art::EDAnalyzer art::detail::Analyzer art::detail::LegacyModule art::Observer art::ModuleBase

Public Member Functions

 OpticalRecoAna (const fhicl::ParameterSet &)
 
void beginJob ()
 
void analyze (const art::Event &)
 
- Public Member Functions inherited from art::EDAnalyzer
 EDAnalyzer (fhicl::ParameterSet const &pset)
 
template<typename Config >
 EDAnalyzer (Table< Config > const &config)
 
std::string workerType () const
 
- Public Member Functions inherited from art::detail::Analyzer
virtual ~Analyzer () noexcept
 
 Analyzer (fhicl::ParameterSet const &pset)
 
template<typename Config >
 Analyzer (Table< Config > const &config)
 
void doBeginJob (SharedResources const &resources)
 
void doEndJob ()
 
void doRespondToOpenInputFile (FileBlock const &fb)
 
void doRespondToCloseInputFile (FileBlock const &fb)
 
void doRespondToOpenOutputFiles (FileBlock const &fb)
 
void doRespondToCloseOutputFiles (FileBlock const &fb)
 
bool doBeginRun (RunPrincipal &rp, ModuleContext const &mc)
 
bool doEndRun (RunPrincipal &rp, ModuleContext const &mc)
 
bool doBeginSubRun (SubRunPrincipal &srp, ModuleContext const &mc)
 
bool doEndSubRun (SubRunPrincipal &srp, ModuleContext const &mc)
 
bool doEvent (EventPrincipal &ep, ModuleContext const &mc, std::atomic< std::size_t > &counts_run, std::atomic< std::size_t > &counts_passed, std::atomic< std::size_t > &counts_failed)
 
- Public Member Functions inherited from art::Observer
 ~Observer () noexcept
 
 Observer (Observer const &)=delete
 
 Observer (Observer &&)=delete
 
Observeroperator= (Observer const &)=delete
 
Observeroperator= (Observer &&)=delete
 
void registerProducts (ProductDescriptions &, ModuleDescription const &)
 
void fillDescriptions (ModuleDescription const &)
 
fhicl::ParameterSetID selectorConfig () const
 
- Public Member Functions inherited from art::ModuleBase
virtual ~ModuleBase () noexcept
 
 ModuleBase ()
 
ModuleDescription const & moduleDescription () const
 
void setModuleDescription (ModuleDescription const &)
 
std::array< std::vector< ProductInfo >, NumBranchTypes > const & getConsumables () const
 
void sortConsumables (std::string const &current_process_name)
 
template<typename T , BranchType BT>
ViewToken< T > consumesView (InputTag const &tag)
 
template<typename T , BranchType BT>
ViewToken< T > mayConsumeView (InputTag const &tag)
 

Private Member Functions

void get_MC_particle_list (sim::ParticleList const &, std::vector< simb::MCParticle > &)
 
simb::Origin_t get_MC_particle_origin (simb::MCParticle const &)
 
float update_MC_particle_time (simb::MCParticle const &, bool &, geo::Geometry const &)
 
void match_flashes_to_tracks (std::vector< recob::OpFlash > const &, std::vector< recob::Track > const &)
 
void compare_track_and_flash (recob::Track const &, recob::OpFlash const &, bool &)
 
void match_flashes_to_particles (std::vector< recob::OpFlash > const &, std::vector< simb::MCParticle > const &, float const &, geo::Geometry const &)
 
void compare_particle_and_flash (simb::MCParticle const &, recob::OpFlash const &, bool &, float const &, geo::Geometry const &)
 
void match_flashes_to_particles (std::vector< recob::Track > const &, std::vector< simb::MCParticle > const &, geo::Geometry const &)
 
void compare_particle_and_track (simb::MCParticle const &, recob::Track const &, bool &, geo::Geometry const &)
 
void FillMatchTree_PF (std::vector< recob::OpFlash > const &, std::vector< simb::MCParticle > const &, float const &, geo::Geometry const &)
 

Private Attributes

std::string fFlashModuleLabel
 
std::string fTrackModuleLabel
 
float fKineticEnergyMin
 
float fPEMin
 
float fTimeMatchMax
 
std::vector< flash_matchfFlash_match_vector
 
std::vector< track_matchfTrack_match_vector
 
std::vector< particle_matchfParticle_match_vector
 
TH1F * fTimeDiff
 
TH1F * fTimeDiff_fine
 
TH1I * fNBeamFlashes
 
TTree * fMatchTree_PF
 
TTree * fMatchTree_PF_NotNu
 
int fRun
 
int fEvent
 
int fParticleID
 
int fParticleMother
 
int fParticleTrackID
 
float fParticleTime
 
float fParticleVx
 
float fParticleVy
 
float fParticleVz
 
int fFlashID
 
float fFlashTime
 
float fFlashTimeWidth
 
float fFlashY
 
float fFlashZ
 
float fFlashYWidth
 
float fFlashZWidth
 
float fFlashPE
 
int fFlashOnBeamTime
 
int fMatchIndex
 
int fMatchIndex_NotNu
 

Additional Inherited Members

- Public Types inherited from art::EDAnalyzer
using WorkerType = WorkerT< EDAnalyzer >
 
using ModuleType = EDAnalyzer
 
- Protected Member Functions inherited from art::Observer
std::string const & processName () const
 
bool wantAllEvents () const noexcept
 
bool wantEvent (ScheduleID id, Event const &e) const
 
Handle< TriggerResultsgetTriggerResults (Event const &e) const
 
 Observer (fhicl::ParameterSet const &config)
 
 Observer (std::vector< std::string > const &select_paths, std::vector< std::string > const &reject_paths, fhicl::ParameterSet const &config)
 
- Protected Member Functions inherited from art::ModuleBase
ConsumesCollectorconsumesCollector ()
 
template<typename T , BranchType = InEvent>
ProductToken< T > consumes (InputTag const &)
 
template<typename Element , BranchType = InEvent>
ViewToken< Element > consumesView (InputTag const &)
 
template<typename T , BranchType = InEvent>
void consumesMany ()
 
template<typename T , BranchType = InEvent>
ProductToken< T > mayConsume (InputTag const &)
 
template<typename Element , BranchType = InEvent>
ViewToken< Element > mayConsumeView (InputTag const &)
 
template<typename T , BranchType = InEvent>
void mayConsumeMany ()
 

Detailed Description

Definition at line 44 of file OpticalRecoAna_module.cc.

Constructor & Destructor Documentation

opreco::OpticalRecoAna::OpticalRecoAna ( const fhicl::ParameterSet )

Definition at line 137 of file OpticalRecoAna_module.cc.

137  : EDAnalyzer(pset)
138 {
139 
140  // Indicate that the Input Module comes from .fcl
141  fFlashModuleLabel = pset.get<std::string>("FlashModule");
142  fTrackModuleLabel = pset.get<std::string>("TrackModule");
143  fKineticEnergyMin = pset.get<float>("KineticEnergyMin");
144  fPEMin = pset.get<float>("PEMin");
145  fTimeMatchMax = pset.get<float>("TimeMatchMax");
146 
147  fFlash_match_vector.clear();
148  fTrack_match_vector.clear();
149  fParticle_match_vector.clear();
150 }
std::string string
Definition: nybbler.cc:12
std::vector< flash_match > fFlash_match_vector
EDAnalyzer(fhicl::ParameterSet const &pset)
Definition: EDAnalyzer.h:25
std::vector< particle_match > fParticle_match_vector
std::vector< track_match > fTrack_match_vector

Member Function Documentation

void opreco::OpticalRecoAna::analyze ( const art::Event evt)

Definition at line 209 of file OpticalRecoAna_module.cc.

210 {
211 
212  //get flag for MC
213  const bool is_MC= !(evt.isRealData());
214 
215  fRun = evt.id().run();
216  fEvent = evt.id().event();
217 
218  //first get out track, flash, and particle list handles
220  evt.getByLabel(fFlashModuleLabel, flash_handle);
221  std::vector<recob::OpFlash> const& flash_vector(*flash_handle);
222  fFlash_match_vector.resize(flash_vector.size());
223 
224  MF_LOG_INFO ("OpticalRecoAna")
225  << "Number of flashes is " << flash_vector.size() << std::flush;
226 
227  //art::Handle< std::vector<recob::Track> > track_handle;
228  //evt.getByLabel(fTrackModuleLabel, track_handle);
229  //std::vector<recob::Track> const& track_vector(*track_handle);
230  //fTrack_match_vector.resize(track_vector.size());
231 
232  //MF_LOG_INFO ("OpticalRecoAna")
233  //<< "Number of tracks is " << track_vector.size() << std::flush;
234 
235  //match_flashes_to_tracks(flash_vector, track_vector);
236 
237  //all this for the MC matching
238  if(is_MC){
239 
241  std::vector<simb::MCParticle> particle_list;
242  get_MC_particle_list(pi_serv->ParticleList(),particle_list);
243  fParticle_match_vector.resize(particle_list.size());
244 
245  mf::LogInfo("OpticalRecoAna")
246  << "Number of MC particles is " << particle_list.size();
247 
248 
250  const float ns_per_PMT_tick = 1e3;// already converted to microseconds//( 1e3 / odp->SampleFreq()) ; //SampleFreq is in MHz
252 
253  match_flashes_to_particles(flash_vector,
254  particle_list,
255  ns_per_PMT_tick,
256  *geometry_handle);
257  /*
258  FillMatchTree_PF(flash_vector,
259  particle_list,
260  ns_per_PMT_tick,
261  *geometry_handle);
262  */
263  int n_flashes = 0;
264  for(auto const& my_flash : flash_vector){
265  if(my_flash.OnBeamTime()==1) n_flashes++;
266  }
267  fNBeamFlashes->Fill(n_flashes);
268 
269  //check_flash_matches();
270 
271  //match_tracks_to_particles(track_handle,particle_list);
272 
273  }
274 
275 }
void match_flashes_to_particles(std::vector< recob::OpFlash > const &, std::vector< simb::MCParticle > const &, float const &, geo::Geometry const &)
MaybeLogger_< ELseverityLevel::ELsev_info, false > LogInfo
std::vector< flash_match > fFlash_match_vector
RunNumber_t run() const
Definition: EventID.h:98
bool isRealData() const
bool getByLabel(std::string const &label, std::string const &instance, Handle< PROD > &result) const
Definition: DataViewImpl.h:633
QTextStream & flush(QTextStream &s)
#define MF_LOG_INFO(category)
const sim::ParticleList & ParticleList() const
std::vector< particle_match > fParticle_match_vector
void get_MC_particle_list(sim::ParticleList const &, std::vector< simb::MCParticle > &)
EventNumber_t event() const
Definition: EventID.h:116
EventID id() const
Definition: Event.cc:34
void opreco::OpticalRecoAna::beginJob ( )
virtual

Reimplemented from art::EDAnalyzer.

Definition at line 155 of file OpticalRecoAna_module.cc.

156 {
158  fTimeDiff = tfs->make<TH1F>("htdiff","Time difference between particles and flashes; t_diff (ns); flash/particle pairs",1e3,-5e6,5e6);
159  fTimeDiff_fine = tfs->make<TH1F>("htdiff_fine","Time difference between particles and flashes; t_diff (ns); flash/particle pairs",100,-1000,1000);
160  fNBeamFlashes = tfs->make<TH1I>("hNBeamFlashes","Number of flashes OnBeamTime per event; N_{Flashes}; Events",5,0,5);
161 
162  fMatchTree_PF = tfs->make<TTree>("MatchTree_PF","MatchTree_PF");
163  fMatchTree_PF->Branch("Run",&fRun,"Run/I");
164  fMatchTree_PF->Branch("Event",&fEvent,"Event/I");
165  fMatchTree_PF->Branch("p_id",&fParticleID,"p_id/I");
166  fMatchTree_PF->Branch("p_time",&fParticleTime,"p_time/F");
167  fMatchTree_PF->Branch("p_vx",&fParticleVx,"p_vx/F");
168  fMatchTree_PF->Branch("p_vy",&fParticleVy,"p_vy/F");
169  fMatchTree_PF->Branch("p_vz",&fParticleVz,"p_vz/F");
170  fMatchTree_PF->Branch("p_mid",&fParticleMother,"p_mid/I");
171  fMatchTree_PF->Branch("p_trackid",&fParticleTrackID,"p_trackid/I");
172  fMatchTree_PF->Branch("FlashID",&fFlashID,"flash_id/I");
173  fMatchTree_PF->Branch("f_time",&fFlashTime,"f_time/F");
174  fMatchTree_PF->Branch("f_timewidth",&fFlashTimeWidth,"f_timewidth/F");
175  fMatchTree_PF->Branch("f_y",&fFlashY,"f_y/F");
176  fMatchTree_PF->Branch("f_z",&fFlashZ,"f_z/F");
177  fMatchTree_PF->Branch("f_ywidth",&fFlashYWidth,"f_ywidth/F");
178  fMatchTree_PF->Branch("f_zwidth",&fFlashYWidth,"f_zwidth/F");
179  fMatchTree_PF->Branch("f_onbeamtime",&fFlashOnBeamTime,"f_onbeamtime/I");
180  fMatchTree_PF->Branch("f_pe",&fFlashPE,"f_pe/F");
181  fMatchTree_PF->Branch("matchIndex",&fMatchIndex,"matchIndex/I");
182 
183  fMatchTree_PF_NotNu = tfs->make<TTree>("MatchTree_PF_NotNu","MatchTree_PF_NotNu");
184  fMatchTree_PF_NotNu->Branch("Run",&fRun,"Run/I");
185  fMatchTree_PF_NotNu->Branch("Event",&fEvent,"Event/I");
186  fMatchTree_PF_NotNu->Branch("p_id",&fParticleID,"p_id/I");
187  fMatchTree_PF_NotNu->Branch("p_time",&fParticleTime,"p_time/F");
188  fMatchTree_PF_NotNu->Branch("p_vx",&fParticleVx,"p_vx/F");
189  fMatchTree_PF_NotNu->Branch("p_vy",&fParticleVy,"p_vy/F");
190  fMatchTree_PF_NotNu->Branch("p_vz",&fParticleVz,"p_vz/F");
191  fMatchTree_PF_NotNu->Branch("p_mid",&fParticleMother,"p_mid/I");
192  fMatchTree_PF_NotNu->Branch("p_trackid",&fParticleTrackID,"p_trackid/I");
193  fMatchTree_PF_NotNu->Branch("FlashID",&fFlashID,"flash_id/I");
194  fMatchTree_PF_NotNu->Branch("f_time",&fFlashTime,"f_time/F");
195  fMatchTree_PF_NotNu->Branch("f_timewidth",&fFlashTimeWidth,"f_timewidth/F");
196  fMatchTree_PF_NotNu->Branch("f_y",&fFlashY,"f_y/F");
197  fMatchTree_PF_NotNu->Branch("f_z",&fFlashZ,"f_z/F");
198  fMatchTree_PF_NotNu->Branch("f_ywidth",&fFlashYWidth,"f_ywidth/F");
199  fMatchTree_PF_NotNu->Branch("f_zwidth",&fFlashYWidth,"f_zwidth/F");
200  fMatchTree_PF_NotNu->Branch("f_onbeamtime",&fFlashOnBeamTime,"f_onbeamtime/I");
201  fMatchTree_PF_NotNu->Branch("f_pe",&fFlashPE,"f_pe/F");
202  fMatchTree_PF_NotNu->Branch("matchIndex",&fMatchIndex_NotNu,"matchIndex/I");
203 
204 }
void opreco::OpticalRecoAna::compare_particle_and_flash ( simb::MCParticle const &  particle,
recob::OpFlash const &  flash,
bool matching,
float const &  ns_per_PMT_tick,
geo::Geometry const &  geometry 
)
private

Definition at line 502 of file OpticalRecoAna_module.cc.

506  {
507 }
void opreco::OpticalRecoAna::compare_particle_and_track ( simb::MCParticle const &  particle,
recob::Track const &  track,
bool matching,
geo::Geometry const &  geometry 
)
private

Definition at line 535 of file OpticalRecoAna_module.cc.

538  {
539 }
void opreco::OpticalRecoAna::compare_track_and_flash ( recob::Track const &  track,
recob::OpFlash const &  flash,
bool matching 
)
private

Definition at line 374 of file OpticalRecoAna_module.cc.

376  {
377 }
void opreco::OpticalRecoAna::FillMatchTree_PF ( std::vector< recob::OpFlash > const &  flash_vector,
std::vector< simb::MCParticle > const &  particle_vector,
float const &  ns_per_PMT_tick,
geo::Geometry const &  geometry 
)
private

Definition at line 460 of file OpticalRecoAna_module.cc.

463  {
464 
465  for(size_t i_flash=0; i_flash < flash_vector.size(); i_flash++){
466 
467  recob::OpFlash const& my_flash( flash_vector.at(i_flash) );
468  const float flash_time = my_flash.Time()*ns_per_PMT_tick;
469 
470  for(auto i_particle : fFlash_match_vector.at(i_flash).particle_indices){
471 
472  simb::MCParticle const& my_particle( particle_vector.at(i_particle) );
473  bool pass_check = false;
474  const float particle_time = update_MC_particle_time(my_particle,pass_check,geometry);
475 
476  if(my_particle.Mother()==0 && my_particle.TrackId()>1e4){
477 
478  fParticleID = i_particle;
479  fParticleTime = particle_time;
480  fParticleVx = my_particle.Vx(0);
481  fParticleVy = my_particle.Vy(0);
482  fParticleVz = my_particle.Vz(0);
483  fFlashID = i_flash;
484  fFlashTime = flash_time;
485  fFlashY = my_flash.YCenter();
486  fFlashZ = my_flash.ZCenter();
487  fFlashYWidth = my_flash.YWidth();
488  fFlashZWidth = my_flash.ZWidth();
489 
490  fMatchTree_PF->Fill();
491 
492  return;
493  }
494 
495  }
496 
497  }
498 
499 }
std::vector< flash_match > fFlash_match_vector
double Time() const
Definition: OpFlash.h:106
float update_MC_particle_time(simb::MCParticle const &, bool &, geo::Geometry const &)
void opreco::OpticalRecoAna::get_MC_particle_list ( sim::ParticleList const &  plist,
std::vector< simb::MCParticle > &  particle_vector 
)
private

Definition at line 282 of file OpticalRecoAna_module.cc.

282  {
283 
284  for(sim::ParticleList::const_iterator ipart = plist.begin(); ipart != plist.end(); ++ipart) {
285 
286  const simb::MCParticle* particle = (*ipart).second;
287  /*
288  std::cout << "Particle " << particle_vector.size() << " (" << (*ipart).first << ") is " << particle->PdgCode() << " (mother=" << particle->Mother()
289  << ") with K_energy " << particle->E()-0.001*particle->Mass() << std::endl;
290  std::cout << "\t(X,Y,Z,T)=(" << particle->Vx() << "," << particle->Vy() << "," << particle->Vz() << "," << particle->T() << ")" << std::endl;
291  */
292  //do not store if it's below our energy cut
293  if( particle->E() < 0.001*particle->Mass() + fKineticEnergyMin ) continue;
294 
295  //check to see if it's a charged particle we expect to leave ionization
296  const int pdg = std::abs(particle->PdgCode());
297  if( pdg==11 // electron
298  || pdg==13 //muon
299  || pdg==15 //tau
300  || pdg==211 //charged pion
301  || pdg==321 //charged kaon
302  || pdg==2212 //proton
303  || pdg==2214 //delta
304  || pdg==2224 //delta
305  || pdg==3222 //sigma
306  || pdg==3112 //sigma
307  || pdg==3312 //xi
308  || pdg==3334 //omega
309  ) {
310  particle_vector.emplace_back(*particle);
311  //std::cout << "Particle " << particle_vector.size() << " (" << (*ipart).first << ") is " << pdg << " (status=" << particle->StatusCode()
312  // << ") with K_energy " << particle->E()-0.001*particle->Mass() << std::endl;
313  //std::cout << "\t(X,Y,Z,T)=(" << particle->Vx() << "," << particle->Vy() << "," << particle->Vz() << "," << particle->T() << ")" << std::endl;
314  }
315  }
316 
317 }
double E(const int i=0) const
Definition: MCParticle.h:233
int PdgCode() const
Definition: MCParticle.h:212
double Mass() const
Definition: MCParticle.h:239
intermediate_table::const_iterator const_iterator
T abs(T value)
simb::Origin_t opreco::OpticalRecoAna::get_MC_particle_origin ( simb::MCParticle const &  particle)
private

Definition at line 277 of file OpticalRecoAna_module.cc.

277  {
279  return (pi_serv->TrackIdToMCTruth_P(particle.TrackId()))->Origin();
280 }
const art::Ptr< simb::MCTruth > & TrackIdToMCTruth_P(int id) const
void opreco::OpticalRecoAna::match_flashes_to_particles ( std::vector< recob::OpFlash > const &  flash_vector,
std::vector< simb::MCParticle > const &  particle_vector,
float const &  ns_per_PMT_tick,
geo::Geometry const &  geometry 
)
private

Definition at line 379 of file OpticalRecoAna_module.cc.

382  {
383 
384  fMatchIndex=0;
386  int lastFlashID = -1;
387 
388  for(size_t i_particle=0; i_particle < particle_vector.size(); i_particle++){
389 
390  simb::MCParticle const& my_particle( particle_vector.at(i_particle) );
391  bool pass_check = false;
392  const float particle_time = update_MC_particle_time(my_particle,pass_check,geometry);
393  if(!pass_check) continue;
394 
395  //std::cout << "Particle " << i_particle << " (" << my_particle.PdgCode() << ")" << particle_time << std::endl;
396 
397  for(size_t i_flash=0; i_flash < flash_vector.size(); i_flash++){
398 
399  recob::OpFlash const& my_flash( flash_vector.at(i_flash) );
400  if(my_flash.TotalPE() < fPEMin) continue;
401 
402  const float flash_time = my_flash.Time()*ns_per_PMT_tick;
403 
404  //if(my_flash.OnBeamTime())
405  //std::cout << "\tFlash " << i_flash << " time is " << flash_time << std::endl;
406 
407  fTimeDiff->Fill(particle_time-flash_time);
408  fTimeDiff_fine->Fill(particle_time-flash_time);
409 
410  fParticleID = i_particle;
411  fParticleTime = particle_time;
412  fParticleVx = my_particle.Vx(0);
413  fParticleVy = my_particle.Vy(0);
414  fParticleVz = my_particle.Vz(0);
415  fParticleMother = my_particle.Mother();
416  fParticleTrackID = my_particle.TrackId();
417  fFlashID = i_flash;
418  fFlashTime = flash_time;
419  fFlashTimeWidth = my_flash.TimeWidth()*ns_per_PMT_tick;
420  fFlashY = my_flash.YCenter();
421  fFlashZ = my_flash.ZCenter();
422  fFlashYWidth = my_flash.YWidth();
423  fFlashZWidth = my_flash.ZWidth();
424  fFlashPE = my_flash.TotalPE();
425  fFlashOnBeamTime = my_flash.OnBeamTime();
426 
427  bool beam_match = ((std::abs(particle_time - flash_time )/fFlashTimeWidth)<fTimeMatchMax &&
429  bool nonbeam_match = ((std::abs(particle_time - flash_time )/fFlashTimeWidth)<fTimeMatchMax &&
431 
432  if( beam_match ){
433  fMatchTree_PF->Fill();
434  fMatchIndex++;
435 
436  //std::cout << "\t\tParticle (x,y,z)=(" << my_particle.Vx() << "," << my_particle.Vy() << "," << my_particle.Vz() << std::endl;
437  //std::cout << "\t\tParticle PDG = " << my_particle.PdgCode() << " mother=" << my_particle.Mother() << std::endl;
438  //std::cout << "\t\tFlash (y,z) = ("
439  // << my_flash.YCenter() << " +/- " << my_flash.YWidth() << ","
440  // << my_flash.ZCenter() << " +/- " << my_flash.ZWidth() << std::endl;
441 
442  fFlash_match_vector.at(i_flash).particle_indices.push_back(i_particle);
443  fParticle_match_vector.at(i_particle).flash_indices.push_back(i_flash);
444  }
445  else if( nonbeam_match ){
446  if(lastFlashID!=fFlashID){
447  fMatchTree_PF_NotNu->Fill();
449  lastFlashID = fFlashID;
450  }
451  }
452 
453 
454  }//end inner loop over particles
455 
456  }//end loop over flashes
457 
458 }//end match_flashes_to_particles
std::vector< flash_match > fFlash_match_vector
simb::Origin_t get_MC_particle_origin(simb::MCParticle const &)
T abs(T value)
double Time() const
Definition: OpFlash.h:106
std::vector< particle_match > fParticle_match_vector
float update_MC_particle_time(simb::MCParticle const &, bool &, geo::Geometry const &)
Beam neutrinos.
Definition: MCTruth.h:23
void opreco::OpticalRecoAna::match_flashes_to_particles ( std::vector< recob::Track > const &  track_vector,
std::vector< simb::MCParticle > const &  particle_vector,
geo::Geometry const &  geometry 
)
private

Definition at line 509 of file OpticalRecoAna_module.cc.

511  {
512  bool matching=false;
513 
514  for(size_t i_track=0; i_track < track_vector.size(); i_track++){
515 
516  recob::Track const& my_track( track_vector.at(i_track) );
517 
518  for(size_t i_particle=0; i_particle < particle_vector.size(); i_particle++){
519 
520  simb::MCParticle const& my_particle( particle_vector.at(i_particle) );
521 
522  matching=false;
523  compare_particle_and_track(my_particle,my_track,matching,geometry);
524  if(matching){
525  fTrack_match_vector.at(i_track).particle_indices.push_back(i_track);
526  fParticle_match_vector.at(i_particle).track_indices.push_back(i_track);
527  }
528 
529  }//end inner loop over particles
530 
531  }//end loop over tracks
532 
533 }//end match_tracks_to_particles
std::vector< particle_match > fParticle_match_vector
void compare_particle_and_track(simb::MCParticle const &, recob::Track const &, bool &, geo::Geometry const &)
std::vector< track_match > fTrack_match_vector
Track from a non-cascading particle.A recob::Track consists of a recob::TrackTrajectory, plus additional members relevant for a "fitted" track:
Definition: Track.h:49
void opreco::OpticalRecoAna::match_flashes_to_tracks ( std::vector< recob::OpFlash > const &  flash_vector,
std::vector< recob::Track > const &  track_vector 
)
private

Definition at line 348 of file OpticalRecoAna_module.cc.

349  {
350  bool matching=false;
351 
352  for(size_t i_flash=0; i_flash < flash_vector.size(); i_flash++){
353 
354  recob::OpFlash const& my_flash( flash_vector.at(i_flash) );
355  if(my_flash.TotalPE() < fPEMin) continue;
356 
357  for(size_t i_track=0; i_track < track_vector.size(); i_track++){
358 
359  recob::Track const& my_track( track_vector.at(i_track) );
360 
361  matching=false;
362  compare_track_and_flash(my_track,my_flash,matching);
363  if(matching){
364  fFlash_match_vector.at(i_flash).track_indices.push_back(i_track);
365  fTrack_match_vector.at(i_track).flash_indices.push_back(i_flash);
366  }
367 
368  }//end inner loop over tracks
369 
370  }//end loop over flashes
371 
372 }//end match_flashes_to_tracks
void compare_track_and_flash(recob::Track const &, recob::OpFlash const &, bool &)
std::vector< flash_match > fFlash_match_vector
std::vector< track_match > fTrack_match_vector
Track from a non-cascading particle.A recob::Track consists of a recob::TrackTrajectory, plus additional members relevant for a "fitted" track:
Definition: Track.h:49
float opreco::OpticalRecoAna::update_MC_particle_time ( simb::MCParticle const &  particle,
bool pass_check,
geo::Geometry const &  geometry 
)
private

Definition at line 319 of file OpticalRecoAna_module.cc.

319  {
320 
321  pass_check = false;
322 
323  unsigned int tpc = 0;
324  unsigned int cstat = 0;
325 
326  const size_t numtraj = particle.NumberTrajectoryPoints();
327  size_t t_iter = 0;
328  while(t_iter < numtraj){
329  try{
330  // check if the particle is inside a TPC
331  double pos[3] = {particle.Vx(t_iter), particle.Vy(t_iter), particle.Vz(t_iter)};
332  geometry.PositionToTPC(pos, tpc, cstat);
333  }
334  catch(cet::exception &e){
335  t_iter++;
336  continue;
337  }
338  break;
339  }
340 
341  if(t_iter == numtraj)
342  return 0;
343 
344  pass_check = true;
345  return particle.T(t_iter);
346 }
const double e
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33

Member Data Documentation

int opreco::OpticalRecoAna::fEvent
private

Definition at line 107 of file OpticalRecoAna_module.cc.

std::vector<flash_match> opreco::OpticalRecoAna::fFlash_match_vector
private

Definition at line 61 of file OpticalRecoAna_module.cc.

int opreco::OpticalRecoAna::fFlashID
private

Definition at line 115 of file OpticalRecoAna_module.cc.

std::string opreco::OpticalRecoAna::fFlashModuleLabel
private

Definition at line 55 of file OpticalRecoAna_module.cc.

int opreco::OpticalRecoAna::fFlashOnBeamTime
private

Definition at line 123 of file OpticalRecoAna_module.cc.

float opreco::OpticalRecoAna::fFlashPE
private

Definition at line 122 of file OpticalRecoAna_module.cc.

float opreco::OpticalRecoAna::fFlashTime
private

Definition at line 116 of file OpticalRecoAna_module.cc.

float opreco::OpticalRecoAna::fFlashTimeWidth
private

Definition at line 117 of file OpticalRecoAna_module.cc.

float opreco::OpticalRecoAna::fFlashY
private

Definition at line 118 of file OpticalRecoAna_module.cc.

float opreco::OpticalRecoAna::fFlashYWidth
private

Definition at line 120 of file OpticalRecoAna_module.cc.

float opreco::OpticalRecoAna::fFlashZ
private

Definition at line 119 of file OpticalRecoAna_module.cc.

float opreco::OpticalRecoAna::fFlashZWidth
private

Definition at line 121 of file OpticalRecoAna_module.cc.

float opreco::OpticalRecoAna::fKineticEnergyMin
private

Definition at line 57 of file OpticalRecoAna_module.cc.

int opreco::OpticalRecoAna::fMatchIndex
private

Definition at line 124 of file OpticalRecoAna_module.cc.

int opreco::OpticalRecoAna::fMatchIndex_NotNu
private

Definition at line 125 of file OpticalRecoAna_module.cc.

TTree* opreco::OpticalRecoAna::fMatchTree_PF
private

Definition at line 104 of file OpticalRecoAna_module.cc.

TTree* opreco::OpticalRecoAna::fMatchTree_PF_NotNu
private

Definition at line 105 of file OpticalRecoAna_module.cc.

TH1I* opreco::OpticalRecoAna::fNBeamFlashes
private

Definition at line 102 of file OpticalRecoAna_module.cc.

std::vector<particle_match> opreco::OpticalRecoAna::fParticle_match_vector
private

Definition at line 63 of file OpticalRecoAna_module.cc.

int opreco::OpticalRecoAna::fParticleID
private

Definition at line 108 of file OpticalRecoAna_module.cc.

int opreco::OpticalRecoAna::fParticleMother
private

Definition at line 109 of file OpticalRecoAna_module.cc.

float opreco::OpticalRecoAna::fParticleTime
private

Definition at line 111 of file OpticalRecoAna_module.cc.

int opreco::OpticalRecoAna::fParticleTrackID
private

Definition at line 110 of file OpticalRecoAna_module.cc.

float opreco::OpticalRecoAna::fParticleVx
private

Definition at line 112 of file OpticalRecoAna_module.cc.

float opreco::OpticalRecoAna::fParticleVy
private

Definition at line 113 of file OpticalRecoAna_module.cc.

float opreco::OpticalRecoAna::fParticleVz
private

Definition at line 114 of file OpticalRecoAna_module.cc.

float opreco::OpticalRecoAna::fPEMin
private

Definition at line 58 of file OpticalRecoAna_module.cc.

int opreco::OpticalRecoAna::fRun
private

Definition at line 106 of file OpticalRecoAna_module.cc.

TH1F* opreco::OpticalRecoAna::fTimeDiff
private

Definition at line 100 of file OpticalRecoAna_module.cc.

TH1F* opreco::OpticalRecoAna::fTimeDiff_fine
private

Definition at line 101 of file OpticalRecoAna_module.cc.

float opreco::OpticalRecoAna::fTimeMatchMax
private

Definition at line 59 of file OpticalRecoAna_module.cc.

std::vector<track_match> opreco::OpticalRecoAna::fTrack_match_vector
private

Definition at line 62 of file OpticalRecoAna_module.cc.

std::string opreco::OpticalRecoAna::fTrackModuleLabel
private

Definition at line 56 of file OpticalRecoAna_module.cc.


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