ElectronNeutrinoSelection
 All Classes Functions Variables Groups
ElectronNeutrinoFilter.h
1 #include "art/Framework/Core/EDFilter.h"
2 #include "art/Framework/Core/ModuleMacros.h"
3 #include "art/Framework/Principal/Event.h"
4 #include "art/Framework/Principal/Handle.h"
5 #include "art/Framework/Principal/Run.h"
6 #include "art/Framework/Principal/SubRun.h"
7 #include "canvas/Utilities/InputTag.h"
8 #include "fhiclcpp/ParameterSet.h"
9 #include "messagefacility/MessageLogger/MessageLogger.h"
10 #include "ElectronEventSelectionAlg.h"
11 #include "art/Framework/Services/Optional/TFileService.h"
12 #include "larcoreobj/SummaryData/POTSummary.h"
13 #include "TTree.h"
14 #include "TH1F.h"
15 #include "nusimdata/SimulationBase/MCParticle.h"
16 #include "nusimdata/SimulationBase/MCTruth.h"
17 #include "larevt/SpaceChargeServices/SpaceChargeService.h"
18 #include "lardata/DetectorInfoServices/DetectorPropertiesService.h"
19 #include "lardata/DetectorInfoServices/DetectorClocksService.h"
20 #include "lardata/DetectorInfo/DetectorProperties.h"
21 #include "uboone/EventWeight/EventWeightTreeUtility.h"
22 #include "uboone/EventWeight/MCEventWeight.h"
23 
24 #include <memory>
25 
26 namespace lee {
27  class ElectronNeutrinoFilter;
28 }
29 
30 class lee::ElectronNeutrinoFilter : public art::EDFilter {
31 
32  public:
33  explicit ElectronNeutrinoFilter(fhicl::ParameterSet const & p);
34  // The compiler-generated destructor is fine for non-base
35  // classes without bare pointers or other resource use.
36 
37  // Plugins should not be copied or assigned.
40  ElectronNeutrinoFilter & operator = (ElectronNeutrinoFilter const &) = delete;
41  ElectronNeutrinoFilter & operator = (ElectronNeutrinoFilter &&) = delete;
42 
43  // Required functions.
44  bool filter(art::Event & e) override;
45 
46  // Selected optional functions.
47  void reconfigure(fhicl::ParameterSet const & p) override;
48  void respondToOpenInputFile(art::FileBlock const &fb) override;
49  bool endSubRun(art::SubRun &sr) override;
50  void clear();
51 
52  private:
53  TTree *myPOTTTree;
54  TTree *myTTree;
55 
56  lee::ElectronEventSelectionAlg fElectronEventSelectionAlg;
57  std::ofstream _run_subrun_list_file;
58  GeometryHelper geoHelper;
59  PandoraInterfaceHelper pandoraHelper;
60 
61  float _lee_bins[12] = {200, 300, 375, 475, 550, 675, 800, 950, 1100, 1300, 1500, 3000};
62  float _lee_scaling[13] = {0, 3.88549, 3.05421, 1.59615, 0.383725, 0, 0, 0, 0, 0, 0, 0, 0};
63 
64  TH1F *_h_lee_scaling = new TH1F("h_lee_scaling", "", 11, _lee_bins);
65  int _selection_result;
66 
67  std::vector< std::vector<double> > _genie_weights;
68  std::vector< std::string > _genie_names;
69 
70  std::vector< std::vector<double> > _flux_weights;
71  std::vector< std::string > _flux_names;
72 
73  double _lee_weight;
74  double _bnbweight;
75  double _sum_pot;
76  bool _passed;
77  bool m_isOverlaidSample;
78  bool m_isData;
79  unsigned int _run_sr;
80  unsigned int _subrun_sr;
81  unsigned int _n_true_nu;
82  int _ccnc;
83  double _qsqr;
84  double _pt;
85  double _theta;
86  double _w;
87  int _nu_pdg;
88  int _interaction_type;
89  unsigned int _n_primaries;
90  bool _true_nu_is_fiducial;
91  double _nu_energy;
92  double _pot;
93  double _true_vx;
94  double _true_vy;
95  double _true_vz;
96  double _true_vx_sce;
97  double _true_vy_sce;
98  double _true_vz_sce;
99 
100  std::vector<double> _nu_daughters_E;
101  std::vector<int> _nu_daughters_pdg;
102  std::vector<double> _flash_time;
103  std::vector<double> _flash_pe;
104 
105  std::vector < std::vector<double> > _nu_daughters_p;
106  std::vector < std::vector<double> > _nu_daughters_start_v;
107  std::vector < std::vector<double> > _nu_daughters_end_v;
108 
109  std::string _mctruthLabel = "generator";
110  std::string _mcparticleLabel = "largeant";
111 };
Definition: PandoraInterfaceHelper.h:55
Definition: ElectronEventSelectionAlg.h:61
Definition: GeometryHelper.h:40
Definition: ElectronNeutrinoFilter.h:30