2 * @defgroup pwglf_forward_trains_util Utilities for Train setups
4 * @ingroup pwglf_forward_trains
7 * @file OutputUtilities.C
8 * @author Christian Holm Christensen <cholm@master.hehi.nbi.dk>
9 * @date Tue Oct 16 17:55:32 2012
11 * @brief Special output handling
13 * @ingroup pwglf_forward_trains_util
15 #ifndef TREEOUTPUTHELPER_C
16 #define TREEOUTPUTHELPER_C
20 # include <AliAnalysisManager.h>
21 # include <AliAnalysisDataContainer.h>
22 # include <AliVEventHandler.h>
27 // ===================================================================
29 * Special output handling - data sets and remote storage
31 * @ingroup pwglf_forward_trains_util
33 struct OutputUtilities
36 * Register output data set
38 * @param dsname Data set name
40 * @return true on success
42 static Bool_t RegisterDataset(const TString& dsname)
45 AliAnalysisManager* mgr = AliAnalysisManager::GetAnalysisManager();
47 // If we are asked to make a data-set, get the output handler and
48 // common output container.
49 AliVEventHandler* handler = mgr->GetOutputEventHandler();
50 if (!handler) return true;
53 AliAnalysisDataContainer* cont = mgr->GetCommonOutputContainer();
55 Warning("OutputUtilities::RegisterDataset",
56 "No common output container defined");
62 if (nme.IsNull()) nme = mgr->GetName();
64 Error("OutputUtilities::RegisterDataset", "No data set name specified");
68 // Flag for data-set creation
69 cont->SetRegisterDataset(true);
71 handler->SetOutputFileName(nme);
72 // cont->SetFileName(nme);
74 TString base(handler->GetOutputFileName());
75 base.ReplaceAll(".root","");
76 Info("OutputUtilities::RegisterDataset",
77 "Will register tree output AODs (%s%s) as dataset",
78 base.Data(), cont->GetTitle());
83 * Get the name of the registered data set
86 * @return Name of the registered data set
88 static TString RegisteredDataset()
92 AliAnalysisManager* mgr = AliAnalysisManager::GetAnalysisManager();
93 AliVEventHandler* oh = mgr->GetOutputEventHandler();
95 Warning("OutputUtilities::GetOutputDataSet",
96 "No outout event handler defined");
99 AliAnalysisDataContainer* co = mgr->GetCommonOutputContainer();
101 Warning("OutputUtilities::GetOutputDataSet",
102 "No common output container defined");
105 if (!co->IsRegisterDataset()) {
106 Info("OutputUtilities::GetOutputDataSet",
107 "Common output is not registered as dataset");
110 ret = oh->GetOutputFileName();
111 // ret.ReplaceAll("TTree", "");
112 ret.ReplaceAll(".root", "");
113 // ret.Append(co->GetTitle());
118 * Register special putput storage
120 * @param url Url (root://host/full_path)
122 * @return true on success
124 static Bool_t RegisterStorage(const TString& url)
127 Error("OutputUtilities::RegisterStorage", "No storage URI specified");
132 AliAnalysisManager* mgr = AliAnalysisManager::GetAnalysisManager();
135 AliAnalysisDataContainer* cont = mgr->GetCommonOutputContainer();
137 Warning("OutputUtilities::RegisterStorage",
138 "No common output container defined");
142 cont->SetSpecialOutput();
143 mgr->SetSpecialOutputLocation(url);