45 using namespace KM3NETDAQ;
59 JParser<> zap(
"Program to search for sets of consecutive hits on a given PMT that are equidistant in time.");
66 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
71 catch(
const exception& error) {
72 FATAL(error.what() << endl);
87 cerr <<
"FATAL ERROR. Could not open detector file '" << detectorFile <<
"'." << endl;
95 TH1D h1 (
"MEvt",
"", 50, 0.5, 50.5);
97 TH2D h2 (
"FEvt", NULL,
99 range.getLength() + 1,
range.getLowerLimit() - 0.5,
range.getUpperLimit() + 0.5);
101 TH1D h3 (
"ML0" ,
"", 50, 0.5, 50.5);
103 TH2D h4 (
"FL0", NULL,
105 range.getLength() + 1,
range.getLowerLimit() - 0.5,
range.getUpperLimit() + 0.5);
107 for (Int_t i = 1; i <= h2.GetXaxis()->GetNbins(); ++i) {
108 h2.GetXaxis()->SetBinLabel(i,
MAKE_CSTRING(stringRouter.at(i-1)));
111 for (Int_t i = 1; i <= h2.GetXaxis()->GetNbins(); ++i) {
112 h4.GetXaxis()->SetBinLabel(i,
MAKE_CSTRING(stringRouter.at(i-1)));
124 JHitBuffer& buffer =
event->getHits<JHit_t>();
126 std::sort(buffer.begin(),buffer.end(),less<JDAQKeyHit>());
128 for (JHitBuffer::const_iterator p = buffer.begin() ; p != buffer.end() ; ) {
130 JHitBuffer::const_iterator q = p;
133 (++q != buffer.end() &&
134 q->getModuleID() == p->getModuleID() &&
135 q->getPMT() == p->getPMT() &&
136 q->getT() == t1 + deltaT);
141 const JPMTChannel& channel = hitRouter.getPMTChannel(*p);
143 if (d >= multiplicity)
144 h2.Fill((
double) stringRouter.getIndex(channel.
getString()), (
double) channel.
getFloor());
165 for(JDAQTimeslice::iterator frame = slice->begin(); frame != slice->end() ; ++frame){
167 const JModule& module = moduleRouter.getModule(frame->getModuleID());
168 JSuperFrame2D_t& buffer = JSuperFrame2D_t::demultiplex(*frame, module);
170 for (JSuperFrame2D_t::iterator pmt = buffer.begin() ; pmt != buffer.end() ; ++pmt) {
172 for (JHitBuffer::const_iterator p = pmt->begin() ; p != pmt->end() ;) {
174 JHitBuffer::const_iterator q = p;
177 (++q != pmt->end() &&
178 q->getT() == t1 + deltaT);
185 if (d >= multiplicity)
186 h4.Fill((
double) stringRouter.getIndex(channel.
getString()), (
double) channel.
getFloor());
Utility class to parse command line options.
Auxiliary class to uniquely identify PMT readout channel.
int getFloor() const
Get floor number.
Data structure for a composite optical module.
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.
#define MAKE_CSTRING(A)
Make C-string.
floor_range getRangeOfFloors(const JDetector &detector)
Get range of floors.
unsigned int JTDC_t
leading edge [ns]
Simple wrapper around JModuleRouter class for direct addressing of PMT data in detector data structur...
Auxiliary class for defining the range of iterations of objects.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
static const JStringCounter getNumberOfStrings
Function object to count unique strings.
z range($ZMAX-$ZMIN)< $MINIMAL_DZ." fi fi typeset -Z 4 STRING typeset -Z 2 FLOOR JPlot1D -f $
int getString() const
Get string number.
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
Router for mapping of string identifier to index.
General purpose class for object reading from a list of file names.
Auxiliary class to set-up Hit.
2-dimensional frame with time calibrated data from one optical module.
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 JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in