66 int main(
int argc, 
char **argv)
 
   73   typedef JParallelFileScanner_t::multi_pointer_type               multi_pointer_type;
 
   79   JParallelFileScanner_t   inputFile;
 
   83   JCalibration_t           calibrationFile;
 
   87   histogram_type           calibrate;
 
   94     JParser<> zap(
"Program to perform detector calibration using reconstructed muon trajectories.");
 
  101     zap[
'n'] = 
make_field(numberOfEvents)      = JLimit::max();
 
  103     zap[
'c'] = 
make_field(calibrate, 
"Histogram for time calibration per optical module.");
 
  109   catch(
const exception& error) {
 
  110     FATAL(error.what() << endl);
 
  114   if (!calibrate.is_valid()) {
 
  115     FATAL(
"Invalid calibration data " << calibrate << endl);
 
  131   unique_ptr<JDynamics> dynamics;
 
  137     dynamics->load(calibrationFile);
 
  139   catch(
const exception& error) {
 
  140     if (!calibrationFile.empty()) {
 
  159   TH2D       ha(
"ha", NULL, 256, -0.5, 255.5, 
 
  160                 calibrate.getNumberOfBins(), calibrate.getLowerLimit(), calibrate.getUpperLimit());
 
  162   TProfile   hb(
"hb", NULL, 256, -0.5, 255.5);
 
  164   TProfile   hr(
"hr", NULL,  60,  0.0, 150.0);
 
  167                 calibrate.getNumberOfBins(), calibrate.getLowerLimit(), calibrate.getUpperLimit());
 
  169   JManager_t 
g1(
new TProfile(
"%", NULL, 
detector.size(), -0.5, 
detector.size() - 0.5, -1.0, +1.0));
 
  172   while (inputFile.hasNext()) {
 
  174     STATUS(
"event: " << setw(10) << inputFile.getCounter() << 
'\r'); 
DEBUG(endl);
 
  176     multi_pointer_type ps = inputFile.next();
 
  184       dynamics->update(*tev);
 
  191     buildL0(*tev, router, 
true, back_inserter(dataL0));
 
  193     for (JFIT::JEvt::const_iterator track = in->begin(); track != in->end(); ++track) {
 
  209       for (JDataL0_t::const_iterator i = dataL0.begin(); i != dataL0.end(); ++i) {
 
  211         double rate_Hz = summary.
getRate(*i);
 
  213         if (rate_Hz <= 0.0) {
 
  230       JDataW0_t::iterator __end = unique(
data.begin(), 
data.end(), equal_to<JDAQPMTIdentifier>());
 
  235       if (track->getE() > 0.1)
 
  236         fit.JRegressor_t::E_GeV   = track->getE();
 
  238         fit.JRegressor_t::E_GeV   = parameters.
E_GeV;
 
  242       for (JDataW0_t::const_iterator hit = 
data.begin(); hit != __end; ++hit) {
 
  243         buffer.insert(hit->getModuleID());
 
  252         if (
distance(
data.begin(), q) - fit.parameters.size() > 0) {
 
  254           fit(ta, 
data.begin(), q);                   
 
  256           for (JDataW0_t::const_iterator hit = q; hit != __end; ++hit) {
 
  258             const int    index    = router.
getIndex(*
id);
 
  259             const double t1       = fit.value.getT(hit->getPosition());
 
  260             JTrack3D     gradient = fit(fit.value, *hit).gradient;
 
  264             ha.Fill(hit->getToT(), hit->getT1() - t1);
 
  265             hb.Fill(hit->getToT(), gradient.
getT());
 
  267             hr.Fill(fit.value.getDistance(*hit), gradient.
getT());
 
  269             h2.Fill(index, hit->getT() - t1);
 
  271             g1[
"T"]->Fill(index, gradient.
getT());
 
  272             g1[
"X"]->Fill(index, gradient.
getX());
 
  273             g1[
"Y"]->Fill(index, gradient.
getY());
 
  274             g1[
"Z"]->Fill(index, gradient.
getZ());
 
int main(int argc, char **argv)
 
Data structure for detector geometry and calibration.
 
Dynamic detector calibration.
 
Basic data structure for L0 hit.
 
Dynamic ROOT object management.
 
General purpose messaging.
 
#define DEBUG(A)
Message macros.
 
Direct access to module in detector data structure.
 
Parallel scanning of objects from a single file or multiple files according a format that follows fro...
 
Utility class to parse command line options.
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
Double_t g1(const Double_t x)
Function.
 
ROOT TTree parameter settings of various packages.
 
Basic data structure for time and time over threshold information of hit.
 
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
 
Router for direct addressing of module data in detector data structure.
 
const int getIndex(const JObjectID &id) const
Get index of module.
 
Data structure for set of track fit results.
 
void select(const JSelector_t &selector)
Select fits.
 
Data structure for fit of straight line paralel to z-axis.
 
Data structure for fit of straight line in positive z-direction.
 
JAxis3D & rotate_back(const JRotation3D &R)
Rotate back axis.
 
JAxis3D & rotate(const JRotation3D &R)
Rotate axis.
 
JPosition3D & rotate(const JRotation3D &R)
Rotate.
 
double getT(const JVector3D &pos) const
Get arrival time of Cherenkov light at given position.
 
double getY() const
Get y position.
 
double getZ() const
Get z position.
 
double getX() const
Get x position.
 
Utility class to parse command line options.
 
Auxiliary class for a hit with background rate value.
 
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys.
 
General purpose class for object reading from a list of file names.
 
General purpose class for parallel reading of objects from a single file or multiple files.
 
File router for fast addressing of summary data.
 
void update(const JDAQHeader &header)
Update router.
 
double getRate() const
Get default rate.
 
Template specialisation of L0 builder for JHitL0 data type.
 
static const int JSTART_LENGTH_METRES
distance between first and last hits in metres from JStart.cc
 
JDirection3D getDirection(const Vec &dir)
Get direction.
 
JPosition3D getPosition(const Vec &pos)
Get position.
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
 
JTOOLS::JRange< double > JZRange
 
JPredicate< JResult_t T::*, JComparison::eq > make_predicate(JResult_t T::*member, const JResult_t value)
Helper method to create predicate for data member.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
bool qualitySorter(const JFit &first, const JFit &second)
Comparison of fit results.
 
bool putObject(TDirectory &dir, const TObject &object)
Write object to ROOT directory.
 
KM3NeT DAQ data structures and auxiliaries.
 
Dynamic detector calibration.
 
Template specialisation of class JModel to match hit with muon trajectory along z-axis.
 
Auxiliary class for recursive type list generation.
 
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
 
Data structure for fit parameters.
 
double TMin_ns
minimal time w.r.t. Cherenkov hypothesis [ns]
 
double roadWidth_m
road width [m]
 
double TMax_ns
maximal time w.r.t. Cherenkov hypothesis [ns]
 
double ZMax_m
maximal z-positon [m]
 
double ZMin_m
minimal z-positon [m]
 
double R_Hz
default rate [Hz]
 
size_t numberOfPrefits
number of prefits
 
Wrapper class to make final fit of muon trajectory.
 
Auxiliary class for defining the range of iterations of objects.
 
const JLimit & getLimit() const
Get limit.
 
Auxiliary data structure for sorting of hits.