58 int main(
int argc, 
char **argv)
 
   62   using namespace KM3NETDAQ;
 
   79     JParser<> zap(
"Example program to test chi2 calculations of co-variance matrix including direction uncertainty.");
 
   84     zap[
'n'] = 
make_field(numberOfEvents)      = JLimit::max();
 
   96   catch(
const exception& error) {
 
   97     FATAL(error.what() << endl);
 
  101   using namespace KM3NETDAQ;
 
  106   const unsigned int NUMBER_OF_HITS      =  6;
 
  107   const double       STANDARD_DEVIATIONS =  3.0;                        
 
  108   const double       HIT_OFF             =  1.0e3 * sigma_ns*sigma_ns;  
 
  129   TH1D h0(
"h0", NULL, 40,  0.0,  20.0);
 
  130   TH1D 
h1(
"h1", NULL, 40,  0.0,  20.0);
 
  132   TH1D p0(
"p0", NULL, 20,  0.0,   1.0);
 
  133   TH1D 
p1(
"p1", NULL, 20,  0.0,   1.0);
 
  140     for ( ; x <  10.0; x +=  1.0) { 
X.push_back(x); }
 
  141     for ( ; x <  25.0; x +=  2.0) { 
X.push_back(x); }
 
  142     for ( ; x < 100.0; x +=  5.0) { 
X.push_back(x); }
 
  145   TProfile n0(
"n0", NULL, 
X.size() - 1, 
X.data());
 
  146   TProfile n1(
"n1", NULL, 
X.size() - 1, 
X.data());
 
  155   while (inputFile.hasNext()) {
 
  157     STATUS(
"event: " << setw(10) << inputFile.getCounter() << 
'\r'); 
DEBUG(endl);
 
  162     const Evt*       
event = ps;
 
  168     if (muon != event->mc_trks.end()) {
 
  177       const double theta = alpha_deg * 
PI / 180.0;
 
  178       const double phi   = gRandom->Uniform(0.0, 2*
PI);
 
  187         buildL2(*tev, moduleRouter, back_inserter(data));
 
  189         data.erase(unique(data.begin(), data.end(), equal_to<JDAQModuleIdentifier>()), data.end());
 
  210           sort(i->second.begin(), i->second.end(), less<JHit>());
 
  212           data.push_back(i->second[0]);
 
  219       data.erase(
clusterizeWeight(data.begin(), data.end(), match3B), data.end());
 
  224       for (JData_t::iterator i = data.begin(); i != data.end(); ++i) {
 
  228       data.erase(
clusterizeWeight(data.begin(), data.end(), match1D), data.end());
 
  238       for (JData_t::iterator i = data.begin(); i != data.end(); ++i) {
 
  239         i->sub(tz.getPosition());
 
  247       for (JData_t::iterator i = data.begin(); i != data.end(); ++i) {
 
  252       if (data.size() >= NUMBER_OF_HITS + numberOfOutliers) {
 
  254         JData_t::iterator __end = data.end();
 
  256         for (
int n = 0; 
n < numberOfOutliers && 
distance(data.begin(), __end) > NUMBER_OF_HITS; ++
n) {
 
  259           JData_t::iterator kill = __end;
 
  261           for (JData_t::iterator i = data.begin(); i != __end; ++i) {
 
  263             const double y = fabs(i->getT() - tz.getT(*i)) / sigma_ns;
 
  271           if (ymax >= STANDARD_DEVIATIONS)
 
  272             iter_swap(kill, --__end);
 
  277         const double chi2 = 
getChi2(tz, data.begin(), __end, sigma_ns);
 
  278         const int    N    = 
distance(data.begin(), __end);
 
  281         p0.Fill(TMath::Prob(chi2, N));
 
  282         n0.Fill((
double) data.size(), (double) N / (
double) data.size()); 
 
  286       if (data.size() >= NUMBER_OF_HITS + numberOfOutliers) {
 
  291         V.
set(tz, data.begin(), data.end(), alpha_deg, sigma_ns);
 
  292         Y.
set(tz, data.begin(), data.end());
 
  296         unsigned int N = data.size();
 
  298         for (
int n = 0; n < numberOfOutliers && N > NUMBER_OF_HITS; ++
n, --
N) {
 
  303           for (
unsigned int i = 0; i != V.
size(); ++i) {
 
  305             const double y = 
getChi2(Y, V, i);
 
  313           if (ymax >= STANDARD_DEVIATIONS * STANDARD_DEVIATIONS)
 
  319         const double chi2 = V.
getDot(Y);
 
  322         p1.Fill(TMath::Prob(chi2, N));
 
  323         n1.Fill((
double) data.size(), (double) N / (
double) data.size());
 
Router for direct addressing of PMT data in detector data structure. 
 
Data structure for angles in three dimensions. 
 
Utility class to parse command line options. 
 
int main(int argc, char *argv[])
 
ROOT TTree parameter settings of various packages. 
 
Match operator for Cherenkov light from muon with given direction. 
 
void set(const JVector3D &pos, T __begin, T __end, const double alpha, const double sigma)
Set co-variance matrix. 
 
Algorithms for hit clustering and sorting. 
 
Synchronously read DAQ events and Monte Carlo events (and optionally other events). 
 
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance. 
 
JPMTIdentifier getIdentifier(const JPMTAddress &address) const 
Get identifier of PMT. 
 
static double getDot(const variance &first, const variance &second)
Get dot product. 
 
bool is_muon(const Trk &track)
Test whether given track is a (anti-)muon. 
 
Recording of objects on file according a format that follows from the file name extension. 
 
Router for direct addressing of module data in detector data structure. 
 
Auxiliary class to synchronously read DAQ events and Monte Carlo events (and optionally other events)...
 
then JShowerPostfit f $INPUT_FILE o $OUTPUT_FILE N
 
then for HISTOGRAM in h0 h1
 
const JPMT & getPMT(const JPMTAddress &address) const 
Get PMT. 
 
JVertex3D & add(const JVertex3D &value)
Addition operator. 
 
Auxiliary class to convert DAQ hit time to/from Monte Carlo hit time. 
 
then fatal Wrong number of arguments fi set_variable STRING $argv[1] set_variable DETECTORXY_TXT $WORKDIR $DETECTORXY_TXT tail read X Y CHI2 RMS printf optimum n $X $Y $CHI2 $RMS awk v Y
 
double getTime(const Hit &hit)
Get true time of hit. 
 
void update(const size_t k, const double value)
Update inverted matrix at given diagonal element. 
 
Basic data structure for time and time over threshold information of hit. 
 
static struct JTRIGGER::@76 clusterizeWeight
Anonymous struct for weighed clustering of hits. 
 
Data structure for detector geometry and calibration. 
 
bool is_noise(const Hit &hit)
Verify hit origin. 
 
Head getHeader(const JMultipleFileScanner_t &file_list)
Get Monte Carlo header. 
 
Basic data structure for L0 hit. 
 
int first
index of module in detector data structure 
 
Auxiliary class for defining the range of iterations of objects. 
 
Determination of the time residual vector of hits for a track along z-axis (JFIT::JLine1Z). 
 
Match operator for Cherenkov light from muon in any direction. 
 
JDirection3D getDirection(const Vec &dir)
Get direction. 
 
Data structure for vector in three dimensions. 
 
Determination of the co-variance matrix of hits for a track along z-axis (JFIT::JLine1Z). 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
Data structure for PMT geometry, calibration and status. 
 
JPosition3D getPosition(const Vec &pos)
Get position. 
 
then break fi done getCenter read X Y Z let X
 
double putTime() const 
Get Monte Carlo time minus DAQ/trigger time. 
 
static const double PI
Mathematical constants. 
 
void set(const JLine1Z &track, T __begin, T __end)
Set time residual vector. 
 
Direct access to PMT in detector data structure. 
 
then usage $script[distance] fi case set_variable R
 
General purpose messaging. 
 
Auxiliary include file for time conversion between DAQ/trigger hit and Monte Carlo hit...
 
void invert()
Invert matrix according LDU decomposition. 
 
Direct access to module in detector data structure. 
 
size_t size() const 
Get dimension of matrix. 
 
Data structure for L2 parameters. 
 
const double getSpeedOfLight()
Get speed of light. 
 
Address of PMT in detector data structure. 
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file. 
 
Utility class to parse command line options. 
 
Data structure for L0 hit. 
 
then usage $script< input_file >< detector_file > fi set_variable OUTPUT_DIR set_variable SELECTOR JDAQTimesliceL1 set_variable DEBUG case set_variable DEBUG
 
Data structure for fit of straight line paralel to z-axis. 
 
Data structure for position in three dimensions. 
 
const JLimit & getLimit() const 
Get limit. 
 
do set_variable DETECTOR_TXT $WORKDIR detector
 
General purpose class for multiple pointers. 
 
double getChi2(const double P)
Get chi2 corresponding to given probability. 
 
JPosition3D & rotate(const JRotation3D &R)
Rotate. 
 
const JPMTAddress & getAddress(const JObjectID &id) const 
Get address of PMT. 
 
Basic data structure for L1 hit. 
 
The Evt class respresent a Monte Carlo (MC) event as well as an offline event. 
 
3D match criterion with road width.