63 int main(
int argc, 
char **argv)
 
   67   using namespace KM3NETDAQ;
 
   70   typedef JParallelFileScanner_t::multi_pointer_type               multi_pointer_type;
 
   73   JParallelFileScanner_t   inputFile;
 
   79   histogram_type           calibrate;
 
   86     JParser<> zap(
"Program to perform detector calibration using reconstructed muon trajectories.");
 
   91     zap[
'n'] = 
make_field(numberOfEvents)      = JLimit::max();
 
   93     zap[
'c'] = 
make_field(calibrate, 
"Histogram for time calibration per optical module.");
 
   99   catch(
const exception& error) {
 
  100     FATAL(error.what() << endl);
 
  105   if (!calibrate.is_valid()) {
 
  106     FATAL(
"Invalid calibration data " << calibrate << endl);
 
  110     WARNING(
"Number of prefits " << 
parameters.numberOfPrefits << 
" != " << 1 << endl);
 
  136   TH2D       ha(
"ha", NULL, 256, -0.5, 255.5, 
 
  137                 calibrate.getNumberOfBins(), calibrate.getLowerLimit(), calibrate.getUpperLimit());
 
  139   TProfile   hb(
"hb", NULL, 256, -0.5, 255.5);
 
  141   TProfile   hr(
"hr", NULL,  60,  0.0, 150.0);
 
  144                 calibrate.getNumberOfBins(), calibrate.getLowerLimit(), calibrate.getUpperLimit());
 
  146   JManager_t 
g1(
new TProfile(
"%", NULL, 
detector.size(), -0.5, 
detector.size() - 0.5, -1.0, +1.0));
 
  149   while (inputFile.hasNext()) {
 
  151     STATUS(
"event: " << setw(10) << inputFile.getCounter() << 
'\r'); 
DEBUG(endl);
 
  153     multi_pointer_type ps = inputFile.next();
 
  164     buildL0(*tev, router, 
true, back_inserter(dataL0));
 
  166     for (JEvt::const_iterator track = in->begin(); track != in->end(); ++track) {
 
  182       for (JDataL0_t::const_iterator i = dataL0.begin(); i != dataL0.end(); ++i) {
 
  184         double rate_Hz = summary.
getRate(*i);
 
  186         if (rate_Hz <= 0.0) {
 
  201       sort(data.begin(), data.end(), JMuonGandalf::compare);
 
  203       JDataW0_t::iterator __end = unique(data.begin(), data.end(), equal_to<JDAQPMTIdentifier>());
 
  208       if (track->getE() > 0.1)
 
  209         fit.JRegressor_t::E_GeV   = track->getE();
 
  215       for (JDataW0_t::const_iterator hit = data.begin(); hit != __end; ++hit) {
 
  216         buffer.insert(hit->getModuleID());
 
  225         if (
distance(data.begin(), q) - fit.parameters.size() > 0) {
 
  227           fit(ta, data.begin(), q);                   
 
  229           sort(q, __end, JMuonGandalf::compare);      
 
  231           const int    index    = router.
getIndex(*
id);
 
  232           const double t1       = fit.value.getT(q->getPosition());
 
  233           JTrack3D     gradient = fit(fit.value, *q).gradient;
 
  237           ha.Fill(q->getToT(), q->getT1() - t1);
 
  238           hb.Fill(q->getToT(), gradient.
getT());
 
  240           hr.Fill(fit.value.getDistance(*q), gradient.
getT());
 
  242           h2.Fill(index, q->getT() - t1);
 
  244           g1[
"T"]->Fill(index, gradient.
getT());
 
  245           g1[
"X"]->Fill(index, gradient.
getX());
 
  246           g1[
"Y"]->Fill(index, gradient.
getY());
 
  247           g1[
"Z"]->Fill(index, gradient.
getZ());
 
Utility class to parse command line options. 
 
JPredicate< JResult_t T::*, JComparison::eq > make_predicate(JResult_t T::*member, const JResult_t value)
Helper method to create predicate for data member. 
 
ROOT TTree parameter settings of various packages. 
 
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. 
 
void update(const JDAQHeader &header)
Update router. 
 
const int getIndex(const JObjectID &id) const 
Get index of module. 
 
Router for direct addressing of module data in detector data structure. 
 
double getRate() const 
Get default rate. 
 
*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)...
 
Data structure for fit of straight line in positive z-direction. 
 
Dynamic ROOT object management. 
 
Basic data structure for time and time over threshold information of hit. 
 
Data structure for detector geometry and calibration. 
 
Wrapper class to make final fit of muon trajectory. 
 
Basic data structure for L0 hit. 
 
Auxiliary class for defining the range of iterations of objects. 
 
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys...
 
JAxis3D & rotate(const JRotation3D &R)
Rotate axis. 
 
JDirection3D getDirection(const Vec &dir)
Get direction. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
Parallel scanning of objects from a single file or multiple files according a format that follows fro...
 
JPosition3D getPosition(const Vec &pos)
Get position. 
 
JAxis3D & rotate_back(const JRotation3D &R)
Rotate back axis. 
 
File router for fast addressing of summary data. 
 
double getY() const 
Get y position. 
 
Data structure for fit parameters. 
 
then usage $script[distance] fi case set_variable R
 
double getT(const JVector3D &pos) const 
Get arrival time of Cherenkov light at given position. 
 
General purpose messaging. 
 
Direct access to module in detector data structure. 
 
Auxiliary class for a hit with background rate value. 
 
static const int JSTART_LENGTH_METRES
distance between first and last hits in metres from JStart.cc 
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file. 
 
Utility class to parse command line options. 
 
Data structure for fit of straight line paralel to z-axis. 
 
double getX() const 
Get x position. 
 
const JLimit & getLimit() const 
Get limit. 
 
do set_variable DETECTOR_TXT $WORKDIR detector
 
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY source JAcoustics sh $DETECTOR_ID typeset A TRIPODS get_tripods $WORKDIR tripod txt TRIPODS for EMITTER in
 
JPosition3D & rotate(const JRotation3D &R)
Rotate. 
 
double getZ() const 
Get z position. 
 
JTOOLS::JRange< double > JZRange
 
bool qualitySorter(const JRECONSTRUCTION::JFit &first, const JRECONSTRUCTION::JFit &second)
Comparison of fit results. 
 
#define DEBUG(A)
Message macros. 
 
bool putObject(TDirectory *dir, const T &object)
Write object to ROOT directory. 
 
Double_t g1(const Double_t x)
Function. 
 
int main(int argc, char *argv[])