73 using namespace KM3NETDAQ;
76 typedef JParallelFileScanner_t::multi_pointer_type multi_pointer_type;
78 JParallelFileScanner_t inputFile;
89 JParser<> zap(
"Program to evaluate hit probabilities.");
93 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
100 catch(
const exception& error) {
101 FATAL(error.what() << endl);
109 WARNING(
"Number of prefits " <<
parameters.numberOfPrefits <<
" != " << 1 << endl);
135 while (inputFile.hasNext()) {
137 STATUS(
"event: " << setw(10) << inputFile.getCounter() <<
'\r');
DEBUG(endl);
139 multi_pointer_type ps = inputFile.next();
144 DEBUG(
"event: " << *tev << endl);
146 summary.update(*tev);
152 buildL0(*tev, router,
true, back_inserter(dataL0));
154 for (JEvt::const_iterator track = in->begin(); track != in->end(); ++track) {
156 DEBUG(
"track: " << *track << endl);
172 for (JDataL0_t::const_iterator i = dataL0.begin(); i != dataL0.end(); ++i) {
174 JHitW0 hit(*i, summary.getRate(*i));
185 sort(data.begin(), data.end(), compare);
187 JDataW0_t::iterator __end = unique(data.begin(), data.end(), equal_to<JDAQPMTIdentifier>());
198 <<
FIXED(12,3) << tz.getX() <<
' '
199 <<
FIXED(12,3) << tz.getY() <<
' '
200 <<
FIXED(12,3) << tz.getZ() <<
' '
201 <<
FIXED(12,3) << tz.getT() <<
' '
202 <<
FIXED(12,1) << E_GeV <<
' '
203 <<
FIXED( 8,3) << track->getQ() << endl);
222 for (JDataW0_t::const_iterator hit = data.begin(); hit != __end; ++hit) {
224 const double x = hit->getX() - tz.getX();
225 const double y = hit->getY() - tz.getY();
226 const double z = hit->getZ() - tz.getZ();
227 const double R = sqrt(x*x + y*y);
235 const double theta =
u.getTheta();
236 const double phi = fabs(
u.getPhi());
239 const double E = E_GeV;
240 const double dt = T_ns.constrain(hit->getT() - t1);
247 const double chi2 = H1.getChi2() - H0.getChi2();
250 << setw(10) << hit->getModuleID() <<
':' << setw( 2) << setfill(
'0') << hit->getPMTAddress() << setfill(
' ') <<
' '
251 <<
FIXED(12,1) << E <<
' '
252 <<
FIXED( 9,1) << R <<
' '
253 <<
FIXED( 6,4) << theta <<
' '
254 <<
FIXED( 6,4) << phi <<
' '
255 <<
FIXED( 8,3) << dt <<
' '
256 <<
FIXED(12,3) << chi2 << endl);
261 DEBUG(
"quality: " <<
FIXED(8,3) << Q <<
' ' <<
distance(data.begin(), __end) << endl);
266 for (JDetector::const_iterator i =
detector.begin(); i !=
detector.end(); ++i) {
278 for (JModule::iterator pmt = module.begin(); pmt != module.end(); ++pmt) {
280 const double R = sqrt(pmt->getX()*pmt->getX() + pmt->getY()*pmt->getY());
281 const double theta = pmt->getTheta();
282 const double phi = fabs(pmt->getPhi());
283 const double y = npe.calculate(1.0, R, theta, phi);
286 << setw(10) << module.
getID() <<
':' << setw( 2) << setfill(
'0') <<
distance(module.begin(),pmt) << setfill(
' ') <<
' '
287 <<
FIXED(9,1) << R <<
' '
288 <<
FIXED(6,4) << theta <<
' '
289 <<
FIXED(6,4) << phi <<
' '
Utility class to parse command line options.
Q(UTCMax_s-UTCMin_s)-livetime_s
Data structure for direction in three dimensions.
Data structure for a composite optical module.
double getQuality(const double chi2, const int NDF)
Get quality of fit.
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.
Router for direct addressing of module data in detector data structure.
*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)...
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
Auxiliary data structure for floating point format specification.
void transform(const JRotation3D &R, const JVector3D &pos)
Transform position.
Auxiliary class for defining the range of iterations of objects.
JAxis3D & rotate(const JRotation3D &R)
Rotate axis.
JDirection3D getDirection(const Vec &dir)
Get direction.
JFunction1D_t::result_type result_type
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
int getID() const
Get identifier.
JPosition3D getPosition(const Vec &pos)
Get position.
File router for fast addressing of summary data.
Data structure for fit parameters.
then usage $script[distance] fi case set_variable R
Auxiliary data structure for muon PDF.
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.
void transform(const JRotation3D &R, const JVector3D &pos)
Transformation of geometry (see method JGEOMETRY3D::JPosition3D::transform(const JRotation3D&, const JVector3D&)).
const double getInverseSpeedOfLight()
Get inverse speed of light.
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.
double getTanThetaC()
Get average tangent of Cherenkov angle of water corresponding to group velocity.
Data structure for position in three dimensions.
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 CHECK_EXIT_CODE typeset A TRIPODS get_tripods $WORKDIR tripod txt TRIPODS for EMITTER in
JPosition3D & rotate(const JRotation3D &R)
Rotate.
Auxiliary data structure for floating point format specification.
bool qualitySorter(const JRECONSTRUCTION::JFit &first, const JRECONSTRUCTION::JFit &second)
Comparison of fit results.
then usage $script[input file[working directory[option]]] nWhere option can be E