37 TIter iter(dir->GetListOfKeys());
39 for (TKey* key; (key = (TKey*) iter.Next()) != NULL; ) {
43 dir->cd(key->GetName());
44 TDirectory *subdir = gDirectory;
49 const TString fullPath(dir->GetPath());
50 TObjArray* t = fullPath.Tokenize(
":");
51 v.push_back(TString(((TObjString *)(t->At(1)))->String() +
"/" + (TString)key->GetName()));
63 int main(
int argc,
char **argv)
67 using namespace KM3NETDAQ;
71 string outputFileRoot;
79 JParser<> zap(
"Auxiliary application to plot PMT parameters.");
81 zap[
'f'] =
make_field(inputFile,
"JCompare output files");
82 zap[
's'] =
make_field(steeringFile,
"JCompare steering file");
83 zap[
'o'] =
make_field(outputFileRoot,
"output file.") =
"out.root";
84 zap[
't'] =
make_field(outputFileTxt,
"output file.") =
"out.txt";
85 zap[
'r'] =
make_field(regexp,
"regular expresion to extract bin labels for the x-axis") =
" ";
86 zap[
'L'] =
make_field(labelInterval,
"interval between x-axis bins for which labels are shown") = 1;
91 catch(
const exception &error) {
92 FATAL(error.what() << endl);
95 const int NUMBER_OF_FILES = inputFile.size();
102 const int n = (NUMBER_OF_FILES < labelInterval) ? 1 : labelInterval;
104 const TPRegexp buffer(regexp);
106 for (
int i = 0; i != NUMBER_OF_FILES; ++i){
109 manager->GetXaxis()->SetBinLabel(i+1 ,
parse(buffer , TString(inputFile[i].c_str())));
110 summaryManager->GetXaxis()->SetBinLabel(i+1 ,
parse(buffer , TString(inputFile[i].c_str())));
112 manager->GetXaxis()->SetBinLabel(i+1 ,
" ");
113 summaryManager->GetXaxis()->SetBinLabel(i+1 ,
" ");
124 if (TFile::Open((*file).c_str()) == NULL) {
125 ERROR(
"File: " << *
file <<
" not opened." << endl);
129 TFile*
f = TFile::Open((*file).c_str());
138 if(!(dynamic_cast<TH1*>(o) == NULL) || !(dynamic_cast<TH2*>(o) == NULL)){
140 istringstream iss(o->GetTitle());
144 quantiles[
MAKE_STRING(t.parameter)][c].put(t.value);
145 summaryManager[
MAKE_STRING(t.parameter)]->Fill(c , t.value);
146 manager[
MAKE_STRING((*key).Data())]->Fill(c , t.value);
147 manager[
MAKE_STRING((*key).Data())]->GetYaxis()->SetTitle(t.parameter.c_str());
154 TFile* out =
new TFile(outputFileRoot.c_str(),
"recreate");
160 ifstream infile(steeringFile);
166 while (
getline(infile, line)) {
167 while (line.length()==0)
169 tests.push_back(line);
170 istringstream iss(line);
172 map[
d[id]->getParameter()]++;
176 summary.open (outputFileTxt);
181 i->second->Scale(1./n);
182 summary <<
"File_ID\t" << i->first <<
"\t" << i->first +
"(ERROR)\t" << endl;
183 cout <<
"File_ID\t" << i->first <<
"\t" << i->first +
"(ERROR)\t" << endl;
185 for (
int bin=1 ; bin<i->second->GetNbinsX() ; ++bin){
186 i->second->SetBinError(bin,quantiles[name][bin].getSTDev()/sqrt(n));
187 summary << i->second->GetXaxis()->GetBinLabel(bin) <<
"\t" << i->second->GetBinContent(bin) <<
"\t" << i->second->GetBinError(bin) << endl;
188 cout << i->second->GetXaxis()->GetBinLabel(bin) <<
"\t" << i->second->GetBinContent(bin) <<
"\t" << i->second->GetBinError(bin) << endl;
196 string fullpath =
MAKE_STRING(i->second->GetName());
197 string path =
MAKE_STRING(fullpath.substr (fullpath.find (
'/') + 1 , fullpath.rfind (
'/')));
199 if (out->GetDirectory(path.c_str()) == 0) out->mkdir(path.c_str());
200 out->cd(path.c_str());
202 i -> second -> SetName(
MAKE_CSTRING(fullpath.substr (fullpath.rfind (
'/') + 1)));
204 for (
int bin=0 ; bin<i->second->GetNbinsX()+1 ; ++bin){i->second->SetBinError(bin,0.0);}
205 i -> second -> Write();
Utility class to parse command line options.
bool read(const JEquation &equation)
Read equation.
int main(int argc, char *argv[])
Class dedicated to standardize the title of the graphical objects produced by the JTest_t() derived c...
#define MAKE_CSTRING(A)
Make C-string.
do set_array DAQHEADER JPrintDAQHeader f
then usage $script< string identifier >< detectorfile > input file(toashort file)+" "\nNote that the input files and toashort files should be one-to-one related." fi if (( $
Dynamic ROOT object management.
Data structure for detector geometry and calibration.
#define MAKE_STRING(A)
Make string.
do cat driver txt<< EOFevent ev_configure{RC_EVT%< ev_configure.txt > RC_DWRT path
boost::property_tree::ptree parse(std::string str)
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys...
I/O formatting auxiliaries.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
std::istream & getline(std::istream &in, JString &object)
Read string from input stream until end of line.
General purpose messaging.
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
Utility class to parse command line options.
alias put_queue eval echo n
void readDir(TDirectory *dir, vector< TString > &v)
KM3NeT DAQ constants, bit handling, etc.