#define RooProofDriverSelector_cxx
// The class definition in RooProofDriverSelector.h has been generated automatically
// by the ROOT utility TTree::MakeSelector(). This class is derived
// from the ROOT class TSelector. For more information on the TSelector
// framework see $ROOTSYS/README/README.SELECTOR or the ROOT User Manual.

// The following methods are defined in this file:
//    Begin():        called every time a loop on the tree starts,
//                    a convenient place to create your histograms.
//    SlaveBegin():   called after Begin(), when on PROOF called only on the
//                    slave servers.
//    Process():      called for each event, in this function you decide what
//                    to read and fill your histograms.
//    SlaveTerminate: called at the end of the loop on the tree, when on PROOF
//                    called only on the slave servers.
//    Terminate():    called at the end of the loop on the tree,
//                    a convenient place to draw/fit your histograms.
//
// To use this file, try the following session on your Tree T:
//
// Root > T->Process("RooProofDriverSelector.C")
// Root > T->Process("RooProofDriverSelector.C","some options")
// Root > T->Process("RooProofDriverSelector.C+")
//

// #include <unistd.h>
#include "RooProofDriverSelector.h"
#include <TH2.h>
#include <TStyle.h>
#include "RooDataSet.h"
#include "RooWorkspace.h"
#include "RooAbsPdf.h"
#include "RooRealVar.h"
#include "RooFitResult.h"
#include "TRandom.h"
#include "RooRandom.h"
#include "RooAbsStudy.h"
#include "TSystem.h"
#include "RooStudyPackage.h"
#ifndef __CINT__
#include "RooGlobalFunc.h"
#endif
 
using namespace RooFit ;
using namespace std ;

void RooProofDriverSelector::SlaveBegin(TTree * /*tree*/) 
{  
  // Retrieve study pack 
  _pkg=0 ;
  if (fInput) { 
    TIterator* iter = fInput->MakeIterator() ;
    TObject* obj ;
    while((obj=iter->Next())) {
      RooStudyPackage* tmp = dynamic_cast<RooStudyPackage*>(obj) ;
      if (tmp) {
	_pkg = tmp ;
      }
     }
  }
  if (_pkg==0) {
    cout << "RooProofDriverSelector::SlaveBegin() no RooStudyPackage found, aborting process" << endl ;
    fStatus = kAbortProcess ;
  } else {
    cout << "workspace contents = " << endl ;
    _pkg->wspace().Print() ;
    
    // Initialize study pack
    seed = _pkg->initRandom() ;
    _pkg->initialize() ;
  }
    
}

Bool_t RooProofDriverSelector::Process(Long64_t entry)
{
  cout << "RooProofDriverSelector::Process(" << entry << ")" << endl ;
  _pkg->runOne() ;
  return kTRUE;
}


void RooProofDriverSelector::SlaveTerminate() 
{
  _pkg->finalize() ;
  _pkg->exportData(fOutput,seed) ;
}



void RooProofDriverSelector::Init(TTree *tree)
{
   // Set branch addresses and branch pointers
   if (!tree) return;
   fChain = tree;
   fChain->SetMakeClass(1);
   fChain->SetBranchAddress("i", &i, &b_i);
}

Bool_t RooProofDriverSelector::Notify()
{
   return kTRUE;
}

 RooProofDriverSelector.cxx:1
 RooProofDriverSelector.cxx:2
 RooProofDriverSelector.cxx:3
 RooProofDriverSelector.cxx:4
 RooProofDriverSelector.cxx:5
 RooProofDriverSelector.cxx:6
 RooProofDriverSelector.cxx:7
 RooProofDriverSelector.cxx:8
 RooProofDriverSelector.cxx:9
 RooProofDriverSelector.cxx:10
 RooProofDriverSelector.cxx:11
 RooProofDriverSelector.cxx:12
 RooProofDriverSelector.cxx:13
 RooProofDriverSelector.cxx:14
 RooProofDriverSelector.cxx:15
 RooProofDriverSelector.cxx:16
 RooProofDriverSelector.cxx:17
 RooProofDriverSelector.cxx:18
 RooProofDriverSelector.cxx:19
 RooProofDriverSelector.cxx:20
 RooProofDriverSelector.cxx:21
 RooProofDriverSelector.cxx:22
 RooProofDriverSelector.cxx:23
 RooProofDriverSelector.cxx:24
 RooProofDriverSelector.cxx:25
 RooProofDriverSelector.cxx:26
 RooProofDriverSelector.cxx:27
 RooProofDriverSelector.cxx:28
 RooProofDriverSelector.cxx:29
 RooProofDriverSelector.cxx:30
 RooProofDriverSelector.cxx:31
 RooProofDriverSelector.cxx:32
 RooProofDriverSelector.cxx:33
 RooProofDriverSelector.cxx:34
 RooProofDriverSelector.cxx:35
 RooProofDriverSelector.cxx:36
 RooProofDriverSelector.cxx:37
 RooProofDriverSelector.cxx:38
 RooProofDriverSelector.cxx:39
 RooProofDriverSelector.cxx:40
 RooProofDriverSelector.cxx:41
 RooProofDriverSelector.cxx:42
 RooProofDriverSelector.cxx:43
 RooProofDriverSelector.cxx:44
 RooProofDriverSelector.cxx:45
 RooProofDriverSelector.cxx:46
 RooProofDriverSelector.cxx:47
 RooProofDriverSelector.cxx:48
 RooProofDriverSelector.cxx:49
 RooProofDriverSelector.cxx:50
 RooProofDriverSelector.cxx:51
 RooProofDriverSelector.cxx:52
 RooProofDriverSelector.cxx:53
 RooProofDriverSelector.cxx:54
 RooProofDriverSelector.cxx:55
 RooProofDriverSelector.cxx:56
 RooProofDriverSelector.cxx:57
 RooProofDriverSelector.cxx:58
 RooProofDriverSelector.cxx:59
 RooProofDriverSelector.cxx:60
 RooProofDriverSelector.cxx:61
 RooProofDriverSelector.cxx:62
 RooProofDriverSelector.cxx:63
 RooProofDriverSelector.cxx:64
 RooProofDriverSelector.cxx:65
 RooProofDriverSelector.cxx:66
 RooProofDriverSelector.cxx:67
 RooProofDriverSelector.cxx:68
 RooProofDriverSelector.cxx:69
 RooProofDriverSelector.cxx:70
 RooProofDriverSelector.cxx:71
 RooProofDriverSelector.cxx:72
 RooProofDriverSelector.cxx:73
 RooProofDriverSelector.cxx:74
 RooProofDriverSelector.cxx:75
 RooProofDriverSelector.cxx:76
 RooProofDriverSelector.cxx:77
 RooProofDriverSelector.cxx:78
 RooProofDriverSelector.cxx:79
 RooProofDriverSelector.cxx:80
 RooProofDriverSelector.cxx:81
 RooProofDriverSelector.cxx:82
 RooProofDriverSelector.cxx:83
 RooProofDriverSelector.cxx:84
 RooProofDriverSelector.cxx:85
 RooProofDriverSelector.cxx:86
 RooProofDriverSelector.cxx:87
 RooProofDriverSelector.cxx:88
 RooProofDriverSelector.cxx:89
 RooProofDriverSelector.cxx:90
 RooProofDriverSelector.cxx:91
 RooProofDriverSelector.cxx:92
 RooProofDriverSelector.cxx:93
 RooProofDriverSelector.cxx:94
 RooProofDriverSelector.cxx:95
 RooProofDriverSelector.cxx:96
 RooProofDriverSelector.cxx:97
 RooProofDriverSelector.cxx:98
 RooProofDriverSelector.cxx:99
 RooProofDriverSelector.cxx:100
 RooProofDriverSelector.cxx:101
 RooProofDriverSelector.cxx:102
 RooProofDriverSelector.cxx:103
 RooProofDriverSelector.cxx:104