4 #include "KVSimDirAnalyser.h"
5 #include "KVDataAnalysisTask.h"
8 #include <KVClassFactory.h>
19 :
KVDataAnalyser(), fAnalysisChain(
nullptr), fSimDir(
nullptr), fCopyFilesToWorkDir(false)
37 Long64_t update_interval = (nevents > 10 ? nevents / 10 : 1);
42 options.
Form(
"SimFileName=%s,SimTitle=%s,OutputDir=%s,EventsReadInterval=%lld,BranchName=%s,CombinedOutputFile=%s,SimulationInfos=%s",
50 options +=
Form(
",Run=%d", first_file->
GetRun());
54 if (!fListOfAuxFiles.
IsEmpty()) {
57 TIter ifi(&fListOfAuxFiles);
60 if (auxfiles !=
"") auxfiles +=
"|";
63 options +=
",AuxFiles=";
65 options +=
",AuxDir=";
68 options +=
",AuxTreeName=";
70 options +=
",AuxBranchName=";
80 if (CheckIfUserClassIsValid()) {
81 Info(
"SubmitTask",
"Beginning TChain::Process...");
89 analysis_class.
Form(
"%s%s",
GetUserClass().full_path_imp().Data(), GetACliCMode());
91 if (read_all_events) {
92 fAnalysisChain->
Process(analysis_class, options.
Data());
98 delete fAnalysisChain;
99 fAnalysisChain =
nullptr;
110 if (!NeedToChooseWhatToAnalyse()) {
135 GetBatchInfoFile()->SetValue(
"SimDir", simD->
GetDirectory());
138 if (simF->
IsFiltered()) GetBatchInfoFile()->SetValue(
"SimFile.Type",
"filtered");
139 else GetBatchInfoFile()->SetValue(
"SimFile.Type",
"simulated");
140 GetBatchInfoFile()->SetValue(
"SimFiles", simF->
GetName());
142 TIter next(&fListOfSimFiles);
144 while ((simF = (
KVSimFile*)next())) GetBatchInfoFile()->SetValue(
"+SimFiles", simF->
GetName());
146 if (!fListOfAuxFiles.
IsEmpty()) {
148 GetBatchInfoFile()->SetValue(
"AuxFiles", fListOfAuxFiles.
First()->
GetName());
150 TIter next(&fListOfAuxFiles);
152 while ((simF = (
KVSimFile*)next())) GetBatchInfoFile()->SetValue(
"+AuxFiles", simF->
GetName());
155 if (is_filter_job) GetBatchInfoFile()->SetValue(
"FilterJob", 1);
156 if (sav) GetBatchInfoFile()->SaveLevel(
kEnvUser);
176 KVString simdir = GetBatchInfoFile()->GetValue(
"SimDir",
"");
177 if (simdir ==
"")
return ok;
179 KVString auxdir = GetBatchInfoFile()->GetValue(
"AuxDir",
"");
181 is_filter_job = (
Bool_t)GetBatchInfoFile()->GetValue(
"FilterJob", 0);
183 fSimDir =
new KVSimDir(
"SIMDIR", simdir);
187 KVString filetype = GetBatchInfoFile()->GetValue(
"SimFile.Type",
"");
188 if (filetype ==
"")
return ok;
190 KVString simfiles = GetBatchInfoFile()->GetValue(
"SimFiles",
"");
191 if (simfiles ==
"")
return ok;
193 fListOfSimFiles.
Clear();
196 while (!simfiles.
End()) {
201 KVString auxfiles = GetBatchInfoFile()->GetValue(
"AuxFiles",
"");
202 if (auxfiles ==
"")
return (ok =
kTRUE);
204 fListOfAuxFiles.
Clear();
207 while (!auxfiles.
End()) {
223 void KVSimDirAnalyser::BuildChain()
229 TIter next(&fListOfSimFiles);
232 if (!fAnalysisChain) {
233 fAnalysisChain =
new TChain(
file->GetTreeName());
235 fAnalysisChain->
Add(
file->GetFullPathToFile());
246 void KVSimDirAnalyser::GetInfosForJobNameFromFiles()
255 if (fModel ==
"dit_events") fModel =
"DIT";
270 kTRUE,
"SimulatedEventAnalysisTemplate");
273 kTRUE,
"ROOT6SimulatedEventAnalysisTemplate");
292 Form(
"%s_%s_FILTER_%s", fModel.
Data(), fFilterSystem.
Data(), fFilterDataSet.
Data()));
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char filename
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t format
char * Form(const char *fmt,...)
Factory class for generating skeleton files for new classes.
void GenerateCode()
Generate header and implementation file for currently-defined class.
void AddImplIncludeFile(const Char_t *filename)
Manager class which sets up and runs data analysis tasks.
const UserClass & GetUserClass() const
virtual TString ExpandAutoBatchName(const Char_t *format) const
virtual void WriteBatchEnvFile(const TString &, Bool_t sav=kTRUE)
KVString GetUserClassName()
const KVString & GetUserClassOptions() const
EProofMode GetProofMode() const
Long64_t GetNbEventToRead(void) const
virtual Bool_t ReadBatchEnvFile(const TString &)
KVDataAnalysisTask * GetAnalysisTask() const
TObject * First() const override
void Add(TObject *obj) override
TObject * FindObject(const char *name) const override
void Clear(Option_t *option="") override
Class piloting analyses of simulated data.
TString ExpandAutoBatchName(const Char_t *format) const override
Replace any special symbols in auto-format jobname with current values.
Bool_t ReadBatchEnvFile(const TString &) override
KVString GetRootDirectoryOfDataToAnalyse() const override
Returns path to data to be analysed.
void SubmitTask() override
Set up and run the analysis.
static void Make(const Char_t *kvsname="MySimulatedAnalysis")
Generate a new simulated analysis selector class.
void WriteBatchEnvFile(const TString &, Bool_t sav=kTRUE) override
Handle directory containing simulated and/or filtered simulated data ,.
const KVList * GetFiltDataList() const
void SetAuxDirectory(const TString &)
Bool_t HasAuxDirectory() const
const Char_t * GetDirectory() const
const KVList * GetSimDataList() const
TString GetAuxDirectory() const
Handle file containing simulated and/or filtered simulated data ,.
const Char_t * GetSystem() const
const Char_t * GetBranchName() const
const Char_t * GetDataSet() const
KVSimDir * GetSimDir() const
Bool_t IsFiltered() const
const Char_t * GetTreeName() const
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
void Begin(TString delim) const
KVString Next(Bool_t strip_whitespace=kFALSE) const
virtual Int_t Add(const char *name, Long64_t nentries=TTree::kMaxEntries)
Long64_t Process(const char *filename, Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0) override
virtual void SetProof(Bool_t on=kTRUE, Bool_t refresh=kFALSE, Bool_t gettreeheader=kFALSE)
Long64_t GetEntries() const override
virtual Int_t GetEntries() const
virtual Bool_t IsEmpty() const
const char * GetName() const override
const char * GetTitle() const override
virtual const char * GetName() const
virtual void Info(const char *method, const char *msgfmt,...) const
const char * Data() const
void Form(const char *fmt,...)
TString & ReplaceAll(const char *s1, const char *s2)