Jpp  master_rocky-43-ge265d140c
the software that should make you happy
Public Member Functions | Public Attributes | Private Types | Private Attributes | List of all members
JRECONSTRUCTION::JShowerDirectionPrefit Class Reference

class to handle the direction fit of the shower reconstruction, mainly dedicated for ORCA More...

#include <JShowerDirectionPrefit.hh>

Inheritance diagram for JRECONSTRUCTION::JShowerDirectionPrefit:
JRECONSTRUCTION::JShowerDirectionPrefitParameters_t JFIT::JRegressor< JModel_t, JMinimiser_t > TObject

Public Member Functions

 JShowerDirectionPrefit (const JShowerDirectionPrefitParameters_t &parameters, const JModuleRouter &router, const JSummaryRouter &summary, const std::string pdfFile, const int debug=0)
 Parameterized constructor. More...
 
JEvt operator() (const KM3NETDAQ::JDAQEvent &event, const JFIT::JEvt &in)
 Declaration of the member function that actually performs the reconstruction. More...
 
void reset ()
 Reset fit parameters. More...
 
bool equals (const JShowerDirectionPrefitParameters_t &parameters) const
 Equality. More...
 
 ClassDef (JShowerDirectionPrefitParameters_t, 2)
 

Public Attributes

const JModuleRouterrouter
 
const JSummaryRoutersummary
 
size_t numberOfPrefits
 number of prefits
More...
 
double TMax_ns
 maximum time for local coincidences [ns]
More...
 
double TMin_ns
 minimum time for local coincidences [ns]
More...
 
double DMax_m
 maximal distance to optical module [m] More...
 
double R_Hz
 default rate [Hz]
More...
 
double VMax_npe
 maximum number of of photo-electrons
More...
 
double scanAngle_deg
 scanning angle step in [deg] More...
 
double Emin_GeV
 minimum energy to scan More...
 
double Emax_GeV
 maximum energy to scan More...
 
int En
 number of points to scan in energy range More...
 

Private Types

typedef JRegressor< JShower3EZ, JAbstractMinimiserJRegressor_t
 

Private Attributes

vector< double > Ev
 
JPP::JOmega3D omega
 

Detailed Description

class to handle the direction fit of the shower reconstruction, mainly dedicated for ORCA

Definition at line 70 of file JShowerDirectionPrefit.hh.

Member Typedef Documentation

◆ JRegressor_t

Definition at line 75 of file JShowerDirectionPrefit.hh.

Constructor & Destructor Documentation

◆ JShowerDirectionPrefit()

JRECONSTRUCTION::JShowerDirectionPrefit::JShowerDirectionPrefit ( const JShowerDirectionPrefitParameters_t parameters,
const JModuleRouter router,
const JSummaryRouter summary,
const std::string  pdfFile,
const int  debug = 0 
)
inline

Parameterized constructor.

Parameters
parametersstruct that holds default-optimized parameters for the reconstruction, available in $JPP_DATA.
routermodule router, this is built via detector file.
summarysummary router
pdfFilePDF file
debugdebug

Definition at line 91 of file JShowerDirectionPrefit.hh.

95  :
97  JRegressor_t(pdfFile),
98  omega(parameters.scanAngle_deg * JMATH::PI / 180.0),
99  router(router),
101  {
102  using namespace JPP;
103 
105  JRegressor_t::T_ns.setRange(parameters.TMin_ns, parameters.TMax_ns);
106  JRegressor_t::Vmax_npe = VMax_npe;
107 
108  if (Emin_GeV > Emax_GeV || En <= 1) {
109  THROW(JException, "Invalid energy input " << Emin_GeV << ' ' << Emax_GeV << ' ' << En);
110  }
111 
112  const double base = std::pow((Emax_GeV / Emin_GeV), 1.0 / (En - 1));
113 
114  for (int i = 0; i != En; ++i) {
115  Ev.push_back(Emin_GeV * std::pow(base, i));
116  }
117  }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:712
int debug
debug level
Definition: JSirene.cc:69
General exception.
Definition: JException.hh:24
JRegressor< JShower3EZ, JAbstractMinimiser > JRegressor_t
T pow(const T &x, const double y)
Power .
Definition: JMath.hh:97
static const double PI
Mathematical constants.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).

Member Function Documentation

◆ operator()()

JEvt JRECONSTRUCTION::JShowerDirectionPrefit::operator() ( const KM3NETDAQ::JDAQEvent event,
const JFIT::JEvt in 
)
inline

Declaration of the member function that actually performs the reconstruction.

Parameters
eventDAQ event
ininput fits
Returns
result fits

Definition at line 126 of file JShowerDirectionPrefit.hh.

127  {
128  using namespace std;
129  using namespace JPP;
130 
131  typedef vector<JHitL0> JDataL0_t;
132  JBuildL0<JHitL0> buildL0;
133 
134  JEvt out;
135 
137 
138  JDataL0_t dataL0;
139 
140  buildL0(JDAQTimeslice(event, true), router, back_inserter(dataL0));
141 
142  for (JEvt::const_iterator shower = in.begin(); shower != in.end(); ++shower) {
143 
144  const JVertex3D Vertex(getPosition(*shower),shower->getT());
146 
147  const JFIT::JModel<JPoint4D> match(Vertex, DMax_m, JRegressor_t::T_ns);
148 
149  for (JDataL0_t::const_iterator i = dataL0.begin(); i != dataL0.end(); ++i) {
150  if (match(*i)) {
151  top.insert(i->getPMTIdentifier());
152  }
153  }
154 
155  const JDetectorSubset_t subdetector(detector, Vertex.getPosition(), DMax_m);
156 
158  for (JDetectorSubset_t::const_iterator module = subdetector.begin(); module != subdetector.end(); ++module) {
159  const JDAQSummaryFrame& frame = summary.getSummaryFrame(module->getID());
160 
161  JModule dom(*module);
162 
163  for (size_t i = 0; i != dom.size(); ++i) {
164 
165  if (getDAQStatus(frame, *module, i) &&
166  getPMTStatus(frame, *module, i) &&
167  frame[i].is_valid() &&
168  !module->getPMT(i).has(PMT_DISABLE)) {
169 
170  const JDAQPMTIdentifier id(module->getID(), i);
171 
172  const double rate_Hz = summary.getRate(id);
173  const size_t count = top.count(id);
174 
175  data.push_back(JPMTW0(dom.getPMT(i), rate_Hz, count));
176  }
177  }
178  }
179 
180  const JShower3EZ sh(JVertex3D(JVector3D(0,0,0), sh.getT()), JVersor3Z(), 1);
181 
182  for (JOmega3D_t::const_iterator dir = omega.begin(); dir != omega.end(); ++dir) {
183  const JRotation3D R(*dir);
184  vector<double> chi2v(En, 0.0);
185  for (vector<JPMTW0>::const_iterator i = data.begin(); i != data.end(); ++i) {
186  JPMTW0 pmt = *i;
187  pmt.rotate(R);
188  JNPE_t::result_type H1 = (*this).getH1(sh, pmt);
189  JNPE_t::result_type H0 = (*this).getH0(pmt.getR()); // getH0 = Get background hypothesis value for time integrated PDF.
190  const bool hit = pmt.getN() != 0;
191  for(size_t j=0;j!=chi2v.size();++j){
192  chi2v[j]+= getChi2(get_value(H0+Ev[j]*H1), hit); // H1 is linear with E
193  }
194  }
195  //Store only the lowest chi2 for a given direction
196  auto minChi2 = std::min_element(chi2v.begin(), chi2v.end());
197  JShower3E sh_fit(Vertex, JDirection3D(*dir), Ev[minChi2-chi2v.begin()]);
198  out.push_back(getFit(JHistory(shower->getHistory()).add(JSHOWERDIRECTIONPREFIT), sh_fit, getQuality(*minChi2), data.size(), sh_fit.getE()));
199  }
200  }
201 
202  return out;
203 
204  }
Detector subset without binary search functionality.
Detector data structure.
Definition: JDetector.hh:96
Data structure for a composite optical module.
Definition: JModule.hh:75
Data structure for fit of straight line in positive z-direction with energy.
Definition: JShower3EZ.hh:30
JAxis3D & rotate(const JRotation3D &R)
Rotate axis.
Definition: JAxis3D.hh:225
Data structure for direction in three dimensions.
Definition: JDirection3D.hh:35
Rotation matrix.
Definition: JRotation3D.hh:114
3D track with energy.
Definition: JTrack3E.hh:32
Data structure for vector in three dimensions.
Definition: JVector3D.hh:36
Data structure for normalised vector in positive z-direction.
Definition: JVersor3Z.hh:41
const JClass_t & getReference() const
Get reference to object.
Definition: JReference.hh:38
const JDAQSummaryFrame & getSummaryFrame() const
Get default summary frame.
double getRate() const
Get default rate.
Template specialisation of L0 builder for JHitL0 data type.
Definition: JBuildL0.hh:105
Data storage class for rate measurements of all PMTs in one module.
static const int JSHOWERDIRECTIONPREFIT
double getChi2(const double P)
Get chi2 corresponding to given probability.
Definition: JFitToolkit.hh:56
double getQuality(const double chi2, const int N, const int NDF)
Get quality of fit.
JPosition3D getPosition(const JFit &fit)
Get position.
JFIT::JHistory JHistory
Definition: JHistory.hh:354
JFit getFit(const JHistory &history, const JTrack3D &track, const double Q, const int NDF, const double energy=0.0, const int status=SINGLE_STAGE)
Get fit.
bool is_valid(const json &js)
Check validity of JSon data.
JResultEvaluator< JResult_t >::result_type get_value(const JResult_t &value)
Helper method to recursively evaluate a to function value.
Definition: JResult.hh:998
int j
Definition: JPolint.hh:792
bool getDAQStatus(const JDAQFrameStatus &frame, const JStatus &status)
Test status of DAQ.
bool getPMTStatus(const JStatus &status)
Test status of PMT.
Definition: JSTDTypes.hh:14
static const int PMT_DISABLE
KM3NeT Data Definitions v3.4.0-8-ge14cb17 https://git.km3net.de/common/km3net-dataformat.
Definition: pmt_status.hh:12
Detector file.
Definition: JHead.hh:227
Acoustic event fit.
JHistory & add(const int type)
Add event to history.
Definition: JHistory.hh:295
Template specialisation of class JModel to match hit with bright point.
Definition: JFit/JModel.hh:123
Auxiliary class for handling PMT geometry, rate and response.
Definition: JPMTW0.hh:24
int getN() const
Get number of hits.
Definition: JPMTW0.hh:67
double getR() const
Get rate.
Definition: JPMTW0.hh:56

◆ reset()

void JRECONSTRUCTION::JShowerDirectionPrefitParameters_t::reset ( )
inlineinherited

Reset fit parameters.

Definition at line 35 of file JShowerDirectionPrefitParameters_t.hh.

36  {
37  numberOfPrefits = 1;
38  TMax_ns = 30;
39  TMin_ns = -30;
40  DMax_m = 80;
41  scanAngle_deg = 10;
42  R_Hz = 10.0e3;
43  VMax_npe = 20.0;
44  Emin_GeV = 1;
45  Emax_GeV = 1000;
46  En = 50;
47  }

◆ equals()

bool JRECONSTRUCTION::JShowerDirectionPrefitParameters_t::equals ( const JShowerDirectionPrefitParameters_t parameters) const
inlineinherited

Equality.

Parameters
parametersfit parameters
Returns
true if equals; else false

Definition at line 55 of file JShowerDirectionPrefitParameters_t.hh.

56  {
57  return (this->TMax_ns == parameters.TMax_ns &&
58  this->TMin_ns == parameters.TMin_ns &&
59  this->numberOfPrefits == parameters.numberOfPrefits &&
60  this->DMax_m == parameters.DMax_m &&
61  this->R_Hz == parameters.R_Hz &&
62  this->scanAngle_deg == parameters.scanAngle_deg &&
63  this->VMax_npe == parameters.VMax_npe &&
64  this->Emin_GeV == parameters.Emin_GeV &&
65  this->Emax_GeV == parameters.Emax_GeV &&
66  this->En == parameters.En );
67  }

◆ ClassDef()

JRECONSTRUCTION::JShowerDirectionPrefitParameters_t::ClassDef ( JShowerDirectionPrefitParameters_t  ,
 
)
inherited

Member Data Documentation

◆ Ev

vector<double> JRECONSTRUCTION::JShowerDirectionPrefit::Ev
private

Definition at line 77 of file JShowerDirectionPrefit.hh.

◆ omega

JPP::JOmega3D JRECONSTRUCTION::JShowerDirectionPrefit::omega
private

Definition at line 78 of file JShowerDirectionPrefit.hh.

◆ router

const JModuleRouter& JRECONSTRUCTION::JShowerDirectionPrefit::router

Definition at line 205 of file JShowerDirectionPrefit.hh.

◆ summary

const JSummaryRouter& JRECONSTRUCTION::JShowerDirectionPrefit::summary

Definition at line 206 of file JShowerDirectionPrefit.hh.

◆ numberOfPrefits

size_t JRECONSTRUCTION::JShowerDirectionPrefitParameters_t::numberOfPrefits
inherited

number of prefits

Definition at line 71 of file JShowerDirectionPrefitParameters_t.hh.

◆ TMax_ns

double JRECONSTRUCTION::JShowerDirectionPrefitParameters_t::TMax_ns
inherited

maximum time for local coincidences [ns]

Definition at line 72 of file JShowerDirectionPrefitParameters_t.hh.

◆ TMin_ns

double JRECONSTRUCTION::JShowerDirectionPrefitParameters_t::TMin_ns
inherited

minimum time for local coincidences [ns]

Definition at line 73 of file JShowerDirectionPrefitParameters_t.hh.

◆ DMax_m

double JRECONSTRUCTION::JShowerDirectionPrefitParameters_t::DMax_m
inherited

maximal distance to optical module [m]

Definition at line 74 of file JShowerDirectionPrefitParameters_t.hh.

◆ R_Hz

double JRECONSTRUCTION::JShowerDirectionPrefitParameters_t::R_Hz
inherited

default rate [Hz]

Definition at line 75 of file JShowerDirectionPrefitParameters_t.hh.

◆ VMax_npe

double JRECONSTRUCTION::JShowerDirectionPrefitParameters_t::VMax_npe
inherited

maximum number of of photo-electrons

Definition at line 76 of file JShowerDirectionPrefitParameters_t.hh.

◆ scanAngle_deg

double JRECONSTRUCTION::JShowerDirectionPrefitParameters_t::scanAngle_deg
inherited

scanning angle step in [deg]

Definition at line 77 of file JShowerDirectionPrefitParameters_t.hh.

◆ Emin_GeV

double JRECONSTRUCTION::JShowerDirectionPrefitParameters_t::Emin_GeV
inherited

minimum energy to scan

Definition at line 78 of file JShowerDirectionPrefitParameters_t.hh.

◆ Emax_GeV

double JRECONSTRUCTION::JShowerDirectionPrefitParameters_t::Emax_GeV
inherited

maximum energy to scan

Definition at line 79 of file JShowerDirectionPrefitParameters_t.hh.

◆ En

int JRECONSTRUCTION::JShowerDirectionPrefitParameters_t::En
inherited

number of points to scan in energy range

Definition at line 80 of file JShowerDirectionPrefitParameters_t.hh.


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