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")) {
 
   80      fNhist = (
p) ? (
Int_t) 
p->GetVal() : fNhist;
 
   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")) {
 
  102      fNhist = (
p) ? (
Int_t) 
p->GetVal() : fNhist;
 
  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!",
 
  140   for (
Int_t i=0; i < fNhist; i++) {
 
  141      fHistTop[i] = 
new TH1F(
Form(
"ht%d",i), 
Form(
"ht%d",i), 100, -3., 3.);
 
  142      fHistTop[i]->SetFillColor(
kRed);
 
  143      fHistTop[i]->SetDirectory(fFile);
 
  144      fHistDir[i] = 
new TH1F(
Form(
"hd%d",i), 
Form(
"hd%d",i), 100, -3., 3.);
 
  145      fHistDir[i]->SetFillColor(
kBlue);
 
  146      fHistDir[i]->SetDirectory(fFileDir);
 
  174   for (
Int_t i=0; i < fNhist; i++) {
 
  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()
 
  196      for (
Int_t i=0; i < fNhist; i++) {
 
  197         if (fHistTop[i] && fHistTop[i]->GetEntries() > 0) {
 
  198            fHistTop[i]->Write();
 
  199            fHistTop[i]->SetDirectory(0);
 
  205      for (
Int_t i=0; i < fNhist; i++) {
 
  206         if (fHistDir[i] && fHistDir[i]->GetEntries() > 0) {
 
  207            fHistDir[i]->Write();
 
  208            fHistDir[i]->SetDirectory(0);
 
  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);
 
  282      for (
Int_t i=0; i < fNhist; i++) {
 
  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"))) {
 
  299         for (
Int_t i=0; i < fNhist; i++) {
 
  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.
 
winID h TVirtualViewer3D TVirtualGLPainter p
 
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="")
Delete all objects from memory and directory structure itself.
 
virtual TFile * OpenFile(const char *, Option_t *="", const char *="", Int_t=1, Int_t=0)
 
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.
 
const char * GetTitle() const override
Returns title of object.
 
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
 
Named parameter, streamable and storable.
 
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.
 
virtual int Unlink(const char *name)
Unlink, i.e.
 
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.