34 #include "EmulatorControl.h"
43 TString EntryPointInSetupWatchers =
"TRACKING";
44 TString PathToOut =
"./Out";
45 TString PatternOfROOTFiles =
"";
46 TString TTreeName =
"TreeMaster";
47 TString TTeeTilte =
"GANIL Tree" ;
55 TString ProducerType =
"RootAFP";
63 void OfflineWatchers(Int_t which_run,
const char *which_experiment,
const char *which_adf_data,
const char *run_patt, Option_t *opt_adf_pattern, Int_t start = -1);
83 TDirectory *MainDir = gROOT;
89 if ( ! emulator->
Init() ) {
90 std::cout <<
"Cannot Init emulator" <<
std::endl;
return;
96 if ( MainDir != gROOT )
102 gROOT->GetListOfTasks()->Add( control );
103 gROOT->GetListOfTasks()->Add( FDispatcher );
108 if ( !gROOT->IsBatch() ) {
109 TBrowser *
b = (TBrowser*)gROOT->GetListOfBrowsers()->Last();
111 TFolder *GwWatchersFolder = (TFolder*)gROOT->GetRootFolder()->FindObject(
"GwWatchers");
112 if(GwWatchersFolder) b->Add(GwWatchersFolder);
114 TFolder *RootFilesFolder = (TFolder*)gROOT->GetRootFolder()->FindObject(
"ROOT Files");
115 if(RootFilesFolder) b->Add(RootFilesFolder);
119 if(start==-1)emulator->
Run();
120 else if(start>0)emulator->
Run(start);
124 if ( MainDir != gROOT && start>0 ) {
133 TDirectory *MainDir = gROOT;
135 if(EntryPoint!=
"") EntryPointInSetupWatchers =
EntryPoint;
136 if(ReadCDAT) ProducerType =
"ReadMezzAFP";
144 if ( ! emulator->
Init(rootafp) ) {
145 std::cout <<
"Cannot Init emulator" <<
std::endl;
return;
149 TFile *tmp_rfile = 0x0;
150 if ( PatternOfROOTFiles !=
"" ) {
151 tmp_rfile = TFile::Open( Form(
"%s/%s.root",PathToOut.Data(),PatternOfROOTFiles.Data()) ,
"UPDATE" );
156 if ( MainDir != gROOT )
162 gROOT->GetListOfTasks()->Add( control );
163 gROOT->GetListOfTasks()->Add( FDispatcher );
168 if ( !gROOT->IsBatch() ) {
169 TBrowser *
b = (TBrowser*)gROOT->GetListOfBrowsers()->Last();
171 TFolder *GwWatchersFolder = (TFolder*)gROOT->GetRootFolder()->FindObject(
"GwWatchers");
172 if(GwWatchersFolder) b->Add(GwWatchersFolder);
174 TFolder *RootFilesFolder = (TFolder*)gROOT->GetRootFolder()->FindObject(
"ROOT Files");
175 if(RootFilesFolder) b->Add(RootFilesFolder);
179 if(start==-1)emulator->
Run();
180 else if(start>0)emulator->
Run(start);
184 if ( MainDir != gROOT && start ) {
189 void OfflineWatchers(Int_t which_run,
const char *which_experiment,
const char *which_adf_data,
const char *run_patt, Option_t *opt_adf_pattern, Int_t start)
191 TDirectory *MainDir = gROOT;
197 if ( ! emulator->
Init(which_run,which_experiment,which_adf_data,run_patt,opt_adf_pattern) ) {
198 std::cout <<
"Cannot Init emulator" <<
std::endl;
203 TFile *tmp_rfile = 0x0;
204 if ( PatternOfROOTFiles !=
"" ) {
205 tmp_rfile = TFile::Open( Form(
"%s/%s.root",PathToOut.Data(),PatternOfROOTFiles.Data()) ,
"UPDATE" );
210 if ( MainDir != gROOT )
216 gROOT->GetListOfTasks()->Add( control );
217 gROOT->GetListOfTasks()->Add( FDispatcher );
222 if ( !gROOT->IsBatch() ) {
223 TBrowser *
b = (TBrowser*)gROOT->GetListOfBrowsers()->Last();
225 TFolder *GwWatchersFolder = (TFolder*)gROOT->GetRootFolder()->FindObject(
"GwWatchers");
226 if(GwWatchersFolder) b->Add(GwWatchersFolder);
228 TFolder *RootFilesFolder = (TFolder*)gROOT->GetRootFolder()->FindObject(
"ROOT Files");
229 if(RootFilesFolder) b->Add(RootFilesFolder);
233 if(start==-1)emulator->
Run();
234 else if(start>0)emulator->
Run(start);
238 if ( MainDir != gROOT && start ) {
247 if(ProducerType ==
"RootAFP")
249 else if(ProducerType ==
"ReadMezzAFP")
Process a buffer, trigg and dispachs the work to sub-watchers.
void Save(Option_t *opt="*")
Save the spectra.
Bool_t SetupWatchers(const char *df_type, FrameDispatcher *fd, const char *ext="")
It shows how to set up the watchers for different kind of data flow.
virtual Bool_t Run(UInt_t=kMaxUInt)
loop
header file for ReadMezzAFP.cpp
virtual ADF::NarvalConsumer * GetBaseConsumer()
virtual Bool_t Init()
It should be overwritten !
void OfflineWatchers(Int_t start=-1, TFile *file=0x0)
This function shows how to do offline analysis using the watchers. if a root file is given...
to have a common base class to be able to control the emulator through a TTask
header file for RootAFP.cpp
ADF::LogMessage & endl(ADF::LogMessage &log)
BaseEmulatorChain * DefineEmulatorType()
static void SetDefaultPathAndName(const char *new_path="./Out", const char *treename="TreeMaster")
to change the default value of path for output. It returns the old one
virtual void SetDirectory(TDirectory *mother_dir_of_watcher, TDirectory *mother_dir_for_tag, Bool_t load_objects=true)
change directories and Load objects if required