35 using namespace KM3NETDAQ;
37 const char*
const address_t =
"address";
38 const char*
const index_t =
"index";
50 zap[
'f'] =
make_field(inputFile,
"1st output of JMergeCalibrateK40 and 2nd output of JFitK40");
52 zap[
'a'] =
make_field(detectorFile,
"detector file.");
53 zap[
'O'] =
make_field(option,
"axis label") = address_t, index_t;
58 catch(
const exception &error) {
59 FATAL(error.what() << endl);
68 catch(
const JException& error) {
75 TFile*
in[] = { NULL, NULL };
77 for (
int i = 0;
i != 2; ++
i) {
79 in[
i] = TFile::Open(inputFile[
i].c_str(),
"exist");
81 if (
in[
i] == NULL || !
in[
i]->IsOpen()) {
82 FATAL(
"File: " << inputFile[
i] <<
" not opened." << endl);
89 for (JDetector::iterator module =
detector.begin(); module !=
detector.end(); ++module) {
91 if (module->getFloor() == 0) {
100 if (h2[0] == NULL || h2[0]->GetEntries() == 0 ||
101 h2[1] == NULL || h2[1]->GetEntries() == 0) {
105 DEBUG(
"Module " << setw(10) << module->getID() <<
' ' <<
getLabel(module->getLocation()) << endl);
107 const JCombinatorics_t combinatorics(*module);
109 const JModuleAddressMap memo = demo.get(module->getID());
112 h2[0]->GetXaxis()->GetNbins(), h2[0]->GetXaxis()->GetXmin(), h2[0]->GetXaxis()->GetXmax());
118 for (
int ix = 1; ix <= h2[0]->GetXaxis()->GetNbins(); ++ix) {
127 for (
int iy = 1; iy <= h2[0]->GetYaxis()->GetNbins(); ++iy) {
129 const double y1 = h2[0]->GetBinContent(ix,iy);
130 const double w1 = h2[0]->GetBinError (ix,iy);
131 const double f1 = h2[1]->GetBinContent(ix,iy);
145 h1.SetBinContent(ix, V);
147 hx.Fill(pair.first, pair.second, V);
148 hx.Fill(pair.second, pair.first, V);
151 DEBUG(setw(3) << ix <<
' '
152 <<
"(" <<
FILL(2,
'0') << pair.first <<
"," <<
FILL(2,
'0') << pair.second <<
")" <<
FILL() <<
' '
153 <<
"(" << memo.getPMTPhysicalAddress(pair.first) <<
"," << memo.getPMTPhysicalAddress(pair.second) <<
")" <<
FILL() <<
' '
154 <<
FIXED(9,2) << Y <<
' '
155 <<
FIXED(9,2) << F <<
' '
156 <<
FIXED(9,2) << V << ' ' << (fabs(V) > 3.0 ?
"***" :
"") <<endl);
159 if (option == address_t) {
167 for (
int i = 0;
i != 2; ++
i) {
Utility class to parse command line options.
JCombinatorics::pair_type pair_type
std::string getLabel(const JLocation &location)
Get module label for monitoring and other applications.
#define MAKE_CSTRING(A)
Make C-string.
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.
V(JDAQEvent-JTriggerReprocessor)*1.0/(JDAQEvent+1.0e-10)
const JPolynome f1(1.0, 2.0, 3.0)
Function.
static const char *const _2F
Name extension for 2F rate fitted.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
void setAxisLabels(TAxis *axis, const JModuleAddressMap &memo)
Set axis with PMT address labels.
static const char *const _2R
Name extension for 2D rate measured.
JDetectorAddressMap & getDetectorAddressMap()
Get detector address map.
Auxiliary data structure for sequence of same character.
then usage $script< input file >[option[primary[working directory]]] nWhere option can be N
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
then fatal The output file must have the wildcard in the e g root fi 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
do set_variable DETECTOR_TXT $WORKDIR detector
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
#define DEBUG(A)
Message macros.