10#define ProofSimpleFile_cxx
29ProofSimpleFile::ProofSimpleFile()
43ProofSimpleFile::~ProofSimpleFile()
47 if (fRandom)
delete fRandom;
51Int_t ProofSimpleFile::CreateHistoArrays()
56 Error(
"CreateHistoArrays",
"fNhist must be positive!");
60 fHistTop =
new TH1F*[fNhist];
61 fHistDir =
new TH1F*[fNhist];
67void ProofSimpleFile::Begin(
TTree * )
77 if (fInput->FindObject(
"ProofSimpleFile_NHist")) {
81 }
else if ((iopt =
option.Index(
"nhist=")) !=
kNPOS) {
83 Ssiz_t from = iopt + strlen(
"nhist=");
89void ProofSimpleFile::SlaveBegin(
TTree * )
99 if (fInput->FindObject(
"ProofSimpleFile_NHist")) {
103 }
else if ((iopt =
option.Index(
"nhist=")) !=
kNPOS) {
105 Ssiz_t from = iopt + strlen(
"nhist=");
112 if (out) fProofFile->SetOutputFileName(
out->GetTitle());
114 fFile = fProofFile->OpenFile(
"RECREATE");
115 if (fFile && fFile->IsZombie())
SafeDelete(fFile);
121 " instance is invalid!", fProofFile->GetName());
122 Abort(amsg, kAbortProcess);
127 if (CreateHistoArrays() != 0) {
128 Abort(
"ProofSimpleFile::SlaveBegin: could not create histograms", kAbortProcess);
133 if (!(fFileDir = fFile->mkdir(
"blue"))) {
134 Abort(
"ProofSimpleFile::SlaveBegin: could not create directory 'blue' in file!",
142 fHistTop[
i]->SetFillColor(
kRed);
143 fHistTop[
i]->SetDirectory(fFile);
145 fHistDir[
i]->SetFillColor(
kBlue);
146 fHistDir[
i]->SetDirectory(fFileDir);
175 if (fRandom && fHistTop[
i] && fHistDir[
i]) {
176 fHistTop[
i]->Fill(fRandom->Gaus(0.,1.));
177 fHistDir[
i]->Fill(fRandom->Gaus(0.,1.));
185void ProofSimpleFile::SlaveTerminate()
197 if (fHistTop[
i] && fHistTop[
i]->GetEntries() > 0) {
198 fHistTop[
i]->Write();
199 fHistTop[
i]->SetDirectory(
nullptr);
206 if (fHistDir[
i] && fHistDir[
i]->GetEntries() > 0) {
207 fHistDir[
i]->Write();
208 fHistDir[
i]->SetDirectory(
nullptr);
216 Info(
"SlaveTerminate",
"nothing to save: just cleanup everything ...");
217 TUrl uf(*(fFile->GetEndpointUrl()));
222 Info(
"SlaveTerminate",
"objects saved into '%s%s': sending related TProofOutputFile ...",
223 fProofFile->GetFileName(), fProofFile->GetOptionsAnchor());
225 fOutput->Add(fProofFile);
232void ProofSimpleFile::Terminate()
242 TString outputFile(fProofFile->GetOutputFileName());
243 TString outputName(fProofFile->GetName());
244 outputName +=
".root";
245 Printf(
"outputFile: %s", outputFile.Data());
249 Error(
"Terminate",
"could not open file: %s", outputFile.Data());
254 Error(
"Terminate",
"TProofOutputFile not found");
259 if (CreateHistoArrays() != 0) {
260 Error(
"Terminate",
"could not create histograms");
271void ProofSimpleFile::PlotHistos(
Int_t opt)
277 TCanvas *
c1 =
new TCanvas(
"c1",
"ProofSimpleFile top dir canvas",200,10,700,700);
279 nside = (nside*nside < fNhist) ? nside+1 : nside;
280 c1->Divide(nside,nside,0,0);
292 }
else if (opt == 1) {
293 TCanvas *
c2 =
new TCanvas(
"c2",
"ProofSimpleFile 'blue' sub-dir canvas",400,60,700,700);
295 nside = (nside*nside < fNhist) ? nside+1 : nside;
296 c2->Divide(nside,nside,0,0);
298 if ((fFileDir = (
TDirectory *) fFile->Get(
"blue"))) {
306 Error(
"PlotHistos",
"directory 'blue' not found in output file");
313 Error(
"PlotHistos",
"unknown option: %d", opt);
Selector to fill a set of histograms and merging via file.
void Info(const char *location, const char *msgfmt,...)
Use this function for informational messages.
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
void Printf(const char *fmt,...)
Formats a string in a circular formatting buffer and prints the string.
R__EXTERN TSystem * gSystem
Describe directory structure in memory.
virtual void Close(Option_t *option="")
virtual Bool_t cd()
Change current directory to "this" directory.
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Create / open a file.
1-D histogram with a float per channel (see TH1 documentation)
The TNamed class is the base class for all named ROOT classes.
Named parameter, streamable and storable.
const AParamType & GetVal() const
Class to steer the merging of files produced on the workers.
Random number generator class based on M.
Int_t Atoi() const
Return integer value of string.
Bool_t IsDigit() const
Returns true if all characters in string are digits (0-9) or white spaces, i.e.
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
A TTree represents a columnar dataset.
This class represents a WWW compatible URL.
Double_t Sqrt(Double_t x)
Returns the square root of x.