55 bool operator()(
const T&
first,
const T& second)
const
59 using namespace KM3NETDAQ;
61 if (equal_to<JDAQPMTIdentifier>()(first, second))
62 return less<JHit>()(first, second);
64 return less<JDAQPMTIdentifier>()(first, second);
77 int main(
int argc,
char **argv)
81 using namespace KM3NETDAQ;
84 typedef JParallelFileScanner_t::multi_pointer_type multi_pointer_type;
86 JParallelFileScanner_t inputFile;
97 JParser<> zap(
"Program to perform detector calibration using reconstructed muon trajectories.");
101 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
108 catch(
const exception& error) {
109 FATAL(error.what() << endl);
117 WARNING(
"Number of prefits " <<
parameters.numberOfPrefits <<
" != " << 1 << endl);
142 while (inputFile.hasNext()) {
144 STATUS(
"event: " << setw(10) << inputFile.getCounter() <<
'\r');
DEBUG(endl);
146 multi_pointer_type ps = inputFile.next();
151 DEBUG(
"event: " << *tev << endl);
159 buildL0(*tev, router,
true, back_inserter(dataL0));
161 for (JEvt::const_iterator track = in->begin(); track != in->end(); ++track) {
163 DEBUG(
"track: " << *track << endl);
179 for (JDataL0_t::const_iterator i = dataL0.begin(); i != dataL0.end(); ++i) {
181 double rate_Hz = summary.
getRate(*i);
183 if (rate_Hz <= 0.0) {
198 sort(data.begin(), data.end(), compare);
200 JDataW0_t::iterator __end = unique(data.begin(), data.end(), equal_to<JDAQPMTIdentifier>());
211 <<
FIXED(12,3) << tz.getX() <<
' '
212 <<
FIXED(12,3) << tz.getY() <<
' '
213 <<
FIXED(12,3) << tz.getZ() <<
' '
214 <<
FIXED(12,3) << tz.getT() <<
' '
215 <<
FIXED(12,1) << E_GeV <<
' '
216 <<
FIXED( 8,3) << track->getQ() << endl);
235 for (JDataW0_t::const_iterator hit = data.begin(); hit != __end; ++hit) {
237 const double x = hit->getX() - tz.getX();
238 const double y = hit->getY() - tz.getY();
239 const double z = hit->getZ() - tz.getZ();
240 const double R = sqrt(x*x + y*y);
248 const double theta =
u.getTheta();
249 const double phi = fabs(
u.getPhi());
252 const double E = E_GeV;
253 const double dt = T_ns.
constrain(hit->getT() - t1);
260 const double chi2 = H1.getChi2() - H0.getChi2();
263 << setw(10) << hit->getModuleID() <<
':' << setw( 2) << setfill(
'0') << hit->getPMTAddress() << setfill(
' ') <<
' '
264 <<
FIXED(12,1) << E <<
' '
265 <<
FIXED( 9,1) << R <<
' '
266 <<
FIXED( 6,4) << theta <<
' '
267 <<
FIXED( 6,4) << phi <<
' '
268 <<
FIXED( 8,3) << dt <<
' '
269 <<
FIXED(12,3) << chi2 << endl);
274 DEBUG(
"quality: " <<
FIXED(8,3) << Q <<
' ' <<
distance(data.begin(), __end) << endl);
Utility class to parse command line options.
ROOT TTree parameter settings.
Data structure for direction in three dimensions.
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.
Router for direct addressing of module data in detector data structure.
esac print_variable DETECTOR INPUT_FILE OUTPUT_FILE CDF for TYPE in
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)...
Auxiliary data structure for floating point format specification.
Data structure for detector geometry and calibration.
double getQuality(const double chi2, const int N, const int NDF)
Get quality of fit.
then echo The file $DIR KM3NeT_00000001_00000000 root already please rename or remove it first
Basic data structure for L0 hit.
result_type calculate(const double E, const double R, const double theta, const double phi, const double t1) const
Get PDF.
Auxiliary class for defining the range of iterations of objects.
I/O formatting auxiliaries.
JAxis3D & rotate(const JRotation3D &R)
Rotate axis.
JFunction1D_t::result_type result_type
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
do set_variable OUTPUT_DIRECTORY $WORKDIR T
Parallel scanning of objects from a single file or multiple files according a format that follows fro...
Auxiliary class for a hit with background rate value.
File router for fast addressing of summary data.
void load(const JString &file_name, JDetector &detector)
Load detector from input file.
Data structure for fit parameters.
then usage $script[distance] fi case set_variable R
General purpose messaging.
Auxiliary data structure for muon PDF.
Direct access to module in detector data structure.
static const int JSTART_LENGTH_METRES
distance between first and last hits in metres from JStart.cc
Data structure for set of track fit results.
Utility class to parse command line options.
Data structure for fit of straight line paralel to z-axis.
JDirection3D getDirection(const Vec &v)
Get direction.
const JLimit & getLimit() const
Get limit.
JPosition3D & rotate(const JRotation3D &R)
Rotate.
void select(const JSelector_t &selector)
Select fits.
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
#define DEBUG(A)
Message macros.
JPosition3D getPosition(const Vec &v)
Get position.
int main(int argc, char *argv[])