69 using namespace KM3NETDAQ;
88 JParser<> zap(
"Auxiliary program to convert fit results to Evt format.\
89 \nThe option -L corresponds to the name of a shared library \
90 \nand function so to rearrange the order of fit results.");
94 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
105 catch(
const exception& error) {
106 FATAL(error.what() << endl);
111 typedef JParallelFileScanner_t::multi_pointer_type multi_pointer_type;
116 if (detectorFile !=
"") {
127 unique_ptr<JDynamics> dynamics;
133 dynamics->load(calibrationFile);
135 catch(
const exception& error) {
136 if (!calibrationFile.empty()) {
152 }
catch(
const exception& error) {}
158 buffer.DAQ.livetime_s =
getLivetime(inputFile.begin(), inputFile.end());
161 copy(buffer, header);
174 STATUS(
"Processing: " << *i << endl);
176 JParallelFileScanner_t
in(*i);
179 in.setLimit(inputFile.getLimit());
189 center = get<Vec>(head);
190 mc_run_id = head.start_run.run_id;
192 }
catch(
const exception& error) {}
195 while (
in.hasNext()) {
197 STATUS(
"event: " << setw(10) <<
in.getCounter() <<
'\r');
DEBUG(endl);
199 multi_pointer_type ps =
in.next();
205 dynamics->update(*tev);
208 JFIT::JEvt::iterator __end = evt->end();
210 if (numberOfFits > 0) {
211 advance(__end = evt->begin(), min(numberOfFits, evt->size()));
215 partial_sort(evt->begin(), __end, evt->end(),
qualitySorter);
220 if (mc.getEntries() != 0) {
240 if (!pmt_router->empty()) {
244 if (pmt_router.hasPMT(i->pmt_id)) {
246 const JPMTAddress address = pmt_router.getAddress(i->pmt_id);
248 const JPMT& pmt = pmt_router.getPMT(address);
250 i->dom_id =
id.
getID();
251 i->channel_id =
id.getPMTAddress();
257 FATAL(
"Missing PMT" << i->pmt_id << endl);
262 if (!mod_router->empty()) {
266 if (mod_router.hasModule(i->dom_id)) {
273 const JPMT& pmt = mod_router.getPMT(
id);
279 i->pmt_id = pmt.
getID();
283 i->tot = hit.getToT();
284 i->a = cpu.getNPE(i->tot);
288 FATAL(
"Missing module " << i->dom_id << endl);
293 struct :
public set<JUUID> {
295 inline int get_index(
const JUUID& element)
const
297 const_iterator i = this->find(element);
299 if (i != this->end())
306 for (JFIT::JEvt::const_iterator fit = evt->begin(); fit != __end; ++fit) {
307 uuid.insert(fit->getUUID());
310 for (JFIT::JEvt::const_iterator fit = evt->begin(); fit != __end; ++fit) {
314 trk.
id = uuid.get_index(fit->getUUID());
315 trk.
pos =
Vec(fit->getX(), fit->getY(), fit->getZ());
316 trk.
dir =
Vec(fit->getDX(), fit->getDY(), fit->getDZ());
319 trk.
lik = fit->getQ();
323 if (fit->hasParentUUID()) {
324 trk.
mother_id = uuid.get_index(fit->getParentUUID());
327 for (JHistory::const_iterator i = fit->getHistory().begin(); i != fit->getHistory().end(); ++i) {
331 for (
int i = 0; i != fit->getN(); ++i) {
332 trk.
fitinf.push_back(fit->getW(i));
337 out.
trks.push_back(trk);
340 out.
id = ++number_of_events;
Router for direct addressing of PMT data in detector data structure.
Utility class to parse command line options.
std::istream & read(std::istream &in, JTestSummary &summary, const char delimiter= ' ')
Read test summary.
static void setSlewing(const bool slewing)
Set slewing option.
double t
track time [ns] (when the particle is at pos )
static JDetectorMechanics getMechanics
Function object to get string mechanics.
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
const JCalibration & getCalibration() const
Get calibration.
Router for direct addressing of module data in detector data structure.
General purpose sorter of fit results.
*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...
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Long64_t counter_type
Type definition for counter.
double getTime(const Hit &hit)
Get true time of hit.
double E
Energy [GeV] (either MC truth or reconstructed)
bool qualitySorter(const JFit &first, const JFit &second)
Comparison of fit results.
Head getHeader(const JMultipleFileScanner_t &file_list)
Get Monte Carlo header.
int mother_id
MC id of the parent particle.
Auxiliary class for defining the range of iterations of objects.
bool slewing
time slewing of analogue signal
The Vec class is a straightforward 3-d vector, which also works in pyroot.
JDirection3D getDirection(const Vec &dir)
Get direction.
int mc_run_id
MC run identifier.
Auxiliary class for recursive type list generation.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
int getID() const
Get identifier.
Data structure for PMT geometry, calibration and status.
JPosition3D getPosition(const Vec &pos)
Get position.
std::vector< double > fitinf
place to store additional fit info, see km3net-dataformat/definitions/fitparameters.csv
Auxiliary class for map of PMT parameters.
void load(const std::string &file_name)
Load mechanical model parameters from file.
static const int TRK_ST_UNDEFINED
status was not defined for this MC track (all reco tracks have this value)
counter_type advance(counter_type &counter, const counter_type value, const counter_type limit=std::numeric_limits< counter_type >::max())
Advance counter.
The Head class reflects the header of Monte-Carlo event files, which consists of keys (also referred ...
int status
MC status code, see km3net-dataformat/definitions/trkmembers.csv for values.
PMT analogue signal processor.
Dynamic detector calibration.
static const int TRK_ST_FINALSTATE
for MC: the particle must be processed by detector simulation ('track_in' tag in evt files)...
Vec pos
postion [m] of the track at time t
Address of PMT in detector data structure.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
Data structure for set of track fit results.
std::vector< Trk > trks
list of reconstructed tracks (can be several because of prefits,showers, etc).
double getLivetime(const std::string &file_name)
Get data taking live time.
std::vector< int > rec_stages
list of identifyers of succesfull fitting stages resulting in this track
General purpose class for object reading from a list of file names.
std::vector< double > error_matrix
(NxN) error covariance matrix for fit parameters (stored as linear vector)
double lik
likelihood or lambda value (for aafit, lambda)
std::vector< Hit > mc_hits
MC: list of MC truth hits.
static const int JPP_RECONSTRUCTION_TYPE
KM3NeT Data Definitions v3.0.0-3-gef79250 https://git.km3net.de/common/km3net-dataformat.
void copy(const Head &from, JHead &to)
Copy header from from to to.
int id
offline event identifier
const JLimit & getLimit() const
Get limit.
Data structure for PMT parameters.
std::vector< Hit > hits
list of hits
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
The Trk class represents a Monte Carlo (MC) particle as well as a reconstructed track/shower.
JTriggerCounter_t getCounter() const
Get trigger counter.
std::vector< Trk > mc_trks
MC: list of MC truth tracks.
The Evt class respresent a Monte Carlo (MC) event as well as an offline event.
#define DEBUG(A)
Message macros.
int rec_type
identifier of the fitting algorithm/chain/strategy, see km3net-dataformat/definitions/reconstruction...