16 #include "evt/Head.hh" 
   90     void compile(
const double       Tmax,
 
   91                  const unsigned int L1 = 2)
 
   93       std::sort(this->begin(), this->end());
 
   97       for (const_iterator i = this->begin(); i != this->end(); ) {
 
  110           buffer.insert(i->getID());
 
  112           const_iterator j = i;
 
  114           for (
double t1 = i->getLowerLimit(); ++j != this->end() && j->getLowerLimit() - t1 < Tmax; t1 = j->getLowerLimit()) {
 
  115             buffer.insert(j->getID());
 
  118           if (buffer.size() >= L1) {      
 
  119             *out = 
JPulse(*i, *((--j)++));
 
  127       this->erase(out, end());
 
  138     inline bool has(
const JTimeRange& timerange)
 const 
  140       const_iterator i = std::lower_bound(this->begin(), this->end(), timerange.
getLowerLimit());
 
  142       return i != this->end() && i->overlap(timerange);
 
  156   inline bool matchAll(
const JHitL1& first, 
const JHitL1& second)
 
  172     JHorizon(
const double ct,
 
  186     bool operator()(
const JHitL1& hit)
 const 
  190       for (JHitL1::const_iterator i = hit.begin(); i != hit.end(); ++i) {
 
  210 int main(
int argc, 
char **argv)
 
  214   using namespace KM3NETDAQ;
 
  230     JParser<> zap(
"Example program to test performance of various hit filters.");
 
  240     zap[
'c'] = 
make_field(cluster)             = 
'A', 
'B', 
'C', 
'D', 
'E', 
'F';
 
  246   catch(
const exception &error) {
 
  247     FATAL(error.what() << endl);
 
  251   using namespace KM3NETDAQ;
 
  277   if (histogram == 1) {
 
  283     for ( ; x <  30.0; x +=  1.0)
 
  286     for ( ; x <  50.0; x +=  2.0)
 
  289     for ( ; x < 100.0; x +=  5.0)
 
  292     for ( ; x < 200.0; x += 10.0)
 
  295     he = 
new TProfile(
"he", NULL, X.size() - 1, X.data());
 
  296     hp = 
new TProfile(
"hp", NULL, X.size() - 1, X.data());
 
  300     he = 
new TProfile(
"he", NULL, 28, 0.0, 7.0);
 
  301     hp = 
new TProfile(
"hp", NULL, 28, 0.0, 7.0);
 
  304   TH1D ht1(
"ht1", NULL, 550, -50.0, +500.0);
 
  305   TH1D ht2(
"ht2", NULL, 550, -50.0, +500.0);
 
  306   TH1D hd1(
"hd1", NULL, 100,  -1.0,   +1.0);
 
  307   TH1D hd2(
"hd2", NULL, 100,  -1.0,   +1.0);
 
  308   TH1D hx1(
"hx1", NULL, 100,   0.0, +250.0);
 
  309   TH1D hx2(
"hx2", NULL, 100,   0.0, +250.0);
 
  310   TH1D hw1(
"hw1", NULL, 100,  -0.5,  +99.5);
 
  311   TH1D hw2(
"hw2", NULL, 100,  -0.5,  +99.5);
 
  323   const JHorizon         horizon(0.2, 2);
 
  328   while (inputFile.hasNext()) {
 
  330     STATUS(
"event: " << setw(10) << inputFile.getCounter() << 
'\r'); 
DEBUG(endl);
 
  335     const Evt*       
event = ps;
 
  340       const double E        = neutrino.E;              
 
  352           if (
is_muon(*track) && track->E > Emax) {
 
  359       if (muon != 
event->mc_trks.end()) {
 
  385         for (JMap_t::iterator i = zmap.begin(); i != zmap.end(); ) {
 
  387           i->second.compile(Tmax_ns, 2);
 
  389           if (i->second.empty())
 
  395         const int L1mc = zmap.size();
 
  405         for (JDAQTimeslice::const_iterator i = timeslice.begin(); i != timeslice.end(); ++i) {
 
  409           buildL2(*i, moduleRouter.
getModule(i->getModuleID()), back_inserter(zbuf));
 
  413             sort(zbuf.begin(), zbuf.end(), timeSorter<JHitL1>);
 
  415             dataL1.push_back(*zbuf.begin());
 
  422         JDataL1_t::iterator __end = dataL1.begin();
 
  432           __end = 
clusterize(dataL1.begin(), dataL1.end(), weightSorter<JHitL1>, match3D);
 
  436           __end = 
clusterize(dataL1.begin(), dataL1.end(), match3B);
 
  445           for (JDataL1_t::iterator i = dataL1.begin(); i != dataL1.end(); ++i)
 
  450           for (JDataL1_t::iterator i = dataL1.begin(); i != dataL1.end(); ++i)
 
  459           for (JDataL1_t::iterator i = dataL1.begin(); i != dataL1.end(); ++i)
 
  462           __end = partition(dataL1.begin(), __end, horizon);
 
  465           for (JDataL1_t::iterator i = dataL1.begin(); i != dataL1.end(); ++i)
 
  471           __end = dataL1.end();
 
  478         JDataL1_t::iterator __q = __end;
 
  487           const double t1 = converter.
getTime(*hit);
 
  497             iter_swap(hit, --__q);
 
  502         if (L1mc != 0 && !L1.empty()) {
 
  504           Double_t x = numeric_limits<Double_t>::max();
 
  511           he->Fill(x, (Double_t) L1ok.size() / (Double_t) L1mc); 
 
  512           hp->Fill(x, (Double_t) L1ok.size() / (Double_t) L1.size()); 
 
  517           for (JDataL1_t::iterator hit = dataL1.begin(); hit != __end; ++hit) {
 
  522           for (JDataL1_t::iterator hit = dataL1.begin(); hit != __end; ++hit) {
 
  528             for (JHitL1::const_iterator i = hit->begin(); i != hit->end(); ++i) {
 
  529               if (i->getDot(gui) < dot)
 
  530                 dot = i->getDot(gui);
 
  533             const double w = (hit->rbegin()->
getT() - hit->begin()->
getT()); 
 
  535             if (distance(hit, __q) > 0) {
 
  538               hx1.Fill(hit->
getX());
 
  543               hx2.Fill(hit->
getX());
 
Match operator for Cherenkov light from muon in any direction. 
 
Router for direct addressing of PMT data in detector data structure. 
 
Utility class to parse command line options. 
 
int getModuleID() const 
Get module identifier. 
 
Match operator for Cherenkov light from muon with given direction. 
 
Data structure for L1 hit. 
 
const JModule & getModule(const JObjectID &id) const 
Get module parameters. 
 
Algorithms for hit clustering and sorting. 
 
Synchronously read DAQ events and Monte Carlo events (and optionally other events). 
 
bool has_neutrino(const Evt &evt)
Test whether given event has an incoming neutrino. 
 
bool is_muon(const Trk &track)
Test whether given track is a (anti-)muon. 
 
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)...
 
double getT(const unsigned int i) const 
Get time of hit i. 
 
Structure to store the ToT mean and standard deviation of the hits produced by a nanobeacon in a sour...
 
JMatchHelper< JHit_t > make_match(bool(*match)(const JHit_t &, const JHit_t &))
Auxiliary method to make JMatch object based on pointer to match function. 
 
double getTime() const 
Get DAQ/trigger minus Monte Carlo hit time. 
 
static counter_type max()
Get maximum counter value. 
 
Data structure for detector geometry and calibration. 
 
JHitIterator_t clusterizeWeight(JHitIterator_t __begin, JHitIterator_t __end, const JMatch< JHit_t > &match)
Partition data according given binary match operator. 
 
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. 
 
Basic data structure for time and time over threshold information of hit. 
 
Auxiliary class for defining the range of iterations of objects. 
 
JHitIterator_t clusterize(JHitIterator_t __begin, JHitIterator_t __end, const JMatch< JHit_t > &match, const int Nmin=1)
Partition data according given binary match operator. 
 
void transform(const JRotation3D &R, const JVector3D &pos)
Transform hit. 
 
Match operator for Cherenkov light from muon in any direction. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
void load(const JString &file_name, JDetector &detector)
Load detector from input file. 
 
Direct access to PMT in detector data structure. 
 
General purpose messaging. 
 
Direct access to module in detector data structure. 
 
Time-over-threshold (ToT) pulse from a PMT. 
 
double getZ() const 
Get z position. 
 
Auxiliary class for a time-over-threshold pulse from a PMT. 
 
Utility class to parse command line options. 
 
ROOT TTree parameter settings. 
 
JDirection3D getDirection(const Vec &v)
Get direction. 
 
Auxiliary class to convert DAQ/trigger hit time to/from Monte Carlo hit time. 
 
Data structure for position in three dimensions. 
 
const JLimit & getLimit() const 
Get limit. 
 
const Trk & get_neutrino(const Evt &evt)
Get incoming neutrino. 
 
Data structure for normalised vector in three dimensions. 
 
General purpose class for multiple pointers. 
 
JPosition3D & rotate(const JRotation3D &R)
Rotate. 
 
double getX() const 
Get x position. 
 
int getParentModuleID(const JObjectID &id) const 
Get parent module identifier. 
 
Basic data structure for L1 hit. 
 
3D match criterion with road width. 
 
#define DEBUG(A)
Message macros. 
 
JPosition3D getPosition(const Vec &v)
Get position. 
 
int main(int argc, char *argv[])