81 using namespace KM3NETDAQ;
84 typedef JParallelFileScanner_t::multi_pointer_type multi_pointer_type;
86 JParallelFileScanner_t inputFile;
97 JParser<> zap(
"Program to perform detector calibration using reconstructed muon trajectories.");
101 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
108 catch(
const exception& error) {
109 FATAL(error.what() << endl);
117 WARNING(
"Number of prefits " <<
parameters.numberOfPrefits <<
" != " << 1 << endl);
142 while (inputFile.hasNext()) {
144 STATUS(
"event: " << setw(10) << inputFile.getCounter() <<
'\r');
DEBUG(endl);
146 multi_pointer_type ps = inputFile.next();
151 DEBUG(
"event: " << *tev << endl);
153 summary.update(*tev);
159 buildL0(*tev, router,
true, back_inserter(dataL0));
161 for (JEvt::const_iterator track = in->begin(); track != in->end(); ++track) {
163 DEBUG(
"track: " << *track << endl);
179 for (JDataL0_t::const_iterator i = dataL0.begin(); i != dataL0.end(); ++i) {
181 double rate_Hz = summary.getRate(*i);
183 if (rate_Hz <= 0.0) {
184 rate_Hz = summary.getRate();
198 sort(data.begin(), data.end(), compare);
200 JDataW0_t::iterator __end = unique(data.begin(), data.end(), equal_to<JDAQPMTIdentifier>());
211 <<
FIXED(12,3) << tz.getX() <<
' '
212 <<
FIXED(12,3) << tz.getY() <<
' '
213 <<
FIXED(12,3) << tz.getZ() <<
' '
214 <<
FIXED(12,3) << tz.getT() <<
' '
215 <<
FIXED(12,1) << E_GeV <<
' '
216 <<
FIXED( 8,3) << track->getQ() << endl);
235 for (JDataW0_t::const_iterator hit = data.begin(); hit != __end; ++hit) {
237 const double x = hit->getX() - tz.getX();
238 const double y = hit->getY() - tz.getY();
239 const double z = hit->getZ() - tz.getZ();
240 const double R = sqrt(x*x + y*y);
248 const double theta =
u.getTheta();
249 const double phi = fabs(
u.getPhi());
252 const double E = E_GeV;
253 const double dt = T_ns.constrain(hit->getT() - t1);
260 const double chi2 = H1.getChi2() - H0.getChi2();
263 << setw(10) << hit->getModuleID() <<
':' << setw( 2) << setfill(
'0') << hit->getPMTAddress() << setfill(
' ') <<
' '
264 <<
FIXED(12,1) << E <<
' '
265 <<
FIXED( 9,1) << R <<
' '
266 <<
FIXED( 6,4) << theta <<
' '
267 <<
FIXED( 6,4) << phi <<
' '
268 <<
FIXED( 8,3) << dt <<
' '
269 <<
FIXED(12,3) << chi2 << endl);
274 DEBUG(
"quality: " <<
FIXED(8,3) << Q <<
' ' <<
distance(data.begin(), __end) << endl);
Utility class to parse command line options.
Data structure for direction in three dimensions.
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
Template specialisation of L0 builder for JHitL0 data type.
Router for direct addressing of module data in detector data structure.
esac print_variable DETECTOR INPUT_FILE OUTPUT_FILE CDF for TYPE in
*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
General purpose class for parallel reading of objects from a single file or multiple files...
Template specialisation of class JModel to match hit with muon trajectory along z-axis.
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Auxiliary data structure for floating point format specification.
double getQuality(const double chi2, const int N, const int NDF)
Get quality of fit.
Auxiliary class for defining the range of iterations of objects.
JFunction1D_t::result_type result_type
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Auxiliary class for a hit with background rate value.
File router for fast addressing of summary data.
void load(const JString &file_name, JDetector &detector)
Load detector from input file.
Data structure for fit parameters.
then usage $script[distance] fi case set_variable R
Auxiliary data structure for muon PDF.
static const int JSTART_LENGTH_METRES
distance between first and last hits in metres from JStart.cc
Data structure for set of track fit results.
Data structure for fit of straight line paralel to z-axis.
JDirection3D getDirection(const Vec &v)
Get direction.
const JLimit & getLimit() const
Get limit.
JPosition3D & rotate(const JRotation3D &R)
Rotate.
void select(const JSelector_t &selector)
Select fits.
bool qualitySorter(const JRECONSTRUCTION::JFit &first, const JRECONSTRUCTION::JFit &second)
Comparison of fit results.
then usage $script[input file[working directory[option]]] nWhere option can be E
#define DEBUG(A)
Message macros.
JPosition3D getPosition(const Vec &v)
Get position.