Jpp  18.5.0
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | Public Types | Public Member Functions | Public Attributes | List of all members
JRECONSTRUCTION::JShowerPrefit Class Reference

class to handle first step of the shower reconstruction in ORCA: it reconstructs the shower vertex, intended as the shower brightest point, as the barycenter of the hits More...

#include <JShowerPrefit.hh>

Inheritance diagram for JRECONSTRUCTION::JShowerPrefit:
JRECONSTRUCTION::JShowerPrefitParameters_t TObject

Classes

struct  match_t
 Auxiliary class to match hit to root hit. More...
 

Public Types

typedef JTRIGGER::JHitR1 hit_type
 
typedef std::vector< hit_typebuffer_type
 

Public Member Functions

 JShowerPrefit (const JShowerPrefitParameters_t &parameters, const JModuleRouter &router, const int debug=0)
 Parameterized constructor. More...
 
JEvt operator() (const KM3NETDAQ::JDAQEvent &event) const
 Declaration of the operator that performs the reconstruction. More...
 
void reset ()
 Reset fit parameters. More...
 
bool equals (const JShowerPrefitParameters_t &parameters) const
 Equality. More...
 
 ClassDef (JShowerPrefitParameters_t, 2)
 

Public Attributes

const JModuleRouterrouter
 
int factoryLimit
 factory limit for combinatorics More...
 
size_t NMaxHits
 maximal number of hits More...
 
double sigma_ns
 time resolution [ns] More...
 
int numberOfOutliers
 maximum number of outliers More...
 
double TMaxLocal_ns
 time window for local coincidences [ns] More...
 
double ctMin
 minimal cosine space angle between PMT axes More...
 
double roadWidth_m
 road width [m] More...
 
size_t numberOfPrefits
 number of prefits to be saved in output More...
 

Detailed Description

class to handle first step of the shower reconstruction in ORCA: it reconstructs the shower vertex, intended as the shower brightest point, as the barycenter of the hits

Definition at line 52 of file JShowerPrefit.hh.

Member Typedef Documentation

Definition at line 57 of file JShowerPrefit.hh.

Definition at line 58 of file JShowerPrefit.hh.

Constructor & Destructor Documentation

JRECONSTRUCTION::JShowerPrefit::JShowerPrefit ( const JShowerPrefitParameters_t parameters,
const JModuleRouter router,
const int  debug = 0 
)
inline

Parameterized constructor.

Parameters
parametersstruct that holds default-optimized parameters for the reconstruction.
routermodule router, this is built via detector file.
debugdebug

Definition at line 68 of file JShowerPrefit.hh.

70  :
71  JShowerPrefitParameters_t(parameters),
72  router(router)
73  {}
const JModuleRouter & router

Member Function Documentation

JEvt JRECONSTRUCTION::JShowerPrefit::operator() ( const KM3NETDAQ::JDAQEvent event) const
inline

Declaration of the operator that performs the reconstruction.

Parameters
eventwhich is a JDAQEvent

Definition at line 81 of file JShowerPrefit.hh.

82  {
83 
84  using namespace std;
85  using namespace JPP;
86 
87  const double STANDARD_DEVIATIONS = 3.0;
88 
89  typedef JEstimator<JPoint4D> JEstimator_t;
90 
91  const JBuildL0<hit_type> buildL0;
93  const JMatch3G<hit_type> match3G(roadWidth_m, TMaxLocal_ns); // causality relation for showers
94 
95  //define empty vectors to be filled with JHitL0 and JHitL1
96  buffer_type dataL0;
97  buffer_type dataL1;
98 
99  JEvt out;
100 
101  buffer_type buffer;
102 
103  buildL0(JDAQTimeslice(event, true), router, back_inserter(buffer)); // true => snapshot
104  buildL2(JDAQTimeslice(event, false), router, back_inserter(dataL1)); // false => triggered
105 
106  copy(dataL1.begin(), dataL1.end(), back_inserter(dataL0));
107 
108  for (buffer_type::const_iterator i = buffer.begin(); i != buffer.end(); ++i) {
109 
110  if (find_if(dataL1.begin(), dataL1.end(), match_t(*i, TMaxLocal_ns)) == dataL1.end()) {
111  dataL0.push_back(*i);
112  }
113  }
114 
115  for (buffer_type::const_iterator root = dataL1.begin(); root != dataL1.end(); ++root) {
116 
117  buffer_type data(1, *root);
118 
119  JBinder2nd<hit_type> matching = JBind2nd(match3G, *root);
120 
121  for (buffer_type::const_iterator i = dataL0.begin(); i != dataL0.end(); ++i) {
122 
123  if(( root->getModuleIdentifier() != i->getModuleIdentifier() ) && matching(*i)){
124  data.push_back(*i);
125  }
126  }
127 
128  buffer_type::iterator __end1 = clusterizeWeight(data.begin() + 1, data.end(), match3G);
129 
130  // 4D fit
131  JEstimator_t fit;
132  JPoint4D vx;
133  double chi2 = numeric_limits<double>::max();
134  int NDF = distance(data.begin(), __end1) - JEstimator_t::NUMBER_OF_PARAMETERS;
135  int N = getCount(data.begin(), __end1);
136 
137  if(distance(data.begin(), __end1) <= factoryLimit){
138 
139  double ymin = numeric_limits<double>::max();
140 
141  buffer_type::iterator __end2 = __end1;
142 
143  for (int n = 0; n <= numberOfOutliers && distance(data.begin(), __end2) >=
144  JEstimator_t::NUMBER_OF_PARAMETERS; ++n, --__end2) {
145 
146  sort(data.begin() + 1, __end1, hit_type::compare);
147 
148  do {
149  try {
150 
151  fit(data.begin(), __end2);
152 
153  double y = getChi2(fit, data.begin(), __end2, sigma_ns);
154 
155  if (y < ymin) {
156  ymin = y;
157  vx = fit;
158  chi2 = ymin;
159  NDF = distance(data.begin(), __end2) - JEstimator_t::NUMBER_OF_PARAMETERS;
160  N = getCount(data.begin(), __end2);
161  }
162  }
163  catch(JException& error) { }
164 
165  } while (next_permutation(data.begin() + 1, __end2, __end1, hit_type::compare));
166 
167  ymin -= STANDARD_DEVIATIONS * STANDARD_DEVIATIONS;
168  }
169 
170  } else {
171 
172  const int number_of_outliers = distance(data.begin(), __end1) - JEstimator_t::NUMBER_OF_PARAMETERS - 1;
173 
174  buffer_type::iterator __end2 = __end1;
175 
176  for (int n = 0; n <= number_of_outliers; ++n) {
177 
178  try{
179 
180  fit(data.begin(), __end2);
181  vx = fit;
182  chi2 = getChi2(fit, data.begin(), __end2, sigma_ns);
183  NDF = distance(data.begin(), __end2) - JEstimator_t::NUMBER_OF_PARAMETERS;
184  N = getCount(data.begin(), __end2);
185 
186  }
187  catch(const JException& error){ }
188 
189  double ymax = 0;
190  buffer_type::iterator imax = __end2;
191 
192  for (buffer_type::iterator i = data.begin() + 1; i != __end2; ++i) {
193 
194  double y = getChi2(fit, *i, sigma_ns);
195 
196  if (y > ymax) {
197  ymax = y;
198  imax = i;
199  }
200  }
201 
202  if (ymax > STANDARD_DEVIATIONS * STANDARD_DEVIATIONS) {
203  --__end2;
204  swap(*imax, *__end2);
205  } else {
206  break;
207  }
208  }
209  }
210 
211  if (NDF >= 0 && chi2 > numeric_limits<double>::lowest()) {
212 
213  const JGEOMETRY3D::JTrack3D fitResult(vx, JGEOMETRY3D::JVersor3Z());
214 
215  out.push_back(getFit(JHistory(JSHOWERPREFIT), fitResult, getQuality(chi2, N), NDF));
216 
217  out.rbegin()->setW(13, chi2);
218  out.rbegin()->setW(14, N);
219  }
220  }
221 
222  return out;
223 
224  }
int factoryLimit
factory limit for combinatorics
General exception.
Definition: JException.hh:24
3G match criterion.
Definition: JMatch3G.hh:29
static struct JTRIGGER::clusterizeWeight clusterizeWeight
JBinder2nd< JHit_t > JBind2nd(const JMatch< JHit_t > &match, const JHit_t &second)
Auxiliary method to create JBinder2nd object.
Definition: JBind2nd.hh:66
Linear fit of bright point (position and time) between hits (objects with position and time)...
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
Data structure for vertex fit.
Definition: JPoint4D.hh:22
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.
Auxiliary class to convert binary JMatch operator and given hit to unary match operator.
Definition: JBind2nd.hh:24
double getQuality(const double chi2, const int N, const int NDF)
Get quality of fit.
static struct JTRIGGER::JHitR1::compare compare
const int n
Definition: JPolint.hh:786
static const int JSHOWERPREFIT
Template L2 builder.
Definition: JBuildL2.hh:45
const JModuleRouter & router
Acoustic event fit.
double ctMin
minimal cosine space angle between PMT axes
Data time slice.
Data structure for L2 parameters.
then usage $script< input file >[option[primary[working directory]]] nWhere option can be N
Definition: JMuonPostfit.sh:40
JFIT::JHistory JHistory
Definition: JHistory.hh:354
then if[[!-f $DETECTOR]] then JDetector sh $DETECTOR fi cat $WORKDIR trigger_parameters txt<< EOFtrigger3DMuon.enabled=1;trigger3DMuon.numberOfHits=5;trigger3DMuon.gridAngle_deg=1;ctMin=0.0;TMaxLocal_ns=15.0;EOF set_variable TRIGGEREFFICIENCY_TRIGGERED_EVENTS_ONLY INPUT_FILES=() for((i=1;$i<=$NUMBER_OF_RUNS;++i));do JSirene.sh $DETECTOR $JPP_DATA/genhen.km3net_wpd_V2_0.evt.gz $WORKDIR/sirene_ ${i}.root JTriggerEfficiency.sh $DETECTOR $DETECTOR $WORKDIR/sirene_ ${i}.root $WORKDIR/trigger_efficiency_ ${i}.root $WORKDIR/trigger_parameters.txt $JPP_DATA/PMT_parameters.txt INPUT_FILES+=($WORKDIR/trigger_efficiency_ ${i}.root) done for ANGLE_DEG in $ANGLES_DEG[*];do set_variable SIGMA_NS 3.0 set_variable OUTLIERS 3 set_variable OUTPUT_FILE $WORKDIR/matrix\[${ANGLE_DEG}\deg\].root $JPP_DIR/examples/JReconstruction-f"$INPUT_FILES[*]"-o $OUTPUT_FILE-S ${SIGMA_NS}-A ${ANGLE_DEG}-O ${OUTLIERS}-d ${DEBUG}--!fiif[[$OPTION=="plot"]];then if((0));then for H1 in h0 h1;do JPlot1D-f"$WORKDIR/matrix["${^ANGLES_DEG}" deg].root:${H1}"-y"1 2e3"-Y-L TR-T""-\^"number of events [a.u.]"-> o chi2
Definition: JMatrixNZ.sh:106
int getCount(const T &hit)
Get hit count.
void copy(const Head &from, JHead &to)
Copy header from from to to.
Definition: JHead.cc:162
bool next_permutation(T __begin, T __last, T __end, JComparator_t compare, std::bidirectional_iterator_tag)
Implementation of method next_permutation for bidirectional iterators.
Definition: JPermutation.hh:20
Template L0 hit builder.
Definition: JBuildL0.hh:35
double getChi2(const double P)
Get chi2 corresponding to given probability.
Definition: JFitToolkit.hh:56
Data structure for normalised vector in positive z-direction.
Definition: JVersor3Z.hh:39
do JPlot2D f $WORKDIR canberra[${EMITTER}] root
Definition: JCanberra.sh:136
double TMaxLocal_ns
time window for local coincidences [ns]
void JRECONSTRUCTION::JShowerPrefitParameters_t::reset ( )
inlineinherited

Reset fit parameters.

Definition at line 35 of file JShowerPrefitParameters_t.hh.

36  {
37  factoryLimit = 40;
38  NMaxHits = 20;
39  sigma_ns = 3.0;
40  numberOfOutliers = 4;
41  TMaxLocal_ns = 20.0;
42  ctMin = -0.7;
43  roadWidth_m = 50.0;
44  numberOfPrefits = 50;
45  }
int factoryLimit
factory limit for combinatorics
double ctMin
minimal cosine space angle between PMT axes
size_t numberOfPrefits
number of prefits to be saved in output
double TMaxLocal_ns
time window for local coincidences [ns]
bool JRECONSTRUCTION::JShowerPrefitParameters_t::equals ( const JShowerPrefitParameters_t parameters) const
inlineinherited

Equality.

Parameters
parametersfit parameters
Returns
true if equals; else false

Definition at line 53 of file JShowerPrefitParameters_t.hh.

54  {
55  return (this->factoryLimit == parameters.factoryLimit &&
56  this->NMaxHits == parameters.NMaxHits &&
57  this->sigma_ns == parameters.sigma_ns &&
58  this->numberOfOutliers == parameters.numberOfOutliers &&
59  this->TMaxLocal_ns == parameters.TMaxLocal_ns &&
60  this->ctMin == parameters.ctMin &&
61  this->roadWidth_m == parameters.roadWidth_m &&
62  this->numberOfPrefits == parameters.numberOfPrefits);
63  }
int factoryLimit
factory limit for combinatorics
*fatal Wrong number of arguments esac JCookie sh typeset Z DETECTOR typeset Z SOURCE_RUN typeset Z TARGET_RUN set_variable PARAMETERS_FILE $WORKDIR parameters
Definition: diff-Tuna.sh:38
then usage $script< detector file >< detectorfile > nIf the range of floors is the first detector file is aligned to the second before the comparison nIn this
JRECONSTRUCTION::JShowerPrefitParameters_t::ClassDef ( JShowerPrefitParameters_t  ,
 
)
inherited

Member Data Documentation

const JModuleRouter& JRECONSTRUCTION::JShowerPrefit::router

Definition at line 226 of file JShowerPrefit.hh.

int JRECONSTRUCTION::JShowerPrefitParameters_t::factoryLimit
inherited

factory limit for combinatorics

Definition at line 67 of file JShowerPrefitParameters_t.hh.

size_t JRECONSTRUCTION::JShowerPrefitParameters_t::NMaxHits
inherited

maximal number of hits

Definition at line 68 of file JShowerPrefitParameters_t.hh.

double JRECONSTRUCTION::JShowerPrefitParameters_t::sigma_ns
inherited

time resolution [ns]

Definition at line 69 of file JShowerPrefitParameters_t.hh.

int JRECONSTRUCTION::JShowerPrefitParameters_t::numberOfOutliers
inherited

maximum number of outliers

Definition at line 70 of file JShowerPrefitParameters_t.hh.

double JRECONSTRUCTION::JShowerPrefitParameters_t::TMaxLocal_ns
inherited

time window for local coincidences [ns]

Definition at line 71 of file JShowerPrefitParameters_t.hh.

double JRECONSTRUCTION::JShowerPrefitParameters_t::ctMin
inherited

minimal cosine space angle between PMT axes

Definition at line 72 of file JShowerPrefitParameters_t.hh.

double JRECONSTRUCTION::JShowerPrefitParameters_t::roadWidth_m
inherited

road width [m]

Definition at line 73 of file JShowerPrefitParameters_t.hh.

size_t JRECONSTRUCTION::JShowerPrefitParameters_t::numberOfPrefits
inherited

number of prefits to be saved in output

Definition at line 74 of file JShowerPrefitParameters_t.hh.


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