GENIEGenerator
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
HNLFluxContainer.h
Go to the documentation of this file.
1 //____________________________________________________________________________
2 /*!
3 
4 \class genie::hnl::FluxContainer
5 
6 \brief A GENIE flux container specific for HNL containers.
7  Based on the dk2nu flux paradigm and genie::flux::GNuMIFluxPassThroughInfo
8 
9  Also see $GENIE/src/contrib/beamhnl/write_dk2nus.C for an example of
10  expected flux-input structure
11 
12 \author John Plows
13 
14 \created Feb 16, 2023
15 
16 \cpright Copyright (c) 2003-2024, The GENIE Collaboration
17  For the full text of the license visit http://copyright.genie-mc.org
18 
19 */
20 //____________________________________________________________________________
21 
22 #ifndef _HNL_FLUX_CONTAINER_H_
23 #define _HNL_FLUX_CONTAINER_H_
24 
25 #include <string>
26 #include <iostream>
27 #include <vector>
28 #include <set>
29 
30 #include <TVector3.h>
31 #include <TLorentzVector.h>
32 
36 
38 
39 class TFile;
40 class TChain;
41 class TTree;
42 class TBranch;
43 
44 using std::string;
45 using std::ostream;
46 
47 namespace genie{
48 
49  namespace hnl {
50 
51  class FluxContainer;
52  ostream & operator << (ostream & stream, const FluxContainer & gnmf);
53 
54  /// FluxContainer:
55  /// =============================
56  /// A C-struct that is based on the flux::GNuMIFluxPassThroughInfo
57  /// struct, but which is not GNuMI specific. Accepts enough information
58  /// about the HNL fluxes and the base flux to pass all the necessary
59  /// information to the hnl::FluxCreator class for flux calculations.
60  /// =============================
61 
62  class FluxContainer: public TObject {
63 
64  public:
65  FluxContainer();
66  virtual ~FluxContainer() {};
67 
68  void ResetCopy() const;
69  void Print(const Option_t * /* opt */) const;
70 
71  friend ostream & operator << (ostream & stream, const FluxContainer & gnmf);
72 
73  // members
74 
75  mutable int evtno; ///< Event number
76 
77  mutable int pdg; ///< HNL PDG code
78  mutable int parPdg; ///< parent PDG code
79  mutable int lepPdg; ///< PDG code of lepton produced with HNL on parent decay
80  mutable int nuPdg; ///< PDG code of SM neutrino that would have been produced
81 
82  mutable int prodChan; ///< Decay mode that produced HNL
83  mutable int nuProdChan; ///< Decay mode that would have produced SM neutrino
84 
85  mutable TVector3 startPoint; ///< parent decay vertex in NEAR coords [m]
86  mutable TVector3 targetPoint; ///< point in detector HNL is forced towards in NEAR coords [m]
87  mutable TVector3 startPointUser; ///< parent decay vertex in USER coords [m]
88  mutable TVector3 targetPointUser; ///< point in detector HNL is forced towards in USER coords [m]
89  mutable double delay; ///< delay HNL would have wrt SMv [ns]
90 
91  mutable TVector3 polz; ///< HNL polarisation vector, in HNL rest frame, in NEAR coords
92 
93  mutable TLorentzVector p4; ///< HNL momentum in NEAR coords [GeV/c]
94  mutable TLorentzVector parp4; ///< parent momentum at HNL production in NEAR coords [GeV/c]
95  mutable TLorentzVector p4User; ///< HNL momentum in USER coords [GeV/c]
96  mutable TLorentzVector parp4User; ///< parent momentum at HNL production in USER coords [GeV/c]
97 
98  mutable double Ecm; ///< Parent rest-frame energy of HNL [GeV]
99  mutable double nuEcm; ///< Parent rest-frame energy of equivalent SM neutrino [GeV]
100 
101  mutable double XYWgt; ///< geometric acceptance (angular size of detector in parent rest frame)
102  mutable double boostCorr; ///< boost correction wrt parent rest-frame (ELAB = ECM * boostCorr)
103 
104  mutable double accCorr; ///< acceptance correction (collimation effect. SM v == 1)
105  mutable double zetaMinus; ///< minimum angular deviation from parent momentum to reach detector [deg]
106  mutable double zetaPlus; ///< maximum angular deviation from parent momentum to reach detector [deg]
107 
108  mutable double acceptance; ///< full acceptance == XYWgt * boostCorr^2 * accCorr
109 
110  mutable double nimpwt; ///< Weight of parent
111 
112 
113  }; // class FluxContainer
114 
115  } // namespace hnl
116 
117 } // namespace genie
118 
119 #endif // #ifndef _HNL_FLUX_CONTAINER_H_
TLorentzVector parp4
parent momentum at HNL production in NEAR coords [GeV/c]
double Ecm
Parent rest-frame energy of HNL [GeV].
double zetaMinus
minimum angular deviation from parent momentum to reach detector [deg]
double nuEcm
Parent rest-frame energy of equivalent SM neutrino [GeV].
double delay
delay HNL would have wrt SMv [ns]
TVector3 startPoint
parent decay vertex in NEAR coords [m]
int lepPdg
PDG code of lepton produced with HNL on parent decay.
TVector3 polz
HNL polarisation vector, in HNL rest frame, in NEAR coords.
int parPdg
parent PDG code
A GENIE flux container specific for HNL containers. Based on the dk2nu flux paradigm and genie::flux:...
double zetaPlus
maximum angular deviation from parent momentum to reach detector [deg]
ostream & operator<<(ostream &stream, const FluxContainer &info)
TVector3 startPointUser
parent decay vertex in USER coords [m]
TLorentzVector parp4User
parent momentum at HNL production in USER coords [GeV/c]
void Print(const Option_t *) const
TLorentzVector p4
HNL momentum in NEAR coords [GeV/c].
TLorentzVector p4User
HNL momentum in USER coords [GeV/c].
int prodChan
Decay mode that produced HNL.
double acceptance
full acceptance == XYWgt * boostCorr^2 * accCorr
TVector3 targetPointUser
point in detector HNL is forced towards in USER coords [m]
TVector3 targetPoint
point in detector HNL is forced towards in NEAR coords [m]
double nimpwt
Weight of parent.
double accCorr
acceptance correction (collimation effect. SM v == 1)
int nuPdg
PDG code of SM neutrino that would have been produced.
double XYWgt
geometric acceptance (angular size of detector in parent rest frame)
int nuProdChan
Decay mode that would have produced SM neutrino.
double boostCorr
boost correction wrt parent rest-frame (ELAB = ECM * boostCorr)
friend ostream & operator<<(ostream &stream, const FluxContainer &gnmf)